@lobehub/ui 2.18.1 → 2.18.3
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/Accordion.js +13 -6
- package/es/Accordion/AccordionItem.js +66 -52
- package/es/Accordion/type.d.ts +1 -0
- package/package.json +1 -1
|
@@ -34,8 +34,7 @@ var Accordion = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(function (_ref, ref)
|
|
|
34
34
|
userStyle = _ref.style,
|
|
35
35
|
_ref$accordion = _ref.accordion,
|
|
36
36
|
accordion = _ref$accordion === void 0 ? false : _ref$accordion,
|
|
37
|
-
|
|
38
|
-
defaultExpandedKeys = _ref$defaultExpandedK === void 0 ? [] : _ref$defaultExpandedK,
|
|
37
|
+
defaultExpandedKeys = _ref.defaultExpandedKeys,
|
|
39
38
|
expandedKeysProp = _ref.expandedKeys,
|
|
40
39
|
onExpandedChange = _ref.onExpandedChange,
|
|
41
40
|
_ref$variant = _ref.variant,
|
|
@@ -58,7 +57,18 @@ var Accordion = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(function (_ref, ref)
|
|
|
58
57
|
var _useStyles = useStyles(),
|
|
59
58
|
cx = _useStyles.cx,
|
|
60
59
|
styles = _useStyles.styles;
|
|
61
|
-
|
|
60
|
+
|
|
61
|
+
// Convert children to array and filter valid elements
|
|
62
|
+
var validChildren = Children.toArray(children).filter(isValidElement);
|
|
63
|
+
|
|
64
|
+
// Collect all item keys
|
|
65
|
+
var allItemKeys = validChildren.map(function (child, index) {
|
|
66
|
+
return child.props.itemKey || index;
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
// If defaultExpandedKeys or expandedKeys is undefined, expand all items by default
|
|
70
|
+
var initialExpandedKeys = defaultExpandedKeys !== null && defaultExpandedKeys !== void 0 ? defaultExpandedKeys : allItemKeys;
|
|
71
|
+
var _useMergeState = useMergeState(initialExpandedKeys, {
|
|
62
72
|
onChange: onExpandedChange,
|
|
63
73
|
value: expandedKeysProp
|
|
64
74
|
}),
|
|
@@ -92,9 +102,6 @@ var Accordion = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(function (_ref, ref)
|
|
|
92
102
|
showDivider: showDivider,
|
|
93
103
|
variant: variant
|
|
94
104
|
};
|
|
95
|
-
|
|
96
|
-
// Convert children to array and filter valid elements
|
|
97
|
-
var validChildren = Children.toArray(children).filter(isValidElement);
|
|
98
105
|
var content = /*#__PURE__*/_jsx(_Fragment, {
|
|
99
106
|
children: validChildren.map(function (child, index) {
|
|
100
107
|
// Extract itemKey from child props to use as React key
|
|
@@ -7,7 +7,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
7
7
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
8
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
9
|
import { AnimatePresence, LazyMotion, m } from 'framer-motion';
|
|
10
|
-
import { memo, useCallback } from 'react';
|
|
10
|
+
import { memo, useCallback, useMemo } from 'react';
|
|
11
11
|
import { Flexbox } from 'react-layout-kit';
|
|
12
12
|
import Block from "../Block";
|
|
13
13
|
import Text from "../Text";
|
|
@@ -41,7 +41,8 @@ var AccordionItem = /*#__PURE__*/memo(function (_ref) {
|
|
|
41
41
|
padding = _ref.padding,
|
|
42
42
|
ref = _ref.ref,
|
|
43
43
|
customVariant = _ref.variant,
|
|
44
|
-
customStyles = _ref.styles
|
|
44
|
+
customStyles = _ref.styles,
|
|
45
|
+
headerWrapper = _ref.headerWrapper;
|
|
45
46
|
var _useStyles = useStyles(),
|
|
46
47
|
cx = _useStyles.cx,
|
|
47
48
|
styles = _useStyles.styles;
|
|
@@ -77,7 +78,7 @@ var AccordionItem = /*#__PURE__*/memo(function (_ref) {
|
|
|
77
78
|
}, [disabled, handleToggle]);
|
|
78
79
|
|
|
79
80
|
// Build indicator
|
|
80
|
-
var
|
|
81
|
+
var indicator = useMemo(function () {
|
|
81
82
|
if (hideIndicatorFinal) return null;
|
|
82
83
|
if (customIndicator) {
|
|
83
84
|
if (typeof customIndicator === 'function') {
|
|
@@ -106,35 +107,37 @@ var AccordionItem = /*#__PURE__*/memo(function (_ref) {
|
|
|
106
107
|
className: cx(styles.icon, isOpen && styles.iconRotate)
|
|
107
108
|
})
|
|
108
109
|
});
|
|
109
|
-
};
|
|
110
|
+
}, [hideIndicatorFinal, customIndicator, disabled, isOpen, cx, styles, classNames, customStyles]);
|
|
110
111
|
|
|
111
112
|
// Animation variants
|
|
112
|
-
var motionProps =
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
113
|
+
var motionProps = useMemo(function () {
|
|
114
|
+
return _objectSpread({
|
|
115
|
+
animate: isOpen ? 'enter' : 'exit',
|
|
116
|
+
exit: 'exit',
|
|
117
|
+
initial: 'exit',
|
|
118
|
+
variants: {
|
|
119
|
+
enter: {
|
|
120
|
+
height: 'auto',
|
|
121
|
+
opacity: 1,
|
|
122
|
+
transition: {
|
|
123
|
+
duration: 0.2,
|
|
124
|
+
ease: [0.4, 0, 0.2, 1]
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
exit: {
|
|
128
|
+
height: 0,
|
|
129
|
+
opacity: 0,
|
|
130
|
+
transition: {
|
|
131
|
+
duration: 0.2,
|
|
132
|
+
ease: [0.4, 0, 0.2, 1]
|
|
133
|
+
}
|
|
131
134
|
}
|
|
132
135
|
}
|
|
133
|
-
}
|
|
134
|
-
}, contextMotionProps);
|
|
136
|
+
}, contextMotionProps);
|
|
137
|
+
}, [isOpen, contextMotionProps]);
|
|
135
138
|
|
|
136
139
|
// Render content
|
|
137
|
-
var
|
|
140
|
+
var contentElement = useMemo(function () {
|
|
138
141
|
if (disableAnimation) {
|
|
139
142
|
if (keepContentMounted) {
|
|
140
143
|
return /*#__PURE__*/_jsx("div", {
|
|
@@ -195,29 +198,31 @@ var AccordionItem = /*#__PURE__*/memo(function (_ref) {
|
|
|
195
198
|
}))
|
|
196
199
|
})
|
|
197
200
|
});
|
|
198
|
-
};
|
|
199
|
-
var titleNode =
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
201
|
+
}, [disableAnimation, keepContentMounted, isOpen, cx, styles, classNames, customStyles, children, motionProps]);
|
|
202
|
+
var titleNode = useMemo(function () {
|
|
203
|
+
return typeof title === 'string' ? /*#__PURE__*/_jsx(Text, {
|
|
204
|
+
className: classNames === null || classNames === void 0 ? void 0 : classNames.title,
|
|
205
|
+
ellipsis: true,
|
|
206
|
+
style: customStyles === null || customStyles === void 0 ? void 0 : customStyles.title,
|
|
207
|
+
children: title
|
|
208
|
+
}) : title;
|
|
209
|
+
}, [title, classNames === null || classNames === void 0 ? void 0 : classNames.title, customStyles === null || customStyles === void 0 ? void 0 : customStyles.title]);
|
|
210
|
+
var actionNode = useMemo(function () {
|
|
211
|
+
return action && /*#__PURE__*/_jsx(Flexbox, {
|
|
212
|
+
align: 'center',
|
|
213
|
+
className: cx('accordion-action', styles.action, classNames === null || classNames === void 0 ? void 0 : classNames.action),
|
|
214
|
+
flex: 'none',
|
|
215
|
+
gap: 4,
|
|
216
|
+
horizontal: true,
|
|
217
|
+
onClick: function onClick(e) {
|
|
218
|
+
return e.stopPropagation();
|
|
219
|
+
},
|
|
220
|
+
style: customStyles === null || customStyles === void 0 ? void 0 : customStyles.action,
|
|
221
|
+
children: action
|
|
222
|
+
});
|
|
223
|
+
}, [action, cx, styles, classNames === null || classNames === void 0 ? void 0 : classNames.action, customStyles === null || customStyles === void 0 ? void 0 : customStyles.action]);
|
|
224
|
+
var headerElement = useMemo(function () {
|
|
225
|
+
var header = /*#__PURE__*/_jsx(Block, {
|
|
221
226
|
className: cx('accordion-header', styles.header, classNames === null || classNames === void 0 ? void 0 : classNames.header),
|
|
222
227
|
clickable: !disabled,
|
|
223
228
|
gap: 4,
|
|
@@ -246,7 +251,7 @@ var AccordionItem = /*#__PURE__*/memo(function (_ref) {
|
|
|
246
251
|
style: {
|
|
247
252
|
overflow: 'hidden'
|
|
248
253
|
},
|
|
249
|
-
children: [titleNode,
|
|
254
|
+
children: [titleNode, indicator]
|
|
250
255
|
}), /*#__PURE__*/_jsx(Flexbox, {
|
|
251
256
|
align: 'center',
|
|
252
257
|
flex: 'none',
|
|
@@ -269,10 +274,19 @@ var AccordionItem = /*#__PURE__*/memo(function (_ref) {
|
|
|
269
274
|
flex: 'none',
|
|
270
275
|
gap: 4,
|
|
271
276
|
horizontal: true,
|
|
272
|
-
children: [actionNode,
|
|
277
|
+
children: [actionNode, indicator]
|
|
273
278
|
})]
|
|
274
279
|
})
|
|
275
|
-
})
|
|
280
|
+
});
|
|
281
|
+
if (headerWrapper) {
|
|
282
|
+
return headerWrapper(header);
|
|
283
|
+
}
|
|
284
|
+
return header;
|
|
285
|
+
}, [cx, styles, classNames, disabled, handleToggle, handleKeyDown, padding, paddingBlock, paddingInline, ref, customVariant, variant, indicatorPlacementFinal, titleNode, indicator, actionNode, headerWrapper]);
|
|
286
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
287
|
+
className: cx('accordion-item', styles.item, classNames === null || classNames === void 0 ? void 0 : classNames.base),
|
|
288
|
+
style: customStyles === null || customStyles === void 0 ? void 0 : customStyles.base,
|
|
289
|
+
children: [headerElement, contentElement]
|
|
276
290
|
});
|
|
277
291
|
});
|
|
278
292
|
AccordionItem.displayName = 'AccordionItem';
|
package/es/Accordion/type.d.ts
CHANGED
|
@@ -24,6 +24,7 @@ export interface AccordionItemProps extends Pick<BlockProps, 'padding' | 'paddin
|
|
|
24
24
|
* Whether the item is disabled
|
|
25
25
|
*/
|
|
26
26
|
disabled?: boolean;
|
|
27
|
+
headerWrapper?: (header: ReactNode) => ReactNode;
|
|
27
28
|
/**
|
|
28
29
|
* Whether to hide the chevron indicator
|
|
29
30
|
* @default false
|