@fangxinyan/lumina 0.7.0 → 0.8.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.
Files changed (46) hide show
  1. package/dist/Pagination.cjs +3 -3
  2. package/dist/Pagination.js +2 -2
  3. package/dist/Select.cjs +2 -2
  4. package/dist/Select.d.cts +4 -0
  5. package/dist/Select.d.ts +4 -0
  6. package/dist/Select.js +1 -1
  7. package/dist/Splitter.cjs +2 -2
  8. package/dist/Splitter.d.cts +10 -0
  9. package/dist/Splitter.d.ts +10 -0
  10. package/dist/Splitter.js +1 -1
  11. package/dist/{Table-W4HPZ7MZ.css → Table-KB6EEBDJ.css} +28 -1
  12. package/dist/Table.cjs +4 -4
  13. package/dist/Table.d.cts +7 -1
  14. package/dist/Table.d.ts +7 -1
  15. package/dist/Table.js +3 -3
  16. package/dist/TablePro.cjs +5 -5
  17. package/dist/TablePro.js +4 -4
  18. package/dist/{Tabs-A3IG6UZ6.css → Tabs-FB2AMBWL.css} +14 -0
  19. package/dist/Tabs.cjs +2 -2
  20. package/dist/Tabs.d.cts +6 -0
  21. package/dist/Tabs.d.ts +6 -0
  22. package/dist/Tabs.js +1 -1
  23. package/dist/{chunk-WMZV7PNO.js → chunk-63RSKQID.js} +5 -1
  24. package/dist/{chunk-3EHJ5QI3.js → chunk-DURKCGEM.js} +26 -12
  25. package/dist/{chunk-BJDQVVCG.js → chunk-HQNDVNTQ.js} +1 -1
  26. package/dist/{chunk-RAK6CENJ.js → chunk-IJDM2U3B.js} +52 -35
  27. package/dist/{chunk-LOWTSOWT.js → chunk-J5UEQ3ZQ.js} +32 -5
  28. package/dist/{chunk-U7VEPMCX.cjs → chunk-JBS353O4.cjs} +32 -5
  29. package/dist/{chunk-56I6ZKGU.cjs → chunk-PJFYIXBX.cjs} +2 -2
  30. package/dist/{chunk-ENFLP7SN.cjs → chunk-PNKNZREC.cjs} +15 -5
  31. package/dist/{chunk-XZXY3XCL.cjs → chunk-RR7KWH26.cjs} +52 -35
  32. package/dist/{chunk-D7YSY5RZ.cjs → chunk-SF7BPXDJ.cjs} +26 -12
  33. package/dist/{chunk-JINKQT6H.cjs → chunk-WHBKQZU5.cjs} +6 -2
  34. package/dist/{chunk-EA3NZBCZ.js → chunk-WMISXERU.js} +14 -4
  35. package/dist/index.cjs +13 -13
  36. package/dist/index.d.cts +2 -2
  37. package/dist/index.d.ts +2 -2
  38. package/dist/index.js +7 -7
  39. package/dist/styles.css +42 -1
  40. package/docs/llms/drawer.md +8 -1
  41. package/docs/llms/select.md +19 -0
  42. package/docs/llms/splitter.md +12 -1
  43. package/docs/llms/tablepro.md +23 -1
  44. package/docs/llms/tabs.md +21 -0
  45. package/docs/llms.md +1 -1
  46. package/package.json +1 -1
@@ -33,6 +33,11 @@ var SplitterBase = React.forwardRef(({
33
33
  className = "",
34
34
  handleClassName = "",
35
35
  handleProps,
36
+ firstPaneClassName = "",
37
+ firstPaneStyle,
38
+ secondPaneClassName = "",
39
+ secondPaneStyle,
40
+ handle,
36
41
  secondMin = 24,
37
42
  storageKey,
38
43
  ...rest
@@ -156,6 +161,13 @@ var SplitterBase = React.forwardRef(({
156
161
  }
157
162
  };
158
163
  const firstStyle = direction === "horizontal" ? { width: current } : { height: current };
164
+ const {
165
+ className: nativeHandleClassName = "",
166
+ style: nativeHandleStyle,
167
+ children: nativeHandleChildren,
168
+ ...nativeHandleProps
169
+ } = handleProps ?? {};
170
+ const handleContent = handle !== void 0 ? handle : nativeHandleChildren !== void 0 ? nativeHandleChildren : /* @__PURE__ */ jsx("span", { className: "splitter-handle-grip", "aria-hidden": true });
159
171
  return /* @__PURE__ */ jsxs(
160
172
  "div",
161
173
  {
@@ -167,11 +179,18 @@ var SplitterBase = React.forwardRef(({
167
179
  className: `splitter ${direction} ${dragging ? "dragging" : ""} ${className}`,
168
180
  ...rest,
169
181
  children: [
170
- /* @__PURE__ */ jsx("div", { className: "splitter-panel first", style: firstStyle, children: children[0] }),
171
182
  /* @__PURE__ */ jsx(
172
183
  "div",
173
184
  {
174
- ...handleProps,
185
+ className: ["splitter-panel", "first", firstPaneClassName].filter(Boolean).join(" "),
186
+ style: { ...firstStyle, ...firstPaneStyle },
187
+ children: children[0]
188
+ }
189
+ ),
190
+ /* @__PURE__ */ jsx(
191
+ "div",
192
+ {
193
+ ...nativeHandleProps,
175
194
  role: "separator",
176
195
  tabIndex: 0,
177
196
  "aria-label": handleProps?.["aria-label"] ?? "\u8C03\u6574\u5206\u680F\u5C3A\u5BF8",
@@ -179,16 +198,24 @@ var SplitterBase = React.forwardRef(({
179
198
  "aria-valuenow": current,
180
199
  "aria-valuemin": min,
181
200
  "aria-valuemax": Number.isFinite(max) ? clamp(max) : void 0,
182
- className: `splitter-handle ${handleClassName}`,
201
+ className: ["splitter-handle", handleClassName, nativeHandleClassName].filter(Boolean).join(" "),
202
+ style: nativeHandleStyle,
183
203
  onPointerDown,
184
204
  onKeyDown: (event) => {
185
205
  handleProps?.onKeyDown?.(event);
186
206
  if (!event.defaultPrevented) onKeyDown(event);
187
207
  },
188
- children: /* @__PURE__ */ jsx("span", { className: "splitter-handle-grip", "aria-hidden": true })
208
+ children: handleContent
189
209
  }
190
210
  ),
191
- /* @__PURE__ */ jsx("div", { className: "splitter-panel second", children: children[1] })
211
+ /* @__PURE__ */ jsx(
212
+ "div",
213
+ {
214
+ className: ["splitter-panel", "second", secondPaneClassName].filter(Boolean).join(" "),
215
+ style: secondPaneStyle,
216
+ children: children[1]
217
+ }
218
+ )
192
219
  ]
193
220
  }
194
221
  );
@@ -55,6 +55,11 @@ var SplitterBase = React__namespace.forwardRef(({
55
55
  className = "",
56
56
  handleClassName = "",
57
57
  handleProps,
58
+ firstPaneClassName = "",
59
+ firstPaneStyle,
60
+ secondPaneClassName = "",
61
+ secondPaneStyle,
62
+ handle,
58
63
  secondMin = 24,
59
64
  storageKey,
60
65
  ...rest
@@ -178,6 +183,13 @@ var SplitterBase = React__namespace.forwardRef(({
178
183
  }
179
184
  };
180
185
  const firstStyle = direction === "horizontal" ? { width: current } : { height: current };
186
+ const {
187
+ className: nativeHandleClassName = "",
188
+ style: nativeHandleStyle,
189
+ children: nativeHandleChildren,
190
+ ...nativeHandleProps
191
+ } = handleProps ?? {};
192
+ const handleContent = handle !== void 0 ? handle : nativeHandleChildren !== void 0 ? nativeHandleChildren : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "splitter-handle-grip", "aria-hidden": true });
181
193
  return /* @__PURE__ */ jsxRuntime.jsxs(
182
194
  "div",
183
195
  {
@@ -189,11 +201,18 @@ var SplitterBase = React__namespace.forwardRef(({
189
201
  className: `splitter ${direction} ${dragging ? "dragging" : ""} ${className}`,
190
202
  ...rest,
191
203
  children: [
192
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "splitter-panel first", style: firstStyle, children: children[0] }),
193
204
  /* @__PURE__ */ jsxRuntime.jsx(
194
205
  "div",
195
206
  {
196
- ...handleProps,
207
+ className: ["splitter-panel", "first", firstPaneClassName].filter(Boolean).join(" "),
208
+ style: { ...firstStyle, ...firstPaneStyle },
209
+ children: children[0]
210
+ }
211
+ ),
212
+ /* @__PURE__ */ jsxRuntime.jsx(
213
+ "div",
214
+ {
215
+ ...nativeHandleProps,
197
216
  role: "separator",
198
217
  tabIndex: 0,
199
218
  "aria-label": handleProps?.["aria-label"] ?? "\u8C03\u6574\u5206\u680F\u5C3A\u5BF8",
@@ -201,16 +220,24 @@ var SplitterBase = React__namespace.forwardRef(({
201
220
  "aria-valuenow": current,
202
221
  "aria-valuemin": min,
203
222
  "aria-valuemax": Number.isFinite(max) ? clamp(max) : void 0,
204
- className: `splitter-handle ${handleClassName}`,
223
+ className: ["splitter-handle", handleClassName, nativeHandleClassName].filter(Boolean).join(" "),
224
+ style: nativeHandleStyle,
205
225
  onPointerDown,
206
226
  onKeyDown: (event) => {
207
227
  handleProps?.onKeyDown?.(event);
208
228
  if (!event.defaultPrevented) onKeyDown(event);
209
229
  },
210
- children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "splitter-handle-grip", "aria-hidden": true })
230
+ children: handleContent
211
231
  }
212
232
  ),
213
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "splitter-panel second", children: children[1] })
233
+ /* @__PURE__ */ jsxRuntime.jsx(
234
+ "div",
235
+ {
236
+ className: ["splitter-panel", "second", secondPaneClassName].filter(Boolean).join(" "),
237
+ style: secondPaneStyle,
238
+ children: children[1]
239
+ }
240
+ )
214
241
  ]
215
242
  }
216
243
  );
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkD7YSY5RZ_cjs = require('./chunk-D7YSY5RZ.cjs');
3
+ var chunkSF7BPXDJ_cjs = require('./chunk-SF7BPXDJ.cjs');
4
4
  var chunkSTQDKMS5_cjs = require('./chunk-STQDKMS5.cjs');
5
5
  var chunk2AUXUZ3Z_cjs = require('./chunk-2AUXUZ3Z.cjs');
6
6
  var chunkNRJXZPZR_cjs = require('./chunk-NRJXZPZR.cjs');
@@ -137,7 +137,7 @@ var PaginationBase = React__namespace.forwardRef(({
137
137
  }
138
138
  ),
139
139
  showSizeChanger && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pg-size-changer", children: /* @__PURE__ */ jsxRuntime.jsx(
140
- chunkD7YSY5RZ_cjs.Select,
140
+ chunkSF7BPXDJ_cjs.Select,
141
141
  {
142
142
  value: normalizedPageSize,
143
143
  size: "sm",
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunk56I6ZKGU_cjs = require('./chunk-56I6ZKGU.cjs');
3
+ var chunkPJFYIXBX_cjs = require('./chunk-PJFYIXBX.cjs');
4
4
  var chunkKCDOC3HS_cjs = require('./chunk-KCDOC3HS.cjs');
5
5
  var chunkFJB3243S_cjs = require('./chunk-FJB3243S.cjs');
6
6
  var chunkHSDMJUB6_cjs = require('./chunk-HSDMJUB6.cjs');
@@ -10,7 +10,7 @@ var chunkNRJXZPZR_cjs = require('./chunk-NRJXZPZR.cjs');
10
10
  var chunkEE5KXDRK_cjs = require('./chunk-EE5KXDRK.cjs');
11
11
  require('./tokens-CEJVVA3G.css');
12
12
  require('./shared-NJHRNLRH.css');
13
- require('./Table-W4HPZ7MZ.css');
13
+ require('./Table-KB6EEBDJ.css');
14
14
  var React = require('react');
15
15
  var reactDom = require('react-dom');
16
16
  var jsxRuntime = require('react/jsx-runtime');
@@ -74,6 +74,8 @@ var TableInner = ({
74
74
  tableProps,
75
75
  caption,
76
76
  onRowClick,
77
+ activeRowKey,
78
+ rowClassName,
77
79
  empty = "\u6682\u65E0\u6570\u636E",
78
80
  className = "",
79
81
  style,
@@ -387,8 +389,10 @@ var TableInner = ({
387
389
  );
388
390
  })
389
391
  ] }) }),
390
- /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: rowsToRender.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("tr", { children: /* @__PURE__ */ jsxRuntime.jsx("td", { colSpan: totalColCount, className: "table-empty", children: empty }) }) : rowsToRender.map(({ row, key: k }, i) => {
392
+ /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: rowsToRender.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("tr", { children: /* @__PURE__ */ jsxRuntime.jsx("td", { colSpan: totalColCount, className: "table-empty", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "table-empty-content", children: empty }) }) }) : rowsToRender.map(({ row, key: k }, i) => {
391
393
  const isSel = selectedKeySet.has(k);
394
+ const isActive = activeRowKey !== void 0 && activeRowKey === k;
395
+ const resolvedRowClassName = typeof rowClassName === "function" ? rowClassName(row, i) : rowClassName;
392
396
  const selProps = rowSelection?.getCheckboxProps?.(row);
393
397
  const canExpand = hasExpandable && (expandable?.rowExpandable?.(row) ?? true);
394
398
  const isExpanded = canExpand && expandedKeySet.has(k);
@@ -398,10 +402,16 @@ var TableInner = ({
398
402
  /* @__PURE__ */ jsxRuntime.jsxs(
399
403
  "tr",
400
404
  {
401
- className: `${onRowClick ? "clickable" : ""} ${isSel ? "selected" : ""}`,
405
+ className: [
406
+ onRowClick ? "clickable" : "",
407
+ isSel ? "selected" : "",
408
+ isActive ? "active-row" : "",
409
+ resolvedRowClassName
410
+ ].filter(Boolean).join(" "),
402
411
  onClick: onRowClick ? () => onRowClick(row, i) : void 0,
403
412
  tabIndex: onRowClick ? 0 : void 0,
404
413
  "aria-selected": selectionMode !== "off" ? isSel : void 0,
414
+ "aria-current": isActive ? "true" : void 0,
405
415
  onKeyDown: onRowClick ? (event) => {
406
416
  if (event.currentTarget !== event.target) return;
407
417
  if (event.key === "Enter" || event.key === " ") {
@@ -493,7 +503,7 @@ var TableInner = ({
493
503
  }
494
504
  ),
495
505
  pagEnabled && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "table-pagination", children: /* @__PURE__ */ jsxRuntime.jsx(chunkNRJXZPZR_cjs.InternalComponentThemePart, { components: "Pagination", children: /* @__PURE__ */ jsxRuntime.jsx(
496
- chunk56I6ZKGU_cjs.Pagination,
506
+ chunkPJFYIXBX_cjs.Pagination,
497
507
  {
498
508
  total: totalCount,
499
509
  pageSize: curPageSize,
@@ -3,7 +3,7 @@
3
3
  var chunkNRJXZPZR_cjs = require('./chunk-NRJXZPZR.cjs');
4
4
  require('./tokens-CEJVVA3G.css');
5
5
  require('./shared-NJHRNLRH.css');
6
- require('./Tabs-A3IG6UZ6.css');
6
+ require('./Tabs-FB2AMBWL.css');
7
7
  var React = require('react');
8
8
  var jsxRuntime = require('react/jsx-runtime');
9
9
 
@@ -35,6 +35,9 @@ var TabsBase = React__namespace.forwardRef(({
35
35
  onChange,
36
36
  variant = "line",
37
37
  centered,
38
+ tabBarClassName = "",
39
+ contentClassName = "",
40
+ fill = false,
38
41
  className = "",
39
42
  ...rest
40
43
  }, ref) => {
@@ -64,40 +67,54 @@ var TabsBase = React__namespace.forwardRef(({
64
67
  };
65
68
  const active = items.find((i) => i.key === current);
66
69
  const activeIndex = items.findIndex((item) => item.key === current);
67
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: `tabs ${variant} ${centered ? "centered" : ""} ${className}`, ...rest, children: [
68
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "tabs-nav", role: "tablist", children: items.map((it, index) => /* @__PURE__ */ jsxRuntime.jsx(
69
- "button",
70
- {
71
- ref: (node) => {
72
- if (node) tabRefs.current.set(it.key, node);
73
- else tabRefs.current.delete(it.key);
74
- },
75
- type: "button",
76
- role: "tab",
77
- id: `${baseId}-tab-${index}`,
78
- "aria-selected": current === it.key,
79
- "aria-controls": it.content !== void 0 ? `${baseId}-panel-${index}` : void 0,
80
- tabIndex: current === it.key ? 0 : -1,
81
- disabled: it.disabled,
82
- className: `tab ${current === it.key ? "active" : ""}`,
83
- onClick: () => select(it.key),
84
- onKeyDown: handleTabKeyDown,
85
- children: it.label
86
- },
87
- it.key
88
- )) }),
89
- active?.content !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(
90
- "div",
91
- {
92
- id: `${baseId}-panel-${activeIndex}`,
93
- className: "tabs-content",
94
- role: "tabpanel",
95
- "aria-labelledby": `${baseId}-tab-${activeIndex}`,
96
- tabIndex: 0,
97
- children: active.content
98
- }
99
- )
100
- ] });
70
+ return /* @__PURE__ */ jsxRuntime.jsxs(
71
+ "div",
72
+ {
73
+ ref,
74
+ className: [
75
+ "tabs",
76
+ variant,
77
+ centered ? "centered" : "",
78
+ fill ? "fill" : "",
79
+ className
80
+ ].filter(Boolean).join(" "),
81
+ ...rest,
82
+ children: [
83
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: ["tabs-nav", tabBarClassName].filter(Boolean).join(" "), role: "tablist", children: items.map((it, index) => /* @__PURE__ */ jsxRuntime.jsx(
84
+ "button",
85
+ {
86
+ ref: (node) => {
87
+ if (node) tabRefs.current.set(it.key, node);
88
+ else tabRefs.current.delete(it.key);
89
+ },
90
+ type: "button",
91
+ role: "tab",
92
+ id: `${baseId}-tab-${index}`,
93
+ "aria-selected": current === it.key,
94
+ "aria-controls": it.content !== void 0 ? `${baseId}-panel-${index}` : void 0,
95
+ tabIndex: current === it.key ? 0 : -1,
96
+ disabled: it.disabled,
97
+ className: `tab ${current === it.key ? "active" : ""}`,
98
+ onClick: () => select(it.key),
99
+ onKeyDown: handleTabKeyDown,
100
+ children: it.label
101
+ },
102
+ it.key
103
+ )) }),
104
+ active?.content !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(
105
+ "div",
106
+ {
107
+ id: `${baseId}-panel-${activeIndex}`,
108
+ className: ["tabs-content", contentClassName].filter(Boolean).join(" "),
109
+ role: "tabpanel",
110
+ "aria-labelledby": `${baseId}-tab-${activeIndex}`,
111
+ tabIndex: 0,
112
+ children: active.content
113
+ }
114
+ )
115
+ ]
116
+ }
117
+ );
101
118
  });
102
119
  TabsBase.displayName = "Tabs";
103
120
  var Tabs = chunkNRJXZPZR_cjs.withComponentTheme(TabsBase, "Tabs", "tabs");
@@ -68,6 +68,7 @@ var SelectInner = (props, forwardedRef) => {
68
68
  selectedRender,
69
69
  listHeight = 260,
70
70
  popupStyle,
71
+ getOptionDisabled,
71
72
  open: openProp,
72
73
  defaultOpen,
73
74
  onOpenChange,
@@ -89,7 +90,8 @@ var SelectInner = (props, forwardedRef) => {
89
90
  defaultValue: _defaultValue,
90
91
  onChange: _selectionChange,
91
92
  onClear: _onClear,
92
- maxTagCount: _maxTagCount,
93
+ maxTagCount,
94
+ maxCount,
93
95
  ...rest
94
96
  } = props;
95
97
  const isMulti = multiple === true;
@@ -163,6 +165,15 @@ var SelectInner = (props, forwardedRef) => {
163
165
  const singleValue = singleControlled ? props.value : innerSingle;
164
166
  const controlledMultiValue = props.value;
165
167
  const multiValue = multiControlled ? Array.isArray(controlledMultiValue) ? controlledMultiValue : [] : innerMulti;
168
+ const selectedValues = React__namespace.useMemo(
169
+ () => isMulti ? multiValue : singleValue !== void 0 ? [singleValue] : [],
170
+ [isMulti, multiValue, singleValue]
171
+ );
172
+ const selectionLimit = maxCount !== void 0 && Number.isFinite(maxCount) ? Math.max(0, Math.floor(maxCount)) : void 0;
173
+ const isOptionDisabled = React__namespace.useCallback((option) => {
174
+ const selected = selectedValues.includes(option.value);
175
+ return !!option.disabled || !!getOptionDisabled?.(option, selectedValues) || isMulti && !selected && selectionLimit !== void 0 && selectedValues.length >= selectionLimit;
176
+ }, [getOptionDisabled, isMulti, selectedValues, selectionLimit]);
166
177
  React__namespace.useEffect(() => {
167
178
  if (!open) return;
168
179
  const h = (e) => {
@@ -199,20 +210,20 @@ var SelectInner = (props, forwardedRef) => {
199
210
  }, [options, filteredFlat, query]);
200
211
  React__namespace.useEffect(() => {
201
212
  setActiveIdx((current) => {
202
- if (current >= 0 && current < filteredFlat.length && !filteredFlat[current].disabled) {
213
+ if (current >= 0 && current < filteredFlat.length && !isOptionDisabled(filteredFlat[current])) {
203
214
  return current;
204
215
  }
205
- return filteredFlat.findIndex((option) => !option.disabled);
216
+ return filteredFlat.findIndex((option) => !isOptionDisabled(option));
206
217
  });
207
- }, [filteredFlat]);
218
+ }, [filteredFlat, isOptionDisabled]);
208
219
  const pickSingle = (opt) => {
209
- if (disabled || opt.disabled) return;
220
+ if (disabled || isOptionDisabled(opt)) return;
210
221
  if (!singleControlled) setInnerSingle(opt.value);
211
222
  props.onChange?.(opt.value);
212
223
  setOpen(false);
213
224
  };
214
225
  const toggleMulti = (opt) => {
215
- if (disabled || opt.disabled) return;
226
+ if (disabled || isOptionDisabled(opt)) return;
216
227
  const cur = multiValue ?? [];
217
228
  const next = cur.includes(opt.value) ? cur.filter((v) => v !== opt.value) : [...cur, opt.value];
218
229
  if (!multiControlled) setInnerMulti(next);
@@ -254,7 +265,7 @@ var SelectInner = (props, forwardedRef) => {
254
265
  setActiveIdx((i) => {
255
266
  for (let step = 1; step <= filteredFlat.length; step++) {
256
267
  const next = (Math.max(i, -1) + step) % filteredFlat.length;
257
- if (!filteredFlat[next]?.disabled) return next;
268
+ if (filteredFlat[next] && !isOptionDisabled(filteredFlat[next])) return next;
258
269
  }
259
270
  return i;
260
271
  });
@@ -265,7 +276,7 @@ var SelectInner = (props, forwardedRef) => {
265
276
  setActiveIdx((i) => {
266
277
  for (let step = 1; step <= filteredFlat.length; step++) {
267
278
  const next = (i - step + filteredFlat.length) % filteredFlat.length;
268
- if (!filteredFlat[next]?.disabled) return next;
279
+ if (filteredFlat[next] && !isOptionDisabled(filteredFlat[next])) return next;
269
280
  }
270
281
  return i;
271
282
  });
@@ -274,7 +285,7 @@ var SelectInner = (props, forwardedRef) => {
274
285
  if (e.key === "Enter") {
275
286
  e.preventDefault();
276
287
  const opt = filteredFlat[activeIdx];
277
- if (opt && !opt.disabled) {
288
+ if (opt && !isOptionDisabled(opt)) {
278
289
  if (isMulti) toggleMulti(opt);
279
290
  else pickSingle(opt);
280
291
  }
@@ -284,7 +295,7 @@ var SelectInner = (props, forwardedRef) => {
284
295
  const renderTrigger = () => {
285
296
  if (isMulti) {
286
297
  const selected = (multiValue ?? []).map((v) => allFlat.find((o) => o.value === v)).filter((o) => !!o);
287
- const max = props.maxTagCount;
298
+ const max = maxTagCount;
288
299
  const shown = max != null ? selected.slice(0, max) : selected;
289
300
  const overflow = selected.length - shown.length;
290
301
  if (selected.length === 0) {
@@ -331,6 +342,7 @@ var SelectInner = (props, forwardedRef) => {
331
342
  const idx = renderIdx;
332
343
  const sel = isSelected(o.value);
333
344
  const active = idx === activeIdx;
345
+ const optionDisabled = isOptionDisabled(o);
334
346
  return /* @__PURE__ */ jsxRuntime.jsxs(
335
347
  "button",
336
348
  {
@@ -339,9 +351,11 @@ var SelectInner = (props, forwardedRef) => {
339
351
  role: "option",
340
352
  "aria-selected": sel,
341
353
  "aria-label": getOptionAriaLabel(o),
342
- disabled: o.disabled,
354
+ disabled: optionDisabled,
343
355
  className: `menu-item ${sel ? "active" : ""} ${active ? "highlight" : ""}`,
344
- onMouseEnter: () => setActiveIdx(idx),
356
+ onMouseEnter: () => {
357
+ if (!optionDisabled) setActiveIdx(idx);
358
+ },
345
359
  onClick: () => isMulti ? toggleMulti(o) : pickSingle(o),
346
360
  children: [
347
361
  isMulti && /* @__PURE__ */ jsxRuntime.jsx("span", { className: `menu-check ${sel ? "on" : ""}`, "aria-hidden": true, children: sel && /* @__PURE__ */ jsxRuntime.jsx(chunk2AUXUZ3Z_cjs.Icon, { name: "check", size: 11, stroke: 3 }) }),
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkENFLP7SN_cjs = require('./chunk-ENFLP7SN.cjs');
3
+ var chunkPNKNZREC_cjs = require('./chunk-PNKNZREC.cjs');
4
4
  var chunkNRJXZPZR_cjs = require('./chunk-NRJXZPZR.cjs');
5
5
  require('./tokens-CEJVVA3G.css');
6
6
  require('./shared-NJHRNLRH.css');
@@ -57,6 +57,8 @@ var TableProInner = ({
57
57
  tableProps,
58
58
  caption,
59
59
  onRowClick,
60
+ activeRowKey,
61
+ rowClassName,
60
62
  empty,
61
63
  ...rootProps
62
64
  }, ref) => {
@@ -75,7 +77,7 @@ var TableProInner = ({
75
77
  actions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "table-toolbar-actions", children: actions })
76
78
  ] }),
77
79
  /* @__PURE__ */ jsxRuntime.jsx(chunkNRJXZPZR_cjs.InternalComponentThemePart, { components: "Table", children: /* @__PURE__ */ jsxRuntime.jsx(
78
- chunkENFLP7SN_cjs.Table,
80
+ chunkPNKNZREC_cjs.Table,
79
81
  {
80
82
  columns,
81
83
  data,
@@ -97,6 +99,8 @@ var TableProInner = ({
97
99
  tableProps,
98
100
  caption,
99
101
  onRowClick,
102
+ activeRowKey,
103
+ rowClassName,
100
104
  empty,
101
105
  className: innerTableClassName,
102
106
  style: tableStyle
@@ -1,4 +1,4 @@
1
- import { Pagination } from './chunk-BJDQVVCG.js';
1
+ import { Pagination } from './chunk-HQNDVNTQ.js';
2
2
  import { Checkbox } from './chunk-KATJAJUU.js';
3
3
  import { useFloating } from './chunk-3QXP2ZNP.js';
4
4
  import { useOverlayLayer } from './chunk-2A4GYSN4.js';
@@ -8,7 +8,7 @@ import { withComponentTheme, InternalComponentThemePart, useComponentPortalTheme
8
8
  import { usePortalContainer } from './chunk-ULTDRMGN.js';
9
9
  import './tokens-CEJVVA3G.css';
10
10
  import './shared-NJHRNLRH.css';
11
- import './Table-W4HPZ7MZ.css';
11
+ import './Table-KB6EEBDJ.css';
12
12
  import * as React from 'react';
13
13
  import { createPortal } from 'react-dom';
14
14
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
@@ -52,6 +52,8 @@ var TableInner = ({
52
52
  tableProps,
53
53
  caption,
54
54
  onRowClick,
55
+ activeRowKey,
56
+ rowClassName,
55
57
  empty = "\u6682\u65E0\u6570\u636E",
56
58
  className = "",
57
59
  style,
@@ -365,8 +367,10 @@ var TableInner = ({
365
367
  );
366
368
  })
367
369
  ] }) }),
368
- /* @__PURE__ */ jsx("tbody", { children: rowsToRender.length === 0 ? /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", { colSpan: totalColCount, className: "table-empty", children: empty }) }) : rowsToRender.map(({ row, key: k }, i) => {
370
+ /* @__PURE__ */ jsx("tbody", { children: rowsToRender.length === 0 ? /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", { colSpan: totalColCount, className: "table-empty", children: /* @__PURE__ */ jsx("div", { className: "table-empty-content", children: empty }) }) }) : rowsToRender.map(({ row, key: k }, i) => {
369
371
  const isSel = selectedKeySet.has(k);
372
+ const isActive = activeRowKey !== void 0 && activeRowKey === k;
373
+ const resolvedRowClassName = typeof rowClassName === "function" ? rowClassName(row, i) : rowClassName;
370
374
  const selProps = rowSelection?.getCheckboxProps?.(row);
371
375
  const canExpand = hasExpandable && (expandable?.rowExpandable?.(row) ?? true);
372
376
  const isExpanded = canExpand && expandedKeySet.has(k);
@@ -376,10 +380,16 @@ var TableInner = ({
376
380
  /* @__PURE__ */ jsxs(
377
381
  "tr",
378
382
  {
379
- className: `${onRowClick ? "clickable" : ""} ${isSel ? "selected" : ""}`,
383
+ className: [
384
+ onRowClick ? "clickable" : "",
385
+ isSel ? "selected" : "",
386
+ isActive ? "active-row" : "",
387
+ resolvedRowClassName
388
+ ].filter(Boolean).join(" "),
380
389
  onClick: onRowClick ? () => onRowClick(row, i) : void 0,
381
390
  tabIndex: onRowClick ? 0 : void 0,
382
391
  "aria-selected": selectionMode !== "off" ? isSel : void 0,
392
+ "aria-current": isActive ? "true" : void 0,
383
393
  onKeyDown: onRowClick ? (event) => {
384
394
  if (event.currentTarget !== event.target) return;
385
395
  if (event.key === "Enter" || event.key === " ") {
package/dist/index.cjs CHANGED
@@ -3,15 +3,15 @@
3
3
  var chunkJKUXA3U6_cjs = require('./chunk-JKUXA3U6.cjs');
4
4
  var chunk77HU7JWK_cjs = require('./chunk-77HU7JWK.cjs');
5
5
  var chunk3EMWDDWK_cjs = require('./chunk-3EMWDDWK.cjs');
6
- var chunkJINKQT6H_cjs = require('./chunk-JINKQT6H.cjs');
7
- var chunkENFLP7SN_cjs = require('./chunk-ENFLP7SN.cjs');
8
- var chunkXZXY3XCL_cjs = require('./chunk-XZXY3XCL.cjs');
6
+ var chunkWHBKQZU5_cjs = require('./chunk-WHBKQZU5.cjs');
7
+ var chunkPNKNZREC_cjs = require('./chunk-PNKNZREC.cjs');
8
+ var chunkRR7KWH26_cjs = require('./chunk-RR7KWH26.cjs');
9
9
  require('./chunk-HYJSMFZA.cjs');
10
10
  var chunkPIJV2FHO_cjs = require('./chunk-PIJV2FHO.cjs');
11
11
  var chunkYUJ7Z6N2_cjs = require('./chunk-YUJ7Z6N2.cjs');
12
12
  var chunkLDX6Q6RK_cjs = require('./chunk-LDX6Q6RK.cjs');
13
13
  var chunkZYIE3BH7_cjs = require('./chunk-ZYIE3BH7.cjs');
14
- var chunkU7VEPMCX_cjs = require('./chunk-U7VEPMCX.cjs');
14
+ var chunkJBS353O4_cjs = require('./chunk-JBS353O4.cjs');
15
15
  var chunkU5YYOOLC_cjs = require('./chunk-U5YYOOLC.cjs');
16
16
  var chunkLG62MPMU_cjs = require('./chunk-LG62MPMU.cjs');
17
17
  var chunkG5LCOBOT_cjs = require('./chunk-G5LCOBOT.cjs');
@@ -20,8 +20,8 @@ var chunk434Y2JVW_cjs = require('./chunk-434Y2JVW.cjs');
20
20
  var chunkQYPA77OI_cjs = require('./chunk-QYPA77OI.cjs');
21
21
  var chunkQ565GDVK_cjs = require('./chunk-Q565GDVK.cjs');
22
22
  var chunkMUZQWIMR_cjs = require('./chunk-MUZQWIMR.cjs');
23
- var chunk56I6ZKGU_cjs = require('./chunk-56I6ZKGU.cjs');
24
- var chunkD7YSY5RZ_cjs = require('./chunk-D7YSY5RZ.cjs');
23
+ var chunkPJFYIXBX_cjs = require('./chunk-PJFYIXBX.cjs');
24
+ var chunkSF7BPXDJ_cjs = require('./chunk-SF7BPXDJ.cjs');
25
25
  var chunkGFKWSDD6_cjs = require('./chunk-GFKWSDD6.cjs');
26
26
  var chunkVX6MZO4K_cjs = require('./chunk-VX6MZO4K.cjs');
27
27
  var chunkYAYSXZZZ_cjs = require('./chunk-YAYSXZZZ.cjs');
@@ -58,7 +58,7 @@ require('./chunk-NRJXZPZR.cjs');
58
58
  var chunkEE5KXDRK_cjs = require('./chunk-EE5KXDRK.cjs');
59
59
 
60
60
  // src/index.ts
61
- var VERSION = "0.7.0";
61
+ var VERSION = "0.8.0";
62
62
 
63
63
  Object.defineProperty(exports, "Timeline", {
64
64
  enumerable: true,
@@ -90,15 +90,15 @@ Object.defineProperty(exports, "Typography", {
90
90
  });
91
91
  Object.defineProperty(exports, "TablePro", {
92
92
  enumerable: true,
93
- get: function () { return chunkJINKQT6H_cjs.TablePro; }
93
+ get: function () { return chunkWHBKQZU5_cjs.TablePro; }
94
94
  });
95
95
  Object.defineProperty(exports, "Table", {
96
96
  enumerable: true,
97
- get: function () { return chunkENFLP7SN_cjs.Table; }
97
+ get: function () { return chunkPNKNZREC_cjs.Table; }
98
98
  });
99
99
  Object.defineProperty(exports, "Tabs", {
100
100
  enumerable: true,
101
- get: function () { return chunkXZXY3XCL_cjs.Tabs; }
101
+ get: function () { return chunkRR7KWH26_cjs.Tabs; }
102
102
  });
103
103
  Object.defineProperty(exports, "THEME_PANEL_DEFAULT_PRESET_OPTIONS", {
104
104
  enumerable: true,
@@ -126,7 +126,7 @@ Object.defineProperty(exports, "Slider", {
126
126
  });
127
127
  Object.defineProperty(exports, "Splitter", {
128
128
  enumerable: true,
129
- get: function () { return chunkU7VEPMCX_cjs.Splitter; }
129
+ get: function () { return chunkJBS353O4_cjs.Splitter; }
130
130
  });
131
131
  Object.defineProperty(exports, "StatusBar", {
132
132
  enumerable: true,
@@ -190,11 +190,11 @@ Object.defineProperty(exports, "Modal", {
190
190
  });
191
191
  Object.defineProperty(exports, "Pagination", {
192
192
  enumerable: true,
193
- get: function () { return chunk56I6ZKGU_cjs.Pagination; }
193
+ get: function () { return chunkPJFYIXBX_cjs.Pagination; }
194
194
  });
195
195
  Object.defineProperty(exports, "Select", {
196
196
  enumerable: true,
197
- get: function () { return chunkD7YSY5RZ_cjs.Select; }
197
+ get: function () { return chunkSF7BPXDJ_cjs.Select; }
198
198
  });
199
199
  Object.defineProperty(exports, "Tag", {
200
200
  enumerable: true,
package/dist/index.d.cts CHANGED
@@ -21,7 +21,7 @@ export { MessageApi, MessageConfig, MessageContainer, MessageContainerProps, Mes
21
21
  export { Tooltip, TooltipPlacement, TooltipProps } from './Tooltip.cjs';
22
22
  export { Popover, PopoverPlacement, PopoverProps } from './Popover.cjs';
23
23
  export { Alert, AlertProps, AlertTone } from './Alert.cjs';
24
- export { ExpandableConfig, PaginationConfig, RowKey, RowSelectionConfig, Table, TableChangeAction, TableChangeInfo, TableColumn, TableColumnFilterItem, TablePaginationState, TableProps, TableScrollConfig, TableSorterState, TableVariant } from './Table.cjs';
24
+ export { ExpandableConfig, PaginationConfig, RowKey, RowSelectionConfig, Table, TableChangeAction, TableChangeInfo, TableColumn, TableColumnFilterItem, TablePaginationState, TableProps, TableRowClassName, TableScrollConfig, TableSorterState, TableVariant } from './Table.cjs';
25
25
  export { TablePro, TableProProps } from './TablePro.cjs';
26
26
  export { Pagination, PaginationProps } from './Pagination.cjs';
27
27
  export { DatePicker, DatePickerFormat, DatePickerProps, DatePickerSize } from './DatePicker.cjs';
@@ -54,6 +54,6 @@ import 'react/jsx-runtime';
54
54
  import 'react';
55
55
 
56
56
  /** Package version — bumped by release scripts. */
57
- declare const VERSION = "0.7.0";
57
+ declare const VERSION = "0.8.0";
58
58
 
59
59
  export { VERSION };