@dimailn/vuetify 2.7.2-alpha24 → 2.7.2-alpha25

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 (74) hide show
  1. package/dist/vuetify.js +241 -230
  2. package/dist/vuetify.js.map +1 -1
  3. package/dist/vuetify.min.css +1 -1
  4. package/dist/vuetify.min.js +2 -2
  5. package/es5/components/VBtn/VBtn.js +16 -16
  6. package/es5/components/VBtn/VBtn.js.map +1 -1
  7. package/es5/components/VColorPicker/VColorPicker.js +18 -31
  8. package/es5/components/VColorPicker/VColorPicker.js.map +1 -1
  9. package/es5/components/VColorPicker/VColorPickerCanvas.js +45 -46
  10. package/es5/components/VColorPicker/VColorPickerCanvas.js.map +1 -1
  11. package/es5/components/VColorPicker/VColorPickerEdit.js +27 -26
  12. package/es5/components/VColorPicker/VColorPickerEdit.js.map +1 -1
  13. package/es5/components/VColorPicker/VColorPickerPreview.js +41 -30
  14. package/es5/components/VColorPicker/VColorPickerPreview.js.map +1 -1
  15. package/es5/components/VColorPicker/VColorPickerSwatches.js +13 -10
  16. package/es5/components/VColorPicker/VColorPickerSwatches.js.map +1 -1
  17. package/es5/components/VDataTable/VDataTable.js +7 -11
  18. package/es5/components/VDataTable/VDataTable.js.map +1 -1
  19. package/es5/components/VInput/VInput.js +20 -6
  20. package/es5/components/VInput/VInput.js.map +1 -1
  21. package/es5/components/VSlider/VSlider.js +23 -18
  22. package/es5/components/VSlider/VSlider.js.map +1 -1
  23. package/es5/components/VTooltip/VTooltip.js +3 -7
  24. package/es5/components/VTooltip/VTooltip.js.map +1 -1
  25. package/es5/framework.js +1 -1
  26. package/lib/components/VBtn/VBtn.js +18 -19
  27. package/lib/components/VBtn/VBtn.js.map +1 -1
  28. package/lib/components/VColorPicker/VColorPicker.js +29 -37
  29. package/lib/components/VColorPicker/VColorPicker.js.map +1 -1
  30. package/lib/components/VColorPicker/VColorPickerCanvas.js +41 -43
  31. package/lib/components/VColorPicker/VColorPickerCanvas.js.map +1 -1
  32. package/lib/components/VColorPicker/VColorPickerEdit.js +25 -31
  33. package/lib/components/VColorPicker/VColorPickerEdit.js.map +1 -1
  34. package/lib/components/VColorPicker/VColorPickerPreview.js +45 -32
  35. package/lib/components/VColorPicker/VColorPickerPreview.js.map +1 -1
  36. package/lib/components/VColorPicker/VColorPickerSwatches.js +15 -9
  37. package/lib/components/VColorPicker/VColorPickerSwatches.js.map +1 -1
  38. package/lib/components/VDataTable/VDataTable.js +3 -4
  39. package/lib/components/VDataTable/VDataTable.js.map +1 -1
  40. package/lib/components/VInput/VInput.js +12 -4
  41. package/lib/components/VInput/VInput.js.map +1 -1
  42. package/lib/components/VSlider/VSlider.js +26 -21
  43. package/lib/components/VSlider/VSlider.js.map +1 -1
  44. package/lib/components/VTooltip/VTooltip.js +6 -9
  45. package/lib/components/VTooltip/VTooltip.js.map +1 -1
  46. package/lib/framework.js +1 -1
  47. package/package.json +1 -1
  48. package/src/components/VBtn/VBtn.ts +18 -16
  49. package/src/components/VBtn/__tests__/VBtn.spec.ts +257 -242
  50. package/src/components/VBtn/__tests__/__snapshots__/VBtn.spec.ts.snap +13 -73
  51. package/src/components/VColorPicker/VColorPicker.ts +32 -35
  52. package/src/components/VColorPicker/VColorPickerCanvas.ts +44 -37
  53. package/src/components/VColorPicker/VColorPickerEdit.ts +37 -35
  54. package/src/components/VColorPicker/VColorPickerPreview.ts +48 -28
  55. package/src/components/VColorPicker/VColorPickerSwatches.ts +23 -12
  56. package/src/components/VColorPicker/__tests__/VColorPicker.spec.ts +47 -47
  57. package/src/components/VColorPicker/__tests__/VColorPickerCanvas.spec.ts +15 -13
  58. package/src/components/VColorPicker/__tests__/VColorPickerEdit.spec.ts +52 -50
  59. package/src/components/VColorPicker/__tests__/VColorPickerPreview.spec.ts +101 -30
  60. package/src/components/VColorPicker/__tests__/__snapshots__/VColorPicker.spec.ts.snap +200 -157
  61. package/src/components/VColorPicker/__tests__/__snapshots__/VColorPickerEdit.spec.ts.snap +28 -11
  62. package/src/components/VDataTable/VDataTable.ts +3 -3
  63. package/src/components/VInput/VInput.ts +8 -2
  64. package/src/components/VInput/__tests__/VInput.spec.ts +170 -234
  65. package/src/components/VInput/__tests__/__snapshots__/VInput.spec.ts.snap +50 -101
  66. package/src/components/VSkeletonLoader/__tests__/VSkeletonLoader.spec.ts +22 -15
  67. package/src/components/VSkeletonLoader/__tests__/__snapshots__/VSkeletonLoader.spec.ts.snap +60 -60
  68. package/src/components/VSlider/VSlider.ts +43 -27
  69. package/src/components/VSlider/__tests__/VSlider.spec.ts +188 -286
  70. package/src/components/VSlider/__tests__/__snapshots__/VSlider.spec.ts.snap +157 -246
  71. package/src/components/VTabs/__tests__/VTab.spec.ts +3 -3
  72. package/src/components/VTabs/__tests__/VTabsBar.spec.ts +2 -2
  73. package/src/components/VTooltip/VTooltip.ts +20 -20
  74. package/src/components/VTooltip/__tests__/VTooltip.spec.ts +60 -75
@@ -1,4 +1,4 @@
1
- import { h } from 'vue'; // Styles
1
+ import { h, defineComponent } from 'vue'; // Styles
2
2
 
3
3
  import "../../../src/components/VColorPicker/VColorPicker.sass"; // Components
4
4
 
@@ -9,13 +9,13 @@ import VColorPickerEdit, { modes } from './VColorPickerEdit';
9
9
  import VColorPickerSwatches from './VColorPickerSwatches'; // Helpers
10
10
 
11
11
  import { parseColor, fromRGBA, extractColor, hasAlpha } from './util';
12
- import mixins from '../../util/mixins';
13
12
  import { deepEqual } from '../../util/helpers'; // Mixins
14
13
 
15
14
  import Elevatable from '../../mixins/elevatable';
16
15
  import Themeable from '../../mixins/themeable';
17
- export default mixins(Elevatable, Themeable).extend({
16
+ export default defineComponent({
18
17
  name: 'v-color-picker',
18
+ mixins: [Elevatable, Themeable],
19
19
  props: {
20
20
  canvasHeight: {
21
21
  type: [String, Number],
@@ -50,14 +50,19 @@ export default mixins(Elevatable, Themeable).extend({
50
50
  default: 300
51
51
  }
52
52
  },
53
- data: () => ({
54
- internalValue: fromRGBA({
55
- r: 255,
56
- g: 0,
57
- b: 0,
58
- a: 1
59
- })
60
- }),
53
+ emits: ['update:modelValue', 'update:color', 'update:mode'],
54
+
55
+ data() {
56
+ return {
57
+ internalValue: fromRGBA({
58
+ r: 255,
59
+ g: 0,
60
+ b: 0,
61
+ a: 1
62
+ })
63
+ };
64
+ },
65
+
61
66
  computed: {
62
67
  hideAlpha() {
63
68
  if (!this.modelValue) return false;
@@ -66,7 +71,7 @@ export default mixins(Elevatable, Themeable).extend({
66
71
 
67
72
  },
68
73
  watch: {
69
- value: {
74
+ modelValue: {
70
75
  handler(color) {
71
76
  this.updateColor(parseColor(color, this.internalValue));
72
77
  },
@@ -116,30 +121,20 @@ export default mixins(Elevatable, Themeable).extend({
116
121
 
117
122
  genPreview() {
118
123
  return h(VColorPickerPreview, {
119
- props: {
120
- color: this.internalValue,
121
- disabled: this.disabled,
122
- hideAlpha: this.hideAlpha
123
- },
124
- on: {
125
- 'update:color': this.updateColor
126
- }
124
+ color: this.internalValue,
125
+ disabled: this.disabled,
126
+ hideAlpha: this.hideAlpha,
127
+ 'onUpdate:color': this.updateColor
127
128
  });
128
129
  },
129
130
 
130
131
  genSwatches() {
131
132
  return h(VColorPickerSwatches, {
132
- props: {
133
- dark: this.dark,
134
- light: this.light,
135
- disabled: this.disabled,
136
- swatches: this.swatches,
137
- color: this.internalValue,
138
- maxHeight: this.swatchesMaxHeight
139
- },
140
- on: {
141
- 'update:color': this.updateColor
142
- }
133
+ disabled: this.disabled,
134
+ swatches: this.swatches,
135
+ color: this.internalValue,
136
+ maxHeight: this.swatchesMaxHeight,
137
+ 'onUpdate:color': this.updateColor
143
138
  });
144
139
  }
145
140
 
@@ -147,15 +142,12 @@ export default mixins(Elevatable, Themeable).extend({
147
142
 
148
143
  render() {
149
144
  return h(VSheet, {
150
- class: 'v-color-picker',
151
- class: {
145
+ class: ['v-color-picker', {
152
146
  'v-color-picker--flat': this.flat,
153
147
  ...this.themeClasses,
154
148
  ...this.elevationClasses
155
- },
156
- props: {
157
- maxWidth: this.width
158
- }
149
+ }],
150
+ maxWidth: this.width
159
151
  }, [!this.hideCanvas && this.genCanvas(), (!this.hideSliders || !this.hideInputs) && this.genControls(), this.showSwatches && this.genSwatches()]);
160
152
  }
161
153
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/VColorPicker/VColorPicker.ts"],"names":[],"mappings":"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","sourcesContent":["import {h} from 'vue'\n// Styles\nimport './VColorPicker.sass'\n\n// Components\nimport VSheet from '../VSheet/VSheet'\nimport VColorPickerPreview from './VColorPickerPreview'\nimport VColorPickerCanvas from './VColorPickerCanvas'\nimport VColorPickerEdit, { Mode, modes } from './VColorPickerEdit'\nimport VColorPickerSwatches from './VColorPickerSwatches'\n\n// Helpers\nimport { VColorPickerColor, parseColor, fromRGBA, extractColor, hasAlpha } from './util'\nimport mixins from '../../util/mixins'\nimport { deepEqual } from '../../util/helpers'\n\n// Mixins\nimport Elevatable from '../../mixins/elevatable'\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport { VNode, PropType } from 'vue'\n\nexport default mixins(Elevatable, Themeable).extend({\n name: 'v-color-picker',\n\n props: {\n canvasHeight: {\n type: [String, Number],\n default: 150,\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10,\n },\n flat: Boolean,\n hideCanvas: Boolean,\n hideSliders: Boolean,\n hideInputs: Boolean,\n hideModeSwitch: Boolean,\n mode: {\n type: String,\n default: 'rgba',\n validator: (v: string) => Object.keys(modes).includes(v),\n },\n showSwatches: Boolean,\n swatches: Array as PropType<string[][]>,\n swatchesMaxHeight: {\n type: [Number, String],\n default: 150,\n },\n modelValue: {\n type: [Object, String],\n },\n width: {\n type: [Number, String],\n default: 300,\n },\n },\n\n data: () => ({\n internalValue: fromRGBA({ r: 255, g: 0, b: 0, a: 1 }),\n }),\n\n computed: {\n hideAlpha (): boolean {\n if (!this.modelValue) return false\n\n return !hasAlpha(this.modelValue)\n },\n },\n\n watch: {\n value: {\n handler (color: any) {\n this.updateColor(parseColor(color, this.internalValue))\n },\n immediate: true,\n },\n },\n\n methods: {\n updateColor (color: VColorPickerColor) {\n this.internalValue = color\n const value = extractColor(this.internalValue, this.modelValue)\n\n if (!deepEqual(value, this.modelValue)) {\n this.$emit('update:modelValue', value)\n this.$emit('update:color', this.internalValue)\n }\n },\n genCanvas (): VNode {\n return h(VColorPickerCanvas, {\n color: this.internalValue,\n disabled: this.disabled,\n dotSize: this.dotSize,\n width: this.width,\n height: this.canvasHeight,\n 'onUpdate:color': this.updateColor\n })\n },\n genControls (): VNode {\n return h('div', {\n class: 'v-color-picker__controls',\n }, [\n !this.hideSliders && this.genPreview(),\n !this.hideInputs && this.genEdit(),\n ])\n },\n genEdit (): VNode {\n return h(VColorPickerEdit, {\n color: this.internalValue,\n disabled: this.disabled,\n hideAlpha: this.hideAlpha,\n hideModeSwitch: this.hideModeSwitch,\n mode: this.mode,\n 'onUpdate:color': this.updateColor,\n 'onUpdate:mode': (v: Mode) => this.$emit('update:mode', v),\n })\n },\n genPreview (): VNode {\n return h(VColorPickerPreview, {\n props: {\n color: this.internalValue,\n disabled: this.disabled,\n hideAlpha: this.hideAlpha,\n },\n on: {\n 'update:color': this.updateColor,\n },\n })\n },\n genSwatches (): VNode {\n return h(VColorPickerSwatches, {\n props: {\n dark: this.dark,\n light: this.light,\n disabled: this.disabled,\n swatches: this.swatches,\n color: this.internalValue,\n maxHeight: this.swatchesMaxHeight,\n },\n on: {\n 'update:color': this.updateColor,\n },\n })\n },\n },\n\n render (): VNode {\n return h(VSheet, {\n class: 'v-color-picker',\n class: {\n 'v-color-picker--flat': this.flat,\n ...this.themeClasses,\n ...this.elevationClasses,\n },\n props: {\n maxWidth: this.width,\n },\n }, [\n !this.hideCanvas && this.genCanvas(),\n (!this.hideSliders || !this.hideInputs) && this.genControls(),\n this.showSwatches && this.genSwatches(),\n ])\n },\n})\n"],"sourceRoot":"","file":"VColorPicker.js"}
1
+ {"version":3,"sources":["../../../src/components/VColorPicker/VColorPicker.ts"],"names":[],"mappings":"AAAA,SAAS,CAAT,EAAY,eAAZ,QAAmC,KAAnC,C,CAEA;;AACA,OAAO,wDAAP,C,CAEA;;AACA,OAAO,MAAP,MAAmB,kBAAnB;AACA,OAAO,mBAAP,MAAgC,uBAAhC;AACA,OAAO,kBAAP,MAA+B,sBAA/B;AACA,OAAO,gBAAP,IAAiC,KAAjC,QAA8C,oBAA9C;AACA,OAAO,oBAAP,MAAiC,wBAAjC,C,CAEA;;AACA,SAA4B,UAA5B,EAAwC,QAAxC,EAAkD,YAAlD,EAAgE,QAAhE,QAAgF,QAAhF;AACA,SAAS,SAAT,QAA0B,oBAA1B,C,CAEA;;AACA,OAAO,UAAP,MAAuB,yBAAvB;AACA,OAAO,SAAP,MAAsB,wBAAtB;AAKA,eAAe,eAAe,CAAC;AAC7B,EAAA,IAAI,EAAE,gBADuB;AAG7B,EAAA,MAAM,EAAE,CAAC,UAAD,EAAa,SAAb,CAHqB;AAK7B,EAAA,KAAK,EAAE;AACL,IAAA,YAAY,EAAE;AACZ,MAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT,CADM;AAEZ,MAAA,OAAO,EAAE;AAFG,KADT;AAKL,IAAA,QAAQ,EAAE,OALL;AAML,IAAA,OAAO,EAAE;AACP,MAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT,CADC;AAEP,MAAA,OAAO,EAAE;AAFF,KANJ;AAUL,IAAA,IAAI,EAAE,OAVD;AAWL,IAAA,UAAU,EAAE,OAXP;AAYL,IAAA,WAAW,EAAE,OAZR;AAaL,IAAA,UAAU,EAAE,OAbP;AAcL,IAAA,cAAc,EAAE,OAdX;AAeL,IAAA,IAAI,EAAE;AACJ,MAAA,IAAI,EAAE,MADF;AAEJ,MAAA,OAAO,EAAE,MAFL;AAGJ,MAAA,SAAS,EAAG,CAAD,IAAe,MAAM,CAAC,IAAP,CAAY,KAAZ,EAAmB,QAAnB,CAA4B,CAA5B;AAHtB,KAfD;AAoBL,IAAA,YAAY,EAAE,OApBT;AAqBL,IAAA,QAAQ,EAAE,KArBL;AAsBL,IAAA,iBAAiB,EAAE;AACjB,MAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT,CADW;AAEjB,MAAA,OAAO,EAAE;AAFQ,KAtBd;AA0BL,IAAA,UAAU,EAAE;AACV,MAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT;AADI,KA1BP;AA6BL,IAAA,KAAK,EAAE;AACL,MAAA,IAAI,EAAE,CAAC,MAAD,EAAS,MAAT,CADD;AAEL,MAAA,OAAO,EAAE;AAFJ;AA7BF,GALsB;AAwC7B,EAAA,KAAK,EAAE,CAAC,mBAAD,EAAsB,cAAtB,EAAsC,aAAtC,CAxCsB;;AA0C7B,EAAA,IAAI,GAAA;AACF,WAAO;AACL,MAAA,aAAa,EAAE,QAAQ,CAAC;AAAE,QAAA,CAAC,EAAE,GAAL;AAAU,QAAA,CAAC,EAAE,CAAb;AAAgB,QAAA,CAAC,EAAE,CAAnB;AAAsB,QAAA,CAAC,EAAE;AAAzB,OAAD;AADlB,KAAP;AAGD,GA9C4B;;AAgD7B,EAAA,QAAQ,EAAE;AACR,IAAA,SAAS,GAAA;AACP,UAAI,CAAC,KAAK,UAAV,EAAsB,OAAO,KAAP;AACtB,aAAO,CAAC,QAAQ,CAAC,KAAK,UAAN,CAAhB;AACD;;AAJO,GAhDmB;AAuD7B,EAAA,KAAK,EAAE;AACL,IAAA,UAAU,EAAE;AACV,MAAA,OAAO,CAAE,KAAF,EAAY;AACjB,aAAK,WAAL,CAAiB,UAAU,CAAC,KAAD,EAAQ,KAAK,aAAb,CAA3B;AACD,OAHS;;AAIV,MAAA,SAAS,EAAE;AAJD;AADP,GAvDsB;AAgE7B,EAAA,OAAO,EAAE;AACP,IAAA,WAAW,CAAE,KAAF,EAA0B;AACnC,WAAK,aAAL,GAAqB,KAArB;AACA,YAAM,KAAK,GAAG,YAAY,CAAC,KAAK,aAAN,EAAqB,KAAK,UAA1B,CAA1B;;AAEA,UAAI,CAAC,SAAS,CAAC,KAAD,EAAQ,KAAK,UAAb,CAAd,EAAwC;AACtC,aAAK,KAAL,CAAW,mBAAX,EAAgC,KAAhC;AACA,aAAK,KAAL,CAAW,cAAX,EAA2B,KAAK,aAAhC;AACD;AACF,KATM;;AAWP,IAAA,SAAS,GAAA;AACP,aAAO,CAAC,CAAC,kBAAD,EAAqB;AAC3B,QAAA,KAAK,EAAE,KAAK,aADe;AAE3B,QAAA,QAAQ,EAAE,KAAK,QAFY;AAG3B,QAAA,OAAO,EAAE,KAAK,OAHa;AAI3B,QAAA,KAAK,EAAE,KAAK,KAJe;AAK3B,QAAA,MAAM,EAAE,KAAK,YALc;AAM3B,0BAAkB,KAAK;AANI,OAArB,CAAR;AAQD,KApBM;;AAsBP,IAAA,WAAW,GAAA;AACT,aAAO,CAAC,CAAC,KAAD,EAAQ;AACd,QAAA,KAAK,EAAE;AADO,OAAR,EAEL,CACD,CAAC,KAAK,WAAN,IAAqB,KAAK,UAAL,EADpB,EAED,CAAC,KAAK,UAAN,IAAoB,KAAK,OAAL,EAFnB,CAFK,CAAR;AAMD,KA7BM;;AA+BP,IAAA,OAAO,GAAA;AACL,aAAO,CAAC,CAAC,gBAAD,EAAmB;AACzB,QAAA,KAAK,EAAE,KAAK,aADa;AAEzB,QAAA,QAAQ,EAAE,KAAK,QAFU;AAGzB,QAAA,SAAS,EAAE,KAAK,SAHS;AAIzB,QAAA,cAAc,EAAE,KAAK,cAJI;AAKzB,QAAA,IAAI,EAAE,KAAK,IALc;AAMzB,0BAAkB,KAAK,WANE;AAOzB,yBAAkB,CAAD,IAAe,KAAK,KAAL,CAAW,aAAX,EAA0B,CAA1B;AAPP,OAAnB,CAAR;AASD,KAzCM;;AA2CP,IAAA,UAAU,GAAA;AACR,aAAO,CAAC,CAAC,mBAAD,EAAsB;AAC5B,QAAA,KAAK,EAAE,KAAK,aADgB;AAE5B,QAAA,QAAQ,EAAE,KAAK,QAFa;AAG5B,QAAA,SAAS,EAAE,KAAK,SAHY;AAI5B,0BAAkB,KAAK;AAJK,OAAtB,CAAR;AAMD,KAlDM;;AAoDP,IAAA,WAAW,GAAA;AACT,aAAO,CAAC,CAAC,oBAAD,EAAuB;AAC7B,QAAA,QAAQ,EAAE,KAAK,QADc;AAE7B,QAAA,QAAQ,EAAE,KAAK,QAFc;AAG7B,QAAA,KAAK,EAAE,KAAK,aAHiB;AAI7B,QAAA,SAAS,EAAE,KAAK,iBAJa;AAK7B,0BAAkB,KAAK;AALM,OAAvB,CAAR;AAOD;;AA5DM,GAhEoB;;AA+H7B,EAAA,MAAM,GAAA;AACJ,WAAO,CAAC,CAAC,MAAD,EAAS;AACf,MAAA,KAAK,EAAE,CAAC,gBAAD,EAAmB;AACxB,gCAAwB,KAAK,IADL;AAExB,WAAG,KAAK,YAFgB;AAGxB,WAAG,KAAK;AAHgB,OAAnB,CADQ;AAMf,MAAA,QAAQ,EAAE,KAAK;AANA,KAAT,EAOL,CACD,CAAC,KAAK,UAAN,IAAoB,KAAK,SAAL,EADnB,EAED,CAAC,CAAC,KAAK,WAAN,IAAqB,CAAC,KAAK,UAA5B,KAA2C,KAAK,WAAL,EAF1C,EAGD,KAAK,YAAL,IAAqB,KAAK,WAAL,EAHpB,CAPK,CAAR;AAYD;;AA5I4B,CAAD,CAA9B","sourcesContent":["import { h, defineComponent } from 'vue'\n\n// Styles\nimport './VColorPicker.sass'\n\n// Components\nimport VSheet from '../VSheet/VSheet'\nimport VColorPickerPreview from './VColorPickerPreview'\nimport VColorPickerCanvas from './VColorPickerCanvas'\nimport VColorPickerEdit, { Mode, modes } from './VColorPickerEdit'\nimport VColorPickerSwatches from './VColorPickerSwatches'\n\n// Helpers\nimport { VColorPickerColor, parseColor, fromRGBA, extractColor, hasAlpha } from './util'\nimport { deepEqual } from '../../util/helpers'\n\n// Mixins\nimport Elevatable from '../../mixins/elevatable'\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport type { VNode, PropType } from 'vue'\n\nexport default defineComponent({\n name: 'v-color-picker',\n\n mixins: [Elevatable, Themeable],\n\n props: {\n canvasHeight: {\n type: [String, Number],\n default: 150,\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10,\n },\n flat: Boolean,\n hideCanvas: Boolean,\n hideSliders: Boolean,\n hideInputs: Boolean,\n hideModeSwitch: Boolean,\n mode: {\n type: String,\n default: 'rgba',\n validator: (v: string) => Object.keys(modes).includes(v),\n },\n showSwatches: Boolean,\n swatches: Array as PropType<string[][]>,\n swatchesMaxHeight: {\n type: [Number, String],\n default: 150,\n },\n modelValue: {\n type: [Object, String],\n },\n width: {\n type: [Number, String],\n default: 300,\n },\n },\n\n emits: ['update:modelValue', 'update:color', 'update:mode'],\n\n data () {\n return {\n internalValue: fromRGBA({ r: 255, g: 0, b: 0, a: 1 }),\n }\n },\n\n computed: {\n hideAlpha (): boolean {\n if (!this.modelValue) return false\n return !hasAlpha(this.modelValue)\n },\n },\n\n watch: {\n modelValue: {\n handler (color: any) {\n this.updateColor(parseColor(color, this.internalValue))\n },\n immediate: true,\n },\n },\n\n methods: {\n updateColor (color: VColorPickerColor) {\n this.internalValue = color\n const value = extractColor(this.internalValue, this.modelValue)\n\n if (!deepEqual(value, this.modelValue)) {\n this.$emit('update:modelValue', value)\n this.$emit('update:color', this.internalValue)\n }\n },\n\n genCanvas (): VNode {\n return h(VColorPickerCanvas, {\n color: this.internalValue,\n disabled: this.disabled,\n dotSize: this.dotSize,\n width: this.width,\n height: this.canvasHeight,\n 'onUpdate:color': this.updateColor\n })\n },\n\n genControls (): VNode {\n return h('div', {\n class: 'v-color-picker__controls',\n }, [\n !this.hideSliders && this.genPreview(),\n !this.hideInputs && this.genEdit(),\n ])\n },\n\n genEdit (): VNode {\n return h(VColorPickerEdit, {\n color: this.internalValue,\n disabled: this.disabled,\n hideAlpha: this.hideAlpha,\n hideModeSwitch: this.hideModeSwitch,\n mode: this.mode,\n 'onUpdate:color': this.updateColor,\n 'onUpdate:mode': (v: string) => this.$emit('update:mode', v),\n })\n },\n\n genPreview (): VNode {\n return h(VColorPickerPreview, {\n color: this.internalValue,\n disabled: this.disabled,\n hideAlpha: this.hideAlpha,\n 'onUpdate:color': this.updateColor,\n })\n },\n\n genSwatches (): VNode {\n return h(VColorPickerSwatches, {\n disabled: this.disabled,\n swatches: this.swatches,\n color: this.internalValue,\n maxHeight: this.swatchesMaxHeight,\n 'onUpdate:color': this.updateColor,\n })\n },\n },\n\n render (): VNode {\n return h(VSheet, {\n class: ['v-color-picker', {\n 'v-color-picker--flat': this.flat,\n ...this.themeClasses,\n ...this.elevationClasses,\n }],\n maxWidth: this.width,\n }, [\n !this.hideCanvas && this.genCanvas(),\n (!this.hideSliders || !this.hideInputs) && this.genControls(),\n this.showSwatches && this.genSwatches(),\n ])\n },\n})\n"],"sourceRoot":"","file":"VColorPicker.js"}
@@ -1,11 +1,9 @@
1
- import { h } from 'vue'; // Styles
1
+ import { h, defineComponent } from 'vue'; // Styles
2
2
 
3
3
  import "../../../src/components/VColorPicker/VColorPickerCanvas.sass"; // Helpers
4
4
 
5
5
  import { clamp, convertToUnit } from '../../util/helpers';
6
- import { fromHSVA, fromRGBA } from './util'; // Types
7
-
8
- import { defineComponent } from 'vue';
6
+ import { fromHSVA, fromRGBA } from './util';
9
7
  export default defineComponent({
10
8
  name: 'v-color-picker-canvas',
11
9
  props: {
@@ -32,6 +30,7 @@ export default defineComponent({
32
30
  default: 300
33
31
  }
34
32
  },
33
+ emits: ['update:color'],
35
34
 
36
35
  data() {
37
36
  return {
@@ -51,14 +50,17 @@ export default defineComponent({
51
50
  y: 0
52
51
  };
53
52
  return {
54
- x: this.color.hsva.s * parseInt(this.width, 10),
55
- y: (1 - this.color.hsva.v) * parseInt(this.height, 10)
53
+ x: this.color.hsva.s * parseInt(String(this.width), 10),
54
+ y: (1 - this.color.hsva.v) * parseInt(String(this.height), 10)
56
55
  };
57
56
  }
58
57
 
59
58
  },
60
59
  watch: {
61
- 'color.hue': 'updateCanvas'
60
+ 'color.hue'() {
61
+ this.updateCanvas();
62
+ }
63
+
62
64
  },
63
65
 
64
66
  mounted() {
@@ -66,24 +68,10 @@ export default defineComponent({
66
68
  },
67
69
 
68
70
  methods: {
69
- emitColor(x, y) {
70
- const {
71
- left,
72
- top,
73
- width,
74
- height
75
- } = this.boundingRect;
76
- this.$emit('update:color', fromHSVA({
77
- h: this.color.hue,
78
- s: clamp(x - left, 0, width) / width,
79
- v: 1 - clamp(y - top, 0, height) / height,
80
- a: this.color.alpha
81
- }));
82
- },
83
-
84
71
  updateCanvas() {
85
72
  if (!this.color) return;
86
73
  const canvas = this.$refs.canvas;
74
+ if (!canvas) return;
87
75
  const ctx = canvas.getContext('2d');
88
76
  if (!ctx) return;
89
77
  const saturationGradient = ctx.createLinearGradient(0, 0, canvas.width, 0);
@@ -101,19 +89,25 @@ export default defineComponent({
101
89
  ctx.fillRect(0, 0, canvas.width, canvas.height);
102
90
  },
103
91
 
104
- handleClick(e) {
105
- if (this.disabled) return;
106
- this.boundingRect = this.$el.getBoundingClientRect();
107
- this.emitColor(e.clientX, e.clientY);
92
+ emitColor(x, y) {
93
+ const {
94
+ left,
95
+ top,
96
+ width,
97
+ height
98
+ } = this.boundingRect;
99
+ this.$emit('update:color', fromHSVA({
100
+ h: this.color.hue,
101
+ s: clamp(x - left, 0, width) / width,
102
+ v: 1 - clamp(y - top, 0, height) / height,
103
+ a: this.color.alpha
104
+ }));
108
105
  },
109
106
 
110
- handleMouseDown(e) {
111
- // To prevent selection while moving cursor
112
- e.preventDefault();
107
+ handleClick(e) {
113
108
  if (this.disabled) return;
114
109
  this.boundingRect = this.$el.getBoundingClientRect();
115
- window.addEventListener('mousemove', this.handleMouseMove);
116
- window.addEventListener('mouseup', this.handleMouseUp);
110
+ this.emitColor(e.clientX, e.clientY);
117
111
  },
118
112
 
119
113
  handleMouseMove(e) {
@@ -126,25 +120,31 @@ export default defineComponent({
126
120
  window.removeEventListener('mouseup', this.handleMouseUp);
127
121
  },
128
122
 
123
+ handleMouseDown(e) {
124
+ // To prevent selection while moving cursor
125
+ e.preventDefault();
126
+ if (this.disabled) return;
127
+ this.boundingRect = this.$el.getBoundingClientRect();
128
+ window.addEventListener('mousemove', this.handleMouseMove);
129
+ window.addEventListener('mouseup', this.handleMouseUp);
130
+ },
131
+
129
132
  genCanvas() {
130
133
  return h('canvas', {
131
134
  ref: 'canvas',
132
- attrs: {
133
- width: this.width,
134
- height: this.height
135
- }
135
+ width: this.width,
136
+ height: this.height
136
137
  });
137
138
  },
138
139
 
139
140
  genDot() {
140
- const radius = parseInt(this.dotSize, 10) / 2;
141
+ const radius = parseInt(String(this.dotSize), 10) / 2;
141
142
  const x = convertToUnit(this.dot.x - radius);
142
143
  const y = convertToUnit(this.dot.y - radius);
143
144
  return h('div', {
144
- class: 'v-color-picker__canvas-dot',
145
- class: {
145
+ class: ['v-color-picker__canvas-dot', {
146
146
  'v-color-picker__canvas-dot--disabled': this.disabled
147
- },
147
+ }],
148
148
  style: {
149
149
  width: convertToUnit(this.dotSize),
150
150
  height: convertToUnit(this.dotSize),
@@ -162,10 +162,8 @@ export default defineComponent({
162
162
  width: convertToUnit(this.width),
163
163
  height: convertToUnit(this.height)
164
164
  },
165
- on: {
166
- click: this.handleClick,
167
- mousedown: this.handleMouseDown
168
- }
165
+ onClick: this.handleClick,
166
+ onMousedown: this.handleMouseDown
169
167
  }, [this.genCanvas(), this.genDot()]);
170
168
  }
171
169
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/VColorPicker/VColorPickerCanvas.ts"],"names":[],"mappings":"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","sourcesContent":["import {h} from 'vue'\n// Styles\nimport './VColorPickerCanvas.sass'\n\n// Helpers\nimport { clamp, convertToUnit } from '../../util/helpers'\nimport { fromHSVA, VColorPickerColor, fromRGBA } from './util'\n\n// Types\nimport { defineComponent, VNode, PropType } from 'vue'\n\nexport default defineComponent({\n name: 'v-color-picker-canvas',\n\n props: {\n color: {\n type: Object as PropType<VColorPickerColor>,\n default: () => fromRGBA({ r: 255, g: 0, b: 0, a: 1 }),\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10,\n },\n height: {\n type: [Number, String],\n default: 150,\n },\n width: {\n type: [Number, String],\n default: 300,\n },\n },\n\n data () {\n return {\n boundingRect: {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n } as ClientRect,\n }\n },\n\n computed: {\n dot (): { x: number, y: number} {\n if (!this.color) return { x: 0, y: 0 }\n\n return {\n x: this.color.hsva.s * parseInt(this.width, 10),\n y: (1 - this.color.hsva.v) * parseInt(this.height, 10),\n }\n },\n },\n\n watch: {\n 'color.hue': 'updateCanvas',\n },\n\n mounted () {\n this.updateCanvas()\n },\n\n methods: {\n emitColor (x: number, y: number) {\n const { left, top, width, height } = this.boundingRect\n\n this.$emit('update:color', fromHSVA({\n h: this.color.hue,\n s: clamp(x - left, 0, width) / width,\n v: 1 - clamp(y - top, 0, height) / height,\n a: this.color.alpha,\n }))\n },\n updateCanvas () {\n if (!this.color) return\n\n const canvas = this.$refs.canvas as HTMLCanvasElement\n const ctx = canvas.getContext('2d')\n\n if (!ctx) return\n\n const saturationGradient = ctx.createLinearGradient(0, 0, canvas.width, 0)\n saturationGradient.addColorStop(0, 'hsla(0, 0%, 100%, 1)') // white\n saturationGradient.addColorStop(1, `hsla(${this.color.hue}, 100%, 50%, 1)`)\n ctx.fillStyle = saturationGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n\n const valueGradient = ctx.createLinearGradient(0, 0, 0, canvas.height)\n valueGradient.addColorStop(0, 'hsla(0, 0%, 100%, 0)') // transparent\n valueGradient.addColorStop(1, 'hsla(0, 0%, 0%, 1)') // black\n ctx.fillStyle = valueGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n },\n handleClick (e: MouseEvent) {\n if (this.disabled) return\n\n this.boundingRect = this.$el.getBoundingClientRect()\n this.emitColor(e.clientX, e.clientY)\n },\n handleMouseDown (e: MouseEvent) {\n // To prevent selection while moving cursor\n e.preventDefault()\n\n if (this.disabled) return\n\n this.boundingRect = this.$el.getBoundingClientRect()\n\n window.addEventListener('mousemove', this.handleMouseMove)\n window.addEventListener('mouseup', this.handleMouseUp)\n },\n handleMouseMove (e: MouseEvent) {\n if (this.disabled) return\n\n this.emitColor(e.clientX, e.clientY)\n },\n handleMouseUp () {\n window.removeEventListener('mousemove', this.handleMouseMove)\n window.removeEventListener('mouseup', this.handleMouseUp)\n },\n genCanvas (): VNode {\n return h('canvas', {\n ref: 'canvas',\n attrs: {\n width: this.width,\n height: this.height,\n },\n })\n },\n genDot (): VNode {\n const radius = parseInt(this.dotSize, 10) / 2\n const x = convertToUnit(this.dot.x - radius)\n const y = convertToUnit(this.dot.y - radius)\n\n return h('div', {\n class: 'v-color-picker__canvas-dot',\n class: {\n 'v-color-picker__canvas-dot--disabled': this.disabled,\n },\n style: {\n width: convertToUnit(this.dotSize),\n height: convertToUnit(this.dotSize),\n transform: `translate(${x}, ${y})`,\n },\n })\n },\n },\n\n render (): VNode {\n return h('div', {\n class: 'v-color-picker__canvas',\n style: {\n width: convertToUnit(this.width),\n height: convertToUnit(this.height),\n },\n on: {\n click: this.handleClick,\n mousedown: this.handleMouseDown,\n },\n }, [\n this.genCanvas(),\n this.genDot(),\n ])\n },\n})\n"],"sourceRoot":"","file":"VColorPickerCanvas.js"}
1
+ {"version":3,"sources":["../../../src/components/VColorPicker/VColorPickerCanvas.ts"],"names":[],"mappings":"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","sourcesContent":["import { h, defineComponent } from 'vue'\n\n// Styles\nimport './VColorPickerCanvas.sass'\n\n// Helpers\nimport { clamp, convertToUnit } from '../../util/helpers'\nimport { fromHSVA, VColorPickerColor, fromRGBA } from './util'\n\n// Types\nimport type { VNode, PropType } from 'vue'\n\nexport default defineComponent({\n name: 'v-color-picker-canvas',\n\n props: {\n color: {\n type: Object as PropType<VColorPickerColor>,\n default: () => fromRGBA({ r: 255, g: 0, b: 0, a: 1 }),\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10,\n },\n height: {\n type: [Number, String],\n default: 150,\n },\n width: {\n type: [Number, String],\n default: 300,\n },\n },\n\n emits: ['update:color'],\n\n data () {\n return {\n boundingRect: {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n } as ClientRect,\n }\n },\n\n computed: {\n dot () {\n if (!this.color) return { x: 0, y: 0 }\n\n return {\n x: this.color.hsva.s * parseInt(String(this.width), 10),\n y: (1 - this.color.hsva.v) * parseInt(String(this.height), 10),\n }\n },\n },\n\n watch: {\n 'color.hue' () {\n this.updateCanvas()\n },\n },\n\n mounted () {\n this.updateCanvas()\n },\n\n methods: {\n updateCanvas () {\n if (!this.color) return\n\n const canvas = this.$refs.canvas as HTMLCanvasElement\n if (!canvas) return\n\n const ctx = canvas.getContext('2d')\n if (!ctx) return\n\n const saturationGradient = ctx.createLinearGradient(0, 0, canvas.width, 0)\n saturationGradient.addColorStop(0, 'hsla(0, 0%, 100%, 1)') // white\n saturationGradient.addColorStop(1, `hsla(${this.color.hue}, 100%, 50%, 1)`)\n ctx.fillStyle = saturationGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n\n const valueGradient = ctx.createLinearGradient(0, 0, 0, canvas.height)\n valueGradient.addColorStop(0, 'hsla(0, 0%, 100%, 0)') // transparent\n valueGradient.addColorStop(1, 'hsla(0, 0%, 0%, 1)') // black\n ctx.fillStyle = valueGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n },\n\n emitColor (x: number, y: number) {\n const { left, top, width, height } = this.boundingRect\n\n this.$emit('update:color', fromHSVA({\n h: this.color!.hue,\n s: clamp(x - left, 0, width) / width,\n v: 1 - clamp(y - top, 0, height) / height,\n a: this.color!.alpha,\n }))\n },\n\n handleClick (e: MouseEvent) {\n if (this.disabled) return\n\n this.boundingRect = this.$el.getBoundingClientRect()\n this.emitColor(e.clientX, e.clientY)\n },\n\n handleMouseMove (e: MouseEvent) {\n if (this.disabled) return\n this.emitColor(e.clientX, e.clientY)\n },\n\n handleMouseUp () {\n window.removeEventListener('mousemove', this.handleMouseMove)\n window.removeEventListener('mouseup', this.handleMouseUp)\n },\n\n handleMouseDown (e: MouseEvent) {\n // To prevent selection while moving cursor\n e.preventDefault()\n\n if (this.disabled) return\n\n this.boundingRect = this.$el.getBoundingClientRect()\n\n window.addEventListener('mousemove', this.handleMouseMove)\n window.addEventListener('mouseup', this.handleMouseUp)\n },\n\n genCanvas (): VNode {\n return h('canvas', {\n ref: 'canvas',\n width: this.width,\n height: this.height,\n })\n },\n\n genDot (): VNode {\n const radius = parseInt(String(this.dotSize), 10) / 2\n const x = convertToUnit(this.dot.x - radius)\n const y = convertToUnit(this.dot.y - radius)\n\n return h('div', {\n class: ['v-color-picker__canvas-dot', {\n 'v-color-picker__canvas-dot--disabled': this.disabled,\n }],\n style: {\n width: convertToUnit(this.dotSize),\n height: convertToUnit(this.dotSize),\n transform: `translate(${x}, ${y})`,\n },\n })\n },\n },\n\n render (): VNode {\n return h('div', {\n class: 'v-color-picker__canvas',\n style: {\n width: convertToUnit(this.width),\n height: convertToUnit(this.height),\n },\n onClick: this.handleClick,\n onMousedown: this.handleMouseDown,\n }, [\n this.genCanvas(),\n this.genDot(),\n ])\n },\n})\n"],"sourceRoot":"","file":"VColorPickerCanvas.js"}
@@ -1,13 +1,11 @@
1
- import { h } from 'vue'; // Styles
1
+ import { h, defineComponent } from 'vue'; // Styles
2
2
 
3
3
  import "../../../src/components/VColorPicker/VColorPickerEdit.sass"; // Components
4
4
 
5
5
  import VBtn from '../VBtn';
6
6
  import VIcon from '../VIcon'; // Helpers
7
7
 
8
- import { parseHex } from '../../util/colorUtils'; // Types
9
-
10
- import { defineComponent } from 'vue';
8
+ import { parseHex } from '../../util/colorUtils';
11
9
  import { fromRGBA, fromHexa, fromHSLA } from './util';
12
10
  export const modes = {
13
11
  rgba: {
@@ -25,7 +23,10 @@ export const modes = {
25
23
  export default defineComponent({
26
24
  name: 'v-color-picker-edit',
27
25
  props: {
28
- color: Object,
26
+ color: {
27
+ type: Object,
28
+ required: true
29
+ },
29
30
  disabled: Boolean,
30
31
  hideAlpha: Boolean,
31
32
  hideModeSwitch: Boolean,
@@ -35,17 +36,17 @@ export default defineComponent({
35
36
  validator: v => Object.keys(modes).includes(v)
36
37
  }
37
38
  },
39
+ emits: ['update:color', 'update:mode'],
38
40
 
39
41
  data() {
40
42
  return {
41
- modes,
42
43
  internalMode: this.mode
43
44
  };
44
45
  },
45
46
 
46
47
  computed: {
47
48
  currentMode() {
48
- return this.modes[this.internalMode];
49
+ return modes[this.internalMode];
49
50
  }
50
51
 
51
52
  },
@@ -55,11 +56,6 @@ export default defineComponent({
55
56
  }
56
57
 
57
58
  },
58
-
59
- created() {
60
- this.internalMode = this.mode;
61
- },
62
-
63
59
  methods: {
64
60
  getValue(v, type) {
65
61
  if (type === 'float') return Math.round(v * 100) / 100;else if (type === 'int') return Math.round(v);else return 0;
@@ -70,21 +66,21 @@ export default defineComponent({
70
66
  },
71
67
 
72
68
  changeMode() {
73
- const modes = Object.keys(this.modes);
74
- const index = modes.indexOf(this.internalMode);
75
- const newMode = modes[(index + 1) % modes.length];
69
+ const modeKeys = Object.keys(modes);
70
+ const index = modeKeys.indexOf(this.internalMode);
71
+ const newMode = modeKeys[(index + 1) % modeKeys.length];
76
72
  this.internalMode = newMode;
77
73
  this.$emit('update:mode', newMode);
78
74
  },
79
75
 
80
- genInput(target, attrs, value, on) {
76
+ genInput(target, attrs, value, onChange) {
81
77
  return h('div', {
82
78
  class: 'v-color-picker__input'
83
79
  }, [h('input', {
84
80
  key: target,
85
81
  ...attrs,
86
82
  value,
87
- ...on
83
+ onChange
88
84
  }), h('span', target.toUpperCase())]);
89
85
  },
90
86
 
@@ -95,11 +91,9 @@ export default defineComponent({
95
91
  return this.genInput('hex', {
96
92
  maxlength: this.hideAlpha ? 7 : 9,
97
93
  disabled: this.disabled
98
- }, value, {
99
- change: e => {
100
- const el = e.target;
101
- this.$emit('update:color', this.currentMode.from(parseHex(el.value)));
102
- }
94
+ }, value, e => {
95
+ const el = e.target;
96
+ this.$emit('update:color', this.currentMode.from(parseHex(el.value)));
103
97
  });
104
98
  } else {
105
99
  const inputs = this.hideAlpha ? this.currentMode.inputs.slice(0, -1) : this.currentMode.inputs;
@@ -111,14 +105,12 @@ export default defineComponent({
111
105
  max,
112
106
  step: type === 'float' ? '0.01' : type === 'int' ? '1' : undefined,
113
107
  disabled: this.disabled
114
- }, this.getValue(value[target], type), {
115
- input: e => {
116
- const el = e.target;
117
- const newVal = this.parseValue(el.value || '0', type);
118
- this.$emit('update:color', this.currentMode.from(Object.assign({}, value, {
119
- [target]: newVal
120
- }), this.color.alpha));
121
- }
108
+ }, this.getValue(value[target], type), e => {
109
+ const el = e.target;
110
+ const newVal = this.parseValue(el.value || '0', type);
111
+ this.$emit('update:color', this.currentMode.from(Object.assign({}, value, {
112
+ [target]: newVal
113
+ }), this.color.alpha));
122
114
  });
123
115
  });
124
116
  }
@@ -130,7 +122,9 @@ export default defineComponent({
130
122
  icon: true,
131
123
  disabled: this.disabled,
132
124
  onClick: this.changeMode
133
- }, [h(VIcon, '$unfold')]);
125
+ }, {
126
+ default: () => [h(VIcon, {}, '$unfold')]
127
+ });
134
128
  }
135
129
 
136
130
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/VColorPicker/VColorPickerEdit.ts"],"names":[],"mappings":"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","sourcesContent":["import {h} from 'vue'\n// Styles\nimport './VColorPickerEdit.sass'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\n\n// Helpers\nimport { parseHex } from '../../util/colorUtils'\n\n// Types\nimport { defineComponent, VNode, PropType } from 'vue'\nimport { VColorPickerColor, fromRGBA, fromHexa, fromHSLA } from './util'\n\ntype Input = [string, number, string]\n\nexport type Mode = {\n inputs?: Input[]\n from: Function\n}\n\nexport const modes = {\n rgba: {\n inputs: [\n ['r', 255, 'int'],\n ['g', 255, 'int'],\n ['b', 255, 'int'],\n ['a', 1, 'float'],\n ],\n from: fromRGBA,\n },\n hsla: {\n inputs: [\n ['h', 360, 'int'],\n ['s', 1, 'float'],\n ['l', 1, 'float'],\n ['a', 1, 'float'],\n ],\n from: fromHSLA,\n },\n hexa: {\n from: fromHexa,\n },\n} as { [key: string]: Mode }\n\nexport default defineComponent({\n name: 'v-color-picker-edit',\n\n props: {\n color: Object as PropType<VColorPickerColor>,\n disabled: Boolean,\n hideAlpha: Boolean,\n hideModeSwitch: Boolean,\n mode: {\n type: String,\n default: 'rgba',\n validator: (v: string) => Object.keys(modes).includes(v),\n },\n },\n\n data () {\n return {\n modes,\n internalMode: this.mode,\n }\n },\n\n computed: {\n currentMode (): Mode {\n return this.modes[this.internalMode]\n },\n },\n\n watch: {\n mode (mode) {\n this.internalMode = mode\n },\n },\n\n created () {\n this.internalMode = this.mode\n },\n\n methods: {\n getValue (v: any, type: string) {\n if (type === 'float') return Math.round(v * 100) / 100\n else if (type === 'int') return Math.round(v)\n else return 0\n },\n parseValue (v: string, type: string) {\n if (type === 'float') return parseFloat(v)\n else if (type === 'int') return parseInt(v, 10) || 0\n else return 0\n },\n changeMode () {\n const modes = Object.keys(this.modes)\n const index = modes.indexOf(this.internalMode)\n const newMode = modes[(index + 1) % modes.length]\n this.internalMode = newMode\n this.$emit('update:mode', newMode)\n },\n genInput (target: string, attrs: any, value: any, on: any): VNode {\n return h('div', {\n class: 'v-color-picker__input',\n }, [\n h('input', {\n key: target,\n ...attrs,\n value,\n ...on,\n }),\n h('span', target.toUpperCase()),\n ])\n },\n genInputs (): VNode[] | VNode {\n if (this.internalMode === 'hexa') {\n const hex = this.color.hexa\n const value = this.hideAlpha && hex.endsWith('FF') ? hex.substr(0, 7) : hex\n return this.genInput(\n 'hex',\n {\n maxlength: this.hideAlpha ? 7 : 9,\n disabled: this.disabled,\n },\n value,\n {\n change: (e: Event) => {\n const el = e.target as HTMLInputElement\n this.$emit('update:color', this.currentMode.from(parseHex(el.value)))\n },\n }\n )\n } else {\n const inputs = this.hideAlpha ? this.currentMode.inputs!.slice(0, -1) : this.currentMode.inputs!\n return inputs.map(([target, max, type]) => {\n const value = this.color[this.internalMode as keyof VColorPickerColor] as any\n return this.genInput(\n target,\n {\n type: 'number',\n min: 0,\n max,\n step: type === 'float' ? '0.01' : type === 'int' ? '1' : undefined,\n disabled: this.disabled,\n },\n this.getValue(value[target], type),\n {\n input: (e: Event) => {\n const el = e.target as HTMLInputElement\n const newVal = this.parseValue(el.value || '0', type)\n\n this.$emit('update:color', this.currentMode.from(\n Object.assign({}, value, { [target]: newVal }),\n this.color.alpha\n ))\n },\n }\n )\n })\n }\n },\n genSwitch (): VNode {\n return h(VBtn, {\n small: true,\n icon: true,\n disabled: this.disabled,\n onClick: this.changeMode,\n }, [\n h(VIcon, '$unfold'),\n ])\n },\n },\n\n render (): VNode {\n return h('div', {\n class: 'v-color-picker__edit',\n }, [\n this.genInputs(),\n !this.hideModeSwitch && this.genSwitch(),\n ])\n },\n})\n"],"sourceRoot":"","file":"VColorPickerEdit.js"}
1
+ {"version":3,"sources":["../../../src/components/VColorPicker/VColorPickerEdit.ts"],"names":[],"mappings":"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","sourcesContent":["import { h, defineComponent } from 'vue'\n\n// Styles\nimport './VColorPickerEdit.sass'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\n\n// Helpers\nimport { parseHex } from '../../util/colorUtils'\n\n// Types\nimport type { VNode, PropType } from 'vue'\nimport { VColorPickerColor, fromRGBA, fromHexa, fromHSLA } from './util'\n\ntype Input = [string, number, string]\n\nexport type Mode = {\n inputs?: Input[]\n from: Function\n}\n\nexport const modes = {\n rgba: {\n inputs: [\n ['r', 255, 'int'],\n ['g', 255, 'int'],\n ['b', 255, 'int'],\n ['a', 1, 'float'],\n ],\n from: fromRGBA,\n },\n hsla: {\n inputs: [\n ['h', 360, 'int'],\n ['s', 1, 'float'],\n ['l', 1, 'float'],\n ['a', 1, 'float'],\n ],\n from: fromHSLA,\n },\n hexa: {\n from: fromHexa,\n },\n} as { [key: string]: Mode }\n\nexport default defineComponent({\n name: 'v-color-picker-edit',\n\n props: {\n color: {\n type: Object as PropType<VColorPickerColor>,\n required: true,\n },\n disabled: Boolean,\n hideAlpha: Boolean,\n hideModeSwitch: Boolean,\n mode: {\n type: String,\n default: 'rgba',\n validator: (v: string) => Object.keys(modes).includes(v),\n },\n },\n\n emits: ['update:color', 'update:mode'],\n\n data () {\n return {\n internalMode: this.mode,\n }\n },\n\n computed: {\n currentMode (): Mode {\n return modes[this.internalMode]\n },\n },\n\n watch: {\n mode (mode: string) {\n this.internalMode = mode\n },\n },\n\n methods: {\n getValue (v: any, type: string) {\n if (type === 'float') return Math.round(v * 100) / 100\n else if (type === 'int') return Math.round(v)\n else return 0\n },\n\n parseValue (v: string, type: string) {\n if (type === 'float') return parseFloat(v)\n else if (type === 'int') return parseInt(v, 10) || 0\n else return 0\n },\n\n changeMode () {\n const modeKeys = Object.keys(modes)\n const index = modeKeys.indexOf(this.internalMode)\n const newMode = modeKeys[(index + 1) % modeKeys.length]\n this.internalMode = newMode\n this.$emit('update:mode', newMode)\n },\n\n genInput (target: string, attrs: any, value: any, onChange: any): VNode {\n return h('div', {\n class: 'v-color-picker__input',\n }, [\n h('input', {\n key: target,\n ...attrs,\n value,\n onChange,\n }),\n h('span', target.toUpperCase()),\n ])\n },\n\n genInputs (): VNode[] | VNode {\n if (this.internalMode === 'hexa') {\n const hex = this.color!.hexa\n const value = this.hideAlpha && hex.endsWith('FF') ? hex.substr(0, 7) : hex\n return this.genInput(\n 'hex',\n {\n maxlength: this.hideAlpha ? 7 : 9,\n disabled: this.disabled,\n },\n value,\n (e: Event) => {\n const el = e.target as HTMLInputElement\n this.$emit('update:color', this.currentMode.from(parseHex(el.value)))\n }\n )\n } else {\n const inputs = this.hideAlpha ? this.currentMode.inputs!.slice(0, -1) : this.currentMode.inputs!\n return inputs.map(([target, max, type]) => {\n const value = this.color![this.internalMode as keyof VColorPickerColor] as any\n return this.genInput(\n target,\n {\n type: 'number',\n min: 0,\n max,\n step: type === 'float' ? '0.01' : type === 'int' ? '1' : undefined,\n disabled: this.disabled,\n },\n this.getValue(value[target], type),\n (e: Event) => {\n const el = e.target as HTMLInputElement\n const newVal = this.parseValue(el.value || '0', type)\n\n this.$emit('update:color', this.currentMode.from(\n Object.assign({}, value, { [target]: newVal }),\n this.color!.alpha\n ))\n }\n )\n })\n }\n },\n\n genSwitch (): VNode {\n return h(VBtn, {\n small: true,\n icon: true,\n disabled: this.disabled,\n onClick: this.changeMode,\n }, {\n default: () => [h(VIcon, {}, '$unfold')]\n })\n },\n },\n\n render (): VNode {\n return h('div', {\n class: 'v-color-picker__edit',\n }, [\n this.genInputs(),\n !this.hideModeSwitch && this.genSwitch(),\n ])\n },\n})\n"],"sourceRoot":"","file":"VColorPickerEdit.js"}