@sdata/web-vue 3.12.0 → 3.13.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 (108) hide show
  1. package/dist/sd.css +147 -15
  2. package/dist/sd.min.css +43 -1
  3. package/es/_components/picker/input-range.vue.d.ts +6 -7
  4. package/es/_components/picker/input-range.vue_vue_type_script_setup_true_lang.js +63 -46
  5. package/es/_components/picker/input.vue.d.ts +5 -6
  6. package/es/_components/picker/input.vue_vue_type_script_setup_true_lang.js +52 -35
  7. package/es/_hooks/use-readonly-tip.d.ts +11 -0
  8. package/es/_hooks/use-readonly-tip.js +66 -0
  9. package/es/auto-complete/auto-complete.d.ts +9 -0
  10. package/es/auto-complete/auto-complete.js +11 -1
  11. package/es/auto-complete/index.d.ts +15 -0
  12. package/es/button/button.vue.d.ts +16 -7
  13. package/es/button/button.vue_vue_type_script_setup_true_lang.js +57 -31
  14. package/es/button/index.d.ts +11 -0
  15. package/es/button/interface.d.ts +2 -0
  16. package/es/card/card.d.ts +312 -0
  17. package/es/card/card.js +39 -7
  18. package/es/card/index.d.ts +616 -0
  19. package/es/card/style/index.css +23 -0
  20. package/es/card/style/index.scss +31 -0
  21. package/es/cascader/cascader.vue.d.ts +9 -8
  22. package/es/cascader/cascader.vue_vue_type_script_setup_true_lang.js +149 -128
  23. package/es/cascader/types.d.ts +1 -0
  24. package/es/color-picker/color-picker.d.ts +9 -0
  25. package/es/color-picker/color-picker.js +33 -11
  26. package/es/color-picker/index.d.ts +15 -0
  27. package/es/config-provider/context.d.ts +9 -9
  28. package/es/copy/copy.vue_vue_type_script_setup_true_lang.js +1 -1
  29. package/es/date-picker/index.d.ts +3 -6
  30. package/es/date-picker/picker.vue.d.ts +2 -3
  31. package/es/date-picker/picker.vue_vue_type_script_setup_true_lang.js +5 -5
  32. package/es/date-picker/range-picker.vue.d.ts +2 -3
  33. package/es/date-picker/range-picker.vue_vue_type_script_setup_true_lang.js +4 -4
  34. package/es/drawer/drawer.vue_vue_type_script_setup_true_lang.js +3 -3
  35. package/es/empty/empty.js +1 -1
  36. package/es/file-previewer/file-previewer.vue_vue_type_script_setup_true_lang.js +1 -1
  37. package/es/image/image.vue_vue_type_script_setup_true_lang.js +1 -1
  38. package/es/image/preview-action.d.ts +7 -127
  39. package/es/image/preview.vue_vue_type_script_setup_true_lang.js +2 -2
  40. package/es/index.css +147 -15
  41. package/es/index.js +3 -3
  42. package/es/input/index.d.ts +6 -6
  43. package/es/input/input.d.ts +3 -3
  44. package/es/input/input.js +18 -6
  45. package/es/input-number/index.d.ts +9 -9
  46. package/es/input-number/input-number.d.ts +5 -5
  47. package/es/input-number/input-number.js +8 -8
  48. package/es/input-tag/index.d.ts +6 -6
  49. package/es/input-tag/input-tag.d.ts +3 -3
  50. package/es/input-tag/input-tag.js +16 -7
  51. package/es/locale/interface.d.ts +1 -0
  52. package/es/locale/lang/en-us.js +1 -0
  53. package/es/locale/lang/zh-cn.js +1 -0
  54. package/es/locale/lang/zh-tw.js +1 -0
  55. package/es/mention/index.d.ts +15 -0
  56. package/es/mention/mention.d.ts +9 -0
  57. package/es/mention/mention.js +12 -1
  58. package/es/menu/base-menu.vue_vue_type_script_setup_true_lang.js +1 -1
  59. package/es/modal/modal.vue_vue_type_script_setup_true_lang.js +3 -3
  60. package/es/pagination/pagination.js +1 -1
  61. package/es/popconfirm/popconfirm.vue_vue_type_script_setup_true_lang.js +2 -2
  62. package/es/popover/popover.vue_vue_type_script_setup_true_lang.js +1 -1
  63. package/es/rate/index.d.ts +6 -6
  64. package/es/rate/rate.d.ts +3 -3
  65. package/es/rate/rate.js +17 -7
  66. package/es/scrollbar/style/index.css +57 -15
  67. package/es/scrollbar/style/index.scss +63 -15
  68. package/es/sd-vue.js +3 -3
  69. package/es/secret/secret.vue_vue_type_script_setup_true_lang.js +1 -1
  70. package/es/select/index.d.ts +15 -0
  71. package/es/select/select.d.ts +9 -0
  72. package/es/select/select.js +28 -5
  73. package/es/style/normalize.scss +68 -0
  74. package/es/table/table-th.js +2 -2
  75. package/es/tabs/context.d.ts +2 -0
  76. package/es/tabs/index.d.ts +32 -0
  77. package/es/tabs/style/index.css +29 -0
  78. package/es/tabs/style/index.scss +38 -0
  79. package/es/tabs/tab-pane.vue.d.ts +4 -2
  80. package/es/tabs/tab-pane.vue_vue_type_script_setup_true_lang.js +19 -3
  81. package/es/tabs/tabs.d.ts +19 -0
  82. package/es/tabs/tabs.js +23 -2
  83. package/es/textarea/index.d.ts +15 -0
  84. package/es/textarea/textarea.vue.d.ts +11 -2
  85. package/es/textarea/textarea.vue_vue_type_script_setup_true_lang.js +71 -46
  86. package/es/time-picker/index.d.ts +3 -6
  87. package/es/time-picker/panel.vue_vue_type_script_setup_true_lang.js +1 -1
  88. package/es/time-picker/time-picker.vue.d.ts +2 -3
  89. package/es/time-picker/time-picker.vue_vue_type_script_setup_true_lang.js +8 -5
  90. package/es/toolbar/toolbar.vue_vue_type_script_setup_true_lang.js +1 -1
  91. package/es/tooltip/index.d.ts +8 -127
  92. package/es/tooltip/interface.d.ts +17 -0
  93. package/es/tooltip/tooltip.vue.d.ts +5 -88
  94. package/es/tooltip/tooltip.vue_vue_type_script_setup_true_lang.js +8 -69
  95. package/es/tour/tour.vue_vue_type_script_setup_true_lang.js +1 -1
  96. package/es/tree/tree.vue_vue_type_script_setup_true_lang.js +1 -1
  97. package/es/tree-select/tree-select.vue.d.ts +16 -10
  98. package/es/tree-select/tree-select.vue_vue_type_script_setup_true_lang.js +156 -133
  99. package/es/typography/base.js +1 -1
  100. package/es/upload/upload-button.js +1 -1
  101. package/es/verification-code/index.d.ts +15 -6
  102. package/es/verification-code/verification-code.d.ts +9 -3
  103. package/es/verification-code/verification-code.js +4 -1
  104. package/json/vetur-attributes.json +48 -7
  105. package/json/vetur-tags.json +17 -5
  106. package/json/web-types.json +99 -10
  107. package/package.json +1 -1
  108. package/es/style/base.scss +0 -18
@@ -9,12 +9,12 @@ import IconCloseCircleFill from "../icon/icon-close-circle-fill/index.js";
9
9
  import IconExclamationCircleFill from "../icon/icon-exclamation-circle-fill/index.js";
10
10
  import IconInfoCircleFill from "../icon/icon-info-circle-fill/index.js";
11
11
  import { _asyncToGenerator } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/asyncToGenerator.js";
12
- import Button from "../button/index.js";
13
- import { KEYBOARD_KEY } from "../_utils/keyboard.js";
12
+ import { useI18n } from "../locale/index.js";
14
13
  import client_only_default from "../_components/client-only.js";
15
14
  import usePopupManager from "../_hooks/use-popup-manager.js";
16
15
  import { useTeleportContainer } from "../_hooks/use-teleport-container.js";
17
- import { useI18n } from "../locale/index.js";
16
+ import Button from "../button/index.js";
17
+ import { KEYBOARD_KEY } from "../_utils/keyboard.js";
18
18
  import Ellipsis from "../ellipsis/index.js";
19
19
  import { useConfigProviderProp } from "../_hooks/use-config-provider-prop.js";
20
20
  import { useOverflow } from "../_hooks/use-overflow.js";
@@ -1,7 +1,7 @@
1
1
  import { getPrefixCls } from "../_utils/global-config.js";
2
2
  import { isNumber } from "../_utils/is.js";
3
- import { useSize } from "../_hooks/use-size.js";
4
3
  import { useI18n } from "../locale/index.js";
4
+ import { useSize } from "../_hooks/use-size.js";
5
5
  import { useConfigProviderProp } from "../_hooks/use-config-provider-prop.js";
6
6
  import page_item_ellipsis_default from "./page-item-ellipsis.js";
7
7
  import page_item_step_default from "./page-item-step.js";
@@ -6,9 +6,9 @@ import IconCloseCircleFill from "../icon/icon-close-circle-fill/index.js";
6
6
  import IconExclamationCircleFill from "../icon/icon-exclamation-circle-fill/index.js";
7
7
  import IconInfoCircleFill from "../icon/icon-info-circle-fill/index.js";
8
8
  import { _asyncToGenerator } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/asyncToGenerator.js";
9
- import Button from "../button/index.js";
10
- import Trigger from "../trigger/index.js";
11
9
  import { useI18n } from "../locale/index.js";
10
+ import Trigger from "../trigger/index.js";
11
+ import Button from "../button/index.js";
12
12
  import { computed, createBlock, createCommentVNode, createElementVNode, createTextVNode, createVNode, defineComponent, mergeProps, normalizeClass, openBlock, ref, renderSlot, toDisplayString, unref, withCtx } from "vue";
13
13
  //#region components/popconfirm/popconfirm.vue?vue&type=script&setup=true&lang.ts
14
14
  var popconfirm_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent(_objectSpread2(_objectSpread2({}, { name: "Popconfirm" }), {}, {
@@ -1,8 +1,8 @@
1
1
  import { _objectSpread2 } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/objectSpread2.js";
2
2
  import { getPrefixCls } from "../_utils/global-config.js";
3
+ import Trigger from "../trigger/index.js";
3
4
  import { useScrollbar } from "../_hooks/use-scrollbar.js";
4
5
  import Scrollbar from "../scrollbar/index.js";
5
- import Trigger from "../trigger/index.js";
6
6
  import { computed, createBlock, createCommentVNode, createElementBlock, createTextVNode, createVNode, defineComponent, mergeProps, normalizeClass, openBlock, ref, renderSlot, toDisplayString, toRefs, unref, withCtx } from "vue";
7
7
  //#region components/popover/popover.vue?vue&type=script&setup=true&lang.ts
8
8
  var popover_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent(_objectSpread2(_objectSpread2({}, { name: "Popover" }), {}, {
@@ -28,7 +28,7 @@ declare const Rate: {
28
28
  default: boolean;
29
29
  };
30
30
  readonly: {
31
- type: BooleanConstructor;
31
+ type: (StringConstructor | BooleanConstructor)[];
32
32
  default: boolean;
33
33
  };
34
34
  disabled: {
@@ -47,7 +47,7 @@ declare const Rate: {
47
47
  change: (_value: number) => true;
48
48
  hoverChange: (_value: number) => true;
49
49
  }, import("vue").PublicProps, {
50
- readonly: boolean;
50
+ readonly: string | boolean;
51
51
  disabled: boolean;
52
52
  defaultValue: number;
53
53
  modelValue: number;
@@ -88,7 +88,7 @@ declare const Rate: {
88
88
  default: boolean;
89
89
  };
90
90
  readonly: {
91
- type: BooleanConstructor;
91
+ type: (StringConstructor | BooleanConstructor)[];
92
92
  default: boolean;
93
93
  };
94
94
  disabled: {
@@ -103,7 +103,7 @@ declare const Rate: {
103
103
  "onUpdate:modelValue"?: ((_value: number) => any) | undefined;
104
104
  onHoverChange?: ((_value: number) => any) | undefined;
105
105
  }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, {
106
- readonly: boolean;
106
+ readonly: string | boolean;
107
107
  disabled: boolean;
108
108
  defaultValue: number;
109
109
  modelValue: number;
@@ -141,7 +141,7 @@ declare const Rate: {
141
141
  default: boolean;
142
142
  };
143
143
  readonly: {
144
- type: BooleanConstructor;
144
+ type: (StringConstructor | BooleanConstructor)[];
145
145
  default: boolean;
146
146
  };
147
147
  disabled: {
@@ -160,7 +160,7 @@ declare const Rate: {
160
160
  change: (_value: number) => true;
161
161
  hoverChange: (_value: number) => true;
162
162
  }, string, {
163
- readonly: boolean;
163
+ readonly: string | boolean;
164
164
  disabled: boolean;
165
165
  defaultValue: number;
166
166
  modelValue: number;
package/es/rate/rate.d.ts CHANGED
@@ -25,7 +25,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
25
25
  default: boolean;
26
26
  };
27
27
  readonly: {
28
- type: BooleanConstructor;
28
+ type: (StringConstructor | BooleanConstructor)[];
29
29
  default: boolean;
30
30
  };
31
31
  disabled: {
@@ -65,7 +65,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
65
65
  default: boolean;
66
66
  };
67
67
  readonly: {
68
- type: BooleanConstructor;
68
+ type: (StringConstructor | BooleanConstructor)[];
69
69
  default: boolean;
70
70
  };
71
71
  disabled: {
@@ -80,7 +80,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
80
80
  "onUpdate:modelValue"?: ((_value: number) => any) | undefined;
81
81
  onHoverChange?: ((_value: number) => any) | undefined;
82
82
  }>, {
83
- readonly: boolean;
83
+ readonly: string | boolean;
84
84
  disabled: boolean;
85
85
  defaultValue: number;
86
86
  modelValue: number;
package/es/rate/rate.js CHANGED
@@ -2,6 +2,8 @@ import { useFormItem } from "../_hooks/use-form-item.js";
2
2
  import { getPrefixCls } from "../_utils/global-config.js";
3
3
  import { isNull, isObject, isString, isUndefined } from "../_utils/is.js";
4
4
  import { useAllowClear } from "../_hooks/use-allow-clear.js";
5
+ import { useReadonlyTip, useReadonlyTipText } from "../_hooks/use-readonly-tip.js";
6
+ import Tooltip from "../tooltip/index.js";
5
7
  import IconFaceFrownFill from "../icon/icon-face-frown-fill/index.js";
6
8
  import IconFaceMehFill from "../icon/icon-face-meh-fill/index.js";
7
9
  import IconFaceSmileFill from "../icon/icon-face-smile-fill/index.js";
@@ -66,7 +68,7 @@ var rate_default = /* @__PURE__ */ defineComponent({
66
68
  * @en Whether it is readonly
67
69
  */
68
70
  readonly: {
69
- type: Boolean,
71
+ type: [Boolean, String],
70
72
  default: false
71
73
  },
72
74
  /**
@@ -110,6 +112,8 @@ var rate_default = /* @__PURE__ */ defineComponent({
110
112
  const prefixCls = getPrefixCls("rate");
111
113
  const { mergedDisabled: _mergedDisabled, eventHandlers } = useFormItem({ disabled: toRef(props, "disabled") });
112
114
  const { mergedAllowClear } = useAllowClear(allowClear);
115
+ const { tipVisible, show: showReadonlyTip } = useReadonlyTip(toRef(props, "readonly"), _mergedDisabled);
116
+ const readonlyTipText = useReadonlyTipText(toRef(props, "readonly"));
113
117
  const _value = ref(props.defaultValue);
114
118
  const animation = ref(false);
115
119
  watch(modelValue, (value) => {
@@ -194,14 +198,16 @@ var rate_default = /* @__PURE__ */ defineComponent({
194
198
  return createVNode(IconStarFill, null, null);
195
199
  };
196
200
  const renderCharacter = (index) => {
197
- const leftProps = mergedDisabled.value ? {} : {
201
+ const interactive = !mergedDisabled.value;
202
+ const readonlyOnly = props.readonly && !_mergedDisabled.value;
203
+ const leftProps = interactive ? {
198
204
  onMouseenter: () => handleMouseEnter(index, true),
199
205
  onClick: () => handleClick(index, true)
200
- };
201
- const rightProps = mergedDisabled.value ? {} : {
206
+ } : readonlyOnly ? { onClick: () => showReadonlyTip() } : {};
207
+ const rightProps = interactive ? {
202
208
  onMouseenter: () => handleMouseEnter(index, false),
203
209
  onClick: () => handleClick(index, false)
204
- };
210
+ } : readonlyOnly ? { onClick: () => showReadonlyTip() } : {};
205
211
  const style = animation.value ? { animationDelay: `${50 * index}ms` } : void 0;
206
212
  const parseDisplayIndex = Math.ceil(displayIndex.value) - 1;
207
213
  const leftStyle = customColor.value && props.allowHalf && index + .5 === displayIndex.value ? { color: customColor.value[parseDisplayIndex] } : void 0;
@@ -225,10 +231,14 @@ var rate_default = /* @__PURE__ */ defineComponent({
225
231
  [`${prefixCls}-readonly`]: props.readonly,
226
232
  [`${prefixCls}-disabled`]: _mergedDisabled.value
227
233
  }]);
228
- return () => createVNode("div", {
234
+ return () => createVNode(Tooltip, {
235
+ "popupVisible": tipVisible.value,
236
+ "content": readonlyTipText.value,
237
+ "position": "top"
238
+ }, { default: () => [createVNode("div", {
229
239
  "class": cls.value,
230
240
  "onMouseleave": resetHoverIndex
231
- }, [indexArray.value.map((_, index) => renderCharacter(index))]);
241
+ }, [indexArray.value.map((_, index) => renderCharacter(index))])] });
232
242
  }
233
243
  });
234
244
  //#endregion
@@ -695,24 +695,45 @@ html[data-overlayscrollbars-viewport~=scrollbarHidden] > body::-webkit-scrollbar
695
695
  height: 100%;
696
696
  }
697
697
  .sd-scrollbar .os-scrollbar {
698
- --os-size: 6px;
699
- --os-handle-bg: var(--sd-color-neutral-4);
700
- --os-handle-bg-hover: var(--sd-color-neutral-5);
701
- --os-handle-bg-active: var(--sd-color-neutral-6);
698
+ --os-size: var(--sd-scrollbar-size, 6px);
699
+ --os-handle-bg: var(
700
+ --sd-scrollbar-thumb-color,
701
+ var(--sd-color-neutral-4)
702
+ );
703
+ --os-handle-bg-hover: var(
704
+ --sd-scrollbar-thumb-color-hover,
705
+ var(--sd-color-neutral-5)
706
+ );
707
+ --os-handle-bg-active: var(
708
+ --sd-scrollbar-thumb-color-active,
709
+ var(--sd-color-neutral-6)
710
+ );
702
711
  --os-track-bg: transparent;
703
712
  --os-track-bg-hover: transparent;
704
713
  --os-track-bg-active: transparent;
705
714
  --os-padding-axis: 0;
706
715
  --os-padding-perpendicular: 0;
707
- --os-handle-border-radius: 6px;
716
+ --os-handle-border-radius: var(
717
+ --sd-scrollbar-thumb-radius,
718
+ 6px
719
+ );
708
720
  }
709
721
  .sd-scrollbar .os-scrollbar-handle {
710
722
  transition: background-color 0.16s ease, opacity 0.16s ease;
711
723
  }
712
724
  .sd-scrollbar .sd-scrollbar-theme-embed {
713
- --os-handle-perpendicular-size: 6px;
714
- --os-handle-perpendicular-size-hover: 6px;
715
- --os-handle-perpendicular-size-active: 6px;
725
+ --os-handle-perpendicular-size: var(
726
+ --sd-scrollbar-size,
727
+ 6px
728
+ );
729
+ --os-handle-perpendicular-size-hover: var(
730
+ --sd-scrollbar-size,
731
+ 6px
732
+ );
733
+ --os-handle-perpendicular-size-active: var(
734
+ --sd-scrollbar-size,
735
+ 6px
736
+ );
716
737
  --os-handle-interactive-area-offset: 0;
717
738
  }
718
739
  .sd-scrollbar .sd-scrollbar-theme-track {
@@ -721,16 +742,37 @@ html[data-overlayscrollbars-viewport~=scrollbarHidden] > body::-webkit-scrollbar
721
742
  --os-track-bg-hover: var(--sd-color-neutral-1);
722
743
  --os-track-bg-active: var(--sd-color-neutral-1);
723
744
  --os-track-border: 1px solid var(--sd-color-neutral-3);
724
- --os-handle-perpendicular-size: 6px;
745
+ --os-handle-perpendicular-size: var(
746
+ --sd-scrollbar-size,
747
+ 6px
748
+ );
725
749
  --os-padding-axis: -1px;
726
750
  }
727
751
  .sd-scrollbar.sd-scrollbar-type-embed .sd-scrollbar-theme-embed {
728
- --os-handle-bg: var(--sd-color-neutral-4);
729
- --os-handle-bg-hover: var(--sd-color-neutral-5);
730
- --os-handle-bg-active: var(--sd-color-neutral-6);
752
+ --os-handle-bg: var(
753
+ --sd-scrollbar-thumb-color,
754
+ var(--sd-color-neutral-4)
755
+ );
756
+ --os-handle-bg-hover: var(
757
+ --sd-scrollbar-thumb-color-hover,
758
+ var(--sd-color-neutral-5)
759
+ );
760
+ --os-handle-bg-active: var(
761
+ --sd-scrollbar-thumb-color-active,
762
+ var(--sd-color-neutral-6)
763
+ );
731
764
  }
732
765
  .sd-scrollbar.sd-scrollbar-type-track .sd-scrollbar-theme-track {
733
- --os-handle-bg: var(--sd-color-neutral-4);
734
- --os-handle-bg-hover: var(--sd-color-neutral-5);
735
- --os-handle-bg-active: var(--sd-color-neutral-6);
766
+ --os-handle-bg: var(
767
+ --sd-scrollbar-thumb-color,
768
+ var(--sd-color-neutral-4)
769
+ );
770
+ --os-handle-bg-hover: var(
771
+ --sd-scrollbar-thumb-color-hover,
772
+ var(--sd-color-neutral-5)
773
+ );
774
+ --os-handle-bg-active: var(
775
+ --sd-scrollbar-thumb-color-active,
776
+ var(--sd-color-neutral-6)
777
+ );
736
778
  }
@@ -4,6 +4,12 @@
4
4
 
5
5
  $scroll-prefix-cls: string.unquote('#{theme.$prefix}-scrollbar');
6
6
 
7
+ // Scrollbar design tokens are exposed as `--sd-scrollbar-*` CSS variables so
8
+ // they can be shared with the global native-scrollbar baseline (see
9
+ // `style/normalize.scss`) and overridden at runtime. Each `--os-*` mapping
10
+ // reads the shared variable and falls back to the component token, so the
11
+ // component renders identically when the variables are not set upstream and
12
+ // stays in sync with native scrollbars when they are.
7
13
  .#{$scroll-prefix-cls} {
8
14
  position: relative;
9
15
  width: 100%;
@@ -18,16 +24,28 @@ $scroll-prefix-cls: string.unquote('#{theme.$prefix}-scrollbar');
18
24
  }
19
25
 
20
26
  .os-scrollbar {
21
- --os-size: #{$scrollbar-thumb-bar-size};
22
- --os-handle-bg: #{$scrollbar-thumb-bar-bg_color};
23
- --os-handle-bg-hover: #{$scrollbar-thumb-bar-bg_color_hover};
24
- --os-handle-bg-active: #{$scrollbar-thumb-bar-bg_color_active};
27
+ --os-size: var(#{theme.$sd-cssvars-prefix}-scrollbar-size, #{$scrollbar-thumb-bar-size});
28
+ --os-handle-bg: var(
29
+ #{theme.$sd-cssvars-prefix}-scrollbar-thumb-color,
30
+ #{$scrollbar-thumb-bar-bg_color}
31
+ );
32
+ --os-handle-bg-hover: var(
33
+ #{theme.$sd-cssvars-prefix}-scrollbar-thumb-color-hover,
34
+ #{$scrollbar-thumb-bar-bg_color_hover}
35
+ );
36
+ --os-handle-bg-active: var(
37
+ #{theme.$sd-cssvars-prefix}-scrollbar-thumb-color-active,
38
+ #{$scrollbar-thumb-bar-bg_color_active}
39
+ );
25
40
  --os-track-bg: transparent;
26
41
  --os-track-bg-hover: transparent;
27
42
  --os-track-bg-active: transparent;
28
43
  --os-padding-axis: 0;
29
44
  --os-padding-perpendicular: 0;
30
- --os-handle-border-radius: #{$scrollbar-thumb-bar-border_radius};
45
+ --os-handle-border-radius: var(
46
+ #{theme.$sd-cssvars-prefix}-scrollbar-thumb-radius,
47
+ #{$scrollbar-thumb-bar-border_radius}
48
+ );
31
49
  }
32
50
 
33
51
  .os-scrollbar-handle {
@@ -37,9 +55,18 @@ $scroll-prefix-cls: string.unquote('#{theme.$prefix}-scrollbar');
37
55
  }
38
56
 
39
57
  .#{$scroll-prefix-cls}-theme-embed {
40
- --os-handle-perpendicular-size: #{$scrollbar-thumb-bar-size};
41
- --os-handle-perpendicular-size-hover: #{$scrollbar-thumb-bar-size};
42
- --os-handle-perpendicular-size-active: #{$scrollbar-thumb-bar-size};
58
+ --os-handle-perpendicular-size: var(
59
+ #{theme.$sd-cssvars-prefix}-scrollbar-size,
60
+ #{$scrollbar-thumb-bar-size}
61
+ );
62
+ --os-handle-perpendicular-size-hover: var(
63
+ #{theme.$sd-cssvars-prefix}-scrollbar-size,
64
+ #{$scrollbar-thumb-bar-size}
65
+ );
66
+ --os-handle-perpendicular-size-active: var(
67
+ #{theme.$sd-cssvars-prefix}-scrollbar-size,
68
+ #{$scrollbar-thumb-bar-size}
69
+ );
43
70
  --os-handle-interactive-area-offset: 0;
44
71
  }
45
72
 
@@ -49,24 +76,45 @@ $scroll-prefix-cls: string.unquote('#{theme.$prefix}-scrollbar');
49
76
  --os-track-bg-hover: #{$scrollbar-track-bg_color};
50
77
  --os-track-bg-active: #{$scrollbar-track-bg_color};
51
78
  --os-track-border: #{$scrollbar-track-border_size} solid #{$scrollbar-track-border_color};
52
- --os-handle-perpendicular-size: #{$scrollbar-thumb-bar-size};
79
+ --os-handle-perpendicular-size: var(
80
+ #{theme.$sd-cssvars-prefix}-scrollbar-size,
81
+ #{$scrollbar-thumb-bar-size}
82
+ );
53
83
  --os-padding-axis: #{($scrollbar-track-size - $scrollbar-thumb-bar-size) * 0.5 -
54
84
  $scrollbar-track-border_size};
55
85
  }
56
86
 
57
87
  &#{&}-type-embed {
58
88
  .#{$scroll-prefix-cls}-theme-embed {
59
- --os-handle-bg: #{$scrollbar-thumb-bar-bg_color};
60
- --os-handle-bg-hover: #{$scrollbar-thumb-bar-bg_color_hover};
61
- --os-handle-bg-active: #{$scrollbar-thumb-bar-bg_color_active};
89
+ --os-handle-bg: var(
90
+ #{theme.$sd-cssvars-prefix}-scrollbar-thumb-color,
91
+ #{$scrollbar-thumb-bar-bg_color}
92
+ );
93
+ --os-handle-bg-hover: var(
94
+ #{theme.$sd-cssvars-prefix}-scrollbar-thumb-color-hover,
95
+ #{$scrollbar-thumb-bar-bg_color_hover}
96
+ );
97
+ --os-handle-bg-active: var(
98
+ #{theme.$sd-cssvars-prefix}-scrollbar-thumb-color-active,
99
+ #{$scrollbar-thumb-bar-bg_color_active}
100
+ );
62
101
  }
63
102
  }
64
103
 
65
104
  &#{&}-type-track {
66
105
  .#{$scroll-prefix-cls}-theme-track {
67
- --os-handle-bg: #{$scrollbar-thumb-bar-bg_color};
68
- --os-handle-bg-hover: #{$scrollbar-thumb-bar-bg_color_hover};
69
- --os-handle-bg-active: #{$scrollbar-thumb-bar-bg_color_active};
106
+ --os-handle-bg: var(
107
+ #{theme.$sd-cssvars-prefix}-scrollbar-thumb-color,
108
+ #{$scrollbar-thumb-bar-bg_color}
109
+ );
110
+ --os-handle-bg-hover: var(
111
+ #{theme.$sd-cssvars-prefix}-scrollbar-thumb-color-hover,
112
+ #{$scrollbar-thumb-bar-bg_color_hover}
113
+ );
114
+ --os-handle-bg-active: var(
115
+ #{theme.$sd-cssvars-prefix}-scrollbar-thumb-color-active,
116
+ #{$scrollbar-thumb-bar-bg_color_active}
117
+ );
70
118
  }
71
119
  }
72
120
  }
package/es/sd-vue.js CHANGED
@@ -4,6 +4,9 @@ import Affix from "./affix/index.js";
4
4
  import Alert from "./alert/index.js";
5
5
  import anchor_link_default from "./anchor/anchor-link.js";
6
6
  import Anchor from "./anchor/index.js";
7
+ import { addI18nMessages, getLocale, useLocale } from "./locale/index.js";
8
+ import Trigger from "./trigger/index.js";
9
+ import Tooltip from "./tooltip/index.js";
7
10
  import input_group_default from "./input/input-group.js";
8
11
  import input_password_default from "./input/input-password.js";
9
12
  import button_group_default from "./button/button-group.js";
@@ -12,7 +15,6 @@ import input_search_default from "./input/input-search.js";
12
15
  import Input from "./input/index.js";
13
16
  import Scrollbar from "./scrollbar/index.js";
14
17
  import Spin from "./spin/index.js";
15
- import Trigger from "./trigger/index.js";
16
18
  import AutoComplete from "./auto-complete/index.js";
17
19
  import Popover from "./popover/index.js";
18
20
  import AvatarGroup from "./avatar/avatar-group.js";
@@ -20,7 +22,6 @@ import Avatar from "./avatar/index.js";
20
22
  import BackTop from "./back-top/index.js";
21
23
  import Badge from "./badge/index.js";
22
24
  import BorderBeam from "./border-beam/index.js";
23
- import { addI18nMessages, getLocale, useLocale } from "./locale/index.js";
24
25
  import Empty from "./empty/index.js";
25
26
  import dropdown_button_default from "./dropdown/dropdown-button.js";
26
27
  import dropdown_group_default from "./dropdown/dropdown-group.js";
@@ -29,7 +30,6 @@ import dropdown_submenu_default from "./dropdown/dropdown-submenu.js";
29
30
  import Dropdown from "./dropdown/index.js";
30
31
  import breadcrumb_item_default from "./breadcrumb/breadcrumb-item.js";
31
32
  import Breadcrumb from "./breadcrumb/index.js";
32
- import Tooltip from "./tooltip/index.js";
33
33
  import Ellipsis, { PerformantEllipsis } from "./ellipsis/index.js";
34
34
  import Calendar from "./calendar/index.js";
35
35
  import card_grid_default from "./card/card-grid.js";
@@ -1,8 +1,8 @@
1
1
  import { _objectSpread2 } from "../_virtual/_@oxc-project_runtime@0.133.0/helpers/esm/objectSpread2.js";
2
2
  import { getPrefixCls } from "../_utils/global-config.js";
3
+ import Tooltip from "../tooltip/index.js";
3
4
  import IconEye from "../icon/icon-eye/index.js";
4
5
  import IconEyeInvisible from "../icon/icon-eye-invisible/index.js";
5
- import Tooltip from "../tooltip/index.js";
6
6
  import { PerformantEllipsis } from "../ellipsis/index.js";
7
7
  import Copy from "../copy/index.js";
8
8
  import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeModels, normalizeClass, openBlock, toDisplayString, unref, useModel, withCtx } from "vue";
@@ -36,6 +36,10 @@ declare const Select: {
36
36
  type: BooleanConstructor;
37
37
  default: boolean;
38
38
  };
39
+ readonly: {
40
+ type: (StringConstructor | BooleanConstructor)[];
41
+ default: boolean;
42
+ };
39
43
  error: {
40
44
  type: BooleanConstructor;
41
45
  default: boolean;
@@ -179,6 +183,7 @@ declare const Select: {
179
183
  }, import("vue").PublicProps, {
180
184
  options: import("./interface").SelectOption[];
181
185
  error: boolean;
186
+ readonly: string | boolean;
182
187
  popupVisible: boolean;
183
188
  defaultPopupVisible: boolean;
184
189
  disabled: boolean;
@@ -1290,6 +1295,10 @@ declare const Select: {
1290
1295
  type: BooleanConstructor;
1291
1296
  default: boolean;
1292
1297
  };
1298
+ readonly: {
1299
+ type: (StringConstructor | BooleanConstructor)[];
1300
+ default: boolean;
1301
+ };
1293
1302
  error: {
1294
1303
  type: BooleanConstructor;
1295
1304
  default: boolean;
@@ -1418,6 +1427,7 @@ declare const Select: {
1418
1427
  }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, {
1419
1428
  options: import("./interface").SelectOption[];
1420
1429
  error: boolean;
1430
+ readonly: string | boolean;
1421
1431
  popupVisible: boolean;
1422
1432
  defaultPopupVisible: boolean;
1423
1433
  disabled: boolean;
@@ -1486,6 +1496,10 @@ declare const Select: {
1486
1496
  type: BooleanConstructor;
1487
1497
  default: boolean;
1488
1498
  };
1499
+ readonly: {
1500
+ type: (StringConstructor | BooleanConstructor)[];
1501
+ default: boolean;
1502
+ };
1489
1503
  error: {
1490
1504
  type: BooleanConstructor;
1491
1505
  default: boolean;
@@ -1629,6 +1643,7 @@ declare const Select: {
1629
1643
  }, string, {
1630
1644
  options: import("./interface").SelectOption[];
1631
1645
  error: boolean;
1646
+ readonly: string | boolean;
1632
1647
  popupVisible: boolean;
1633
1648
  defaultPopupVisible: boolean;
1634
1649
  disabled: boolean;
@@ -39,6 +39,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
39
39
  type: BooleanConstructor;
40
40
  default: boolean;
41
41
  };
42
+ readonly: {
43
+ type: (StringConstructor | BooleanConstructor)[];
44
+ default: boolean;
45
+ };
42
46
  error: {
43
47
  type: BooleanConstructor;
44
48
  default: boolean;
@@ -198,6 +202,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
198
202
  type: BooleanConstructor;
199
203
  default: boolean;
200
204
  };
205
+ readonly: {
206
+ type: (StringConstructor | BooleanConstructor)[];
207
+ default: boolean;
208
+ };
201
209
  error: {
202
210
  type: BooleanConstructor;
203
211
  default: boolean;
@@ -326,6 +334,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
326
334
  }>, {
327
335
  options: SelectOption[];
328
336
  error: boolean;
337
+ readonly: string | boolean;
329
338
  popupVisible: boolean;
330
339
  defaultPopupVisible: boolean;
331
340
  disabled: boolean;
@@ -6,16 +6,18 @@ import virtual_list_default from "../_components/virtual-list/index.js";
6
6
  import { useAllowClear } from "../_hooks/use-allow-clear.js";
7
7
  import { useDropdownVirtualListProps } from "../_hooks/use-dropdown-virtual-list-props.js";
8
8
  import { resolveDropdownVirtualListProps } from "../_utils/virtual-dropdown.js";
9
+ import { useReadonlyTip, useReadonlyTipText } from "../_hooks/use-readonly-tip.js";
10
+ import Trigger from "../trigger/index.js";
11
+ import Tooltip from "../tooltip/index.js";
9
12
  import { getKeyFromValue, hasEmptyStringKey, isGroupOptionInfo, isValidOption } from "./utils.js";
10
13
  import { useSelect } from "./hooks/use-select.js";
11
14
  import select_dropdown_default from "./select-dropdown.js";
12
- import Trigger from "../trigger/index.js";
13
15
  import { useTrigger } from "../_hooks/use-trigger.js";
14
16
  import Checkbox from "../checkbox/index.js";
15
17
  import select_view_default from "../_components/select-view/select-view.js";
16
18
  import { useAllowSearch } from "../_hooks/use-allow-search.js";
17
19
  import { debounce } from "../_utils/debounce.js";
18
- import { computed, createVNode, defineComponent, isVNode, mergeProps, nextTick, ref, toRefs, watch, watchEffect } from "vue";
20
+ import { computed, createVNode, defineComponent, isVNode, mergeProps, nextTick, ref, toRef, toRefs, watch, watchEffect } from "vue";
19
21
  //#region components/select/select.tsx
20
22
  function _isSlot(s) {
21
23
  return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
@@ -76,6 +78,14 @@ var select_default = /* @__PURE__ */ defineComponent({
76
78
  type: Boolean,
77
79
  default: false
78
80
  },
81
+ /**
82
+ * @zh 是否为只读状态
83
+ * @en Whether it is read-only
84
+ */
85
+ readonly: {
86
+ type: [Boolean, String],
87
+ default: false
88
+ },
79
89
  error: {
80
90
  type: Boolean,
81
91
  default: false
@@ -213,13 +223,22 @@ var select_default = /* @__PURE__ */ defineComponent({
213
223
  const resolvedVirtualListProps = computed(() => {
214
224
  return resolveDropdownVirtualListProps(mergedDropdownVirtualListProps.value, props.triggerProps, DEFAULT_SELECT_VIRTUAL_ITEM_SIZE);
215
225
  });
216
- const { computedPopupVisible, handlePopupVisibleChange } = useTrigger({
226
+ const { computedPopupVisible, handlePopupVisibleChange: _handlePopupVisibleChange } = useTrigger({
217
227
  popupVisible,
218
228
  defaultPopupVisible,
219
229
  show,
220
230
  defaultShow,
221
231
  emit
222
232
  });
233
+ const { tipVisible, show: showReadonlyTip } = useReadonlyTip(toRef(props, "readonly"), mergedDisabled);
234
+ const readonlyTipText = useReadonlyTipText(toRef(props, "readonly"));
235
+ const handlePopupVisibleChange = (visible) => {
236
+ if (visible && props.readonly && !mergedDisabled.value) {
237
+ showReadonlyTip();
238
+ return;
239
+ }
240
+ _handlePopupVisibleChange(visible);
241
+ };
223
242
  const _value = ref(props.defaultValue);
224
243
  const computedValueObjects = computed(() => {
225
244
  var _props$modelValue;
@@ -525,7 +544,11 @@ var select_default = /* @__PURE__ */ defineComponent({
525
544
  return (_selectViewRef$value2 = selectViewRef.value) === null || _selectViewRef$value2 === void 0 || (_selectViewRef$value3 = _selectViewRef$value2.blur) === null || _selectViewRef$value3 === void 0 ? void 0 : _selectViewRef$value3.call(_selectViewRef$value2);
526
545
  }
527
546
  });
528
- return () => createVNode(Trigger, mergeProps({
547
+ return () => createVNode(Tooltip, {
548
+ "popupVisible": tipVisible.value,
549
+ "content": readonlyTipText.value,
550
+ "position": "top"
551
+ }, { default: () => [createVNode(Trigger, mergeProps({
529
552
  "trigger": "click",
530
553
  "position": "bl",
531
554
  "popupOffset": 4,
@@ -578,7 +601,7 @@ var select_default = /* @__PURE__ */ defineComponent({
578
601
  })];
579
602
  },
580
603
  content: renderDropDown
581
- });
604
+ })] });
582
605
  }
583
606
  });
584
607
  //#endregion