@rainbow-oh/yee-c 0.8.0 → 0.8.2
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/LICENSE +1 -1
- package/README.md +40 -25
- package/dist/cjs/Card/card.js +7 -3
- package/dist/cjs/Carousel/carousel-item.js +7 -2
- package/dist/cjs/Carousel/carousel.js +31 -4
- package/dist/cjs/Cascader/cascader.js +38 -30
- package/dist/cjs/Cascader/column.js +17 -9
- package/dist/cjs/Cascader/node.js +16 -4
- package/dist/cjs/Cascader/search-list.js +31 -14
- package/dist/cjs/Cascader/utils/index.js +1 -5
- package/dist/cjs/Checkbox/checkbox-group.js +23 -14
- package/dist/cjs/Checkbox/checkbox.js +6 -3
- package/dist/cjs/Collapse/panel.js +10 -1
- package/dist/cjs/Dialog/dialog.js +22 -7
- package/dist/cjs/Dialog/interface.d.ts +1 -1
- package/dist/cjs/Dialog/style/index.less +2 -1
- package/dist/cjs/Drawer/drawer.js +22 -5
- package/dist/cjs/Form/Group.js +1 -1
- package/dist/cjs/Form/demo/tooltip.js +1 -3
- package/dist/cjs/List/hooks/useListKeyboard.js +3 -1
- package/dist/cjs/Menu/menu-item.js +14 -5
- package/dist/cjs/Menu/menu.js +26 -2
- package/dist/cjs/Pagination/items.js +60 -27
- package/dist/cjs/Pagination/pagination.js +33 -11
- package/dist/cjs/PickerPanel/panels/DateTimePanel/index.d.ts +1 -1
- package/dist/cjs/PickerPanel/panels/MonthPanel/MonthHeader.js +7 -1
- package/dist/cjs/Radio/radio-group.js +6 -5
- package/dist/cjs/Radio/radio.js +39 -29
- package/dist/cjs/Rate/rate.js +6 -1
- package/dist/cjs/Rate/star.js +31 -3
- package/dist/cjs/Segmented/demo/variant.js +15 -1
- package/dist/cjs/Segmented/index.d.ts +1 -1
- package/dist/cjs/Segmented/segmented.js +12 -15
- package/dist/cjs/Select/option.js +8 -1
- package/dist/cjs/Select/options.js +9 -1
- package/dist/cjs/Select/select.js +3 -1
- package/dist/cjs/Steps/step.js +19 -5
- package/dist/cjs/Steps/steps.js +11 -1
- package/dist/cjs/Table/demo/components-override.js +31 -2
- package/dist/cjs/Table/demo/grouping.js +7 -1
- package/dist/cjs/Table/hooks/useColumns.d.ts +3 -3
- package/dist/cjs/Table/hooks/useColumns.js +11 -14
- package/dist/cjs/Table/index.d.ts +1 -1
- package/dist/cjs/Table/style/index.less +2 -4
- package/dist/cjs/Table/tbody/row.js +1 -4
- package/dist/cjs/Table/theader/index.js +12 -4
- package/dist/cjs/Tabs/tab-content.js +3 -1
- package/dist/cjs/Tabs/tab-header/index.js +3 -1
- package/dist/cjs/Tabs/tab-header/tab-header-title.js +3 -1
- package/dist/cjs/Tour/index.d.ts +1 -1
- package/dist/cjs/Tree/style/index.less +1 -5
- package/dist/cjs/Tree/tree.js +38 -35
- package/dist/cjs/hooks/useDelayState.js +3 -2
- package/dist/cjs/hooks/useEvent.js +1 -4
- package/dist/cjs/hooks/useFocusManage.d.ts +1 -1
- package/dist/cjs/hooks/useFocusManage.js +27 -22
- package/dist/cjs/style/size.css +2 -0
- package/dist/cjs/style/themes.css +1 -1
- package/dist/cjs/style/variables.css +3 -1
- package/dist/cjs/utils/focusStack.d.ts +6 -2
- package/dist/cjs/utils/focusStack.js +40 -11
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/Card/card.js +7 -3
- package/dist/esm/Carousel/carousel-item.js +7 -2
- package/dist/esm/Carousel/carousel.js +31 -4
- package/dist/esm/Cascader/cascader.js +3 -1
- package/dist/esm/Cascader/column.js +2 -1
- package/dist/esm/Cascader/node.js +18 -4
- package/dist/esm/Cascader/search-list.js +18 -4
- package/dist/esm/Checkbox/checkbox-group.js +3 -1
- package/dist/esm/Checkbox/checkbox.js +6 -3
- package/dist/esm/Collapse/panel.js +11 -2
- package/dist/esm/Dialog/dialog.js +28 -11
- package/dist/esm/Dialog/interface.d.ts +1 -1
- package/dist/esm/Dialog/style/index.less +2 -1
- package/dist/esm/Drawer/drawer.js +16 -7
- package/dist/esm/Form/Group.js +1 -1
- package/dist/esm/Menu/menu-item.js +16 -5
- package/dist/esm/Menu/menu.js +11 -5
- package/dist/esm/Pagination/items.js +14 -5
- package/dist/esm/Pagination/pagination.js +16 -4
- package/dist/esm/PickerPanel/panels/DateTimePanel/index.d.ts +1 -1
- package/dist/esm/Radio/radio-group.js +5 -4
- package/dist/esm/Radio/radio.js +5 -4
- package/dist/esm/Rate/rate.js +6 -1
- package/dist/esm/Rate/star.js +12 -4
- package/dist/esm/Segmented/index.d.ts +1 -1
- package/dist/esm/Segmented/segmented.js +1 -1
- package/dist/esm/Steps/step.js +12 -6
- package/dist/esm/Steps/steps.js +3 -1
- package/dist/esm/Table/demo/components-override.js +1 -0
- package/dist/esm/Table/hooks/useColumns.d.ts +3 -3
- package/dist/esm/Table/hooks/useColumns.js +13 -16
- package/dist/esm/Table/index.d.ts +1 -1
- package/dist/esm/Table/style/index.less +2 -4
- package/dist/esm/Tabs/tab-content.js +3 -1
- package/dist/esm/Tabs/tab-header/index.js +3 -1
- package/dist/esm/Tabs/tab-header/tab-header-title.js +3 -1
- package/dist/esm/Tour/index.d.ts +1 -1
- package/dist/esm/Tree/style/index.less +1 -5
- package/dist/esm/Tree/tree.js +1 -1
- package/dist/esm/hooks/useDelayState.js +5 -2
- package/dist/esm/hooks/useFocusManage.d.ts +1 -1
- package/dist/esm/hooks/useFocusManage.js +31 -13
- package/dist/esm/style/size.css +2 -0
- package/dist/esm/style/themes.css +1 -1
- package/dist/esm/style/variables.css +3 -1
- package/dist/esm/utils/focusStack.d.ts +6 -2
- package/dist/esm/utils/focusStack.js +37 -14
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/umd/yee-c.min.css +2 -2
- package/dist/umd/yee-c.min.js +1 -1
- package/package.json +10 -6
- package/src/Anchor/anchor.tsx +2 -2
- package/src/Card/card.tsx +5 -1
- package/src/Carousel/carousel-item.tsx +7 -1
- package/src/Carousel/carousel.tsx +29 -3
- package/src/Cascader/cascader.tsx +5 -1
- package/src/Cascader/column.tsx +5 -1
- package/src/Cascader/node.tsx +14 -2
- package/src/Cascader/search-list.tsx +19 -3
- package/src/Cascader/utils/index.ts +3 -6
- package/src/Checkbox/checkbox-group.tsx +6 -1
- package/src/Checkbox/checkbox.tsx +3 -0
- package/src/Collapse/panel.tsx +11 -1
- package/src/Dialog/dialog.tsx +35 -6
- package/src/Dialog/interface.ts +1 -1
- package/src/Dialog/style/index.less +2 -1
- package/src/Drawer/drawer.tsx +18 -3
- package/src/Form/Group.tsx +2 -4
- package/src/Form/demo/tooltip.tsx +2 -11
- package/src/Form/utils/validate.ts +1 -4
- package/src/List/hooks/useListKeyboard.ts +3 -3
- package/src/List/list.tsx +2 -1
- package/src/Menu/menu-item.tsx +12 -3
- package/src/Menu/menu.tsx +22 -5
- package/src/Pagination/items.tsx +21 -4
- package/src/Pagination/pagination.tsx +24 -4
- package/src/PickerPanel/panels/DatePanel/DateBody.tsx +1 -1
- package/src/PickerPanel/panels/DateTimePanel/index.tsx +1 -1
- package/src/PickerPanel/panels/MonthPanel/MonthHeader.tsx +7 -2
- package/src/PickerPanel/panels/PanelBody.tsx +1 -1
- package/src/PickerPanel/panels/QuarterPanel/QuarterHeader.tsx +1 -1
- package/src/PickerPanel/panels/RangePanel/index.tsx +1 -1
- package/src/PickerPanel/panels/TimePanel/TimeBody.tsx +1 -1
- package/src/PickerPanel/panels/YearPanel/YearHeader.tsx +1 -1
- package/src/PickerPanel/utils/pickerUtils.ts +2 -1
- package/src/Radio/radio-group.tsx +2 -1
- package/src/Radio/radio.tsx +7 -2
- package/src/RangePicker/range-picker-mobile.tsx +1 -3
- package/src/Rate/rate.tsx +5 -0
- package/src/Rate/star.tsx +20 -4
- package/src/Segmented/demo/variant.tsx +10 -2
- package/src/Segmented/index.ts +2 -2
- package/src/Segmented/segmented.tsx +4 -11
- package/src/Select/interface.ts +0 -1
- package/src/Select/option.tsx +8 -2
- package/src/Select/options.tsx +11 -4
- package/src/Select/select.tsx +4 -4
- package/src/Steps/step.tsx +23 -5
- package/src/Steps/steps.tsx +8 -1
- package/src/Table/demo/components-override.tsx +34 -7
- package/src/Table/demo/grouping.tsx +8 -4
- package/src/Table/hooks/useColumns.ts +14 -18
- package/src/Table/index.ts +3 -3
- package/src/Table/style/index.less +2 -4
- package/src/Table/table.tsx +2 -4
- package/src/Table/tbody/row.tsx +1 -3
- package/src/Table/theader/index.tsx +9 -10
- package/src/Tabs/tab-content.tsx +2 -0
- package/src/Tabs/tab-header/index.tsx +2 -0
- package/src/Tabs/tab-header/tab-header-title.tsx +3 -1
- package/src/Tour/demo/placement.tsx +2 -1
- package/src/Tour/index.ts +1 -1
- package/src/Tree/style/index.less +1 -5
- package/src/Tree/tree.tsx +16 -11
- package/src/Tree/utils/tree-tools.ts +4 -1
- package/src/hooks/useDelayState.ts +4 -2
- package/src/hooks/useEvent.ts +1 -3
- package/src/hooks/useFocusManage.ts +33 -17
- package/src/locale/context.tsx +5 -1
- package/src/locale/interface.ts +3 -1
- package/src/style/size.css +2 -0
- package/src/utils/debounce.ts +1 -3
- package/src/utils/focusStack.ts +55 -12
- package/src/version.ts +1 -1
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@rainbow-oh/yee-c) [](./LICENSE)
|
|
4
4
|
|
|
5
|
-
65+ foundational React UI components for building modern enterprise applications. Part of the [Yee](https://github.com/
|
|
5
|
+
65+ foundational React UI components for building modern enterprise applications. Part of the [Yee](https://github.com/insureMO/oh-yee) component library.
|
|
6
6
|
|
|
7
7
|
## Features
|
|
8
8
|
|
|
@@ -24,7 +24,16 @@ Requires `react >= 18` and `react-dom >= 18` as peer dependencies.
|
|
|
24
24
|
## Usage
|
|
25
25
|
|
|
26
26
|
```tsx
|
|
27
|
-
import {
|
|
27
|
+
import {
|
|
28
|
+
Button,
|
|
29
|
+
Form,
|
|
30
|
+
Input,
|
|
31
|
+
Table,
|
|
32
|
+
Card,
|
|
33
|
+
Select,
|
|
34
|
+
Dialog,
|
|
35
|
+
message,
|
|
36
|
+
} from '@rainbow-oh/yee-c';
|
|
28
37
|
```
|
|
29
38
|
|
|
30
39
|
Import styles:
|
|
@@ -54,10 +63,16 @@ function UserForm() {
|
|
|
54
63
|
<>
|
|
55
64
|
{messageHolder}
|
|
56
65
|
<Form form={form} onFinish={handleSubmit}>
|
|
57
|
-
<Form.Field
|
|
66
|
+
<Form.Field
|
|
67
|
+
label="Name"
|
|
68
|
+
name="name"
|
|
69
|
+
rules={[{ required: true, message: 'Please enter name' }]}
|
|
70
|
+
>
|
|
58
71
|
<Input />
|
|
59
72
|
</Form.Field>
|
|
60
|
-
<Button type="primary" htmlType="submit">
|
|
73
|
+
<Button type="primary" htmlType="submit">
|
|
74
|
+
Submit
|
|
75
|
+
</Button>
|
|
61
76
|
</Form>
|
|
62
77
|
</>
|
|
63
78
|
);
|
|
@@ -98,31 +113,31 @@ ConfigProvider, Portal
|
|
|
98
113
|
|
|
99
114
|
20+ utility hooks for common React patterns:
|
|
100
115
|
|
|
101
|
-
| Hook
|
|
102
|
-
|
|
103
|
-
| `useDebounceFunction`
|
|
104
|
-
| `useDebounceValue`
|
|
105
|
-
| `useDeepCompareEffect` | Effect with deep comparison
|
|
106
|
-
| `useDeepCompareMemo`
|
|
107
|
-
| `useMergedState`
|
|
108
|
-
| `useLatest`
|
|
109
|
-
| `useMount`
|
|
110
|
-
| `useUpdateEffect`
|
|
111
|
-
| `useResizeObserver`
|
|
112
|
-
| `useElementSize`
|
|
113
|
-
| `useEvent`
|
|
114
|
-
| `useFocusManage`
|
|
115
|
-
| `useKeyControl`
|
|
116
|
-
| `useVirtualForm`
|
|
116
|
+
| Hook | Description |
|
|
117
|
+
| ---------------------- | ----------------------------- |
|
|
118
|
+
| `useDebounceFunction` | Debounced function execution |
|
|
119
|
+
| `useDebounceValue` | Debounced state value |
|
|
120
|
+
| `useDeepCompareEffect` | Effect with deep comparison |
|
|
121
|
+
| `useDeepCompareMemo` | Memo with deep comparison |
|
|
122
|
+
| `useMergedState` | Controlled/uncontrolled state |
|
|
123
|
+
| `useLatest` | Always-current ref value |
|
|
124
|
+
| `useMount` | Mount lifecycle hook |
|
|
125
|
+
| `useUpdateEffect` | Skip-first-run effect |
|
|
126
|
+
| `useResizeObserver` | Element resize observation |
|
|
127
|
+
| `useElementSize` | Element dimensions tracking |
|
|
128
|
+
| `useEvent` | Stable event handler |
|
|
129
|
+
| `useFocusManage` | Focus management |
|
|
130
|
+
| `useKeyControl` | Keyboard control |
|
|
131
|
+
| `useVirtualForm` | Virtual scrolling for forms |
|
|
117
132
|
|
|
118
133
|
## Theming
|
|
119
134
|
|
|
120
135
|
Use built-in color themes by importing the corresponding CSS file:
|
|
121
136
|
|
|
122
137
|
```tsx
|
|
123
|
-
import '@rainbow-oh/yee-c/variables.css';
|
|
124
|
-
import '@rainbow-oh/yee-c/color.blue.css';
|
|
125
|
-
import '@rainbow-oh/yee-c/color.dark.css';
|
|
138
|
+
import '@rainbow-oh/yee-c/variables.css'; // Base variables
|
|
139
|
+
import '@rainbow-oh/yee-c/color.blue.css'; // Blue theme
|
|
140
|
+
import '@rainbow-oh/yee-c/color.dark.css'; // Dark theme
|
|
126
141
|
```
|
|
127
142
|
|
|
128
143
|
Available themes: `blue`, `crimson`, `dark`, `green`, `jam`, `navy`, `peach`, `pine`, `pitaya`, `pumpkin`, `ruby`.
|
|
@@ -145,8 +160,8 @@ pnpm lint
|
|
|
145
160
|
|
|
146
161
|
## Contributing
|
|
147
162
|
|
|
148
|
-
See the root [Contributing Guide](https://github.com/
|
|
163
|
+
See the root [Contributing Guide](https://github.com/insureMO/oh-yee/blob/main/CONTRIBUTING.md).
|
|
149
164
|
|
|
150
165
|
## License
|
|
151
166
|
|
|
152
|
-
[MIT](./LICENSE) © [
|
|
167
|
+
[MIT](./LICENSE) © [insureMO](https://github.com/insureMO)
|
package/dist/cjs/Card/card.js
CHANGED
|
@@ -140,10 +140,10 @@ var Card = (baseprops) => {
|
|
|
140
140
|
),
|
|
141
141
|
style: styles == null ? void 0 : styles.expandIcon,
|
|
142
142
|
"aria-expanded": mergedExpanded,
|
|
143
|
+
"aria-label": mergedExpanded ? "Collapse content" : "Expand content",
|
|
143
144
|
icon: icon ? icon : /* @__PURE__ */ import_react2.default.createElement(
|
|
144
145
|
import_lucide_react.ChevronUp,
|
|
145
146
|
{
|
|
146
|
-
"aria-label": "expanded",
|
|
147
147
|
strokeWidth: 1.5,
|
|
148
148
|
size: 16,
|
|
149
149
|
style: {
|
|
@@ -187,7 +187,8 @@ var Card = (baseprops) => {
|
|
|
187
187
|
onClick: headerClickable ? handleExpand : void 0,
|
|
188
188
|
onKeyDown: handleKeyDown,
|
|
189
189
|
tabIndex: headerClickable ? 0 : void 0,
|
|
190
|
-
role: headerClickable ? "button" : void 0
|
|
190
|
+
role: headerClickable ? "button" : void 0,
|
|
191
|
+
"aria-expanded": headerClickable ? mergedExpanded : void 0
|
|
191
192
|
},
|
|
192
193
|
iconPosition === "left" ? renderExpandIcon() : null,
|
|
193
194
|
title ? /* @__PURE__ */ import_react2.default.createElement(
|
|
@@ -208,7 +209,10 @@ var Card = (baseprops) => {
|
|
|
208
209
|
style: __spreadProps(__spreadValues({}, styles == null ? void 0 : styles.content), { overflow: "hidden" }),
|
|
209
210
|
animate: mergedExpanded ? { height: "auto" } : { height: 0 },
|
|
210
211
|
exit: { height: 0, display: "none" },
|
|
211
|
-
transition: { duration: animationDuration }
|
|
212
|
+
transition: { duration: animationDuration },
|
|
213
|
+
role: "region",
|
|
214
|
+
"aria-labelledby": title ? headerId : void 0,
|
|
215
|
+
"aria-hidden": !mergedExpanded
|
|
212
216
|
},
|
|
213
217
|
children
|
|
214
218
|
)
|
|
@@ -38,18 +38,23 @@ var import_carousel = require("./carousel");
|
|
|
38
38
|
var CarouselItem = (props) => {
|
|
39
39
|
const { style, className, children, index } = props;
|
|
40
40
|
const { prefixCls, current } = import_react.default.useContext(import_carousel.CarouselCtx);
|
|
41
|
+
const isActive = index === current - 1;
|
|
41
42
|
return /* @__PURE__ */ import_react.default.createElement(
|
|
42
43
|
"div",
|
|
43
44
|
{
|
|
44
45
|
className: (0, import_clsx.default)(
|
|
45
46
|
`${prefixCls}-item`,
|
|
46
47
|
{
|
|
47
|
-
[`${prefixCls}-item-active`]:
|
|
48
|
+
[`${prefixCls}-item-active`]: isActive
|
|
48
49
|
},
|
|
49
50
|
className
|
|
50
51
|
),
|
|
51
52
|
"data-index": index,
|
|
52
|
-
style
|
|
53
|
+
style,
|
|
54
|
+
role: "tabpanel",
|
|
55
|
+
"aria-roledescription": "slide",
|
|
56
|
+
"aria-label": `Slide ${(index != null ? index : 0) + 1}`,
|
|
57
|
+
"aria-hidden": !isActive
|
|
53
58
|
},
|
|
54
59
|
children
|
|
55
60
|
);
|
|
@@ -211,6 +211,9 @@ var Carousel = import_react.default.forwardRef(
|
|
|
211
211
|
{ [`${prefixCls}-arrows-visible`]: showArrow },
|
|
212
212
|
className
|
|
213
213
|
),
|
|
214
|
+
role: "region",
|
|
215
|
+
"aria-roledescription": "carousel",
|
|
216
|
+
"aria-live": autoplay ? "off" : "polite",
|
|
214
217
|
onMouseEnter: handleMouseEnter,
|
|
215
218
|
onMouseLeave: handleMouseLeave
|
|
216
219
|
});
|
|
@@ -233,7 +236,16 @@ var Carousel = import_react.default.forwardRef(
|
|
|
233
236
|
classNames == null ? void 0 : classNames.prev
|
|
234
237
|
),
|
|
235
238
|
style: styles == null ? void 0 : styles.prev,
|
|
236
|
-
onClick: prev
|
|
239
|
+
onClick: prev,
|
|
240
|
+
role: "button",
|
|
241
|
+
"aria-label": "Previous slide",
|
|
242
|
+
tabIndex: 0,
|
|
243
|
+
onKeyDown: (e) => {
|
|
244
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
245
|
+
e.preventDefault();
|
|
246
|
+
prev();
|
|
247
|
+
}
|
|
248
|
+
}
|
|
237
249
|
},
|
|
238
250
|
direction === "vertical" ? /* @__PURE__ */ import_react.default.createElement(import_lucide_react.ChevronUp, null) : /* @__PURE__ */ import_react.default.createElement(import_lucide_react.ChevronLeft, null)
|
|
239
251
|
), /* @__PURE__ */ import_react.default.createElement(
|
|
@@ -247,7 +259,16 @@ var Carousel = import_react.default.forwardRef(
|
|
|
247
259
|
classNames == null ? void 0 : classNames.next
|
|
248
260
|
),
|
|
249
261
|
style: styles == null ? void 0 : styles.next,
|
|
250
|
-
onClick: next
|
|
262
|
+
onClick: next,
|
|
263
|
+
role: "button",
|
|
264
|
+
"aria-label": "Next slide",
|
|
265
|
+
tabIndex: 0,
|
|
266
|
+
onKeyDown: (e) => {
|
|
267
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
268
|
+
e.preventDefault();
|
|
269
|
+
next();
|
|
270
|
+
}
|
|
271
|
+
}
|
|
251
272
|
},
|
|
252
273
|
direction === "vertical" ? /* @__PURE__ */ import_react.default.createElement(import_lucide_react.ChevronDown, null) : /* @__PURE__ */ import_react.default.createElement(import_lucide_react.ChevronRight, null)
|
|
253
274
|
));
|
|
@@ -262,15 +283,21 @@ var Carousel = import_react.default.forwardRef(
|
|
|
262
283
|
[`${prefixCls}-bar-${dotPosition}`],
|
|
263
284
|
classNames == null ? void 0 : classNames.dot
|
|
264
285
|
),
|
|
265
|
-
style: styles == null ? void 0 : styles.dot
|
|
286
|
+
style: styles == null ? void 0 : styles.dot,
|
|
287
|
+
role: "tablist",
|
|
288
|
+
"aria-label": "Slide controls"
|
|
266
289
|
},
|
|
267
290
|
new Array(import_react.default.Children.count(children)).fill(0).map((i, index) => {
|
|
291
|
+
const isActive = current === index + 1 || current === 0 && index === count - 1;
|
|
268
292
|
return /* @__PURE__ */ import_react.default.createElement(
|
|
269
293
|
"li",
|
|
270
294
|
{
|
|
271
295
|
className: (0, import_clsx.default)({
|
|
272
|
-
active:
|
|
296
|
+
active: isActive
|
|
273
297
|
}),
|
|
298
|
+
role: "tab",
|
|
299
|
+
"aria-selected": isActive,
|
|
300
|
+
"aria-label": `Slide ${index + 1}`,
|
|
274
301
|
tabIndex: 0,
|
|
275
302
|
onClick: () => handleIndicator(index + 1, "click"),
|
|
276
303
|
onKeyDown: (e) => {
|
|
@@ -409,41 +409,49 @@ var Cascader = (baseprops) => {
|
|
|
409
409
|
);
|
|
410
410
|
};
|
|
411
411
|
const renderPopup = () => {
|
|
412
|
-
return /* @__PURE__ */ import_react.default.createElement(
|
|
413
|
-
|
|
414
|
-
{
|
|
415
|
-
prefixCls,
|
|
416
|
-
items: filteredList,
|
|
417
|
-
onClick: onSearchItemClick
|
|
418
|
-
}
|
|
419
|
-
) : /* @__PURE__ */ import_react.default.createElement(
|
|
420
|
-
CascaderCtx.Provider,
|
|
412
|
+
return /* @__PURE__ */ import_react.default.createElement(
|
|
413
|
+
"div",
|
|
421
414
|
{
|
|
422
|
-
|
|
415
|
+
className: (0, import_clsx.default)(prefixCls),
|
|
416
|
+
role: "group",
|
|
417
|
+
"aria-label": "Cascader options"
|
|
418
|
+
},
|
|
419
|
+
isFilter ? /* @__PURE__ */ import_react.default.createElement(
|
|
420
|
+
import_search_list.default,
|
|
421
|
+
{
|
|
423
422
|
prefixCls,
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
mergedValue,
|
|
427
|
-
nodeMap,
|
|
428
|
-
flatOptions,
|
|
429
|
-
expandedPath,
|
|
430
|
-
loadData,
|
|
431
|
-
onNodeMouseEnter,
|
|
432
|
-
onItemClick
|
|
423
|
+
items: filteredList,
|
|
424
|
+
onClick: onSearchItemClick
|
|
433
425
|
}
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
{
|
|
426
|
+
) : /* @__PURE__ */ import_react.default.createElement(
|
|
427
|
+
CascaderCtx.Provider,
|
|
428
|
+
{
|
|
429
|
+
value: {
|
|
439
430
|
prefixCls,
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
431
|
+
multiple: !!multiple,
|
|
432
|
+
expandTrigger,
|
|
433
|
+
mergedValue,
|
|
434
|
+
nodeMap,
|
|
435
|
+
flatOptions,
|
|
436
|
+
expandedPath,
|
|
437
|
+
loadData,
|
|
438
|
+
onNodeMouseEnter,
|
|
439
|
+
onItemClick
|
|
443
440
|
}
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
441
|
+
},
|
|
442
|
+
columns.map((data, index) => {
|
|
443
|
+
return /* @__PURE__ */ import_react.default.createElement(
|
|
444
|
+
import_column.default,
|
|
445
|
+
{
|
|
446
|
+
prefixCls,
|
|
447
|
+
data,
|
|
448
|
+
index,
|
|
449
|
+
key: index
|
|
450
|
+
}
|
|
451
|
+
);
|
|
452
|
+
})
|
|
453
|
+
)
|
|
454
|
+
);
|
|
447
455
|
};
|
|
448
456
|
return /* @__PURE__ */ import_react.default.createElement(
|
|
449
457
|
import_Trigger.default,
|
|
@@ -53,14 +53,22 @@ var import_react = __toESM(require("react"));
|
|
|
53
53
|
var import_node = __toESM(require("./node"));
|
|
54
54
|
var Column = (props) => {
|
|
55
55
|
const { prefixCls, data, index } = props;
|
|
56
|
-
return /* @__PURE__ */ import_react.default.createElement(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
)
|
|
64
|
-
|
|
56
|
+
return /* @__PURE__ */ import_react.default.createElement(
|
|
57
|
+
"ul",
|
|
58
|
+
{
|
|
59
|
+
className: `${prefixCls}-menu`,
|
|
60
|
+
role: "listbox",
|
|
61
|
+
"aria-label": `Level ${index + 1} options`
|
|
62
|
+
},
|
|
63
|
+
Array.isArray(data) && data.map((item, idx) => {
|
|
64
|
+
return /* @__PURE__ */ import_react.default.createElement(
|
|
65
|
+
import_node.default,
|
|
66
|
+
__spreadProps(__spreadValues({}, item), {
|
|
67
|
+
index: idx,
|
|
68
|
+
key: `cascader-${index}-${item.uid || idx}`
|
|
69
|
+
})
|
|
70
|
+
);
|
|
71
|
+
})
|
|
72
|
+
);
|
|
65
73
|
};
|
|
66
74
|
var column_default = Column;
|
|
@@ -41,7 +41,7 @@ var import_isEqual = __toESM(require("../utils/isEqual"));
|
|
|
41
41
|
var import_cascader = require("./cascader");
|
|
42
42
|
var import_utils = require("./utils");
|
|
43
43
|
var Node = (props) => {
|
|
44
|
-
var _a;
|
|
44
|
+
var _a, _b, _c;
|
|
45
45
|
const { uid, value, disabled, label, $source, isLeaf, path, level } = props;
|
|
46
46
|
const {
|
|
47
47
|
prefixCls,
|
|
@@ -120,14 +120,26 @@ var Node = (props) => {
|
|
|
120
120
|
{
|
|
121
121
|
className: clsName,
|
|
122
122
|
onMouseEnter: handleMouseEnter,
|
|
123
|
-
onClick: (e) => handleClick(false, e)
|
|
123
|
+
onClick: (e) => handleClick(false, e),
|
|
124
|
+
role: "option",
|
|
125
|
+
"aria-disabled": disabled || void 0,
|
|
126
|
+
"aria-selected": checked || ((_b = expandedPath[level]) == null ? void 0 : _b.key) === uid,
|
|
127
|
+
"aria-expanded": isParent ? ((_c = expandedPath[level]) == null ? void 0 : _c.key) === uid : void 0,
|
|
128
|
+
tabIndex: disabled ? -1 : 0,
|
|
129
|
+
onKeyDown: (e) => {
|
|
130
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
131
|
+
e.preventDefault();
|
|
132
|
+
handleClick(false, e);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
124
135
|
},
|
|
125
136
|
multiple && /* @__PURE__ */ import_react.default.createElement(
|
|
126
137
|
import_Checkbox.default,
|
|
127
138
|
{
|
|
128
139
|
checked: isParent ? checkedAll : checked,
|
|
129
140
|
onChange: isParent ? () => handleClick(true) : void 0,
|
|
130
|
-
indeterminate
|
|
141
|
+
indeterminate,
|
|
142
|
+
"aria-label": `Select ${typeof label === "string" ? label : String(label)}`
|
|
131
143
|
}
|
|
132
144
|
),
|
|
133
145
|
/* @__PURE__ */ import_react.default.createElement(
|
|
@@ -140,7 +152,7 @@ var Node = (props) => {
|
|
|
140
152
|
},
|
|
141
153
|
label
|
|
142
154
|
),
|
|
143
|
-
load === 1 ? /* @__PURE__ */ import_react.default.createElement(import_Spin.default, { size: "small" }) : isLeaf === false ? /* @__PURE__ */ import_react.default.createElement(import_lucide_react.ChevronRight, { size: 20 }) : null
|
|
155
|
+
load === 1 ? /* @__PURE__ */ import_react.default.createElement(import_Spin.default, { size: "small", "aria-label": "Loading" }) : isLeaf === false ? /* @__PURE__ */ import_react.default.createElement(import_lucide_react.ChevronRight, { size: 20, "aria-hidden": "true" }) : null
|
|
144
156
|
);
|
|
145
157
|
};
|
|
146
158
|
var node_default = (0, import_react.memo)(Node);
|
|
@@ -45,19 +45,36 @@ var renderHighlightText = (matches) => {
|
|
|
45
45
|
};
|
|
46
46
|
var SearchList = (props) => {
|
|
47
47
|
const { prefixCls, items, onClick } = props;
|
|
48
|
-
return /* @__PURE__ */ import_react.default.createElement(
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
"
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
48
|
+
return /* @__PURE__ */ import_react.default.createElement(
|
|
49
|
+
"ul",
|
|
50
|
+
{
|
|
51
|
+
className: `${prefixCls}-filter-menu`,
|
|
52
|
+
role: "listbox",
|
|
53
|
+
"aria-label": "Search results"
|
|
54
|
+
},
|
|
55
|
+
items.length ? items.map((item) => {
|
|
56
|
+
var _a, _b;
|
|
57
|
+
const title = ((_a = item.data.$source) == null ? void 0 : _a.title) || item.data.labelPath.join(" / ");
|
|
58
|
+
return /* @__PURE__ */ import_react.default.createElement(
|
|
59
|
+
"li",
|
|
60
|
+
{
|
|
61
|
+
className: `${prefixCls}-filter-menu-item`,
|
|
62
|
+
title: typeof title === "string" ? title : String(title),
|
|
63
|
+
onClick: () => onClick(item.data),
|
|
64
|
+
key: item.data.uid,
|
|
65
|
+
role: "option",
|
|
66
|
+
"aria-disabled": ((_b = item.data.$source) == null ? void 0 : _b.disabled) || void 0,
|
|
67
|
+
tabIndex: 0,
|
|
68
|
+
onKeyDown: (e) => {
|
|
69
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
70
|
+
e.preventDefault();
|
|
71
|
+
onClick(item.data);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
renderHighlightText(item.matches)
|
|
76
|
+
);
|
|
77
|
+
}) : /* @__PURE__ */ import_react.default.createElement("li", { role: "option", "aria-disabled": "true" }, "No result")
|
|
78
|
+
);
|
|
62
79
|
};
|
|
63
80
|
var search_list_default = import_react.default.memo(SearchList);
|
|
@@ -113,11 +113,7 @@ var flattenOptions = (tree, fieldNames, maxDepth = DEFAULT_MAX_DEPTH) => {
|
|
|
113
113
|
});
|
|
114
114
|
if (hasChild(node, children)) {
|
|
115
115
|
seen.add(node);
|
|
116
|
-
dfs(
|
|
117
|
-
node[children],
|
|
118
|
-
path,
|
|
119
|
-
labelPath
|
|
120
|
-
);
|
|
116
|
+
dfs(node[children], path, labelPath);
|
|
121
117
|
seen.delete(node);
|
|
122
118
|
}
|
|
123
119
|
});
|
|
@@ -100,22 +100,31 @@ var CheckboxGroup = (baseprops) => {
|
|
|
100
100
|
setMergedValue(newValue);
|
|
101
101
|
onChange == null ? void 0 : onChange(newValue);
|
|
102
102
|
};
|
|
103
|
-
return /* @__PURE__ */ import_react.default.createElement(
|
|
104
|
-
|
|
103
|
+
return /* @__PURE__ */ import_react.default.createElement(
|
|
104
|
+
"div",
|
|
105
105
|
{
|
|
106
|
-
|
|
106
|
+
className: cls,
|
|
107
|
+
style,
|
|
108
|
+
role: "group",
|
|
109
|
+
"aria-disabled": disabled || void 0
|
|
107
110
|
},
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
},
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
111
|
+
/* @__PURE__ */ import_react.default.createElement(
|
|
112
|
+
CheckboxGroupCtx.Provider,
|
|
113
|
+
{
|
|
114
|
+
value: { name, buttonStyle, onChange: handleChange }
|
|
115
|
+
},
|
|
116
|
+
options == null ? void 0 : options.map((option, index) => /* @__PURE__ */ import_react.default.createElement(
|
|
117
|
+
import_checkbox.default,
|
|
118
|
+
__spreadProps(__spreadValues({
|
|
119
|
+
disabled
|
|
120
|
+
}, option), {
|
|
121
|
+
checked: mergedValue.includes(option.value),
|
|
122
|
+
key: option.value || index
|
|
123
|
+
}),
|
|
124
|
+
option.label
|
|
125
|
+
))
|
|
126
|
+
)
|
|
127
|
+
);
|
|
119
128
|
};
|
|
120
129
|
CheckboxGroup.displayName = "CheckboxGroup";
|
|
121
130
|
var checkbox_group_default = CheckboxGroup;
|
|
@@ -119,7 +119,8 @@ var Checkbox = (baseprops) => {
|
|
|
119
119
|
},
|
|
120
120
|
className
|
|
121
121
|
),
|
|
122
|
-
style
|
|
122
|
+
style,
|
|
123
|
+
"aria-disabled": disabled || void 0
|
|
123
124
|
},
|
|
124
125
|
/* @__PURE__ */ import_react.default.createElement(
|
|
125
126
|
"span",
|
|
@@ -139,14 +140,16 @@ var Checkbox = (baseprops) => {
|
|
|
139
140
|
value,
|
|
140
141
|
disabled,
|
|
141
142
|
checked: mergedChecked,
|
|
142
|
-
onChange: handleChange
|
|
143
|
+
onChange: handleChange,
|
|
144
|
+
"aria-checked": indeterminate ? "mixed" : mergedChecked
|
|
143
145
|
})
|
|
144
146
|
),
|
|
145
147
|
/* @__PURE__ */ import_react.default.createElement(
|
|
146
148
|
"span",
|
|
147
149
|
{
|
|
148
150
|
className: (0, import_clsx.default)(`${prefixCls}-inner`, classNames == null ? void 0 : classNames.inner),
|
|
149
|
-
style: styles == null ? void 0 : styles.inner
|
|
151
|
+
style: styles == null ? void 0 : styles.inner,
|
|
152
|
+
"aria-hidden": "true"
|
|
150
153
|
}
|
|
151
154
|
)
|
|
152
155
|
),
|
|
@@ -41,6 +41,9 @@ var import_collapse = require("./collapse");
|
|
|
41
41
|
var Panel = (props) => {
|
|
42
42
|
const { children, title, id, className, style, extra, classNames, styles } = props;
|
|
43
43
|
const { prefixCls, activeKey, onExpand } = (0, import_react2.useContext)(import_collapse.CollapseContext);
|
|
44
|
+
const panelId = (0, import_react2.useId)();
|
|
45
|
+
const headerId = `${panelId}-header`;
|
|
46
|
+
const contentId = `${panelId}-content`;
|
|
44
47
|
const expanded = activeKey.includes(id);
|
|
45
48
|
const itemClassName = (0, import_clsx.default)(
|
|
46
49
|
`${prefixCls}-item`,
|
|
@@ -55,7 +58,9 @@ var Panel = (props) => {
|
|
|
55
58
|
className: (0, import_clsx.default)(`${prefixCls}-header`, classNames == null ? void 0 : classNames.header),
|
|
56
59
|
role: "button",
|
|
57
60
|
style: styles == null ? void 0 : styles.header,
|
|
61
|
+
id: headerId,
|
|
58
62
|
"aria-expanded": expanded,
|
|
63
|
+
"aria-controls": contentId,
|
|
59
64
|
"aria-disabled": "false",
|
|
60
65
|
tabIndex: 0,
|
|
61
66
|
onClick: () => onExpand(id),
|
|
@@ -72,7 +77,8 @@ var Panel = (props) => {
|
|
|
72
77
|
className: (0, import_clsx.default)(`${prefixCls}-expand-icon`, classNames == null ? void 0 : classNames.expandIcon),
|
|
73
78
|
style: styles == null ? void 0 : styles.expandIcon,
|
|
74
79
|
animate: { rotate: expanded ? 90 : 0 },
|
|
75
|
-
transition: { duration: 0.15 }
|
|
80
|
+
transition: { duration: 0.15 },
|
|
81
|
+
"aria-hidden": "true"
|
|
76
82
|
},
|
|
77
83
|
/* @__PURE__ */ import_react2.default.createElement(import_Button.default, { icon: /* @__PURE__ */ import_react2.default.createElement(import_lucide_react.ChevronRight, { size: 16 }), type: "text" })
|
|
78
84
|
),
|
|
@@ -99,6 +105,9 @@ var Panel = (props) => {
|
|
|
99
105
|
{
|
|
100
106
|
className: (0, import_clsx.default)(`${prefixCls}-content`, classNames == null ? void 0 : classNames.content),
|
|
101
107
|
style: styles == null ? void 0 : styles.content,
|
|
108
|
+
id: contentId,
|
|
109
|
+
role: "region",
|
|
110
|
+
"aria-labelledby": headerId,
|
|
102
111
|
initial: { height: 0, opacity: 0 },
|
|
103
112
|
animate: { height: "auto", opacity: 1 },
|
|
104
113
|
exit: { height: 0, opacity: 0 },
|