@thednp/color-picker 0.0.1-alpha1

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.
@@ -0,0 +1,12 @@
1
+ import querySelectorAll from 'shorter-js/src/selectors/querySelectorAll';
2
+ import ColorPicker from './color-picker';
3
+
4
+ function initCallBack() {
5
+ const { init, selector } = ColorPicker;
6
+ [...querySelectorAll(selector)].forEach(init);
7
+ }
8
+
9
+ if (document.body) initCallBack();
10
+ else document.addEventListener('DOMContentLoaded', initCallBack, { once: true });
11
+
12
+ export default ColorPicker;
@@ -0,0 +1,156 @@
1
+ /**
2
+ * A complete list of web safe colors.
3
+ * @see https://github.com/bahamas10/css-color-names/blob/master/css-color-names.json
4
+ * @type {string[]}
5
+ */
6
+ const colorNames = [
7
+ 'aliceblue',
8
+ 'antiquewhite',
9
+ 'aqua',
10
+ 'aquamarine',
11
+ 'azure',
12
+ 'beige',
13
+ 'bisque',
14
+ 'black',
15
+ 'blanchedalmond',
16
+ 'blue',
17
+ 'blueviolet',
18
+ 'brown',
19
+ 'burlywood',
20
+ 'cadetblue',
21
+ 'chartreuse',
22
+ 'chocolate',
23
+ 'coral',
24
+ 'cornflowerblue',
25
+ 'cornsilk',
26
+ 'crimson',
27
+ 'cyan',
28
+ 'darkblue',
29
+ 'darkcyan',
30
+ 'darkgoldenrod',
31
+ 'darkgray',
32
+ 'darkgreen',
33
+ 'darkgrey',
34
+ 'darkkhaki',
35
+ 'darkmagenta',
36
+ 'darkolivegreen',
37
+ 'darkorange',
38
+ 'darkorchid',
39
+ 'darkred',
40
+ 'darksalmon',
41
+ 'darkseagreen',
42
+ 'darkslateblue',
43
+ 'darkslategray',
44
+ 'darkslategrey',
45
+ 'darkturquoise',
46
+ 'darkviolet',
47
+ 'deeppink',
48
+ 'deepskyblue',
49
+ 'dimgray',
50
+ 'dimgrey',
51
+ 'dodgerblue',
52
+ 'firebrick',
53
+ 'floralwhite',
54
+ 'forestgreen',
55
+ 'fuchsia',
56
+ 'gainsboro',
57
+ 'ghostwhite',
58
+ 'goldenrod',
59
+ 'gold',
60
+ 'gray',
61
+ 'green',
62
+ 'greenyellow',
63
+ 'grey',
64
+ 'honeydew',
65
+ 'hotpink',
66
+ 'indianred',
67
+ 'indigo',
68
+ 'ivory',
69
+ 'khaki',
70
+ 'lavenderblush',
71
+ 'lavender',
72
+ 'lawngreen',
73
+ 'lemonchiffon',
74
+ 'lightblue',
75
+ 'lightcoral',
76
+ 'lightcyan',
77
+ 'lightgoldenrodyellow',
78
+ 'lightgray',
79
+ 'lightgreen',
80
+ 'lightgrey',
81
+ 'lightpink',
82
+ 'lightsalmon',
83
+ 'lightseagreen',
84
+ 'lightskyblue',
85
+ 'lightslategray',
86
+ 'lightslategrey',
87
+ 'lightsteelblue',
88
+ 'lightyellow',
89
+ 'lime',
90
+ 'limegreen',
91
+ 'linen',
92
+ 'magenta',
93
+ 'maroon',
94
+ 'mediumaquamarine',
95
+ 'mediumblue',
96
+ 'mediumorchid',
97
+ 'mediumpurple',
98
+ 'mediumseagreen',
99
+ 'mediumslateblue',
100
+ 'mediumspringgreen',
101
+ 'mediumturquoise',
102
+ 'mediumvioletred',
103
+ 'midnightblue',
104
+ 'mintcream',
105
+ 'mistyrose',
106
+ 'moccasin',
107
+ 'navajowhite',
108
+ 'navy',
109
+ 'oldlace',
110
+ 'olive',
111
+ 'olivedrab',
112
+ 'orange',
113
+ 'orangered',
114
+ 'orchid',
115
+ 'palegoldenrod',
116
+ 'palegreen',
117
+ 'paleturquoise',
118
+ 'palevioletred',
119
+ 'papayawhip',
120
+ 'peachpuff',
121
+ 'peru',
122
+ 'pink',
123
+ 'plum',
124
+ 'powderblue',
125
+ 'purple',
126
+ 'rebeccapurple',
127
+ 'red',
128
+ 'rosybrown',
129
+ 'royalblue',
130
+ 'saddlebrown',
131
+ 'salmon',
132
+ 'sandybrown',
133
+ 'seagreen',
134
+ 'seashell',
135
+ 'sienna',
136
+ 'silver',
137
+ 'skyblue',
138
+ 'slateblue',
139
+ 'slategray',
140
+ 'slategrey',
141
+ 'snow',
142
+ 'springgreen',
143
+ 'steelblue',
144
+ 'tan',
145
+ 'teal',
146
+ 'thistle',
147
+ 'tomato',
148
+ 'turquoise',
149
+ 'violet',
150
+ 'wheat',
151
+ 'white',
152
+ 'whitesmoke',
153
+ 'yellow',
154
+ 'yellowgreen',
155
+ ];
156
+ export default colorNames;
@@ -0,0 +1,49 @@
1
+ import createElement from 'shorter-js/src/misc/createElement';
2
+ import setAttribute from 'shorter-js/src/attr/setAttribute';
3
+ import ariaLabelledBy from 'shorter-js/src/strings/ariaLabelledBy';
4
+
5
+ import vHidden from './vHidden';
6
+
7
+ /**
8
+ * Returns a new color control `HTMLElement`.
9
+ * @param {number} iteration
10
+ * @param {number} id
11
+ * @param {number} width
12
+ * @param {number} height
13
+ * @param {string=} labelledby
14
+ * @returns {HTMLElement | Element}
15
+ */
16
+ export default function getColorControl(iteration, id, width, height, labelledby) {
17
+ const labelID = `appearance${iteration}_${id}`;
18
+ const knobClass = iteration === 1 ? 'color-pointer' : 'color-slider';
19
+ const control = createElement({
20
+ tagName: 'div',
21
+ className: 'color-control',
22
+ });
23
+ setAttribute(control, 'role', 'presentation');
24
+
25
+ control.append(
26
+ createElement({
27
+ id: labelID,
28
+ tagName: 'label',
29
+ className: `color-label ${vHidden}`,
30
+ ariaLive: 'polite',
31
+ }),
32
+ createElement({
33
+ tagName: 'canvas',
34
+ className: `visual-control${iteration}`,
35
+ ariaHidden: 'true',
36
+ width: `${width}`,
37
+ height: `${height}`,
38
+ }),
39
+ );
40
+
41
+ const knob = createElement({
42
+ tagName: 'div',
43
+ className: `${knobClass} knob`,
44
+ });
45
+ setAttribute(knob, ariaLabelledBy, labelledby || labelID);
46
+ setAttribute(knob, 'tabindex', '0');
47
+ control.append(knob);
48
+ return control;
49
+ }
@@ -0,0 +1,58 @@
1
+ import createElement from 'shorter-js/src/misc/createElement';
2
+ import setAttribute from 'shorter-js/src/attr/setAttribute';
3
+ import ObjectAssign from 'shorter-js/src/misc/ObjectAssign';
4
+ import toUpperCase from 'shorter-js/src/misc/toUpperCase';
5
+
6
+ import vHidden from './vHidden';
7
+
8
+ /**
9
+ * Returns the color form.
10
+ * @param {CP.ColorPicker} self the `ColorPicker` instance
11
+ * @returns {HTMLElement | Element}
12
+ */
13
+ export default function getColorForm(self) {
14
+ const { format, id } = self;
15
+ const colorForm = createElement({
16
+ tagName: 'div',
17
+ className: `color-form ${format}`,
18
+ });
19
+
20
+ let components = ['hex'];
21
+ if (format === 'rgb') components = ['red', 'green', 'blue', 'alpha'];
22
+ else if (format === 'hsl') components = ['hue', 'saturation', 'lightness', 'alpha'];
23
+
24
+ components.forEach((c) => {
25
+ const [C] = format === 'hex' ? ['#'] : toUpperCase(c).split('');
26
+ const cID = `color_${format}_${c}_${id}`;
27
+ const cInputLabel = createElement({ tagName: 'label' });
28
+ setAttribute(cInputLabel, 'for', cID);
29
+ cInputLabel.append(
30
+ createElement({ tagName: 'span', ariaHidden: 'true', innerText: `${C}:` }),
31
+ createElement({ tagName: 'span', className: vHidden, innerText: `${c}` }),
32
+ );
33
+ const cInput = createElement({
34
+ tagName: 'input',
35
+ id: cID, // name: cID,
36
+ type: format === 'hex' ? 'text' : 'number',
37
+ value: c === 'alpha' ? '1' : '0',
38
+ className: `color-input ${c}`,
39
+ autocomplete: 'off',
40
+ spellcheck: 'false',
41
+ });
42
+ if (format !== 'hex') {
43
+ // alpha
44
+ let max = '1';
45
+ let step = '0.01';
46
+ if (c !== 'alpha') {
47
+ if (format === 'rgb') { max = '255'; step = '1'; } else if (c === 'hue') { max = '360'; step = '1'; } else { max = '100'; step = '1'; }
48
+ }
49
+ ObjectAssign(cInput, {
50
+ min: '0',
51
+ max,
52
+ step,
53
+ });
54
+ }
55
+ colorForm.append(cInputLabel, cInput);
56
+ });
57
+ return colorForm;
58
+ }
@@ -0,0 +1,14 @@
1
+ import querySelectorAll from 'shorter-js/src/selectors/querySelectorAll';
2
+ import getDocument from 'shorter-js/src/get/getDocument';
3
+ import getDocumentBody from 'shorter-js/src/get/getDocumentBody';
4
+
5
+ import { addListener } from 'event-listener.js';
6
+ import ColorPicker from '../color-picker';
7
+
8
+ function initCallBack() {
9
+ const { init, selector } = ColorPicker;
10
+ [...querySelectorAll(selector)].forEach(init);
11
+ }
12
+
13
+ if (getDocumentBody()) initCallBack();
14
+ else addListener(getDocument(), 'DOMContentLoaded', initCallBack, { once: true });
@@ -0,0 +1,9 @@
1
+ const templates = {
2
+ control: {
3
+ tagName: 'div',
4
+ className: 'color-control',
5
+ },
6
+
7
+ };
8
+
9
+ export default templates;
@@ -0,0 +1,2 @@
1
+ const vHidden = 'v-hidden';
2
+ export default vHidden;
@@ -0,0 +1,6 @@
1
+ // @ts-ignore
2
+ import { version } from '../../package.json';
3
+
4
+ const Version = version;
5
+
6
+ export default Version;