@expcat/tigercat-vue 2.0.0-preview.5 → 2.0.0-preview.6

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 (121) hide show
  1. package/dist/{chunk-QNPBLZZT.mjs → chunk-2Y7W7IML.mjs} +1 -1
  2. package/dist/{chunk-4M2TNB2Z.mjs → chunk-4JG6AG4W.mjs} +45 -74
  3. package/dist/{chunk-2YLUE5CW.mjs → chunk-GIOEFFG6.mjs} +39 -69
  4. package/dist/chunk-H26JXVJX.mjs +156 -0
  5. package/dist/{chunk-KZ5AIM4G.mjs → chunk-JPKC5T4O.mjs} +1 -1
  6. package/dist/{chunk-4SLYX5GK.mjs → chunk-N6GLO7U5.mjs} +14 -1
  7. package/dist/components/ActivityFeed.d.mts +6 -6
  8. package/dist/components/Alert.d.mts +3 -3
  9. package/dist/components/Anchor.d.mts +1 -1
  10. package/dist/components/AreaChart.d.mts +3 -3
  11. package/dist/components/AutoComplete.d.mts +5 -5
  12. package/dist/components/Avatar.d.mts +1 -1
  13. package/dist/components/AvatarGroup.d.mts +2 -2
  14. package/dist/components/BackTop.d.mts +1 -1
  15. package/dist/components/Badge.d.mts +4 -4
  16. package/dist/components/BarChart.d.mts +2 -2
  17. package/dist/components/Breadcrumb.d.mts +3 -3
  18. package/dist/components/Button.d.mts +3 -3
  19. package/dist/components/ButtonGroup.d.mts +1 -1
  20. package/dist/components/Calendar.d.mts +2 -2
  21. package/dist/components/Card.d.mts +2 -2
  22. package/dist/components/Carousel.d.mts +2 -2
  23. package/dist/components/Cascader.d.mts +3 -3
  24. package/dist/components/ChartCanvas.d.mts +1 -1
  25. package/dist/components/ChartGrid.d.mts +1 -1
  26. package/dist/components/ChartLegend.d.mts +1 -1
  27. package/dist/components/ChatWindow.d.mts +4 -4
  28. package/dist/components/CodeEditor.d.mts +3 -3
  29. package/dist/components/Collapse.d.mts +1 -1
  30. package/dist/components/CollapsePanel.d.mts +1 -1
  31. package/dist/components/ColorSwatch.d.mts +2 -2
  32. package/dist/components/CommentThread.d.mts +2 -2
  33. package/dist/components/ConfigProvider.d.mts +1 -1
  34. package/dist/components/Container.d.mts +1 -1
  35. package/dist/components/Countdown.d.mts +2 -2
  36. package/dist/components/CronEditor.d.mts +2 -2
  37. package/dist/components/CropUpload.d.mts +1 -1
  38. package/dist/components/DataExport.d.mts +136 -0
  39. package/dist/components/DataExport.mjs +10 -0
  40. package/dist/components/DataTableWithToolbar.d.mts +11 -11
  41. package/dist/components/DataTableWithToolbar.mjs +4 -3
  42. package/dist/components/DatePicker.d.mts +3 -3
  43. package/dist/components/Descriptions.d.mts +2 -2
  44. package/dist/components/DonutChart.d.mts +3 -3
  45. package/dist/components/Drawer.d.mts +4 -4
  46. package/dist/components/Dropdown.d.mts +1 -1
  47. package/dist/components/Empty.d.mts +1 -1
  48. package/dist/components/FileManager.d.mts +2 -2
  49. package/dist/components/FloatButton.d.mts +4 -4
  50. package/dist/components/Form.d.mts +2 -2
  51. package/dist/components/FormWizard.d.mts +7 -7
  52. package/dist/components/FunnelChart.d.mts +3 -3
  53. package/dist/components/Gantt.d.mts +2 -2
  54. package/dist/components/GaugeChart.d.mts +2 -2
  55. package/dist/components/HeatmapChart.d.mts +3 -3
  56. package/dist/components/Icon.d.mts +2 -2
  57. package/dist/components/Image.d.mts +2 -2
  58. package/dist/components/ImageAnnotation.d.mts +5 -5
  59. package/dist/components/ImageCropper.d.mts +1 -1
  60. package/dist/components/ImageViewer.d.mts +1 -1
  61. package/dist/components/InfiniteScroll.d.mts +3 -3
  62. package/dist/components/Input.d.mts +4 -4
  63. package/dist/components/InputGroup.d.mts +1 -1
  64. package/dist/components/InputNumber.d.mts +1 -1
  65. package/dist/components/Kanban.d.mts +1 -1
  66. package/dist/components/LineChart.d.mts +2 -2
  67. package/dist/components/Link.d.mts +1 -1
  68. package/dist/components/List.d.mts +7 -7
  69. package/dist/components/List.mjs +2 -1
  70. package/dist/components/Loading.d.mts +6 -6
  71. package/dist/components/MarkdownEditor.d.mts +5 -5
  72. package/dist/components/Mentions.d.mts +3 -3
  73. package/dist/components/Menu.d.mts +5 -5
  74. package/dist/components/Modal.d.mts +7 -7
  75. package/dist/components/NotificationCenter.d.mts +5 -5
  76. package/dist/components/NotificationCenter.mjs +3 -2
  77. package/dist/components/NumberKeyboard.d.mts +5 -5
  78. package/dist/components/OrgChart.d.mts +3 -3
  79. package/dist/components/Pagination.d.mts +22 -4
  80. package/dist/components/Pagination.mjs +1 -1
  81. package/dist/components/PieChart.d.mts +3 -3
  82. package/dist/components/Popconfirm.d.mts +3 -3
  83. package/dist/components/Popover.d.mts +1 -1
  84. package/dist/components/Progress.d.mts +3 -3
  85. package/dist/components/QRCode.d.mts +3 -3
  86. package/dist/components/RadarChart.d.mts +3 -3
  87. package/dist/components/Rate.d.mts +2 -2
  88. package/dist/components/Result.d.mts +1 -1
  89. package/dist/components/RichTextEditor.d.mts +4 -4
  90. package/dist/components/Row.d.mts +1 -1
  91. package/dist/components/ScatterChart.d.mts +2 -2
  92. package/dist/components/ScrollSpy.d.mts +3 -3
  93. package/dist/components/Select.d.mts +3 -3
  94. package/dist/components/Signature.d.mts +5 -5
  95. package/dist/components/Skeleton.d.mts +1 -1
  96. package/dist/components/Space.d.mts +2 -2
  97. package/dist/components/Splitter.d.mts +1 -1
  98. package/dist/components/Spotlight.d.mts +5 -5
  99. package/dist/components/Steps.d.mts +3 -3
  100. package/dist/components/SunburstChart.d.mts +2 -2
  101. package/dist/components/Table.d.mts +5 -5
  102. package/dist/components/Table.mjs +2 -1
  103. package/dist/components/Tabs.d.mts +4 -4
  104. package/dist/components/Tag.d.mts +2 -2
  105. package/dist/components/TaskBoard.d.mts +2 -2
  106. package/dist/components/Text.d.mts +3 -3
  107. package/dist/components/Textarea.d.mts +3 -3
  108. package/dist/components/TimePicker.d.mts +4 -4
  109. package/dist/components/Timeline.d.mts +4 -4
  110. package/dist/components/Tooltip.d.mts +1 -1
  111. package/dist/components/Tour.d.mts +4 -4
  112. package/dist/components/Transfer.d.mts +3 -3
  113. package/dist/components/Tree.d.mts +4 -4
  114. package/dist/components/TreeMapChart.d.mts +2 -2
  115. package/dist/components/TreeSelect.d.mts +3 -3
  116. package/dist/components/Upload.d.mts +4 -4
  117. package/dist/components/VirtualTable.d.mts +3 -3
  118. package/dist/components/Watermark.d.mts +1 -1
  119. package/dist/index.d.mts +2 -1
  120. package/dist/index.mjs +7 -0
  121. package/package.json +7 -2
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-U6OGGZBY.mjs";
5
5
  import {
6
6
  List
7
- } from "./chunk-2YLUE5CW.mjs";
7
+ } from "./chunk-GIOEFFG6.mjs";
8
8
  import {
9
9
  Button
10
10
  } from "./chunk-YZBQ6IR7.mjs";
@@ -4,6 +4,9 @@ import {
4
4
  import {
5
5
  Radio
6
6
  } from "./chunk-6BDDX2R4.mjs";
7
+ import {
8
+ Pagination
9
+ } from "./chunk-N6GLO7U5.mjs";
7
10
  import {
8
11
  Empty
9
12
  } from "./chunk-SJINC5NF.mjs";
@@ -1232,97 +1235,65 @@ function renderSummaryRow(ctx, props) {
1232
1235
  // src/components/Table/render-pagination.ts
1233
1236
  import { h as h5 } from "vue";
1234
1237
  import {
1235
- formatIntlNumber,
1236
- formatPaginationTotal,
1237
1238
  formatPaginationPageIndicator,
1239
+ formatPaginationTotal,
1240
+ getBuiltInPaginationContainerClasses,
1238
1241
  getPaginationLabels,
1239
- getSimplePaginationContainerClasses,
1240
- getSimplePaginationTotalClasses,
1241
- getSimplePaginationControlsClasses,
1242
- getSimplePaginationSelectClasses,
1243
- getSimplePaginationButtonClasses,
1244
- getSimplePaginationPageIndicatorClasses,
1245
- getSimplePaginationButtonsWrapperClasses
1242
+ resolvePaginationDisplayMode
1246
1243
  } from "@expcat/tigercat-core";
1247
1244
  function renderPagination(ctx, props, view) {
1248
1245
  if (props.pagination === false || !ctx.paginationInfo.value) {
1249
1246
  return null;
1250
1247
  }
1251
- const { totalPages, startIndex, endIndex, hasNext, hasPrev } = ctx.paginationInfo.value;
1248
+ const { totalPages } = ctx.paginationInfo.value;
1252
1249
  const paginationConfig = props.pagination;
1253
1250
  const total = paginationConfig.total !== void 0 && paginationConfig.total > 0 ? paginationConfig.total : ctx.processedData.value.length;
1254
1251
  const locale = view?.disableI18n ? void 0 : view?.locale;
1255
1252
  const labels = getPaginationLabels(locale);
1256
1253
  const localeCode = locale?.locale;
1257
- const finalTotalText = paginationConfig.totalText ? paginationConfig.totalText(total, [startIndex, endIndex]) : formatPaginationTotal(labels.totalText, total, [startIndex, endIndex], localeCode);
1258
- const finalPrevText = paginationConfig.prevText || labels.prevPageAriaLabel;
1259
- const finalNextText = paginationConfig.nextText || labels.nextPageAriaLabel;
1260
- const finalPageIndicatorText = paginationConfig.pageIndicatorText ? paginationConfig.pageIndicatorText(ctx.currentPage.value, totalPages) : formatPaginationPageIndicator(
1261
- labels.pageIndicatorText,
1262
- ctx.currentPage.value,
1263
- totalPages,
1264
- localeCode
1265
- );
1266
- const finalPrevAriaLabel = view?.disableI18n ? finalPrevText : labels.prevPageAriaLabel;
1267
- const finalNextAriaLabel = view?.disableI18n ? finalNextText : labels.nextPageAriaLabel;
1268
- const normalizedPageSizeOptions = paginationConfig.pageSizeOptions || [
1254
+ const { simple, showQuickJumper } = resolvePaginationDisplayMode(totalPages, paginationConfig);
1255
+ const totalText = paginationConfig.totalText ?? ((value, range) => formatPaginationTotal(labels.totalText, value, range, localeCode));
1256
+ const pageIndicatorText = paginationConfig.pageIndicatorText ?? ((current, pages) => formatPaginationPageIndicator(labels.pageIndicatorText, current, pages, localeCode));
1257
+ const overrides = view?.disableI18n ? { ...labels } : {};
1258
+ if (paginationConfig.prevText) overrides.prevPageAriaLabel = paginationConfig.prevText;
1259
+ if (paginationConfig.nextText) overrides.nextPageAriaLabel = paginationConfig.nextText;
1260
+ const labelsOverride = Object.keys(overrides).length > 0 ? overrides : void 0;
1261
+ const pageSizeOptions = paginationConfig.pageSizeOptions ?? [
1269
1262
  10,
1270
1263
  20,
1271
1264
  50,
1272
1265
  100
1273
1266
  ];
1274
- return h5("div", { class: getSimplePaginationContainerClasses() }, [
1275
- paginationConfig.showTotal !== false && h5("div", { class: getSimplePaginationTotalClasses() }, finalTotalText),
1276
- h5("div", { class: getSimplePaginationControlsClasses() }, [
1277
- paginationConfig.showSizeChanger !== false && h5(
1278
- "select",
1279
- {
1280
- class: getSimplePaginationSelectClasses(),
1281
- value: ctx.currentPageSize.value,
1282
- "aria-label": labels.itemsPerPageText,
1283
- onChange: (e) => ctx.handlePageSizeChange(Number(e.target.value))
1284
- },
1285
- normalizedPageSizeOptions.map((option) => {
1286
- const value = typeof option === "number" ? option : option.value;
1287
- const label = typeof option === "number" ? `${formatIntlNumber(value, localeCode)} ${labels.itemsPerPageText}` : option.label ?? `${formatIntlNumber(value, localeCode)} ${labels.itemsPerPageText}`;
1288
- return h5(
1289
- "option",
1290
- { value, key: value },
1291
- paginationConfig.pageSizeText ? paginationConfig.pageSizeText(value) : label
1292
- );
1293
- })
1294
- ),
1295
- h5("div", { class: getSimplePaginationButtonsWrapperClasses() }, [
1296
- h5(
1297
- "button",
1298
- {
1299
- class: getSimplePaginationButtonClasses(!hasPrev),
1300
- disabled: !hasPrev,
1301
- "aria-label": finalPrevAriaLabel,
1302
- onClick: () => ctx.handlePageChange(ctx.currentPage.value - 1)
1303
- },
1304
- finalPrevText
1305
- ),
1306
- h5(
1307
- "span",
1308
- {
1309
- class: getSimplePaginationPageIndicatorClasses(),
1310
- "aria-label": finalPageIndicatorText
1311
- },
1312
- finalPageIndicatorText
1313
- ),
1314
- h5(
1315
- "button",
1316
- {
1317
- class: getSimplePaginationButtonClasses(!hasNext),
1318
- disabled: !hasNext,
1319
- "aria-label": finalNextAriaLabel,
1320
- onClick: () => ctx.handlePageChange(ctx.currentPage.value + 1)
1321
- },
1322
- finalNextText
1323
- )
1324
- ])
1325
- ])
1267
+ const pageSizeText = paginationConfig.pageSizeText;
1268
+ const normalizedPageSizeOptions = pageSizeText ? pageSizeOptions.map((option) => {
1269
+ if (typeof option === "number") {
1270
+ return { value: option, label: pageSizeText(option) };
1271
+ }
1272
+ return { value: option.value, label: option.label ?? pageSizeText(option.value) };
1273
+ }) : pageSizeOptions;
1274
+ return h5("div", { class: getBuiltInPaginationContainerClasses() }, [
1275
+ h5(Pagination, {
1276
+ size: "small",
1277
+ align: "right",
1278
+ current: ctx.currentPage.value,
1279
+ pageSize: ctx.currentPageSize.value,
1280
+ total,
1281
+ simple,
1282
+ showQuickJumper,
1283
+ showSizeChanger: paginationConfig.showSizeChanger !== false,
1284
+ showTotal: paginationConfig.showTotal !== false,
1285
+ totalText,
1286
+ pageIndicatorText,
1287
+ pageSizeOptions: normalizedPageSizeOptions,
1288
+ locale,
1289
+ labels: labelsOverride,
1290
+ onChange: (page, pageSize) => {
1291
+ if (pageSize === ctx.currentPageSize.value) {
1292
+ ctx.handlePageChange(page);
1293
+ }
1294
+ },
1295
+ onPageSizeChange: (_page, pageSize) => ctx.handlePageSizeChange(pageSize)
1296
+ })
1326
1297
  ]);
1327
1298
  }
1328
1299
 
@@ -1,3 +1,6 @@
1
+ import {
2
+ Pagination
3
+ } from "./chunk-N6GLO7U5.mjs";
1
4
  import {
2
5
  VirtualList
3
6
  } from "./chunk-HS4YQGZQ.mjs";
@@ -39,13 +42,8 @@ import {
39
42
  getSpinnerSVG,
40
43
  normalizeSvgAttrs,
41
44
  getLoadingOverlaySpinnerClasses,
42
- getSimplePaginationContainerClasses,
43
- getSimplePaginationTotalClasses,
44
- getSimplePaginationControlsClasses,
45
- getSimplePaginationSelectClasses,
46
- getSimplePaginationButtonClasses,
47
- getSimplePaginationPageIndicatorClasses,
48
- getSimplePaginationButtonsWrapperClasses,
45
+ getBuiltInPaginationContainerClasses,
46
+ resolvePaginationDisplayMode,
49
47
  getPaginationLabels,
50
48
  formatPaginationTotal,
51
49
  formatPaginationPageIndicator
@@ -446,72 +444,44 @@ var List = defineComponent({
446
444
  if (props.pagination === false || !paginationInfo.value) {
447
445
  return null;
448
446
  }
449
- const { totalPages, startIndex, endIndex, hasNext, hasPrev } = paginationInfo.value;
447
+ const { totalPages } = paginationInfo.value;
450
448
  const total = paginationTotal.value;
451
449
  const paginationConfig = props.pagination;
452
450
  const paginationLabels = getPaginationLabels(mergedLocale.value);
453
451
  const localeCode = mergedLocale.value?.locale;
454
- return h("div", { class: getSimplePaginationContainerClasses() }, [
455
- // Total info
456
- paginationConfig.showTotal !== false && h(
457
- "div",
458
- { class: getSimplePaginationTotalClasses() },
459
- paginationConfig.totalText ? paginationConfig.totalText(total, [startIndex, endIndex]) : formatPaginationTotal(
460
- paginationLabels.totalText,
461
- total,
462
- [startIndex, endIndex],
463
- localeCode
464
- )
465
- ),
466
- // Pagination controls
467
- h("div", { class: getSimplePaginationControlsClasses() }, [
468
- // Page size selector
469
- paginationConfig.showSizeChanger !== false && h(
470
- "select",
471
- {
472
- class: getSimplePaginationSelectClasses(),
473
- value: currentPageSize.value,
474
- onChange: (e) => handlePageSizeChange(Number(e.target.value))
475
- },
476
- (paginationConfig.pageSizeOptions || [10, 20, 50, 100]).map(
477
- (size) => h("option", { value: size }, `${size} ${paginationLabels.itemsPerPageText}`)
478
- )
479
- ),
480
- // Page buttons
481
- h("div", { class: getSimplePaginationButtonsWrapperClasses() }, [
482
- // Previous button
483
- h(
484
- "button",
485
- {
486
- class: getSimplePaginationButtonClasses(!hasPrev),
487
- disabled: !hasPrev,
488
- onClick: () => handlePageChange(currentPage.value - 1)
489
- },
490
- paginationLabels.prevPageAriaLabel
491
- ),
492
- // Current page indicator
493
- h(
494
- "span",
495
- { class: getSimplePaginationPageIndicatorClasses() },
496
- formatPaginationPageIndicator(
497
- paginationLabels.pageIndicatorText,
498
- currentPage.value,
499
- totalPages,
500
- localeCode
501
- )
502
- ),
503
- // Next button
504
- h(
505
- "button",
506
- {
507
- class: getSimplePaginationButtonClasses(!hasNext),
508
- disabled: !hasNext,
509
- onClick: () => handlePageChange(currentPage.value + 1)
510
- },
511
- paginationLabels.nextPageAriaLabel
512
- )
513
- ])
514
- ])
452
+ const { simple, showQuickJumper } = resolvePaginationDisplayMode(
453
+ totalPages,
454
+ paginationConfig
455
+ );
456
+ const totalText = paginationConfig.totalText ?? ((value, range) => formatPaginationTotal(paginationLabels.totalText, value, range, localeCode));
457
+ const pageIndicatorText = (current, pages) => formatPaginationPageIndicator(
458
+ paginationLabels.pageIndicatorText,
459
+ current,
460
+ pages,
461
+ localeCode
462
+ );
463
+ return h("div", { class: getBuiltInPaginationContainerClasses() }, [
464
+ h(Pagination, {
465
+ size: "small",
466
+ align: "right",
467
+ current: currentPage.value,
468
+ pageSize: currentPageSize.value,
469
+ total,
470
+ simple,
471
+ showQuickJumper,
472
+ showSizeChanger: paginationConfig.showSizeChanger !== false,
473
+ showTotal: paginationConfig.showTotal !== false,
474
+ totalText,
475
+ pageIndicatorText,
476
+ pageSizeOptions: paginationConfig.pageSizeOptions || [10, 20, 50, 100],
477
+ locale: mergedLocale.value,
478
+ onChange: (page, pageSize) => {
479
+ if (pageSize === currentPageSize.value) {
480
+ handlePageChange(page);
481
+ }
482
+ },
483
+ onPageSizeChange: (_page, pageSize) => handlePageSizeChange(pageSize)
484
+ })
515
485
  ]);
516
486
  }
517
487
  return () => {
@@ -0,0 +1,156 @@
1
+ import {
2
+ Dropdown,
3
+ DropdownItem,
4
+ DropdownMenu
5
+ } from "./chunk-BNNTDSLJ.mjs";
6
+ import {
7
+ useTigerConfig
8
+ } from "./chunk-UOJOJBEU.mjs";
9
+
10
+ // src/components/DataExport.ts
11
+ import { computed, defineComponent, h, ref } from "vue";
12
+ import {
13
+ classNames,
14
+ getDataExportLabels,
15
+ mergeTigerLocale,
16
+ tableExportButtonClasses
17
+ } from "@expcat/tigercat-core";
18
+ var dataExportModulePromise = null;
19
+ function loadDataExportModule() {
20
+ dataExportModulePromise ??= import("@expcat/tigercat-core/utils/data-export");
21
+ return dataExportModulePromise;
22
+ }
23
+ var DataExport = defineComponent({
24
+ name: "TigerDataExport",
25
+ props: {
26
+ columns: {
27
+ type: Array,
28
+ required: true
29
+ },
30
+ dataSource: {
31
+ type: Array,
32
+ required: true
33
+ },
34
+ /**
35
+ * Formats offered to the user. A single format renders a plain button,
36
+ * multiple formats render a dropdown menu.
37
+ */
38
+ formats: {
39
+ type: Array,
40
+ default: () => ["xlsx", "markdown"]
41
+ },
42
+ /** Download file name without extension */
43
+ fileName: {
44
+ type: String,
45
+ default: "export"
46
+ },
47
+ /** Worksheet name used for xlsx output */
48
+ sheetName: {
49
+ type: String,
50
+ default: void 0
51
+ },
52
+ /** Transform a cell value before serialization */
53
+ cellFormatter: {
54
+ type: Function,
55
+ default: void 0
56
+ },
57
+ disabled: {
58
+ type: Boolean,
59
+ default: false
60
+ },
61
+ className: {
62
+ type: String,
63
+ default: void 0
64
+ },
65
+ /** Locale overrides merged on top of ConfigProvider locale */
66
+ locale: {
67
+ type: Object,
68
+ default: void 0
69
+ },
70
+ /** UI labels for custom text. Takes precedence over locale and ConfigProvider text. */
71
+ labels: {
72
+ type: Object,
73
+ default: void 0
74
+ }
75
+ },
76
+ emits: {
77
+ export: (_format) => true,
78
+ error: (_error) => true
79
+ },
80
+ setup(props, { emit }) {
81
+ const config = useTigerConfig();
82
+ const mergedLocale = computed(() => mergeTigerLocale(config.value.locale, props.locale));
83
+ const resolvedLabels = computed(() => getDataExportLabels(mergedLocale.value, props.labels));
84
+ const exporting = ref(false);
85
+ const handleExport = async (format) => {
86
+ if (props.disabled || exporting.value) return;
87
+ exporting.value = true;
88
+ try {
89
+ const mod = await loadDataExportModule();
90
+ const content = mod.exportData(props.columns, props.dataSource, format, {
91
+ sheetName: props.sheetName,
92
+ cellFormatter: props.cellFormatter
93
+ });
94
+ mod.downloadDataExport(content, props.fileName, format);
95
+ emit("export", format);
96
+ } catch (error) {
97
+ emit("error", error);
98
+ } finally {
99
+ exporting.value = false;
100
+ }
101
+ };
102
+ const formatLabel = (format) => format === "xlsx" ? resolvedLabels.value.xlsxText : resolvedLabels.value.markdownText;
103
+ const renderTrigger = (text, onClick) => h(
104
+ "button",
105
+ {
106
+ type: "button",
107
+ class: classNames(tableExportButtonClasses, onClick ? props.className : void 0),
108
+ "aria-label": resolvedLabels.value.triggerAriaLabel,
109
+ disabled: props.disabled || exporting.value,
110
+ onClick
111
+ },
112
+ text
113
+ );
114
+ return () => {
115
+ if (props.formats.length === 0) return null;
116
+ if (props.formats.length === 1) {
117
+ const format = props.formats[0];
118
+ return renderTrigger(
119
+ exporting.value ? resolvedLabels.value.exportingText : formatLabel(format),
120
+ () => void handleExport(format)
121
+ );
122
+ }
123
+ return h(
124
+ Dropdown,
125
+ {
126
+ trigger: "click",
127
+ disabled: props.disabled || exporting.value,
128
+ className: props.className
129
+ },
130
+ {
131
+ default: () => [
132
+ renderTrigger(
133
+ exporting.value ? resolvedLabels.value.exportingText : resolvedLabels.value.triggerText
134
+ ),
135
+ h(DropdownMenu, null, {
136
+ default: () => props.formats.map(
137
+ (format) => h(
138
+ DropdownItem,
139
+ {
140
+ key: format,
141
+ onClick: () => void handleExport(format)
142
+ },
143
+ { default: () => formatLabel(format) }
144
+ )
145
+ )
146
+ })
147
+ ]
148
+ }
149
+ );
150
+ };
151
+ }
152
+ });
153
+
154
+ export {
155
+ DataExport
156
+ };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Table
3
- } from "./chunk-4M2TNB2Z.mjs";
3
+ } from "./chunk-4JG6AG4W.mjs";
4
4
  import {
5
5
  Select
6
6
  } from "./chunk-N7LWKAYS.mjs";
@@ -131,6 +131,14 @@ var Pagination = defineComponent({
131
131
  type: Boolean,
132
132
  default: false
133
133
  },
134
+ /**
135
+ * Custom text renderer for the simple-mode page indicator.
136
+ * Defaults to `{current} / {totalPages}` when not provided.
137
+ */
138
+ pageIndicatorText: {
139
+ type: Function,
140
+ default: void 0
141
+ },
134
142
  /**
135
143
  * Size of pagination
136
144
  * @default 'medium'
@@ -367,8 +375,13 @@ var Pagination = defineComponent({
367
375
  )
368
376
  );
369
377
  if (props.simple) {
378
+ const indicatorText = props.pageIndicatorText ? props.pageIndicatorText(page, pages) : `${page} / ${pages}`;
370
379
  elements.push(
371
- h("span", { class: classNames("mx-2", getSizeTextClasses(size)) }, `${page} / ${pages}`)
380
+ h(
381
+ "span",
382
+ { class: classNames("mx-2", getSizeTextClasses(size)), "aria-label": indicatorText },
383
+ indicatorText
384
+ )
372
385
  );
373
386
  } else {
374
387
  getPageNumbers(page, pages, props.showLessItems).forEach((pageNum) => {
@@ -107,18 +107,18 @@ declare const ActivityFeed: vue.DefineComponent<vue.ExtractPropTypes<{
107
107
  default: undefined;
108
108
  };
109
109
  }>> & Readonly<{}>, {
110
+ loadingText: string;
111
+ emptyText: string;
112
+ className: string;
113
+ style: Record<string, string | number>;
114
+ loading: boolean;
115
+ groupBy: (item: ActivityItem) => string;
110
116
  items: ActivityItem[];
111
117
  groups: ActivityGroup[];
112
- groupBy: (item: ActivityItem) => string;
113
118
  groupOrder: string[];
114
- loading: boolean;
115
- loadingText: string;
116
- emptyText: string;
117
119
  showAvatar: boolean;
118
120
  showTime: boolean;
119
121
  showGroupTitle: boolean;
120
- className: string;
121
- style: Record<string, string | number>;
122
122
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
123
123
 
124
124
  export { ActivityFeed, type VueActivityFeedProps, ActivityFeed as default };
@@ -204,14 +204,14 @@ declare const Alert: vue.DefineComponent<vue.ExtractPropTypes<{
204
204
  }>> & Readonly<{
205
205
  onClose?: ((...args: any[]) => any) | undefined;
206
206
  }>, {
207
+ type: AlertType;
208
+ closeAriaLabel: string;
207
209
  size: AlertSize;
208
210
  className: string;
209
211
  style: Record<string, string | number>;
210
- type: AlertType;
211
212
  title: string;
212
- closable: boolean;
213
- closeAriaLabel: string;
214
213
  description: string;
214
+ closable: boolean;
215
215
  showIcon: boolean;
216
216
  duration: number;
217
217
  banner: boolean;
@@ -236,9 +236,9 @@ declare const Anchor: vue.DefineComponent<vue.ExtractPropTypes<{
236
236
  onChange?: ((...args: any[]) => any) | undefined;
237
237
  onClick?: ((...args: any[]) => any) | undefined;
238
238
  }>, {
239
+ direction: AnchorDirection;
239
240
  className: string;
240
241
  style: Record<string, unknown>;
241
- direction: AnchorDirection;
242
242
  offsetTop: number;
243
243
  targetOffset: number;
244
244
  bounds: number;
@@ -421,12 +421,12 @@ declare const AreaChart: vue.DefineComponent<vue.ExtractPropTypes<{
421
421
  "onSeries-click"?: ((...args: any[]) => any) | undefined;
422
422
  "onSeries-hover"?: ((...args: any[]) => any) | undefined;
423
423
  }>, {
424
- padding: ChartPadding;
425
- hoverable: boolean;
426
- strokeWidth: number;
427
424
  width: number;
428
425
  height: number;
426
+ padding: ChartPadding;
429
427
  gradient: boolean;
428
+ hoverable: boolean;
429
+ strokeWidth: number;
430
430
  fillOpacity: number;
431
431
  selectable: boolean;
432
432
  responsive: boolean;
@@ -58,7 +58,7 @@ declare const AutoComplete: vue.DefineComponent<vue.ExtractPropTypes<{
58
58
  };
59
59
  }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
60
60
  [key: string]: any;
61
- }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, ("change" | "select" | "update:modelValue" | "update:searchValue" | "search-change")[], "change" | "select" | "update:modelValue" | "update:searchValue" | "search-change", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
61
+ }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, ("select" | "change" | "update:modelValue" | "update:searchValue" | "search-change")[], "select" | "change" | "update:modelValue" | "update:searchValue" | "search-change", vue.PublicProps, Readonly<vue.ExtractPropTypes<{
62
62
  modelValue: {
63
63
  type: PropType<string | number>;
64
64
  default: string;
@@ -112,17 +112,17 @@ declare const AutoComplete: vue.DefineComponent<vue.ExtractPropTypes<{
112
112
  default: undefined;
113
113
  };
114
114
  }>> & Readonly<{
115
- onChange?: ((...args: any[]) => any) | undefined;
116
115
  onSelect?: ((...args: any[]) => any) | undefined;
116
+ onChange?: ((...args: any[]) => any) | undefined;
117
117
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
118
118
  "onUpdate:searchValue"?: ((...args: any[]) => any) | undefined;
119
119
  "onSearch-change"?: ((...args: any[]) => any) | undefined;
120
120
  }>, {
121
- size: ComponentSize;
122
- emptyText: string;
123
121
  locale: Partial<TigerLocale>;
124
- disabled: boolean;
122
+ emptyText: string;
125
123
  placeholder: string;
124
+ size: ComponentSize;
125
+ disabled: boolean;
126
126
  modelValue: string | number;
127
127
  options: AutoCompleteOption[];
128
128
  searchValue: string;
@@ -151,9 +151,9 @@ declare const Avatar: vue.DefineComponent<vue.ExtractPropTypes<{
151
151
  size: AvatarSize;
152
152
  className: string;
153
153
  style: Record<string, string | number>;
154
+ text: string;
154
155
  src: string;
155
156
  alt: string;
156
- text: string;
157
157
  shape: AvatarShape;
158
158
  bgColor: string;
159
159
  textColor: string;
@@ -63,10 +63,10 @@ declare const AvatarGroup: vue.DefineComponent<vue.ExtractPropTypes<{
63
63
  default: undefined;
64
64
  };
65
65
  }>> & Readonly<{}>, {
66
- size: AvatarSize;
67
- className: string;
68
66
  locale: Partial<TigerLocale>;
69
67
  labels: Partial<TigerLocaleAvatarGroup>;
68
+ size: AvatarSize;
69
+ className: string;
70
70
  max: number;
71
71
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
72
72
 
@@ -104,8 +104,8 @@ declare const BackTop: vue.DefineComponent<vue.ExtractPropTypes<{
104
104
  }>, {
105
105
  className: string;
106
106
  style: Record<string, unknown>;
107
- position: BackTopPosition;
108
107
  target: () => HTMLElement | Window | null;
108
+ position: BackTopPosition;
109
109
  offset: ViewportOffset;
110
110
  placement: ViewportPlacement;
111
111
  duration: number;
@@ -100,15 +100,15 @@ declare const Badge: vue.DefineComponent<vue.ExtractPropTypes<{
100
100
  default: undefined;
101
101
  };
102
102
  }>> & Readonly<{}>, {
103
+ locale: Partial<TigerLocale>;
104
+ type: BadgeType;
103
105
  size: BadgeSize;
104
106
  className: string;
105
107
  style: Record<string, string | number>;
106
- type: BadgeType;
107
108
  variant: BadgeVariant;
108
- locale: Partial<TigerLocale>;
109
- position: BadgePosition;
110
- content: string | number;
111
109
  max: number;
110
+ content: string | number;
111
+ position: BadgePosition;
112
112
  showZero: boolean;
113
113
  standalone: boolean;
114
114
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
@@ -382,11 +382,11 @@ declare const BarChart: vue.DefineComponent<vue.ExtractPropTypes<{
382
382
  "onBar-click"?: ((...args: any[]) => any) | undefined;
383
383
  "onBar-hover"?: ((...args: any[]) => any) | undefined;
384
384
  }>, {
385
- padding: ChartPadding;
386
- hoverable: boolean;
387
385
  width: number;
388
386
  height: number;
387
+ padding: ChartPadding;
389
388
  gradient: boolean;
389
+ hoverable: boolean;
390
390
  selectable: boolean;
391
391
  responsive: boolean;
392
392
  xTicks: number;