@sb1/ffe-collapse-react 100.12.3 → 101.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/css/collapse.css +2 -6
- package/es/Collapse.js +9 -32
- package/es/mergeRefs.js +2 -2
- package/es/usePreviousIsOpen.js +3 -3
- package/lib/Collapse.js +13 -36
- package/lib/mergeRefs.js +2 -2
- package/lib/usePreviousIsOpen.js +4 -4
- package/package.json +6 -6
package/css/collapse.css
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
.ffe-collapse {
|
|
2
|
-
display: -ms-grid;
|
|
3
2
|
display: grid;
|
|
4
|
-
-
|
|
5
|
-
grid-template-rows: 0fr;
|
|
3
|
+
grid-template-rows: 0fr;
|
|
6
4
|
transition: grid-template-rows var(--ffe-transition-duration) var(--ffe-ease);
|
|
7
|
-
transition: grid-template-rows var(--ffe-transition-duration) var(--ffe-ease), -ms-grid-rows var(--ffe-transition-duration) var(--ffe-ease);
|
|
8
5
|
}
|
|
9
6
|
.ffe-collapse--hidden {
|
|
10
7
|
visibility: hidden;
|
|
11
8
|
}
|
|
12
9
|
.ffe-collapse--open {
|
|
13
|
-
-
|
|
14
|
-
grid-template-rows: 1fr;
|
|
10
|
+
grid-template-rows: 1fr;
|
|
15
11
|
}
|
|
16
12
|
.ffe-collapse__inner {
|
|
17
13
|
overflow: hidden;
|
package/es/Collapse.js
CHANGED
|
@@ -1,46 +1,23 @@
|
|
|
1
|
-
var __assign = (this && this.__assign) || function () {
|
|
2
|
-
__assign = Object.assign || function(t) {
|
|
3
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
-
s = arguments[i];
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
13
|
-
var t = {};
|
|
14
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
15
|
-
t[p] = s[p];
|
|
16
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
17
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
18
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
19
|
-
t[p[i]] = s[p[i]];
|
|
20
|
-
}
|
|
21
|
-
return t;
|
|
22
|
-
};
|
|
23
1
|
import React, { useRef, useEffect, useState, } from 'react';
|
|
24
2
|
import classNames from 'classnames';
|
|
25
3
|
import { mergeRefs } from './mergeRefs';
|
|
26
4
|
import { usePreviousIsOpen } from './usePreviousIsOpen';
|
|
27
|
-
export
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
useEffect(function () {
|
|
5
|
+
export const Collapse = React.forwardRef(({ className, isOpen, onRest, children, ...rest }, ref) => {
|
|
6
|
+
const internalRef = useRef(null);
|
|
7
|
+
const [isHidden, setIsHidden] = useState(!isOpen);
|
|
8
|
+
const [overflowVisible, setOverflowVisible] = useState(isOpen);
|
|
9
|
+
const previousIsOpen = usePreviousIsOpen(isOpen);
|
|
10
|
+
useEffect(() => {
|
|
34
11
|
if (typeof previousIsOpen === 'boolean' &&
|
|
35
12
|
isOpen !== previousIsOpen) {
|
|
36
13
|
setIsHidden(!isOpen);
|
|
37
14
|
setOverflowVisible(false);
|
|
38
15
|
}
|
|
39
16
|
}, [previousIsOpen, isOpen]);
|
|
40
|
-
return (React.createElement("div",
|
|
17
|
+
return (React.createElement("div", { ...rest, ref: mergeRefs([internalRef, ref]), className: classNames('ffe-collapse', className, {
|
|
41
18
|
'ffe-collapse--open': isOpen,
|
|
42
19
|
'ffe-collapse--hidden': isHidden,
|
|
43
|
-
}), onTransitionEnd:
|
|
20
|
+
}), onTransitionEnd: e => {
|
|
44
21
|
if (e.target === internalRef.current &&
|
|
45
22
|
e.propertyName === 'grid-template-rows') {
|
|
46
23
|
setIsHidden(!isOpen);
|
|
@@ -49,7 +26,7 @@ export var Collapse = React.forwardRef(function (_a, ref) {
|
|
|
49
26
|
}
|
|
50
27
|
onRest === null || onRest === void 0 ? void 0 : onRest();
|
|
51
28
|
}
|
|
52
|
-
} }
|
|
29
|
+
} },
|
|
53
30
|
React.createElement("div", { className: classNames('ffe-collapse__inner', {
|
|
54
31
|
'ffe-collapse__inner--visible': overflowVisible,
|
|
55
32
|
}) }, children)));
|
package/es/mergeRefs.js
CHANGED
package/es/usePreviousIsOpen.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useEffect, useRef } from 'react';
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
useEffect(
|
|
2
|
+
export const usePreviousIsOpen = (isOpen) => {
|
|
3
|
+
const ref = useRef();
|
|
4
|
+
useEffect(() => {
|
|
5
5
|
ref.current = isOpen;
|
|
6
6
|
});
|
|
7
7
|
return ref.current;
|
package/lib/Collapse.js
CHANGED
|
@@ -1,15 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
3
|
if (k2 === undefined) k2 = k;
|
|
15
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -43,43 +32,31 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
43
32
|
return result;
|
|
44
33
|
};
|
|
45
34
|
})();
|
|
46
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
47
|
-
var t = {};
|
|
48
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
49
|
-
t[p] = s[p];
|
|
50
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
51
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
52
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
53
|
-
t[p[i]] = s[p[i]];
|
|
54
|
-
}
|
|
55
|
-
return t;
|
|
56
|
-
};
|
|
57
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
58
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
59
37
|
};
|
|
60
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
61
39
|
exports.Collapse = void 0;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
exports.Collapse = react_1.default.forwardRef(
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
(0, react_1.useEffect)(function () {
|
|
40
|
+
const react_1 = __importStar(require("react"));
|
|
41
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
42
|
+
const mergeRefs_1 = require("./mergeRefs");
|
|
43
|
+
const usePreviousIsOpen_1 = require("./usePreviousIsOpen");
|
|
44
|
+
exports.Collapse = react_1.default.forwardRef(({ className, isOpen, onRest, children, ...rest }, ref) => {
|
|
45
|
+
const internalRef = (0, react_1.useRef)(null);
|
|
46
|
+
const [isHidden, setIsHidden] = (0, react_1.useState)(!isOpen);
|
|
47
|
+
const [overflowVisible, setOverflowVisible] = (0, react_1.useState)(isOpen);
|
|
48
|
+
const previousIsOpen = (0, usePreviousIsOpen_1.usePreviousIsOpen)(isOpen);
|
|
49
|
+
(0, react_1.useEffect)(() => {
|
|
73
50
|
if (typeof previousIsOpen === 'boolean' &&
|
|
74
51
|
isOpen !== previousIsOpen) {
|
|
75
52
|
setIsHidden(!isOpen);
|
|
76
53
|
setOverflowVisible(false);
|
|
77
54
|
}
|
|
78
55
|
}, [previousIsOpen, isOpen]);
|
|
79
|
-
return (react_1.default.createElement("div",
|
|
56
|
+
return (react_1.default.createElement("div", { ...rest, ref: (0, mergeRefs_1.mergeRefs)([internalRef, ref]), className: (0, classnames_1.default)('ffe-collapse', className, {
|
|
80
57
|
'ffe-collapse--open': isOpen,
|
|
81
58
|
'ffe-collapse--hidden': isHidden,
|
|
82
|
-
}), onTransitionEnd:
|
|
59
|
+
}), onTransitionEnd: e => {
|
|
83
60
|
if (e.target === internalRef.current &&
|
|
84
61
|
e.propertyName === 'grid-template-rows') {
|
|
85
62
|
setIsHidden(!isOpen);
|
|
@@ -88,7 +65,7 @@ exports.Collapse = react_1.default.forwardRef(function (_a, ref) {
|
|
|
88
65
|
}
|
|
89
66
|
onRest === null || onRest === void 0 ? void 0 : onRest();
|
|
90
67
|
}
|
|
91
|
-
} }
|
|
68
|
+
} },
|
|
92
69
|
react_1.default.createElement("div", { className: (0, classnames_1.default)('ffe-collapse__inner', {
|
|
93
70
|
'ffe-collapse__inner--visible': overflowVisible,
|
|
94
71
|
}) }, children)));
|
package/lib/mergeRefs.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.mergeRefs = mergeRefs;
|
|
4
4
|
function mergeRefs(refs) {
|
|
5
|
-
return
|
|
6
|
-
refs.forEach(
|
|
5
|
+
return value => {
|
|
6
|
+
refs.forEach(ref => {
|
|
7
7
|
if (typeof ref === 'function') {
|
|
8
8
|
ref(value);
|
|
9
9
|
}
|
package/lib/usePreviousIsOpen.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.usePreviousIsOpen = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
(0, react_1.useEffect)(
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const usePreviousIsOpen = (isOpen) => {
|
|
6
|
+
const ref = (0, react_1.useRef)();
|
|
7
|
+
(0, react_1.useEffect)(() => {
|
|
8
8
|
ref.current = isOpen;
|
|
9
9
|
});
|
|
10
10
|
return ref.current;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sb1/ffe-collapse-react",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "101.0.0",
|
|
4
4
|
"description": "React component for expand/collapse",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ffe"
|
|
@@ -30,12 +30,12 @@
|
|
|
30
30
|
"test:watch": "ffe-buildtool jest --watch"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@sb1/ffe-core": "^
|
|
34
|
-
"classnames": "^2.
|
|
33
|
+
"@sb1/ffe-core": "^101.0.0",
|
|
34
|
+
"classnames": "^2.5.1"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@sb1/ffe-buildtool": "^
|
|
38
|
-
"eslint": "^
|
|
37
|
+
"@sb1/ffe-buildtool": "^101.0.0",
|
|
38
|
+
"eslint": "^10.2.0",
|
|
39
39
|
"react": "^18.2.0",
|
|
40
40
|
"react-dom": "^18.2.0"
|
|
41
41
|
},
|
|
@@ -45,5 +45,5 @@
|
|
|
45
45
|
"publishConfig": {
|
|
46
46
|
"access": "public"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "7714019dbb9001551cb5d1c262c58afd609d4fb0"
|
|
49
49
|
}
|