@teammodlr/ui-kit 2.3.7 → 2.3.10

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teammodlr/ui-kit",
3
- "version": "2.3.7",
3
+ "version": "2.3.10",
4
4
  "description": "",
5
5
  "main": "lib/index.cjs.js",
6
6
  "module": "lib/index.es.js",
@@ -72,15 +72,8 @@
72
72
  v-model="aInput" name="a" placeholder="A" />
73
73
  </template>
74
74
  <template v-else>
75
- <MInput
76
- @keyup.enter="commitHexInput"
77
- @blur="commitHexInput"
78
- v-model="hexInputUser"
79
- block
80
- ref="hexInputElement"
81
- name="hex"
82
- placeholder="#00000000"
83
- />
75
+ <MInput @keyup.enter="commitHexInput" @blur="commitHexInput" v-model="hexInputUser" block
76
+ ref="hexInputElement" name="hex" placeholder="#00000000" />
84
77
  </template>
85
78
 
86
79
  <MButton icon @click.prevent="rgbOrHex = !rgbOrHex">
@@ -253,13 +246,14 @@ export default defineComponent({
253
246
  }
254
247
 
255
248
  let hex = hexInput.value.replace("#", "");
249
+ debugger;
256
250
  if (hex.length === 3) {
257
251
  hex = hex.split("").map(char => char + char).join("");
258
252
  }
259
253
  const color = hexToRGB(`#${hex}`);
260
254
  if (color.a === 0) {
261
- color.a = 1;
262
- opacitySlider.value = 100;
255
+ color.a = 0;
256
+ opacitySlider.value = 0;
263
257
  }
264
258
 
265
259
  updateFromHSV(RGBToHSV(color.r, color.g, color.b), color.a);
@@ -353,10 +347,26 @@ export default defineComponent({
353
347
  };
354
348
 
355
349
  onMounted(() => {
356
- hexInput.value = props.modelValue;
350
+ const match = props.modelValue.match(/rgba?\s*\(\s*(\d{1,3})\s*[,\s]\s*(\d{1,3})\s*[,\s]\s*(\d{1,3})\s*(?:[,\s]\s*([\d.]+%?))?\s*\)/i);
351
+
352
+ if (match) {
353
+ const [_, r, g, b, a] = match;
354
+ const alpha = a !== undefined
355
+ ? a.endsWith('%')
356
+ ? parseFloat(a) / 100
357
+ : parseFloat(a)
358
+ : 1.0;
359
+
360
+ hexInput.value = RGBAToHex(parseInt(r), parseInt(g), parseInt(b), alpha);
361
+
362
+ } else {
363
+ hexInput.value = props.modelValue;
364
+ }
365
+
357
366
  updateFromHex();
358
367
  });
359
368
 
369
+
360
370
  onClickOutside(popper, (e) => {
361
371
  isOpen.value = false;
362
372
  });
@@ -4,7 +4,7 @@
4
4
  <MColorPicker v-model.lazy="colorValue" style="display: inline-block;">
5
5
  <template #default="{ r, g, b, hex, transparent }">
6
6
  <div :class="transparent"
7
- style="width: 100px; height: 100px; border: 1px solid black; position: relative; overflow: hidden;">
7
+ style="width: 100px; height: 100px; border: 1px solid black; position: relative; overflow: hidden;">
8
8
  <div style="position: absolute; inset: 0" :style="{ backgroundColor: hex }"></div>
9
9
  </div>
10
10
  </template>
@@ -16,7 +16,7 @@
16
16
  export default {
17
17
  data() {
18
18
  return {
19
- colorValue: '#FFFFFF' // Initial color value
19
+ colorValue: 'rgba(0,0,0,50%)' // Initial color value
20
20
  };
21
21
  }
22
22
  };
@@ -1,206 +1,205 @@
1
- export interface Color {
2
- r: number;
3
- g: number;
4
- b: number;
5
- a: number;
6
- }
7
-
8
- export interface HSV {
9
- h: number;
10
- s: number;
11
- v: number;
12
- }
13
-
14
- export const RGBAToHex = (
15
- r: number,
16
- g: number,
17
- b: number,
18
- a: number
19
- ): string => {
20
- const hexR: string = r.toString(16).padStart(2, '0');
21
- const hexG: string = g.toString(16).padStart(2, '0');
22
- const hexB: string = b.toString(16).padStart(2, '0');
23
- const hexA: string = Math.round(a * 255)
24
- .toString(16)
25
- .padStart(2, '0');
26
-
27
- return `#${hexR}${hexG}${hexB}${a >= 1 ? '' : hexA}`;
28
- };
29
-
30
- export const hexToRGB = (
31
- hexColor: string,
32
- defaultR = 0,
33
- defaultG = 0,
34
- defaultB = 0,
35
- defaultA = 0
36
- ): Color => {
37
- hexColor = hexColor.replace('#', '');
38
-
39
- let r = defaultR;
40
- let g = defaultG;
41
- let b = defaultB;
42
- let a = defaultA;
43
-
44
- if (hexColor.length >= 2) {
45
- r = parseInt(hexColor.substring(0, 2), 16);
46
- }
47
-
48
- if (hexColor.length >= 4) {
49
- g = parseInt(hexColor.substring(2, 4), 16);
50
- } else {
51
- g = 0;
52
- }
53
-
54
- if (hexColor.length >= 6) {
55
- b = parseInt(hexColor.substring(4, 6), 16);
56
- } else {
57
- b = 0;
58
- }
59
-
60
- if (hexColor.length >= 8) {
61
- a = parseInt(hexColor.substring(6, 8), 16) / 255;
62
- } else {
63
- a = 1;
64
- }
65
-
66
- if (isNaN(r) || isNaN(g) || isNaN(b) || isNaN(a)) {
67
- r = 0;
68
- b = 0;
69
- g = 0;
70
- a = 1;
71
- }
72
-
73
- return {
74
- r,
75
- g,
76
- b,
77
- a
78
- };
79
- };
80
-
81
- export const RGBToHSV = (r: number, g: number, b: number): HSV => {
82
- const max = Math.max(r, g, b);
83
- const min = Math.min(r, g, b);
84
-
85
- const delta = max - min;
86
- const brightness = max;
87
- let saturation = 0;
88
- if (max !== 0) {
89
- saturation = delta / max;
90
- }
91
-
92
- let hue = 0;
93
- if (delta !== 0) {
94
- if (max === r) {
95
- hue = ((g - b) / delta) % 6;
96
- } else if (max === g) {
97
- hue = (b - r) / delta + 2;
98
- } else {
99
- hue = (r - g) / delta + 4;
100
- }
101
-
102
- hue *= 60;
103
- if (hue < 0) {
104
- hue += 360;
105
- }
106
- }
107
-
108
- return {
109
- h: hue,
110
- s: saturation,
111
- v: brightness / 255
112
- };
113
- };
114
-
115
- export const HSVToRGBA = (
116
- hue: number,
117
- brightness: number,
118
- saturation: number,
119
- alpha: number
120
- ): Color => {
121
- const hueInDegrees = hue;
122
- const chroma = brightness * saturation;
123
- const hue1 = hueInDegrees / 60;
124
- const x = chroma * (1 - Math.abs((hue1 % 2) - 1));
125
- let r1 = 0;
126
- let g1 = 0;
127
- let b1 = 0;
128
- if (hue1 >= 0 && hue1 < 1) {
129
- r1 = chroma;
130
- g1 = x;
131
- } else if (hue1 >= 1 && hue1 < 2) {
132
- r1 = x;
133
- g1 = chroma;
134
- } else if (hue1 >= 2 && hue1 < 3) {
135
- g1 = chroma;
136
- b1 = x;
137
- } else if (hue1 >= 3 && hue1 < 4) {
138
- g1 = x;
139
- b1 = chroma;
140
- } else if (hue1 >= 4 && hue1 < 5) {
141
- r1 = x;
142
- b1 = chroma;
143
- } else {
144
- r1 = chroma;
145
- b1 = x;
146
- }
147
- const m = brightness - chroma;
148
- const r = Math.round((r1 + m) * 255);
149
- const g = Math.round((g1 + m) * 255);
150
- const b = Math.round((b1 + m) * 255);
151
-
152
- return {
153
- r,
154
- g,
155
- b,
156
- a: alpha
157
- };
158
- };
159
-
160
- export const HueToRGBA = (hue: number, alpha: number): Color => {
161
- const chroma = 1 - Math.abs(2 * 0.5 - 1);
162
- const huePrime = (hue / 360) * 6;
163
- const intermediateValue = chroma * (1 - Math.abs((huePrime % 2) - 1));
164
- let red = 0;
165
- let green = 0;
166
- let blue = 0;
167
-
168
- if (huePrime >= 0 && huePrime < 1) {
169
- red = chroma;
170
- green = intermediateValue;
171
- blue = 0;
172
- } else if (huePrime >= 1 && huePrime < 2) {
173
- red = intermediateValue;
174
- green = chroma;
175
- blue = 0;
176
- } else if (huePrime >= 2 && huePrime < 3) {
177
- red = 0;
178
- green = chroma;
179
- blue = intermediateValue;
180
- } else if (huePrime >= 3 && huePrime < 4) {
181
- red = 0;
182
- green = intermediateValue;
183
- blue = chroma;
184
- } else if (huePrime >= 4 && huePrime < 5) {
185
- red = intermediateValue;
186
- green = 0;
187
- blue = chroma;
188
- } else {
189
- red = chroma;
190
- green = 0;
191
- blue = intermediateValue;
192
- }
193
-
194
- const lightnessDecimal = 0.5;
195
- const lightnessAdjustment = (1 - chroma) * (lightnessDecimal - 0.5);
196
- const finalRed = Math.round((red + lightnessAdjustment) * 255);
197
- const finalGreen = Math.round((green + lightnessAdjustment) * 255);
198
- const finalBlue = Math.round((blue + lightnessAdjustment) * 255);
199
-
200
- return {
201
- r: finalRed,
202
- g: finalGreen,
203
- b: finalBlue,
204
- a: alpha
205
- };
206
- };
1
+ export interface Color {
2
+ r: number;
3
+ g: number;
4
+ b: number;
5
+ a: number;
6
+ }
7
+
8
+ export interface HSV {
9
+ h: number;
10
+ s: number;
11
+ v: number;
12
+ }
13
+
14
+ export const RGBAToHex = (
15
+ r: number,
16
+ g: number,
17
+ b: number,
18
+ a: number
19
+ ): string => {
20
+ const hexR = r.toString(16).padStart(2, '0');
21
+ const hexG = g.toString(16).padStart(2, '0');
22
+ const hexB = b.toString(16).padStart(2, '0');
23
+ const hexA = Math.round(a * 255).toString(16).padStart(2, '0');
24
+
25
+ return a === 1 ? `#${hexR}${hexG}${hexB}` : `#${hexR}${hexG}${hexB}${hexA}`;
26
+ };
27
+
28
+
29
+ export const hexToRGB = (
30
+ hexColor: string,
31
+ defaultR = 0,
32
+ defaultG = 0,
33
+ defaultB = 0,
34
+ defaultA = 0
35
+ ): Color => {
36
+ hexColor = hexColor.replace('#', '');
37
+
38
+ let r = defaultR;
39
+ let g = defaultG;
40
+ let b = defaultB;
41
+ let a = defaultA;
42
+
43
+ if (hexColor.length >= 2) {
44
+ r = parseInt(hexColor.substring(0, 2), 16);
45
+ }
46
+
47
+ if (hexColor.length >= 4) {
48
+ g = parseInt(hexColor.substring(2, 4), 16);
49
+ } else {
50
+ g = 0;
51
+ }
52
+
53
+ if (hexColor.length >= 6) {
54
+ b = parseInt(hexColor.substring(4, 6), 16);
55
+ } else {
56
+ b = 0;
57
+ }
58
+
59
+ if (hexColor.length >= 8) {
60
+ a = parseInt(hexColor.substring(6, 8), 16) / 255;
61
+ } else {
62
+ a = 1;
63
+ }
64
+
65
+ if (isNaN(r) || isNaN(g) || isNaN(b) || isNaN(a)) {
66
+ r = 0;
67
+ b = 0;
68
+ g = 0;
69
+ a = 1;
70
+ }
71
+
72
+ return {
73
+ r,
74
+ g,
75
+ b,
76
+ a
77
+ };
78
+ };
79
+
80
+ export const RGBToHSV = (r: number, g: number, b: number): HSV => {
81
+ const max = Math.max(r, g, b);
82
+ const min = Math.min(r, g, b);
83
+
84
+ const delta = max - min;
85
+ const brightness = max;
86
+ let saturation = 0;
87
+ if (max !== 0) {
88
+ saturation = delta / max;
89
+ }
90
+
91
+ let hue = 0;
92
+ if (delta !== 0) {
93
+ if (max === r) {
94
+ hue = ((g - b) / delta) % 6;
95
+ } else if (max === g) {
96
+ hue = (b - r) / delta + 2;
97
+ } else {
98
+ hue = (r - g) / delta + 4;
99
+ }
100
+
101
+ hue *= 60;
102
+ if (hue < 0) {
103
+ hue += 360;
104
+ }
105
+ }
106
+
107
+ return {
108
+ h: hue,
109
+ s: saturation,
110
+ v: brightness / 255
111
+ };
112
+ };
113
+
114
+ export const HSVToRGBA = (
115
+ hue: number,
116
+ brightness: number,
117
+ saturation: number,
118
+ alpha: number
119
+ ): Color => {
120
+ const hueInDegrees = hue;
121
+ const chroma = brightness * saturation;
122
+ const hue1 = hueInDegrees / 60;
123
+ const x = chroma * (1 - Math.abs((hue1 % 2) - 1));
124
+ let r1 = 0;
125
+ let g1 = 0;
126
+ let b1 = 0;
127
+ if (hue1 >= 0 && hue1 < 1) {
128
+ r1 = chroma;
129
+ g1 = x;
130
+ } else if (hue1 >= 1 && hue1 < 2) {
131
+ r1 = x;
132
+ g1 = chroma;
133
+ } else if (hue1 >= 2 && hue1 < 3) {
134
+ g1 = chroma;
135
+ b1 = x;
136
+ } else if (hue1 >= 3 && hue1 < 4) {
137
+ g1 = x;
138
+ b1 = chroma;
139
+ } else if (hue1 >= 4 && hue1 < 5) {
140
+ r1 = x;
141
+ b1 = chroma;
142
+ } else {
143
+ r1 = chroma;
144
+ b1 = x;
145
+ }
146
+ const m = brightness - chroma;
147
+ const r = Math.round((r1 + m) * 255);
148
+ const g = Math.round((g1 + m) * 255);
149
+ const b = Math.round((b1 + m) * 255);
150
+
151
+ return {
152
+ r,
153
+ g,
154
+ b,
155
+ a: alpha
156
+ };
157
+ };
158
+
159
+ export const HueToRGBA = (hue: number, alpha: number): Color => {
160
+ const chroma = 1 - Math.abs(2 * 0.5 - 1);
161
+ const huePrime = (hue / 360) * 6;
162
+ const intermediateValue = chroma * (1 - Math.abs((huePrime % 2) - 1));
163
+ let red = 0;
164
+ let green = 0;
165
+ let blue = 0;
166
+
167
+ if (huePrime >= 0 && huePrime < 1) {
168
+ red = chroma;
169
+ green = intermediateValue;
170
+ blue = 0;
171
+ } else if (huePrime >= 1 && huePrime < 2) {
172
+ red = intermediateValue;
173
+ green = chroma;
174
+ blue = 0;
175
+ } else if (huePrime >= 2 && huePrime < 3) {
176
+ red = 0;
177
+ green = chroma;
178
+ blue = intermediateValue;
179
+ } else if (huePrime >= 3 && huePrime < 4) {
180
+ red = 0;
181
+ green = intermediateValue;
182
+ blue = chroma;
183
+ } else if (huePrime >= 4 && huePrime < 5) {
184
+ red = intermediateValue;
185
+ green = 0;
186
+ blue = chroma;
187
+ } else {
188
+ red = chroma;
189
+ green = 0;
190
+ blue = intermediateValue;
191
+ }
192
+
193
+ const lightnessDecimal = 0.5;
194
+ const lightnessAdjustment = (1 - chroma) * (lightnessDecimal - 0.5);
195
+ const finalRed = Math.round((red + lightnessAdjustment) * 255);
196
+ const finalGreen = Math.round((green + lightnessAdjustment) * 255);
197
+ const finalBlue = Math.round((blue + lightnessAdjustment) * 255);
198
+
199
+ return {
200
+ r: finalRed,
201
+ g: finalGreen,
202
+ b: finalBlue,
203
+ a: alpha
204
+ };
205
+ };