@sb1/ffe-collapse-react 2.0.14 → 3.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 CHANGED
@@ -1,11 +1,5 @@
1
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
- var _excluded = ["className", "style", "isOpen", "onRest"];
1
+ var _excluded = ["className", "isOpen", "onRest", "children"];
3
2
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
4
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
7
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
8
- function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
9
3
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
10
4
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
11
5
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
@@ -14,87 +8,51 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
14
8
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
15
9
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
16
10
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
17
- import React, { useRef, useState, useEffect } from 'react';
18
- import { string, bool, func, object } from 'prop-types';
11
+ import React, { useRef, useEffect, useState } from 'react';
12
+ import { string, bool, func, node } from 'prop-types';
19
13
  import classNames from 'classnames';
20
- var Collapse = function Collapse(_ref) {
14
+ export var Collapse = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
21
15
  var className = _ref.className,
22
- style = _ref.style,
23
16
  isOpen = _ref.isOpen,
24
17
  onRest = _ref.onRest,
18
+ children = _ref.children,
25
19
  rest = _objectWithoutProperties(_ref, _excluded);
26
- var content = useRef();
27
- var _useState = useState(function () {
28
- return isOpen ? 'auto' : '0';
29
- }),
20
+ var internalRef = useRef();
21
+ var collapse = ref !== null && ref !== void 0 ? ref : internalRef;
22
+ var _useState = useState(!isOpen),
30
23
  _useState2 = _slicedToArray(_useState, 2),
31
- height = _useState2[0],
32
- setHeight = _useState2[1];
33
- var _useState3 = useState(function () {
34
- return isOpen ? 'visible' : 'hidden';
35
- }),
36
- _useState4 = _slicedToArray(_useState3, 2),
37
- overflow = _useState4[0],
38
- setOverflow = _useState4[1];
39
- var _useState5 = useState(function () {
40
- return isOpen ? 'visible' : 'hidden';
41
- }),
42
- _useState6 = _slicedToArray(_useState5, 2),
43
- visibility = _useState6[0],
44
- setVisibility = _useState6[1];
45
- var setExpanded = function setExpanded() {
46
- setHeight('auto');
47
- setOverflow('visible');
48
- };
49
- var setCollapsed = function setCollapsed() {
50
- setVisibility('hidden');
51
- };
24
+ isHidden = _useState2[0],
25
+ setIsHidden = _useState2[1];
52
26
  useEffect(function () {
53
- if (content.current) {
54
- if (isOpen && height !== 'auto') {
55
- setHeight("".concat(content.current.scrollHeight, "px"));
56
- setVisibility('visible');
57
- } else if (!isOpen && height !== '0') {
58
- setHeight("".concat(content.current.scrollHeight, "px"));
59
- window.requestAnimationFrame(function () {
60
- return setTimeout(function () {
61
- setHeight('0');
62
- setOverflow('hidden');
63
- });
64
- });
65
- }
27
+ if (isOpen) {
28
+ setIsHidden(false);
66
29
  }
67
- }, [isOpen, height]);
68
- var onTransitionEnd = function onTransitionEnd(e) {
69
- if (e.target === content.current && e.propertyName === 'height') {
70
- if (isOpen) {
71
- setExpanded();
72
- } else {
73
- setCollapsed();
74
- }
75
- if (onRest) {
76
- onRest();
30
+ }, [isOpen]);
31
+ return /*#__PURE__*/React.createElement("div", _extends({}, rest, {
32
+ ref: collapse,
33
+ className: classNames('ffe-collapse', className, {
34
+ 'ffe-collapse--open': isOpen,
35
+ 'ffe-collapse--hidden': isHidden
36
+ }),
37
+ onTransitionEnd: function onTransitionEnd(e) {
38
+ if (e.target === collapse.current && e.propertyName === 'grid-template-rows') {
39
+ if (onRest) {
40
+ onRest();
41
+ }
42
+ if (!isOpen) {
43
+ setIsHidden(true);
44
+ }
77
45
  }
78
46
  }
79
- };
80
- var mergedStyles = _objectSpread(_objectSpread({}, style), {}, {
81
- willChange: 'height',
82
- height: height,
83
- overflow: overflow,
84
- visibility: visibility
85
- });
86
- return /*#__PURE__*/React.createElement("div", _extends({}, rest, {
87
- ref: content,
88
- style: mergedStyles,
89
- className: classNames('ffe-collapse-transition', className),
90
- onTransitionEnd: onTransitionEnd
91
- }));
92
- };
47
+ }), /*#__PURE__*/React.createElement("div", {
48
+ className: "ffe-collapse__inner"
49
+ }, children));
50
+ });
93
51
  Collapse.displayName = 'Collapse';
94
52
  Collapse.propTypes = {
95
53
  className: string,
96
- style: object,
97
54
  isOpen: bool,
98
- onRest: func
99
- };
100
- export default Collapse;
55
+ onRest: func,
56
+ /** The content to appear when expanded */
57
+ children: node.isRequired
58
+ };
package/es/index.js CHANGED
@@ -1 +1 @@
1
- export { default } from './Collapse';
1
+ export { Collapse } from './Collapse';
@@ -1,3 +1,18 @@
1
- .ffe-collapse-transition {
2
- transition: height @ffe-transition-duration @ffe-ease;
1
+ .ffe-collapse {
2
+ display: grid;
3
+ grid-template-rows: 0fr;
4
+ transition: grid-template-rows var(--ffe-transition-duration)
5
+ var(--ffe-ease);
6
+ }
7
+
8
+ .ffe-collapse--hidden {
9
+ visibility: hidden;
10
+ }
11
+
12
+ .ffe-collapse--open {
13
+ grid-template-rows: 1fr;
14
+ }
15
+
16
+ .ffe-collapse__inner {
17
+ overflow: hidden;
3
18
  }
package/lib/Collapse.js CHANGED
@@ -4,20 +4,15 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = void 0;
7
+ exports.Collapse = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _propTypes = require("prop-types");
10
10
  var _classnames = _interopRequireDefault(require("classnames"));
11
- var _excluded = ["className", "style", "isOpen", "onRest"];
11
+ var _excluded = ["className", "isOpen", "onRest", "children"];
12
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
13
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
14
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
15
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
16
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
17
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
18
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
19
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
20
- function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
21
16
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
22
17
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
23
18
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
@@ -26,84 +21,48 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
26
21
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
27
22
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
28
23
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
29
- var Collapse = function Collapse(_ref) {
24
+ var Collapse = exports.Collapse = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
30
25
  var className = _ref.className,
31
- style = _ref.style,
32
26
  isOpen = _ref.isOpen,
33
27
  onRest = _ref.onRest,
28
+ children = _ref.children,
34
29
  rest = _objectWithoutProperties(_ref, _excluded);
35
- var content = (0, _react.useRef)();
36
- var _useState = (0, _react.useState)(function () {
37
- return isOpen ? 'auto' : '0';
38
- }),
30
+ var internalRef = (0, _react.useRef)();
31
+ var collapse = ref !== null && ref !== void 0 ? ref : internalRef;
32
+ var _useState = (0, _react.useState)(!isOpen),
39
33
  _useState2 = _slicedToArray(_useState, 2),
40
- height = _useState2[0],
41
- setHeight = _useState2[1];
42
- var _useState3 = (0, _react.useState)(function () {
43
- return isOpen ? 'visible' : 'hidden';
44
- }),
45
- _useState4 = _slicedToArray(_useState3, 2),
46
- overflow = _useState4[0],
47
- setOverflow = _useState4[1];
48
- var _useState5 = (0, _react.useState)(function () {
49
- return isOpen ? 'visible' : 'hidden';
50
- }),
51
- _useState6 = _slicedToArray(_useState5, 2),
52
- visibility = _useState6[0],
53
- setVisibility = _useState6[1];
54
- var setExpanded = function setExpanded() {
55
- setHeight('auto');
56
- setOverflow('visible');
57
- };
58
- var setCollapsed = function setCollapsed() {
59
- setVisibility('hidden');
60
- };
34
+ isHidden = _useState2[0],
35
+ setIsHidden = _useState2[1];
61
36
  (0, _react.useEffect)(function () {
62
- if (content.current) {
63
- if (isOpen && height !== 'auto') {
64
- setHeight("".concat(content.current.scrollHeight, "px"));
65
- setVisibility('visible');
66
- } else if (!isOpen && height !== '0') {
67
- setHeight("".concat(content.current.scrollHeight, "px"));
68
- window.requestAnimationFrame(function () {
69
- return setTimeout(function () {
70
- setHeight('0');
71
- setOverflow('hidden');
72
- });
73
- });
74
- }
37
+ if (isOpen) {
38
+ setIsHidden(false);
75
39
  }
76
- }, [isOpen, height]);
77
- var onTransitionEnd = function onTransitionEnd(e) {
78
- if (e.target === content.current && e.propertyName === 'height') {
79
- if (isOpen) {
80
- setExpanded();
81
- } else {
82
- setCollapsed();
83
- }
84
- if (onRest) {
85
- onRest();
40
+ }, [isOpen]);
41
+ return /*#__PURE__*/_react.default.createElement("div", _extends({}, rest, {
42
+ ref: collapse,
43
+ className: (0, _classnames.default)('ffe-collapse', className, {
44
+ 'ffe-collapse--open': isOpen,
45
+ 'ffe-collapse--hidden': isHidden
46
+ }),
47
+ onTransitionEnd: function onTransitionEnd(e) {
48
+ if (e.target === collapse.current && e.propertyName === 'grid-template-rows') {
49
+ if (onRest) {
50
+ onRest();
51
+ }
52
+ if (!isOpen) {
53
+ setIsHidden(true);
54
+ }
86
55
  }
87
56
  }
88
- };
89
- var mergedStyles = _objectSpread(_objectSpread({}, style), {}, {
90
- willChange: 'height',
91
- height: height,
92
- overflow: overflow,
93
- visibility: visibility
94
- });
95
- return /*#__PURE__*/_react.default.createElement("div", _extends({}, rest, {
96
- ref: content,
97
- style: mergedStyles,
98
- className: (0, _classnames.default)('ffe-collapse-transition', className),
99
- onTransitionEnd: onTransitionEnd
100
- }));
101
- };
57
+ }), /*#__PURE__*/_react.default.createElement("div", {
58
+ className: "ffe-collapse__inner"
59
+ }, children));
60
+ });
102
61
  Collapse.displayName = 'Collapse';
103
62
  Collapse.propTypes = {
104
63
  className: _propTypes.string,
105
- style: _propTypes.object,
106
64
  isOpen: _propTypes.bool,
107
- onRest: _propTypes.func
108
- };
109
- var _default = exports.default = Collapse;
65
+ onRest: _propTypes.func,
66
+ /** The content to appear when expanded */
67
+ children: _propTypes.node.isRequired
68
+ };
package/lib/index.js CHANGED
@@ -3,11 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "default", {
6
+ Object.defineProperty(exports, "Collapse", {
7
7
  enumerable: true,
8
8
  get: function get() {
9
- return _Collapse.default;
9
+ return _Collapse.Collapse;
10
10
  }
11
11
  });
12
- var _Collapse = _interopRequireDefault(require("./Collapse"));
13
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ var _Collapse = require("./Collapse");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sb1/ffe-collapse-react",
3
- "version": "2.0.14",
3
+ "version": "3.0.1",
4
4
  "description": "React component for expand/collapse",
5
5
  "keywords": [
6
6
  "ffe"
@@ -29,7 +29,7 @@
29
29
  "test:watch": "ffe-buildtool jest --watch"
30
30
  },
31
31
  "dependencies": {
32
- "@sb1/ffe-core": "^27.3.5",
32
+ "@sb1/ffe-core": "^27.3.6",
33
33
  "classnames": "^2.3.1"
34
34
  },
35
35
  "devDependencies": {
@@ -45,5 +45,5 @@
45
45
  "publishConfig": {
46
46
  "access": "public"
47
47
  },
48
- "gitHead": "8bfc6dca847a163f4057ce4d75e2e2dc43b293dc"
48
+ "gitHead": "d9726eae887f19598f051c2f205506a0710b89e8"
49
49
  }
package/types/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import * as React from 'react';
2
2
 
3
- export interface CollapseProps extends React.HTMLProps<HTMLDivElement> {
3
+ export interface CollapseProps extends React.ComponentProps<'div'> {
4
4
  isOpen: boolean;
5
5
  onRest?: () => void;
6
6
  }
7
7
 
8
8
  declare class Collapse extends React.Component<CollapseProps, any> {}
9
9
 
10
- export default Collapse;
10
+ export { Collapse };