@expcat/tigercat-vue 2.1.0 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/dist/{chunk-7W3NALIL.mjs → chunk-3FPS7XVB.mjs} +26 -27
  2. package/dist/{chunk-2OI6GWOT.mjs → chunk-3KAHJF7D.mjs} +12 -11
  3. package/dist/{chunk-IEAEB4TX.mjs → chunk-3OCHBGPF.mjs} +242 -51
  4. package/dist/{chunk-OHR7IUBQ.mjs → chunk-5OILGUNU.mjs} +2 -2
  5. package/dist/{chunk-OQVGB7X6.mjs → chunk-626VUZ2Q.mjs} +1 -1
  6. package/dist/{chunk-66OS5A4D.mjs → chunk-67VS6QHJ.mjs} +26 -12
  7. package/dist/{chunk-EHGFW5GX.mjs → chunk-6JAAXPBW.mjs} +4 -3
  8. package/dist/{chunk-JHMT5Q6P.mjs → chunk-6NYC7EY2.mjs} +29 -15
  9. package/dist/{chunk-6BDDX2R4.mjs → chunk-73Z7N7VG.mjs} +1 -4
  10. package/dist/{chunk-F3ZVVVYD.mjs → chunk-7C7SG3SS.mjs} +15 -3
  11. package/dist/{chunk-CHEXI7MO.mjs → chunk-7TJE7OYH.mjs} +4 -3
  12. package/dist/{chunk-EGIMTTZA.mjs → chunk-BOHE5URZ.mjs} +18 -3
  13. package/dist/{chunk-5RIHHZF6.mjs → chunk-BQK7LH2L.mjs} +4 -1
  14. package/dist/{chunk-E6EZHSGY.mjs → chunk-BSOLH6R5.mjs} +0 -1
  15. package/dist/{chunk-RSM6FOWX.mjs → chunk-CCC3S6LK.mjs} +6 -3
  16. package/dist/{chunk-U75YXWSA.mjs → chunk-CLTRADS7.mjs} +17 -5
  17. package/dist/{chunk-BEIPGX74.mjs → chunk-DRLQCY7R.mjs} +162 -7
  18. package/dist/{chunk-KBJANUZZ.mjs → chunk-E523VGZP.mjs} +1 -1
  19. package/dist/{chunk-4HUYX5WW.mjs → chunk-EC62TY2Y.mjs} +80 -19
  20. package/dist/{chunk-D3U2NJ32.mjs → chunk-FEQ7PZXI.mjs} +8 -2
  21. package/dist/{chunk-PE5OA4YG.mjs → chunk-FHUGOSEY.mjs} +8 -2
  22. package/dist/{chunk-OAPIT53X.mjs → chunk-FIEECAJV.mjs} +7 -10
  23. package/dist/{chunk-7SFB77JR.mjs → chunk-GBPMQJJJ.mjs} +8 -1
  24. package/dist/{chunk-6AMWX5K4.mjs → chunk-GQOPDD44.mjs} +1 -1
  25. package/dist/{chunk-5RXYJWNA.mjs → chunk-H4DEIGEG.mjs} +77 -25
  26. package/dist/{chunk-AU6IC6K7.mjs → chunk-IFASMNTU.mjs} +36 -16
  27. package/dist/{chunk-EZYOCPMM.mjs → chunk-IK2WHKDA.mjs} +29 -15
  28. package/dist/{chunk-HGXD57QM.mjs → chunk-JBS3AESR.mjs} +65 -23
  29. package/dist/{chunk-PYRKFQ6J.mjs → chunk-JIU5UEOU.mjs} +70 -26
  30. package/dist/{chunk-JALHMWKW.mjs → chunk-K5MHUMKR.mjs} +2 -2
  31. package/dist/{chunk-BZ6MVFV7.mjs → chunk-K5RYFPOQ.mjs} +17 -19
  32. package/dist/{chunk-DI6RRAGQ.mjs → chunk-KIUGJNQO.mjs} +4 -4
  33. package/dist/{chunk-5E4LINDO.mjs → chunk-LH2V2JMZ.mjs} +26 -10
  34. package/dist/{chunk-PQBKN2NH.mjs → chunk-LRFKHJDU.mjs} +14 -5
  35. package/dist/{chunk-W5XFWVNV.mjs → chunk-M4FWWEMX.mjs} +15 -6
  36. package/dist/{chunk-VLW3UBIR.mjs → chunk-N2XV37BL.mjs} +37 -41
  37. package/dist/{chunk-2LIIMWBR.mjs → chunk-OYU47A57.mjs} +1 -2
  38. package/dist/{chunk-KU2Q5V3L.mjs → chunk-P62TYR3M.mjs} +18 -2
  39. package/dist/{chunk-P5FDKBXG.mjs → chunk-P7X46BAW.mjs} +70 -3
  40. package/dist/{chunk-KROVW4AW.mjs → chunk-PJQTRDIG.mjs} +13 -3
  41. package/dist/{chunk-26OI3TEA.mjs → chunk-PMQSXEMT.mjs} +42 -6
  42. package/dist/{chunk-XLNK3Z2P.mjs → chunk-POWDTOMF.mjs} +88 -79
  43. package/dist/{chunk-AXDBME5A.mjs → chunk-PSGVG4TN.mjs} +38 -21
  44. package/dist/{chunk-7DWWNFRP.mjs → chunk-PWWWACHC.mjs} +1 -1
  45. package/dist/{chunk-UUWTKCMY.mjs → chunk-QWLD5FMJ.mjs} +1 -1
  46. package/dist/{chunk-ALIUAGJO.mjs → chunk-QZLOF36M.mjs} +7 -13
  47. package/dist/{chunk-WLYQHKLZ.mjs → chunk-QZRSFGZZ.mjs} +50 -11
  48. package/dist/{chunk-37W7XTA6.mjs → chunk-RHQWQJ4I.mjs} +4 -3
  49. package/dist/{chunk-32X54QKW.mjs → chunk-RRLE7QRH.mjs} +43 -22
  50. package/dist/{chunk-RID7A5V7.mjs → chunk-RRNQL6MJ.mjs} +23 -6
  51. package/dist/{chunk-VJ6YM2EW.mjs → chunk-S4BKVFQ7.mjs} +1 -1
  52. package/dist/{chunk-LPZBXTJ6.mjs → chunk-SAC4PAG3.mjs} +4 -4
  53. package/dist/{chunk-W5RZPTFD.mjs → chunk-SNNT64HK.mjs} +13 -2
  54. package/dist/{chunk-N3C6YI7I.mjs → chunk-SWMYIORV.mjs} +22 -7
  55. package/dist/{chunk-U4B5QT72.mjs → chunk-SX3NAN4M.mjs} +1 -1
  56. package/dist/{chunk-JL3CN4UK.mjs → chunk-TDBMAKTJ.mjs} +10 -3
  57. package/dist/chunk-UEGNXN5B.mjs +28 -0
  58. package/dist/{chunk-NEEGXKJW.mjs → chunk-UGHLEKEZ.mjs} +22 -3
  59. package/dist/{chunk-HKYRRQS7.mjs → chunk-UNQO7EVG.mjs} +1 -1
  60. package/dist/{chunk-VN2TWPRC.mjs → chunk-UR5F74ZB.mjs} +112 -18
  61. package/dist/{chunk-VCCK4CDT.mjs → chunk-URPXBKK4.mjs} +23 -5
  62. package/dist/{chunk-7KCOF5US.mjs → chunk-VY6FVIOZ.mjs} +10 -8
  63. package/dist/{chunk-KICZSLOX.mjs → chunk-W2ICYZVU.mjs} +1 -1
  64. package/dist/{chunk-FIVVKBBF.mjs → chunk-W3QOMJKQ.mjs} +8 -6
  65. package/dist/{chunk-DCMRB3HR.mjs → chunk-WV25G4M3.mjs} +4 -3
  66. package/dist/{chunk-ZOYHZF4N.mjs → chunk-X5LJT76O.mjs} +49 -32
  67. package/dist/{chunk-FSJRNEZK.mjs → chunk-YLO73TDM.mjs} +4 -4
  68. package/dist/{chunk-BNYA5IUB.mjs → chunk-YNXP34KO.mjs} +39 -38
  69. package/dist/{chunk-2T2NEZRZ.mjs → chunk-YVDTXHQ6.mjs} +1 -1
  70. package/dist/{chunk-AUMTHL6N.mjs → chunk-ZOP7PEKY.mjs} +2 -1
  71. package/dist/components/ActivityFeed.d.mts +23 -5
  72. package/dist/components/ActivityFeed.mjs +2 -2
  73. package/dist/components/Affix.mjs +1 -1
  74. package/dist/components/Alert.d.mts +1 -1
  75. package/dist/components/Anchor.d.mts +1 -1
  76. package/dist/components/Anchor.mjs +1 -1
  77. package/dist/components/AreaChart.mjs +4 -3
  78. package/dist/components/AutoComplete.mjs +1 -1
  79. package/dist/components/BarChart.mjs +4 -3
  80. package/dist/components/Calendar.mjs +1 -1
  81. package/dist/components/Cascader.mjs +1 -1
  82. package/dist/components/ChartCanvas.d.mts +7 -3
  83. package/dist/components/ChartCanvas.mjs +1 -1
  84. package/dist/components/ChatWindow.d.mts +26 -8
  85. package/dist/components/ChatWindow.mjs +3 -3
  86. package/dist/components/Checkbox.d.mts +1 -1
  87. package/dist/components/Code.d.mts +34 -7
  88. package/dist/components/Code.mjs +3 -1
  89. package/dist/components/CodeEditor.d.mts +1 -1
  90. package/dist/components/CollapsePanel.mjs +1 -1
  91. package/dist/components/ColorPicker.d.mts +19 -1
  92. package/dist/components/ColorPicker.mjs +3 -1
  93. package/dist/components/ColorSwatch.d.mts +6 -0
  94. package/dist/components/ColorSwatch.mjs +1 -1
  95. package/dist/components/CommentThread.d.mts +63 -27
  96. package/dist/components/CommentThread.mjs +2 -2
  97. package/dist/components/ContextMenu.d.mts +2 -2
  98. package/dist/components/Countdown.d.mts +2 -2
  99. package/dist/components/CronEditor.d.mts +1 -1
  100. package/dist/components/DataExport.mjs +2 -2
  101. package/dist/components/DataTableWithToolbar.mjs +8 -8
  102. package/dist/components/DatePicker.d.mts +1 -1
  103. package/dist/components/Descriptions.d.mts +1 -1
  104. package/dist/components/DonutChart.mjs +4 -4
  105. package/dist/components/Drawer.d.mts +1 -1
  106. package/dist/components/Dropdown.d.mts +21 -2
  107. package/dist/components/Dropdown.mjs +1 -1
  108. package/dist/components/FileManager.d.mts +7 -1
  109. package/dist/components/FileManager.mjs +1 -1
  110. package/dist/components/FloatButton.d.mts +31 -1
  111. package/dist/components/FloatButton.mjs +1 -1
  112. package/dist/components/FormWizard.mjs +1 -1
  113. package/dist/components/FunnelChart.mjs +3 -3
  114. package/dist/components/Gantt.d.mts +3 -1
  115. package/dist/components/Gantt.mjs +2 -2
  116. package/dist/components/GaugeChart.mjs +2 -2
  117. package/dist/components/HeatmapChart.mjs +3 -3
  118. package/dist/components/Icon.d.mts +1 -1
  119. package/dist/components/Image.d.mts +1 -1
  120. package/dist/components/Image.mjs +3 -3
  121. package/dist/components/ImageAnnotation.d.mts +1 -1
  122. package/dist/components/ImageGroup.mjs +2 -2
  123. package/dist/components/ImagePreview.mjs +1 -1
  124. package/dist/components/Input.mjs +1 -1
  125. package/dist/components/InputNumber.mjs +1 -1
  126. package/dist/components/InputOTP.d.mts +1 -1
  127. package/dist/components/Kanban.mjs +2 -2
  128. package/dist/components/LineChart.mjs +4 -3
  129. package/dist/components/Link.d.mts +1 -1
  130. package/dist/components/List.mjs +2 -2
  131. package/dist/components/Loading.mjs +1 -1
  132. package/dist/components/MarkdownEditor.d.mts +1 -1
  133. package/dist/components/MarkdownEditor.mjs +1 -1
  134. package/dist/components/MaskInput.d.mts +9 -3
  135. package/dist/components/MaskInput.mjs +1 -1
  136. package/dist/components/Menu.d.mts +2 -2
  137. package/dist/components/Modal.d.mts +1 -1
  138. package/dist/components/NavigationMenu.d.mts +3 -3
  139. package/dist/components/NotificationCenter.d.mts +44 -26
  140. package/dist/components/NotificationCenter.mjs +4 -4
  141. package/dist/components/NumberKeyboard.d.mts +1 -1
  142. package/dist/components/OrgChart.mjs +2 -2
  143. package/dist/components/PageHeader.d.mts +1 -1
  144. package/dist/components/Pagination.mjs +1 -1
  145. package/dist/components/PieChart.mjs +3 -3
  146. package/dist/components/Popconfirm.d.mts +1 -1
  147. package/dist/components/Popconfirm.mjs +2 -2
  148. package/dist/components/Popover.d.mts +2 -2
  149. package/dist/components/Popover.mjs +2 -2
  150. package/dist/components/QRCode.d.mts +2 -11
  151. package/dist/components/QRCode.mjs +1 -1
  152. package/dist/components/RadarChart.mjs +3 -3
  153. package/dist/components/Radio.d.mts +1 -1
  154. package/dist/components/Radio.mjs +1 -1
  155. package/dist/components/Rate.mjs +1 -1
  156. package/dist/components/Result.d.mts +1 -1
  157. package/dist/components/RichTextEditor.d.mts +1 -1
  158. package/dist/components/RichTextEditor.mjs +1 -1
  159. package/dist/components/ScatterChart.mjs +4 -3
  160. package/dist/components/ScrollSpy.mjs +1 -1
  161. package/dist/components/Select.d.mts +4 -6
  162. package/dist/components/Select.mjs +1 -1
  163. package/dist/components/Signature.mjs +1 -1
  164. package/dist/components/Slider.d.mts +18 -0
  165. package/dist/components/Slider.mjs +1 -1
  166. package/dist/components/SplitButton.d.mts +1 -1
  167. package/dist/components/SplitButton.mjs +2 -2
  168. package/dist/components/Splitter.d.mts +4 -4
  169. package/dist/components/Splitter.mjs +1 -1
  170. package/dist/components/Spotlight.d.mts +1 -1
  171. package/dist/components/Statistic.d.mts +2 -2
  172. package/dist/components/Stepper.d.mts +7 -1
  173. package/dist/components/Stepper.mjs +1 -1
  174. package/dist/components/SunburstChart.mjs +3 -3
  175. package/dist/components/Switch.d.mts +22 -6
  176. package/dist/components/Switch.mjs +1 -1
  177. package/dist/components/Table.d.mts +4 -4
  178. package/dist/components/Table.mjs +4 -4
  179. package/dist/components/TagsInput.d.mts +1 -1
  180. package/dist/components/TaskBoard.mjs +1 -1
  181. package/dist/components/Text.d.mts +2 -2
  182. package/dist/components/Textarea.mjs +1 -1
  183. package/dist/components/TimePicker.d.mts +1 -1
  184. package/dist/components/Tooltip.d.mts +1 -1
  185. package/dist/components/Tooltip.mjs +2 -2
  186. package/dist/components/Tour.mjs +1 -1
  187. package/dist/components/Transfer.d.mts +2 -1
  188. package/dist/components/Transfer.mjs +1 -1
  189. package/dist/components/TreeMapChart.mjs +3 -3
  190. package/dist/components/TreeSelect.mjs +1 -1
  191. package/dist/components/Upload.d.mts +1 -1
  192. package/dist/components/Upload.mjs +1 -1
  193. package/dist/components/Watermark.d.mts +1 -1
  194. package/dist/composables/useChartInteraction.d.mts +5 -0
  195. package/dist/composables/useChartInteraction.mjs +1 -1
  196. package/dist/index.d.mts +1 -1
  197. package/dist/index.mjs +57 -0
  198. package/package.json +2 -2
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  Select
3
- } from "./chunk-BZ6MVFV7.mjs";
3
+ } from "./chunk-K5RYFPOQ.mjs";
4
4
  import {
5
5
  Radio
6
- } from "./chunk-6BDDX2R4.mjs";
6
+ } from "./chunk-73Z7N7VG.mjs";
7
7
  import {
8
8
  Pagination
9
- } from "./chunk-2LIIMWBR.mjs";
9
+ } from "./chunk-OYU47A57.mjs";
10
10
  import {
11
11
  Empty
12
12
  } from "./chunk-SJINC5NF.mjs";
@@ -128,8 +128,8 @@ var tableProps = {
128
128
  pagination: {
129
129
  type: [Object, Boolean],
130
130
  default: () => ({
131
- current: 1,
132
- pageSize: 10,
131
+ defaultCurrent: 1,
132
+ defaultPageSize: 10,
133
133
  total: 0,
134
134
  pageSizeOptions: [10, 20, 50, 100],
135
135
  showSizeChanger: true,
@@ -398,7 +398,13 @@ function useTableState(props, emit, measuredColumnWidths) {
398
398
  }
399
399
  if (sortState.value.key && sortState.value.direction) {
400
400
  const column = columnByKey.value[sortState.value.key];
401
- data = sortData(data, sortState.value.key, sortState.value.direction, column?.sortFn);
401
+ data = sortData(
402
+ data,
403
+ sortState.value.key,
404
+ sortState.value.direction,
405
+ column?.sortFn,
406
+ props.columns
407
+ );
402
408
  }
403
409
  return data;
404
410
  });
@@ -764,7 +770,8 @@ import {
764
770
  getFixedColumnStyle,
765
771
  getCheckboxCellClasses,
766
772
  getExpandIconCellClasses,
767
- formatTableSortByText
773
+ formatTableSortByText,
774
+ tableSortButtonClasses
768
775
  } from "@expcat/tigercat-core";
769
776
  function renderTableHeader(ctx, props, slots, labels) {
770
777
  const headerCells = [];
@@ -805,14 +812,31 @@ function renderTableHeader(ctx, props, slots, labels) {
805
812
  width: typeof column.width === "number" ? `${column.width}px` : column.width
806
813
  } : void 0;
807
814
  const style = fixedStyle ? { ...widthStyle, ...fixedStyle } : widthStyle;
808
- const headerContent = [];
815
+ const titleContent = [];
809
816
  const slotContent = slots[`header-${column.key}`]?.();
810
817
  if (slotContent && slotContent.length > 0) {
811
- headerContent.push(...slotContent);
818
+ titleContent.push(...slotContent);
812
819
  } else if (column.renderHeader) {
813
- headerContent.push(column.renderHeader());
820
+ titleContent.push(column.renderHeader());
821
+ } else {
822
+ titleContent.push(column.title);
823
+ }
824
+ const headerContent = [];
825
+ if (column.sortable) {
826
+ headerContent.push(
827
+ h2(
828
+ "button",
829
+ {
830
+ type: "button",
831
+ "data-tiger-table-sort": "",
832
+ class: tableSortButtonClasses,
833
+ onClick: () => ctx.handleSort(column.key)
834
+ },
835
+ [...titleContent, SortIcon(sortDirection)]
836
+ )
837
+ );
814
838
  } else {
815
- headerContent.push(column.title);
839
+ headerContent.push(...titleContent);
816
840
  }
817
841
  if (props.columnLockable) {
818
842
  headerContent.push(
@@ -837,9 +861,6 @@ function renderTableHeader(ctx, props, slots, labels) {
837
861
  )
838
862
  );
839
863
  }
840
- if (column.sortable) {
841
- headerContent.push(SortIcon(sortDirection));
842
- }
843
864
  headerCells.push(
844
865
  h2(
845
866
  "th",
@@ -865,8 +886,7 @@ function renderTableHeader(ctx, props, slots, labels) {
865
886
  draggable: props.columnDraggable ? "true" : void 0,
866
887
  onDragstart: props.columnDraggable ? () => ctx.handleDragStart(column.key) : void 0,
867
888
  onDragover: props.columnDraggable ? (e) => e.preventDefault() : void 0,
868
- onDrop: props.columnDraggable ? () => ctx.handleDrop(column.key) : void 0,
869
- onClick: column.sortable ? () => ctx.handleSort(column.key) : void 0
889
+ onDrop: props.columnDraggable ? () => ctx.handleDrop(column.key) : void 0
870
890
  },
871
891
  [
872
892
  h2("div", { class: "flex items-center gap-2" }, headerContent),
@@ -1,6 +1,9 @@
1
+ import {
2
+ useResponsiveChartSize
3
+ } from "./chunk-UEGNXN5B.mjs";
1
4
  import {
2
5
  useChartInteraction
3
- } from "./chunk-PE5OA4YG.mjs";
6
+ } from "./chunk-FHUGOSEY.mjs";
4
7
  import {
5
8
  ChartSeries
6
9
  } from "./chunk-2ZUEXCVJ.mjs";
@@ -12,7 +15,7 @@ import {
12
15
  } from "./chunk-ZWVA7HT3.mjs";
13
16
  import {
14
17
  ChartCanvas
15
- } from "./chunk-W5RZPTFD.mjs";
18
+ } from "./chunk-SNNT64HK.mjs";
16
19
  import {
17
20
  ChartGrid
18
21
  } from "./chunk-MI6TL3CQ.mjs";
@@ -30,7 +33,6 @@ import {
30
33
  createPointScale,
31
34
  getStableChartGradientPrefix,
32
35
  getChartElementOpacity,
33
- getChartInnerRect,
34
36
  getNumberExtent,
35
37
  linePointTransitionClasses,
36
38
  stackSeriesData,
@@ -255,7 +257,12 @@ var AreaChart = defineComponent({
255
257
  const hoveredPointInfo = ref(null);
256
258
  const tooltipPosition = ref({ x: 0, y: 0 });
257
259
  const gradientPrefix = getStableChartGradientPrefix("area", useId());
258
- const innerRect = computed(() => getChartInnerRect(props.width, props.height, props.padding));
260
+ const { innerRect, onResolvedSizeChange } = useResponsiveChartSize(
261
+ () => props.width,
262
+ () => props.height,
263
+ () => props.padding,
264
+ () => props.responsive
265
+ );
259
266
  const resolvedSeries = computed(
260
267
  () => resolveSeriesData(props.series, props.data, {
261
268
  color: props.areaColor,
@@ -275,6 +282,7 @@ var AreaChart = defineComponent({
275
282
  wrapperClasses
276
283
  } = useChartInteraction({
277
284
  hoverable: computed(() => props.hoverable),
285
+ showTooltip: computed(() => props.showTooltip),
278
286
  hoveredIndexProp: () => props.hoveredIndex,
279
287
  selectable: computed(() => props.selectable),
280
288
  selectedIndexProp: () => props.selectedIndex,
@@ -401,19 +409,23 @@ var AreaChart = defineComponent({
401
409
  const handlePointMouseEnter = (seriesIndex, pointIndex, event) => {
402
410
  hoveredPointInfo.value = { seriesIndex, pointIndex };
403
411
  tooltipPosition.value = { x: event.clientX, y: event.clientY };
404
- emit(
405
- "point-hover",
406
- seriesIndex,
407
- pointIndex,
408
- resolvedSeries.value[seriesIndex]?.data[pointIndex]
409
- );
412
+ if (props.hoverable) {
413
+ emit(
414
+ "point-hover",
415
+ seriesIndex,
416
+ pointIndex,
417
+ resolvedSeries.value[seriesIndex]?.data[pointIndex]
418
+ );
419
+ }
410
420
  };
411
421
  const handlePointMouseMove = (event) => {
412
422
  tooltipPosition.value = { x: event.clientX, y: event.clientY };
413
423
  };
414
424
  const handlePointMouseLeave = () => {
415
425
  hoveredPointInfo.value = null;
416
- emit("point-hover", null, null, null);
426
+ if (props.hoverable) {
427
+ emit("point-hover", null, null, null);
428
+ }
417
429
  };
418
430
  const showPointTooltipFromElement = (el, seriesIndex, pointIndex) => {
419
431
  if (!props.hoverable) return;
@@ -444,6 +456,7 @@ var AreaChart = defineComponent({
444
456
  };
445
457
  return () => {
446
458
  const pointClickable = props.selectable || typeof instance?.vnode.props?.onPointClick === "function";
459
+ const trackPointHover = props.showTooltip || props.hoverable;
447
460
  const reversedSeriesData = [...seriesData.value].reverse();
448
461
  const chart = h(
449
462
  ChartCanvas,
@@ -454,7 +467,8 @@ var AreaChart = defineComponent({
454
467
  responsive: props.responsive,
455
468
  title: props.title,
456
469
  desc: props.desc,
457
- className: classNames(props.className)
470
+ className: classNames(props.className),
471
+ onResolvedSizeChange
458
472
  },
459
473
  {
460
474
  default: () => [
@@ -673,9 +687,9 @@ var AreaChart = defineComponent({
673
687
  tabindex: pointInteractive ? 0 : void 0,
674
688
  "data-point-index": point.pointIndex,
675
689
  "data-series-key": sd.seriesKey,
676
- onMouseenter: props.hoverable ? (e) => handlePointMouseEnter(sd.seriesIndex, point.pointIndex, e) : void 0,
677
- onMousemove: props.hoverable ? handlePointMouseMove : void 0,
678
- onMouseleave: props.hoverable ? handlePointMouseLeave : void 0,
690
+ onMouseenter: trackPointHover ? (e) => handlePointMouseEnter(sd.seriesIndex, point.pointIndex, e) : void 0,
691
+ onMousemove: trackPointHover ? handlePointMouseMove : void 0,
692
+ onMouseleave: trackPointHover ? handlePointMouseLeave : void 0,
679
693
  onClick: pointClickable ? (e) => {
680
694
  e.stopPropagation();
681
695
  handlePointClick(sd.seriesIndex, point.pointIndex);
@@ -17,11 +17,34 @@ import {
17
17
  floatButtonSizeClasses,
18
18
  floatButtonTypeClasses,
19
19
  floatButtonDisabledClasses,
20
- floatButtonGroupClasses,
20
+ floatButtonIconSizeClasses,
21
+ floatButtonPlusIconPath,
22
+ getFloatButtonGroupClasses,
21
23
  getViewportOffsetStyle,
22
24
  viewportFloatingBaseClasses,
23
25
  viewportPlacementClasses
24
26
  } from "@expcat/tigercat-core";
27
+ function renderDefaultPlusIcon(size) {
28
+ return h(
29
+ "svg",
30
+ {
31
+ xmlns: "http://www.w3.org/2000/svg",
32
+ fill: "none",
33
+ viewBox: "0 0 24 24",
34
+ stroke: "currentColor",
35
+ "stroke-width": "2",
36
+ class: floatButtonIconSizeClasses[size],
37
+ "aria-hidden": "true"
38
+ },
39
+ [
40
+ h("path", {
41
+ "stroke-linecap": "round",
42
+ "stroke-linejoin": "round",
43
+ d: floatButtonPlusIconPath
44
+ })
45
+ ]
46
+ );
47
+ }
25
48
  var FloatButtonGroupShapeKey = /* @__PURE__ */ Symbol("FloatButtonGroupShape");
26
49
  var FloatButton = defineComponent({
27
50
  name: "TigerFloatButton",
@@ -101,6 +124,7 @@ var FloatButton = defineComponent({
101
124
  };
102
125
  return () => {
103
126
  const attrsRecord = attrs;
127
+ const content = slots.default ? slots.default() : renderDefaultPlusIcon(props.size);
104
128
  const btn = h(
105
129
  "button",
106
130
  {
@@ -113,11 +137,11 @@ var FloatButton = defineComponent({
113
137
  ),
114
138
  type: "button",
115
139
  disabled: props.disabled,
116
- "aria-label": props.ariaLabel ?? props.tooltip,
140
+ "aria-label": slots.default ? props.ariaLabel ?? props.tooltip : props.ariaLabel ?? props.tooltip ?? "Add",
117
141
  title: props.tooltip,
118
142
  onClick: handleClick
119
143
  },
120
- slots.default?.()
144
+ content
121
145
  );
122
146
  return btn;
123
147
  };
@@ -146,6 +170,18 @@ var FloatButtonGroup = defineComponent({
146
170
  style: {
147
171
  type: Object,
148
172
  default: void 0
173
+ },
174
+ placement: {
175
+ type: String,
176
+ default: "bottom-right"
177
+ },
178
+ offset: {
179
+ type: [Number, String, Object],
180
+ default: void 0
181
+ },
182
+ portal: {
183
+ type: Boolean,
184
+ default: true
149
185
  }
150
186
  },
151
187
  emits: ["update:open"],
@@ -163,7 +199,10 @@ var FloatButtonGroup = defineComponent({
163
199
  };
164
200
  const groupClasses = computed(
165
201
  () => classNames(
166
- floatButtonGroupClasses,
202
+ getFloatButtonGroupClasses({
203
+ placement: props.placement,
204
+ portal: props.portal
205
+ }),
167
206
  props.className,
168
207
  coerceClassValue(attrs.class)
169
208
  )
@@ -182,25 +221,28 @@ var FloatButtonGroup = defineComponent({
182
221
  children.push(node);
183
222
  }
184
223
  }
185
- return h(Teleport, { to: "body" }, [
186
- h(
187
- "div",
188
- {
189
- ...attrs,
190
- class: groupClasses.value,
191
- style: mergeStyleValues(attrsRecord.style, props.style),
192
- onMouseenter: props.trigger === "hover" ? () => {
193
- internalOpen.value = true;
194
- emit("update:open", true);
195
- } : void 0,
196
- onMouseleave: props.trigger === "hover" ? () => {
197
- internalOpen.value = false;
198
- emit("update:open", false);
199
- } : void 0
200
- },
201
- children
202
- )
203
- ]);
224
+ const groupRoot = h(
225
+ "div",
226
+ {
227
+ ...attrs,
228
+ class: groupClasses.value,
229
+ style: mergeStyleValues(
230
+ getViewportOffsetStyle(props.placement, props.offset),
231
+ attrsRecord.style,
232
+ props.style
233
+ ),
234
+ onMouseenter: props.trigger === "hover" ? () => {
235
+ internalOpen.value = true;
236
+ emit("update:open", true);
237
+ } : void 0,
238
+ onMouseleave: props.trigger === "hover" ? () => {
239
+ internalOpen.value = false;
240
+ emit("update:open", false);
241
+ } : void 0
242
+ },
243
+ children
244
+ );
245
+ return props.portal ? h(Teleport, { to: "body" }, [groupRoot]) : groupRoot;
204
246
  };
205
247
  }
206
248
  });
@@ -3,30 +3,48 @@ import {
3
3
  } from "./chunk-HS4YQGZQ.mjs";
4
4
  import {
5
5
  Input
6
- } from "./chunk-XLNK3Z2P.mjs";
6
+ } from "./chunk-POWDTOMF.mjs";
7
7
  import {
8
8
  Empty
9
9
  } from "./chunk-SJINC5NF.mjs";
10
10
  import {
11
11
  Textarea
12
- } from "./chunk-2OI6GWOT.mjs";
12
+ } from "./chunk-3KAHJF7D.mjs";
13
13
  import {
14
14
  Button
15
15
  } from "./chunk-YZBQ6IR7.mjs";
16
16
  import {
17
17
  Avatar
18
18
  } from "./chunk-ZFTRR3KW.mjs";
19
+ import {
20
+ useTigerConfig
21
+ } from "./chunk-UOJOJBEU.mjs";
19
22
 
20
23
  // src/components/ChatWindow.ts
21
- import { defineComponent, h, computed, ref, watch, onMounted, onUpdated } from "vue";
24
+ import { defineComponent, h, computed, ref, watch, onMounted } from "vue";
22
25
  import {
23
26
  classNames,
24
27
  coerceClassValue,
25
28
  getChatMessageStatusInfo,
29
+ buildChatMessageStatusInfo,
26
30
  getChatStatusBarClasses,
27
31
  formatChatTime,
28
- mergeStyleValues
32
+ mergeStyleValues,
33
+ getChatWindowLabels,
34
+ mergeTigerLocale,
35
+ resolveLocaleText
29
36
  } from "@expcat/tigercat-core";
37
+ var CHAT_STICK_TO_BOTTOM_PX = 32;
38
+ function resolveChatScroller(virtual, messageList, virtualWrapper) {
39
+ if (virtual) {
40
+ const wrapper = virtualWrapper;
41
+ return wrapper?.firstElementChild ?? wrapper;
42
+ }
43
+ return messageList;
44
+ }
45
+ function isChatScrollerNearBottom(scroller) {
46
+ return scroller.scrollHeight - scroller.scrollTop - scroller.clientHeight <= CHAT_STICK_TO_BOTTOM_PX;
47
+ }
30
48
  var ChatWindow = defineComponent({
31
49
  name: "TigerChatWindow",
32
50
  inheritAttrs: false,
@@ -44,7 +62,7 @@ var ChatWindow = defineComponent({
44
62
  },
45
63
  placeholder: {
46
64
  type: String,
47
- default: "\u8BF7\u8F93\u5165\u6D88\u606F"
65
+ default: void 0
48
66
  },
49
67
  disabled: {
50
68
  type: Boolean,
@@ -55,11 +73,19 @@ var ChatWindow = defineComponent({
55
73
  },
56
74
  emptyText: {
57
75
  type: String,
58
- default: "\u6682\u65E0\u6D88\u606F"
76
+ default: void 0
59
77
  },
60
78
  sendText: {
61
79
  type: String,
62
- default: "\u53D1\u9001"
80
+ default: void 0
81
+ },
82
+ locale: {
83
+ type: Object,
84
+ default: void 0
85
+ },
86
+ labels: {
87
+ type: Object,
88
+ default: void 0
63
89
  },
64
90
  messageListAriaLabel: {
65
91
  type: String
@@ -143,6 +169,10 @@ var ChatWindow = defineComponent({
143
169
  send: null
144
170
  },
145
171
  setup(props, { emit, attrs, slots }) {
172
+ const config = useTigerConfig();
173
+ const mergedLocale = computed(() => mergeTigerLocale(config.value.locale, props.locale));
174
+ const labels = computed(() => getChatWindowLabels(mergedLocale.value, props.labels));
175
+ const statusMap = computed(() => buildChatMessageStatusInfo(labels.value));
146
176
  const localValue = ref(props.modelValue ?? props.defaultValue ?? "");
147
177
  watch(
148
178
  () => props.modelValue,
@@ -194,29 +224,35 @@ var ChatWindow = defineComponent({
194
224
  };
195
225
  const messageListRef = ref(null);
196
226
  const virtualWrapperRef = ref(null);
227
+ const stickToBottom = ref(true);
228
+ const resolveScroller = () => resolveChatScroller(props.virtual, messageListRef.value, virtualWrapperRef.value);
229
+ const syncStickToBottom = () => {
230
+ const scroller = resolveScroller();
231
+ if (!scroller) return;
232
+ stickToBottom.value = isChatScrollerNearBottom(scroller);
233
+ };
197
234
  const scrollToBottom = () => {
198
235
  if (!props.autoScrollToBottom) return;
199
236
  requestAnimationFrame(() => {
200
- if (props.virtual) {
201
- const wrapper = virtualWrapperRef.value;
202
- const scroller = wrapper?.firstElementChild ?? wrapper;
203
- if (scroller) {
204
- scroller.scrollTop = scroller.scrollHeight;
205
- }
206
- } else if (messageListRef.value) {
207
- messageListRef.value.scrollTop = messageListRef.value.scrollHeight;
237
+ const scroller = resolveScroller();
238
+ if (scroller) {
239
+ scroller.scrollTop = scroller.scrollHeight;
240
+ stickToBottom.value = true;
208
241
  }
209
242
  });
210
243
  };
211
244
  onMounted(scrollToBottom);
212
- onUpdated(scrollToBottom);
213
245
  watch(
214
246
  () => props.messages.length,
215
- () => scrollToBottom()
247
+ () => {
248
+ if (!resolveScroller() || stickToBottom.value) {
249
+ scrollToBottom();
250
+ }
251
+ }
216
252
  );
217
253
  const renderMessageItem = (message, index) => {
218
254
  const isSelf = message.direction === "self";
219
- const statusInfo = message.status ? getChatMessageStatusInfo(message.status) : void 0;
255
+ const statusInfo = message.status ? getChatMessageStatusInfo(message.status, statusMap.value) : void 0;
220
256
  const timeText = props.showTime ? formatChatTime(message.time) : "";
221
257
  const customContent = slots.message?.({ message, index });
222
258
  return h(
@@ -270,10 +306,11 @@ var ChatWindow = defineComponent({
270
306
  );
271
307
  };
272
308
  const renderInput = () => {
273
- const resolvedInputLabel = props.inputAriaLabel ?? props.placeholder ?? "\u6D88\u606F\u8F93\u5165";
309
+ const resolvedPlaceholder = resolveLocaleText(labels.value.placeholder, props.placeholder);
310
+ const resolvedInputLabel = props.inputAriaLabel ?? resolvedPlaceholder;
274
311
  const commonProps = {
275
312
  modelValue: inputValue.value,
276
- placeholder: props.placeholder,
313
+ placeholder: resolvedPlaceholder,
277
314
  disabled: props.disabled,
278
315
  maxLength: props.maxLength,
279
316
  onKeydown: handleKeydown,
@@ -302,7 +339,8 @@ var ChatWindow = defineComponent({
302
339
  role: "log",
303
340
  "aria-live": "polite",
304
341
  "aria-relevant": "additions text",
305
- "aria-label": props.messageListAriaLabel ?? "\u6D88\u606F\u5217\u8868"
342
+ "aria-label": props.messageListAriaLabel ?? "Message list",
343
+ onScroll: syncStickToBottom
306
344
  },
307
345
  [
308
346
  h(
@@ -310,7 +348,8 @@ var ChatWindow = defineComponent({
310
348
  {
311
349
  itemCount: props.messages.length,
312
350
  itemHeight: props.virtualItemHeight,
313
- height: props.virtualHeight
351
+ height: props.virtualHeight,
352
+ onScroll: syncStickToBottom
314
353
  },
315
354
  {
316
355
  default: ({ index }) => renderMessageItem(props.messages[index], index)
@@ -325,7 +364,8 @@ var ChatWindow = defineComponent({
325
364
  role: "log",
326
365
  "aria-live": "polite",
327
366
  "aria-relevant": "additions text",
328
- "aria-label": props.messageListAriaLabel ?? "\u6D88\u606F\u5217\u8868"
367
+ "aria-label": props.messageListAriaLabel ?? "Message list",
368
+ onScroll: syncStickToBottom
329
369
  },
330
370
  props.messages.length === 0 ? [
331
371
  h(
@@ -333,7 +373,11 @@ var ChatWindow = defineComponent({
333
373
  {
334
374
  class: "h-full flex items-center justify-center py-8"
335
375
  },
336
- [h(Empty, { description: props.emptyText })]
376
+ [
377
+ h(Empty, {
378
+ description: resolveLocaleText(labels.value.emptyText, props.emptyText)
379
+ })
380
+ ]
337
381
  )
338
382
  ] : props.messages.map((message, index) => renderMessageItem(message, index))
339
383
  ),
@@ -356,9 +400,9 @@ var ChatWindow = defineComponent({
356
400
  {
357
401
  disabled: !canSend.value,
358
402
  onClick: handleSend,
359
- "aria-label": props.sendAriaLabel ?? props.sendText
403
+ "aria-label": props.sendAriaLabel ?? resolveLocaleText(labels.value.sendText, props.sendText)
360
404
  },
361
- () => props.sendText
405
+ () => resolveLocaleText(labels.value.sendText, props.sendText)
362
406
  )
363
407
  ]
364
408
  )
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  ImagePreview
3
- } from "./chunk-LPZBXTJ6.mjs";
3
+ } from "./chunk-SAC4PAG3.mjs";
4
4
  import {
5
5
  useFloatingPopup
6
- } from "./chunk-26OI3TEA.mjs";
6
+ } from "./chunk-PMQSXEMT.mjs";
7
7
  import {
8
8
  renderVueOverlayTeleport
9
9
  } from "./chunk-Q7Y22OFX.mjs";
@@ -118,12 +118,11 @@ var Select = defineComponent({
118
118
  */
119
119
  disabled: Boolean,
120
120
  /**
121
- * Placeholder text
122
- * @default 'Select an option'
121
+ * Placeholder text. Defaults to ConfigProvider locale `select.placeholder`.
123
122
  */
124
123
  placeholder: {
125
124
  type: String,
126
- default: "Select an option"
125
+ default: void 0
127
126
  },
128
127
  /**
129
128
  * Enable search functionality
@@ -284,36 +283,39 @@ var Select = defineComponent({
284
283
  const flatSelectableOptions = computed(() => {
285
284
  return creatableOption.value ? [...flatFilteredOptions.value, creatableOption.value] : flatFilteredOptions.value;
286
285
  });
286
+ const labels = computed(() => getSelectLabels(mergedLocale.value, props.labels));
287
+ const placeholderText = computed(
288
+ () => resolveLocaleText(labels.value.placeholder, props.placeholder)
289
+ );
290
+ const doneText = computed(() => resolveLocaleText(labels.value.doneText));
287
291
  const displayText = computed(() => {
288
292
  if (props.multiple && Array.isArray(props.modelValue)) {
289
293
  if (props.modelValue.length === 0) {
290
- return props.placeholder;
294
+ return placeholderText.value;
291
295
  }
292
296
  const currentValue = props.modelValue;
293
297
  const selectedOptions = [...allOptions.value, ...createdOptions.value].filter(
294
298
  (opt) => currentValue.includes(opt.value)
295
299
  );
296
- const labels2 = selectedOptions.map((opt) => opt.label);
297
- if (props.maxTagCount !== void 0 && labels2.length > props.maxTagCount) {
298
- const visible = labels2.slice(0, props.maxTagCount);
299
- return `${visible.join(", ")} +${labels2.length - props.maxTagCount}`;
300
+ const optionLabels = selectedOptions.map((opt) => opt.label);
301
+ if (props.maxTagCount !== void 0 && optionLabels.length > props.maxTagCount) {
302
+ const visible = optionLabels.slice(0, props.maxTagCount);
303
+ return `${visible.join(", ")} +${optionLabels.length - props.maxTagCount}`;
300
304
  }
301
- return labels2.join(", ");
305
+ return optionLabels.join(", ");
302
306
  }
303
307
  const value = Array.isArray(props.modelValue) ? void 0 : props.modelValue;
304
308
  if (value === void 0 || value === null || value === "") {
305
- return props.placeholder;
309
+ return placeholderText.value;
306
310
  }
307
311
  const option = [...allOptions.value, ...createdOptions.value].find(
308
312
  (opt) => opt.value === value
309
313
  );
310
- return option ? option.label : props.placeholder;
314
+ return option ? option.label : placeholderText.value;
311
315
  });
312
316
  const showClearButton = computed(() => {
313
317
  return props.clearable && !props.disabled && props.modelValue !== void 0 && props.modelValue !== null && props.modelValue !== "" && (!Array.isArray(props.modelValue) || props.modelValue.length > 0);
314
318
  });
315
- const labels = computed(() => getSelectLabels(mergedLocale.value, props.labels));
316
- const doneText = computed(() => resolveLocaleText(labels.value.doneText));
317
319
  function isSelected(option) {
318
320
  if (props.multiple && Array.isArray(props.modelValue)) {
319
321
  return props.modelValue.includes(option.value);
@@ -615,7 +617,7 @@ var Select = defineComponent({
615
617
  {
616
618
  class: classNames(
617
619
  "flex-1 text-left truncate",
618
- displayText.value === props.placeholder && "text-[var(--tiger-select-placeholder,var(--tiger-text-muted,#9ca3af))]"
620
+ displayText.value === placeholderText.value && "text-[var(--tiger-select-placeholder,var(--tiger-text-muted,#9ca3af))]"
619
621
  )
620
622
  },
621
623
  displayText.value
@@ -816,11 +818,7 @@ var Select = defineComponent({
816
818
  })() : h(
817
819
  "div",
818
820
  { class: selectEmptyStateClasses },
819
- resolveLocaleText(
820
- "No options found",
821
- props.emptyText,
822
- mergedLocale.value?.common?.emptyText
823
- )
821
+ resolveLocaleText(labels.value.emptyText, props.emptyText)
824
822
  ),
825
823
  h("div", { class: selectDoneActionClasses }, [
826
824
  h(
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  Table
3
- } from "./chunk-AU6IC6K7.mjs";
3
+ } from "./chunk-IFASMNTU.mjs";
4
4
  import {
5
5
  Select
6
- } from "./chunk-BZ6MVFV7.mjs";
6
+ } from "./chunk-K5RYFPOQ.mjs";
7
7
  import {
8
8
  Popover
9
- } from "./chunk-OQVGB7X6.mjs";
9
+ } from "./chunk-626VUZ2Q.mjs";
10
10
  import {
11
11
  Input
12
- } from "./chunk-XLNK3Z2P.mjs";
12
+ } from "./chunk-POWDTOMF.mjs";
13
13
  import {
14
14
  Checkbox
15
15
  } from "./chunk-MYKKKVGK.mjs";