x-next 1.6.0 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/AI_USAGE.md +182 -4
  2. package/CHANGELOG.md +74 -0
  3. package/dist/_hooks/use-chart-size.d.ts +25 -0
  4. package/dist/_utils/chart/index.d.ts +6 -0
  5. package/dist/_utils/chart/padding.d.ts +15 -0
  6. package/dist/_utils/chart/path.d.ts +34 -0
  7. package/dist/_utils/chart/scale.d.ts +55 -0
  8. package/dist/components/_components/chart/ChartAxis.d.ts +85 -0
  9. package/dist/components/_components/chart/ChartLegend.d.ts +26 -0
  10. package/dist/components/_components/chart/ChartTooltip.d.ts +76 -0
  11. package/dist/components/_components/chart/colors.d.ts +10 -0
  12. package/dist/components/_components/chart/interface.d.ts +38 -0
  13. package/dist/components/bar-chart/BarChart.d.ts +278 -0
  14. package/dist/components/bar-chart/helpers/layout.d.ts +55 -0
  15. package/dist/components/bar-chart/index.d.ts +600 -0
  16. package/dist/components/bar-chart/interface.d.ts +74 -0
  17. package/dist/components/bar-chart/props.d.ts +145 -0
  18. package/dist/components/date-picker/DatePicker.vue.d.ts +3 -3
  19. package/dist/components/date-picker/index.d.ts +6 -6
  20. package/dist/components/draggable/Draggable.d.ts +1 -1
  21. package/dist/components/draggable/index.d.ts +2 -2
  22. package/dist/components/drawer/index.d.ts +6 -6
  23. package/dist/components/drawer/src/Drawer.vue.d.ts +3 -3
  24. package/dist/components/dropdown/Dropdown.vue.d.ts +4 -4
  25. package/dist/components/dropdown/DropdownButton.vue.d.ts +5 -5
  26. package/dist/components/dropdown/DropdownSubmenu.vue.d.ts +4 -4
  27. package/dist/components/dropdown/index.d.ts +29 -29
  28. package/dist/components/form/FormItem.vue.d.ts +12 -12
  29. package/dist/components/form/form-item-label.vue.d.ts +3 -3
  30. package/dist/components/form/index.d.ts +24 -24
  31. package/dist/components/form-select/Select.d.ts +3 -3
  32. package/dist/components/form-select/index.d.ts +6 -6
  33. package/dist/components/form-slider/Slider.vue.d.ts +3 -3
  34. package/dist/components/form-slider/index.d.ts +6 -6
  35. package/dist/components/form-slider/slider-button.vue.d.ts +3 -3
  36. package/dist/components/grid/Row.vue.d.ts +3 -3
  37. package/dist/components/grid/index.d.ts +9 -9
  38. package/dist/components/heatmap/Heatmap.d.ts +10 -0
  39. package/dist/components/heatmap/index.d.ts +30 -0
  40. package/dist/components/image/Image.vue.d.ts +125 -17
  41. package/dist/components/image/ImagePreview.vue.d.ts +97 -7
  42. package/dist/components/image/ImagePreviewAction.d.ts +3 -3
  43. package/dist/components/image/ImagePreviewGroup.vue.d.ts +100 -7
  44. package/dist/components/image/hooks/use-image-drag.d.ts +2 -2
  45. package/dist/components/image/index.d.ts +712 -124
  46. package/dist/components/image/interface.d.ts +9 -1
  47. package/dist/components/image/preview-toolbar.vue.d.ts +3 -3
  48. package/dist/components/index.d.ts +4 -0
  49. package/dist/components/line-chart/LineChart.d.ts +295 -0
  50. package/dist/components/line-chart/helpers/layout.d.ts +74 -0
  51. package/dist/components/line-chart/index.d.ts +614 -0
  52. package/dist/components/line-chart/interface.d.ts +76 -0
  53. package/dist/components/line-chart/props.d.ts +173 -0
  54. package/dist/components/menu/sub-menu-pop.vue.d.ts +3 -3
  55. package/dist/components/pagination/page-options.vue.d.ts +6 -6
  56. package/dist/components/pie-chart/PieChart.d.ts +219 -0
  57. package/dist/components/pie-chart/index.d.ts +470 -0
  58. package/dist/components/pie-chart/interface.d.ts +58 -0
  59. package/dist/components/pie-chart/props.d.ts +107 -0
  60. package/dist/components/popconfirm/src/popup.vue.d.ts +3 -3
  61. package/dist/components/popover/Popover.d.ts +1 -1
  62. package/dist/components/popover/index.d.ts +3 -3
  63. package/dist/components/popup/Popup.d.ts +1 -1
  64. package/dist/components/popup/index.d.ts +3 -3
  65. package/dist/components/space/Space.d.ts +1 -1
  66. package/dist/components/space/index.d.ts +3 -3
  67. package/dist/components/tabs/Tabs.d.ts +1 -1
  68. package/dist/components/tabs/index.d.ts +3 -3
  69. package/dist/components/time-picker/TimePicker.vue.d.ts +3 -3
  70. package/dist/components/time-picker/index.d.ts +6 -6
  71. package/dist/components/tooltip/Tooltip.vue.d.ts +1 -1
  72. package/dist/components/tooltip/index.d.ts +3 -3
  73. package/dist/components/trend-chart/components/TrendChart.d.ts +19 -96
  74. package/dist/components/trend-chart/index.d.ts +33 -187
  75. package/dist/components/trend-chart/props.d.ts +9 -78
  76. package/dist/components/trend-chart/themes.d.ts +0 -1
  77. package/dist/components/trigger/Trigger.d.ts +1 -1
  78. package/dist/components/trigger/index.d.ts +3 -3
  79. package/dist/components/upload/Upload.d.ts +372 -0
  80. package/dist/components/upload/context.d.ts +28 -0
  81. package/dist/components/upload/index.d.ts +656 -0
  82. package/dist/components/upload/interface.d.ts +110 -0
  83. package/dist/components/upload/props.d.ts +321 -0
  84. package/dist/components/upload/upload-list-item.d.ts +15 -0
  85. package/dist/components/upload/upload-list.d.ts +11 -0
  86. package/dist/components/upload/upload-picture-item.d.ts +20 -0
  87. package/dist/components/upload/upload-trigger.d.ts +8 -0
  88. package/dist/components/upload/utils.d.ts +48 -0
  89. package/dist/es/_hooks/use-chart-size.js +25 -0
  90. package/dist/es/_styles/palette-aliases.js +7 -4
  91. package/dist/es/_utils/chart/padding.js +22 -0
  92. package/dist/es/_utils/chart/path.js +69 -0
  93. package/dist/es/_utils/chart/scale.js +77 -0
  94. package/dist/es/components/_components/chart/ChartAxis.js +79 -0
  95. package/dist/es/components/_components/chart/ChartLegend.js +53 -0
  96. package/dist/es/components/_components/chart/ChartTooltip.js +64 -0
  97. package/dist/es/components/_components/chart/colors.js +12 -0
  98. package/dist/es/components/bar-chart/BarChart.js +470 -0
  99. package/dist/es/components/bar-chart/helpers/layout.js +53 -0
  100. package/dist/es/components/bar-chart/index.js +8 -0
  101. package/dist/es/components/bar-chart/props.js +148 -0
  102. package/dist/es/components/heatmap/Heatmap.js +244 -169
  103. package/dist/es/components/image/Image.vue.js +55 -45
  104. package/dist/es/components/image/Image.vue2.js +113 -92
  105. package/dist/es/components/image/ImagePreview.vue.js +66 -53
  106. package/dist/es/components/image/ImagePreview.vue2.js +219 -171
  107. package/dist/es/components/image/ImagePreviewAction.js +12 -15
  108. package/dist/es/components/image/ImagePreviewGroup.vue.js +21 -20
  109. package/dist/es/components/image/ImagePreviewGroup.vue2.js +45 -39
  110. package/dist/es/components/image/hooks/use-image-drag.js +16 -14
  111. package/dist/es/components/index.js +136 -128
  112. package/dist/es/components/line-chart/LineChart.js +532 -0
  113. package/dist/es/components/line-chart/helpers/layout.js +80 -0
  114. package/dist/es/components/line-chart/index.js +8 -0
  115. package/dist/es/components/line-chart/props.js +178 -0
  116. package/dist/es/components/pie-chart/PieChart.js +397 -0
  117. package/dist/es/components/pie-chart/index.js +8 -0
  118. package/dist/es/components/pie-chart/props.js +104 -0
  119. package/dist/es/components/trend-chart/components/TrendChart.js +143 -183
  120. package/dist/es/components/trend-chart/components/trend-chart-curve.js +85 -81
  121. package/dist/es/components/trend-chart/props.js +28 -74
  122. package/dist/es/components/trend-chart/themes.js +30 -31
  123. package/dist/es/components/upload/Upload.js +420 -0
  124. package/dist/es/components/upload/context.js +4 -0
  125. package/dist/es/components/upload/index.js +8 -0
  126. package/dist/es/components/upload/props.js +321 -0
  127. package/dist/es/components/upload/upload-list-item.js +138 -0
  128. package/dist/es/components/upload/upload-list.js +48 -0
  129. package/dist/es/components/upload/upload-picture-item.js +109 -0
  130. package/dist/es/components/upload/upload-trigger.js +89 -0
  131. package/dist/es/components/upload/utils.js +195 -0
  132. package/dist/es/icons/_self/upload-icons.js +103 -0
  133. package/dist/es/index.js +197 -189
  134. package/dist/es/locale/en-US.js +30 -1
  135. package/dist/es/locale/zh-CN.js +30 -1
  136. package/dist/es/style.css +1 -1
  137. package/dist/icons/_self/upload-icons.d.ts +523 -0
  138. package/dist/index.cjs +4 -4
  139. package/dist/index.umd.js +4 -4
  140. package/dist/locale/interface.d.ts +45 -0
  141. package/dist/style/bar-chart.css +1 -0
  142. package/dist/style/bar-chart.js +2 -0
  143. package/dist/style/base.css +1 -1
  144. package/dist/style/heatmap.css +1 -1
  145. package/dist/style/image.css +1 -1
  146. package/dist/style/line-chart.css +1 -0
  147. package/dist/style/line-chart.js +2 -0
  148. package/dist/style/pie-chart.css +1 -0
  149. package/dist/style/pie-chart.js +2 -0
  150. package/dist/style/upload.css +1 -0
  151. package/dist/style/upload.js +2 -0
  152. package/dist/style.css +1 -1
  153. package/dist/types.d.ts +4 -0
  154. package/package.json +1 -1
  155. package/volar.d.ts +4 -0
  156. package/dist/components/trend-chart/components/trend-chart-grid.d.ts +0 -55
  157. package/dist/components/trend-chart/components/trend-chart-labels.d.ts +0 -26
  158. package/dist/components/trend-chart/helpers/genPath.d.ts +0 -8
  159. package/dist/components/trend-chart/helpers/getPadding.d.ts +0 -8
  160. package/dist/components/trend-chart/helpers/validatePadding.d.ts +0 -2
  161. package/dist/es/_hooks/use-popup-overflow-hidden.js +0 -29
  162. package/dist/es/components/trend-chart/components/trend-chart-grid.js +0 -62
  163. package/dist/es/components/trend-chart/components/trend-chart-labels.js +0 -75
  164. package/dist/es/components/trend-chart/helpers/genPath.js +0 -22
  165. package/dist/es/components/trend-chart/helpers/getPadding.js +0 -21
  166. package/dist/es/components/trend-chart/helpers/validatePadding.js +0 -7
@@ -0,0 +1,470 @@
1
+ export declare const PieChart: {
2
+ new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins<Readonly<import('vue').ExtractPropTypes<{
3
+ data: {
4
+ required: boolean;
5
+ type: import('vue').PropType<import('./interface').PieChartItem[]>;
6
+ default: () => never[];
7
+ };
8
+ innerRadius: {
9
+ type: import('vue').PropType<number | string>;
10
+ default: number;
11
+ };
12
+ height: {
13
+ type: import('vue').PropType<number | string>;
14
+ default: number;
15
+ };
16
+ width: {
17
+ type: import('vue').PropType<number | string>;
18
+ default: string;
19
+ };
20
+ labels: {
21
+ type: import('vue').PropType<boolean | {
22
+ fontSize?: number;
23
+ color?: string;
24
+ }>;
25
+ default: boolean;
26
+ };
27
+ center: {
28
+ type: import('vue').PropType<boolean | {
29
+ fontSize?: number;
30
+ }>;
31
+ default: boolean;
32
+ };
33
+ tooltip: {
34
+ type: BooleanConstructor;
35
+ default: boolean;
36
+ };
37
+ legend: {
38
+ type: BooleanConstructor;
39
+ default: boolean;
40
+ };
41
+ valueFormatter: {
42
+ type: import('vue').PropType<(value: number) => string>;
43
+ default: (value: number) => string;
44
+ };
45
+ loading: {
46
+ type: import('vue').PropType<boolean | Record<string, unknown>>;
47
+ default: boolean;
48
+ };
49
+ ariaLabel: {
50
+ type: StringConstructor;
51
+ };
52
+ }>> & Readonly<{
53
+ "onLegend-change"?: ((visibleIndexes: number[]) => any) | undefined;
54
+ "onItem-click"?: ((data: import('./interface').PieChartClickData) => any) | undefined;
55
+ }>, {
56
+ className: {
57
+ block: string;
58
+ element: (className: string) => string;
59
+ modifier: (className: string) => string;
60
+ is: (className: string) => string;
61
+ };
62
+ state: {
63
+ activeIndex: number | null;
64
+ hiddenIndexes: number[];
65
+ keyboardActive: boolean;
66
+ pointer: {
67
+ x: number;
68
+ y: number;
69
+ };
70
+ tooltipWidth: number;
71
+ };
72
+ size: {
73
+ width: number;
74
+ height: number;
75
+ };
76
+ refs: {
77
+ root: import('vue').Ref<HTMLDivElement | null, HTMLDivElement | null>;
78
+ canvas: import('vue').Ref<HTMLDivElement | null, HTMLDivElement | null>;
79
+ tooltip: import('vue').Ref<HTMLDivElement | null, HTMLDivElement | null>;
80
+ };
81
+ slots: Readonly<{
82
+ center?: ((props: {
83
+ total: number;
84
+ formatValue: (value: number) => string;
85
+ }) => unknown) | undefined;
86
+ tooltip?: ((props: import('./interface').PieChartActiveData) => unknown) | undefined;
87
+ label?: ((props: import('./interface').PieChartActiveData) => unknown) | undefined;
88
+ legend?: ((props: {
89
+ items: import('./interface').PieChartItem[];
90
+ hiddenIndexes: number[];
91
+ }) => unknown) | undefined;
92
+ empty?: (() => unknown) | undefined;
93
+ }>;
94
+ t: (key: import('../..').LocaleKey | (string & {}), params?: Record<string, string | number>) => string;
95
+ items: import('vue').ComputedRef<import('./interface').PieChartItem[]>;
96
+ visibleIndexes: import('vue').ComputedRef<number[]>;
97
+ total: import('vue').ComputedRef<number>;
98
+ hasData: import('vue').ComputedRef<boolean>;
99
+ geometry: import('vue').ComputedRef<{
100
+ cx: number;
101
+ cy: number;
102
+ radius: number;
103
+ inner: number;
104
+ }>;
105
+ segments: import('vue').ComputedRef<import('./interface').PieChartSegment[]>;
106
+ activeData: import('vue').ComputedRef<import('./interface').PieChartActiveData | null>;
107
+ legendItems: import('vue').ComputedRef<{
108
+ key: number;
109
+ name: string;
110
+ color: string;
111
+ hidden: boolean;
112
+ value: string;
113
+ }[]>;
114
+ centerVisible: import('vue').ComputedRef<boolean>;
115
+ labelFontSize: import('vue').ComputedRef<number>;
116
+ labelColor: import('vue').ComputedRef<string>;
117
+ centerFontSize: import('vue').ComputedRef<number>;
118
+ formatValue: import('vue').ComputedRef<(value: number) => string>;
119
+ tooltipStyle: import('vue').ComputedRef<Record<string, string>>;
120
+ handleSegmentEnter: (index: number) => void;
121
+ handleClick: (index: number, ev: MouseEvent) => void;
122
+ handleKeydown: (ev: KeyboardEvent) => void;
123
+ clearActive: () => void;
124
+ toggleItem: (index: number) => void;
125
+ liveText: import('vue').ComputedRef<string>;
126
+ setTooltipElement: (el: HTMLDivElement | null) => void;
127
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
128
+ 'item-click': (data: import('./interface').PieChartClickData) => boolean;
129
+ 'legend-change': (visibleIndexes: number[]) => boolean;
130
+ }, import('vue').PublicProps, {
131
+ center: boolean | {
132
+ fontSize?: number;
133
+ };
134
+ loading: boolean | Record<string, unknown>;
135
+ data: import('./interface').PieChartItem[];
136
+ legend: boolean;
137
+ height: string | number;
138
+ width: string | number;
139
+ tooltip: boolean;
140
+ labels: boolean | {
141
+ fontSize?: number;
142
+ color?: string;
143
+ };
144
+ valueFormatter: (value: number) => string;
145
+ innerRadius: string | number;
146
+ }, true, {}, import('vue').SlotsType<{
147
+ center?: (props: {
148
+ total: number;
149
+ formatValue: (value: number) => string;
150
+ }) => unknown;
151
+ tooltip?: (props: import('./interface').PieChartActiveData) => unknown;
152
+ label?: (props: import('./interface').PieChartActiveData) => unknown;
153
+ legend?: (props: {
154
+ items: import('./interface').PieChartItem[];
155
+ hiddenIndexes: number[];
156
+ }) => unknown;
157
+ empty?: () => unknown;
158
+ }>, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
159
+ P: {};
160
+ B: {};
161
+ D: {};
162
+ C: {};
163
+ M: {};
164
+ Defaults: {};
165
+ }, Readonly<import('vue').ExtractPropTypes<{
166
+ data: {
167
+ required: boolean;
168
+ type: import('vue').PropType<import('./interface').PieChartItem[]>;
169
+ default: () => never[];
170
+ };
171
+ innerRadius: {
172
+ type: import('vue').PropType<number | string>;
173
+ default: number;
174
+ };
175
+ height: {
176
+ type: import('vue').PropType<number | string>;
177
+ default: number;
178
+ };
179
+ width: {
180
+ type: import('vue').PropType<number | string>;
181
+ default: string;
182
+ };
183
+ labels: {
184
+ type: import('vue').PropType<boolean | {
185
+ fontSize?: number;
186
+ color?: string;
187
+ }>;
188
+ default: boolean;
189
+ };
190
+ center: {
191
+ type: import('vue').PropType<boolean | {
192
+ fontSize?: number;
193
+ }>;
194
+ default: boolean;
195
+ };
196
+ tooltip: {
197
+ type: BooleanConstructor;
198
+ default: boolean;
199
+ };
200
+ legend: {
201
+ type: BooleanConstructor;
202
+ default: boolean;
203
+ };
204
+ valueFormatter: {
205
+ type: import('vue').PropType<(value: number) => string>;
206
+ default: (value: number) => string;
207
+ };
208
+ loading: {
209
+ type: import('vue').PropType<boolean | Record<string, unknown>>;
210
+ default: boolean;
211
+ };
212
+ ariaLabel: {
213
+ type: StringConstructor;
214
+ };
215
+ }>> & Readonly<{
216
+ "onLegend-change"?: ((visibleIndexes: number[]) => any) | undefined;
217
+ "onItem-click"?: ((data: import('./interface').PieChartClickData) => any) | undefined;
218
+ }>, {
219
+ className: {
220
+ block: string;
221
+ element: (className: string) => string;
222
+ modifier: (className: string) => string;
223
+ is: (className: string) => string;
224
+ };
225
+ state: {
226
+ activeIndex: number | null;
227
+ hiddenIndexes: number[];
228
+ keyboardActive: boolean;
229
+ pointer: {
230
+ x: number;
231
+ y: number;
232
+ };
233
+ tooltipWidth: number;
234
+ };
235
+ size: {
236
+ width: number;
237
+ height: number;
238
+ };
239
+ refs: {
240
+ root: import('vue').Ref<HTMLDivElement | null, HTMLDivElement | null>;
241
+ canvas: import('vue').Ref<HTMLDivElement | null, HTMLDivElement | null>;
242
+ tooltip: import('vue').Ref<HTMLDivElement | null, HTMLDivElement | null>;
243
+ };
244
+ slots: Readonly<{
245
+ center?: ((props: {
246
+ total: number;
247
+ formatValue: (value: number) => string;
248
+ }) => unknown) | undefined;
249
+ tooltip?: ((props: import('./interface').PieChartActiveData) => unknown) | undefined;
250
+ label?: ((props: import('./interface').PieChartActiveData) => unknown) | undefined;
251
+ legend?: ((props: {
252
+ items: import('./interface').PieChartItem[];
253
+ hiddenIndexes: number[];
254
+ }) => unknown) | undefined;
255
+ empty?: (() => unknown) | undefined;
256
+ }>;
257
+ t: (key: import('../..').LocaleKey | (string & {}), params?: Record<string, string | number>) => string;
258
+ items: import('vue').ComputedRef<import('./interface').PieChartItem[]>;
259
+ visibleIndexes: import('vue').ComputedRef<number[]>;
260
+ total: import('vue').ComputedRef<number>;
261
+ hasData: import('vue').ComputedRef<boolean>;
262
+ geometry: import('vue').ComputedRef<{
263
+ cx: number;
264
+ cy: number;
265
+ radius: number;
266
+ inner: number;
267
+ }>;
268
+ segments: import('vue').ComputedRef<import('./interface').PieChartSegment[]>;
269
+ activeData: import('vue').ComputedRef<import('./interface').PieChartActiveData | null>;
270
+ legendItems: import('vue').ComputedRef<{
271
+ key: number;
272
+ name: string;
273
+ color: string;
274
+ hidden: boolean;
275
+ value: string;
276
+ }[]>;
277
+ centerVisible: import('vue').ComputedRef<boolean>;
278
+ labelFontSize: import('vue').ComputedRef<number>;
279
+ labelColor: import('vue').ComputedRef<string>;
280
+ centerFontSize: import('vue').ComputedRef<number>;
281
+ formatValue: import('vue').ComputedRef<(value: number) => string>;
282
+ tooltipStyle: import('vue').ComputedRef<Record<string, string>>;
283
+ handleSegmentEnter: (index: number) => void;
284
+ handleClick: (index: number, ev: MouseEvent) => void;
285
+ handleKeydown: (ev: KeyboardEvent) => void;
286
+ clearActive: () => void;
287
+ toggleItem: (index: number) => void;
288
+ liveText: import('vue').ComputedRef<string>;
289
+ setTooltipElement: (el: HTMLDivElement | null) => void;
290
+ }, {}, {}, {}, {
291
+ center: boolean | {
292
+ fontSize?: number;
293
+ };
294
+ loading: boolean | Record<string, unknown>;
295
+ data: import('./interface').PieChartItem[];
296
+ legend: boolean;
297
+ height: string | number;
298
+ width: string | number;
299
+ tooltip: boolean;
300
+ labels: boolean | {
301
+ fontSize?: number;
302
+ color?: string;
303
+ };
304
+ valueFormatter: (value: number) => string;
305
+ innerRadius: string | number;
306
+ }>;
307
+ __isFragment?: never;
308
+ __isTeleport?: never;
309
+ __isSuspense?: never;
310
+ } & import('vue').ComponentOptionsBase<Readonly<import('vue').ExtractPropTypes<{
311
+ data: {
312
+ required: boolean;
313
+ type: import('vue').PropType<import('./interface').PieChartItem[]>;
314
+ default: () => never[];
315
+ };
316
+ innerRadius: {
317
+ type: import('vue').PropType<number | string>;
318
+ default: number;
319
+ };
320
+ height: {
321
+ type: import('vue').PropType<number | string>;
322
+ default: number;
323
+ };
324
+ width: {
325
+ type: import('vue').PropType<number | string>;
326
+ default: string;
327
+ };
328
+ labels: {
329
+ type: import('vue').PropType<boolean | {
330
+ fontSize?: number;
331
+ color?: string;
332
+ }>;
333
+ default: boolean;
334
+ };
335
+ center: {
336
+ type: import('vue').PropType<boolean | {
337
+ fontSize?: number;
338
+ }>;
339
+ default: boolean;
340
+ };
341
+ tooltip: {
342
+ type: BooleanConstructor;
343
+ default: boolean;
344
+ };
345
+ legend: {
346
+ type: BooleanConstructor;
347
+ default: boolean;
348
+ };
349
+ valueFormatter: {
350
+ type: import('vue').PropType<(value: number) => string>;
351
+ default: (value: number) => string;
352
+ };
353
+ loading: {
354
+ type: import('vue').PropType<boolean | Record<string, unknown>>;
355
+ default: boolean;
356
+ };
357
+ ariaLabel: {
358
+ type: StringConstructor;
359
+ };
360
+ }>> & Readonly<{
361
+ "onLegend-change"?: ((visibleIndexes: number[]) => any) | undefined;
362
+ "onItem-click"?: ((data: import('./interface').PieChartClickData) => any) | undefined;
363
+ }>, {
364
+ className: {
365
+ block: string;
366
+ element: (className: string) => string;
367
+ modifier: (className: string) => string;
368
+ is: (className: string) => string;
369
+ };
370
+ state: {
371
+ activeIndex: number | null;
372
+ hiddenIndexes: number[];
373
+ keyboardActive: boolean;
374
+ pointer: {
375
+ x: number;
376
+ y: number;
377
+ };
378
+ tooltipWidth: number;
379
+ };
380
+ size: {
381
+ width: number;
382
+ height: number;
383
+ };
384
+ refs: {
385
+ root: import('vue').Ref<HTMLDivElement | null, HTMLDivElement | null>;
386
+ canvas: import('vue').Ref<HTMLDivElement | null, HTMLDivElement | null>;
387
+ tooltip: import('vue').Ref<HTMLDivElement | null, HTMLDivElement | null>;
388
+ };
389
+ slots: Readonly<{
390
+ center?: ((props: {
391
+ total: number;
392
+ formatValue: (value: number) => string;
393
+ }) => unknown) | undefined;
394
+ tooltip?: ((props: import('./interface').PieChartActiveData) => unknown) | undefined;
395
+ label?: ((props: import('./interface').PieChartActiveData) => unknown) | undefined;
396
+ legend?: ((props: {
397
+ items: import('./interface').PieChartItem[];
398
+ hiddenIndexes: number[];
399
+ }) => unknown) | undefined;
400
+ empty?: (() => unknown) | undefined;
401
+ }>;
402
+ t: (key: import('../..').LocaleKey | (string & {}), params?: Record<string, string | number>) => string;
403
+ items: import('vue').ComputedRef<import('./interface').PieChartItem[]>;
404
+ visibleIndexes: import('vue').ComputedRef<number[]>;
405
+ total: import('vue').ComputedRef<number>;
406
+ hasData: import('vue').ComputedRef<boolean>;
407
+ geometry: import('vue').ComputedRef<{
408
+ cx: number;
409
+ cy: number;
410
+ radius: number;
411
+ inner: number;
412
+ }>;
413
+ segments: import('vue').ComputedRef<import('./interface').PieChartSegment[]>;
414
+ activeData: import('vue').ComputedRef<import('./interface').PieChartActiveData | null>;
415
+ legendItems: import('vue').ComputedRef<{
416
+ key: number;
417
+ name: string;
418
+ color: string;
419
+ hidden: boolean;
420
+ value: string;
421
+ }[]>;
422
+ centerVisible: import('vue').ComputedRef<boolean>;
423
+ labelFontSize: import('vue').ComputedRef<number>;
424
+ labelColor: import('vue').ComputedRef<string>;
425
+ centerFontSize: import('vue').ComputedRef<number>;
426
+ formatValue: import('vue').ComputedRef<(value: number) => string>;
427
+ tooltipStyle: import('vue').ComputedRef<Record<string, string>>;
428
+ handleSegmentEnter: (index: number) => void;
429
+ handleClick: (index: number, ev: MouseEvent) => void;
430
+ handleKeydown: (ev: KeyboardEvent) => void;
431
+ clearActive: () => void;
432
+ toggleItem: (index: number) => void;
433
+ liveText: import('vue').ComputedRef<string>;
434
+ setTooltipElement: (el: HTMLDivElement | null) => void;
435
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
436
+ 'item-click': (data: import('./interface').PieChartClickData) => boolean;
437
+ 'legend-change': (visibleIndexes: number[]) => boolean;
438
+ }, string, {
439
+ center: boolean | {
440
+ fontSize?: number;
441
+ };
442
+ loading: boolean | Record<string, unknown>;
443
+ data: import('./interface').PieChartItem[];
444
+ legend: boolean;
445
+ height: string | number;
446
+ width: string | number;
447
+ tooltip: boolean;
448
+ labels: boolean | {
449
+ fontSize?: number;
450
+ color?: string;
451
+ };
452
+ valueFormatter: (value: number) => string;
453
+ innerRadius: string | number;
454
+ }, {}, string, import('vue').SlotsType<{
455
+ center?: (props: {
456
+ total: number;
457
+ formatValue: (value: number) => string;
458
+ }) => unknown;
459
+ tooltip?: (props: import('./interface').PieChartActiveData) => unknown;
460
+ label?: (props: import('./interface').PieChartActiveData) => unknown;
461
+ legend?: (props: {
462
+ items: import('./interface').PieChartItem[];
463
+ hiddenIndexes: number[];
464
+ }) => unknown;
465
+ empty?: () => unknown;
466
+ }>, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & {
467
+ install(app: import('vue').App): void;
468
+ };
469
+ export { PieChart as default };
470
+ export type { PieChartActiveData, PieChartClickData, PieChartItem, PieChartSegment, PieChartTooltipEntry, } from './interface';
@@ -0,0 +1,58 @@
1
+ /**
2
+ * 一个分片。
3
+ *
4
+ * 饼图 / 环形图的语义是**占比**:值按所有可见分片求和后换算角度。
5
+ * 负值与缺测(null / undefined)按 0 处理并跳过,不计入总量。
6
+ */
7
+ export interface PieChartItem {
8
+ /** 分片名称,用于标签、提示与图例 */
9
+ name: string;
10
+ /** 分片数值(非负) */
11
+ value: number;
12
+ }
13
+ /** 悬浮提示中的一行 */
14
+ export interface PieChartTooltipEntry {
15
+ /** 分片下标 */
16
+ index: number;
17
+ name: string;
18
+ /** 原始数值 */
19
+ value: number;
20
+ /** 占比(0 ~ 1) */
21
+ percent: number;
22
+ /** 生效颜色 */
23
+ color: string;
24
+ }
25
+ /** 悬浮或选中时激活的分片数据 */
26
+ export interface PieChartActiveData extends PieChartTooltipEntry {
27
+ /** 所有可见分片的合计 */
28
+ total: number;
29
+ /** 已格式化数值的便捷函数,与组件内保持一致 */
30
+ formatValue: (value: number) => string;
31
+ /** 已格式化占比的函数,如 12.3% */
32
+ formatPercent: (percent: number) => string;
33
+ }
34
+ /** item-click 事件的载荷 */
35
+ export interface PieChartClickData extends PieChartActiveData {
36
+ }
37
+ /** 渲染用分片几何;由 props 数据换算而来,供内部渲染与提示定位使用 */
38
+ export interface PieChartSegment {
39
+ /** 分片下标(对应 data 下标) */
40
+ index: number;
41
+ name: string;
42
+ value: number;
43
+ /** 占比(0 ~ 1,按可见分片总量计算) */
44
+ percent: number;
45
+ /** 生效颜色 */
46
+ color: string;
47
+ /** 扇形 / 环形分段路径 */
48
+ d: string;
49
+ /** 外围标签锚点 */
50
+ labelX: number;
51
+ labelY: number;
52
+ /** 标签对齐方式:右半圆左对齐、左半圆右对齐 */
53
+ labelAnchor: 'start' | 'end';
54
+ /** 占比是否达到可读阈值(未达到则不画外围标签) */
55
+ showLabel: boolean;
56
+ /** 分片中间角(用于提示锚点定位) */
57
+ midAngle: number;
58
+ }
@@ -0,0 +1,107 @@
1
+ import { ExtractPropTypes, PropType } from 'vue';
2
+ import { PieChartItem } from './interface';
3
+ export declare const pieChartProps: {
4
+ /**
5
+ * @zh 分片数据;值为负或非有限数按 0 处理并跳过
6
+ * @en Slice data; negative or non-finite values are treated as 0 and skipped
7
+ */
8
+ data: {
9
+ required: boolean;
10
+ type: PropType<PieChartItem[]>;
11
+ default: () => never[];
12
+ };
13
+ /**
14
+ * @zh 内半径:0 为实心饼图,数字按 px,'60%' 按外半径比例;大于 0 时渲染为环形图
15
+ * @en Inner radius: 0 renders a pie, numbers are px, '60%' is relative to the
16
+ * outer radius; values above 0 render a donut
17
+ * @defaultValue 0
18
+ */
19
+ innerRadius: {
20
+ type: PropType<number | string>;
21
+ default: number;
22
+ };
23
+ /**
24
+ * @zh 图表高度,数字按 px 处理
25
+ * @en Chart height; numbers are treated as px
26
+ * @defaultValue 280
27
+ */
28
+ height: {
29
+ type: PropType<number | string>;
30
+ default: number;
31
+ };
32
+ /**
33
+ * @zh 图表宽度,数字按 px 处理,默认撑满父容器
34
+ * @en Chart width; numbers are treated as px, defaults to filling the parent
35
+ * @defaultValue '100%'
36
+ */
37
+ width: {
38
+ type: PropType<number | string>;
39
+ default: string;
40
+ };
41
+ /**
42
+ * @zh 外围标签:false 不显示,也可传字号与颜色
43
+ * @en Outer labels: false hides them; an object configures font size and color
44
+ * @defaultValue true
45
+ */
46
+ labels: {
47
+ type: PropType<boolean | {
48
+ fontSize?: number;
49
+ color?: string;
50
+ }>;
51
+ default: boolean;
52
+ };
53
+ /**
54
+ * @zh 环形中心内容;不传时在环形模式下展示合计,传 false 隐藏
55
+ * @en Donut center content; defaults to the total for donuts, false hides it
56
+ * @defaultValue true
57
+ */
58
+ center: {
59
+ type: PropType<boolean | {
60
+ fontSize?: number;
61
+ }>;
62
+ default: boolean;
63
+ };
64
+ /**
65
+ * @zh 悬浮提示
66
+ * @en Hover tooltip
67
+ * @defaultValue true
68
+ */
69
+ tooltip: {
70
+ type: BooleanConstructor;
71
+ default: boolean;
72
+ };
73
+ /**
74
+ * @zh 图例;点击图例项可临时隐藏/显示对应分片,数据在点击分片上触发
75
+ * @en Legend; clicking an item toggles the slice visibility
76
+ * @defaultValue false
77
+ */
78
+ legend: {
79
+ type: BooleanConstructor;
80
+ default: boolean;
81
+ };
82
+ /**
83
+ * @zh 数值格式化函数,用于提示、图例与中心内容
84
+ * @en Value formatter used by tooltip, legend and the center content
85
+ */
86
+ valueFormatter: {
87
+ type: PropType<(value: number) => string>;
88
+ default: (value: number) => string;
89
+ };
90
+ /**
91
+ * @zh 加载中
92
+ * @en Loading state
93
+ * @defaultValue false
94
+ */
95
+ loading: {
96
+ type: PropType<boolean | Record<string, unknown>>;
97
+ default: boolean;
98
+ };
99
+ /**
100
+ * @zh 无障碍名称;设置后画布带 role="img"
101
+ * @en Accessible name; adds role="img" to the canvas when set
102
+ */
103
+ ariaLabel: {
104
+ type: StringConstructor;
105
+ };
106
+ };
107
+ export type PieChartProps = ExtractPropTypes<typeof pieChartProps>;
@@ -146,7 +146,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
146
146
  fill: boolean;
147
147
  block: boolean;
148
148
  direction: "horizontal" | "vertical";
149
- align: "center" | "space-between" | "end" | "start" | "baseline";
149
+ align: "center" | "start" | "space-between" | "end" | "baseline";
150
150
  }, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
151
151
  P: {};
152
152
  B: {};
@@ -180,7 +180,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
180
180
  fill: boolean;
181
181
  block: boolean;
182
182
  direction: "horizontal" | "vertical";
183
- align: "center" | "space-between" | "end" | "start" | "baseline";
183
+ align: "center" | "start" | "space-between" | "end" | "baseline";
184
184
  }>;
185
185
  __isFragment?: never;
186
186
  __isTeleport?: never;
@@ -211,7 +211,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
211
211
  fill: boolean;
212
212
  block: boolean;
213
213
  direction: "horizontal" | "vertical";
214
- align: "center" | "space-between" | "end" | "start" | "baseline";
214
+ align: "center" | "start" | "space-between" | "end" | "baseline";
215
215
  }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & {
216
216
  install(app: import('vue').App): void;
217
217
  };
@@ -287,8 +287,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
287
287
  onPopupVisibleChange?: ((visible: boolean) => any) | undefined;
288
288
  }>, {
289
289
  disabled: boolean;
290
- position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
291
290
  trigger: "hover" | "click" | "focus" | "contextMenu" | ("hover" | "click" | "focus" | "contextMenu")[];
291
+ position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
292
292
  animationName: string;
293
293
  autoFitPosition: boolean;
294
294
  popupVisible: boolean;