@sb1/ffe-collapse-react 3.0.7 → 4.0.1
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/es/Collapse.js +66 -77
- package/es/index.js +1 -1
- package/es/mergeRefs.js +13 -0
- package/lib/Collapse.js +93 -85
- package/lib/index.js +4 -11
- package/lib/mergeRefs.js +17 -0
- package/package.json +7 -8
- package/types/Collapse.d.ts +6 -0
- package/types/index.d.ts +1 -10
- package/types/mergeRefs.d.ts +2 -0
package/es/Collapse.js
CHANGED
|
@@ -1,81 +1,70 @@
|
|
|
1
|
-
var
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
+
import React, { useRef, useEffect, useState, } from 'react';
|
|
13
24
|
import classNames from 'classnames';
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
isOpen =
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (startOrEnd === 'start') {
|
|
37
|
-
setOverflowVisible(false);
|
|
38
|
-
} else {
|
|
39
|
-
if (isOpen) {
|
|
40
|
-
setOverflowVisible(true);
|
|
41
|
-
}
|
|
42
|
-
if (onRest) {
|
|
43
|
-
onRest();
|
|
25
|
+
import { mergeRefs } from './mergeRefs';
|
|
26
|
+
export var Collapse = React.forwardRef(function (_a, ref) {
|
|
27
|
+
var className = _a.className, isOpen = _a.isOpen, onRest = _a.onRest, children = _a.children, rest = __rest(_a, ["className", "isOpen", "onRest", "children"]);
|
|
28
|
+
var internalRef = useRef(null);
|
|
29
|
+
var _b = useState(!isOpen), isHidden = _b[0], setIsHidden = _b[1];
|
|
30
|
+
var _c = useState(isOpen), overflowVisible = _c[0], setOverflowVisible = _c[1];
|
|
31
|
+
useEffect(function () {
|
|
32
|
+
var handleTransition = function (startOrEnd) { return function (e) {
|
|
33
|
+
if (e.target === internalRef.current &&
|
|
34
|
+
e.propertyName === 'grid-template-rows') {
|
|
35
|
+
setIsHidden(!isOpen);
|
|
36
|
+
if (startOrEnd === 'start') {
|
|
37
|
+
setOverflowVisible(false);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
if (isOpen) {
|
|
41
|
+
setOverflowVisible(true);
|
|
42
|
+
}
|
|
43
|
+
if (onRest) {
|
|
44
|
+
onRest();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
44
47
|
}
|
|
45
|
-
|
|
48
|
+
}; };
|
|
49
|
+
var handleTransitionStart = handleTransition('start');
|
|
50
|
+
var handleTransitionEnd = handleTransition('end');
|
|
51
|
+
var collapse = internalRef.current;
|
|
52
|
+
if (collapse) {
|
|
53
|
+
collapse.addEventListener('transitionstart', handleTransitionStart);
|
|
54
|
+
collapse.addEventListener('transitionend', handleTransitionEnd);
|
|
46
55
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}, [collapse, isOpen, onRest]);
|
|
62
|
-
return /*#__PURE__*/React.createElement("div", _extends({}, rest, {
|
|
63
|
-
ref: collapse,
|
|
64
|
-
className: classNames('ffe-collapse', className, {
|
|
65
|
-
'ffe-collapse--open': isOpen,
|
|
66
|
-
'ffe-collapse--hidden': isHidden
|
|
67
|
-
})
|
|
68
|
-
}), /*#__PURE__*/React.createElement("div", {
|
|
69
|
-
className: classNames('ffe-collapse__inner', {
|
|
70
|
-
'ffe-collapse__inner--visible': overflowVisible
|
|
71
|
-
})
|
|
72
|
-
}, children));
|
|
56
|
+
return function () {
|
|
57
|
+
if (collapse) {
|
|
58
|
+
collapse.removeEventListener('transitionstart', handleTransitionStart);
|
|
59
|
+
collapse.removeEventListener('transitionend', handleTransitionEnd);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
}, [isOpen, onRest]);
|
|
63
|
+
return (React.createElement("div", __assign({}, rest, { ref: mergeRefs([internalRef, ref]), className: classNames('ffe-collapse', className, {
|
|
64
|
+
'ffe-collapse--open': isOpen,
|
|
65
|
+
'ffe-collapse--hidden': isHidden,
|
|
66
|
+
}) }),
|
|
67
|
+
React.createElement("div", { className: classNames('ffe-collapse__inner', {
|
|
68
|
+
'ffe-collapse__inner--visible': overflowVisible,
|
|
69
|
+
}) }, children)));
|
|
73
70
|
});
|
|
74
|
-
Collapse.displayName = 'Collapse';
|
|
75
|
-
Collapse.propTypes = {
|
|
76
|
-
className: string,
|
|
77
|
-
isOpen: bool,
|
|
78
|
-
onRest: func,
|
|
79
|
-
/** The content to appear when expanded */
|
|
80
|
-
children: node.isRequired
|
|
81
|
-
};
|
package/es/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { Collapse } from './Collapse';
|
|
1
|
+
export { Collapse } from './Collapse';
|
package/es/mergeRefs.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function mergeRefs(refs) {
|
|
2
|
+
return function (value) {
|
|
3
|
+
refs.forEach(function (ref) {
|
|
4
|
+
if (typeof ref === 'function') {
|
|
5
|
+
ref(value);
|
|
6
|
+
}
|
|
7
|
+
else if (ref != null) {
|
|
8
|
+
// eslint-disable-next-line no-param-reassign
|
|
9
|
+
ref.current = value;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
}
|
package/lib/Collapse.js
CHANGED
|
@@ -1,91 +1,99 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
6
28
|
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
37
|
+
var t = {};
|
|
38
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
39
|
+
t[p] = s[p];
|
|
40
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
41
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
42
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
43
|
+
t[p[i]] = s[p[i]];
|
|
44
|
+
}
|
|
45
|
+
return t;
|
|
46
|
+
};
|
|
47
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
48
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
49
|
+
};
|
|
50
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
51
|
exports.Collapse = void 0;
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
function
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
var _useState = (0, _react.useState)(!isOpen),
|
|
33
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
34
|
-
isHidden = _useState2[0],
|
|
35
|
-
setIsHidden = _useState2[1];
|
|
36
|
-
var _useState3 = (0, _react.useState)(!!isOpen),
|
|
37
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
38
|
-
overflowVisible = _useState4[0],
|
|
39
|
-
setOverflowVisible = _useState4[1];
|
|
40
|
-
(0, _react.useEffect)(function () {
|
|
41
|
-
var _collapse = collapse;
|
|
42
|
-
var handleTransition = function handleTransition(startOrEnd) {
|
|
43
|
-
return function (e) {
|
|
44
|
-
if (e.target === collapse.current && e.propertyName === 'grid-template-rows') {
|
|
45
|
-
setIsHidden(!isOpen);
|
|
46
|
-
if (startOrEnd === 'start') {
|
|
47
|
-
setOverflowVisible(false);
|
|
48
|
-
} else {
|
|
49
|
-
if (isOpen) {
|
|
50
|
-
setOverflowVisible(true);
|
|
51
|
-
}
|
|
52
|
-
if (onRest) {
|
|
53
|
-
onRest();
|
|
52
|
+
var react_1 = __importStar(require("react"));
|
|
53
|
+
var classnames_1 = __importDefault(require("classnames"));
|
|
54
|
+
var mergeRefs_1 = require("./mergeRefs");
|
|
55
|
+
exports.Collapse = react_1.default.forwardRef(function (_a, ref) {
|
|
56
|
+
var className = _a.className, isOpen = _a.isOpen, onRest = _a.onRest, children = _a.children, rest = __rest(_a, ["className", "isOpen", "onRest", "children"]);
|
|
57
|
+
var internalRef = (0, react_1.useRef)(null);
|
|
58
|
+
var _b = (0, react_1.useState)(!isOpen), isHidden = _b[0], setIsHidden = _b[1];
|
|
59
|
+
var _c = (0, react_1.useState)(isOpen), overflowVisible = _c[0], setOverflowVisible = _c[1];
|
|
60
|
+
(0, react_1.useEffect)(function () {
|
|
61
|
+
var handleTransition = function (startOrEnd) { return function (e) {
|
|
62
|
+
if (e.target === internalRef.current &&
|
|
63
|
+
e.propertyName === 'grid-template-rows') {
|
|
64
|
+
setIsHidden(!isOpen);
|
|
65
|
+
if (startOrEnd === 'start') {
|
|
66
|
+
setOverflowVisible(false);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
if (isOpen) {
|
|
70
|
+
setOverflowVisible(true);
|
|
71
|
+
}
|
|
72
|
+
if (onRest) {
|
|
73
|
+
onRest();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
54
76
|
}
|
|
55
|
-
|
|
77
|
+
}; };
|
|
78
|
+
var handleTransitionStart = handleTransition('start');
|
|
79
|
+
var handleTransitionEnd = handleTransition('end');
|
|
80
|
+
var collapse = internalRef.current;
|
|
81
|
+
if (collapse) {
|
|
82
|
+
collapse.addEventListener('transitionstart', handleTransitionStart);
|
|
83
|
+
collapse.addEventListener('transitionend', handleTransitionEnd);
|
|
56
84
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}, [collapse, isOpen, onRest]);
|
|
72
|
-
return /*#__PURE__*/_react.default.createElement("div", _extends({}, rest, {
|
|
73
|
-
ref: collapse,
|
|
74
|
-
className: (0, _classnames.default)('ffe-collapse', className, {
|
|
75
|
-
'ffe-collapse--open': isOpen,
|
|
76
|
-
'ffe-collapse--hidden': isHidden
|
|
77
|
-
})
|
|
78
|
-
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
79
|
-
className: (0, _classnames.default)('ffe-collapse__inner', {
|
|
80
|
-
'ffe-collapse__inner--visible': overflowVisible
|
|
81
|
-
})
|
|
82
|
-
}, children));
|
|
85
|
+
return function () {
|
|
86
|
+
if (collapse) {
|
|
87
|
+
collapse.removeEventListener('transitionstart', handleTransitionStart);
|
|
88
|
+
collapse.removeEventListener('transitionend', handleTransitionEnd);
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
}, [isOpen, onRest]);
|
|
92
|
+
return (react_1.default.createElement("div", __assign({}, rest, { ref: (0, mergeRefs_1.mergeRefs)([internalRef, ref]), className: (0, classnames_1.default)('ffe-collapse', className, {
|
|
93
|
+
'ffe-collapse--open': isOpen,
|
|
94
|
+
'ffe-collapse--hidden': isHidden,
|
|
95
|
+
}) }),
|
|
96
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)('ffe-collapse__inner', {
|
|
97
|
+
'ffe-collapse__inner--visible': overflowVisible,
|
|
98
|
+
}) }, children)));
|
|
83
99
|
});
|
|
84
|
-
Collapse.displayName = 'Collapse';
|
|
85
|
-
Collapse.propTypes = {
|
|
86
|
-
className: _propTypes.string,
|
|
87
|
-
isOpen: _propTypes.bool,
|
|
88
|
-
onRest: _propTypes.func,
|
|
89
|
-
/** The content to appear when expanded */
|
|
90
|
-
children: _propTypes.node.isRequired
|
|
91
|
-
};
|
package/lib/index.js
CHANGED
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
});
|
|
6
|
-
Object.defineProperty(exports, "Collapse", {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: function get() {
|
|
9
|
-
return _Collapse.Collapse;
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
var _Collapse = require("./Collapse");
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Collapse = void 0;
|
|
4
|
+
var Collapse_1 = require("./Collapse");
|
|
5
|
+
Object.defineProperty(exports, "Collapse", { enumerable: true, get: function () { return Collapse_1.Collapse; } });
|
package/lib/mergeRefs.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mergeRefs = void 0;
|
|
4
|
+
function mergeRefs(refs) {
|
|
5
|
+
return function (value) {
|
|
6
|
+
refs.forEach(function (ref) {
|
|
7
|
+
if (typeof ref === 'function') {
|
|
8
|
+
ref(value);
|
|
9
|
+
}
|
|
10
|
+
else if (ref != null) {
|
|
11
|
+
// eslint-disable-next-line no-param-reassign
|
|
12
|
+
ref.current = value;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
exports.mergeRefs = mergeRefs;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sb1/ffe-collapse-react",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.1",
|
|
4
4
|
"description": "React component for expand/collapse",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ffe"
|
|
@@ -22,21 +22,20 @@
|
|
|
22
22
|
"url": "ssh://git@github.com:SpareBank1/designsystem.git"
|
|
23
23
|
},
|
|
24
24
|
"scripts": {
|
|
25
|
-
"build": "ffe-buildtool
|
|
25
|
+
"build": "ffe-buildtool tsc",
|
|
26
26
|
"watch": "ffe-buildtool babel-watch",
|
|
27
|
-
"lint": "eslint src",
|
|
28
|
-
"lint:fix": "eslint src --fix",
|
|
27
|
+
"lint": "eslint src --ext ts,tsx",
|
|
28
|
+
"lint:fix": "eslint src --fix --ext ts,tsx",
|
|
29
29
|
"test": "ffe-buildtool jest",
|
|
30
30
|
"test:watch": "ffe-buildtool jest --watch"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@sb1/ffe-core": "^27.3.
|
|
33
|
+
"@sb1/ffe-core": "^27.3.11",
|
|
34
34
|
"classnames": "^2.3.1"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@sb1/ffe-buildtool": "^0.6.
|
|
37
|
+
"@sb1/ffe-buildtool": "^0.6.1",
|
|
38
38
|
"eslint": "^8.57.0",
|
|
39
|
-
"prop-types": "^15.7.2",
|
|
40
39
|
"react": "^16.9.0",
|
|
41
40
|
"react-dom": "^16.9.0"
|
|
42
41
|
},
|
|
@@ -46,5 +45,5 @@
|
|
|
46
45
|
"publishConfig": {
|
|
47
46
|
"access": "public"
|
|
48
47
|
},
|
|
49
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "12285ee4ecea525ee235bc88aee2ffe38c32f0d1"
|
|
50
49
|
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import React, { ComponentPropsWithRef } from 'react';
|
|
2
|
+
export interface CollapseProps extends ComponentPropsWithRef<'div'> {
|
|
3
|
+
isOpen: boolean;
|
|
4
|
+
onRest?: () => void;
|
|
5
|
+
}
|
|
6
|
+
export declare const Collapse: React.ForwardRefExoticComponent<Omit<CollapseProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
package/types/index.d.ts
CHANGED
|
@@ -1,10 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export interface CollapseProps extends React.ComponentProps<'div'> {
|
|
4
|
-
isOpen: boolean;
|
|
5
|
-
onRest?: () => void;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
declare class Collapse extends React.Component<CollapseProps, any> {}
|
|
9
|
-
|
|
10
|
-
export { Collapse };
|
|
1
|
+
export { Collapse, CollapseProps } from './Collapse';
|