Skip to content

Commit 788426d

Browse files
authored
Replace classnames with clsx (react-grid-layout#1543)
* Update react-draggable * Replace classnames with clsx Follow up after react-grid-layout/react-draggable#599 clsx is fully compatible with classnames API, is quickly gaining traction and is about 1/3rd smaller than classnames.
1 parent bea8c20 commit 788426d

File tree

7 files changed

+29
-42
lines changed

7 files changed

+29
-42
lines changed

flow-typed/npm/classnames_v2.x.x.js

Lines changed: 0 additions & 25 deletions
This file was deleted.

flow-typed/npm/clsx_v1.x.x.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
declare module 'clsx' {
2+
declare type Classes =
3+
| Array<Classes>
4+
| { [className: string]: *, ... }
5+
| string
6+
| number
7+
| boolean
8+
| void
9+
| null;
10+
11+
declare module.exports: (...classes: Array<Classes>) => string;
12+
}

lib/GridItem.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import {
1616
resizeHandleAxesType,
1717
resizeHandleType
1818
} from "./ReactGridLayoutPropTypes";
19-
import classNames from "classnames";
19+
import clsx from "clsx";
2020
import type { Element as ReactElement, Node as ReactNode } from "react";
2121

2222
import type {
@@ -634,7 +634,7 @@ export default class GridItem extends React.Component<Props, State> {
634634
// Create the child element. We clone the existing element but modify its className and style.
635635
let newChild = React.cloneElement(child, {
636636
ref: this.elementRef,
637-
className: classNames(
637+
className: clsx(
638638
"react-grid-item",
639639
child.props.className,
640640
this.props.className,

lib/ReactGridLayout.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import * as React from "react";
33

44
import isEqual from "lodash.isequal";
5-
import classNames from "classnames";
5+
import clsx from "clsx";
66
import {
77
bottom,
88
childrenEqual,
@@ -756,7 +756,7 @@ export default class ReactGridLayout extends React.Component<Props, State> {
756756
render(): React.Element<"div"> {
757757
const { className, style, isDroppable, innerRef } = this.props;
758758

759-
const mergedClassName = classNames(layoutClassName, className);
759+
const mergedClassName = clsx(layoutClassName, className);
760760
const mergedStyle = {
761761
height: this.containerHeight(),
762762
...style

lib/components/WidthProvider.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// @flow
22
import * as React from "react";
33
import PropTypes from "prop-types";
4-
import classNames from "classnames";
4+
import clsx from "clsx";
55
import type { ReactRef } from "../ReactGridLayoutPropTypes";
66

77
type WPDefaultProps = {|
@@ -88,7 +88,7 @@ export default function WidthProvideRGL<Config>(
8888
if (measureBeforeMount && !this.mounted) {
8989
return (
9090
<div
91-
className={classNames(this.props.className, layoutClassName)}
91+
className={clsx(this.props.className, layoutClassName)}
9292
style={this.props.style}
9393
// $FlowIgnore ref types
9494
ref={this.elementRef}

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
},
3636
"homepage": "https://github.com/STRML/react-grid-layout",
3737
"dependencies": {
38-
"classnames": "2.3.1",
38+
"clsx": "^1.1.1",
3939
"lodash.isequal": "^4.0.0",
4040
"prop-types": "^15.0.0",
4141
"react-draggable": "^4.0.0",
@@ -108,4 +108,4 @@
108108
"prettier --write"
109109
]
110110
}
111-
}
111+
}

yarn.lock

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2270,11 +2270,6 @@ class-utils@^0.3.5:
22702270
isobject "^3.0.0"
22712271
static-extend "^0.1.1"
22722272

2273-
classnames@2.3.1, classnames@^2.2.5:
2274-
version "2.3.1"
2275-
resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e"
2276-
integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==
2277-
22782273
clean-stack@^2.0.0:
22792274
version "2.2.0"
22802275
resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
@@ -2313,6 +2308,11 @@ clone-deep@^4.0.1:
23132308
kind-of "^6.0.2"
23142309
shallow-clone "^3.0.0"
23152310

2311+
clsx@^1.1.1:
2312+
version "1.1.1"
2313+
resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188"
2314+
integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==
2315+
23162316
co@^4.6.0:
23172317
version "4.6.0"
23182318
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
@@ -5899,11 +5899,11 @@ react-dom@^16.13.1:
58995899
scheduler "^0.19.1"
59005900

59015901
react-draggable@^4.0.0, react-draggable@^4.0.3:
5902-
version "4.4.3"
5903-
resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-4.4.3.tgz#0727f2cae5813e36b0e4962bf11b2f9ef2b406f3"
5904-
integrity sha512-jV4TE59MBuWm7gb6Ns3Q1mxX8Azffb7oTtDtBgFkxRvhDp38YAARmRplrj0+XGkhOJB5XziArX+4HUUABtyZ0w==
5902+
version "4.4.4"
5903+
resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-4.4.4.tgz#5b26d9996be63d32d285a426f41055de87e59b2f"
5904+
integrity sha512-6e0WdcNLwpBx/YIDpoyd2Xb04PB0elrDrulKUgdrIlwuYvxh5Ok9M+F8cljm8kPXXs43PmMzek9RrB1b7mLMqA==
59055905
dependencies:
5906-
classnames "^2.2.5"
5906+
clsx "^1.1.1"
59075907
prop-types "^15.6.0"
59085908

59095909
react-hot-loader@^4.13.0:

0 commit comments

Comments
 (0)