@sdata/web-vue 1.7.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 (76) hide show
  1. package/dist/sd.css +105 -1
  2. package/dist/sd.min.css +1 -1
  3. package/es/_hooks/use-allow-clear.d.ts +4 -0
  4. package/es/_hooks/use-allow-clear.js +20 -0
  5. package/es/_hooks/use-component-ref.d.ts +1 -1
  6. package/es/_hooks/use-teleport-container.d.ts +2 -2
  7. package/es/_hooks/use-teleport-container.js +7 -4
  8. package/es/_utils/color.js +1 -18
  9. package/es/auto-complete/auto-complete.js +4 -2
  10. package/es/cascader/cascader.js +1 -1
  11. package/es/cascader/cascader.vue.d.ts +1 -0
  12. package/es/cascader/cascader.vue_vue_type_script_lang.js +4 -1
  13. package/es/cascader/index.d.ts +3 -0
  14. package/es/color-picker/color-picker.d.ts +115 -40
  15. package/es/color-picker/color-picker.js +146 -102
  16. package/es/color-picker/index.d.ts +217 -69
  17. package/es/color-picker/interface.d.ts +41 -0
  18. package/es/color-picker/palette.js +1 -1
  19. package/es/color-picker/panel.d.ts +73 -34
  20. package/es/color-picker/panel.js +423 -89
  21. package/es/color-picker/style/index.css +92 -1
  22. package/es/color-picker/style/index.scss +107 -1
  23. package/es/color-picker/utils.d.ts +89 -0
  24. package/es/color-picker/utils.js +456 -0
  25. package/es/config-provider/config-provider.vue.d.ts +9 -0
  26. package/es/config-provider/config-provider.vue_vue_type_script_lang.js +6 -1
  27. package/es/config-provider/context.d.ts +3 -1
  28. package/es/config-provider/context.js +2 -1
  29. package/es/config-provider/index.d.ts +15 -0
  30. package/es/config-provider/style/css.js +1 -0
  31. package/es/config-provider/style/index.css +29 -0
  32. package/es/config-provider/style/index.d.ts +1 -1
  33. package/es/config-provider/style/index.js +1 -0
  34. package/es/config-provider/style/index.scss +17 -0
  35. package/es/config-provider/theme-provider.js +1 -3
  36. package/es/config-provider/theme-provider.vue_vue_type_script_setup_true_lang.js +44 -4
  37. package/es/date-picker/index.d.ts +1 -0
  38. package/es/date-picker/picker.js +1 -1
  39. package/es/date-picker/picker.vue.d.ts +1 -0
  40. package/es/date-picker/picker.vue_vue_type_script_lang.js +4 -1
  41. package/es/date-picker/range-picker.js +1 -1
  42. package/es/date-picker/range-picker.vue.d.ts +1 -0
  43. package/es/date-picker/range-picker.vue_vue_type_script_lang.js +4 -1
  44. package/es/drawer/drawer.vue.d.ts +1 -1
  45. package/es/drawer/index.d.ts +3 -3
  46. package/es/index.css +105 -1
  47. package/es/index.scss +1 -0
  48. package/es/input/input.js +4 -2
  49. package/es/input-number/input-number.js +4 -2
  50. package/es/input-tag/input-tag.js +4 -2
  51. package/es/mention/mention.js +4 -2
  52. package/es/modal/index.d.ts +3 -3
  53. package/es/modal/modal.vue.d.ts +1 -1
  54. package/es/rate/rate.js +4 -2
  55. package/es/select/select-dropdown.vue.d.ts +1 -1
  56. package/es/select/select.js +4 -2
  57. package/es/textarea/index.d.ts +3 -3
  58. package/es/textarea/textarea.vue.d.ts +1 -1
  59. package/es/textarea/textarea.vue_vue_type_script_lang.js +6 -2
  60. package/es/time-picker/index.d.ts +3 -0
  61. package/es/time-picker/time-picker.js +1 -1
  62. package/es/time-picker/time-picker.vue.d.ts +1 -0
  63. package/es/time-picker/time-picker.vue_vue_type_script_lang.js +4 -1
  64. package/es/tree-select/index.d.ts +3 -0
  65. package/es/tree-select/tree-select.js +1 -1
  66. package/es/tree-select/tree-select.vue.d.ts +1 -0
  67. package/es/tree-select/tree-select.vue_vue_type_script_lang.js +4 -1
  68. package/es/trigger/trigger.js +8 -4
  69. package/json/vetur-attributes.json +46 -20
  70. package/json/vetur-tags.json +14 -6
  71. package/json/web-types.json +86 -22
  72. package/package.json +3 -1
  73. package/es/color-picker/input-alpha.js +0 -32
  74. package/es/color-picker/input-hex.js +0 -73
  75. package/es/color-picker/input-rgb.js +0 -55
  76. package/es/web-vue.css +0 -5
@@ -1,154 +1,198 @@
1
+ import { _objectSpread2 } from "../_virtual/_@oxc-project_runtime@0.124.0/helpers/objectSpread2.js";
1
2
  import { getPrefixCls } from "../_utils/global-config.js";
2
- import useState from "../_hooks/use-state.js";
3
+ import Input from "../input/index.js";
3
4
  import Trigger from "../trigger/index.js";
4
- import { formatInputToHSVA, hsvToRgb, rgbToHex, rgbaToHex } from "../_utils/color.js";
5
5
  import { colors } from "./colors.js";
6
+ import { formatColorState, getColorBackground, getColorObject, normalizeFormat, parseColorState } from "./utils.js";
6
7
  import panel_default from "./panel.js";
7
- import { computed, createVNode, defineComponent, mergeProps, watch } from "vue";
8
+ import { computed, createVNode, defineComponent, mergeProps, ref } from "vue";
8
9
  //#region components/color-picker/color-picker.tsx
9
10
  var color_picker_default = /* @__PURE__ */ defineComponent({
10
11
  name: "ColorPicker",
11
12
  props: {
13
+ borderless: Boolean,
14
+ clearable: Boolean,
15
+ colorModes: {
16
+ type: Array,
17
+ default: () => ["monochrome"]
18
+ },
19
+ enableMultipleGradient: {
20
+ type: Boolean,
21
+ default: true
22
+ },
23
+ value: String,
12
24
  modelValue: String,
13
- defaultValue: { type: String },
14
- format: { type: String },
25
+ defaultValue: {
26
+ type: String,
27
+ default: ""
28
+ },
29
+ format: {
30
+ type: String,
31
+ default: "RGB"
32
+ },
15
33
  size: {
16
34
  type: String,
17
35
  default: "medium"
18
36
  },
19
- showText: {
37
+ enableAlpha: Boolean,
38
+ showPrimaryColorPreview: {
20
39
  type: Boolean,
21
- default: false
40
+ default: true
22
41
  },
23
- showHistory: {
24
- type: Boolean,
25
- default: false
42
+ inputProps: { type: Object },
43
+ recentColors: {
44
+ type: [Array, Boolean],
45
+ default: void 0
26
46
  },
27
- showPreset: {
28
- type: Boolean,
29
- default: false
47
+ defaultRecentColors: {
48
+ type: [Array, Boolean],
49
+ default: () => []
30
50
  },
31
- disabled: {
32
- type: Boolean,
33
- default: false
51
+ swatchColors: {
52
+ type: Array,
53
+ default: void 0
34
54
  },
35
- disabledAlpha: {
55
+ disabled: {
36
56
  type: Boolean,
37
57
  default: false
38
58
  },
39
- hideTrigger: { type: Boolean },
59
+ hideTrigger: Boolean,
40
60
  triggerProps: { type: Object },
41
61
  historyColors: { type: Array },
42
- presetColors: {
43
- type: Array,
44
- default: () => colors
45
- }
62
+ presetColors: { type: Array },
63
+ showText: Boolean,
64
+ showHistory: Boolean,
65
+ showPreset: Boolean,
66
+ disabledAlpha: Boolean,
67
+ selectInputProps: { type: Object }
46
68
  },
47
69
  emits: {
48
70
  "update:modelValue": (_value) => true,
49
- "change": (_value) => true,
50
- "popup-visible-change": (_visible, _value) => true
71
+ "update:value": (_value) => true,
72
+ "change": (_value, _context) => true,
73
+ "popup-visible-change": (_visible, _value) => true,
74
+ "clear": (_context) => true,
75
+ "palette-bar-change": (_context) => true,
76
+ "recent-colors-change": (_value) => true
51
77
  },
52
78
  setup(props, { emit, slots }) {
53
79
  const prefixCls = getPrefixCls("color-picker");
54
- const mergeValue = computed(() => {
55
- var _props$modelValue;
56
- return (_props$modelValue = props.modelValue) !== null && _props$modelValue !== void 0 ? _props$modelValue : props.defaultValue;
57
- });
58
- const formatInput = computed(() => {
59
- return formatInputToHSVA(mergeValue.value || "");
80
+ const innerValue = ref(props.defaultValue);
81
+ const innerRecentColors = ref(Array.isArray(props.defaultRecentColors) ? props.defaultRecentColors : []);
82
+ const mergedValue = computed(() => {
83
+ var _ref, _props$modelValue;
84
+ return (_ref = (_props$modelValue = props.modelValue) !== null && _props$modelValue !== void 0 ? _props$modelValue : props.value) !== null && _ref !== void 0 ? _ref : innerValue.value;
60
85
  });
61
- const [alpha, setAlpha] = useState(formatInput.value.a);
62
- const [hsv, setHsv] = useState({
63
- h: formatInput.value.h,
64
- s: formatInput.value.s,
65
- v: formatInput.value.v
86
+ const mergedEnableAlpha = computed(() => props.enableAlpha || !props.disabledAlpha);
87
+ const normalizedFormat = computed(() => normalizeFormat(props.format, mergedEnableAlpha.value));
88
+ const mergedRecentColors = computed(() => {
89
+ if (props.showHistory && props.historyColors) return props.historyColors;
90
+ if (props.recentColors === null || props.recentColors === false) return props.recentColors;
91
+ if (Array.isArray(props.recentColors)) return props.recentColors;
92
+ return innerRecentColors.value;
66
93
  });
67
- watch(() => formatInput.value, (value) => {
68
- if (mergeValue.value !== formatValue.value) {
69
- setAlpha(value.a);
70
- setHsv({
71
- h: value.h,
72
- s: value.s,
73
- v: value.v
74
- });
75
- }
76
- });
77
- const color = computed(() => {
78
- const rgb = hsvToRgb(hsv.value.h, hsv.value.s, hsv.value.v);
79
- const hex = rgbToHex(rgb.r, rgb.g, rgb.b);
80
- return {
81
- hsv: hsv.value,
82
- rgb,
83
- hex
84
- };
94
+ const mergedSwatchColors = computed(() => {
95
+ var _props$presetColors;
96
+ if (props.showPreset) return (_props$presetColors = props.presetColors) !== null && _props$presetColors !== void 0 ? _props$presetColors : colors;
97
+ if (props.swatchColors === null) return null;
98
+ if (Array.isArray(props.swatchColors)) return props.swatchColors;
99
+ if (props.swatchColors === void 0 && props.showPreset === false) return null;
100
+ return colors;
85
101
  });
86
- const colorString = computed(() => {
87
- const { r, g, b } = color.value.rgb;
88
- return `rgba(${r}, ${g}, ${b}, ${alpha.value.toFixed(2)})`;
102
+ const colorState = computed(() => parseColorState(mergedValue.value, props.colorModes));
103
+ const triggerInputValue = computed(() => {
104
+ if (!mergedValue.value) return "";
105
+ return formatColorState(colorState.value, normalizedFormat.value, mergedEnableAlpha.value);
89
106
  });
90
- const formatValue = computed(() => {
91
- const { r, g, b } = color.value.rgb;
92
- if (props.format === "rgb") return alpha.value < 1 && !props.disabledAlpha ? `rgba(${r}, ${g}, ${b}, ${alpha.value.toFixed(2)})` : `rgb(${r}, ${g}, ${b})`;
93
- return alpha.value < 1 && !props.disabledAlpha ? `#${rgbaToHex(r, g, b, alpha.value)}` : `#${rgbToHex(r, g, b)}`;
107
+ const previewStyle = computed(() => {
108
+ const background = getColorBackground(colorState.value);
109
+ return colorState.value.mode === "linear-gradient" ? { backgroundImage: background } : { backgroundColor: background };
94
110
  });
95
- watch(formatValue, (value) => {
111
+ const syncValue = (value) => {
112
+ if (props.modelValue === void 0 && props.value === void 0) innerValue.value = value;
96
113
  emit("update:modelValue", value);
97
- emit("change", value);
98
- });
99
- const onHsvChange = (_value) => {
100
- !props.disabled && setHsv(_value);
114
+ emit("update:value", value);
115
+ };
116
+ const syncRecentColors = (value) => {
117
+ if (props.recentColors === void 0) innerRecentColors.value = value;
118
+ emit("recent-colors-change", value);
101
119
  };
102
- const onAlphaChange = (_value) => {
103
- !props.disabled && setAlpha(_value);
120
+ const emitChange = (value, trigger) => {
121
+ syncValue(value);
122
+ emit("change", value, {
123
+ color: getColorObject(parseColorState(value, props.colorModes)),
124
+ trigger
125
+ });
126
+ };
127
+ const handleColorChange = (value, trigger) => {
128
+ if (props.disabled) return;
129
+ emitChange(value, trigger);
130
+ };
131
+ const handleClear = (event) => {
132
+ syncValue("");
133
+ emit("clear", { e: event });
134
+ emit("change", "", {
135
+ color: getColorObject(parseColorState("", props.colorModes)),
136
+ trigger: "clear"
137
+ });
138
+ };
139
+ const handleTriggerInputChange = (value) => {
140
+ if (!value) {
141
+ handleClear(new MouseEvent("click"));
142
+ return;
143
+ }
144
+ handleColorChange(formatColorState(parseColorState(value, props.colorModes), normalizedFormat.value, mergedEnableAlpha.value), "input");
104
145
  };
105
146
  const onPopupVisibleChange = (visible) => {
106
- emit("popup-visible-change", visible, formatValue.value);
147
+ emit("popup-visible-change", visible, triggerInputValue.value);
107
148
  };
108
- const renderInput = () => {
149
+ const mergedTriggerProps = computed(() => _objectSpread2({
150
+ trigger: "click",
151
+ position: "bl",
152
+ disabled: props.disabled,
153
+ popupOffset: 4,
154
+ animationName: "slide-dynamic-origin"
155
+ }, props.triggerProps));
156
+ const renderTriggerInput = () => {
109
157
  return createVNode("div", { "class": {
110
158
  [prefixCls]: true,
111
159
  [`${prefixCls}-size-${props.size}`]: props.size,
112
- [`${prefixCls}-disabled`]: props.disabled
113
- } }, [
114
- createVNode("div", {
115
- "class": `${prefixCls}-preview`,
116
- "style": { backgroundColor: formatValue.value }
117
- }, null),
118
- props.showText && createVNode("div", { "class": `${prefixCls}-value` }, [formatValue.value]),
119
- createVNode("input", {
120
- "class": `${prefixCls}-input`,
121
- "value": formatValue.value,
122
- "disabled": props.disabled
123
- }, null)
124
- ]);
160
+ [`${prefixCls}-disabled`]: props.disabled,
161
+ [`${prefixCls}-borderless`]: props.borderless
162
+ } }, [createVNode(Input, mergeProps({
163
+ "class": `${prefixCls}-trigger-input`,
164
+ "size": props.size === "mini" ? "mini" : props.size,
165
+ "allowClear": props.clearable,
166
+ "disabled": props.disabled,
167
+ "modelValue": triggerInputValue.value,
168
+ "onChange": handleTriggerInputChange,
169
+ "onClear": handleClear
170
+ }, props.inputProps), { prefix: () => createVNode("div", {
171
+ "class": `${prefixCls}-preview`,
172
+ "style": previewStyle.value
173
+ }, null) })]);
125
174
  };
126
175
  const renderPanel = () => {
127
176
  return createVNode(panel_default, {
128
- "color": color.value,
129
- "alpha": alpha.value,
130
- "colorString": colorString.value,
131
- "historyColors": props.historyColors,
132
- "presetColors": props.presetColors,
133
- "showHistory": props.showHistory,
134
- "showPreset": props.showPreset,
177
+ "value": mergedValue.value,
178
+ "colorModes": props.colorModes,
179
+ "enableMultipleGradient": props.enableMultipleGradient,
180
+ "recentColors": mergedRecentColors.value,
181
+ "swatchColors": mergedSwatchColors.value,
135
182
  "disabled": props.disabled,
136
- "disabledAlpha": props.disabledAlpha,
137
- "format": props.format,
138
- "onHsvChange": onHsvChange,
139
- "onAlphaChange": onAlphaChange
183
+ "enableAlpha": mergedEnableAlpha.value,
184
+ "format": normalizedFormat.value,
185
+ "showPrimaryColorPreview": props.showPrimaryColorPreview,
186
+ "onChange": handleColorChange,
187
+ "onRecentColorsChange": syncRecentColors,
188
+ "onPaletteBarChange": (context) => {
189
+ emit("palette-bar-change", context);
190
+ }
140
191
  }, null);
141
192
  };
142
193
  return () => {
143
- return props.hideTrigger ? renderPanel() : createVNode(Trigger, mergeProps({
144
- "trigger": "click",
145
- "position": "bl",
146
- "animationName": "slide-dynamic-origin",
147
- "popupOffset": 4,
148
- "disabled": props.disabled,
149
- "onPopupVisibleChange": onPopupVisibleChange
150
- }, props.triggerProps), {
151
- default: () => [slots.default ? slots.default() : renderInput()],
194
+ return props.hideTrigger ? renderPanel() : createVNode(Trigger, mergeProps({ "onPopupVisibleChange": onPopupVisibleChange }, mergedTriggerProps.value), {
195
+ default: () => [slots.default ? slots.default() : renderTriggerInput()],
152
196
  content: renderPanel
153
197
  });
154
198
  };