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