vxe-pc-ui 3.3.43 → 3.3.45

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 (154) hide show
  1. package/es/button/style.css +1 -1
  2. package/es/button/style.min.css +1 -1
  3. package/es/color-picker/src/color-picker.js +1044 -7
  4. package/es/color-picker/src/util.js +190 -0
  5. package/es/color-picker/style.css +381 -0
  6. package/es/color-picker/style.min.css +1 -0
  7. package/es/form/render/index.js +26 -1
  8. package/es/icon/style.css +1 -1
  9. package/es/input/src/input.js +19 -8
  10. package/es/language/ar-EG.js +9 -0
  11. package/es/language/de-DE.js +9 -0
  12. package/es/language/en-US.js +9 -0
  13. package/es/language/es-ES.js +9 -0
  14. package/es/language/fr-FR.js +9 -0
  15. package/es/language/hu-HU.js +9 -0
  16. package/es/language/hy-AM.js +9 -0
  17. package/es/language/ja-JP.js +9 -0
  18. package/es/language/ko-KR.js +9 -0
  19. package/es/language/nb-NO.js +9 -0
  20. package/es/language/pt-BR.js +9 -0
  21. package/es/language/ru-RU.js +9 -0
  22. package/es/language/ug-CN.js +9 -0
  23. package/es/language/uk-UA.js +9 -0
  24. package/es/language/vi-VN.js +9 -0
  25. package/es/language/zh-CHT.js +9 -0
  26. package/es/language/zh-CN.js +9 -0
  27. package/es/number-input/src/number-input.js +3 -1
  28. package/es/slider/src/slider.js +2 -4
  29. package/es/style.css +1 -1
  30. package/es/style.min.css +1 -1
  31. package/es/ui/index.js +12 -3
  32. package/es/ui/src/log.js +1 -1
  33. package/es/vxe-button/style.css +1 -1
  34. package/es/vxe-button/style.min.css +1 -1
  35. package/es/vxe-color-picker/style.css +381 -0
  36. package/es/vxe-color-picker/style.min.css +1 -0
  37. package/helper/vetur/attributes.json +1 -1
  38. package/helper/vetur/tags.json +1 -1
  39. package/lib/button/style/style.css +1 -1
  40. package/lib/button/style/style.min.css +1 -1
  41. package/lib/color-picker/src/color-picker.js +1004 -7
  42. package/lib/color-picker/src/color-picker.min.js +1 -1
  43. package/lib/color-picker/src/util.js +215 -0
  44. package/lib/color-picker/src/util.min.js +1 -0
  45. package/lib/color-picker/style/style.css +381 -0
  46. package/lib/color-picker/style/style.min.css +1 -0
  47. package/lib/form/render/index.js +28 -1
  48. package/lib/form/render/index.min.js +1 -1
  49. package/lib/icon/style/style.css +1 -1
  50. package/lib/icon/style/style.min.css +1 -1
  51. package/lib/index.umd.js +10025 -8762
  52. package/lib/index.umd.min.js +1 -1
  53. package/lib/input/src/input.js +17 -7
  54. package/lib/input/src/input.min.js +1 -1
  55. package/lib/language/ar-EG.js +9 -0
  56. package/lib/language/ar-EG.min.js +1 -1
  57. package/lib/language/de-DE.js +9 -0
  58. package/lib/language/de-DE.min.js +1 -1
  59. package/lib/language/en-US.js +9 -0
  60. package/lib/language/en-US.min.js +1 -1
  61. package/lib/language/en-US.umd.js +9 -0
  62. package/lib/language/es-ES.js +9 -0
  63. package/lib/language/es-ES.min.js +1 -1
  64. package/lib/language/es-ES.umd.js +9 -0
  65. package/lib/language/fr-FR.js +9 -0
  66. package/lib/language/fr-FR.min.js +1 -1
  67. package/lib/language/hu-HU.js +9 -0
  68. package/lib/language/hu-HU.min.js +1 -1
  69. package/lib/language/hu-HU.umd.js +9 -0
  70. package/lib/language/hy-AM.js +9 -0
  71. package/lib/language/hy-AM.min.js +1 -1
  72. package/lib/language/ja-JP.js +9 -0
  73. package/lib/language/ja-JP.min.js +1 -1
  74. package/lib/language/ja-JP.umd.js +9 -0
  75. package/lib/language/ko-KR.js +9 -0
  76. package/lib/language/ko-KR.min.js +1 -1
  77. package/lib/language/ko-KR.umd.js +9 -0
  78. package/lib/language/nb-NO.js +9 -0
  79. package/lib/language/nb-NO.min.js +1 -1
  80. package/lib/language/pt-BR.js +9 -0
  81. package/lib/language/pt-BR.min.js +1 -1
  82. package/lib/language/pt-BR.umd.js +9 -0
  83. package/lib/language/ru-RU.js +9 -0
  84. package/lib/language/ru-RU.min.js +1 -1
  85. package/lib/language/ru-RU.umd.js +9 -0
  86. package/lib/language/ug-CN.js +9 -0
  87. package/lib/language/ug-CN.min.js +1 -1
  88. package/lib/language/uk-UA.js +9 -0
  89. package/lib/language/uk-UA.min.js +1 -1
  90. package/lib/language/uk-UA.umd.js +9 -0
  91. package/lib/language/vi-VN.js +9 -0
  92. package/lib/language/vi-VN.min.js +1 -1
  93. package/lib/language/zh-CHT.js +9 -0
  94. package/lib/language/zh-CHT.min.js +1 -1
  95. package/lib/language/zh-CHT.umd.js +9 -0
  96. package/lib/language/zh-CN.js +9 -0
  97. package/lib/language/zh-CN.min.js +1 -1
  98. package/lib/language/zh-CN.umd.js +9 -0
  99. package/lib/number-input/src/number-input.js +3 -1
  100. package/lib/number-input/src/number-input.min.js +1 -1
  101. package/lib/slider/src/slider.js +2 -4
  102. package/lib/slider/src/slider.min.js +1 -1
  103. package/lib/style.css +1 -1
  104. package/lib/style.min.css +1 -1
  105. package/lib/ui/index.js +12 -3
  106. package/lib/ui/index.min.js +1 -1
  107. package/lib/ui/src/log.js +1 -1
  108. package/lib/ui/src/log.min.js +1 -1
  109. package/lib/vxe-button/style/style.css +1 -1
  110. package/lib/vxe-button/style/style.min.css +1 -1
  111. package/lib/vxe-color-picker/style/style.css +381 -0
  112. package/lib/vxe-color-picker/style/style.min.css +1 -0
  113. package/package.json +2 -2
  114. package/packages/color-picker/src/color-picker.ts +1091 -9
  115. package/packages/color-picker/src/util.ts +198 -0
  116. package/packages/form/render/index.ts +26 -1
  117. package/packages/input/src/input.ts +18 -8
  118. package/packages/language/ar-EG.ts +9 -0
  119. package/packages/language/de-DE.ts +9 -0
  120. package/packages/language/en-US.ts +9 -0
  121. package/packages/language/es-ES.ts +9 -0
  122. package/packages/language/fr-FR.ts +9 -0
  123. package/packages/language/hu-HU.ts +9 -0
  124. package/packages/language/hy-AM.ts +9 -0
  125. package/packages/language/ja-JP.ts +9 -0
  126. package/packages/language/ko-KR.ts +9 -0
  127. package/packages/language/nb-NO.ts +9 -0
  128. package/packages/language/pt-BR.ts +9 -0
  129. package/packages/language/ru-RU.ts +9 -0
  130. package/packages/language/ug-CN.ts +9 -0
  131. package/packages/language/uk-UA.ts +9 -0
  132. package/packages/language/vi-VN.ts +9 -0
  133. package/packages/language/zh-CHT.ts +9 -0
  134. package/packages/language/zh-CN.ts +9 -0
  135. package/packages/number-input/src/number-input.ts +3 -1
  136. package/packages/slider/src/slider.ts +2 -4
  137. package/packages/ui/index.ts +12 -2
  138. package/styles/components/button.scss +1 -1
  139. package/styles/components/color-picker.scss +365 -0
  140. package/types/components/color-picker.d.ts +21 -0
  141. package/types/components/table.d.ts +4 -2
  142. package/types/ui/global-icon.d.ts +3 -0
  143. /package/es/icon/{iconfont.1734680304044.ttf → iconfont.1734966316353.ttf} +0 -0
  144. /package/es/icon/{iconfont.1734680304044.woff → iconfont.1734966316353.woff} +0 -0
  145. /package/es/icon/{iconfont.1734680304044.woff2 → iconfont.1734966316353.woff2} +0 -0
  146. /package/es/{iconfont.1734680304044.ttf → iconfont.1734966316353.ttf} +0 -0
  147. /package/es/{iconfont.1734680304044.woff → iconfont.1734966316353.woff} +0 -0
  148. /package/es/{iconfont.1734680304044.woff2 → iconfont.1734966316353.woff2} +0 -0
  149. /package/lib/icon/style/{iconfont.1734680304044.ttf → iconfont.1734966316353.ttf} +0 -0
  150. /package/lib/icon/style/{iconfont.1734680304044.woff → iconfont.1734966316353.woff} +0 -0
  151. /package/lib/icon/style/{iconfont.1734680304044.woff2 → iconfont.1734966316353.woff2} +0 -0
  152. /package/lib/{iconfont.1734680304044.ttf → iconfont.1734966316353.ttf} +0 -0
  153. /package/lib/{iconfont.1734680304044.woff → iconfont.1734966316353.woff} +0 -0
  154. /package/lib/{iconfont.1734680304044.woff2 → iconfont.1734966316353.woff2} +0 -0
@@ -1,14 +1,106 @@
1
1
  import { defineVxeComponent } from '../../ui/src/comp';
2
2
  import XEUtils from 'xe-utils';
3
- import { createEvent } from '../../ui';
3
+ import { VxeUI, getIcon, getConfig, getI18n, globalEvents, createEvent, globalMixins, renderEmptyElement } from '../../ui';
4
+ import { getEventTargetNode, getAbsolutePos, toCssUnit } from '../../ui/src/dom';
5
+ import { getLastZIndex, nextZIndex } from '../../ui/src/utils';
6
+ import { parseColor, updateColorAlpha, hexToHsv, rgbToHsv, rgbToHex, hexToRgb, hsvToRgb, toRgb } from './util';
7
+ import VxeButtonComponent from '../../button/src/button';
8
+ import VxeInputComponent from '../../input/src/input';
4
9
  export default defineVxeComponent({
5
10
  name: 'VxeColorPicker',
6
- props: {},
11
+ mixins: [
12
+ globalMixins.sizeMixin
13
+ ],
14
+ model: {
15
+ prop: 'value',
16
+ event: 'modelValue'
17
+ },
18
+ props: {
19
+ value: String,
20
+ placeholder: String,
21
+ clearable: {
22
+ type: Boolean,
23
+ default: () => getConfig().colorPicker.clearable
24
+ },
25
+ type: {
26
+ type: String,
27
+ default: () => getConfig().colorPicker.type
28
+ },
29
+ size: {
30
+ type: String,
31
+ default: () => getConfig().colorPicker.size || getConfig().size
32
+ },
33
+ className: [String, Function],
34
+ popupClassName: [String, Function],
35
+ colors: {
36
+ type: Array,
37
+ default: () => XEUtils.clone(getConfig().colorPicker.colors, true) || []
38
+ },
39
+ showAlpha: {
40
+ type: Boolean,
41
+ default: () => getConfig().colorPicker.showAlpha
42
+ },
43
+ showColorExtractor: {
44
+ type: Boolean,
45
+ default: () => getConfig().colorPicker.showColorExtractor
46
+ },
47
+ showQuick: {
48
+ type: Boolean,
49
+ default: () => getConfig().colorPicker.showQuick
50
+ },
51
+ readonly: {
52
+ type: Boolean,
53
+ default: null
54
+ },
55
+ disabled: {
56
+ type: Boolean,
57
+ default: null
58
+ },
59
+ clickToCopy: {
60
+ type: Boolean,
61
+ default: () => getConfig().colorPicker.clickToCopy
62
+ },
63
+ placement: String,
64
+ transfer: {
65
+ type: Boolean,
66
+ default: null
67
+ }
68
+ },
69
+ inject: {
70
+ $xeModal: {
71
+ default: null
72
+ },
73
+ $xeDrawer: {
74
+ default: null
75
+ },
76
+ $xeTable: {
77
+ default: null
78
+ },
79
+ $xeForm: {
80
+ default: null
81
+ },
82
+ formItemInfo: {
83
+ from: 'xeFormItemInfo',
84
+ default: null
85
+ }
86
+ },
87
+ provide() {
88
+ const $xeColorPicker = this;
89
+ return {
90
+ $xeColorPicker
91
+ };
92
+ },
7
93
  data() {
8
94
  const xID = XEUtils.uniqueId();
9
95
  const reactData = {
10
96
  initialized: false,
11
97
  selectColor: '',
98
+ panelColor: '',
99
+ hexValue: '',
100
+ rValue: 0,
101
+ gValue: 0,
102
+ bValue: 0,
103
+ aValue: 0,
12
104
  panelIndex: 0,
13
105
  panelStyle: {},
14
106
  panelPlacement: null,
@@ -16,11 +108,94 @@ export default defineVxeComponent({
16
108
  isAniVisible: false,
17
109
  isActivated: false
18
110
  };
111
+ const internalData = {
112
+ hpTimeout: undefined
113
+ };
19
114
  return {
20
115
  xID,
21
- reactData
116
+ reactData,
117
+ internalData
22
118
  };
23
119
  },
120
+ computed: Object.assign(Object.assign({}, {}), { computeFormReadonly() {
121
+ const $xeColorPicker = this;
122
+ const props = $xeColorPicker;
123
+ const $xeForm = $xeColorPicker.$xeForm;
124
+ const { readonly } = props;
125
+ if (readonly === null) {
126
+ if ($xeForm) {
127
+ return $xeForm.readonly;
128
+ }
129
+ return false;
130
+ }
131
+ return readonly;
132
+ },
133
+ computeIsDisabled() {
134
+ const $xeColorPicker = this;
135
+ const props = $xeColorPicker;
136
+ const $xeForm = $xeColorPicker.$xeForm;
137
+ const { disabled } = props;
138
+ if (disabled === null) {
139
+ if ($xeForm) {
140
+ return $xeForm.disabled;
141
+ }
142
+ return false;
143
+ }
144
+ return disabled;
145
+ },
146
+ computeBtnTransfer() {
147
+ const $xeColorPicker = this;
148
+ const props = $xeColorPicker;
149
+ const $xeTable = $xeColorPicker.$xeTable;
150
+ const $xeModal = $xeColorPicker.$xeModal;
151
+ const $xeDrawer = $xeColorPicker.$xeDrawer;
152
+ const $xeForm = $xeColorPicker.$xeForm;
153
+ const { transfer } = props;
154
+ if (transfer === null) {
155
+ const globalTransfer = getConfig().colorPicker.transfer;
156
+ if (XEUtils.isBoolean(globalTransfer)) {
157
+ return globalTransfer;
158
+ }
159
+ if ($xeTable || $xeModal || $xeDrawer || $xeForm) {
160
+ return true;
161
+ }
162
+ }
163
+ return transfer;
164
+ },
165
+ computeColorList() {
166
+ const $xeColorPicker = this;
167
+ const props = $xeColorPicker;
168
+ const { colors } = props;
169
+ if (colors) {
170
+ return colors.map(item => {
171
+ if (XEUtils.isString(item)) {
172
+ return {
173
+ label: item,
174
+ value: item
175
+ };
176
+ }
177
+ return {
178
+ label: XEUtils.eqNull(item.label) ? item.value : item.label,
179
+ value: item.value
180
+ };
181
+ });
182
+ }
183
+ return [];
184
+ },
185
+ computeValueType() {
186
+ const $xeColorPicker = this;
187
+ const props = $xeColorPicker;
188
+ const { type } = props;
189
+ if (type === 'rgb' || type === 'rgba') {
190
+ return 'rgb';
191
+ }
192
+ return 'hex';
193
+ },
194
+ computeIsRgb() {
195
+ const $xeColorPicker = this;
196
+ const valueType = $xeColorPicker.computeValueType;
197
+ return valueType === 'rgb';
198
+ } }),
24
199
  methods: {
25
200
  //
26
201
  // Method
@@ -39,18 +214,880 @@ export default defineVxeComponent({
39
214
  $xeColorPicker.$emit('model-value', value);
40
215
  }
41
216
  },
217
+ updateMode() {
218
+ const $xeColorPicker = this;
219
+ const props = $xeColorPicker;
220
+ const reactData = $xeColorPicker.reactData;
221
+ const { value } = props;
222
+ reactData.selectColor = XEUtils.toValueString(value);
223
+ $xeColorPicker.updateModelColor();
224
+ },
225
+ updateModelColor() {
226
+ const $xeColorPicker = this;
227
+ const reactData = $xeColorPicker.reactData;
228
+ const { selectColor, isAniVisible } = reactData;
229
+ const isRgb = $xeColorPicker.computeIsRgb;
230
+ const hueSliderEl = $xeColorPicker.$refs.refHueSliderElem;
231
+ const alphaSliderEl = $xeColorPicker.$refs.refAlphaSliderElem;
232
+ const colorRest = parseColor(selectColor);
233
+ reactData.hexValue = colorRest.hex;
234
+ reactData.rValue = colorRest.r;
235
+ reactData.gValue = colorRest.g;
236
+ reactData.bValue = colorRest.b;
237
+ reactData.aValue = colorRest.a;
238
+ if (colorRest.value) {
239
+ if (isRgb) {
240
+ if (colorRest.type === 'hex') {
241
+ const rgbRest = hexToRgb(colorRest.hex);
242
+ if (rgbRest) {
243
+ reactData.rValue = rgbRest.r;
244
+ reactData.gValue = rgbRest.g;
245
+ reactData.bValue = rgbRest.b;
246
+ reactData.aValue = rgbRest.a;
247
+ }
248
+ }
249
+ }
250
+ else {
251
+ if (colorRest.type !== 'hex') {
252
+ reactData.hexValue = rgbToHex(colorRest);
253
+ }
254
+ }
255
+ }
256
+ if (isAniVisible) {
257
+ const hsvRest = colorRest.type === 'hex' ? hexToHsv(colorRest.hex) : rgbToHsv(colorRest);
258
+ const colorPanelEl = $xeColorPicker.$refs.refColorPanelElem;
259
+ if (hsvRest) {
260
+ if (colorPanelEl) {
261
+ const offsetTop = colorPanelEl.clientHeight * (1 - hsvRest.v);
262
+ const offsetLeft = colorPanelEl.clientWidth * hsvRest.s;
263
+ $xeColorPicker.handlePanelColor(offsetLeft, offsetTop);
264
+ }
265
+ if (hueSliderEl) {
266
+ $xeColorPicker.handleHueColor(XEUtils.ceil((1 - hsvRest.h / 360) * hueSliderEl.clientWidth));
267
+ }
268
+ }
269
+ if (alphaSliderEl) {
270
+ $xeColorPicker.handleAlphaColor(alphaSliderEl.clientWidth * colorRest.a);
271
+ }
272
+ }
273
+ },
274
+ updateZindex() {
275
+ const $xeColorPicker = this;
276
+ const reactData = $xeColorPicker.reactData;
277
+ if (reactData.panelIndex < getLastZIndex()) {
278
+ reactData.panelIndex = nextZIndex();
279
+ }
280
+ },
281
+ updatePlacement() {
282
+ const $xeColorPicker = this;
283
+ const props = $xeColorPicker;
284
+ const reactData = $xeColorPicker.reactData;
285
+ return $xeColorPicker.$nextTick().then(() => {
286
+ const { placement } = props;
287
+ const { panelIndex } = reactData;
288
+ const el = $xeColorPicker.$refs.refElem;
289
+ const panelElem = $xeColorPicker.$refs.refOptionPanel;
290
+ const btnTransfer = $xeColorPicker.computeBtnTransfer;
291
+ if (panelElem && el) {
292
+ const targetHeight = el.offsetHeight;
293
+ const targetWidth = el.offsetWidth;
294
+ const panelHeight = panelElem.offsetHeight;
295
+ const panelWidth = panelElem.offsetWidth;
296
+ const marginSize = 5;
297
+ const panelStyle = {
298
+ zIndex: panelIndex
299
+ };
300
+ const { boundingTop, boundingLeft, visibleHeight, visibleWidth } = getAbsolutePos(el);
301
+ let panelPlacement = 'bottom';
302
+ if (btnTransfer) {
303
+ let left = boundingLeft;
304
+ let top = boundingTop + targetHeight;
305
+ if (placement === 'top') {
306
+ panelPlacement = 'top';
307
+ top = boundingTop - panelHeight;
308
+ }
309
+ else if (!placement) {
310
+ // 如果下面不够放,则向上
311
+ if (top + panelHeight + marginSize > visibleHeight) {
312
+ panelPlacement = 'top';
313
+ top = boundingTop - panelHeight;
314
+ }
315
+ // 如果上面不够放,则向下(优先)
316
+ if (top < marginSize) {
317
+ panelPlacement = 'bottom';
318
+ top = boundingTop + targetHeight;
319
+ }
320
+ }
321
+ // 如果溢出右边
322
+ if (left + panelWidth + marginSize > visibleWidth) {
323
+ left -= left + panelWidth + marginSize - visibleWidth;
324
+ }
325
+ // 如果溢出左边
326
+ if (left < marginSize) {
327
+ left = marginSize;
328
+ }
329
+ Object.assign(panelStyle, {
330
+ left: `${left}px`,
331
+ top: `${top}px`,
332
+ minWidth: `${targetWidth}px`
333
+ });
334
+ }
335
+ else {
336
+ if (placement === 'top') {
337
+ panelPlacement = 'top';
338
+ panelStyle.bottom = `${targetHeight}px`;
339
+ }
340
+ else if (!placement) {
341
+ // 如果下面不够放,则向上
342
+ if (boundingTop + targetHeight + panelHeight > visibleHeight) {
343
+ // 如果上面不够放,则向下(优先)
344
+ if (boundingTop - targetHeight - panelHeight > marginSize) {
345
+ panelPlacement = 'top';
346
+ panelStyle.bottom = `${targetHeight}px`;
347
+ }
348
+ }
349
+ }
350
+ }
351
+ reactData.panelStyle = panelStyle;
352
+ reactData.panelPlacement = panelPlacement;
353
+ return $xeColorPicker.$nextTick();
354
+ }
355
+ });
356
+ },
357
+ showOptionPanel() {
358
+ const $xeColorPicker = this;
359
+ const reactData = $xeColorPicker.reactData;
360
+ const internalData = $xeColorPicker.internalData;
361
+ const { hpTimeout } = internalData;
362
+ const isDisabled = $xeColorPicker.computeIsDisabled;
363
+ if (!isDisabled) {
364
+ if (hpTimeout) {
365
+ clearTimeout(hpTimeout);
366
+ internalData.hpTimeout = undefined;
367
+ }
368
+ const btnTransfer = $xeColorPicker.computeBtnTransfer;
369
+ const panelElem = $xeColorPicker.$refs.refOptionPanel;
370
+ if (!reactData.initialized) {
371
+ reactData.initialized = true;
372
+ if (btnTransfer) {
373
+ if (panelElem) {
374
+ document.body.appendChild(panelElem);
375
+ }
376
+ }
377
+ }
378
+ reactData.isActivated = true;
379
+ reactData.isAniVisible = true;
380
+ setTimeout(() => {
381
+ $xeColorPicker.updateModelColor();
382
+ reactData.visiblePanel = true;
383
+ }, 10);
384
+ $xeColorPicker.updateZindex();
385
+ $xeColorPicker.updatePlacement();
386
+ }
387
+ },
388
+ hideOptionPanel() {
389
+ const $xeColorPicker = this;
390
+ const reactData = $xeColorPicker.reactData;
391
+ const internalData = $xeColorPicker.internalData;
392
+ reactData.visiblePanel = false;
393
+ internalData.hpTimeout = window.setTimeout(() => {
394
+ reactData.isAniVisible = false;
395
+ }, 350);
396
+ },
397
+ changeEvent(evnt, value) {
398
+ const $xeColorPicker = this;
399
+ const props = $xeColorPicker;
400
+ const reactData = $xeColorPicker.reactData;
401
+ const $xeForm = $xeColorPicker.$xeForm;
402
+ const formItemInfo = $xeColorPicker.formItemInfo;
403
+ reactData.selectColor = value;
404
+ if (value !== props.value) {
405
+ $xeColorPicker.emitModel(value);
406
+ $xeColorPicker.dispatchEvent('change', { value }, evnt);
407
+ // 自动更新校验状态
408
+ if ($xeForm && formItemInfo) {
409
+ $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value);
410
+ }
411
+ }
412
+ },
413
+ clearValueEvent(evnt, selectValue) {
414
+ const $xeColorPicker = this;
415
+ $xeColorPicker.changeEvent(evnt, selectValue);
416
+ $xeColorPicker.dispatchEvent('clear', { value: selectValue }, evnt);
417
+ },
418
+ focusEvent() {
419
+ const $xeColorPicker = this;
420
+ const reactData = $xeColorPicker.reactData;
421
+ const isDisabled = $xeColorPicker.computeIsDisabled;
422
+ if (!isDisabled) {
423
+ if (!reactData.visiblePanel) {
424
+ $xeColorPicker.showOptionPanel();
425
+ }
426
+ }
427
+ },
428
+ blurEvent() {
429
+ const $xeColorPicker = this;
430
+ const reactData = $xeColorPicker.reactData;
431
+ reactData.isActivated = false;
432
+ },
433
+ clearEvent(evnt) {
434
+ const $xeColorPicker = this;
435
+ $xeColorPicker.clearValueEvent(evnt, null);
436
+ $xeColorPicker.hideOptionPanel();
437
+ },
438
+ confirmEvent(evnt) {
439
+ const $xeColorPicker = this;
440
+ const reactData = $xeColorPicker.reactData;
441
+ const { selectColor } = reactData;
442
+ $xeColorPicker.changeEvent(evnt, selectColor);
443
+ $xeColorPicker.hideOptionPanel();
444
+ },
445
+ togglePanelEvent(evnt) {
446
+ const $xeColorPicker = this;
447
+ const reactData = $xeColorPicker.reactData;
448
+ evnt.preventDefault();
449
+ if (reactData.visiblePanel) {
450
+ $xeColorPicker.hideOptionPanel();
451
+ }
452
+ else {
453
+ $xeColorPicker.showOptionPanel();
454
+ }
455
+ },
456
+ clickEvent(evnt) {
457
+ const $xeColorPicker = this;
458
+ $xeColorPicker.togglePanelEvent(evnt);
459
+ $xeColorPicker.dispatchEvent('click', {}, evnt);
460
+ },
461
+ handleHueColor(offsetLeft) {
462
+ const $xeColorPicker = this;
463
+ const reactData = $xeColorPicker.reactData;
464
+ const hueSliderEl = $xeColorPicker.$refs.refHueSliderElem;
465
+ const hueSliderBtnEl = $xeColorPicker.$refs.refHueSliderBtnElem;
466
+ if (hueSliderEl && hueSliderBtnEl) {
467
+ if (offsetLeft < 0) {
468
+ offsetLeft = 0;
469
+ }
470
+ const barWidth = XEUtils.toInteger(hueSliderEl.clientWidth);
471
+ const itemNum = 255;
472
+ const countNum = itemNum * 6;
473
+ const offsetX = XEUtils.ceil(countNum / barWidth * offsetLeft);
474
+ const offsetNum = offsetX % itemNum;
475
+ let rNum = 0;
476
+ let gNum = 0;
477
+ let bNum = 0;
478
+ switch (Math.ceil(offsetX / itemNum)) {
479
+ case 1:
480
+ rNum = itemNum;
481
+ bNum = offsetNum;
482
+ break;
483
+ case 2:
484
+ rNum = itemNum - offsetNum;
485
+ bNum = itemNum;
486
+ break;
487
+ case 3:
488
+ gNum = offsetNum;
489
+ bNum = itemNum;
490
+ break;
491
+ case 4:
492
+ gNum = itemNum;
493
+ bNum = itemNum - offsetNum;
494
+ break;
495
+ case 5:
496
+ rNum = offsetNum;
497
+ gNum = itemNum;
498
+ break;
499
+ case 6:
500
+ rNum = itemNum;
501
+ gNum = itemNum - offsetNum;
502
+ break;
503
+ }
504
+ reactData.panelColor = toRgb(rNum, gNum, bNum);
505
+ hueSliderBtnEl.style.left = toCssUnit(offsetLeft);
506
+ }
507
+ },
508
+ handleHueBarEvent(evnt) {
509
+ const $xeColorPicker = this;
510
+ const hueSliderEl = $xeColorPicker.$refs.refHueSliderElem;
511
+ const hueSliderBtnEl = $xeColorPicker.$refs.refHueSliderBtnElem;
512
+ if (hueSliderEl && hueSliderBtnEl) {
513
+ const hueSliderRect = hueSliderEl.getBoundingClientRect();
514
+ const barWidth = XEUtils.toInteger(hueSliderEl.clientWidth);
515
+ const offsetLeft = XEUtils.ceil(Math.min(barWidth - 1, Math.max(1, evnt.clientX - hueSliderRect.x)));
516
+ $xeColorPicker.handleHueColor(offsetLeft);
517
+ }
518
+ },
519
+ handleHueSliderMousedownEvent(evnt) {
520
+ const $xeColorPicker = this;
521
+ evnt.preventDefault();
522
+ document.onmousemove = evnt => {
523
+ evnt.preventDefault();
524
+ $xeColorPicker.handleHueBarEvent(evnt);
525
+ };
526
+ document.onmouseup = (evnt) => {
527
+ document.onmousemove = null;
528
+ document.onmouseup = null;
529
+ $xeColorPicker.handleHueBarEvent(evnt);
530
+ };
531
+ },
532
+ handleAlphaColor(offsetLeft) {
533
+ const $xeColorPicker = this;
534
+ const reactData = $xeColorPicker.reactData;
535
+ const { selectColor } = reactData;
536
+ const alphaSliderEl = $xeColorPicker.$refs.refAlphaSliderElem;
537
+ const alphaSliderBtnEl = $xeColorPicker.$refs.refAlphaSliderBtnElem;
538
+ if (alphaSliderEl && alphaSliderBtnEl) {
539
+ const alphaSliderRect = alphaSliderEl.getBoundingClientRect();
540
+ const barWidth = alphaSliderRect.width;
541
+ if (offsetLeft < 0) {
542
+ offsetLeft = 0;
543
+ }
544
+ if (offsetLeft > barWidth) {
545
+ offsetLeft = barWidth;
546
+ }
547
+ const alpha = XEUtils.ceil(100 / barWidth * offsetLeft / 100, 2);
548
+ reactData.aValue = alpha;
549
+ alphaSliderBtnEl.style.left = toCssUnit(offsetLeft);
550
+ reactData.selectColor = updateColorAlpha(selectColor, alpha);
551
+ }
552
+ },
553
+ handleAlphaBarEvent(evnt) {
554
+ const $xeColorPicker = this;
555
+ const alphaSliderEl = $xeColorPicker.$refs.refAlphaSliderElem;
556
+ const alphaSliderBtnEl = $xeColorPicker.$refs.refAlphaSliderBtnElem;
557
+ if (alphaSliderEl && alphaSliderBtnEl) {
558
+ const alphaSliderRect = alphaSliderEl.getBoundingClientRect();
559
+ const barWidth = alphaSliderRect.width;
560
+ const offsetLeft = Math.min(barWidth, Math.max(0, evnt.clientX - alphaSliderRect.x));
561
+ $xeColorPicker.handleAlphaColor(offsetLeft);
562
+ $xeColorPicker.updateModelColor();
563
+ }
564
+ },
565
+ handleAlphaSliderMousedownEvent(evnt) {
566
+ const $xeColorPicker = this;
567
+ evnt.preventDefault();
568
+ document.onmousemove = evnt => {
569
+ evnt.preventDefault();
570
+ $xeColorPicker.handleAlphaBarEvent(evnt);
571
+ };
572
+ document.onmouseup = (evnt) => {
573
+ document.onmousemove = null;
574
+ document.onmouseup = null;
575
+ $xeColorPicker.handleAlphaBarEvent(evnt);
576
+ };
577
+ },
578
+ handleInputRgbEvent() {
579
+ const $xeColorPicker = this;
580
+ const reactData = $xeColorPicker.reactData;
581
+ const { rValue, gValue, bValue, aValue } = reactData;
582
+ reactData.selectColor = toRgb(rValue, gValue, bValue, aValue);
583
+ $xeColorPicker.updateModelColor();
584
+ },
585
+ handleInputAlphaEvent() {
586
+ const $xeColorPicker = this;
587
+ const reactData = $xeColorPicker.reactData;
588
+ const { aValue } = reactData;
589
+ const alphaSliderEl = $xeColorPicker.$refs.refAlphaSliderElem;
590
+ const alphaSliderBtnEl = $xeColorPicker.$refs.refAlphaSliderBtnElem;
591
+ if (alphaSliderEl && alphaSliderBtnEl) {
592
+ const alphaSliderRect = alphaSliderEl.getBoundingClientRect();
593
+ const barWidth = alphaSliderRect.width;
594
+ const offsetLeft = barWidth * aValue;
595
+ $xeColorPicker.handleAlphaColor(offsetLeft);
596
+ }
597
+ },
598
+ handleQuickEvent(evnt, item) {
599
+ const $xeColorPicker = this;
600
+ const reactData = $xeColorPicker.reactData;
601
+ const value = item.value;
602
+ reactData.selectColor = value;
603
+ $xeColorPicker.updateModelColor();
604
+ },
605
+ handlePanelColor(offsetLeft, offsetTop) {
606
+ const $xeColorPicker = this;
607
+ const colorActiveEl = $xeColorPicker.$refs.refColorActiveElem;
608
+ if (colorActiveEl) {
609
+ colorActiveEl.style.top = toCssUnit(offsetTop);
610
+ colorActiveEl.style.left = toCssUnit(offsetLeft);
611
+ }
612
+ },
613
+ handleSelectColorMousedownEvent(evnt) {
614
+ const $xeColorPicker = this;
615
+ const props = $xeColorPicker;
616
+ const reactData = $xeColorPicker.reactData;
617
+ const { showAlpha } = props;
618
+ const { panelColor, aValue } = reactData;
619
+ const colorPanelEl = $xeColorPicker.$refs.refColorPanelElem;
620
+ const colorActiveEl = $xeColorPicker.$refs.refColorActiveElem;
621
+ if (colorPanelEl && colorActiveEl) {
622
+ const colorPanelRect = colorPanelEl.getBoundingClientRect();
623
+ const offsetTop = evnt.clientY - colorPanelRect.y;
624
+ const offsetLeft = evnt.clientX - colorPanelRect.x;
625
+ const colorRest = parseColor(panelColor);
626
+ if (colorRest) {
627
+ const hsvRest = colorRest.type === 'hex' ? hexToHsv(colorRest.hex) : rgbToHsv(colorRest);
628
+ if (hsvRest) {
629
+ const ragRest = hsvToRgb(hsvRest.h, offsetLeft / colorPanelEl.clientWidth, (1 - offsetTop / colorPanelEl.clientHeight));
630
+ reactData.selectColor = toRgb(ragRest.r, ragRest.g, ragRest.b, showAlpha ? aValue : null);
631
+ $xeColorPicker.handlePanelColor(offsetLeft, offsetTop);
632
+ $xeColorPicker.updateModelColor();
633
+ }
634
+ }
635
+ }
636
+ },
637
+ handleCopyColorEvent() {
638
+ const $xeColorPicker = this;
639
+ const reactData = $xeColorPicker.reactData;
640
+ const { selectColor } = reactData;
641
+ if (selectColor) {
642
+ if (VxeUI.clipboard.copy(selectColor)) {
643
+ if (VxeUI.modal) {
644
+ VxeUI.modal.message({
645
+ content: getI18n('vxe.colorPicker.copySuccess', [selectColor]),
646
+ status: 'success'
647
+ });
648
+ }
649
+ }
650
+ }
651
+ },
652
+ handleGlobalMousewheelEvent(evnt) {
653
+ const $xeColorPicker = this;
654
+ const reactData = $xeColorPicker.reactData;
655
+ const { visiblePanel } = reactData;
656
+ const isDisabled = $xeColorPicker.computeIsDisabled;
657
+ if (!isDisabled) {
658
+ if (visiblePanel) {
659
+ const panelElem = $xeColorPicker.$refs.refOptionPanel;
660
+ if (getEventTargetNode(evnt, panelElem).flag) {
661
+ $xeColorPicker.updatePlacement();
662
+ }
663
+ else {
664
+ $xeColorPicker.hideOptionPanel();
665
+ }
666
+ }
667
+ }
668
+ },
669
+ handleGlobalMousedownEvent(evnt) {
670
+ const $xeColorPicker = this;
671
+ const reactData = $xeColorPicker.reactData;
672
+ const { visiblePanel } = reactData;
673
+ const isDisabled = $xeColorPicker.computeIsDisabled;
674
+ if (!isDisabled) {
675
+ const el = $xeColorPicker.$refs.refElem;
676
+ const panelElem = $xeColorPicker.$refs.refOptionPanel;
677
+ reactData.isActivated = getEventTargetNode(evnt, el).flag || getEventTargetNode(evnt, panelElem).flag;
678
+ if (visiblePanel && !reactData.isActivated) {
679
+ $xeColorPicker.hideOptionPanel();
680
+ }
681
+ }
682
+ },
683
+ handleGlobalBlurEvent() {
684
+ const $xeColorPicker = this;
685
+ $xeColorPicker.hideOptionPanel();
686
+ },
42
687
  //
43
688
  // Render
44
689
  //
690
+ renderColorWrapper(h) {
691
+ const $xeColorPicker = this;
692
+ const props = $xeColorPicker;
693
+ const reactData = $xeColorPicker.reactData;
694
+ const { showColorExtractor } = props;
695
+ const { panelColor } = reactData;
696
+ if (showColorExtractor) {
697
+ return h('div', {
698
+ ref: 'refColorPanelElem',
699
+ class: 'vxe-color-picker--color-wrapper',
700
+ on: {
701
+ mousedown: $xeColorPicker.handleSelectColorMousedownEvent
702
+ }
703
+ }, [
704
+ h('div', {
705
+ class: 'vxe-color-picker--color-bg',
706
+ style: {
707
+ backgroundColor: panelColor
708
+ }
709
+ }),
710
+ h('div', {
711
+ class: 'vxe-color-picker--white-bg'
712
+ }),
713
+ h('div', {
714
+ class: 'vxe-color-picker--black-bg'
715
+ }),
716
+ h('div', {
717
+ ref: 'refColorActiveElem',
718
+ class: 'vxe-color-picker--color-active'
719
+ })
720
+ ]);
721
+ }
722
+ return renderEmptyElement($xeColorPicker);
723
+ },
724
+ renderColorBar(h) {
725
+ const $xeColorPicker = this;
726
+ const props = $xeColorPicker;
727
+ const reactData = $xeColorPicker.reactData;
728
+ const { showAlpha, clickToCopy } = props;
729
+ const { hexValue, rValue, gValue, bValue, aValue, selectColor, panelColor } = reactData;
730
+ const valueType = $xeColorPicker.computeValueType;
731
+ const isRgb = $xeColorPicker.computeIsRgb;
732
+ return h('div', {
733
+ class: 'vxe-color-picker--bar-wrapper'
734
+ }, [
735
+ h('div', {
736
+ class: 'vxe-color-picker--slider-wrapper'
737
+ }, [
738
+ h('div', {
739
+ class: 'vxe-color-picker--slider-preview'
740
+ }, [
741
+ h('div', {
742
+ class: 'vxe-color-picker--preview-btn'
743
+ }, [
744
+ h('div', {
745
+ class: 'vxe-color-picker--preview-color',
746
+ style: {
747
+ backgroundColor: selectColor
748
+ }
749
+ }, clickToCopy
750
+ ? [
751
+ h('span', {
752
+ class: 'vxe-color-picker--preview-copy-btn',
753
+ on: {
754
+ click: $xeColorPicker.handleCopyColorEvent
755
+ }
756
+ }, [
757
+ h('i', {
758
+ class: getIcon().COLOR_COPY
759
+ })
760
+ ])
761
+ ]
762
+ : [])
763
+ ])
764
+ ]),
765
+ h('div', {
766
+ class: 'vxe-color-picker--slider-handle'
767
+ }, [
768
+ h('div', {
769
+ ref: 'refHueSliderElem',
770
+ class: 'vxe-color-picker--bar-hue-slider',
771
+ on: {
772
+ click: $xeColorPicker.handleHueBarEvent
773
+ }
774
+ }, [
775
+ h('div', {
776
+ ref: 'refHueSliderBtnElem',
777
+ class: 'vxe-color-picker--bar-hue-btn',
778
+ on: {
779
+ mousedown: $xeColorPicker.handleHueSliderMousedownEvent
780
+ }
781
+ })
782
+ ]),
783
+ showAlpha
784
+ ? h('div', {
785
+ ref: 'refAlphaSliderElem',
786
+ class: 'vxe-color-picker--bar-alpha-slider',
787
+ on: {
788
+ click: $xeColorPicker.handleAlphaBarEvent
789
+ }
790
+ }, [
791
+ h('div', {
792
+ class: 'vxe-color-picker--bar-alpha-bg',
793
+ style: {
794
+ background: `linear-gradient(to right, rgba(0, 0, 0, 0), ${panelColor})`
795
+ }
796
+ }),
797
+ h('div', {
798
+ ref: 'refAlphaSliderBtnElem',
799
+ class: 'vxe-color-picker--bar-alpha-btn',
800
+ on: {
801
+ mousedown: $xeColorPicker.handleAlphaSliderMousedownEvent
802
+ }
803
+ })
804
+ ])
805
+ : renderEmptyElement($xeColorPicker)
806
+ ])
807
+ ]),
808
+ h('div', {
809
+ class: `vxe-color-picker--${valueType}-wrapper`
810
+ }, isRgb
811
+ ? [
812
+ h('div', {
813
+ class: 'vxe-color-picker--input-wrapper'
814
+ }, [
815
+ h(VxeInputComponent, {
816
+ props: {
817
+ type: 'integer',
818
+ size: 'mini',
819
+ align: 'center',
820
+ min: 0,
821
+ max: 255,
822
+ maxLength: 3,
823
+ placeholder: '',
824
+ value: rValue
825
+ },
826
+ on: {
827
+ 'modelValue'(val) {
828
+ reactData.rValue = val;
829
+ },
830
+ change: $xeColorPicker.handleInputRgbEvent
831
+ }
832
+ }),
833
+ h(VxeInputComponent, {
834
+ props: {
835
+ type: 'integer',
836
+ size: 'mini',
837
+ align: 'center',
838
+ min: 0,
839
+ max: 255,
840
+ maxLength: 3,
841
+ placeholder: '',
842
+ value: gValue
843
+ },
844
+ on: {
845
+ 'modelValue'(val) {
846
+ reactData.gValue = val;
847
+ },
848
+ change: $xeColorPicker.handleInputRgbEvent
849
+ }
850
+ }),
851
+ h(VxeInputComponent, {
852
+ props: {
853
+ type: 'integer',
854
+ size: 'mini',
855
+ align: 'center',
856
+ min: 0,
857
+ max: 255,
858
+ maxLength: 3,
859
+ placeholder: '',
860
+ value: bValue
861
+ },
862
+ on: {
863
+ 'modelValue'(val) {
864
+ reactData.bValue = val;
865
+ },
866
+ change: $xeColorPicker.handleInputRgbEvent
867
+ }
868
+ }),
869
+ h(VxeInputComponent, {
870
+ props: {
871
+ type: 'number',
872
+ size: 'mini',
873
+ align: 'center',
874
+ min: 0,
875
+ max: 1,
876
+ step: 0.01,
877
+ maxLength: 4,
878
+ placeholder: '',
879
+ value: aValue
880
+ },
881
+ on: {
882
+ 'modelValue'(val) {
883
+ reactData.aValue = val;
884
+ },
885
+ change: $xeColorPicker.handleInputAlphaEvent
886
+ }
887
+ })
888
+ ]),
889
+ h('div', {
890
+ class: 'vxe-color-picker--input-title'
891
+ }, [
892
+ h('span', 'R'),
893
+ h('span', 'G'),
894
+ h('span', 'B'),
895
+ h('span', 'A')
896
+ ])
897
+ ]
898
+ : [
899
+ h('div', {
900
+ class: 'vxe-color-picker--input-title'
901
+ }, 'HEX'),
902
+ h('div', {
903
+ class: 'vxe-color-picker--input-wrapper'
904
+ }, [
905
+ h(VxeInputComponent, {
906
+ props: {
907
+ type: 'text',
908
+ size: 'mini',
909
+ align: 'center',
910
+ maxLength: 9,
911
+ placeholder: '',
912
+ value: hexValue
913
+ },
914
+ on: {
915
+ 'modelValue'(val) {
916
+ reactData.hexValue = val;
917
+ },
918
+ change() {
919
+ const colorRest = parseColor(reactData.hexValue);
920
+ if (colorRest) {
921
+ if (colorRest.value) {
922
+ reactData.selectColor = colorRest.value;
923
+ $xeColorPicker.updateModelColor();
924
+ }
925
+ }
926
+ }
927
+ }
928
+ })
929
+ ])
930
+ ])
931
+ ]);
932
+ },
933
+ renderQuickWrapper(h) {
934
+ const $xeColorPicker = this;
935
+ const props = $xeColorPicker;
936
+ const { showQuick } = props;
937
+ const colorList = $xeColorPicker.computeColorList;
938
+ if (showQuick && colorList.length) {
939
+ return h('div', {
940
+ class: 'vxe-color-picker--quick-wrapper'
941
+ }, colorList.map((item, i) => {
942
+ return h('div', {
943
+ key: i,
944
+ class: 'vxe-color-picker--quick-item',
945
+ attrs: {
946
+ title: item.label || ''
947
+ },
948
+ style: {
949
+ backgroundColor: item.value
950
+ },
951
+ on: {
952
+ click(evnt) {
953
+ $xeColorPicker.handleQuickEvent(evnt, item);
954
+ }
955
+ }
956
+ });
957
+ }));
958
+ }
959
+ return renderEmptyElement($xeColorPicker);
960
+ },
45
961
  renderVN(h) {
46
962
  const $xeColorPicker = this;
47
- const slots = $xeColorPicker.$scopedSlots;
48
- const defaultSlot = slots.default;
963
+ const props = $xeColorPicker;
964
+ const reactData = $xeColorPicker.reactData;
965
+ const { className, popupClassName, clearable, value } = props;
966
+ const { initialized, isActivated, isAniVisible, visiblePanel } = reactData;
967
+ const vSize = $xeColorPicker.computeSize;
968
+ const isDisabled = $xeColorPicker.computeIsDisabled;
969
+ const btnTransfer = $xeColorPicker.computeBtnTransfer;
970
+ const formReadonly = $xeColorPicker.computeFormReadonly;
971
+ if (formReadonly) {
972
+ return h('div', {
973
+ ref: 'refElem',
974
+ class: ['vxe-color-picker--readonly', className]
975
+ }, [
976
+ h('div', {
977
+ class: 'vxe-color-picker--readonly-color',
978
+ style: {
979
+ backgroundColor: value
980
+ }
981
+ })
982
+ ]);
983
+ }
49
984
  return h('div', {
50
985
  ref: 'refElem',
51
- class: 'vxe-color-picker'
52
- }, defaultSlot ? defaultSlot({}) : []);
986
+ class: ['vxe-color-picker', className ? (XEUtils.isFunction(className) ? className({ $colorPicker: $xeColorPicker }) : className) : '', {
987
+ [`size--${vSize}`]: vSize,
988
+ 'is--selected': !!value,
989
+ 'is--visible': visiblePanel,
990
+ 'is--disabled': isDisabled,
991
+ 'is--active': isActivated
992
+ }]
993
+ }, [
994
+ h('input', {
995
+ ref: 'refInput',
996
+ class: 'vxe-color-picker--input',
997
+ on: {
998
+ focus: $xeColorPicker.focusEvent,
999
+ blur: $xeColorPicker.blurEvent
1000
+ }
1001
+ }),
1002
+ h('div', {
1003
+ class: 'vxe-color-picker--inner',
1004
+ on: {
1005
+ click: $xeColorPicker.clickEvent
1006
+ }
1007
+ }, [
1008
+ h('div', {
1009
+ class: 'vxe-color-picker--inner-color',
1010
+ style: {
1011
+ backgroundColor: value
1012
+ }
1013
+ })
1014
+ ]),
1015
+ h('div', {
1016
+ ref: 'refOptionPanel',
1017
+ class: ['vxe-table--ignore-clear vxe-color-picker--panel', popupClassName ? (XEUtils.isFunction(popupClassName) ? popupClassName({ $colorPicker: $xeColorPicker }) : popupClassName) : '', {
1018
+ [`size--${vSize}`]: vSize,
1019
+ 'is--transfer': btnTransfer,
1020
+ 'ani--leave': isAniVisible,
1021
+ 'ani--enter': visiblePanel
1022
+ }],
1023
+ attrs: {
1024
+ placement: reactData.panelPlacement
1025
+ },
1026
+ style: reactData.panelStyle
1027
+ }, [
1028
+ initialized && (visiblePanel || isAniVisible)
1029
+ ? h('div', {
1030
+ class: 'vxe-color-picker--panel-wrapper'
1031
+ }, [
1032
+ $xeColorPicker.renderColorWrapper(h),
1033
+ $xeColorPicker.renderColorBar(h),
1034
+ $xeColorPicker.renderQuickWrapper(h),
1035
+ h('div', {
1036
+ class: 'vxe-color-picker--footer-wrapper'
1037
+ }, [
1038
+ clearable
1039
+ ? h(VxeButtonComponent, {
1040
+ props: {
1041
+ content: getI18n('vxe.colorPicker.clear'),
1042
+ size: 'mini'
1043
+ },
1044
+ on: {
1045
+ click: $xeColorPicker.clearEvent
1046
+ }
1047
+ })
1048
+ : renderEmptyElement($xeColorPicker),
1049
+ h(VxeButtonComponent, {
1050
+ props: {
1051
+ content: getI18n('vxe.colorPicker.confirm'),
1052
+ size: 'mini',
1053
+ status: 'primary'
1054
+ },
1055
+ on: {
1056
+ click: $xeColorPicker.confirmEvent
1057
+ }
1058
+ })
1059
+ ])
1060
+ ])
1061
+ : renderEmptyElement($xeColorPicker)
1062
+ ])
1063
+ ]);
1064
+ }
1065
+ },
1066
+ watch: {
1067
+ value() {
1068
+ const $xeColorPicker = this;
1069
+ $xeColorPicker.updateMode();
1070
+ }
1071
+ },
1072
+ created() {
1073
+ const $xeColorPicker = this;
1074
+ const props = $xeColorPicker;
1075
+ const reactData = $xeColorPicker.reactData;
1076
+ reactData.selectColor = props.value;
1077
+ $xeColorPicker.updateMode();
1078
+ globalEvents.on($xeColorPicker, 'mousewheel', $xeColorPicker.handleGlobalMousewheelEvent);
1079
+ globalEvents.on($xeColorPicker, 'mousedown', $xeColorPicker.handleGlobalMousedownEvent);
1080
+ globalEvents.on($xeColorPicker, 'blur', $xeColorPicker.handleGlobalBlurEvent);
1081
+ },
1082
+ beforeDestroy() {
1083
+ const $xeColorPicker = this;
1084
+ const panelElem = $xeColorPicker.$refs.refOptionPanel;
1085
+ if (panelElem && panelElem.parentNode) {
1086
+ panelElem.parentNode.removeChild(panelElem);
53
1087
  }
1088
+ globalEvents.off($xeColorPicker, 'mousewheel');
1089
+ globalEvents.off($xeColorPicker, 'mousedown');
1090
+ globalEvents.off($xeColorPicker, 'blur');
54
1091
  },
55
1092
  render(h) {
56
1093
  return this.renderVN(h);