@expcat/tigercat-vue 1.2.39 → 1.2.41

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 (209) hide show
  1. package/dist/{chunk-MD7S2A55.js → chunk-5TJI4HOT.js} +2 -2
  2. package/dist/{chunk-FKCZSBM6.js → chunk-7IVLFDZI.js} +17 -3
  3. package/dist/{chunk-5Z2OCSVJ.mjs → chunk-CHDKJDZQ.mjs} +38 -2
  4. package/dist/{chunk-O23S65U3.js → chunk-EWQJGR7E.js} +130 -15
  5. package/dist/{chunk-G7O3G2LI.mjs → chunk-FI2EIJIF.mjs} +1 -1
  6. package/dist/{chunk-YCYS6LAQ.js → chunk-GD2WAN62.js} +2 -2
  7. package/dist/{chunk-OKBZKBFP.mjs → chunk-GFQDHFAX.mjs} +121 -6
  8. package/dist/{chunk-JT2ANXUR.js → chunk-KGDRA475.js} +2 -2
  9. package/dist/{chunk-3KIIMXJC.mjs → chunk-KJ6VISRW.mjs} +1 -1
  10. package/dist/{chunk-SSMSRTEQ.js → chunk-LUAI6VXV.js} +2 -2
  11. package/dist/{chunk-JPZJZFC4.mjs → chunk-M4EP4OVR.mjs} +2 -1
  12. package/dist/{chunk-5BILS3SG.js → chunk-OFTAQ2A4.js} +37 -1
  13. package/dist/{chunk-5BGVVVVD.mjs → chunk-PT4Q7C2A.mjs} +1 -1
  14. package/dist/{chunk-NNFDOVVA.js → chunk-QOMWROWE.js} +2 -1
  15. package/dist/{chunk-FATIMV7O.mjs → chunk-ROMVD7LS.mjs} +1 -1
  16. package/dist/{chunk-NYH6GSP7.mjs → chunk-VKW2O36D.mjs} +17 -3
  17. package/dist/components/ActivityFeed.d.mts +6 -6
  18. package/dist/components/ActivityFeed.d.ts +6 -6
  19. package/dist/components/Alert.d.mts +3 -3
  20. package/dist/components/Alert.d.ts +3 -3
  21. package/dist/components/Anchor.d.mts +1 -1
  22. package/dist/components/Anchor.d.ts +1 -1
  23. package/dist/components/AreaChart.d.mts +2 -2
  24. package/dist/components/AreaChart.d.ts +2 -2
  25. package/dist/components/AutoComplete.d.mts +2 -2
  26. package/dist/components/AutoComplete.d.ts +2 -2
  27. package/dist/components/Avatar.d.mts +1 -1
  28. package/dist/components/Avatar.d.ts +1 -1
  29. package/dist/components/Badge.d.mts +3 -3
  30. package/dist/components/Badge.d.ts +3 -3
  31. package/dist/components/BarChart.d.mts +1 -1
  32. package/dist/components/BarChart.d.ts +1 -1
  33. package/dist/components/Breadcrumb.d.mts +2 -2
  34. package/dist/components/Breadcrumb.d.ts +2 -2
  35. package/dist/components/Button.d.mts +3 -3
  36. package/dist/components/Button.d.ts +3 -3
  37. package/dist/components/ButtonGroup.d.mts +1 -1
  38. package/dist/components/ButtonGroup.d.ts +1 -1
  39. package/dist/components/Calendar.d.mts +1 -1
  40. package/dist/components/Calendar.d.ts +1 -1
  41. package/dist/components/Card.d.mts +2 -2
  42. package/dist/components/Card.d.ts +2 -2
  43. package/dist/components/ChartGrid.d.mts +1 -1
  44. package/dist/components/ChartGrid.d.ts +1 -1
  45. package/dist/components/ChatWindow.d.mts +3 -3
  46. package/dist/components/ChatWindow.d.ts +3 -3
  47. package/dist/components/CodeEditor.d.mts +2 -2
  48. package/dist/components/CodeEditor.d.ts +2 -2
  49. package/dist/components/Collapse.d.mts +1 -1
  50. package/dist/components/Collapse.d.ts +1 -1
  51. package/dist/components/CollapsePanel.d.mts +1 -1
  52. package/dist/components/CollapsePanel.d.ts +1 -1
  53. package/dist/components/ColorSwatch.d.mts +1 -1
  54. package/dist/components/ColorSwatch.d.ts +1 -1
  55. package/dist/components/CommentThread.d.mts +2 -2
  56. package/dist/components/CommentThread.d.ts +2 -2
  57. package/dist/components/ConfigProvider.d.mts +1 -1
  58. package/dist/components/ConfigProvider.d.ts +1 -1
  59. package/dist/components/DataTableWithToolbar.d.mts +34 -10
  60. package/dist/components/DataTableWithToolbar.d.ts +34 -10
  61. package/dist/components/DataTableWithToolbar.js +6 -3
  62. package/dist/components/DataTableWithToolbar.mjs +5 -2
  63. package/dist/components/DatePicker.d.mts +2 -2
  64. package/dist/components/DatePicker.d.ts +2 -2
  65. package/dist/components/Descriptions.d.mts +2 -2
  66. package/dist/components/Descriptions.d.ts +2 -2
  67. package/dist/components/DonutChart.d.mts +2 -2
  68. package/dist/components/DonutChart.d.ts +2 -2
  69. package/dist/components/Drawer.d.mts +5 -5
  70. package/dist/components/Drawer.d.ts +5 -5
  71. package/dist/components/Dropdown.d.mts +19 -0
  72. package/dist/components/Dropdown.d.ts +19 -0
  73. package/dist/components/Dropdown.js +2 -2
  74. package/dist/components/Dropdown.mjs +1 -1
  75. package/dist/components/DropdownItem.js +3 -3
  76. package/dist/components/DropdownItem.mjs +2 -2
  77. package/dist/components/DropdownMenu.js +3 -3
  78. package/dist/components/DropdownMenu.mjs +1 -1
  79. package/dist/components/FileManager.d.mts +1 -1
  80. package/dist/components/FileManager.d.ts +1 -1
  81. package/dist/components/FloatButton.d.mts +3 -3
  82. package/dist/components/FloatButton.d.ts +3 -3
  83. package/dist/components/Form.d.mts +1 -1
  84. package/dist/components/Form.d.ts +1 -1
  85. package/dist/components/FormWizard.d.mts +5 -5
  86. package/dist/components/FormWizard.d.ts +5 -5
  87. package/dist/components/FunnelChart.d.mts +1 -1
  88. package/dist/components/FunnelChart.d.ts +1 -1
  89. package/dist/components/Gantt.d.mts +1 -1
  90. package/dist/components/Gantt.d.ts +1 -1
  91. package/dist/components/GaugeChart.d.mts +1 -1
  92. package/dist/components/GaugeChart.d.ts +1 -1
  93. package/dist/components/HeatmapChart.d.mts +2 -2
  94. package/dist/components/HeatmapChart.d.ts +2 -2
  95. package/dist/components/Image.d.mts +2 -2
  96. package/dist/components/Image.d.ts +2 -2
  97. package/dist/components/ImageAnnotation.d.mts +4 -4
  98. package/dist/components/ImageAnnotation.d.ts +4 -4
  99. package/dist/components/InfiniteScroll.d.mts +2 -2
  100. package/dist/components/InfiniteScroll.d.ts +2 -2
  101. package/dist/components/Input.d.mts +4 -4
  102. package/dist/components/Input.d.ts +4 -4
  103. package/dist/components/InputGroup.d.mts +1 -1
  104. package/dist/components/InputGroup.d.ts +1 -1
  105. package/dist/components/InputNumber.d.mts +1 -1
  106. package/dist/components/InputNumber.d.ts +1 -1
  107. package/dist/components/Kanban.d.mts +1 -1
  108. package/dist/components/Kanban.d.ts +1 -1
  109. package/dist/components/LineChart.d.mts +2 -2
  110. package/dist/components/LineChart.d.ts +2 -2
  111. package/dist/components/Link.d.mts +1 -1
  112. package/dist/components/Link.d.ts +1 -1
  113. package/dist/components/List.d.mts +6 -6
  114. package/dist/components/List.d.ts +6 -6
  115. package/dist/components/Loading.d.mts +5 -5
  116. package/dist/components/Loading.d.ts +5 -5
  117. package/dist/components/MarkdownEditor.d.mts +2 -2
  118. package/dist/components/MarkdownEditor.d.ts +2 -2
  119. package/dist/components/Mentions.d.mts +2 -2
  120. package/dist/components/Mentions.d.ts +2 -2
  121. package/dist/components/Menu.d.mts +5 -5
  122. package/dist/components/Menu.d.ts +5 -5
  123. package/dist/components/Modal.d.mts +8 -8
  124. package/dist/components/Modal.d.ts +8 -8
  125. package/dist/components/NotificationCenter.d.mts +5 -5
  126. package/dist/components/NotificationCenter.d.ts +5 -5
  127. package/dist/components/NumberKeyboard.d.mts +2 -2
  128. package/dist/components/NumberKeyboard.d.ts +2 -2
  129. package/dist/components/OrgChart.d.mts +1 -1
  130. package/dist/components/OrgChart.d.ts +1 -1
  131. package/dist/components/Pagination.d.mts +4 -4
  132. package/dist/components/Pagination.d.ts +4 -4
  133. package/dist/components/PieChart.d.mts +2 -2
  134. package/dist/components/PieChart.d.ts +2 -2
  135. package/dist/components/Popconfirm.d.mts +2 -2
  136. package/dist/components/Popconfirm.d.ts +2 -2
  137. package/dist/components/Popconfirm.js +3 -3
  138. package/dist/components/Popconfirm.mjs +2 -2
  139. package/dist/components/Popover.d.mts +1 -1
  140. package/dist/components/Popover.d.ts +1 -1
  141. package/dist/components/Popover.js +3 -3
  142. package/dist/components/Popover.mjs +2 -2
  143. package/dist/components/Progress.d.mts +3 -3
  144. package/dist/components/Progress.d.ts +3 -3
  145. package/dist/components/QRCode.d.mts +1 -1
  146. package/dist/components/QRCode.d.ts +1 -1
  147. package/dist/components/RadarChart.d.mts +2 -2
  148. package/dist/components/RadarChart.d.ts +2 -2
  149. package/dist/components/RichTextEditor.d.mts +1 -1
  150. package/dist/components/RichTextEditor.d.ts +1 -1
  151. package/dist/components/Row.d.mts +1 -1
  152. package/dist/components/Row.d.ts +1 -1
  153. package/dist/components/ScatterChart.d.mts +1 -1
  154. package/dist/components/ScatterChart.d.ts +1 -1
  155. package/dist/components/ScrollSpy.d.mts +2 -2
  156. package/dist/components/ScrollSpy.d.ts +2 -2
  157. package/dist/components/Select.d.mts +1 -1
  158. package/dist/components/Select.d.ts +1 -1
  159. package/dist/components/Signature.d.mts +2 -2
  160. package/dist/components/Signature.d.ts +2 -2
  161. package/dist/components/Skeleton.d.mts +1 -1
  162. package/dist/components/Skeleton.d.ts +1 -1
  163. package/dist/components/Space.d.mts +2 -2
  164. package/dist/components/Space.d.ts +2 -2
  165. package/dist/components/Splitter.d.mts +1 -1
  166. package/dist/components/Splitter.d.ts +1 -1
  167. package/dist/components/Spotlight.d.mts +4 -4
  168. package/dist/components/Spotlight.d.ts +4 -4
  169. package/dist/components/Steps.d.mts +2 -2
  170. package/dist/components/Steps.d.ts +2 -2
  171. package/dist/components/SunburstChart.d.mts +1 -1
  172. package/dist/components/SunburstChart.d.ts +1 -1
  173. package/dist/components/Table.d.mts +25 -5
  174. package/dist/components/Table.d.ts +25 -5
  175. package/dist/components/Table.js +2 -2
  176. package/dist/components/Table.mjs +1 -1
  177. package/dist/components/Tabs.d.mts +2 -2
  178. package/dist/components/Tabs.d.ts +2 -2
  179. package/dist/components/Tag.d.mts +1 -1
  180. package/dist/components/Tag.d.ts +1 -1
  181. package/dist/components/TaskBoard.d.mts +2 -2
  182. package/dist/components/TaskBoard.d.ts +2 -2
  183. package/dist/components/Text.d.mts +3 -3
  184. package/dist/components/Text.d.ts +3 -3
  185. package/dist/components/Textarea.d.mts +1 -1
  186. package/dist/components/Textarea.d.ts +1 -1
  187. package/dist/components/TimePicker.d.mts +3 -3
  188. package/dist/components/TimePicker.d.ts +3 -3
  189. package/dist/components/Timeline.d.mts +3 -3
  190. package/dist/components/Timeline.d.ts +3 -3
  191. package/dist/components/Tooltip.d.mts +1 -1
  192. package/dist/components/Tooltip.d.ts +1 -1
  193. package/dist/components/Tooltip.js +3 -3
  194. package/dist/components/Tooltip.mjs +2 -2
  195. package/dist/components/Tour.d.mts +2 -2
  196. package/dist/components/Tour.d.ts +2 -2
  197. package/dist/components/Tree.d.mts +2 -2
  198. package/dist/components/Tree.d.ts +2 -2
  199. package/dist/components/TreeMapChart.d.mts +1 -1
  200. package/dist/components/TreeMapChart.d.ts +1 -1
  201. package/dist/components/Upload.d.mts +4 -4
  202. package/dist/components/Upload.d.ts +4 -4
  203. package/dist/components/VirtualTable.d.mts +2 -2
  204. package/dist/components/VirtualTable.d.ts +2 -2
  205. package/dist/components/Watermark.d.mts +1 -1
  206. package/dist/components/Watermark.d.ts +1 -1
  207. package/dist/index.js +11 -11
  208. package/dist/index.mjs +10 -10
  209. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkFKCZSBM6js = require('./chunk-FKCZSBM6.js');
3
+ var _chunk7IVLFDZIjs = require('./chunk-7IVLFDZI.js');
4
4
 
5
5
  // src/components/DropdownItem.ts
6
6
  var _vue = require('vue');
@@ -47,7 +47,7 @@ var DropdownItem = _vue.defineComponent.call(void 0, {
47
47
  const attrsRecord = attrs;
48
48
  const attrsClass = attrsRecord.class;
49
49
  const attrsStyle = attrsRecord.style;
50
- const context = _vue.inject.call(void 0, _chunkFKCZSBM6js.DropdownContextKey, null);
50
+ const context = _vue.inject.call(void 0, _chunk7IVLFDZIjs.DropdownContextKey, null);
51
51
  const handleClick = (event) => {
52
52
  if (props.disabled) {
53
53
  event.preventDefault();
@@ -2,6 +2,7 @@
2
2
 
3
3
 
4
4
 
5
+
5
6
  var _chunkEQW6IUHGjs = require('./chunk-EQW6IUHG.js');
6
7
 
7
8
  // src/components/Dropdown.ts
@@ -33,6 +34,7 @@ var _vue = require('vue');
33
34
 
34
35
 
35
36
 
37
+
36
38
  var _tigercatcore = require('@expcat/tigercat-core');
37
39
  var DropdownMenu = _vue.defineComponent.call(void 0, {
38
40
  name: "TigerDropdownMenu",
@@ -147,6 +149,15 @@ var Dropdown = _vue.defineComponent.call(void 0, {
147
149
  type: Boolean,
148
150
  default: true
149
151
  },
152
+ /**
153
+ * Render the menu into document.body (Teleport) so it is not clipped or
154
+ * covered by overflow/sticky ancestors (e.g. fixed table columns).
155
+ * @default true
156
+ */
157
+ portal: {
158
+ type: Boolean,
159
+ default: true
160
+ },
150
161
  /**
151
162
  * Additional CSS classes
152
163
  */
@@ -239,7 +250,7 @@ var Dropdown = _vue.defineComponent.call(void 0, {
239
250
  if (enabled) {
240
251
  cleanupClickOutside = _chunkEQW6IUHGjs.useVueClickOutside.call(void 0, {
241
252
  enabled: currentVisible,
242
- containerRef,
253
+ refs: [containerRef, floatingRef],
243
254
  onOutsideClick: () => setVisible(false),
244
255
  defer: true
245
256
  });
@@ -277,11 +288,12 @@ var Dropdown = _vue.defineComponent.call(void 0, {
277
288
  );
278
289
  const mergedStyle = _vue.computed.call(void 0, () => _tigercatcore.mergeStyleValues.call(void 0, attrsStyle, props.style));
279
290
  const triggerClasses = _vue.computed.call(void 0, () => _tigercatcore.getDropdownTriggerClasses.call(void 0, props.disabled));
280
- const menuWrapperClasses = _tigercatcore.classNames.call(void 0, "absolute z-50", _tigercatcore.DROPDOWN_ENTER_CLASS);
291
+ const menuWrapperClasses = _tigercatcore.classNames.call(void 0, "absolute", _tigercatcore.DROPDOWN_ENTER_CLASS);
281
292
  const menuWrapperStyles = _vue.computed.call(void 0, () => ({
282
293
  position: "absolute",
283
294
  left: `${x.value}px`,
284
295
  top: `${y.value}px`,
296
+ zIndex: _tigercatcore.FLOATING_OVERLAY_Z_INDEX,
285
297
  transformOrigin: _tigercatcore.getTransformOrigin.call(void 0, currentPlacement.value)
286
298
  }));
287
299
  _vue.provide.call(void 0, DropdownContextKey, {
@@ -329,12 +341,13 @@ var Dropdown = _vue.defineComponent.call(void 0, {
329
341
  },
330
342
  [triggerNode, chevronNode]
331
343
  ) : null;
332
- const menu = menuNode ? _vue.h.call(void 0,
344
+ const menuWrapper = menuNode ? _vue.h.call(void 0,
333
345
  "div",
334
346
  {
335
347
  ref: floatingRef,
336
348
  class: menuWrapperClasses,
337
349
  style: menuWrapperStyles.value,
350
+ "data-tiger-dropdown-menu": "",
338
351
  onMouseenter: handleMouseEnter,
339
352
  onMouseleave: handleMouseLeave,
340
353
  onKeydown: handleMenuKeyDown,
@@ -342,6 +355,7 @@ var Dropdown = _vue.defineComponent.call(void 0, {
342
355
  },
343
356
  [_vue.cloneVNode.call(void 0, menuNode, { id: menuId })]
344
357
  ) : null;
358
+ const menu = menuWrapper ? _chunkEQW6IUHGjs.renderVueBodyTeleport.call(void 0, menuWrapper, !props.portal) : null;
345
359
  const {
346
360
  class: _class,
347
361
  style: _style,
@@ -63,6 +63,14 @@ var tableProps = {
63
63
  type: Array,
64
64
  default: () => []
65
65
  },
66
+ hiddenColumnKeys: {
67
+ type: Array,
68
+ default: void 0
69
+ },
70
+ defaultHiddenColumnKeys: {
71
+ type: Array,
72
+ default: void 0
73
+ },
66
74
  sort: {
67
75
  type: Object
68
76
  },
@@ -184,6 +192,8 @@ var tableEmits = [
184
192
  "selection-change",
185
193
  "sort-change",
186
194
  "filter-change",
195
+ "update:hiddenColumnKeys",
196
+ "hidden-columns-change",
187
197
  "page-change",
188
198
  "expand-change",
189
199
  "cell-change",
@@ -203,7 +213,8 @@ import {
203
213
  filterDataAdvanced,
204
214
  groupDataByColumn,
205
215
  getFixedColumnOffsets,
206
- getFixedVirtualRange
216
+ getFixedVirtualRange,
217
+ filterHiddenColumns
207
218
  } from "@expcat/tigercat-core";
208
219
  import { exportTableData, downloadTableExport } from "@expcat/tigercat-core";
209
220
  function useTableState(props, emit, measuredColumnWidths) {
@@ -211,10 +222,14 @@ function useTableState(props, emit, measuredColumnWidths) {
211
222
  return props.pagination !== false && typeof props.pagination === "object" ? props.pagination : null;
212
223
  });
213
224
  const isSortControlled = computed(() => props.sort !== void 0);
225
+ const isHiddenColumnsControlled = computed(() => props.hiddenColumnKeys !== void 0);
214
226
  const isFiltersControlled = computed(() => props.filters !== void 0);
215
227
  const isSelectionControlled = computed(() => props.rowSelection?.selectedRowKeys !== void 0);
216
228
  const isExpandControlled = computed(() => props.expandable?.expandedRowKeys !== void 0);
217
229
  const uncontrolledSortState = ref(props.defaultSort ?? { key: null, direction: null });
230
+ const uncontrolledHiddenColumnKeys = ref(
231
+ props.defaultHiddenColumnKeys ?? props.hiddenColumnKeys ?? []
232
+ );
218
233
  const uncontrolledFilterState = ref(props.defaultFilters ?? {});
219
234
  const uncontrolledCurrentPage = ref(
220
235
  paginationConfig.value?.defaultCurrent ?? paginationConfig.value?.current ?? 1
@@ -229,6 +244,9 @@ function useTableState(props, emit, measuredColumnWidths) {
229
244
  props.expandable?.defaultExpandedRowKeys ?? props.expandable?.expandedRowKeys ?? []
230
245
  );
231
246
  const sortState = computed(() => props.sort ?? uncontrolledSortState.value);
247
+ const hiddenColumnKeys = computed(
248
+ () => props.hiddenColumnKeys ?? uncontrolledHiddenColumnKeys.value
249
+ );
232
250
  const filterState = computed(() => props.filters ?? uncontrolledFilterState.value);
233
251
  const currentPage = computed(() => {
234
252
  return paginationConfig.value?.current ?? uncontrolledCurrentPage.value;
@@ -258,6 +276,14 @@ function useTableState(props, emit, measuredColumnWidths) {
258
276
  }
259
277
  }
260
278
  );
279
+ watch(
280
+ () => props.hiddenColumnKeys,
281
+ (next) => {
282
+ if (next !== void 0) {
283
+ uncontrolledHiddenColumnKeys.value = next;
284
+ }
285
+ }
286
+ );
261
287
  watch(
262
288
  () => paginationConfig.value?.current,
263
289
  (next) => {
@@ -292,13 +318,14 @@ function useTableState(props, emit, measuredColumnWidths) {
292
318
  );
293
319
  const fixedOverrides = ref({});
294
320
  const displayColumns = computed(() => {
295
- return props.columns.map((column) => {
321
+ const mapped = props.columns.map((column) => {
296
322
  const hasOverride = column.key in fixedOverrides.value;
297
323
  return {
298
324
  ...column,
299
325
  fixed: hasOverride ? fixedOverrides.value[column.key] : column.fixed
300
326
  };
301
327
  });
328
+ return filterHiddenColumns(mapped, hiddenColumnKeys.value);
302
329
  });
303
330
  const fixedColumnsInfo = computed(() => {
304
331
  return getFixedColumnOffsets(displayColumns.value, measuredColumnWidths.value);
@@ -310,6 +337,13 @@ function useTableState(props, emit, measuredColumnWidths) {
310
337
  }
311
338
  return map;
312
339
  });
340
+ function handleSetHiddenColumns(hiddenKeys) {
341
+ if (!isHiddenColumnsControlled.value) {
342
+ uncontrolledHiddenColumnKeys.value = hiddenKeys;
343
+ }
344
+ emit("update:hiddenColumnKeys", hiddenKeys);
345
+ emit("hidden-columns-change", hiddenKeys);
346
+ }
313
347
  function toggleColumnLock(columnKey) {
314
348
  const original = props.columns.find((c) => c.key === columnKey)?.fixed;
315
349
  const hasOverride = columnKey in fixedOverrides.value;
@@ -579,12 +613,14 @@ function useTableState(props, emit, measuredColumnWidths) {
579
613
  filterState,
580
614
  currentPage,
581
615
  currentPageSize,
616
+ hiddenColumnKeys,
582
617
  selectedRowKeys,
583
618
  expandedRowKeys,
584
619
  editingCell,
585
620
  editingValue,
586
621
  virtualScrollTop,
587
622
  toggleColumnLock,
623
+ handleSetHiddenColumns,
588
624
  handleSetSort,
589
625
  handleSort,
590
626
  handleFilter,
@@ -1,17 +1,23 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunk5BILS3SGjs = require('./chunk-5BILS3SG.js');
3
+ var _chunkOFTAQ2A4js = require('./chunk-OFTAQ2A4.js');
4
4
 
5
5
 
6
6
  var _chunkBGMAWKWVjs = require('./chunk-BGMAWKWV.js');
7
7
 
8
8
 
9
+ var _chunkLUAI6VXVjs = require('./chunk-LUAI6VXV.js');
10
+
11
+
9
12
  var _chunk25EYT2CBjs = require('./chunk-25EYT2CB.js');
10
13
 
11
14
 
12
15
  var _chunkBYNMOQBBjs = require('./chunk-BYNMOQBB.js');
13
16
 
14
17
 
18
+ var _chunk2YFXJUBTjs = require('./chunk-2YFXJUBT.js');
19
+
20
+
15
21
  var _chunk4VLNT2EDjs = require('./chunk-4VLNT2ED.js');
16
22
 
17
23
  // src/components/DataTableWithToolbar.ts
@@ -49,6 +55,14 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
49
55
  type: Array,
50
56
  default: () => []
51
57
  },
58
+ hiddenColumnKeys: {
59
+ type: Array,
60
+ default: void 0
61
+ },
62
+ defaultHiddenColumnKeys: {
63
+ type: Array,
64
+ default: void 0
65
+ },
52
66
  sort: {
53
67
  type: Object,
54
68
  default: void 0
@@ -153,11 +167,16 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
153
167
  "bulk-action": (_action, _keys) => true,
154
168
  "selection-change": (_keys) => true,
155
169
  "page-change": (_current, _pageSize) => true,
156
- "page-size-change": (_current, _pageSize) => true
170
+ "page-size-change": (_current, _pageSize) => true,
171
+ "update:hiddenColumnKeys": (_hiddenKeys) => true,
172
+ "hidden-columns-change": (_hiddenKeys) => true
157
173
  },
158
174
  setup(props, { attrs, emit }) {
159
175
  const config = _chunk25EYT2CBjs.useTigerConfig.call(void 0, );
160
176
  const internalSearch = _vue.ref.call(void 0, _nullishCoalesce(_optionalChain([props, 'access', _ => _.toolbar, 'optionalAccess', _2 => _2.defaultSearchValue]), () => ( "")));
177
+ const internalHiddenKeys = _vue.ref.call(void 0,
178
+ _nullishCoalesce(_nullishCoalesce(props.defaultHiddenColumnKeys, () => ( props.hiddenColumnKeys)), () => ( []))
179
+ );
161
180
  const internalFilters = _vue.ref.call(void 0, {});
162
181
  const previousPageSize = _vue.ref.call(void 0,
163
182
  props.pagination && typeof props.pagination === "object" ? _nullishCoalesce(_nullishCoalesce(props.pagination.pageSize, () => ( props.pagination.defaultPageSize)), () => ( 10)) : void 0
@@ -209,6 +228,14 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
209
228
  }
210
229
  }
211
230
  );
231
+ _vue.watch.call(void 0,
232
+ () => props.hiddenColumnKeys,
233
+ (nextValue) => {
234
+ if (nextValue !== void 0) {
235
+ internalHiddenKeys.value = nextValue;
236
+ }
237
+ }
238
+ );
212
239
  _vue.watch.call(void 0,
213
240
  () => _optionalChain([props, 'access', _7 => _7.toolbar, 'optionalAccess', _8 => _8.filters]),
214
241
  (filters) => {
@@ -241,14 +268,29 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
241
268
  });
242
269
  const hasFilters = _vue.computed.call(void 0, () => Boolean(_optionalChain([props, 'access', _15 => _15.toolbar, 'optionalAccess', _16 => _16.filters, 'optionalAccess', _17 => _17.length])));
243
270
  const hasBulkActions = _vue.computed.call(void 0, () => Boolean(_optionalChain([props, 'access', _18 => _18.toolbar, 'optionalAccess', _19 => _19.bulkActions, 'optionalAccess', _20 => _20.length])));
271
+ const hasColumnSettings = _vue.computed.call(void 0, () => Boolean(_optionalChain([props, 'access', _21 => _21.toolbar, 'optionalAccess', _22 => _22.showColumnSettings])));
272
+ const resolvedHiddenKeys = _vue.computed.call(void 0, () => _nullishCoalesce(props.hiddenColumnKeys, () => ( internalHiddenKeys.value)));
273
+ const handleHiddenColumnsChange = (nextHiddenKeys) => {
274
+ if (props.hiddenColumnKeys === void 0) {
275
+ internalHiddenKeys.value = nextHiddenKeys;
276
+ }
277
+ emit("update:hiddenColumnKeys", nextHiddenKeys);
278
+ emit("hidden-columns-change", nextHiddenKeys);
279
+ };
280
+ const handleToggleColumnVisibility = (columnKey, visible) => {
281
+ const nextHiddenKeys = visible ? resolvedHiddenKeys.value.filter((key) => key !== columnKey) : [...resolvedHiddenKeys.value, columnKey];
282
+ handleHiddenColumnsChange(nextHiddenKeys);
283
+ };
244
284
  const canSearch = _vue.computed.call(void 0, () => Boolean(vnodeProps.onSearch));
245
285
  const selectedKeys = _vue.computed.call(void 0,
246
- () => _nullishCoalesce(_nullishCoalesce(_optionalChain([props, 'access', _21 => _21.toolbar, 'optionalAccess', _22 => _22.selectedKeys]), () => ( _optionalChain([props, 'access', _23 => _23.rowSelection, 'optionalAccess', _24 => _24.selectedRowKeys]))), () => ( []))
286
+ () => _nullishCoalesce(_nullishCoalesce(_optionalChain([props, 'access', _23 => _23.toolbar, 'optionalAccess', _24 => _24.selectedKeys]), () => ( _optionalChain([props, 'access', _25 => _25.rowSelection, 'optionalAccess', _26 => _26.selectedRowKeys]))), () => ( []))
247
287
  );
248
288
  const selectedCount = _vue.computed.call(void 0,
249
- () => _optionalChain([props, 'access', _25 => _25.toolbar, 'optionalAccess', _26 => _26.selectedCount]) !== void 0 ? props.toolbar.selectedCount : selectedKeys.value.length
289
+ () => _optionalChain([props, 'access', _27 => _27.toolbar, 'optionalAccess', _28 => _28.selectedCount]) !== void 0 ? props.toolbar.selectedCount : selectedKeys.value.length
290
+ );
291
+ const bulkLabel = _vue.computed.call(void 0,
292
+ () => _nullishCoalesce(_optionalChain([props, 'access', _29 => _29.toolbar, 'optionalAccess', _30 => _30.bulkActionsLabel]), () => ( tableLabels.value.selectedText))
250
293
  );
251
- const bulkLabel = _vue.computed.call(void 0, () => _nullishCoalesce(_optionalChain([props, 'access', _27 => _27.toolbar, 'optionalAccess', _28 => _28.bulkActionsLabel]), () => ( tableLabels.value.selectedText)));
252
294
  const wrapperClasses = _vue.computed.call(void 0,
253
295
  () => _tigercatcore.classNames.call(void 0,
254
296
  "tiger-data-table-with-toolbar flex flex-col",
@@ -259,7 +301,7 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
259
301
  );
260
302
  const wrapperStyle = _vue.computed.call(void 0, () => _tigercatcore.mergeStyleValues.call(void 0, attrs.style, props.style));
261
303
  const handleSearchChange = (value) => {
262
- if (_optionalChain([props, 'access', _29 => _29.toolbar, 'optionalAccess', _30 => _30.searchValue]) === void 0) {
304
+ if (_optionalChain([props, 'access', _31 => _31.toolbar, 'optionalAccess', _32 => _32.searchValue]) === void 0) {
263
305
  internalSearch.value = value;
264
306
  }
265
307
  emit("search-change", value);
@@ -282,7 +324,7 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
282
324
  };
283
325
  const handleBulkAction = (action) => {
284
326
  const keys = _nullishCoalesce(selectedKeys.value, () => ( []));
285
- _optionalChain([action, 'access', _31 => _31.onClick, 'optionalCall', _32 => _32(keys)]);
327
+ _optionalChain([action, 'access', _33 => _33.onClick, 'optionalCall', _34 => _34(keys)]);
286
328
  emit("bulk-action", action, keys);
287
329
  };
288
330
  const handleTablePageChange = ({
@@ -295,11 +337,78 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
295
337
  }
296
338
  previousPageSize.value = pageSize;
297
339
  };
340
+ const renderColumnSettings = () => {
341
+ const lockedKeys = new Set(_nullishCoalesce(_optionalChain([props, 'access', _35 => _35.toolbar, 'optionalAccess', _36 => _36.columnSettings, 'optionalAccess', _37 => _37.lockedColumnKeys]), () => ( [])));
342
+ const panelTitle = _nullishCoalesce(_optionalChain([props, 'access', _38 => _38.toolbar, 'optionalAccess', _39 => _39.columnSettings, 'optionalAccess', _40 => _40.title]), () => ( tableLabels.value.columnSettingsText));
343
+ return _vue.h.call(void 0,
344
+ _chunkLUAI6VXVjs.Popover,
345
+ {
346
+ trigger: "click",
347
+ placement: "bottom-end"
348
+ },
349
+ {
350
+ default: () => _vue.h.call(void 0,
351
+ _chunk4VLNT2EDjs.Button,
352
+ {
353
+ size: "sm",
354
+ variant: "outline",
355
+ class: "shrink-0 px-2",
356
+ "aria-label": tableLabels.value.columnSettingsAriaLabel
357
+ },
358
+ {
359
+ default: () => _vue.h.call(void 0,
360
+ "svg",
361
+ {
362
+ class: "w-3.5 h-3.5",
363
+ fill: "none",
364
+ stroke: "currentColor",
365
+ "stroke-width": "2",
366
+ viewBox: "0 0 24 24",
367
+ "aria-hidden": "true"
368
+ },
369
+ [
370
+ _vue.h.call(void 0, "path", {
371
+ "stroke-linecap": "round",
372
+ "stroke-linejoin": "round",
373
+ d: "M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"
374
+ }),
375
+ _vue.h.call(void 0, "path", {
376
+ "stroke-linecap": "round",
377
+ "stroke-linejoin": "round",
378
+ d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z"
379
+ })
380
+ ]
381
+ )
382
+ }
383
+ ),
384
+ title: () => panelTitle,
385
+ content: () => _vue.h.call(void 0,
386
+ "div",
387
+ { class: "flex flex-col gap-2 min-w-[160px]" },
388
+ props.columns.map((column) => {
389
+ const locked = lockedKeys.has(column.key) || column.hideable === false;
390
+ return _vue.h.call(void 0,
391
+ _chunk2YFXJUBTjs.Checkbox,
392
+ {
393
+ key: column.key,
394
+ size: "sm",
395
+ modelValue: !resolvedHiddenKeys.value.includes(column.key),
396
+ disabled: locked,
397
+ "onUpdate:modelValue": (checked) => handleToggleColumnVisibility(column.key, checked)
398
+ },
399
+ { default: () => column.title }
400
+ );
401
+ })
402
+ )
403
+ }
404
+ );
405
+ };
298
406
  const renderToolbar = () => {
299
- if (!hasSearch.value && !hasFilters.value && !hasBulkActions.value) return null;
407
+ if (!hasSearch.value && !hasFilters.value && !hasBulkActions.value && !hasColumnSettings.value)
408
+ return null;
300
409
  const leftNodes = [];
301
410
  if (hasSearch.value) {
302
- const showButton = _nullishCoalesce(_optionalChain([props, 'access', _33 => _33.toolbar, 'optionalAccess', _34 => _34.showSearchButton]), () => ( true));
411
+ const showButton = _nullishCoalesce(_optionalChain([props, 'access', _41 => _41.toolbar, 'optionalAccess', _42 => _42.showSearchButton]), () => ( true));
303
412
  leftNodes.push(
304
413
  _vue.h.call(void 0,
305
414
  "div",
@@ -311,7 +420,7 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
311
420
  type: "search",
312
421
  size: "sm",
313
422
  modelValue: searchValue.value,
314
- placeholder: _nullishCoalesce(_optionalChain([props, 'access', _35 => _35.toolbar, 'optionalAccess', _36 => _36.searchPlaceholder]), () => ( tableLabels.value.searchPlaceholder)),
423
+ placeholder: _nullishCoalesce(_optionalChain([props, 'access', _43 => _43.toolbar, 'optionalAccess', _44 => _44.searchPlaceholder]), () => ( tableLabels.value.searchPlaceholder)),
315
424
  "onUpdate:modelValue": (value) => handleSearchChange(String(_nullishCoalesce(value, () => ( "")))),
316
425
  onKeydown: (event) => {
317
426
  if (event.key === "Enter") {
@@ -349,14 +458,16 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
349
458
  onClick: handleSearchSubmit,
350
459
  disabled: !canSearch.value
351
460
  },
352
- { default: () => _nullishCoalesce(_optionalChain([props, 'access', _37 => _37.toolbar, 'optionalAccess', _38 => _38.searchButtonText]), () => ( tableLabels.value.searchButtonText)) }
461
+ {
462
+ default: () => _nullishCoalesce(_optionalChain([props, 'access', _45 => _45.toolbar, 'optionalAccess', _46 => _46.searchButtonText]), () => ( tableLabels.value.searchButtonText))
463
+ }
353
464
  ) : null
354
465
  ]
355
466
  )
356
467
  );
357
468
  }
358
469
  if (hasFilters.value) {
359
- _optionalChain([props, 'access', _39 => _39.toolbar, 'optionalAccess', _40 => _40.filters, 'optionalAccess', _41 => _41.forEach, 'call', _42 => _42((filter) => {
470
+ _optionalChain([props, 'access', _47 => _47.toolbar, 'optionalAccess', _48 => _48.filters, 'optionalAccess', _49 => _49.forEach, 'call', _50 => _50((filter) => {
360
471
  const currentValue = resolvedFilters.value[filter.key];
361
472
  const clearable = filter.clearable !== false;
362
473
  leftNodes.push(
@@ -401,7 +512,7 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
401
512
  );
402
513
  }
403
514
  ;
404
- (_nullishCoalesce(_optionalChain([props, 'access', _43 => _43.toolbar, 'optionalAccess', _44 => _44.bulkActions]), () => ( []))).forEach((action) => {
515
+ (_nullishCoalesce(_optionalChain([props, 'access', _51 => _51.toolbar, 'optionalAccess', _52 => _52.bulkActions]), () => ( []))).forEach((action) => {
405
516
  bulkChildren.push(
406
517
  _vue.h.call(void 0,
407
518
  _chunk4VLNT2EDjs.Button,
@@ -433,7 +544,10 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
433
544
  "div",
434
545
  { class: "flex items-center gap-2.5 flex-wrap ml-auto shrink-0" },
435
546
  bulkChildren
436
- ) : null
547
+ ) : null,
548
+ hasColumnSettings.value ? _vue.h.call(void 0, "div", { class: _tigercatcore.classNames.call(void 0, "shrink-0", !hasBulkActions.value && "ml-auto") }, [
549
+ renderColumnSettings()
550
+ ]) : null
437
551
  ]
438
552
  );
439
553
  };
@@ -444,6 +558,7 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
444
558
  columns: props.columns,
445
559
  columnLockable: props.columnLockable,
446
560
  dataSource: props.dataSource,
561
+ hiddenColumnKeys: resolvedHiddenKeys.value,
447
562
  ...props.sort !== void 0 ? { sort: props.sort } : {},
448
563
  ...props.defaultSort !== void 0 ? { defaultSort: props.defaultSort } : {},
449
564
  ...props.filters !== void 0 ? { filters: props.filters } : {},
@@ -476,7 +591,7 @@ var DataTableWithToolbar = _vue.defineComponent.call(void 0, {
476
591
  style: wrapperStyle.value,
477
592
  "data-tiger-data-table-with-toolbar": ""
478
593
  },
479
- [renderToolbar(), _vue.h.call(void 0, _chunk5BILS3SGjs.Table, tableProps)]
594
+ [renderToolbar(), _vue.h.call(void 0, _chunkOFTAQ2A4js.Table, tableProps)]
480
595
  );
481
596
  };
482
597
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  useFloatingPopup
3
- } from "./chunk-JPZJZFC4.mjs";
3
+ } from "./chunk-M4EP4OVR.mjs";
4
4
  import {
5
5
  renderVueBodyTeleport
6
6
  } from "./chunk-BDTPFPSB.mjs";
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkNNFDOVVAjs = require('./chunk-NNFDOVVA.js');
3
+ var _chunkQOMWROWEjs = require('./chunk-QOMWROWE.js');
4
4
 
5
5
 
6
6
  var _chunkEQW6IUHGjs = require('./chunk-EQW6IUHG.js');
@@ -93,7 +93,7 @@ var Popconfirm = _vue.defineComponent.call(void 0, {
93
93
  floatingRef,
94
94
  floatingStyles,
95
95
  actualPlacement
96
- } = _chunkNNFDOVVAjs.useFloatingPopup.call(void 0, { props, emit, multiTrigger: false });
96
+ } = _chunkQOMWROWEjs.useFloatingPopup.call(void 0, { props, emit, multiTrigger: false });
97
97
  const popconfirmId = createPopconfirmId();
98
98
  const titleId = `${popconfirmId}-title`;
99
99
  const descriptionId = `${popconfirmId}-description`;