@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,5 +1,5 @@
1
1
  // src/components/Stepper.ts
2
- import { defineComponent, h, onBeforeUnmount } from "vue";
2
+ import { computed, defineComponent, h, onBeforeUnmount, ref, watch } from "vue";
3
3
  import {
4
4
  stepperBaseClasses,
5
5
  getStepperInputClasses,
@@ -15,7 +15,8 @@ import {
15
15
  var Stepper = defineComponent({
16
16
  name: "TigerStepper",
17
17
  props: {
18
- modelValue: { type: Number, default: 0 },
18
+ modelValue: { type: Number },
19
+ defaultValue: { type: Number, default: 0 },
19
20
  min: { type: Number, default: -Infinity },
20
21
  max: { type: Number, default: Infinity },
21
22
  step: { type: Number, default: 1 },
@@ -27,17 +28,32 @@ var Stepper = defineComponent({
27
28
  },
28
29
  emits: ["update:modelValue", "change"],
29
30
  setup(props, { emit, attrs }) {
31
+ const inner = ref(props.defaultValue ?? 0);
32
+ const currentValue = computed(
33
+ () => props.modelValue !== void 0 ? props.modelValue : inner.value
34
+ );
35
+ watch(
36
+ () => props.modelValue,
37
+ (value) => {
38
+ if (value !== void 0) {
39
+ inner.value = value;
40
+ }
41
+ }
42
+ );
30
43
  const repeatController = createRafRepeatActionController();
31
- let repeatValue = props.modelValue;
44
+ let repeatValue = currentValue.value;
32
45
  let suppressNextClick = false;
33
46
  onBeforeUnmount(() => repeatController.stop());
34
47
  function setValue(v) {
35
48
  const clamped = clampStepperValue(v, props.min, props.max, props.precision);
49
+ if (props.modelValue === void 0) {
50
+ inner.value = clamped;
51
+ }
36
52
  emit("update:modelValue", clamped);
37
53
  emit("change", clamped);
38
54
  return clamped;
39
55
  }
40
- function stepBy(direction, baseValue = props.modelValue) {
56
+ function stepBy(direction, baseValue = currentValue.value) {
41
57
  return setValue(direction === "up" ? baseValue + props.step : baseValue - props.step);
42
58
  }
43
59
  function decrement() {
@@ -60,10 +76,10 @@ var Stepper = defineComponent({
60
76
  return (event) => {
61
77
  event.preventDefault();
62
78
  if (props.disabled) return;
63
- if (direction === "down" && props.modelValue <= props.min) return;
64
- if (direction === "up" && props.modelValue >= props.max) return;
79
+ if (direction === "down" && currentValue.value <= props.min) return;
80
+ if (direction === "up" && currentValue.value >= props.max) return;
65
81
  suppressNextClick = true;
66
- repeatValue = props.modelValue;
82
+ repeatValue = currentValue.value;
67
83
  repeatController.start(() => {
68
84
  const baseValue = repeatValue;
69
85
  const nextValue = stepBy(direction, baseValue);
@@ -91,8 +107,8 @@ var Stepper = defineComponent({
91
107
  [h("path", { d, "fill-rule": "evenodd", "clip-rule": "evenodd" })]
92
108
  );
93
109
  return () => {
94
- const atMin = props.modelValue <= props.min;
95
- const atMax = props.modelValue >= props.max;
110
+ const atMin = currentValue.value <= props.min;
111
+ const atMax = currentValue.value >= props.max;
96
112
  return h(
97
113
  "div",
98
114
  {
@@ -119,7 +135,7 @@ var Stepper = defineComponent({
119
135
  h("input", {
120
136
  type: "text",
121
137
  class: getStepperInputClasses(props.size),
122
- value: props.precision !== void 0 ? props.modelValue.toFixed(props.precision) : String(props.modelValue),
138
+ value: props.precision !== void 0 ? currentValue.value.toFixed(props.precision) : String(currentValue.value),
123
139
  disabled: props.disabled,
124
140
  "aria-label": "Value",
125
141
  onChange: handleInput
@@ -114,7 +114,13 @@ var Transfer = defineComponent({
114
114
  default: void 0
115
115
  }
116
116
  },
117
- emits: ["update:modelValue", "update:searchValue", "change", "search-change"],
117
+ emits: [
118
+ "update:modelValue",
119
+ "update:targetKeys",
120
+ "update:searchValue",
121
+ "change",
122
+ "search-change"
123
+ ],
118
124
  setup(props, { emit, attrs }) {
119
125
  const config = useTigerConfig();
120
126
  const mergedLocale = computed(() => mergeTigerLocale(config.value.locale, props.locale));
@@ -183,6 +189,11 @@ var Transfer = defineComponent({
183
189
  }
184
190
  targetSelectedKeys.value = next;
185
191
  }
192
+ function updateTargetKeys(newTargetKeys, direction, movedKeys) {
193
+ emit("update:modelValue", newTargetKeys);
194
+ emit("update:targetKeys", newTargetKeys);
195
+ emit("change", newTargetKeys, direction, movedKeys);
196
+ }
186
197
  function moveRight() {
187
198
  if (!canMoveRight.value) return;
188
199
  const { targetKeys: newTargetKeys, movedKeys } = moveTransferItems(
@@ -192,8 +203,7 @@ var Transfer = defineComponent({
192
203
  props.dataSource
193
204
  );
194
205
  sourceSelectedKeys.value = /* @__PURE__ */ new Set();
195
- emit("update:modelValue", newTargetKeys);
196
- emit("change", newTargetKeys, "right", movedKeys);
206
+ updateTargetKeys(newTargetKeys, "right", movedKeys);
197
207
  }
198
208
  function moveLeft() {
199
209
  if (!canMoveLeft.value) return;
@@ -204,8 +214,7 @@ var Transfer = defineComponent({
204
214
  props.dataSource
205
215
  );
206
216
  targetSelectedKeys.value = /* @__PURE__ */ new Set();
207
- emit("update:modelValue", newTargetKeys);
208
- emit("change", newTargetKeys, "left", movedKeys);
217
+ updateTargetKeys(newTargetKeys, "left", movedKeys);
209
218
  }
210
219
  function renderPanel(title, items, selectedKeys, toggleFn, searchValue, onSearchInput) {
211
220
  return h("div", { class: transferPanelClasses, role: "group", "aria-label": title }, [
@@ -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
  ensureBarMinHeight,
31
34
  getStableChartGradientPrefix,
32
35
  getBarValueLabelY,
33
- getChartInnerRect,
34
36
  getNumberExtent,
35
37
  resolveChartPalette,
36
38
  buildChartLegendItems,
@@ -245,6 +247,7 @@ var BarChart = defineComponent({
245
247
  wrapperClasses
246
248
  } = useChartInteraction({
247
249
  hoverable: computed(() => props.hoverable),
250
+ showTooltip: computed(() => props.showTooltip),
248
251
  hoveredIndexProp: () => props.hoveredIndex,
249
252
  selectable: computed(() => props.selectable),
250
253
  selectedIndexProp: () => props.selectedIndex,
@@ -255,7 +258,12 @@ var BarChart = defineComponent({
255
258
  getData: (index) => props.data[index],
256
259
  eventNames: { hover: "bar-hover", click: "bar-click" }
257
260
  });
258
- const innerRect = computed(() => getChartInnerRect(props.width, props.height, props.padding));
261
+ const { innerRect, onResolvedSizeChange } = useResponsiveChartSize(
262
+ () => props.width,
263
+ () => props.height,
264
+ () => props.padding,
265
+ () => props.responsive
266
+ );
259
267
  const xDomain = computed(() => props.data.map((item) => String(item.x)));
260
268
  const yValues = computed(() => props.data.map((item) => item.y));
261
269
  const resolvedXScale = computed(() => {
@@ -379,7 +387,8 @@ var BarChart = defineComponent({
379
387
  responsive: props.responsive,
380
388
  title: props.title,
381
389
  desc: props.desc,
382
- className: classNames(props.className)
390
+ className: classNames(props.className),
391
+ onResolvedSizeChange
383
392
  },
384
393
  {
385
394
  default: () => [
@@ -452,7 +461,7 @@ var BarChart = defineComponent({
452
461
  ].filter(Boolean)
453
462
  }
454
463
  );
455
- const tooltip = props.showTooltip && props.hoverable ? h(ChartTooltip, {
464
+ const tooltip = props.showTooltip ? h(ChartTooltip, {
456
465
  content: tooltipContent.value,
457
466
  open: resolvedHoveredIndex.value !== null && tooltipContent.value !== "",
458
467
  x: tooltipPosition.value.x,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  useChartInteraction
3
- } from "./chunk-PE5OA4YG.mjs";
3
+ } from "./chunk-FHUGOSEY.mjs";
4
4
  import {
5
5
  ChartSeries
6
6
  } from "./chunk-2ZUEXCVJ.mjs";
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-SPFL55TF.mjs";
10
10
  import {
11
11
  ChartCanvas
12
- } from "./chunk-W5RZPTFD.mjs";
12
+ } from "./chunk-SNNT64HK.mjs";
13
13
  import {
14
14
  ChartLegend
15
15
  } from "./chunk-V443QIJM.mjs";
@@ -20,7 +20,9 @@ import {
20
20
  chartAxisTickTextClasses,
21
21
  chartGridLineClasses,
22
22
  classNames,
23
+ createCircleRingPath,
23
24
  createPolygonPath,
25
+ createPolygonRingPath,
24
26
  getChartGridLineDasharray,
25
27
  getChartInnerRect,
26
28
  getRadarAngles,
@@ -269,6 +271,7 @@ var RadarChart = defineComponent({
269
271
  wrapperClasses
270
272
  } = useChartInteraction({
271
273
  hoverable: computed(() => props.hoverable),
274
+ showTooltip: computed(() => props.showTooltip),
272
275
  hoveredIndexProp: () => props.hoveredIndex,
273
276
  selectable: computed(() => props.selectable),
274
277
  selectedIndexProp: () => props.selectedIndex,
@@ -284,7 +287,7 @@ var RadarChart = defineComponent({
284
287
  });
285
288
  const hoveredPoint = ref(null);
286
289
  const handlePointEnter = (seriesIndex, pointIndex, event) => {
287
- if (!props.hoverable) return;
290
+ if (!props.hoverable && !props.showTooltip) return;
288
291
  hoveredPoint.value = { seriesIndex, pointIndex };
289
292
  handleHoverEnter(seriesIndex, event);
290
293
  };
@@ -547,43 +550,36 @@ var RadarChart = defineComponent({
547
550
  );
548
551
  }) : []
549
552
  ]) : null,
550
- // Split area (alternating fills – ECharts splitArea style)
553
+ // Split area (alternating fills – evenodd ring, transparent inner)
551
554
  ...splitAreaPaths.value.map((area, index) => {
555
+ const shared = {
556
+ key: `split-${index}`,
557
+ fill: area.color,
558
+ "fill-opacity": props.splitAreaOpacity,
559
+ stroke: "none",
560
+ "data-radar-split-area": "true"
561
+ };
552
562
  if (area.type === "circle-ring") {
553
- return h("g", { key: `split-${index}` }, [
554
- h("circle", {
555
- cx: area.cx,
556
- cy: area.cy,
557
- r: area.outerRadius,
558
- fill: area.color,
559
- "fill-opacity": props.splitAreaOpacity,
560
- stroke: "none",
561
- "data-radar-split-area": "true"
562
- }),
563
- area.innerRadius > 0 ? h("circle", {
564
- cx: area.cx,
565
- cy: area.cy,
566
- r: area.innerRadius,
567
- fill: "var(--tiger-bg,#fff)",
568
- stroke: "none"
569
- }) : null
570
- ]);
563
+ if (area.innerRadius > 0) {
564
+ return h("path", {
565
+ ...shared,
566
+ d: createCircleRingPath(area.cx, area.cy, area.outerRadius, area.innerRadius),
567
+ "fill-rule": "evenodd"
568
+ });
569
+ }
570
+ return h("circle", {
571
+ ...shared,
572
+ cx: area.cx,
573
+ cy: area.cy,
574
+ r: area.outerRadius
575
+ });
576
+ }
577
+ if (area.innerPoints.length > 0) {
578
+ const d2 = createPolygonRingPath(area.outerPoints, area.innerPoints);
579
+ return d2 ? h("path", { ...shared, d: d2, "fill-rule": "evenodd" }) : null;
571
580
  }
572
- const outerPath = createPolygonPath(area.outerPoints);
573
- return h("g", { key: `split-${index}` }, [
574
- outerPath ? h("path", {
575
- d: outerPath,
576
- fill: area.color,
577
- "fill-opacity": props.splitAreaOpacity,
578
- stroke: "none",
579
- "data-radar-split-area": "true"
580
- }) : null,
581
- area.innerPoints.length > 0 ? h("path", {
582
- d: createPolygonPath(area.innerPoints),
583
- fill: "var(--tiger-bg,#fff)",
584
- stroke: "none"
585
- }) : null
586
- ]);
581
+ const d = createPolygonPath(area.outerPoints);
582
+ return d ? h("path", { ...shared, d }) : null;
587
583
  }),
588
584
  // Grid lines
589
585
  ...gridPaths.value.map(
@@ -694,9 +690,9 @@ var RadarChart = defineComponent({
694
690
  "data-series-index": seriesIndex,
695
691
  "data-series-key": item.seriesKey,
696
692
  "data-point-index": point.index,
697
- onMouseenter: props.showTooltip && props.hoverable ? (e) => handlePointEnter(seriesIndex, point.index, e) : void 0,
698
- onMousemove: props.showTooltip && props.hoverable ? handlePointMove : void 0,
699
- onMouseleave: props.showTooltip && props.hoverable ? handlePointLeave : void 0,
693
+ onMouseenter: props.showTooltip || props.hoverable ? (e) => handlePointEnter(seriesIndex, point.index, e) : void 0,
694
+ onMousemove: props.showTooltip || props.hoverable ? handlePointMove : void 0,
695
+ onMouseleave: props.showTooltip || props.hoverable ? handlePointLeave : void 0,
700
696
  onFocus: props.showTooltip && props.hoverable ? (e) => showPointTooltipFromElement(
701
697
  e.currentTarget,
702
698
  seriesIndex,
@@ -753,7 +749,7 @@ var RadarChart = defineComponent({
753
749
  ].filter(Boolean)
754
750
  }
755
751
  );
756
- const tooltip = props.showTooltip && props.hoverable ? h(ChartTooltip, {
752
+ const tooltip = props.showTooltip ? h(ChartTooltip, {
757
753
  content: tooltipContent.value,
758
754
  open: hoveredPoint.value !== null && tooltipContent.value !== "",
759
755
  x: tooltipPosition.value.x,
@@ -19,7 +19,6 @@ import {
19
19
  getPageRange,
20
20
  validateCurrentPage,
21
21
  getPageNumbers,
22
- defaultTotalText,
23
22
  formatPaginationTotal,
24
23
  getPaginationContainerClasses,
25
24
  getPaginationButtonBaseClasses,
@@ -357,7 +356,7 @@ var Pagination = defineComponent({
357
356
  const prevDisabled = page <= 1 || props.disabled;
358
357
  const nextDisabled = page >= pages || props.disabled;
359
358
  if (props.showTotal) {
360
- const totalTextFn = props.totalText || (props.labels?.totalText || mergedLocale.value?.pagination?.totalText ? (value, range) => formatPaginationTotal(labels.value.totalText, value, range, localeCode.value) : defaultTotalText);
359
+ const totalTextFn = props.totalText || ((value, range) => formatPaginationTotal(labels.value.totalText, value, range, localeCode.value));
361
360
  elements.push(
362
361
  h("span", { class: getTotalTextClasses(size) }, totalTextFn(props.total, pageRange.value))
363
362
  );
@@ -102,6 +102,9 @@ var CollapsePanel = defineComponent({
102
102
  collapseContext.handlePanelClick(props.panelKey);
103
103
  }
104
104
  };
105
+ const handleExtraClick = (event) => {
106
+ event.stopPropagation();
107
+ };
105
108
  const handleKeydown = (event) => {
106
109
  if (props.disabled) {
107
110
  return;
@@ -163,7 +166,16 @@ var CollapsePanel = defineComponent({
163
166
  )
164
167
  );
165
168
  if (extraSlot) {
166
- headerContent.push(h("span", { class: "ml-auto" }, extraSlot));
169
+ headerContent.push(
170
+ h(
171
+ "span",
172
+ {
173
+ class: "ml-auto",
174
+ onClick: handleExtraClick
175
+ },
176
+ extraSlot
177
+ )
178
+ );
167
179
  }
168
180
  if (props.showArrow && collapseContext.expandIconPosition === "end") {
169
181
  headerContent.push(arrowIcon);
@@ -187,7 +199,11 @@ var CollapsePanel = defineComponent({
187
199
  ref: contentRef,
188
200
  "data-tiger-collapse-content": "",
189
201
  class: collapsePanelContentWrapperClasses,
190
- style: initialContentStyle
202
+ style: initialContentStyle,
203
+ ...isActive.value ? {} : {
204
+ inert: true,
205
+ "aria-hidden": "true"
206
+ }
191
207
  },
192
208
  [
193
209
  h(
@@ -3,7 +3,15 @@ import {
3
3
  } from "./chunk-UOJOJBEU.mjs";
4
4
 
5
5
  // src/components/Signature.ts
6
- import { computed, defineComponent, h, onMounted, ref, watch } from "vue";
6
+ import {
7
+ computed,
8
+ defineComponent,
9
+ h,
10
+ onMounted,
11
+ onUnmounted,
12
+ ref,
13
+ watch
14
+ } from "vue";
7
15
  import {
8
16
  classNames,
9
17
  clampSignatureLineWidth,
@@ -61,8 +69,10 @@ var Signature = defineComponent({
61
69
  const canvasRef = ref(null);
62
70
  const strokes = ref([]);
63
71
  const activeStroke = ref(null);
72
+ const capturedPointerId = ref(null);
64
73
  const isDisabled = computed(() => props.disabled || props.readonly);
65
74
  const normalizedLineWidth = computed(() => clampSignatureLineWidth(props.lineWidth));
75
+ let documentPointerListening = false;
66
76
  const draw = (nextStrokes) => {
67
77
  const canvas = canvasRef.value;
68
78
  const context = canvas?.getContext("2d");
@@ -90,6 +100,8 @@ var Signature = defineComponent({
90
100
  if (value === "" && !isSignatureEmpty(strokes.value)) {
91
101
  strokes.value = [];
92
102
  activeStroke.value = null;
103
+ detachDocumentPointerListeners();
104
+ releaseCanvasPointer();
93
105
  draw([]);
94
106
  }
95
107
  }
@@ -130,6 +142,8 @@ var Signature = defineComponent({
130
142
  const clear = () => {
131
143
  strokes.value = [];
132
144
  activeStroke.value = null;
145
+ detachDocumentPointerListeners();
146
+ releaseCanvasPointer();
133
147
  draw([]);
134
148
  emitChange([]);
135
149
  emit("clear");
@@ -144,10 +158,55 @@ var Signature = defineComponent({
144
158
  };
145
159
  return getSignaturePoint(event.clientX, event.clientY, rect, props.width, props.height);
146
160
  };
161
+ const captureCanvasPointer = (pointerId) => {
162
+ capturedPointerId.value = pointerId;
163
+ const canvas = canvasRef.value;
164
+ if (!canvas || typeof canvas.setPointerCapture !== "function") return;
165
+ try {
166
+ canvas.setPointerCapture(pointerId);
167
+ } catch {
168
+ }
169
+ };
170
+ const releaseCanvasPointer = () => {
171
+ const canvas = canvasRef.value;
172
+ const pointerId = capturedPointerId.value;
173
+ capturedPointerId.value = null;
174
+ if (!canvas || pointerId == null || typeof canvas.releasePointerCapture !== "function") return;
175
+ if (typeof canvas.hasPointerCapture === "function") {
176
+ try {
177
+ if (!canvas.hasPointerCapture(pointerId)) return;
178
+ } catch {
179
+ return;
180
+ }
181
+ }
182
+ try {
183
+ canvas.releasePointerCapture(pointerId);
184
+ } catch {
185
+ }
186
+ };
187
+ const handleDocumentPointerEnd = () => {
188
+ finishStroke();
189
+ };
190
+ const attachDocumentPointerListeners = () => {
191
+ if (documentPointerListening || !isBrowser()) return;
192
+ document.addEventListener("pointerup", handleDocumentPointerEnd);
193
+ document.addEventListener("pointercancel", handleDocumentPointerEnd);
194
+ documentPointerListening = true;
195
+ };
196
+ const detachDocumentPointerListeners = () => {
197
+ if (!documentPointerListening || !isBrowser()) return;
198
+ document.removeEventListener("pointerup", handleDocumentPointerEnd);
199
+ document.removeEventListener("pointercancel", handleDocumentPointerEnd);
200
+ documentPointerListening = false;
201
+ };
147
202
  const handlePointerDown = (event) => {
148
203
  if (isDisabled.value) return;
149
204
  event.preventDefault();
150
205
  canvasRef.value?.focus();
206
+ const pointerId = event.pointerId;
207
+ if (typeof pointerId === "number") {
208
+ captureCanvasPointer(pointerId);
209
+ }
151
210
  const stroke = {
152
211
  color: props.penColor,
153
212
  lineWidth: normalizedLineWidth.value,
@@ -155,6 +214,7 @@ var Signature = defineComponent({
155
214
  };
156
215
  activeStroke.value = stroke;
157
216
  strokes.value = [...strokes.value, stroke];
217
+ attachDocumentPointerListeners();
158
218
  emit("begin");
159
219
  };
160
220
  const handlePointerMove = (event) => {
@@ -163,12 +223,18 @@ var Signature = defineComponent({
163
223
  activeStroke.value.points.push(getPointFromEvent(event));
164
224
  strokes.value = [...strokes.value];
165
225
  };
166
- const finishStroke = () => {
226
+ function finishStroke() {
167
227
  if (!activeStroke.value) return;
168
228
  activeStroke.value = null;
169
229
  const payload = emitChange(strokes.value);
170
230
  emit("end", payload);
171
- };
231
+ detachDocumentPointerListeners();
232
+ releaseCanvasPointer();
233
+ }
234
+ onUnmounted(() => {
235
+ detachDocumentPointerListeners();
236
+ releaseCanvasPointer();
237
+ });
172
238
  const handleKeyDown = (event) => {
173
239
  if (!props.clearable || isDisabled.value) return;
174
240
  if (event.key !== "Delete" && event.key !== "Backspace") return;
@@ -213,6 +279,7 @@ var Signature = defineComponent({
213
279
  onPointermove: handlePointerMove,
214
280
  onPointerup: finishStroke,
215
281
  onPointercancel: finishStroke,
282
+ onLostpointercapture: finishStroke,
216
283
  onKeydown: handleKeyDown
217
284
  })
218
285
  ]),
@@ -101,6 +101,15 @@ var DropdownItem = defineComponent({
101
101
  type: Boolean,
102
102
  default: false
103
103
  },
104
+ /**
105
+ * When set, overrides the parent Dropdown `closeOnClick`.
106
+ * Omitted inherits the parent. Must default to undefined (not false): a
107
+ * bare Boolean would coerce omitted to false and break parent inheritance.
108
+ */
109
+ closeOnClick: {
110
+ type: Boolean,
111
+ default: void 0
112
+ },
104
113
  /**
105
114
  * Additional CSS classes
106
115
  */
@@ -125,8 +134,9 @@ var DropdownItem = defineComponent({
125
134
  return;
126
135
  }
127
136
  emit("click", event);
128
- if (context?.closeOnClick) {
129
- context.handleItemClick();
137
+ const shouldClose = props.closeOnClick ?? context?.closeOnClick ?? true;
138
+ if (shouldClose) {
139
+ context?.handleItemClick();
130
140
  }
131
141
  };
132
142
  const itemClasses = computed(() => {
@@ -286,7 +296,7 @@ var Dropdown = defineComponent({
286
296
  }
287
297
  };
288
298
  const handleItemClick = () => {
289
- if (props.closeOnClick) setVisible(false);
299
+ setVisible(false);
290
300
  };
291
301
  let hoverTimer = null;
292
302
  const handleMouseEnter = () => {
@@ -3,9 +3,10 @@ import {
3
3
  } from "./chunk-Q7Y22OFX.mjs";
4
4
 
5
5
  // src/utils/use-floating-popup.ts
6
- import { computed, ref, watch } from "vue";
6
+ import { computed, onBeforeUnmount, ref, watch } from "vue";
7
7
  import {
8
8
  buildTriggerHandlerMap,
9
+ createFloatingHoverDelayController,
9
10
  restoreFocus
10
11
  } from "@expcat/tigercat-core";
11
12
  function useFloatingPopup(options) {
@@ -27,6 +28,10 @@ function useFloatingPopup(options) {
27
28
  emit("update:open", next);
28
29
  emit("open-change", next);
29
30
  };
31
+ const hoverController = createFloatingHoverDelayController({
32
+ show: () => setVisible(true),
33
+ hide: () => setVisible(false)
34
+ });
30
35
  const containerRef = ref(null);
31
36
  const triggerRef = ref(null);
32
37
  const floatingRef = ref(null);
@@ -40,7 +45,7 @@ function useFloatingPopup(options) {
40
45
  }, 0);
41
46
  };
42
47
  const closeAndRestoreFocus = () => {
43
- setVisible(false);
48
+ hoverController.closeNow();
44
49
  restoreTriggerFocus();
45
50
  };
46
51
  const effectiveTrigger = computed(
@@ -59,21 +64,52 @@ function useFloatingPopup(options) {
59
64
  if (reason === "escape") {
60
65
  closeAndRestoreFocus();
61
66
  } else {
62
- setVisible(false);
67
+ hoverController.closeNow();
63
68
  }
64
69
  }
65
70
  });
66
71
  const x = overlay.x;
67
72
  const y = overlay.y;
68
73
  const handleToggle = () => {
69
- if (!props.disabled) setVisible(!currentVisible.value);
74
+ if (props.disabled) return;
75
+ hoverController.cancel();
76
+ setVisible(!currentVisible.value);
70
77
  };
71
78
  const handleShow = () => {
72
- if (!props.disabled) setVisible(true);
79
+ if (props.disabled) return;
80
+ if (effectiveTrigger.value === "hover") {
81
+ hoverController.enter();
82
+ return;
83
+ }
84
+ hoverController.cancel();
85
+ setVisible(true);
73
86
  };
74
87
  const handleHide = () => {
75
- if (!props.disabled) setVisible(false);
88
+ if (props.disabled) return;
89
+ if (effectiveTrigger.value === "hover") {
90
+ hoverController.leave();
91
+ return;
92
+ }
93
+ hoverController.closeNow();
76
94
  };
95
+ watch(
96
+ () => [floatingRef.value, currentVisible.value, effectiveTrigger.value],
97
+ ([el, visible, trigger], _prev, onCleanup) => {
98
+ if (!multiTrigger || trigger !== "hover" || !visible || !el) return;
99
+ const handleEnter = () => hoverController.enter();
100
+ const handleLeave = () => hoverController.leave();
101
+ el.addEventListener("mouseenter", handleEnter);
102
+ el.addEventListener("mouseleave", handleLeave);
103
+ onCleanup(() => {
104
+ el.removeEventListener("mouseenter", handleEnter);
105
+ el.removeEventListener("mouseleave", handleLeave);
106
+ });
107
+ },
108
+ { flush: "post", immediate: true }
109
+ );
110
+ onBeforeUnmount(() => {
111
+ hoverController.dispose();
112
+ });
77
113
  const triggerHandlers = computed(() => {
78
114
  if (!multiTrigger) {
79
115
  return { onClick: handleToggle };