@thednp/color-picker 2.0.0-alpha1 → 2.0.0-alpha10
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/.eslintrc.cjs +1 -1
- package/.lgtm.yml +0 -0
- package/.prettierrc.json +0 -0
- package/.stylelintrc.json +0 -0
- package/LICENSE +0 -0
- package/README.md +8 -7
- package/compile.js +6 -3
- package/cypress/e2e/color-palette.cy.ts +0 -0
- package/cypress/e2e/color-picker.cy.ts +58 -69
- package/cypress/fixtures/colorNamesFrench.js +0 -0
- package/cypress/fixtures/componentLabelsFrench.js +0 -0
- package/cypress/fixtures/format.js +0 -0
- package/cypress/fixtures/getMarkup.js +8 -1
- package/cypress/fixtures/getRandomInt.js +0 -0
- package/cypress/fixtures/sampleWebcolors.js +0 -0
- package/cypress/fixtures/testSample.js +0 -0
- package/cypress/plugins/esbuild-istanbul.ts +0 -0
- package/cypress/plugins/tsCompile.ts +0 -0
- package/cypress/support/commands.ts +0 -0
- package/cypress/support/e2e.ts +0 -0
- package/cypress/test.html +0 -0
- package/cypress.config.ts +0 -0
- package/dist/css/color-picker.css +13 -18
- package/dist/css/color-picker.min.css +2 -2
- package/dist/css/color-picker.rtl.css +13 -18
- package/dist/css/color-picker.rtl.min.css +2 -2
- package/dist/js/color-picker.cjs +3 -3
- package/dist/js/color-picker.cjs.map +1 -1
- package/dist/js/color-picker.d.ts +42 -24
- package/dist/js/color-picker.js +3 -3
- package/dist/js/color-picker.js.map +1 -1
- package/dist/js/color-picker.mjs +408 -421
- package/dist/js/color-picker.mjs.map +1 -1
- package/dts.config.ts +0 -0
- package/package.json +116 -98
- package/src/scss/_variables.scss +0 -0
- package/src/scss/color-picker.rtl.scss +0 -0
- package/src/scss/color-picker.scss +20 -14
- package/src/ts/colorPalette.ts +0 -0
- package/src/ts/index.ts +40 -54
- package/src/ts/interface/ColorNames.ts +20 -0
- package/src/ts/interface/colorPickerLabels.ts +0 -0
- package/src/ts/interface/colorPickerOptions.ts +0 -0
- package/src/ts/interface/paletteOptions.ts +0 -0
- package/src/ts/util/colorNames.ts +0 -0
- package/src/ts/util/colorPickerLabels.ts +0 -0
- package/src/ts/util/getColorControls.ts +0 -0
- package/src/ts/util/getColorForm.ts +0 -0
- package/src/ts/util/getColorMenu.ts +0 -0
- package/src/ts/util/isValidJSON.ts +0 -0
- package/src/ts/util/setMarkup.ts +6 -4
- package/src/ts/util/vHidden.ts +0 -0
- package/tsconfig.json +1 -1
- package/vite.config.ts +0 -0
- package/cypress/downloads/downloads.htm +0 -0
- package/cypress/fixtures/getCEMarkup.js +0 -29
package/dts.config.ts
CHANGED
File without changes
|
package/package.json
CHANGED
@@ -1,98 +1,116 @@
|
|
1
|
-
{
|
2
|
-
"name": "@thednp/color-picker",
|
3
|
-
"version": "2.0.0-
|
4
|
-
"author": "thednp",
|
5
|
-
"license": "MIT",
|
6
|
-
"description": "🎨 Modern Color Picker Component",
|
7
|
-
"homepage": "http://thednp.github.io/color-picker",
|
8
|
-
"source": "./src/ts/index.ts",
|
9
|
-
"main": "./dist/js/color-picker.js",
|
10
|
-
"module": "./dist/js/color-picker.mjs",
|
11
|
-
"
|
12
|
-
"
|
13
|
-
"
|
14
|
-
|
15
|
-
|
16
|
-
"
|
17
|
-
"
|
18
|
-
}
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
"
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
"
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
"
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
"
|
38
|
-
|
39
|
-
|
40
|
-
"
|
41
|
-
"
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
"
|
50
|
-
"
|
51
|
-
|
52
|
-
|
53
|
-
"
|
54
|
-
"
|
55
|
-
|
56
|
-
"
|
57
|
-
"color",
|
58
|
-
"
|
59
|
-
|
60
|
-
|
61
|
-
"
|
62
|
-
"
|
63
|
-
"
|
64
|
-
|
65
|
-
|
66
|
-
"
|
67
|
-
"
|
68
|
-
"
|
69
|
-
|
70
|
-
|
71
|
-
"
|
72
|
-
"
|
73
|
-
"
|
74
|
-
"
|
75
|
-
"
|
76
|
-
"
|
77
|
-
"
|
78
|
-
"
|
79
|
-
"
|
80
|
-
"
|
81
|
-
"
|
82
|
-
"
|
83
|
-
"
|
84
|
-
"
|
85
|
-
"
|
86
|
-
"
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
"
|
91
|
-
"
|
92
|
-
"
|
93
|
-
"
|
94
|
-
"
|
95
|
-
"
|
96
|
-
"
|
97
|
-
|
98
|
-
|
1
|
+
{
|
2
|
+
"name": "@thednp/color-picker",
|
3
|
+
"version": "2.0.0-alpha10",
|
4
|
+
"author": "thednp",
|
5
|
+
"license": "MIT",
|
6
|
+
"description": "🎨 Modern Color Picker Component",
|
7
|
+
"homepage": "http://thednp.github.io/color-picker",
|
8
|
+
"source": "./src/ts/index.ts",
|
9
|
+
"main": "./dist/js/color-picker.js",
|
10
|
+
"module": "./dist/js/color-picker.mjs",
|
11
|
+
"style": "./dist/css/color-picker.css",
|
12
|
+
"sass": "./src/scss/color-picker.scss",
|
13
|
+
"exports": {
|
14
|
+
".": {
|
15
|
+
"require": "./dist/js/color-picker.cjs",
|
16
|
+
"import": "./dist/js/color-picker.mjs",
|
17
|
+
"types": "./dist/js/color-picker.d.ts"
|
18
|
+
},
|
19
|
+
"./dist/css/color-picker.css": {
|
20
|
+
"import": "./dist/css/color-picker.css",
|
21
|
+
"require": "./dist/css/color-picker.css"
|
22
|
+
},
|
23
|
+
"./dist/css/color-picker.rtl.css": {
|
24
|
+
"import": "./dist/css/color-picker.rtl.css",
|
25
|
+
"require": "./dist/css/color-picker.rtl.css"
|
26
|
+
},
|
27
|
+
"./src/scss/color-picker.scss": {
|
28
|
+
"import": "./src/scss/color-picker.scss",
|
29
|
+
"require": "./src/scss/color-picker.scss"
|
30
|
+
},
|
31
|
+
"./src/scss/color-picker.rtl.scss": {
|
32
|
+
"import": "./src/scss/color-picker.rtl.scss",
|
33
|
+
"require": "./src/scss/color-picker.rtl.scss"
|
34
|
+
}
|
35
|
+
},
|
36
|
+
"bugs": {
|
37
|
+
"url": "https://github.com/thednp/color-picker/issues"
|
38
|
+
},
|
39
|
+
"publishConfig": {
|
40
|
+
"access": "public",
|
41
|
+
"registry": "https://registry.npmjs.org/"
|
42
|
+
},
|
43
|
+
"repository": {
|
44
|
+
"type": "git",
|
45
|
+
"url": "git+https://github.com/thednp/color-picker.git"
|
46
|
+
},
|
47
|
+
"keywords": [
|
48
|
+
"color",
|
49
|
+
"picker",
|
50
|
+
"color-picker",
|
51
|
+
"colorpicker",
|
52
|
+
"palette",
|
53
|
+
"color-palette",
|
54
|
+
"typescript"
|
55
|
+
],
|
56
|
+
"dependencies": {
|
57
|
+
"@thednp/color": "^1.0.8",
|
58
|
+
"@thednp/shorty": "2.0.0-alpha22"
|
59
|
+
},
|
60
|
+
"devDependencies": {
|
61
|
+
"@bahmutov/cypress-esbuild-preprocessor": "^2.2.0",
|
62
|
+
"@cypress/code-coverage": "^3.12.0",
|
63
|
+
"@types/istanbul-lib-instrument": "^1.7.4",
|
64
|
+
"@typescript-eslint/eslint-plugin": "^6.6.0",
|
65
|
+
"@typescript-eslint/parser": "^6.6.0",
|
66
|
+
"cypress": "^13.1.0",
|
67
|
+
"dts-bundle-generator": "^8.0.1",
|
68
|
+
"eslint": "^8.49.0",
|
69
|
+
"eslint-plugin-jsdoc": "^46.5.1",
|
70
|
+
"eslint-plugin-prefer-arrow": "^1.2.3",
|
71
|
+
"eslint-plugin-prettier": "^5.0.0",
|
72
|
+
"istanbul-lib-coverage": "^3.2.0",
|
73
|
+
"istanbul-lib-instrument": "^6.0.0",
|
74
|
+
"ncp": "^2.0.0",
|
75
|
+
"npm-run-all": "^4.1.5",
|
76
|
+
"nyc": "^15.1.0",
|
77
|
+
"prettier": "^3.0.3",
|
78
|
+
"rimraf": "^5.0.1",
|
79
|
+
"sass": "^1.66.1",
|
80
|
+
"stylelint": "^15.10.3",
|
81
|
+
"stylelint-config-standard": "^34.0.0",
|
82
|
+
"stylelint-config-standard-scss": "^11.0.0",
|
83
|
+
"stylelint-order": "^6.0.3",
|
84
|
+
"stylelint-scss": "^5.1.0",
|
85
|
+
"typescript": "^5.2.2",
|
86
|
+
"vite": "^4.4.9"
|
87
|
+
},
|
88
|
+
"packageManager": "pnpm@8.6.12",
|
89
|
+
"scripts": {
|
90
|
+
"pre-test": "npm run clean-coverage",
|
91
|
+
"test": "npm run pre-test && cypress run",
|
92
|
+
"cypress": "npm run pre-test && npx cypress open",
|
93
|
+
"clean-coverage": "rimraf coverage .nyc_output",
|
94
|
+
"coverage:report": "nyc report --reporter=lcov --reporter=json --reporter=text --reporter=json-summary",
|
95
|
+
"format": "prettier --write \"src/**/*.ts\"",
|
96
|
+
"lint": "npm run lint:ts && npm run check:ts && npm run lint:css",
|
97
|
+
"fix:ts": "eslint src --config .eslintrc.cjs --fix",
|
98
|
+
"lint:ts": "eslint src --config .eslintrc.cjs",
|
99
|
+
"check:ts": "tsc --noEmit",
|
100
|
+
"fix:css": "stylelint --config .stylelintrc.json --fix scss \"src/scss/*.scss\"",
|
101
|
+
"lint:css": "stylelint --config .stylelintrc.json scss \"src/scss/*.scss\"",
|
102
|
+
"build": "npm run lint && npm run build-vite && npm run dts",
|
103
|
+
"build-vite": "vite build && npm run docs",
|
104
|
+
"dev": "vite --open ./docs/dev.html --port 8577",
|
105
|
+
"dts": "dts-bundle-generator --config ./dts.config.ts",
|
106
|
+
"docs": "ncp dist/js/color-picker.js docs/js/color-picker.js && ncp dist/js/color-picker.js.map docs/js/color-picker.js.map",
|
107
|
+
"copy": "npm-run-all --parallel copy-*",
|
108
|
+
"copy-css-cp": "ncp dist/css/color-picker.css docs/css/color-picker.css",
|
109
|
+
"copy-css-rtl": "ncp dist/css/color-picker.rtl.css docs/css/color-picker.rtl.css",
|
110
|
+
"compile": "npm run lint:css && npm-run-all --parallel compile-* && npm run copy",
|
111
|
+
"compile-scss": "node compile.js",
|
112
|
+
"compile-scss-min": "node compile.js MIN:true",
|
113
|
+
"compile-scss-rtl": "node compile.js MIN:false,DIR:rtl",
|
114
|
+
"compile-scss-rtl-min": "node compile.js MIN:true,DIR:rtl"
|
115
|
+
}
|
116
|
+
}
|
package/src/scss/_variables.scss
CHANGED
File without changes
|
File without changes
|
@@ -5,6 +5,10 @@
|
|
5
5
|
position: relative;
|
6
6
|
display: flex;
|
7
7
|
|
8
|
+
*, *::before, *::after {
|
9
|
+
box-sizing: border-box;
|
10
|
+
}
|
11
|
+
|
8
12
|
@each $name in "white", "black" {
|
9
13
|
@each $lvl in $transparency-levels {
|
10
14
|
@if type-of($name) == "string" and type-of($lvl) == "number" {
|
@@ -64,7 +68,11 @@
|
|
64
68
|
}
|
65
69
|
|
66
70
|
.color-dropdown.picker { left: 0; }
|
67
|
-
|
71
|
+
|
72
|
+
.color-dropdown.menu {
|
73
|
+
right: 0;
|
74
|
+
max-height: 230px;
|
75
|
+
}
|
68
76
|
|
69
77
|
.open .color-dropdown.top {
|
70
78
|
top: auto;
|
@@ -94,7 +102,8 @@
|
|
94
102
|
/* btn-appearance */
|
95
103
|
.btn-appearance {
|
96
104
|
width: 100%;
|
97
|
-
|
105
|
+
|
106
|
+
// height: 1.5rem;
|
98
107
|
padding: .6rem 1rem;
|
99
108
|
font-size: 1rem;
|
100
109
|
line-height: 1.5;
|
@@ -147,10 +156,10 @@
|
|
147
156
|
/* picker-toggle */
|
148
157
|
.picker-toggle {
|
149
158
|
position: absolute;
|
150
|
-
|
151
|
-
left: 0;
|
159
|
+
inset: 0;
|
152
160
|
width: 100%;
|
153
161
|
height: 100%;
|
162
|
+
cursor: pointer;
|
154
163
|
background: transparent;
|
155
164
|
border: 0;
|
156
165
|
}
|
@@ -290,7 +299,8 @@
|
|
290
299
|
transition: var(--options-transition);
|
291
300
|
}
|
292
301
|
|
293
|
-
.color-options.scrollable:hover {
|
302
|
+
// .color-options.scrollable:hover {
|
303
|
+
.color-dropdown.menu:hover .scrollable {
|
294
304
|
height: var(--grid-hover-height);
|
295
305
|
}
|
296
306
|
|
@@ -312,7 +322,7 @@
|
|
312
322
|
width: var(--grid-item-size);
|
313
323
|
height: var(--grid-item-size);
|
314
324
|
overflow: hidden;
|
315
|
-
|
325
|
+
color: rgba(0,0,0,0%);
|
316
326
|
|
317
327
|
&:active, &:focus {
|
318
328
|
outline: none;
|
@@ -410,7 +420,7 @@
|
|
410
420
|
|
411
421
|
/* visual control */
|
412
422
|
.visual-control {
|
413
|
-
height:
|
423
|
+
height: 230px;
|
414
424
|
|
415
425
|
/* important for mobile devices */
|
416
426
|
touch-action: none;
|
@@ -418,7 +428,7 @@
|
|
418
428
|
}
|
419
429
|
|
420
430
|
.visual-control1 {
|
421
|
-
width:
|
431
|
+
width: 230px;
|
422
432
|
}
|
423
433
|
|
424
434
|
.visual-control2,
|
@@ -427,12 +437,7 @@
|
|
427
437
|
cursor: ns-resize;
|
428
438
|
}
|
429
439
|
|
430
|
-
@media (
|
431
|
-
.visual-control { height: 230px; }
|
432
|
-
.visual-control1 { width: 230px; }
|
433
|
-
}
|
434
|
-
|
435
|
-
@media (min-width: 1200px) {
|
440
|
+
@media (width >= 980px) {
|
436
441
|
.visual-control { height: 300px; }
|
437
442
|
.visual-control1 { width: 300px; }
|
438
443
|
}
|
@@ -457,6 +462,7 @@
|
|
457
462
|
position: absolute;
|
458
463
|
top: 0;
|
459
464
|
left: 0;
|
465
|
+
width: 100%;
|
460
466
|
height: 7px;
|
461
467
|
|
462
468
|
/* important for mobile devices */
|
package/src/ts/colorPalette.ts
CHANGED
File without changes
|
package/src/ts/index.ts
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
import { addListener, removeListener } from '@thednp/event-listener';
|
2
|
-
|
3
1
|
import {
|
4
2
|
ariaDescription,
|
5
3
|
ariaSelected,
|
@@ -37,6 +35,7 @@ import {
|
|
37
35
|
getDocumentElement,
|
38
36
|
getDocument,
|
39
37
|
ObjectAssign,
|
38
|
+
ObjectFromEntries,
|
40
39
|
Data,
|
41
40
|
getInstance,
|
42
41
|
setElementStyle,
|
@@ -52,6 +51,8 @@ import {
|
|
52
51
|
isArray,
|
53
52
|
isString,
|
54
53
|
getWindow,
|
54
|
+
on,
|
55
|
+
off,
|
55
56
|
} from '@thednp/shorty';
|
56
57
|
|
57
58
|
// ColorPicker Util
|
@@ -67,6 +68,7 @@ import setMarkup from './util/setMarkup';
|
|
67
68
|
|
68
69
|
import ColorPickerOptions from './interface/colorPickerOptions';
|
69
70
|
import ColorPickerLabels from './interface/colorPickerLabels';
|
71
|
+
import type ColorNames from './interface/ColorNames';
|
70
72
|
import { version } from '../../package.json';
|
71
73
|
|
72
74
|
// ColorPicker GC
|
@@ -95,7 +97,7 @@ const initColorPicker = (element: HTMLInputElement) => new ColorPicker(element);
|
|
95
97
|
* Add / remove `ColorPicker` main event listeners.
|
96
98
|
*/
|
97
99
|
const toggleEvents = (self: ColorPicker, action?: boolean) => {
|
98
|
-
const fn = action ?
|
100
|
+
const fn = action ? on : off;
|
99
101
|
const { input, pickerToggle, menuToggle } = self;
|
100
102
|
|
101
103
|
fn(input, focusinEvent, self.showPicker);
|
@@ -110,7 +112,7 @@ const toggleEvents = (self: ColorPicker, action?: boolean) => {
|
|
110
112
|
* Add / remove `ColorPicker` event listeners active only when open.
|
111
113
|
*/
|
112
114
|
const toggleEventsOnShown = (self: ColorPicker, action?: boolean) => {
|
113
|
-
const fn = action ?
|
115
|
+
const fn = action ? on : off;
|
114
116
|
const { input, colorMenu, parent } = self;
|
115
117
|
const doc = getDocument(input);
|
116
118
|
const win = getWindow(doc);
|
@@ -208,6 +210,8 @@ export default class ColorPicker {
|
|
208
210
|
public static setAttribute = setAttribute;
|
209
211
|
public static getBoundingClientRect = getBoundingClientRect;
|
210
212
|
public static version = version;
|
213
|
+
public static colorNames = colorNames;
|
214
|
+
public static colorPickerLabels = colorPickerLabels;
|
211
215
|
|
212
216
|
id: number;
|
213
217
|
input: HTMLInputElement;
|
@@ -222,7 +226,7 @@ export default class ColorPicker {
|
|
222
226
|
c2y: number;
|
223
227
|
c3y: number;
|
224
228
|
};
|
225
|
-
colorLabels:
|
229
|
+
colorLabels: ColorNames = ObjectFromEntries(colorNames.map(c => [c, c])) as ColorNames;
|
226
230
|
colorKeywords: string[] | false;
|
227
231
|
colorPresets: ColorPalette | string[] | false;
|
228
232
|
componentLabels: ColorPickerLabels;
|
@@ -263,7 +267,7 @@ export default class ColorPicker {
|
|
263
267
|
c2y: 0,
|
264
268
|
c3y: 0,
|
265
269
|
};
|
266
|
-
this.colorLabels = {};
|
270
|
+
// this.colorLabels = {};
|
267
271
|
this.colorKeywords = false;
|
268
272
|
this.colorPresets = false;
|
269
273
|
|
@@ -283,9 +287,7 @@ export default class ColorPicker {
|
|
283
287
|
}
|
284
288
|
|
285
289
|
// expose colour labels to all methods
|
286
|
-
|
287
|
-
this.colorLabels[c] = translatedColorLabels[i].trim();
|
288
|
-
});
|
290
|
+
ObjectAssign(this.colorLabels, ObjectFromEntries(translatedColorLabels.map((c, i) => [colorNames[i], c])));
|
289
291
|
|
290
292
|
// update and expose component labels
|
291
293
|
const tempComponentLabels =
|
@@ -318,22 +320,6 @@ export default class ColorPicker {
|
|
318
320
|
this.colorPresets = colorPresets.split(',').map((x: string) => x.trim());
|
319
321
|
}
|
320
322
|
|
321
|
-
// bind events
|
322
|
-
this.showPicker = this.showPicker.bind(this);
|
323
|
-
this.togglePicker = this.togglePicker.bind(this);
|
324
|
-
this.toggleMenu = this.toggleMenu.bind(this);
|
325
|
-
this.menuClickHandler = this.menuClickHandler.bind(this);
|
326
|
-
this.menuKeyHandler = this.menuKeyHandler.bind(this);
|
327
|
-
this.pointerDown = this.pointerDown.bind(this);
|
328
|
-
this.pointerMove = this.pointerMove.bind(this);
|
329
|
-
this.pointerUp = this.pointerUp.bind(this);
|
330
|
-
this.update = this.update.bind(this);
|
331
|
-
this.handleScroll = this.handleScroll.bind(this);
|
332
|
-
this.handleFocusOut = this.handleFocusOut.bind(this);
|
333
|
-
this.changeHandler = this.changeHandler.bind(this);
|
334
|
-
this.handleDismiss = this.handleDismiss.bind(this);
|
335
|
-
this.handleKnobs = this.handleKnobs.bind(this);
|
336
|
-
|
337
323
|
// generate markup
|
338
324
|
setMarkup(this);
|
339
325
|
|
@@ -513,11 +499,11 @@ export default class ColorPicker {
|
|
513
499
|
* @param e
|
514
500
|
* @this {ColorPicker}
|
515
501
|
*/
|
516
|
-
handleFocusOut({ relatedTarget }: FocusEvent & { relatedTarget: HTMLElement }): void {
|
502
|
+
handleFocusOut = ({ relatedTarget }: FocusEvent & { relatedTarget: HTMLElement }): void => {
|
517
503
|
if (relatedTarget && !this.parent.contains(relatedTarget)) {
|
518
504
|
this.hide(true);
|
519
505
|
}
|
520
|
-
}
|
506
|
+
};
|
521
507
|
|
522
508
|
/**
|
523
509
|
* The `ColorPicker` *keyup* event listener when open.
|
@@ -525,19 +511,18 @@ export default class ColorPicker {
|
|
525
511
|
* @param e
|
526
512
|
* @this {ColorPicker}
|
527
513
|
*/
|
528
|
-
handleDismiss({ code }: KeyboardEvent): void {
|
514
|
+
handleDismiss = ({ code }: KeyboardEvent): void => {
|
529
515
|
if (this.isOpen && code === keyEscape) {
|
530
516
|
this.hide();
|
531
517
|
}
|
532
|
-
}
|
518
|
+
};
|
533
519
|
|
534
520
|
/**
|
535
521
|
* The `ColorPicker` *scroll* event listener when open.
|
536
522
|
*
|
537
523
|
* @param e
|
538
|
-
* @this {ColorPicker}
|
539
524
|
*/
|
540
|
-
handleScroll(e: Event)
|
525
|
+
handleScroll = (e: Event) => {
|
541
526
|
const { activeElement } = getDocument(this.input);
|
542
527
|
|
543
528
|
this.updateDropdownPosition();
|
@@ -550,14 +535,14 @@ export default class ColorPicker {
|
|
550
535
|
e.stopPropagation();
|
551
536
|
e.preventDefault();
|
552
537
|
}
|
553
|
-
}
|
538
|
+
};
|
554
539
|
|
555
540
|
/**
|
556
541
|
* The `ColorPicker` keyboard event listener for menu navigation.
|
557
542
|
*
|
558
543
|
* @param e
|
559
544
|
*/
|
560
|
-
menuKeyHandler(e:
|
545
|
+
menuKeyHandler = (e: KeyboardEvent & { target: HTMLElement }) => {
|
561
546
|
const { target, code } = e;
|
562
547
|
const { previousElementSibling, nextElementSibling, parentElement } = target;
|
563
548
|
const isColorOptionsMenu = parentElement && hasClass(parentElement, 'color-options');
|
@@ -591,7 +576,7 @@ export default class ColorPicker {
|
|
591
576
|
if ([keyEnter, keySpace].includes(code)) {
|
592
577
|
this.menuClickHandler(e);
|
593
578
|
}
|
594
|
-
}
|
579
|
+
};
|
595
580
|
|
596
581
|
/**
|
597
582
|
* The `ColorPicker` click event listener for the colour menu presets / defaults.
|
@@ -599,7 +584,7 @@ export default class ColorPicker {
|
|
599
584
|
* @param e
|
600
585
|
* @this {ColorPicker}
|
601
586
|
*/
|
602
|
-
menuClickHandler(e: Event)
|
587
|
+
menuClickHandler = (e: Event) => {
|
603
588
|
const { target } = e;
|
604
589
|
const { colorMenu } = this;
|
605
590
|
const newOption = (getAttribute(target as HTMLElement, 'data-value') || '').trim();
|
@@ -637,14 +622,15 @@ export default class ColorPicker {
|
|
637
622
|
}
|
638
623
|
firePickerChange(this);
|
639
624
|
}
|
640
|
-
}
|
625
|
+
};
|
641
626
|
|
642
627
|
/**
|
643
628
|
* The `ColorPicker` *touchstart* / *mousedown* events listener for control knobs.
|
644
629
|
*
|
645
630
|
* @param e
|
646
631
|
*/
|
647
|
-
pointerDown(e:
|
632
|
+
pointerDown = (e: PointerEvent & { target: HTMLElement }) => {
|
633
|
+
if (e.button !== 0) return;
|
648
634
|
const { target, pageX, pageY } = e;
|
649
635
|
const { colorMenu, visuals, controlKnobs } = this;
|
650
636
|
const [v1, v2, v3] = visuals;
|
@@ -675,7 +661,7 @@ export default class ColorPicker {
|
|
675
661
|
}
|
676
662
|
}
|
677
663
|
e.preventDefault();
|
678
|
-
}
|
664
|
+
};
|
679
665
|
|
680
666
|
/**
|
681
667
|
* The `ColorPicker` *touchend* / *mouseup* events listener for control knobs.
|
@@ -683,7 +669,7 @@ export default class ColorPicker {
|
|
683
669
|
* @param e
|
684
670
|
* @this
|
685
671
|
*/
|
686
|
-
pointerUp({ target }: PointerEvent & { target: HTMLElement }) {
|
672
|
+
pointerUp = ({ target }: PointerEvent & { target: HTMLElement }) => {
|
687
673
|
const { parent } = this;
|
688
674
|
const doc = getDocument(parent);
|
689
675
|
const currentOpen = querySelector(`${colorPickerParentSelector}.open`, doc) !== null;
|
@@ -694,14 +680,14 @@ export default class ColorPicker {
|
|
694
680
|
}
|
695
681
|
|
696
682
|
this.dragElement = undefined;
|
697
|
-
}
|
683
|
+
};
|
698
684
|
|
699
685
|
/**
|
700
686
|
* The `ColorPicker` *touchmove* / *mousemove* events listener for control knobs.
|
701
687
|
*
|
702
688
|
* @param {PointerEvent} e
|
703
689
|
*/
|
704
|
-
pointerMove(e: PointerEvent)
|
690
|
+
pointerMove = (e: PointerEvent) => {
|
705
691
|
const { dragElement, visuals } = this;
|
706
692
|
const [v1, v2, v3] = visuals;
|
707
693
|
const { pageX, pageY } = e;
|
@@ -724,14 +710,14 @@ export default class ColorPicker {
|
|
724
710
|
if (dragElement === v3) {
|
725
711
|
this.changeAlpha(offsetY);
|
726
712
|
}
|
727
|
-
}
|
713
|
+
};
|
728
714
|
|
729
715
|
/**
|
730
716
|
* The `ColorPicker` *keydown* event listener for control knobs.
|
731
717
|
*
|
732
718
|
* @param e
|
733
719
|
*/
|
734
|
-
handleKnobs(e: Event & { code: string }) {
|
720
|
+
handleKnobs = (e: Event & { code: string }) => {
|
735
721
|
const { target, code } = e;
|
736
722
|
|
737
723
|
// only react to arrow buttons
|
@@ -777,10 +763,10 @@ export default class ColorPicker {
|
|
777
763
|
}
|
778
764
|
this.handleScroll(e);
|
779
765
|
}
|
780
|
-
}
|
766
|
+
};
|
781
767
|
|
782
768
|
/** The event listener of the colour form inputs. */
|
783
|
-
changeHandler(): void {
|
769
|
+
changeHandler = (): void => {
|
784
770
|
let colorSource;
|
785
771
|
const { inputs, format, value: currentValue, input, controlPositions, visuals } = this;
|
786
772
|
const { activeElement } = getDocument(input);
|
@@ -845,7 +831,7 @@ export default class ColorPicker {
|
|
845
831
|
this.value = currentValue;
|
846
832
|
}
|
847
833
|
}
|
848
|
-
}
|
834
|
+
};
|
849
835
|
|
850
836
|
/**
|
851
837
|
* Updates `ColorPicker` first control:
|
@@ -975,14 +961,14 @@ export default class ColorPicker {
|
|
975
961
|
* * initialization
|
976
962
|
* * window resize
|
977
963
|
*/
|
978
|
-
update() {
|
964
|
+
update = () => {
|
979
965
|
this.updateDropdownPosition();
|
980
966
|
this.updateAppearance();
|
981
967
|
this.setControlPositions();
|
982
968
|
this.updateInputs(true);
|
983
969
|
this.updateControls();
|
984
970
|
this.updateVisuals();
|
985
|
-
}
|
971
|
+
};
|
986
972
|
|
987
973
|
/** Updates the open dropdown position on *scroll* event. */
|
988
974
|
updateDropdownPosition() {
|
@@ -1155,7 +1141,7 @@ export default class ColorPicker {
|
|
1155
1141
|
*
|
1156
1142
|
* @param e
|
1157
1143
|
*/
|
1158
|
-
togglePicker(e?: Event) {
|
1144
|
+
togglePicker = (e?: Event) => {
|
1159
1145
|
if (e) e.preventDefault();
|
1160
1146
|
const { colorPicker } = this;
|
1161
1147
|
|
@@ -1164,16 +1150,16 @@ export default class ColorPicker {
|
|
1164
1150
|
} else {
|
1165
1151
|
showDropdown(this, colorPicker);
|
1166
1152
|
}
|
1167
|
-
}
|
1153
|
+
};
|
1168
1154
|
|
1169
1155
|
/** Shows the `ColorPicker` dropdown. */
|
1170
|
-
showPicker() {
|
1156
|
+
showPicker = () => {
|
1171
1157
|
const { colorPicker } = this;
|
1172
1158
|
|
1173
1159
|
if (!['top', 'bottom'].some(c => hasClass(colorPicker, c))) {
|
1174
1160
|
showDropdown(this, colorPicker);
|
1175
1161
|
}
|
1176
|
-
}
|
1162
|
+
};
|
1177
1163
|
|
1178
1164
|
/**
|
1179
1165
|
* Toggles the visibility of the `ColorPicker` presets menu.
|
@@ -1181,7 +1167,7 @@ export default class ColorPicker {
|
|
1181
1167
|
* @param e
|
1182
1168
|
* @this {ColorPicker}
|
1183
1169
|
*/
|
1184
|
-
toggleMenu(e?: Event) {
|
1170
|
+
toggleMenu = (e?: Event) => {
|
1185
1171
|
if (e) e.preventDefault();
|
1186
1172
|
const { colorMenu } = this;
|
1187
1173
|
|
@@ -1190,7 +1176,7 @@ export default class ColorPicker {
|
|
1190
1176
|
} else {
|
1191
1177
|
showDropdown(this, colorMenu);
|
1192
1178
|
}
|
1193
|
-
}
|
1179
|
+
};
|
1194
1180
|
|
1195
1181
|
/**
|
1196
1182
|
* Hides the currently open `ColorPicker` dropdown.
|