@cregis/ui 1.1.10 → 1.1.12

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.
@@ -64,44 +64,76 @@ export declare type ButtonSize = 'extraSmall' | 'small' | 'medium' | 'large';
64
64
  export declare type ButtonType = 'primary' | 'secondary' | 'danger' | 'foreground' | 'sameWhite';
65
65
 
66
66
  export declare const Cascader: DefineComponent<CascaderProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
67
- "update:modelValue": (value: StringOrNumber) => any;
68
- change: (value: StringOrNumber) => any;
67
+ "update:modelValue": (value: StringOrNumber | StringOrNumber[]) => any;
68
+ change: (value: StringOrNumber | StringOrNumber[]) => any;
69
69
  "visible-change": (value: boolean) => any;
70
70
  "filter-input": (value: string) => any;
71
71
  "filter-clear": () => any;
72
72
  }, string, PublicProps, Readonly<CascaderProps> & Readonly<{
73
- "onUpdate:modelValue"?: (value: StringOrNumber) => any;
74
- onChange?: (value: StringOrNumber) => any;
73
+ "onUpdate:modelValue"?: (value: StringOrNumber | StringOrNumber[]) => any;
74
+ onChange?: (value: StringOrNumber | StringOrNumber[]) => any;
75
75
  "onVisible-change"?: (value: boolean) => any;
76
76
  "onFilter-input"?: (value: string) => any;
77
77
  "onFilter-clear"?: () => any;
78
78
  }>, {
79
79
  type: "plain" | "default" | "noBorder";
80
80
  size: "small" | "medium" | "large" | "extraSmall";
81
+ clearText: string;
81
82
  options: CascaderRootOption[];
83
+ align: "left" | "center" | "right";
82
84
  maxPopperHeight: StringOrNumber;
83
85
  offset: [number, number];
84
- align: "left" | "center" | "right";
85
86
  filterDebounceMs: number;
86
87
  noDataText: string;
87
88
  noMatchText: string;
88
89
  triggerWidth: StringOrNumber;
89
90
  searchText: string;
91
+ multiple: boolean;
92
+ disabledValues: StringOrNumber[];
93
+ showRootAll: boolean;
94
+ showSubAll: boolean;
95
+ allText: string;
96
+ cancelText: string;
97
+ confirmText: string;
90
98
  subPopperWidth: StringOrNumber;
91
99
  showSubOptionAmount: boolean;
92
100
  }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
93
101
 
94
102
  export declare interface CascaderEmits {
95
- (e: 'update:modelValue', value: StringOrNumber): void;
96
- (e: 'change', value: StringOrNumber): void;
103
+ (e: 'update:modelValue', value: StringOrNumber | StringOrNumber[]): void;
104
+ (e: 'change', value: StringOrNumber | StringOrNumber[]): void;
97
105
  (e: 'visible-change', value: boolean): void;
98
106
  (e: 'filter-input', value: string): void;
99
107
  (e: 'filter-clear'): void;
100
108
  }
101
109
 
102
110
  export declare interface CascaderProps {
103
- /** 选中的 option `value`(一级或二级) */
104
- modelValue?: StringOrNumber;
111
+ /**
112
+ * 选中的 option `value`
113
+ * - 单选:一级(无二级)或二级 option 的 `value`
114
+ * - 多选(`multiple`):叶子 option `value` 数组,不包含有二级的一级 option 自身
115
+ */
116
+ modelValue?: StringOrNumber | StringOrNumber[];
117
+ /**
118
+ * 是否开启多选,默认 false;开启后下拉项带复选框,一级 option 支持半选状态。
119
+ * 勾选只修改草稿,底部「确定」才会发射 `update:modelValue` / `change` 并关闭浮层;「取消」或点击外部关闭会丢弃未确认的改动。
120
+ */
121
+ multiple?: boolean;
122
+ /**
123
+ * 需要禁用的 option `value` 列表(一级或二级均可),与 option 自身的 `disabled` 取并集。
124
+ * 禁用一级 option 时,其下所有二级 option 一并不可选。
125
+ */
126
+ disabledValues?: StringOrNumber[];
127
+ /** 多选时,是否在一级列表顶部显示「全部」,用于全选/取消全选所有未禁用的叶子项;默认 false */
128
+ showRootAll?: boolean;
129
+ /** 多选时,是否在每个二级面板顶部显示「全部」,用于全选/取消全选该一级下未禁用的二级项;默认 false */
130
+ showSubAll?: boolean;
131
+ /** 「全部」选项的文案,默认读取国际化文案 */
132
+ allText?: string;
133
+ /** 多选底部「清空」「取消」「确定」按钮的文案,默认读取国际化文案 */
134
+ clearText?: string;
135
+ cancelText?: string;
136
+ confirmText?: string;
105
137
  options?: CascaderRootOption[];
106
138
  type?: Type_3;
107
139
  size?: Size_2;
@@ -114,17 +146,17 @@ export declare interface CascaderProps {
114
146
  noMatchText?: string;
115
147
  triggerWidth?: StringOrNumber;
116
148
  popperWidth?: StringOrNumber;
117
- /** 二级 Popover 宽度,默认 200px */
149
+ /** 二级 Tooltip 宽度,默认 200px */
118
150
  subPopperWidth?: StringOrNumber;
119
- /** 一级下拉列表最大高度(纵向滚动);默认 300px,作用于内层容器而非 Popover 根节点,以免与横向溢出策略冲突影响二级菜单 flip */
151
+ /** 一级下拉列表最大高度(纵向滚动);默认 300px,作用于内层容器而非 Tooltip 根节点,以免与横向溢出策略冲突影响二级菜单 flip */
120
152
  maxPopperHeight?: StringOrNumber;
121
- /** 一级下拉相对触发器的 Popper 偏移 `[skidding, distance]`,与 Popover 一致 */
153
+ /** 一级下拉相对触发器的 Popper 偏移 `[skidding, distance]`,与 Tooltip 一致 */
122
154
  offset?: [number, number];
123
155
  showSubOptionAmount?: boolean;
124
156
  searchText?: string;
125
157
  }
126
158
 
127
- /** 一级选项;有 `children` 且非空时用 Popover 展开二级 */
159
+ /** 一级选项;有 `children` 且非空时用 Tooltip 展开二级 */
128
160
  export declare interface CascaderRootOption {
129
161
  label: string;
130
162
  value: StringOrNumber;
@@ -238,11 +270,12 @@ declare const _default: DefineComponent<DialogProps, {}, {}, {}, {}, ComponentOp
238
270
  "onUpdate:modelValue"?: (visible: boolean) => any;
239
271
  "onAfter-leave"?: () => any;
240
272
  }>, {
273
+ size: DialogSize;
241
274
  width: string | number;
242
275
  modelValue: boolean;
243
276
  top: string;
244
- alignCenter: boolean;
245
277
  showClose: boolean;
278
+ alignCenter: boolean;
246
279
  closeOnClickModal: boolean;
247
280
  modal: boolean;
248
281
  lockScroll: boolean;
@@ -262,6 +295,14 @@ export declare interface DialogEmits {
262
295
 
263
296
  export declare interface DialogProps {
264
297
  modelValue: boolean;
298
+ /**
299
+ * 弹窗尺寸(同时控制宽高)
300
+ * - lg: 880×620
301
+ * - md: 780×560
302
+ * - sm: 656×516
303
+ * 同时传了 width 时,宽度以 width 为准(高度仍由 size 决定)
304
+ */
305
+ size?: DialogSize;
265
306
  width?: string | number;
266
307
  top?: string;
267
308
  alignCenter?: boolean;
@@ -271,6 +312,8 @@ export declare interface DialogProps {
271
312
  lockScroll?: boolean;
272
313
  }
273
314
 
315
+ export declare type DialogSize = 'lg' | 'md' | 'sm';
316
+
274
317
  export declare const Divider: DefineComponent<DividerProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<DividerProps> & Readonly<{}>, {
275
318
  direction: "horizontal" | "vertical";
276
319
  borderStyle: "solid" | "dashed" | "dotted";
@@ -415,10 +458,12 @@ export declare const Popover: DefineComponent<PopoverProps, {
415
458
  close: () => void;
416
459
  update: () => void;
417
460
  }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
461
+ close: () => any;
418
462
  scroll: (payload: PopoverScrollPayload) => any;
419
463
  "visible-change": (value: boolean) => any;
420
464
  "click-outside": (value: boolean) => any;
421
465
  }, string, PublicProps, Readonly<PopoverProps> & Readonly<{
466
+ onClose?: () => any;
422
467
  onScroll?: (payload: PopoverScrollPayload) => any;
423
468
  "onVisible-change"?: (value: boolean) => any;
424
469
  "onClick-outside"?: (value: boolean) => any;
@@ -427,18 +472,26 @@ export declare const Popover: DefineComponent<PopoverProps, {
427
472
  teleported: boolean;
428
473
  preserveContentMount: boolean;
429
474
  trigger: "hover" | "click";
430
- placement: Placement;
475
+ clickToOpen: boolean;
476
+ placement: PopoverPlacement;
477
+ align: PopoverAlign;
478
+ showArrow: boolean;
431
479
  manual: boolean;
432
480
  openDelay: number;
433
481
  closeDelay: number;
482
+ popperWidth: string | number;
434
483
  offset: [number, number];
435
- padding: string | number;
484
+ showClose: boolean;
436
485
  }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
437
486
 
487
+ /** 箭头对齐位置 */
488
+ export declare type PopoverAlign = 'start' | 'center' | 'end';
489
+
438
490
  export declare interface PopoverEmits {
439
491
  (e: 'visible-change', value: boolean): void;
440
492
  (e: 'click-outside', value: boolean): void;
441
493
  (e: 'scroll', payload: PopoverScrollPayload): void;
494
+ (e: 'close'): void;
442
495
  }
443
496
 
444
497
  export declare interface PopoverInstance {
@@ -449,6 +502,9 @@ export declare interface PopoverInstance {
449
502
  update: () => void;
450
503
  }
451
504
 
505
+ /** 浮层相对触发器的方向(箭头指向) */
506
+ export declare type PopoverPlacement = 'top' | 'bottom' | 'left' | 'right';
507
+
452
508
  export declare interface PopoverPopperModifier {
453
509
  name: string;
454
510
  enabled?: boolean;
@@ -458,7 +514,7 @@ export declare interface PopoverPopperModifier {
458
514
 
459
515
  /** createPopper options 的公开子集,避免把 @popperjs/core 写进发布类型 */
460
516
  export declare interface PopoverPopperOptions {
461
- placement?: Placement;
517
+ placement?: PopoverPlacement;
462
518
  strategy?: 'absolute' | 'fixed';
463
519
  modifiers?: PopoverPopperModifier[];
464
520
  onFirstUpdate?: (...args: unknown[]) => void;
@@ -469,7 +525,18 @@ export declare interface PopoverProps {
469
525
  teleported?: boolean;
470
526
  preserveContentMount?: boolean;
471
527
  trigger?: 'hover' | 'click';
472
- placement?: Placement;
528
+ /**
529
+ * trigger 为 click 时,点击 reference 是否可以打开浮层,默认 true。
530
+ * 设为 false 后点击不再打开(可配合 open() / ref 手动打开);浮层已打开时点击 reference 仍可关闭。
531
+ * 对 hover 触发无效。
532
+ */
533
+ clickToOpen?: boolean;
534
+ /** 浮层主方向,对应壳体箭头指向 */
535
+ placement?: PopoverPlacement;
536
+ /** 箭头对齐位置 */
537
+ align?: PopoverAlign;
538
+ /** 是否绘制带箭头的 SVG 壳体;下拉类场景可关闭 */
539
+ showArrow?: boolean;
473
540
  manual?: boolean;
474
541
  disabled?: boolean;
475
542
  /** 与默认 strategy/offset/flip 等按 modifier name 合并后再传给 createPopper */
@@ -479,7 +546,10 @@ export declare interface PopoverProps {
479
546
  popperWidth?: string | number;
480
547
  maxPopperHeight?: string | number;
481
548
  offset?: [number, number];
482
- padding?: string | number;
549
+ /** 标题文案;也可使用 `#title` 插槽,有其一即展示标题区 */
550
+ title?: string;
551
+ /** 是否展示关闭按钮(需与 title / `#title` 同时存在 header 时生效) */
552
+ showClose?: boolean;
483
553
  }
484
554
 
485
555
  export declare interface PopoverScrollPayload {
@@ -525,6 +595,24 @@ export declare type RadioValue = boolean | string | number;
525
595
 
526
596
  export declare const resolveTextOverflow: (metrics: TextOverflowMetrics, axis?: TextOverflowAxis, threshold?: number) => TextOverflowState;
527
597
 
598
+ export declare const SegmentedBar: DefineComponent<SegmentedBarProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<SegmentedBarProps> & Readonly<{}>, {
599
+ data: Array< SegmentedBarItem>;
600
+ width: string;
601
+ height: string;
602
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
603
+
604
+ export declare interface SegmentedBarItem {
605
+ label: string;
606
+ percentage: number;
607
+ color: string;
608
+ }
609
+
610
+ export declare interface SegmentedBarProps {
611
+ data: Array<SegmentedBarItem>;
612
+ width?: string;
613
+ height?: string;
614
+ }
615
+
528
616
  export declare const Select: DefineComponent<SelectProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
529
617
  "update:modelValue": (value: StringOrNumber | StringOrNumber[]) => any;
530
618
  change: (value: StringOrNumber | StringOrNumber[]) => any;
@@ -541,8 +629,8 @@ export declare const Select: DefineComponent<SelectProps, {}, {}, {}, {}, Compon
541
629
  type: "plain" | "default" | "noBorder";
542
630
  size: "small" | "medium" | "large" | "extraSmall";
543
631
  placeholder: string;
544
- maxPopperHeight: StringOrNumber;
545
632
  align: "left" | "center" | "right";
633
+ maxPopperHeight: StringOrNumber;
546
634
  filterDebounceMs: number;
547
635
  noDataText: string;
548
636
  noMatchText: string;
@@ -823,6 +911,84 @@ export declare interface TimelineProps {
823
911
  iconSize?: number | string;
824
912
  }
825
913
 
914
+ export declare const Tooltip: DefineComponent<TooltipProps, {
915
+ isOpen: Ref<boolean>;
916
+ open: () => void;
917
+ close: () => void;
918
+ update: () => void;
919
+ }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
920
+ scroll: (payload: TooltipScrollPayload) => any;
921
+ "visible-change": (value: boolean) => any;
922
+ "click-outside": (value: boolean) => any;
923
+ }, string, PublicProps, Readonly<TooltipProps> & Readonly<{
924
+ onScroll?: (payload: TooltipScrollPayload) => any;
925
+ "onVisible-change"?: (value: boolean) => any;
926
+ "onClick-outside"?: (value: boolean) => any;
927
+ }>, {
928
+ disabled: boolean;
929
+ teleported: boolean;
930
+ preserveContentMount: boolean;
931
+ trigger: "hover" | "click";
932
+ placement: Placement;
933
+ manual: boolean;
934
+ openDelay: number;
935
+ closeDelay: number;
936
+ offset: [number, number];
937
+ padding: string | number;
938
+ }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
939
+
940
+ export declare interface TooltipEmits {
941
+ (e: 'visible-change', value: boolean): void;
942
+ (e: 'click-outside', value: boolean): void;
943
+ (e: 'scroll', payload: TooltipScrollPayload): void;
944
+ }
945
+
946
+ export declare interface TooltipInstance {
947
+ isOpen: Ref<boolean>;
948
+ open: () => void;
949
+ close: () => void;
950
+ /** 浮层打开时重新计算定位;关闭时为 no-op */
951
+ update: () => void;
952
+ }
953
+
954
+ export declare interface TooltipPopperModifier {
955
+ name: string;
956
+ enabled?: boolean;
957
+ options?: Record<string, unknown>;
958
+ [key: string]: unknown;
959
+ }
960
+
961
+ /** createPopper options 的公开子集,避免把 @popperjs/core 写进发布类型 */
962
+ export declare interface TooltipPopperOptions {
963
+ placement?: Placement;
964
+ strategy?: 'absolute' | 'fixed';
965
+ modifiers?: TooltipPopperModifier[];
966
+ onFirstUpdate?: (...args: unknown[]) => void;
967
+ }
968
+
969
+ export declare interface TooltipProps {
970
+ /** 是否将浮层 Teleport 到 body,避免被父级 overflow 裁切 */
971
+ teleported?: boolean;
972
+ preserveContentMount?: boolean;
973
+ trigger?: 'hover' | 'click';
974
+ placement?: Placement;
975
+ manual?: boolean;
976
+ disabled?: boolean;
977
+ /** 与默认 strategy/offset/flip 等按 modifier name 合并后再传给 createPopper */
978
+ tooltipOptions?: TooltipPopperOptions;
979
+ openDelay?: number;
980
+ closeDelay?: number;
981
+ popperWidth?: string | number;
982
+ maxPopperHeight?: string | number;
983
+ offset?: [number, number];
984
+ padding?: string | number;
985
+ }
986
+
987
+ export declare interface TooltipScrollPayload {
988
+ scrollTop: number;
989
+ scrollLeft: number;
990
+ }
991
+
826
992
  export declare type Type = 'primary' | 'info' | 'success' | 'warning' | 'danger';
827
993
 
828
994
  declare type Type_2 = 'default' | 'plain' | 'noBorder';
@@ -875,6 +1041,25 @@ export declare interface UploadProps {
875
1041
  */
876
1042
  export declare function useClickOutside(target: ClickOutsideTarget | ClickOutsideTarget[], callback: (event: PointerEvent) => void, options?: ClickOutsideOptions): void;
877
1043
 
1044
+ /**
1045
+ * 为浮层(Popover / Tooltip)接入 `motion-flotation` 进出场动画。
1046
+ *
1047
+ * motion-flotation(@cregis/tokens)是状态驱动:默认为隐藏态(opacity 0 + 位移 + 缩放),
1048
+ * 加上 `is-active` 才过渡到可见态;移除 `is-active` 则走离场过渡。
1049
+ * 因此用 JS 钩子接管 `<Transition :css="false">`:
1050
+ * 入场时补上 is-active,离场时移除 is-active,并等过渡时长结束后再调用 done 卸载/隐藏节点。
1051
+ *
1052
+ * 使用:
1053
+ * - 浮层根节点加 class `motion-flotation` 和 `{ 'is-active': motionActive }`
1054
+ * - `<Transition :css="false" @enter="onEnter" @leave="onLeave">`
1055
+ * - 定位该节点的 Popper 需 `computeStyles.gpuAcceleration = false`,把 transform 留给动画
1056
+ */
1057
+ export declare function useFlotationMotion(): {
1058
+ motionActive: Ref<boolean, boolean>;
1059
+ onEnter: (el: Element, done: () => void) => void;
1060
+ onLeave: (el: Element, done: () => void) => void;
1061
+ };
1062
+
878
1063
  /**
879
1064
  * 检测元素是否因内容溢出而产生省略/截断。
880
1065
  * 不负责写入省略样式,调用方需自行设置 overflow + text-overflow / line-clamp。
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cregis/ui",
3
3
  "private": false,
4
- "version": "1.1.10",
4
+ "version": "1.1.12",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "dist"
@@ -27,7 +27,7 @@
27
27
  },
28
28
  "peerDependencies": {
29
29
  "@cregis/icon": "^0.1.10",
30
- "@cregis/tokens": "^1.0.0",
30
+ "@cregis/tokens": "1.0.8",
31
31
  "vue": "^3.5.0",
32
32
  "vue-i18n": "^11.0.0"
33
33
  },
@@ -35,7 +35,7 @@
35
35
  "@commitlint/cli": "^20.1.0",
36
36
  "@commitlint/config-conventional": "^20.0.0",
37
37
  "@cregis/icon": "^0.1.14",
38
- "@cregis/tokens": "^1.0.8",
38
+ "@cregis/tokens": "link:../cregis-ui-tokens",
39
39
  "@popperjs/core": "^2.11.8",
40
40
  "@rushstack/eslint-patch": "^1.14.1",
41
41
  "@types/lodash-es": "^4.17.12",