@sb1/ffe-accordion-react 11.1.6 → 12.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/es/Accordion.js +26 -25
- package/es/AccordionContext.js +6 -14
- package/es/AccordionItem.js +73 -111
- package/es/index.js +1 -1
- package/lib/Accordion.js +34 -33
- package/lib/AccordionContext.js +31 -21
- package/lib/AccordionItem.js +108 -126
- package/lib/index.js +6 -18
- package/package.json +9 -9
- package/types/Accordion.d.ts +6 -0
- package/types/AccordionContext.d.ts +11 -0
- package/types/AccordionItem.d.ts +17 -0
- package/types/index.d.ts +2 -21
package/es/Accordion.js
CHANGED
|
@@ -1,29 +1,30 @@
|
|
|
1
|
-
var
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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
|
+
};
|
|
5
23
|
import React from 'react';
|
|
6
|
-
import { node, oneOf, string } from 'prop-types';
|
|
7
24
|
import classNames from 'classnames';
|
|
8
25
|
import { AccordionProvider } from './AccordionContext';
|
|
9
|
-
export var Accordion = function
|
|
10
|
-
|
|
11
|
-
headingLevel
|
|
12
|
-
|
|
13
|
-
rest = _objectWithoutProperties(_ref, _excluded);
|
|
14
|
-
return /*#__PURE__*/React.createElement(AccordionProvider, {
|
|
15
|
-
headingLevel: headingLevel
|
|
16
|
-
}, /*#__PURE__*/React.createElement("div", _extends({
|
|
17
|
-
className: classNames(className, 'ffe-accordion'),
|
|
18
|
-
role: "group",
|
|
19
|
-
"aria-label": "Trekkspillmeny"
|
|
20
|
-
}, rest), children));
|
|
26
|
+
export var Accordion = function (_a) {
|
|
27
|
+
var children = _a.children, headingLevel = _a.headingLevel, className = _a.className, rest = __rest(_a, ["children", "headingLevel", "className"]);
|
|
28
|
+
return (React.createElement(AccordionProvider, { headingLevel: headingLevel },
|
|
29
|
+
React.createElement("div", __assign({ className: classNames(className, 'ffe-accordion'), role: "group", "aria-label": "Trekkspillmeny" }, rest), children)));
|
|
21
30
|
};
|
|
22
|
-
Accordion.propTypes = {
|
|
23
|
-
/** Accordion items */
|
|
24
|
-
children: node,
|
|
25
|
-
/** The level of headings in the AccordionItems */
|
|
26
|
-
headingLevel: oneOf([1, 2, 3, 4, 5, 6]).isRequired,
|
|
27
|
-
/** Class assigned the container */
|
|
28
|
-
className: string
|
|
29
|
-
};
|
package/es/AccordionContext.js
CHANGED
|
@@ -1,16 +1,8 @@
|
|
|
1
1
|
import React, { createContext } from 'react';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
headingLevel =
|
|
7
|
-
|
|
8
|
-
value: {
|
|
9
|
-
headingLevel: headingLevel
|
|
10
|
-
}
|
|
11
|
-
}, children);
|
|
2
|
+
export var AccordionContext = createContext({
|
|
3
|
+
headingLevel: 2,
|
|
4
|
+
});
|
|
5
|
+
export var AccordionProvider = function (_a) {
|
|
6
|
+
var children = _a.children, headingLevel = _a.headingLevel;
|
|
7
|
+
return (React.createElement(AccordionContext.Provider, { value: { headingLevel: headingLevel } }, children));
|
|
12
8
|
};
|
|
13
|
-
AccordionProvider.propTypes = {
|
|
14
|
-
children: node,
|
|
15
|
-
headingLevel: oneOf([1, 2, 3, 4, 5, 6]).isRequired
|
|
16
|
-
};
|
package/es/AccordionItem.js
CHANGED
|
@@ -1,13 +1,25 @@
|
|
|
1
|
-
var
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
+
};
|
|
11
23
|
import React, { useEffect, useRef, useState, useContext } from 'react';
|
|
12
24
|
import { bool, func, node, string } from 'prop-types';
|
|
13
25
|
import { v4 as uuid } from 'uuid';
|
|
@@ -15,106 +27,56 @@ import { Icon } from '@sb1/ffe-icons-react';
|
|
|
15
27
|
import { Collapse } from '@sb1/ffe-collapse-react';
|
|
16
28
|
import classNames from 'classnames';
|
|
17
29
|
import { AccordionContext } from './AccordionContext';
|
|
18
|
-
export var AccordionItem = function
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
setIsAnimating(true);
|
|
55
|
-
setIsExpanded(!isExpanded);
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
var collapseHidden = !isExpanded && !isAnimating;
|
|
59
|
-
var H = "h".concat(headingLevel);
|
|
60
|
-
return /*#__PURE__*/React.createElement("div", _extends({
|
|
61
|
-
className: classNames(className, 'ffe-accordion-item', {
|
|
62
|
-
'ffe-accordion-item--open': isExpanded,
|
|
63
|
-
'ffe-accordion-item--focus': isFocused
|
|
64
|
-
})
|
|
65
|
-
}, rest), /*#__PURE__*/React.createElement(H, {
|
|
66
|
-
className: "ffe-h6 ffe-accordion-item__heading"
|
|
67
|
-
}, /*#__PURE__*/React.createElement("button", {
|
|
68
|
-
type: "button",
|
|
69
|
-
id: buttonId.current,
|
|
70
|
-
"aria-expanded": isExpanded ? 'true' : 'false',
|
|
71
|
-
"aria-controls": contentId.current,
|
|
72
|
-
"aria-label": ariaLabel,
|
|
73
|
-
className: classNames('ffe-accordion-item__heading-button', {
|
|
74
|
-
'ffe-accordion-item__heading-button--open': isExpanded
|
|
75
|
-
}),
|
|
76
|
-
onClick: handleOnClick,
|
|
77
|
-
onFocus: function onFocus() {
|
|
78
|
-
return setFocus(true);
|
|
79
|
-
},
|
|
80
|
-
onBlur: function onBlur() {
|
|
81
|
-
return setFocus(false);
|
|
82
|
-
}
|
|
83
|
-
}, /*#__PURE__*/React.createElement("span", {
|
|
84
|
-
className: "ffe-accordion-item__heading-button-content"
|
|
85
|
-
}, heading, /*#__PURE__*/React.createElement("span", {
|
|
86
|
-
className: "ffe-accordion-item__heading-icon-wrapper"
|
|
87
|
-
}, /*#__PURE__*/React.createElement(Icon, {
|
|
88
|
-
className: "ffe-accordion-item__heading-icon",
|
|
89
|
-
icon: "expand_more",
|
|
90
|
-
fileUrl: expandMoreIcon,
|
|
91
|
-
size: "sm"
|
|
92
|
-
}))))), /*#__PURE__*/React.createElement(Collapse, {
|
|
93
|
-
isOpen: isExpanded,
|
|
94
|
-
onRest: function onRest() {
|
|
95
|
-
return setIsAnimating(false);
|
|
96
|
-
},
|
|
97
|
-
id: contentId.current,
|
|
98
|
-
"aria-labelledby": buttonId.current,
|
|
99
|
-
hidden: collapseHidden,
|
|
100
|
-
role: "region"
|
|
101
|
-
}, !collapseHidden && /*#__PURE__*/React.createElement("div", {
|
|
102
|
-
className: "ffe-accordion-item__body"
|
|
103
|
-
}, children)));
|
|
30
|
+
export var AccordionItem = function (_a) {
|
|
31
|
+
var children = _a.children, heading = _a.heading, defaultOpen = _a.defaultOpen, isOpen = _a.isOpen, className = _a.className, _b = _a.onToggleOpen, onToggleOpen = _b === void 0 ? Function.prototype : _b, ariaLabel = _a.ariaLabel, rest = __rest(_a, ["children", "heading", "defaultOpen", "isOpen", "className", "onToggleOpen", "ariaLabel"]);
|
|
32
|
+
var _c = useState(defaultOpen), isExpanded = _c[0], setIsExpanded = _c[1];
|
|
33
|
+
var _d = useState(false), isAnimating = _d[0], setIsAnimating = _d[1];
|
|
34
|
+
var _e = useState(false), isFocused = _e[0], setFocus = _e[1];
|
|
35
|
+
var buttonId = useRef(uuid());
|
|
36
|
+
var contentId = useRef(uuid());
|
|
37
|
+
var headingLevel = useContext(AccordionContext).headingLevel;
|
|
38
|
+
var expandMoreIcon = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjQiPjxwYXRoIGQ9Ik00ODAtMzczLjUzOXEtNy4yMzEgMC0xMy40NjEtMi4zMDgtNi4yMzEtMi4zMDgtMTEuODQ2LTcuOTIzTDI3NC45MjQtNTYzLjUzOXEtOC4zMDgtOC4zMDctOC41LTIwLjg4NC0uMTkzLTEyLjU3NyA4LjUtMjEuMjY5IDguNjkyLTguNjkyIDIxLjA3Ni04LjY5MnQyMS4wNzYgOC42OTJMNDgwLTQ0Mi43NjhsMTYyLjkyNC0xNjIuOTI0cTguMzA3LTguMzA3IDIwLjg4NC04LjUgMTIuNTc2LS4xOTIgMjEuMjY4IDguNSA4LjY5MyA4LjY5MiA4LjY5MyAyMS4wNzcgMCAxMi4zODQtOC42OTMgMjEuMDc2TDUwNS4zMDctMzgzLjc3cS01LjYxNSA1LjYxNS0xMS44NDYgNy45MjMtNi4yMyAyLjMwOC0xMy40NjEgMi4zMDhaIi8+PC9zdmc+';
|
|
39
|
+
useEffect(function () {
|
|
40
|
+
if (isOpen != null) {
|
|
41
|
+
setIsAnimating(true);
|
|
42
|
+
setIsExpanded(isOpen);
|
|
43
|
+
}
|
|
44
|
+
}, [isOpen]);
|
|
45
|
+
var handleOnClick = function () {
|
|
46
|
+
onToggleOpen(!isExpanded);
|
|
47
|
+
if (isOpen == null) {
|
|
48
|
+
setIsAnimating(true);
|
|
49
|
+
setIsExpanded(!isExpanded);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
var collapseHidden = !isExpanded && !isAnimating;
|
|
53
|
+
var H = "h".concat(headingLevel);
|
|
54
|
+
return (React.createElement("div", __assign({ className: classNames(className, 'ffe-accordion-item', {
|
|
55
|
+
'ffe-accordion-item--open': isExpanded,
|
|
56
|
+
'ffe-accordion-item--focus': isFocused,
|
|
57
|
+
}) }, rest),
|
|
58
|
+
React.createElement("h".concat(headingLevel), { className: 'ffe-h6 ffe-accordion-item__heading' }, React.createElement("button", { type: "button", id: buttonId.current, "aria-expanded": isExpanded ? 'true' : 'false', "aria-controls": contentId.current, "aria-label": ariaLabel, className: classNames('ffe-accordion-item__heading-button', {
|
|
59
|
+
'ffe-accordion-item__heading-button--open': isExpanded,
|
|
60
|
+
}), onClick: handleOnClick, onFocus: function () { return setFocus(true); }, onBlur: function () { return setFocus(false); } },
|
|
61
|
+
React.createElement("span", { className: "ffe-accordion-item__heading-button-content" },
|
|
62
|
+
heading,
|
|
63
|
+
React.createElement("span", { className: "ffe-accordion-item__heading-icon-wrapper" },
|
|
64
|
+
React.createElement(Icon, { className: "ffe-accordion-item__heading-icon", fileUrl: expandMoreIcon, size: "sm" }))))),
|
|
65
|
+
React.createElement(Collapse, { isOpen: !!isExpanded, onRest: function () { return setIsAnimating(false); }, id: contentId.current, "aria-labelledby": buttonId.current, hidden: collapseHidden, role: "region" }, !collapseHidden && (React.createElement("div", { className: "ffe-accordion-item__body" }, children)))));
|
|
104
66
|
};
|
|
105
67
|
AccordionItem.propTypes = {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
};
|
|
68
|
+
/** The heading */
|
|
69
|
+
heading: node.isRequired,
|
|
70
|
+
/** The content to appear when expanded */
|
|
71
|
+
children: node.isRequired,
|
|
72
|
+
/** Should it be open by default */
|
|
73
|
+
defaultOpen: bool,
|
|
74
|
+
/** Is the item open or collapsed? Used for overriding default behaviour */
|
|
75
|
+
isOpen: bool,
|
|
76
|
+
/** Class assigned the container */
|
|
77
|
+
className: string,
|
|
78
|
+
/** Callback when the item is open/closed */
|
|
79
|
+
onToggleOpen: func,
|
|
80
|
+
/** aria-label for the button */
|
|
81
|
+
ariaLabel: string,
|
|
82
|
+
};
|
package/es/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { Accordion } from './Accordion';
|
|
2
|
-
export { AccordionItem } from './AccordionItem';
|
|
2
|
+
export { AccordionItem } from './AccordionItem';
|
package/lib/Accordion.js
CHANGED
|
@@ -1,36 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.
|
|
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 __rest = (this && this.__rest) || function (s, e) {
|
|
14
|
+
var t = {};
|
|
15
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
16
|
+
t[p] = s[p];
|
|
17
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
18
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
19
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
20
|
+
t[p[i]] = s[p[i]];
|
|
21
|
+
}
|
|
22
|
+
return t;
|
|
23
|
+
};
|
|
24
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
25
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
26
|
+
};
|
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
28
|
exports.Accordion = void 0;
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
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; }
|
|
15
|
-
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }
|
|
16
|
-
var Accordion = exports.Accordion = function Accordion(_ref) {
|
|
17
|
-
var children = _ref.children,
|
|
18
|
-
headingLevel = _ref.headingLevel,
|
|
19
|
-
className = _ref.className,
|
|
20
|
-
rest = _objectWithoutProperties(_ref, _excluded);
|
|
21
|
-
return /*#__PURE__*/_react.default.createElement(_AccordionContext.AccordionProvider, {
|
|
22
|
-
headingLevel: headingLevel
|
|
23
|
-
}, /*#__PURE__*/_react.default.createElement("div", _extends({
|
|
24
|
-
className: (0, _classnames.default)(className, 'ffe-accordion'),
|
|
25
|
-
role: "group",
|
|
26
|
-
"aria-label": "Trekkspillmeny"
|
|
27
|
-
}, rest), children));
|
|
29
|
+
var react_1 = __importDefault(require("react"));
|
|
30
|
+
var classnames_1 = __importDefault(require("classnames"));
|
|
31
|
+
var AccordionContext_1 = require("./AccordionContext");
|
|
32
|
+
var Accordion = function (_a) {
|
|
33
|
+
var children = _a.children, headingLevel = _a.headingLevel, className = _a.className, rest = __rest(_a, ["children", "headingLevel", "className"]);
|
|
34
|
+
return (react_1.default.createElement(AccordionContext_1.AccordionProvider, { headingLevel: headingLevel },
|
|
35
|
+
react_1.default.createElement("div", __assign({ className: (0, classnames_1.default)(className, 'ffe-accordion'), role: "group", "aria-label": "Trekkspillmeny" }, rest), children)));
|
|
28
36
|
};
|
|
29
|
-
Accordion
|
|
30
|
-
/** Accordion items */
|
|
31
|
-
children: _propTypes.node,
|
|
32
|
-
/** The level of headings in the AccordionItems */
|
|
33
|
-
headingLevel: (0, _propTypes.oneOf)([1, 2, 3, 4, 5, 6]).isRequired,
|
|
34
|
-
/** Class assigned the container */
|
|
35
|
-
className: _propTypes.string
|
|
36
|
-
};
|
|
37
|
+
exports.Accordion = Accordion;
|
package/lib/AccordionContext.js
CHANGED
|
@@ -1,25 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Object.
|
|
5
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
6
17
|
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
26
|
exports.AccordionProvider = exports.AccordionContext = void 0;
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
|
|
15
|
-
headingLevel = _ref.headingLevel;
|
|
16
|
-
return /*#__PURE__*/_react.default.createElement(AccordionContext.Provider, {
|
|
17
|
-
value: {
|
|
18
|
-
headingLevel: headingLevel
|
|
19
|
-
}
|
|
20
|
-
}, children);
|
|
27
|
+
var react_1 = __importStar(require("react"));
|
|
28
|
+
exports.AccordionContext = (0, react_1.createContext)({
|
|
29
|
+
headingLevel: 2,
|
|
30
|
+
});
|
|
31
|
+
var AccordionProvider = function (_a) {
|
|
32
|
+
var children = _a.children, headingLevel = _a.headingLevel;
|
|
33
|
+
return (react_1.default.createElement(exports.AccordionContext.Provider, { value: { headingLevel: headingLevel } }, children));
|
|
21
34
|
};
|
|
22
|
-
AccordionProvider
|
|
23
|
-
children: _propTypes.node,
|
|
24
|
-
headingLevel: (0, _propTypes.oneOf)([1, 2, 3, 4, 5, 6]).isRequired
|
|
25
|
-
};
|
|
35
|
+
exports.AccordionProvider = AccordionProvider;
|
package/lib/AccordionItem.js
CHANGED
|
@@ -1,130 +1,112 @@
|
|
|
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.AccordionItem = void 0;
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
var
|
|
15
|
-
var
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
var collapseHidden = !isExpanded && !isAnimating;
|
|
69
|
-
var H = "h".concat(headingLevel);
|
|
70
|
-
return /*#__PURE__*/_react.default.createElement("div", _extends({
|
|
71
|
-
className: (0, _classnames.default)(className, 'ffe-accordion-item', {
|
|
72
|
-
'ffe-accordion-item--open': isExpanded,
|
|
73
|
-
'ffe-accordion-item--focus': isFocused
|
|
74
|
-
})
|
|
75
|
-
}, rest), /*#__PURE__*/_react.default.createElement(H, {
|
|
76
|
-
className: "ffe-h6 ffe-accordion-item__heading"
|
|
77
|
-
}, /*#__PURE__*/_react.default.createElement("button", {
|
|
78
|
-
type: "button",
|
|
79
|
-
id: buttonId.current,
|
|
80
|
-
"aria-expanded": isExpanded ? 'true' : 'false',
|
|
81
|
-
"aria-controls": contentId.current,
|
|
82
|
-
"aria-label": ariaLabel,
|
|
83
|
-
className: (0, _classnames.default)('ffe-accordion-item__heading-button', {
|
|
84
|
-
'ffe-accordion-item__heading-button--open': isExpanded
|
|
85
|
-
}),
|
|
86
|
-
onClick: handleOnClick,
|
|
87
|
-
onFocus: function onFocus() {
|
|
88
|
-
return setFocus(true);
|
|
89
|
-
},
|
|
90
|
-
onBlur: function onBlur() {
|
|
91
|
-
return setFocus(false);
|
|
92
|
-
}
|
|
93
|
-
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
94
|
-
className: "ffe-accordion-item__heading-button-content"
|
|
95
|
-
}, heading, /*#__PURE__*/_react.default.createElement("span", {
|
|
96
|
-
className: "ffe-accordion-item__heading-icon-wrapper"
|
|
97
|
-
}, /*#__PURE__*/_react.default.createElement(_ffeIconsReact.Icon, {
|
|
98
|
-
className: "ffe-accordion-item__heading-icon",
|
|
99
|
-
icon: "expand_more",
|
|
100
|
-
fileUrl: expandMoreIcon,
|
|
101
|
-
size: "sm"
|
|
102
|
-
}))))), /*#__PURE__*/_react.default.createElement(_ffeCollapseReact.Collapse, {
|
|
103
|
-
isOpen: isExpanded,
|
|
104
|
-
onRest: function onRest() {
|
|
105
|
-
return setIsAnimating(false);
|
|
106
|
-
},
|
|
107
|
-
id: contentId.current,
|
|
108
|
-
"aria-labelledby": buttonId.current,
|
|
109
|
-
hidden: collapseHidden,
|
|
110
|
-
role: "region"
|
|
111
|
-
}, !collapseHidden && /*#__PURE__*/_react.default.createElement("div", {
|
|
112
|
-
className: "ffe-accordion-item__body"
|
|
113
|
-
}, children)));
|
|
52
|
+
var react_1 = __importStar(require("react"));
|
|
53
|
+
var prop_types_1 = require("prop-types");
|
|
54
|
+
var uuid_1 = require("uuid");
|
|
55
|
+
var ffe_icons_react_1 = require("@sb1/ffe-icons-react");
|
|
56
|
+
var ffe_collapse_react_1 = require("@sb1/ffe-collapse-react");
|
|
57
|
+
var classnames_1 = __importDefault(require("classnames"));
|
|
58
|
+
var AccordionContext_1 = require("./AccordionContext");
|
|
59
|
+
var AccordionItem = function (_a) {
|
|
60
|
+
var children = _a.children, heading = _a.heading, defaultOpen = _a.defaultOpen, isOpen = _a.isOpen, className = _a.className, _b = _a.onToggleOpen, onToggleOpen = _b === void 0 ? Function.prototype : _b, ariaLabel = _a.ariaLabel, rest = __rest(_a, ["children", "heading", "defaultOpen", "isOpen", "className", "onToggleOpen", "ariaLabel"]);
|
|
61
|
+
var _c = (0, react_1.useState)(defaultOpen), isExpanded = _c[0], setIsExpanded = _c[1];
|
|
62
|
+
var _d = (0, react_1.useState)(false), isAnimating = _d[0], setIsAnimating = _d[1];
|
|
63
|
+
var _e = (0, react_1.useState)(false), isFocused = _e[0], setFocus = _e[1];
|
|
64
|
+
var buttonId = (0, react_1.useRef)((0, uuid_1.v4)());
|
|
65
|
+
var contentId = (0, react_1.useRef)((0, uuid_1.v4)());
|
|
66
|
+
var headingLevel = (0, react_1.useContext)(AccordionContext_1.AccordionContext).headingLevel;
|
|
67
|
+
var expandMoreIcon = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjQiPjxwYXRoIGQ9Ik00ODAtMzczLjUzOXEtNy4yMzEgMC0xMy40NjEtMi4zMDgtNi4yMzEtMi4zMDgtMTEuODQ2LTcuOTIzTDI3NC45MjQtNTYzLjUzOXEtOC4zMDgtOC4zMDctOC41LTIwLjg4NC0uMTkzLTEyLjU3NyA4LjUtMjEuMjY5IDguNjkyLTguNjkyIDIxLjA3Ni04LjY5MnQyMS4wNzYgOC42OTJMNDgwLTQ0Mi43NjhsMTYyLjkyNC0xNjIuOTI0cTguMzA3LTguMzA3IDIwLjg4NC04LjUgMTIuNTc2LS4xOTIgMjEuMjY4IDguNSA4LjY5MyA4LjY5MiA4LjY5MyAyMS4wNzcgMCAxMi4zODQtOC42OTMgMjEuMDc2TDUwNS4zMDctMzgzLjc3cS01LjYxNSA1LjYxNS0xMS44NDYgNy45MjMtNi4yMyAyLjMwOC0xMy40NjEgMi4zMDhaIi8+PC9zdmc+';
|
|
68
|
+
(0, react_1.useEffect)(function () {
|
|
69
|
+
if (isOpen != null) {
|
|
70
|
+
setIsAnimating(true);
|
|
71
|
+
setIsExpanded(isOpen);
|
|
72
|
+
}
|
|
73
|
+
}, [isOpen]);
|
|
74
|
+
var handleOnClick = function () {
|
|
75
|
+
onToggleOpen(!isExpanded);
|
|
76
|
+
if (isOpen == null) {
|
|
77
|
+
setIsAnimating(true);
|
|
78
|
+
setIsExpanded(!isExpanded);
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
var collapseHidden = !isExpanded && !isAnimating;
|
|
82
|
+
var H = "h".concat(headingLevel);
|
|
83
|
+
return (react_1.default.createElement("div", __assign({ className: (0, classnames_1.default)(className, 'ffe-accordion-item', {
|
|
84
|
+
'ffe-accordion-item--open': isExpanded,
|
|
85
|
+
'ffe-accordion-item--focus': isFocused,
|
|
86
|
+
}) }, rest),
|
|
87
|
+
react_1.default.createElement("h".concat(headingLevel), { className: 'ffe-h6 ffe-accordion-item__heading' }, react_1.default.createElement("button", { type: "button", id: buttonId.current, "aria-expanded": isExpanded ? 'true' : 'false', "aria-controls": contentId.current, "aria-label": ariaLabel, className: (0, classnames_1.default)('ffe-accordion-item__heading-button', {
|
|
88
|
+
'ffe-accordion-item__heading-button--open': isExpanded,
|
|
89
|
+
}), onClick: handleOnClick, onFocus: function () { return setFocus(true); }, onBlur: function () { return setFocus(false); } },
|
|
90
|
+
react_1.default.createElement("span", { className: "ffe-accordion-item__heading-button-content" },
|
|
91
|
+
heading,
|
|
92
|
+
react_1.default.createElement("span", { className: "ffe-accordion-item__heading-icon-wrapper" },
|
|
93
|
+
react_1.default.createElement(ffe_icons_react_1.Icon, { className: "ffe-accordion-item__heading-icon", fileUrl: expandMoreIcon, size: "sm" }))))),
|
|
94
|
+
react_1.default.createElement(ffe_collapse_react_1.Collapse, { isOpen: !!isExpanded, onRest: function () { return setIsAnimating(false); }, id: contentId.current, "aria-labelledby": buttonId.current, hidden: collapseHidden, role: "region" }, !collapseHidden && (react_1.default.createElement("div", { className: "ffe-accordion-item__body" }, children)))));
|
|
95
|
+
};
|
|
96
|
+
exports.AccordionItem = AccordionItem;
|
|
97
|
+
exports.AccordionItem.propTypes = {
|
|
98
|
+
/** The heading */
|
|
99
|
+
heading: prop_types_1.node.isRequired,
|
|
100
|
+
/** The content to appear when expanded */
|
|
101
|
+
children: prop_types_1.node.isRequired,
|
|
102
|
+
/** Should it be open by default */
|
|
103
|
+
defaultOpen: prop_types_1.bool,
|
|
104
|
+
/** Is the item open or collapsed? Used for overriding default behaviour */
|
|
105
|
+
isOpen: prop_types_1.bool,
|
|
106
|
+
/** Class assigned the container */
|
|
107
|
+
className: prop_types_1.string,
|
|
108
|
+
/** Callback when the item is open/closed */
|
|
109
|
+
onToggleOpen: prop_types_1.func,
|
|
110
|
+
/** aria-label for the button */
|
|
111
|
+
ariaLabel: prop_types_1.string,
|
|
114
112
|
};
|
|
115
|
-
AccordionItem.propTypes = {
|
|
116
|
-
/** The heading */
|
|
117
|
-
heading: _propTypes.node.isRequired,
|
|
118
|
-
/** The content to appear when expanded */
|
|
119
|
-
children: _propTypes.node.isRequired,
|
|
120
|
-
/** Should it be open by default */
|
|
121
|
-
defaultOpen: _propTypes.bool,
|
|
122
|
-
/** Is the item open or collapsed? Used for overriding default behaviour */
|
|
123
|
-
isOpen: _propTypes.bool,
|
|
124
|
-
/** Class assigned the container */
|
|
125
|
-
className: _propTypes.string,
|
|
126
|
-
/** Callback when the item is open/closed */
|
|
127
|
-
onToggleOpen: _propTypes.func,
|
|
128
|
-
/** aria-label for the button */
|
|
129
|
-
ariaLabel: _propTypes.string
|
|
130
|
-
};
|
package/lib/index.js
CHANGED
|
@@ -1,19 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
});
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
get: function get() {
|
|
9
|
-
return _Accordion.Accordion;
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
Object.defineProperty(exports, "AccordionItem", {
|
|
13
|
-
enumerable: true,
|
|
14
|
-
get: function get() {
|
|
15
|
-
return _AccordionItem.AccordionItem;
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
var _Accordion = require("./Accordion");
|
|
19
|
-
var _AccordionItem = require("./AccordionItem");
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AccordionItem = exports.Accordion = void 0;
|
|
4
|
+
var Accordion_1 = require("./Accordion");
|
|
5
|
+
Object.defineProperty(exports, "Accordion", { enumerable: true, get: function () { return Accordion_1.Accordion; } });
|
|
6
|
+
var AccordionItem_1 = require("./AccordionItem");
|
|
7
|
+
Object.defineProperty(exports, "AccordionItem", { enumerable: true, get: function () { return AccordionItem_1.AccordionItem; } });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sb1/ffe-accordion-react",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "12.0.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "SpareBank 1",
|
|
6
6
|
"files": [
|
|
@@ -17,23 +17,23 @@
|
|
|
17
17
|
"url": "ssh://git@github.com:SpareBank1/designsystem.git"
|
|
18
18
|
},
|
|
19
19
|
"scripts": {
|
|
20
|
-
"build": "ffe-buildtool
|
|
21
|
-
"watch": "ffe-buildtool
|
|
20
|
+
"build": "ffe-buildtool tsc",
|
|
21
|
+
"watch": "ffe-buildtool tsc-watch",
|
|
22
22
|
"lint": "eslint src",
|
|
23
23
|
"lint:fix": "eslint src --fix",
|
|
24
24
|
"test": "ffe-buildtool jest",
|
|
25
25
|
"test:watch": "ffe-buildtool jest --watch"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@sb1/ffe-accordion": "^10.0.
|
|
29
|
-
"@sb1/ffe-collapse-react": "^
|
|
30
|
-
"@sb1/ffe-icons-react": "^9.0.
|
|
28
|
+
"@sb1/ffe-accordion": "^10.0.14",
|
|
29
|
+
"@sb1/ffe-collapse-react": "^4.0.0",
|
|
30
|
+
"@sb1/ffe-icons-react": "^9.0.11",
|
|
31
|
+
"@types/uuid": "^9.0.0",
|
|
31
32
|
"classnames": "^2.3.1",
|
|
32
|
-
"prop-types": "^15.7.2",
|
|
33
33
|
"uuid": "^9.0.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@sb1/ffe-buildtool": "^0.
|
|
36
|
+
"@sb1/ffe-buildtool": "^0.6.0",
|
|
37
37
|
"react": "^16.9.0",
|
|
38
38
|
"react-dom": "^16.9.0"
|
|
39
39
|
},
|
|
@@ -43,5 +43,5 @@
|
|
|
43
43
|
"publishConfig": {
|
|
44
44
|
"access": "public"
|
|
45
45
|
},
|
|
46
|
-
"gitHead": "
|
|
46
|
+
"gitHead": "a65bcea912889d7746ec8a2401df2f93f6f5eba2"
|
|
47
47
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface AccordionContextInterface {
|
|
3
|
+
headingLevel: number;
|
|
4
|
+
}
|
|
5
|
+
export declare const AccordionContext: React.Context<AccordionContextInterface>;
|
|
6
|
+
interface Props {
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
headingLevel: 1 | 2 | 3 | 4 | 5 | 6;
|
|
9
|
+
}
|
|
10
|
+
export declare const AccordionProvider: React.FC<Props>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface AccordionItemProps extends React.ComponentPropsWithoutRef<'div'> {
|
|
3
|
+
/** The heading */
|
|
4
|
+
heading: NonNullable<React.ReactNode>;
|
|
5
|
+
/** The content to appear when expanded */
|
|
6
|
+
children: NonNullable<React.ReactNode>;
|
|
7
|
+
/** Should it be open by default */
|
|
8
|
+
defaultOpen?: boolean;
|
|
9
|
+
/** Is the item open or collapsed? Used for overriding default behaviour */
|
|
10
|
+
isOpen?: boolean;
|
|
11
|
+
/** Callback when the item is open/closed */
|
|
12
|
+
onToggleOpen?: (isOpen: boolean) => void;
|
|
13
|
+
/** aria-label for the button */
|
|
14
|
+
ariaLabel?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare const AccordionItem: React.FC<AccordionItemProps>;
|
|
17
|
+
export {};
|
package/types/index.d.ts
CHANGED
|
@@ -1,21 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export interface AccordionItemProps
|
|
4
|
-
extends React.ComponentPropsWithoutRef<'div'> {
|
|
5
|
-
heading: string | React.ReactElement;
|
|
6
|
-
defaultOpen?: boolean;
|
|
7
|
-
isOpen?: boolean;
|
|
8
|
-
onToggleOpen?: (isOpen: boolean) => void;
|
|
9
|
-
ariaLabel?: string;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export interface AccordionProps extends React.ComponentPropsWithoutRef<'div'> {
|
|
13
|
-
children:
|
|
14
|
-
| (React.ReactElement<AccordionItemProps> | null)[]
|
|
15
|
-
| React.ReactElement<AccordionItemProps>;
|
|
16
|
-
headingLevel: 1 | 2 | 3 | 4 | 5 | 6;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
declare class Accordion extends React.Component<AccordionProps, any> {}
|
|
20
|
-
|
|
21
|
-
declare class AccordionItem extends React.Component<AccordionItemProps, any> {}
|
|
1
|
+
export { Accordion } from './Accordion';
|
|
2
|
+
export { AccordionItem } from './AccordionItem';
|