vxe-pc-ui 3.3.43 → 3.3.44

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