@lobehub/ui 5.60.0 → 5.61.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 (81) hide show
  1. package/es/EmojiPicker/AvatarUploader.mjs +1 -1
  2. package/es/Form/components/FormSubmitFooter.mjs +1 -1
  3. package/es/base-ui/Input/style.d.mts +1 -1
  4. package/es/base-ui/Pagination/Pagination.mjs +158 -41
  5. package/es/base-ui/Pagination/Pagination.mjs.map +1 -1
  6. package/es/base-ui/Pagination/helpers.mjs +3 -3
  7. package/es/base-ui/Pagination/helpers.mjs.map +1 -1
  8. package/es/base-ui/Pagination/index.d.mts +2 -2
  9. package/es/base-ui/Pagination/style.mjs +39 -0
  10. package/es/base-ui/Pagination/style.mjs.map +1 -1
  11. package/es/base-ui/Pagination/type.d.mts +42 -4
  12. package/es/base-ui/QRCode/QRCode.mjs +1 -1
  13. package/es/base-ui/Table/Column.d.mts +9 -0
  14. package/es/base-ui/Table/Column.mjs +7 -0
  15. package/es/base-ui/Table/Column.mjs.map +1 -0
  16. package/es/base-ui/Table/ColumnGroup.d.mts +12 -0
  17. package/es/base-ui/Table/ColumnGroup.mjs +7 -0
  18. package/es/base-ui/Table/ColumnGroup.mjs.map +1 -0
  19. package/es/base-ui/Table/ExpandIcon.mjs +33 -0
  20. package/es/base-ui/Table/ExpandIcon.mjs.map +1 -0
  21. package/es/base-ui/Table/FilterDropdown.mjs +284 -0
  22. package/es/base-ui/Table/FilterDropdown.mjs.map +1 -0
  23. package/es/base-ui/Table/LoadingSkeleton.mjs +83 -0
  24. package/es/base-ui/Table/LoadingSkeleton.mjs.map +1 -0
  25. package/es/base-ui/Table/Table.d.mts +21 -3
  26. package/es/base-ui/Table/Table.mjs +444 -97
  27. package/es/base-ui/Table/Table.mjs.map +1 -1
  28. package/es/base-ui/Table/columnUtils.mjs +56 -0
  29. package/es/base-ui/Table/columnUtils.mjs.map +1 -0
  30. package/es/base-ui/Table/index.d.mts +4 -2
  31. package/es/base-ui/Table/selectionUtils.d.mts +9 -0
  32. package/es/base-ui/Table/selectionUtils.mjs +128 -0
  33. package/es/base-ui/Table/selectionUtils.mjs.map +1 -0
  34. package/es/base-ui/Table/semantic.mjs +55 -0
  35. package/es/base-ui/Table/semantic.mjs.map +1 -0
  36. package/es/base-ui/Table/style.mjs +801 -161
  37. package/es/base-ui/Table/style.mjs.map +1 -1
  38. package/es/base-ui/Table/type.d.mts +471 -37
  39. package/es/base-ui/Table/useBreakpoint.mjs +41 -0
  40. package/es/base-ui/Table/useBreakpoint.mjs.map +1 -0
  41. package/es/base-ui/Table/useFilter.mjs +64 -0
  42. package/es/base-ui/Table/useFilter.mjs.map +1 -0
  43. package/es/base-ui/Table/useSelection.mjs +421 -0
  44. package/es/base-ui/Table/useSelection.mjs.map +1 -0
  45. package/es/base-ui/Table/useSorter.mjs +152 -0
  46. package/es/base-ui/Table/useSorter.mjs.map +1 -0
  47. package/es/base-ui/Table/useTableState.mjs +82 -55
  48. package/es/base-ui/Table/useTableState.mjs.map +1 -1
  49. package/es/base-ui/index.d.mts +6 -4
  50. package/es/base-ui/index.mjs +9 -9
  51. package/es/chat/EditableMessageList/EditableMessageList.mjs +1 -1
  52. package/es/chat/MessageInput/MessageInput.mjs +1 -1
  53. package/es/chat/MessageModal/MessageModal.mjs +1 -1
  54. package/es/chat/TokenTag/TokenTag.mjs +1 -1
  55. package/es/i18n/resources/en/index.d.mts +3 -2
  56. package/es/i18n/resources/en/index.mjs +4 -2
  57. package/es/i18n/resources/en/index.mjs.map +1 -1
  58. package/es/i18n/resources/en/table.d.mts +23 -0
  59. package/es/i18n/resources/en/table.mjs +24 -0
  60. package/es/i18n/resources/en/table.mjs.map +1 -0
  61. package/es/i18n/resources/zhCn/index.d.mts +3 -2
  62. package/es/i18n/resources/zhCn/index.mjs +4 -2
  63. package/es/i18n/resources/zhCn/index.mjs.map +1 -1
  64. package/es/i18n/resources/zhCn/table.d.mts +23 -0
  65. package/es/i18n/resources/zhCn/table.mjs +24 -0
  66. package/es/i18n/resources/zhCn/table.mjs.map +1 -0
  67. package/es/i18n/types.d.mts +2 -1
  68. package/es/index.mjs +2 -2
  69. package/package.json +2 -2
  70. package/es/base-ui/Table/FilterMenu.mjs +0 -45
  71. package/es/base-ui/Table/FilterMenu.mjs.map +0 -1
  72. package/es/base-ui/Table/TableBody.mjs +0 -59
  73. package/es/base-ui/Table/TableBody.mjs.map +0 -1
  74. package/es/base-ui/Table/TableHead.mjs +0 -50
  75. package/es/base-ui/Table/TableHead.mjs.map +0 -1
  76. package/es/base-ui/Table/features.mjs +0 -12
  77. package/es/base-ui/Table/features.mjs.map +0 -1
  78. package/es/base-ui/Table/fixedOffsets.mjs +0 -29
  79. package/es/base-ui/Table/fixedOffsets.mjs.map +0 -1
  80. package/es/base-ui/Table/toColumnDefs.mjs +0 -26
  81. package/es/base-ui/Table/toColumnDefs.mjs.map +0 -1
@@ -8,6 +8,7 @@ import image_default from "./image.mjs";
8
8
  import burger_default from "./burger.mjs";
9
9
  import datePicker_default from "./datePicker.mjs";
10
10
  import qrCode_default from "./qrCode.mjs";
11
+ import table_default from "./table.mjs";
11
12
  import chat_default from "./chat.mjs";
12
13
  import messageModal_default from "./messageModal.mjs";
13
14
  import editableMessage_default from "./editableMessage.mjs";
@@ -26,9 +27,10 @@ var en_exports = /* @__PURE__ */ __exportAll({
26
27
  image: () => image_default,
27
28
  messageModal: () => messageModal_default,
28
29
  qrCode: () => qrCode_default,
29
- sideNav: () => sideNav_default
30
+ sideNav: () => sideNav_default,
31
+ table: () => table_default
30
32
  });
31
33
  //#endregion
32
- export { burger_default as burger, chat_default as chat, colorPicker_default as colorPicker, common_default as common, datePicker_default as datePicker, editableMessage_default as editableMessage, emojiPicker_default as emojiPicker, en_exports, form_default as form, hotkey_default as hotkey, image_default as image, messageModal_default as messageModal, qrCode_default as qrCode, sideNav_default as sideNav };
34
+ export { burger_default as burger, chat_default as chat, colorPicker_default as colorPicker, common_default as common, datePicker_default as datePicker, editableMessage_default as editableMessage, emojiPicker_default as emojiPicker, en_exports, form_default as form, hotkey_default as hotkey, image_default as image, messageModal_default as messageModal, qrCode_default as qrCode, sideNav_default as sideNav, table_default as table };
33
35
 
34
36
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/i18n/resources/en/index.ts"],"sourcesContent":["export { default as burger } from './burger';\nexport { default as chat } from './chat';\nexport { default as colorPicker } from './colorPicker';\nexport { default as common } from './common';\nexport { default as datePicker } from './datePicker';\nexport { default as editableMessage } from './editableMessage';\nexport { default as emojiPicker } from './emojiPicker';\nexport { default as form } from './form';\nexport { default as hotkey } from './hotkey';\nexport { default as image } from './image';\nexport { default as messageModal } from './messageModal';\nexport { default as qrCode } from './qrCode';\nexport { default as sideNav } from './sideNav';\n"],"mappings":""}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/i18n/resources/en/index.ts"],"sourcesContent":["export { default as burger } from './burger';\nexport { default as chat } from './chat';\nexport { default as colorPicker } from './colorPicker';\nexport { default as common } from './common';\nexport { default as datePicker } from './datePicker';\nexport { default as editableMessage } from './editableMessage';\nexport { default as emojiPicker } from './emojiPicker';\nexport { default as form } from './form';\nexport { default as hotkey } from './hotkey';\nexport { default as image } from './image';\nexport { default as messageModal } from './messageModal';\nexport { default as qrCode } from './qrCode';\nexport { default as sideNav } from './sideNav';\nexport { default as table } from './table';\n"],"mappings":""}
@@ -0,0 +1,23 @@
1
+ //#region src/i18n/resources/en/table.d.ts
2
+ declare const _default: {
3
+ readonly 'table.cancelSort': "Click to cancel sorting";
4
+ readonly 'table.collapse': "Collapse row";
5
+ readonly 'table.emptyText': "No data";
6
+ readonly 'table.expand': "Expand row";
7
+ readonly 'table.filterCheckAll': "Select all items";
8
+ readonly 'table.filterConfirm': "OK";
9
+ readonly 'table.filterEmptyText': "No filters";
10
+ readonly 'table.filterReset': "Reset";
11
+ readonly 'table.filterSearchPlaceholder': "Search in filters";
12
+ readonly 'table.filterTitle': "Filter menu";
13
+ readonly 'table.selectAll': "Select current page";
14
+ readonly 'table.selectInvert': "Invert current page";
15
+ readonly 'table.selectNone': "Clear all data";
16
+ readonly 'table.selectionAll': "Select all data";
17
+ readonly 'table.sortTitle': "Sort";
18
+ readonly 'table.triggerAsc': "Click to sort ascending";
19
+ readonly 'table.triggerDesc': "Click to sort descending";
20
+ };
21
+ //#endregion
22
+ export { _default as default };
23
+ //# sourceMappingURL=table.d.mts.map
@@ -0,0 +1,24 @@
1
+ //#region src/i18n/resources/en/table.ts
2
+ var table_default = {
3
+ "table.cancelSort": "Click to cancel sorting",
4
+ "table.collapse": "Collapse row",
5
+ "table.emptyText": "No data",
6
+ "table.expand": "Expand row",
7
+ "table.filterCheckAll": "Select all items",
8
+ "table.filterConfirm": "OK",
9
+ "table.filterEmptyText": "No filters",
10
+ "table.filterReset": "Reset",
11
+ "table.filterSearchPlaceholder": "Search in filters",
12
+ "table.filterTitle": "Filter menu",
13
+ "table.selectAll": "Select current page",
14
+ "table.selectInvert": "Invert current page",
15
+ "table.selectNone": "Clear all data",
16
+ "table.selectionAll": "Select all data",
17
+ "table.sortTitle": "Sort",
18
+ "table.triggerAsc": "Click to sort ascending",
19
+ "table.triggerDesc": "Click to sort descending"
20
+ };
21
+ //#endregion
22
+ export { table_default as default };
23
+
24
+ //# sourceMappingURL=table.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.mjs","names":[],"sources":["../../../../src/i18n/resources/en/table.ts"],"sourcesContent":["export default {\n 'table.cancelSort': 'Click to cancel sorting',\n 'table.collapse': 'Collapse row',\n 'table.emptyText': 'No data',\n 'table.expand': 'Expand row',\n 'table.filterCheckAll': 'Select all items',\n 'table.filterConfirm': 'OK',\n 'table.filterEmptyText': 'No filters',\n 'table.filterReset': 'Reset',\n 'table.filterSearchPlaceholder': 'Search in filters',\n 'table.filterTitle': 'Filter menu',\n 'table.selectAll': 'Select current page',\n 'table.selectInvert': 'Invert current page',\n 'table.selectNone': 'Clear all data',\n 'table.selectionAll': 'Select all data',\n 'table.sortTitle': 'Sort',\n 'table.triggerAsc': 'Click to sort ascending',\n 'table.triggerDesc': 'Click to sort descending',\n} as const;\n"],"mappings":";AAAA,IAAA,gBAAe;CACb,oBAAoB;CACpB,kBAAkB;CAClB,mBAAmB;CACnB,gBAAgB;CAChB,wBAAwB;CACxB,uBAAuB;CACvB,yBAAyB;CACzB,qBAAqB;CACrB,iCAAiC;CACjC,qBAAqB;CACrB,mBAAmB;CACnB,sBAAsB;CACtB,oBAAoB;CACpB,sBAAsB;CACtB,mBAAmB;CACnB,oBAAoB;CACpB,qBAAqB;AACvB"}
@@ -11,9 +11,10 @@ import _default$9 from "./image.mjs";
11
11
  import _default$10 from "./messageModal.mjs";
12
12
  import _default$11 from "./qrCode.mjs";
13
13
  import _default$12 from "./sideNav.mjs";
14
+ import _default$13 from "./table.mjs";
14
15
  declare namespace index_d_exports {
15
- export { _default as burger, _default$1 as chat, _default$2 as colorPicker, _default$3 as common, _default$4 as datePicker, _default$5 as editableMessage, _default$6 as emojiPicker, _default$7 as form, _default$8 as hotkey, _default$9 as image, _default$10 as messageModal, _default$11 as qrCode, _default$12 as sideNav };
16
+ export { _default as burger, _default$1 as chat, _default$2 as colorPicker, _default$3 as common, _default$4 as datePicker, _default$5 as editableMessage, _default$6 as emojiPicker, _default$7 as form, _default$8 as hotkey, _default$9 as image, _default$10 as messageModal, _default$11 as qrCode, _default$12 as sideNav, _default$13 as table };
16
17
  }
17
18
  //#endregion
18
- export { _default as burger, _default$1 as chat, _default$2 as colorPicker, _default$3 as common, _default$4 as datePicker, _default$5 as editableMessage, _default$6 as emojiPicker, _default$7 as form, _default$8 as hotkey, _default$9 as image, index_d_exports, _default$10 as messageModal, _default$11 as qrCode, _default$12 as sideNav };
19
+ export { _default as burger, _default$1 as chat, _default$2 as colorPicker, _default$3 as common, _default$4 as datePicker, _default$5 as editableMessage, _default$6 as emojiPicker, _default$7 as form, _default$8 as hotkey, _default$9 as image, index_d_exports, _default$10 as messageModal, _default$11 as qrCode, _default$12 as sideNav, _default$13 as table };
19
20
  //# sourceMappingURL=index.d.mts.map
@@ -12,6 +12,7 @@ import image_default from "./image.mjs";
12
12
  import messageModal_default from "./messageModal.mjs";
13
13
  import qrCode_default from "./qrCode.mjs";
14
14
  import sideNav_default from "./sideNav.mjs";
15
+ import table_default from "./table.mjs";
15
16
  //#region src/i18n/resources/zhCn/index.ts
16
17
  var zhCn_exports = /* @__PURE__ */ __exportAll({
17
18
  burger: () => burger_default,
@@ -26,9 +27,10 @@ var zhCn_exports = /* @__PURE__ */ __exportAll({
26
27
  image: () => image_default,
27
28
  messageModal: () => messageModal_default,
28
29
  qrCode: () => qrCode_default,
29
- sideNav: () => sideNav_default
30
+ sideNav: () => sideNav_default,
31
+ table: () => table_default
30
32
  });
31
33
  //#endregion
32
- export { burger_default as burger, chat_default as chat, colorPicker_default as colorPicker, common_default as common, datePicker_default as datePicker, editableMessage_default as editableMessage, emojiPicker_default as emojiPicker, form_default as form, hotkey_default as hotkey, image_default as image, messageModal_default as messageModal, qrCode_default as qrCode, sideNav_default as sideNav, zhCn_exports };
34
+ export { burger_default as burger, chat_default as chat, colorPicker_default as colorPicker, common_default as common, datePicker_default as datePicker, editableMessage_default as editableMessage, emojiPicker_default as emojiPicker, form_default as form, hotkey_default as hotkey, image_default as image, messageModal_default as messageModal, qrCode_default as qrCode, sideNav_default as sideNav, table_default as table, zhCn_exports };
33
35
 
34
36
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/i18n/resources/zhCn/index.ts"],"sourcesContent":["export { default as burger } from './burger';\nexport { default as chat } from './chat';\nexport { default as colorPicker } from './colorPicker';\nexport { default as common } from './common';\nexport { default as datePicker } from './datePicker';\nexport { default as editableMessage } from './editableMessage';\nexport { default as emojiPicker } from './emojiPicker';\nexport { default as form } from './form';\nexport { default as hotkey } from './hotkey';\nexport { default as image } from './image';\nexport { default as messageModal } from './messageModal';\nexport { default as qrCode } from './qrCode';\nexport { default as sideNav } from './sideNav';\n"],"mappings":""}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/i18n/resources/zhCn/index.ts"],"sourcesContent":["export { default as burger } from './burger';\nexport { default as chat } from './chat';\nexport { default as colorPicker } from './colorPicker';\nexport { default as common } from './common';\nexport { default as datePicker } from './datePicker';\nexport { default as editableMessage } from './editableMessage';\nexport { default as emojiPicker } from './emojiPicker';\nexport { default as form } from './form';\nexport { default as hotkey } from './hotkey';\nexport { default as image } from './image';\nexport { default as messageModal } from './messageModal';\nexport { default as qrCode } from './qrCode';\nexport { default as sideNav } from './sideNav';\nexport { default as table } from './table';\n"],"mappings":""}
@@ -0,0 +1,23 @@
1
+ //#region src/i18n/resources/zhCn/table.d.ts
2
+ declare const _default: {
3
+ readonly 'table.cancelSort': "取消排序";
4
+ readonly 'table.collapse': "关闭行";
5
+ readonly 'table.emptyText': "暂无数据";
6
+ readonly 'table.expand': "展开行";
7
+ readonly 'table.filterCheckAll': "全选";
8
+ readonly 'table.filterConfirm': "确定";
9
+ readonly 'table.filterEmptyText': "无筛选项";
10
+ readonly 'table.filterReset': "重置";
11
+ readonly 'table.filterSearchPlaceholder': "在筛选项中搜索";
12
+ readonly 'table.filterTitle': "筛选";
13
+ readonly 'table.selectAll': "全选当页";
14
+ readonly 'table.selectInvert': "反选当页";
15
+ readonly 'table.selectNone': "清空所有";
16
+ readonly 'table.selectionAll': "全选所有";
17
+ readonly 'table.sortTitle': "排序";
18
+ readonly 'table.triggerAsc': "点击升序";
19
+ readonly 'table.triggerDesc': "点击降序";
20
+ };
21
+ //#endregion
22
+ export { _default as default };
23
+ //# sourceMappingURL=table.d.mts.map
@@ -0,0 +1,24 @@
1
+ //#region src/i18n/resources/zhCn/table.ts
2
+ var table_default = {
3
+ "table.cancelSort": "取消排序",
4
+ "table.collapse": "关闭行",
5
+ "table.emptyText": "暂无数据",
6
+ "table.expand": "展开行",
7
+ "table.filterCheckAll": "全选",
8
+ "table.filterConfirm": "确定",
9
+ "table.filterEmptyText": "无筛选项",
10
+ "table.filterReset": "重置",
11
+ "table.filterSearchPlaceholder": "在筛选项中搜索",
12
+ "table.filterTitle": "筛选",
13
+ "table.selectAll": "全选当页",
14
+ "table.selectInvert": "反选当页",
15
+ "table.selectNone": "清空所有",
16
+ "table.selectionAll": "全选所有",
17
+ "table.sortTitle": "排序",
18
+ "table.triggerAsc": "点击升序",
19
+ "table.triggerDesc": "点击降序"
20
+ };
21
+ //#endregion
22
+ export { table_default as default };
23
+
24
+ //# sourceMappingURL=table.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.mjs","names":[],"sources":["../../../../src/i18n/resources/zhCn/table.ts"],"sourcesContent":["export default {\n 'table.cancelSort': '取消排序',\n 'table.collapse': '关闭行',\n 'table.emptyText': '暂无数据',\n 'table.expand': '展开行',\n 'table.filterCheckAll': '全选',\n 'table.filterConfirm': '确定',\n 'table.filterEmptyText': '无筛选项',\n 'table.filterReset': '重置',\n 'table.filterSearchPlaceholder': '在筛选项中搜索',\n 'table.filterTitle': '筛选',\n 'table.selectAll': '全选当页',\n 'table.selectInvert': '反选当页',\n 'table.selectNone': '清空所有',\n 'table.selectionAll': '全选所有',\n 'table.sortTitle': '排序',\n 'table.triggerAsc': '点击升序',\n 'table.triggerDesc': '点击降序',\n} as const;\n"],"mappings":";AAAA,IAAA,gBAAe;CACb,oBAAoB;CACpB,kBAAkB;CAClB,mBAAmB;CACnB,gBAAgB;CAChB,wBAAwB;CACxB,uBAAuB;CACvB,yBAAyB;CACzB,qBAAqB;CACrB,iCAAiC;CACjC,qBAAqB;CACrB,mBAAmB;CACnB,sBAAsB;CACtB,oBAAoB;CACpB,sBAAsB;CACtB,mBAAmB;CACnB,oBAAoB;CACpB,qBAAqB;AACvB"}
@@ -11,9 +11,10 @@ import _default$9 from "./resources/en/image.mjs";
11
11
  import _default$10 from "./resources/en/messageModal.mjs";
12
12
  import _default$11 from "./resources/en/qrCode.mjs";
13
13
  import _default$12 from "./resources/en/sideNav.mjs";
14
+ import _default$13 from "./resources/en/table.mjs";
14
15
  //#region src/i18n/types.d.ts
15
16
  type Locale = string;
16
- type BuiltinTranslationResources = typeof _default & typeof _default$1 & typeof _default$2 & typeof _default$3 & typeof _default$4 & typeof _default$5 & typeof _default$6 & typeof _default$7 & typeof _default$8 & typeof _default$9 & typeof _default$10 & typeof _default$11 & typeof _default$12;
17
+ type BuiltinTranslationResources = typeof _default & typeof _default$1 & typeof _default$2 & typeof _default$3 & typeof _default$4 & typeof _default$5 & typeof _default$6 & typeof _default$7 & typeof _default$8 & typeof _default$9 & typeof _default$10 & typeof _default$11 & typeof _default$12 & typeof _default$13;
17
18
  type TranslationKey = keyof BuiltinTranslationResources;
18
19
  type TranslationValue = string;
19
20
  /**
package/es/index.mjs CHANGED
@@ -38,6 +38,8 @@ import FluentEmoji from "./FluentEmoji/FluentEmoji.mjs";
38
38
  import AvatarGroup from "./Avatar/AvatarGroup/index.mjs";
39
39
  import Avatar from "./Avatar/index.mjs";
40
40
  import Badge from "./base-ui/Badge/Badge.mjs";
41
+ import { I18nProvider } from "./i18n/context.mjs";
42
+ import { useTranslation } from "./i18n/useTranslation.mjs";
41
43
  import Pagination from "./base-ui/Pagination/Pagination.mjs";
42
44
  import Progress from "./base-ui/Progress/Progress.mjs";
43
45
  import Result from "./base-ui/Result/Result.mjs";
@@ -57,8 +59,6 @@ import { highlighterThemes } from "./Highlighter/const.mjs";
57
59
  import SyntaxHighlighter from "./Highlighter/SyntaxHighlighter/index.mjs";
58
60
  import CodeEditor from "./CodeEditor/CodeEditor.mjs";
59
61
  import Collapse from "./Collapse/Collapse.mjs";
60
- import { I18nProvider } from "./i18n/context.mjs";
61
- import { useTranslation } from "./i18n/useTranslation.mjs";
62
62
  import { PopoverArrowIcon } from "./base-ui/Popover/ArrowIcon.mjs";
63
63
  import { usePopoverPortalContainer } from "./base-ui/Popover/PopoverPortal.mjs";
64
64
  import { PopoverArrow, PopoverBackdrop, PopoverPopup, PopoverPortal, PopoverPositioner, PopoverRoot, PopoverTriggerElement, PopoverViewport } from "./base-ui/Popover/atoms.mjs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobehub/ui",
3
- "version": "5.60.0",
3
+ "version": "5.61.0",
4
4
  "description": "Lobe UI is an open-source UI component library for building AIGC web apps",
5
5
  "keywords": [
6
6
  "lobehub",
@@ -161,12 +161,12 @@
161
161
  "@mdx-js/react": "^3.1.1",
162
162
  "@pierre/diffs": "1.2.12",
163
163
  "@radix-ui/react-slot": "^1.3.0",
164
+ "@rc-component/table": "~1.11.1",
164
165
  "@shikijs/core": "^4.3.1",
165
166
  "@shikijs/stream": "^4.3.1",
166
167
  "@shikijs/transformers": "^4.3.1",
167
168
  "@splinetool/runtime": "1.12.98",
168
169
  "@tanstack/form-core": "^1.33.5",
169
- "@tanstack/react-table": "^9.2.4",
170
170
  "ahooks": "^3.9.7",
171
171
  "antd-style": "^4.1.0",
172
172
  "beautiful-mermaid": "^1.1.3",
@@ -1,45 +0,0 @@
1
- "use client";
2
- import Icon from "../../Icon/Icon.mjs";
3
- import DropdownMenu from "../DropdownMenu/DropdownMenu.mjs";
4
- import { styles } from "./style.mjs";
5
- import { memo } from "react";
6
- import { jsx } from "react/jsx-runtime";
7
- import { cx } from "antd-style";
8
- import { ListFilter } from "lucide-react";
9
- //#region src/base-ui/Table/FilterMenu.tsx
10
- const FilterMenu = memo(({ filters, label, onChange, value }) => {
11
- const items = [
12
- ...filters.map((filter) => ({
13
- checked: value.includes(filter.value),
14
- closeOnClick: false,
15
- key: String(filter.value),
16
- label: filter.text,
17
- onCheckedChange: (checked) => onChange(checked ? [...value, filter.value] : value.filter((item) => item !== filter.value)),
18
- type: "checkbox"
19
- })),
20
- { type: "divider" },
21
- {
22
- disabled: value.length === 0,
23
- key: "__reset",
24
- label: "Reset",
25
- onClick: () => onChange([])
26
- }
27
- ];
28
- return /* @__PURE__ */ jsx(DropdownMenu, {
29
- items,
30
- children: /* @__PURE__ */ jsx("button", {
31
- "aria-label": `Filter ${label}`,
32
- className: cx(styles.filterButton, value.length > 0 && styles.filterActive),
33
- type: "button",
34
- children: /* @__PURE__ */ jsx(Icon, {
35
- icon: ListFilter,
36
- size: 12
37
- })
38
- })
39
- });
40
- });
41
- FilterMenu.displayName = "TableFilterMenu";
42
- //#endregion
43
- export { FilterMenu as default };
44
-
45
- //# sourceMappingURL=FilterMenu.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FilterMenu.mjs","names":[],"sources":["../../../src/base-ui/Table/FilterMenu.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { ListFilter } from 'lucide-react';\nimport { memo, type ReactNode } from 'react';\n\nimport DropdownMenu from '@/base-ui/DropdownMenu';\nimport type { DropdownItem } from '@/base-ui/DropdownMenu/type';\nimport Icon from '@/Icon';\n\nimport { styles } from './style';\nimport type { FilterValue } from './type';\n\ninterface FilterMenuProps {\n filters: { text: ReactNode; value: FilterValue }[];\n label: string;\n onChange: (next: FilterValue[]) => void;\n value: FilterValue[];\n}\n\nconst FilterMenu = memo<FilterMenuProps>(({ filters, label, onChange, value }) => {\n const items: DropdownItem[] = [\n ...filters.map((filter) => ({\n checked: value.includes(filter.value),\n closeOnClick: false,\n key: String(filter.value),\n label: filter.text,\n onCheckedChange: (checked: boolean) =>\n onChange(\n checked ? [...value, filter.value] : value.filter((item) => item !== filter.value),\n ),\n type: 'checkbox' as const,\n })),\n { type: 'divider' as const },\n { disabled: value.length === 0, key: '__reset', label: 'Reset', onClick: () => onChange([]) },\n ];\n\n return (\n <DropdownMenu items={items}>\n <button\n aria-label={`Filter ${label}`}\n className={cx(styles.filterButton, value.length > 0 && styles.filterActive)}\n type=\"button\"\n >\n <Icon icon={ListFilter} size={12} />\n </button>\n </DropdownMenu>\n );\n});\n\nFilterMenu.displayName = 'TableFilterMenu';\n\nexport default FilterMenu;\n"],"mappings":";;;;;;;;;AAoBA,MAAM,aAAa,MAAuB,EAAE,SAAS,OAAO,UAAU,YAAY;CAChF,MAAM,QAAwB;EAC5B,GAAG,QAAQ,KAAK,YAAY;GAC1B,SAAS,MAAM,SAAS,OAAO,KAAK;GACpC,cAAc;GACd,KAAK,OAAO,OAAO,KAAK;GACxB,OAAO,OAAO;GACd,kBAAkB,YAChB,SACE,UAAU,CAAC,GAAG,OAAO,OAAO,KAAK,IAAI,MAAM,QAAQ,SAAS,SAAS,OAAO,KAAK,CACnF;GACF,MAAM;EACR,EAAE;EACF,EAAE,MAAM,UAAmB;EAC3B;GAAE,UAAU,MAAM,WAAW;GAAG,KAAK;GAAW,OAAO;GAAS,eAAe,SAAS,CAAC,CAAC;EAAE;CAC9F;CAEA,OACE,oBAAC,cAAD;EAAqB;EACnB,UAAA,oBAAC,UAAD;GACE,cAAY,UAAU;GACtB,WAAW,GAAG,OAAO,cAAc,MAAM,SAAS,KAAK,OAAO,YAAY;GAC1E,MAAK;GAEL,UAAA,oBAAC,MAAD;IAAM,MAAM;IAAY,MAAM;GAAK,CAAA;EAC7B,CAAA;CACI,CAAA;AAElB,CAAC;AAED,WAAW,cAAc"}
@@ -1,59 +0,0 @@
1
- "use client";
2
- import Spin from "../Spin/Spin.mjs";
3
- import Empty from "../../Empty/Empty.mjs";
4
- import { styles } from "./style.mjs";
5
- import { getCellValue } from "./toColumnDefs.mjs";
6
- import { createElement } from "react";
7
- import { jsx } from "react/jsx-runtime";
8
- import { cx } from "antd-style";
9
- //#region src/base-ui/Table/TableBody.tsx
10
- const TableBody = ({ classNames, columnIds, columns, emptyText, fixedOffsets, loading, onRow, rowClassName, rows, styles: customStyles }) => {
11
- if (rows.length === 0) return /* @__PURE__ */ jsx("tbody", {
12
- className: classNames?.body,
13
- style: customStyles?.body,
14
- children: /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", {
15
- className: styles.empty,
16
- colSpan: columns.length,
17
- children: loading ? /* @__PURE__ */ jsx(Spin, {}) : emptyText ?? /* @__PURE__ */ jsx(Empty, { description: "No data" })
18
- }) })
19
- });
20
- return /* @__PURE__ */ jsx("tbody", {
21
- className: classNames?.body,
22
- style: customStyles?.body,
23
- children: rows.map((row, rowIndex) => {
24
- const record = row.original;
25
- const rowProps = onRow?.(record, rowIndex) ?? {};
26
- const extraClassName = typeof rowClassName === "function" ? rowClassName(record, rowIndex) : rowClassName;
27
- return /* @__PURE__ */ createElement("tr", {
28
- ...rowProps,
29
- key: row.id,
30
- style: {
31
- ...customStyles?.row,
32
- ...rowProps.style
33
- },
34
- className: cx(styles.row, rowProps.onClick && styles.clickable, extraClassName, classNames?.row, rowProps.className)
35
- }, columns.map((column, columnIndex) => {
36
- const value = getCellValue(record, column);
37
- const cellProps = column.onCell?.(record, rowIndex) ?? {};
38
- const content = column.render ? column.render(value, record, rowIndex) : value;
39
- return /* @__PURE__ */ createElement("td", {
40
- ...cellProps,
41
- key: columnIds[columnIndex],
42
- title: column.ellipsis && typeof content === "string" ? content : cellProps.title,
43
- className: cx(styles.cell, column.ellipsis && styles.ellipsis, column.fixed && styles.fixed, column.className, classNames?.cell, cellProps.className),
44
- style: {
45
- textAlign: column.align,
46
- width: column.width,
47
- ...fixedOffsets[columnIndex],
48
- ...customStyles?.cell,
49
- ...cellProps.style
50
- }
51
- }, content);
52
- }));
53
- })
54
- });
55
- };
56
- //#endregion
57
- export { TableBody as default };
58
-
59
- //# sourceMappingURL=TableBody.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TableBody.mjs","names":[],"sources":["../../../src/base-ui/Table/TableBody.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport type { CSSProperties, Key, ReactNode } from 'react';\n\nimport Spin from '@/base-ui/Spin';\nimport Empty from '@/Empty';\n\nimport { styles } from './style';\nimport { getCellValue } from './toColumnDefs';\nimport type { TableColumn, TableProps } from './type';\n\ninterface TableBodyProps<T> {\n classNames?: TableProps<T>['classNames'];\n columnIds: string[];\n columns: TableColumn<T>[];\n emptyText?: ReactNode;\n fixedOffsets: (CSSProperties | undefined)[];\n loading: boolean;\n onRow?: TableProps<T>['onRow'];\n rowClassName?: TableProps<T>['rowClassName'];\n rows: { id: Key; original: T }[];\n styles?: TableProps<T>['styles'];\n}\n\nconst TableBody = <T,>({\n classNames,\n columnIds,\n columns,\n emptyText,\n fixedOffsets,\n loading,\n onRow,\n rowClassName,\n rows,\n styles: customStyles,\n}: TableBodyProps<T>) => {\n if (rows.length === 0) {\n return (\n <tbody className={classNames?.body} style={customStyles?.body}>\n <tr>\n <td className={styles.empty} colSpan={columns.length}>\n {loading ? <Spin /> : (emptyText ?? <Empty description=\"No data\" />)}\n </td>\n </tr>\n </tbody>\n );\n }\n\n return (\n <tbody className={classNames?.body} style={customStyles?.body}>\n {rows.map((row, rowIndex) => {\n const record = row.original;\n const rowProps = onRow?.(record, rowIndex) ?? {};\n const extraClassName =\n typeof rowClassName === 'function' ? rowClassName(record, rowIndex) : rowClassName;\n\n return (\n <tr\n {...rowProps}\n key={row.id}\n style={{ ...customStyles?.row, ...rowProps.style }}\n className={cx(\n styles.row,\n rowProps.onClick && styles.clickable,\n extraClassName,\n classNames?.row,\n rowProps.className,\n )}\n >\n {columns.map((column, columnIndex) => {\n const value = getCellValue(record, column);\n const cellProps = column.onCell?.(record, rowIndex) ?? {};\n const content = column.render\n ? column.render(value, record, rowIndex)\n : (value as ReactNode);\n\n return (\n <td\n {...cellProps}\n key={columnIds[columnIndex]}\n title={column.ellipsis && typeof content === 'string' ? content : cellProps.title}\n className={cx(\n styles.cell,\n column.ellipsis && styles.ellipsis,\n column.fixed && styles.fixed,\n column.className,\n classNames?.cell,\n cellProps.className,\n )}\n style={{\n textAlign: column.align,\n width: column.width,\n ...fixedOffsets[columnIndex],\n ...customStyles?.cell,\n ...cellProps.style,\n }}\n >\n {content}\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n );\n};\n\nexport default TableBody;\n"],"mappings":";;;;;;;;;AAyBA,MAAM,aAAiB,EACrB,YACA,WACA,SACA,WACA,cACA,SACA,OACA,cACA,MACA,QAAQ,mBACe;CACvB,IAAI,KAAK,WAAW,GAClB,OACE,oBAAC,SAAD;EAAO,WAAW,YAAY;EAAM,OAAO,cAAc;EACvD,UAAA,oBAAC,MAAD,EAAA,UACE,oBAAC,MAAD;GAAI,WAAW,OAAO;GAAO,SAAS,QAAQ;GAC3C,UAAA,UAAU,oBAAC,MAAD,CAAO,CAAA,IAAK,aAAa,oBAAC,OAAD,EAAO,aAAY,UAAW,CAAA;EAChE,CAAA,EACF,CAAA;CACC,CAAA;CAIX,OACE,oBAAC,SAAD;EAAO,WAAW,YAAY;EAAM,OAAO,cAAc;EACtD,UAAA,KAAK,KAAK,KAAK,aAAa;GAC3B,MAAM,SAAS,IAAI;GACnB,MAAM,WAAW,QAAQ,QAAQ,QAAQ,KAAK,CAAC;GAC/C,MAAM,iBACJ,OAAO,iBAAiB,aAAa,aAAa,QAAQ,QAAQ,IAAI;GAExE,OACE,8BAAC,MAAD;IACE,GAAI;IACJ,KAAK,IAAI;IACT,OAAO;KAAE,GAAG,cAAc;KAAK,GAAG,SAAS;IAAM;IACjD,WAAW,GACT,OAAO,KACP,SAAS,WAAW,OAAO,WAC3B,gBACA,YAAY,KACZ,SAAS,SACX;GAkCE,GAhCD,QAAQ,KAAK,QAAQ,gBAAgB;IACpC,MAAM,QAAQ,aAAa,QAAQ,MAAM;IACzC,MAAM,YAAY,OAAO,SAAS,QAAQ,QAAQ,KAAK,CAAC;IACxD,MAAM,UAAU,OAAO,SACnB,OAAO,OAAO,OAAO,QAAQ,QAAQ,IACpC;IAEL,OACE,8BAAC,MAAD;KACE,GAAI;KACJ,KAAK,UAAU;KACf,OAAO,OAAO,YAAY,OAAO,YAAY,WAAW,UAAU,UAAU;KAC5E,WAAW,GACT,OAAO,MACP,OAAO,YAAY,OAAO,UAC1B,OAAO,SAAS,OAAO,OACvB,OAAO,WACP,YAAY,MACZ,UAAU,SACZ;KACA,OAAO;MACL,WAAW,OAAO;MAClB,OAAO,OAAO;MACd,GAAG,aAAa;MAChB,GAAG,cAAc;MACjB,GAAG,UAAU;KACf;IAGE,GADD,OACC;GAER,CAAC,CACC;EAER,CAAC;CACI,CAAA;AAEX"}
@@ -1,50 +0,0 @@
1
- "use client";
2
- import Icon from "../../Icon/Icon.mjs";
3
- import { styles } from "./style.mjs";
4
- import { jsx, jsxs } from "react/jsx-runtime";
5
- import { cx } from "antd-style";
6
- import { ChevronDown, ChevronUp } from "lucide-react";
7
- //#region src/base-ui/Table/TableHead.tsx
8
- const ariaSortOf = (sorted) => sorted === "asc" ? "ascending" : sorted === "desc" ? "descending" : "none";
9
- const TableHead = ({ classNames, columnIds, columns, fixedOffsets, getColumn, renderFilter, styles: customStyles }) => /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsx("tr", { children: columns.map((column, index) => {
10
- const id = columnIds[index];
11
- const tableColumn = getColumn(id);
12
- const sorted = column.sorter ? tableColumn?.getIsSorted() ?? false : false;
13
- return /* @__PURE__ */ jsx("th", {
14
- "aria-sort": column.sorter ? ariaSortOf(sorted) : void 0,
15
- scope: "col",
16
- className: cx(styles.header, column.fixed && styles.fixed, column.className, classNames?.header),
17
- style: {
18
- textAlign: column.align,
19
- width: column.width,
20
- ...fixedOffsets[index],
21
- ...customStyles?.header,
22
- ...column.fixed ? { zIndex: 3 } : void 0
23
- },
24
- children: /* @__PURE__ */ jsxs("span", {
25
- className: styles.headerInner,
26
- children: [column.sorter ? /* @__PURE__ */ jsxs("button", {
27
- className: styles.sortButton,
28
- type: "button",
29
- onClick: tableColumn?.getToggleSortingHandler(),
30
- children: [column.title, /* @__PURE__ */ jsxs("span", {
31
- "aria-hidden": "true",
32
- className: styles.sortCaret,
33
- children: [/* @__PURE__ */ jsx(Icon, {
34
- "data-active": sorted === "asc",
35
- icon: ChevronUp,
36
- size: 10
37
- }), /* @__PURE__ */ jsx(Icon, {
38
- "data-active": sorted === "desc",
39
- icon: ChevronDown,
40
- size: 10
41
- })]
42
- })]
43
- }) : column.title, column.filters?.length ? renderFilter?.(column, id) : null]
44
- })
45
- }, id);
46
- }) }) });
47
- //#endregion
48
- export { TableHead as default };
49
-
50
- //# sourceMappingURL=TableHead.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TableHead.mjs","names":[],"sources":["../../../src/base-ui/Table/TableHead.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { ChevronDown, ChevronUp } from 'lucide-react';\nimport type { CSSProperties, ReactNode } from 'react';\n\nimport Icon from '@/Icon';\n\nimport { styles } from './style';\nimport type { TableColumn, TableProps } from './type';\n\ntype SortState = false | 'asc' | 'desc';\n\ninterface HeadColumn {\n getIsSorted: () => SortState;\n getToggleSortingHandler: () => undefined | ((event: unknown) => void);\n}\n\ninterface TableHeadProps<T> {\n classNames?: TableProps<T>['classNames'];\n columnIds: string[];\n columns: TableColumn<T>[];\n fixedOffsets: (CSSProperties | undefined)[];\n getColumn: (id: string) => HeadColumn | undefined;\n renderFilter?: (column: TableColumn<T>, id: string) => ReactNode;\n styles?: TableProps<T>['styles'];\n}\n\nconst ariaSortOf = (sorted: SortState) =>\n sorted === 'asc' ? 'ascending' : sorted === 'desc' ? 'descending' : 'none';\n\nconst TableHead = <T,>({\n classNames,\n columnIds,\n columns,\n fixedOffsets,\n getColumn,\n renderFilter,\n styles: customStyles,\n}: TableHeadProps<T>) => (\n <thead>\n <tr>\n {columns.map((column, index) => {\n const id = columnIds[index];\n const tableColumn = getColumn(id);\n const sorted: SortState = column.sorter ? (tableColumn?.getIsSorted() ?? false) : false;\n\n return (\n <th\n aria-sort={column.sorter ? ariaSortOf(sorted) : undefined}\n key={id}\n scope=\"col\"\n className={cx(\n styles.header,\n column.fixed && styles.fixed,\n column.className,\n classNames?.header,\n )}\n style={{\n textAlign: column.align,\n width: column.width,\n ...fixedOffsets[index],\n ...customStyles?.header,\n ...(column.fixed ? { zIndex: 3 } : undefined),\n }}\n >\n <span className={styles.headerInner}>\n {column.sorter ? (\n <button\n className={styles.sortButton}\n type=\"button\"\n onClick={tableColumn?.getToggleSortingHandler()}\n >\n {column.title}\n <span aria-hidden=\"true\" className={styles.sortCaret}>\n <Icon data-active={sorted === 'asc'} icon={ChevronUp} size={10} />\n <Icon data-active={sorted === 'desc'} icon={ChevronDown} size={10} />\n </span>\n </button>\n ) : (\n column.title\n )}\n {column.filters?.length ? renderFilter?.(column, id) : null}\n </span>\n </th>\n );\n })}\n </tr>\n </thead>\n);\n\nexport default TableHead;\n"],"mappings":";;;;;;;AA4BA,MAAM,cAAc,WAClB,WAAW,QAAQ,cAAc,WAAW,SAAS,eAAe;AAEtE,MAAM,aAAiB,EACrB,YACA,WACA,SACA,cACA,WACA,cACA,QAAQ,mBAER,oBAAC,SAAD,EAAA,UACE,oBAAC,MAAD,EAAA,UACG,QAAQ,KAAK,QAAQ,UAAU;CAC9B,MAAM,KAAK,UAAU;CACrB,MAAM,cAAc,UAAU,EAAE;CAChC,MAAM,SAAoB,OAAO,SAAU,aAAa,YAAY,KAAK,QAAS;CAElF,OACE,oBAAC,MAAD;EACE,aAAW,OAAO,SAAS,WAAW,MAAM,IAAI,KAAA;EAEhD,OAAM;EACN,WAAW,GACT,OAAO,QACP,OAAO,SAAS,OAAO,OACvB,OAAO,WACP,YAAY,MACd;EACA,OAAO;GACL,WAAW,OAAO;GAClB,OAAO,OAAO;GACd,GAAG,aAAa;GAChB,GAAG,cAAc;GACjB,GAAI,OAAO,QAAQ,EAAE,QAAQ,EAAE,IAAI,KAAA;EACrC;EAEA,UAAA,qBAAC,QAAD;GAAM,WAAW,OAAO;GAAxB,UAAA,CACG,OAAO,SACN,qBAAC,UAAD;IACE,WAAW,OAAO;IAClB,MAAK;IACL,SAAS,aAAa,wBAAwB;IAHhD,UAAA,CAKG,OAAO,OACR,qBAAC,QAAD;KAAM,eAAY;KAAO,WAAW,OAAO;KAA3C,UAAA,CACE,oBAAC,MAAD;MAAM,eAAa,WAAW;MAAO,MAAM;MAAW,MAAM;KAAK,CAAA,GACjE,oBAAC,MAAD;MAAM,eAAa,WAAW;MAAQ,MAAM;MAAa,MAAM;KAAK,CAAA,CAChE;IACA,CAAA,CAAA;GAER,CAAA,IAAA,OAAO,OAER,OAAO,SAAS,SAAS,eAAe,QAAQ,EAAE,IAAI,IACnD;;CACJ,GAlCG,EAkCH;AAER,CAAC,EACC,CAAA,EACC,CAAA"}
@@ -1,12 +0,0 @@
1
- import { columnFilteringFeature, createFilteredRowModel, createSortedRowModel, rowSortingFeature, tableFeatures } from "@tanstack/react-table";
2
- //#region src/base-ui/Table/features.ts
3
- const tableFeatureSet = tableFeatures({
4
- columnFilteringFeature,
5
- filteredRowModel: createFilteredRowModel(),
6
- rowSortingFeature,
7
- sortedRowModel: createSortedRowModel()
8
- });
9
- //#endregion
10
- export { tableFeatureSet };
11
-
12
- //# sourceMappingURL=features.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"features.mjs","names":[],"sources":["../../../src/base-ui/Table/features.ts"],"sourcesContent":["import {\n columnFilteringFeature,\n createFilteredRowModel,\n createSortedRowModel,\n rowSortingFeature,\n tableFeatures,\n} from '@tanstack/react-table';\n\nexport const tableFeatureSet = tableFeatures({\n columnFilteringFeature,\n filteredRowModel: createFilteredRowModel(),\n rowSortingFeature,\n sortedRowModel: createSortedRowModel(),\n});\n\nexport type TableFeatureSet = typeof tableFeatureSet;\n"],"mappings":";;AAQA,MAAa,kBAAkB,cAAc;CAC3C;CACA,kBAAkB,uBAAuB;CACzC;CACA,gBAAgB,qBAAqB;AACvC,CAAC"}
@@ -1,29 +0,0 @@
1
- //#region src/base-ui/Table/fixedOffsets.ts
2
- const widthOf = (column) => typeof column.width === "number" ? column.width : 0;
3
- const getFixedOffsets = (columns) => {
4
- const offsets = columns.map(() => void 0);
5
- let left = 0;
6
- columns.forEach((column, index) => {
7
- if (column.fixed !== "left") return;
8
- offsets[index] = {
9
- left,
10
- position: "sticky"
11
- };
12
- left += widthOf(column);
13
- });
14
- let right = 0;
15
- for (let index = columns.length - 1; index >= 0; index--) {
16
- const column = columns[index];
17
- if (column.fixed !== "right") continue;
18
- offsets[index] = {
19
- position: "sticky",
20
- right
21
- };
22
- right += widthOf(column);
23
- }
24
- return offsets;
25
- };
26
- //#endregion
27
- export { getFixedOffsets };
28
-
29
- //# sourceMappingURL=fixedOffsets.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fixedOffsets.mjs","names":[],"sources":["../../../src/base-ui/Table/fixedOffsets.ts"],"sourcesContent":["import type { CSSProperties } from 'react';\n\nimport type { TableColumn } from './type';\n\nconst widthOf = (column: TableColumn<any>) => (typeof column.width === 'number' ? column.width : 0);\n\nexport const getFixedOffsets = (columns: TableColumn<any>[]): (CSSProperties | undefined)[] => {\n const offsets: (CSSProperties | undefined)[] = columns.map(() => undefined);\n\n let left = 0;\n columns.forEach((column, index) => {\n if (column.fixed !== 'left') return;\n offsets[index] = { left, position: 'sticky' };\n left += widthOf(column);\n });\n\n let right = 0;\n for (let index = columns.length - 1; index >= 0; index--) {\n const column = columns[index];\n if (column.fixed !== 'right') continue;\n offsets[index] = { position: 'sticky', right };\n right += widthOf(column);\n }\n\n return offsets;\n};\n"],"mappings":";AAIA,MAAM,WAAW,WAA8B,OAAO,OAAO,UAAU,WAAW,OAAO,QAAQ;AAEjG,MAAa,mBAAmB,YAA+D;CAC7F,MAAM,UAAyC,QAAQ,UAAU,KAAA,CAAS;CAE1E,IAAI,OAAO;CACX,QAAQ,SAAS,QAAQ,UAAU;EACjC,IAAI,OAAO,UAAU,QAAQ;EAC7B,QAAQ,SAAS;GAAE;GAAM,UAAU;EAAS;EAC5C,QAAQ,QAAQ,MAAM;CACxB,CAAC;CAED,IAAI,QAAQ;CACZ,KAAK,IAAI,QAAQ,QAAQ,SAAS,GAAG,SAAS,GAAG,SAAS;EACxD,MAAM,SAAS,QAAQ;EACvB,IAAI,OAAO,UAAU,SAAS;EAC9B,QAAQ,SAAS;GAAE,UAAU;GAAU;EAAM;EAC7C,SAAS,QAAQ,MAAM;CACzB;CAEA,OAAO;AACT"}
@@ -1,26 +0,0 @@
1
- //#region src/base-ui/Table/toColumnDefs.ts
2
- const getColumnId = (column, index) => String(column.key ?? column.dataIndex ?? `__column_${index}`);
3
- const getCellValue = (record, column) => column.dataIndex ? record[column.dataIndex] : void 0;
4
- const isEmptyFilter = (value) => !Array.isArray(value) || value.length === 0;
5
- const toColumnDefs = (columns) => columns.map((column, index) => {
6
- if ((Boolean(column.sorter) || Boolean(column.filters?.length)) && column.key == null && column.dataIndex == null) throw new Error("[Table] sortable or filterable columns need a `key` or `dataIndex`");
7
- const comparator = typeof column.sorter === "function" ? column.sorter : void 0;
8
- const { onFilter } = column;
9
- const filterFn = onFilter ? Object.assign((row, _columnId, filterValue) => filterValue.some((value) => onFilter(value, row.original)), { autoRemove: isEmptyFilter }) : void 0;
10
- return {
11
- accessorFn: (record) => getCellValue(record, column),
12
- enableColumnFilter: Boolean(column.filters?.length),
13
- enableSorting: Boolean(column.sorter),
14
- filterFn,
15
- id: getColumnId(column, index),
16
- sortDescFirst: column.sortDirections?.[0] === "descend",
17
- ...comparator && {
18
- sortFn: (rowA, rowB) => comparator(rowA.original, rowB.original),
19
- sortUndefined: false
20
- }
21
- };
22
- });
23
- //#endregion
24
- export { getCellValue, getColumnId, toColumnDefs };
25
-
26
- //# sourceMappingURL=toColumnDefs.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toColumnDefs.mjs","names":[],"sources":["../../../src/base-ui/Table/toColumnDefs.ts"],"sourcesContent":["import type { ColumnDef, RowData } from '@tanstack/react-table';\n\nimport type { TableFeatureSet } from './features';\nimport type { FilterValue, TableColumn } from './type';\n\nexport const getColumnId = (column: TableColumn<any>, index: number): string =>\n String(column.key ?? column.dataIndex ?? `__column_${index}`);\n\nexport const getCellValue = <T>(record: T, column: TableColumn<T>): unknown =>\n column.dataIndex ? record[column.dataIndex] : undefined;\n\nconst isEmptyFilter = (value: unknown) => !Array.isArray(value) || value.length === 0;\n\nexport const toColumnDefs = <T extends RowData>(\n columns: TableColumn<T>[],\n): ColumnDef<TableFeatureSet, T, unknown>[] =>\n columns.map((column, index) => {\n const needsStableId = Boolean(column.sorter) || Boolean(column.filters?.length);\n if (needsStableId && column.key == null && column.dataIndex == null) {\n throw new Error('[Table] sortable or filterable columns need a `key` or `dataIndex`');\n }\n\n const comparator = typeof column.sorter === 'function' ? column.sorter : undefined;\n const { onFilter } = column;\n\n const filterFn = onFilter\n ? Object.assign(\n (row: { original: T }, _columnId: string, filterValue: FilterValue[]) =>\n filterValue.some((value) => onFilter(value, row.original)),\n { autoRemove: isEmptyFilter },\n )\n : undefined;\n\n return {\n accessorFn: (record: T) => getCellValue(record, column),\n enableColumnFilter: Boolean(column.filters?.length),\n enableSorting: Boolean(column.sorter),\n filterFn,\n id: getColumnId(column, index),\n sortDescFirst: column.sortDirections?.[0] === 'descend',\n ...(comparator && {\n sortFn: (rowA: { original: T }, rowB: { original: T }) =>\n comparator(rowA.original, rowB.original),\n sortUndefined: false,\n }),\n } as unknown as ColumnDef<TableFeatureSet, T, unknown>;\n });\n"],"mappings":";AAKA,MAAa,eAAe,QAA0B,UACpD,OAAO,OAAO,OAAO,OAAO,aAAa,YAAY,OAAO;AAE9D,MAAa,gBAAmB,QAAW,WACzC,OAAO,YAAY,OAAO,OAAO,aAAa,KAAA;AAEhD,MAAM,iBAAiB,UAAmB,CAAC,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW;AAEpF,MAAa,gBACX,YAEA,QAAQ,KAAK,QAAQ,UAAU;CAE7B,KADsB,QAAQ,OAAO,MAAM,KAAK,QAAQ,OAAO,SAAS,MAAM,MACzD,OAAO,OAAO,QAAQ,OAAO,aAAa,MAC7D,MAAM,IAAI,MAAM,oEAAoE;CAGtF,MAAM,aAAa,OAAO,OAAO,WAAW,aAAa,OAAO,SAAS,KAAA;CACzE,MAAM,EAAE,aAAa;CAErB,MAAM,WAAW,WACb,OAAO,QACJ,KAAsB,WAAmB,gBACxC,YAAY,MAAM,UAAU,SAAS,OAAO,IAAI,QAAQ,CAAC,GAC3D,EAAE,YAAY,cAAc,CAC9B,IACA,KAAA;CAEJ,OAAO;EACL,aAAa,WAAc,aAAa,QAAQ,MAAM;EACtD,oBAAoB,QAAQ,OAAO,SAAS,MAAM;EAClD,eAAe,QAAQ,OAAO,MAAM;EACpC;EACA,IAAI,YAAY,QAAQ,KAAK;EAC7B,eAAe,OAAO,iBAAiB,OAAO;EAC9C,GAAI,cAAc;GAChB,SAAS,MAAuB,SAC9B,WAAW,KAAK,UAAU,KAAK,QAAQ;GACzC,eAAe;EACjB;CACF;AACF,CAAC"}