@thednp/color-picker 2.0.0-alpha7 → 2.0.0-alpha9
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +2 -2
- package/compile.js +6 -3
- package/cypress/e2e/color-picker.cy.ts +58 -69
- package/cypress/fixtures/getMarkup.js +8 -1
- package/dist/css/color-picker.css +7 -15
- package/dist/css/color-picker.min.css +2 -2
- package/dist/css/color-picker.rtl.css +7 -15
- package/dist/css/color-picker.rtl.min.css +2 -2
- package/dist/js/color-picker.cjs +2 -2
- package/dist/js/color-picker.cjs.map +1 -1
- package/dist/js/color-picker.d.ts +23 -7
- package/dist/js/color-picker.js +2 -2
- package/dist/js/color-picker.js.map +1 -1
- package/dist/js/color-picker.mjs +202 -203
- package/dist/js/color-picker.mjs.map +1 -1
- package/package.json +115 -114
- package/src/scss/color-picker.scss +6 -10
- package/src/ts/index.ts +11 -11
- package/src/ts/interface/ColorNames.ts +20 -0
- package/cypress/fixtures/getCEMarkup.js +0 -29
package/package.json
CHANGED
@@ -1,114 +1,115 @@
|
|
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
|
-
"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/color-picker.css": {
|
20
|
-
"import": "./dist/color-picker.css",
|
21
|
-
"require": "./dist/color-picker.css"
|
22
|
-
},
|
23
|
-
"./dist/color-picker.rtl.css": {
|
24
|
-
"import": "./dist/color-picker.rtl.css",
|
25
|
-
"require": "./dist/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
|
-
"scripts": {
|
37
|
-
"pre-test": "npm run clean-coverage",
|
38
|
-
"test": "npm run pre-test && cypress run",
|
39
|
-
"cypress": "npm run pre-test && npx cypress open",
|
40
|
-
"clean-coverage": "rimraf coverage .nyc_output",
|
41
|
-
"coverage:report": "nyc report --reporter=lcov --reporter=json --reporter=text --reporter=json-summary",
|
42
|
-
"format": "prettier --write \"src/**/*.ts\"",
|
43
|
-
"fix:ts": "eslint src --config .eslintrc.cjs --fix",
|
44
|
-
"lint:ts": "eslint src --config .eslintrc.cjs",
|
45
|
-
"fix:css": "stylelint --config .stylelintrc.json --fix scss \"src/scss/*.scss\"",
|
46
|
-
"lint:css": "stylelint --config .stylelintrc.json scss \"src/scss/*.scss\"",
|
47
|
-
"build": "npm run lint:ts && npm run build-vite && npm run dts",
|
48
|
-
"build-vite": "vite build && npm run docs",
|
49
|
-
"dev": "vite --open ./docs/
|
50
|
-
"dts": "dts-bundle-generator --config ./dts.config.ts",
|
51
|
-
"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",
|
52
|
-
"copy": "npm-run-all --parallel copy-*",
|
53
|
-
"copy-css-cp": "ncp dist/css/color-picker.css docs/css/color-picker.css",
|
54
|
-
"copy-css-rtl": "ncp dist/css/color-picker.rtl.css docs/css/color-picker.rtl.css",
|
55
|
-
"compile": "npm run lint:css && npm-run-all --parallel compile-* && npm run copy",
|
56
|
-
"compile-scss": "node compile.js",
|
57
|
-
"compile-scss-min": "node compile.js MIN:true",
|
58
|
-
"compile-scss-rtl": "node compile.js MIN:false,DIR:rtl",
|
59
|
-
"compile-scss-rtl-min": "node compile.js MIN:true,DIR:rtl"
|
60
|
-
},
|
61
|
-
"bugs": {
|
62
|
-
"url": "https://github.com/thednp/color-picker/issues"
|
63
|
-
},
|
64
|
-
"publishConfig": {
|
65
|
-
"access": "public",
|
66
|
-
"registry": "https://registry.npmjs.org/"
|
67
|
-
},
|
68
|
-
"repository": {
|
69
|
-
"type": "git",
|
70
|
-
"url": "git+https://github.com/thednp/color-picker.git"
|
71
|
-
},
|
72
|
-
"keywords": [
|
73
|
-
"color",
|
74
|
-
"picker",
|
75
|
-
"color-picker",
|
76
|
-
"colorpicker",
|
77
|
-
"palette",
|
78
|
-
"color-palette",
|
79
|
-
"typescript"
|
80
|
-
],
|
81
|
-
"dependencies": {
|
82
|
-
"@thednp/color": "^1.0.8",
|
83
|
-
"@thednp/event-listener": "^2.0.2",
|
84
|
-
"@thednp/shorty": "
|
85
|
-
},
|
86
|
-
"devDependencies": {
|
87
|
-
"@bahmutov/cypress-esbuild-preprocessor": "^2.2.0",
|
88
|
-
"@cypress/code-coverage": "^3.11.0",
|
89
|
-
"@types/istanbul-lib-instrument": "^1.7.4",
|
90
|
-
"@typescript-eslint/eslint-plugin": "^6.
|
91
|
-
"@typescript-eslint/parser": "^6.
|
92
|
-
"cypress": "^12.17.
|
93
|
-
"dts-bundle-generator": "^8.0.1",
|
94
|
-
"eslint": "^8.47.0",
|
95
|
-
"eslint-plugin-jsdoc": "^46.4.6",
|
96
|
-
"eslint-plugin-prefer-arrow": "^1.2.3",
|
97
|
-
"eslint-plugin-prettier": "^5.0.0",
|
98
|
-
"istanbul-lib-coverage": "^3.2.0",
|
99
|
-
"istanbul-lib-instrument": "^6.0.0",
|
100
|
-
"ncp": "^2.0.0",
|
101
|
-
"npm-run-all": "^4.1.5",
|
102
|
-
"nyc": "^15.1.0",
|
103
|
-
"prettier": "^3.0.
|
104
|
-
"rimraf": "^5.0.1",
|
105
|
-
"sass": "^1.
|
106
|
-
"stylelint": "^15.10.
|
107
|
-
"stylelint-config-standard": "^34.0.0",
|
108
|
-
"stylelint-config-standard-scss": "^10.0.0",
|
109
|
-
"stylelint-order": "^6.0.3",
|
110
|
-
"stylelint-scss": "^5.1.0",
|
111
|
-
"typescript": "^5.1.6",
|
112
|
-
"vite": "^4.4.9"
|
113
|
-
}
|
114
|
-
|
1
|
+
{
|
2
|
+
"name": "@thednp/color-picker",
|
3
|
+
"version": "2.0.0-alpha9",
|
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
|
+
"scripts": {
|
37
|
+
"pre-test": "npm run clean-coverage",
|
38
|
+
"test": "npm run pre-test && cypress run",
|
39
|
+
"cypress": "npm run pre-test && npx cypress open",
|
40
|
+
"clean-coverage": "rimraf coverage .nyc_output",
|
41
|
+
"coverage:report": "nyc report --reporter=lcov --reporter=json --reporter=text --reporter=json-summary",
|
42
|
+
"format": "prettier --write \"src/**/*.ts\"",
|
43
|
+
"fix:ts": "eslint src --config .eslintrc.cjs --fix",
|
44
|
+
"lint:ts": "eslint src --config .eslintrc.cjs",
|
45
|
+
"fix:css": "stylelint --config .stylelintrc.json --fix scss \"src/scss/*.scss\"",
|
46
|
+
"lint:css": "stylelint --config .stylelintrc.json scss \"src/scss/*.scss\"",
|
47
|
+
"build": "npm run lint:ts && npm run build-vite && npm run dts",
|
48
|
+
"build-vite": "vite build && npm run docs",
|
49
|
+
"dev": "vite --open ./docs/dev.html --port 8577",
|
50
|
+
"dts": "dts-bundle-generator --config ./dts.config.ts",
|
51
|
+
"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",
|
52
|
+
"copy": "npm-run-all --parallel copy-*",
|
53
|
+
"copy-css-cp": "ncp dist/css/color-picker.css docs/css/color-picker.css",
|
54
|
+
"copy-css-rtl": "ncp dist/css/color-picker.rtl.css docs/css/color-picker.rtl.css",
|
55
|
+
"compile": "npm run lint:css && npm-run-all --parallel compile-* && npm run copy",
|
56
|
+
"compile-scss": "node compile.js",
|
57
|
+
"compile-scss-min": "node compile.js MIN:true",
|
58
|
+
"compile-scss-rtl": "node compile.js MIN:false,DIR:rtl",
|
59
|
+
"compile-scss-rtl-min": "node compile.js MIN:true,DIR:rtl"
|
60
|
+
},
|
61
|
+
"bugs": {
|
62
|
+
"url": "https://github.com/thednp/color-picker/issues"
|
63
|
+
},
|
64
|
+
"publishConfig": {
|
65
|
+
"access": "public",
|
66
|
+
"registry": "https://registry.npmjs.org/"
|
67
|
+
},
|
68
|
+
"repository": {
|
69
|
+
"type": "git",
|
70
|
+
"url": "git+https://github.com/thednp/color-picker.git"
|
71
|
+
},
|
72
|
+
"keywords": [
|
73
|
+
"color",
|
74
|
+
"picker",
|
75
|
+
"color-picker",
|
76
|
+
"colorpicker",
|
77
|
+
"palette",
|
78
|
+
"color-palette",
|
79
|
+
"typescript"
|
80
|
+
],
|
81
|
+
"dependencies": {
|
82
|
+
"@thednp/color": "^1.0.8",
|
83
|
+
"@thednp/event-listener": "^2.0.2",
|
84
|
+
"@thednp/shorty": "2.0.0-alpha17"
|
85
|
+
},
|
86
|
+
"devDependencies": {
|
87
|
+
"@bahmutov/cypress-esbuild-preprocessor": "^2.2.0",
|
88
|
+
"@cypress/code-coverage": "^3.11.0",
|
89
|
+
"@types/istanbul-lib-instrument": "^1.7.4",
|
90
|
+
"@typescript-eslint/eslint-plugin": "^6.4.0",
|
91
|
+
"@typescript-eslint/parser": "^6.4.0",
|
92
|
+
"cypress": "^12.17.4",
|
93
|
+
"dts-bundle-generator": "^8.0.1",
|
94
|
+
"eslint": "^8.47.0",
|
95
|
+
"eslint-plugin-jsdoc": "^46.4.6",
|
96
|
+
"eslint-plugin-prefer-arrow": "^1.2.3",
|
97
|
+
"eslint-plugin-prettier": "^5.0.0",
|
98
|
+
"istanbul-lib-coverage": "^3.2.0",
|
99
|
+
"istanbul-lib-instrument": "^6.0.0",
|
100
|
+
"ncp": "^2.0.0",
|
101
|
+
"npm-run-all": "^4.1.5",
|
102
|
+
"nyc": "^15.1.0",
|
103
|
+
"prettier": "^3.0.2",
|
104
|
+
"rimraf": "^5.0.1",
|
105
|
+
"sass": "^1.66.1",
|
106
|
+
"stylelint": "^15.10.3",
|
107
|
+
"stylelint-config-standard": "^34.0.0",
|
108
|
+
"stylelint-config-standard-scss": "^10.0.0",
|
109
|
+
"stylelint-order": "^6.0.3",
|
110
|
+
"stylelint-scss": "^5.1.0",
|
111
|
+
"typescript": "^5.1.6",
|
112
|
+
"vite": "^4.4.9"
|
113
|
+
},
|
114
|
+
"packageManager": "pnpm@8.6.12"
|
115
|
+
}
|
@@ -299,7 +299,8 @@
|
|
299
299
|
transition: var(--options-transition);
|
300
300
|
}
|
301
301
|
|
302
|
-
.color-options.scrollable:hover {
|
302
|
+
// .color-options.scrollable:hover {
|
303
|
+
.color-dropdown.menu:hover .scrollable {
|
303
304
|
height: var(--grid-hover-height);
|
304
305
|
}
|
305
306
|
|
@@ -321,7 +322,7 @@
|
|
321
322
|
width: var(--grid-item-size);
|
322
323
|
height: var(--grid-item-size);
|
323
324
|
overflow: hidden;
|
324
|
-
|
325
|
+
color: rgba(0,0,0,0%);
|
325
326
|
|
326
327
|
&:active, &:focus {
|
327
328
|
outline: none;
|
@@ -419,7 +420,7 @@
|
|
419
420
|
|
420
421
|
/* visual control */
|
421
422
|
.visual-control {
|
422
|
-
height:
|
423
|
+
height: 230px;
|
423
424
|
|
424
425
|
/* important for mobile devices */
|
425
426
|
touch-action: none;
|
@@ -427,7 +428,7 @@
|
|
427
428
|
}
|
428
429
|
|
429
430
|
.visual-control1 {
|
430
|
-
width:
|
431
|
+
width: 230px;
|
431
432
|
}
|
432
433
|
|
433
434
|
.visual-control2,
|
@@ -436,12 +437,7 @@
|
|
436
437
|
cursor: ns-resize;
|
437
438
|
}
|
438
439
|
|
439
|
-
@media (width >=
|
440
|
-
.visual-control { height: 230px; }
|
441
|
-
.visual-control1 { width: 230px; }
|
442
|
-
}
|
443
|
-
|
444
|
-
@media (width >= 1200px) {
|
440
|
+
@media (width >= 980px) {
|
445
441
|
.visual-control { height: 300px; }
|
446
442
|
.visual-control1 { width: 300px; }
|
447
443
|
}
|
package/src/ts/index.ts
CHANGED
@@ -37,6 +37,7 @@ import {
|
|
37
37
|
getDocumentElement,
|
38
38
|
getDocument,
|
39
39
|
ObjectAssign,
|
40
|
+
ObjectFromEntries,
|
40
41
|
Data,
|
41
42
|
getInstance,
|
42
43
|
setElementStyle,
|
@@ -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
|
@@ -224,7 +226,7 @@ export default class ColorPicker {
|
|
224
226
|
c2y: number;
|
225
227
|
c3y: number;
|
226
228
|
};
|
227
|
-
colorLabels:
|
229
|
+
colorLabels: ColorNames = ObjectFromEntries(colorNames.map(c => [c, c])) as ColorNames;
|
228
230
|
colorKeywords: string[] | false;
|
229
231
|
colorPresets: ColorPalette | string[] | false;
|
230
232
|
componentLabels: ColorPickerLabels;
|
@@ -265,7 +267,7 @@ export default class ColorPicker {
|
|
265
267
|
c2y: 0,
|
266
268
|
c3y: 0,
|
267
269
|
};
|
268
|
-
this.colorLabels = {};
|
270
|
+
// this.colorLabels = {};
|
269
271
|
this.colorKeywords = false;
|
270
272
|
this.colorPresets = false;
|
271
273
|
|
@@ -285,9 +287,7 @@ export default class ColorPicker {
|
|
285
287
|
}
|
286
288
|
|
287
289
|
// expose colour labels to all methods
|
288
|
-
|
289
|
-
this.colorLabels[c] = translatedColorLabels[i].trim();
|
290
|
-
});
|
290
|
+
ObjectAssign(this.colorLabels, ObjectFromEntries(translatedColorLabels.map((c, i) => [colorNames[i], c])));
|
291
291
|
|
292
292
|
// update and expose component labels
|
293
293
|
const tempComponentLabels =
|
@@ -521,9 +521,8 @@ export default class ColorPicker {
|
|
521
521
|
* The `ColorPicker` *scroll* event listener when open.
|
522
522
|
*
|
523
523
|
* @param e
|
524
|
-
* @this {ColorPicker}
|
525
524
|
*/
|
526
|
-
handleScroll = (e: Event)
|
525
|
+
handleScroll = (e: Event) => {
|
527
526
|
const { activeElement } = getDocument(this.input);
|
528
527
|
|
529
528
|
this.updateDropdownPosition();
|
@@ -543,7 +542,7 @@ export default class ColorPicker {
|
|
543
542
|
*
|
544
543
|
* @param e
|
545
544
|
*/
|
546
|
-
menuKeyHandler = (e:
|
545
|
+
menuKeyHandler = (e: KeyboardEvent & { target: HTMLElement }) => {
|
547
546
|
const { target, code } = e;
|
548
547
|
const { previousElementSibling, nextElementSibling, parentElement } = target;
|
549
548
|
const isColorOptionsMenu = parentElement && hasClass(parentElement, 'color-options');
|
@@ -585,7 +584,7 @@ export default class ColorPicker {
|
|
585
584
|
* @param e
|
586
585
|
* @this {ColorPicker}
|
587
586
|
*/
|
588
|
-
menuClickHandler = (e: Event)
|
587
|
+
menuClickHandler = (e: Event) => {
|
589
588
|
const { target } = e;
|
590
589
|
const { colorMenu } = this;
|
591
590
|
const newOption = (getAttribute(target as HTMLElement, 'data-value') || '').trim();
|
@@ -630,7 +629,8 @@ export default class ColorPicker {
|
|
630
629
|
*
|
631
630
|
* @param e
|
632
631
|
*/
|
633
|
-
pointerDown = (e:
|
632
|
+
pointerDown = (e: PointerEvent & { target: HTMLElement }) => {
|
633
|
+
if (e.button !== 0) return;
|
634
634
|
const { target, pageX, pageY } = e;
|
635
635
|
const { colorMenu, visuals, controlKnobs } = this;
|
636
636
|
const [v1, v2, v3] = visuals;
|
@@ -687,7 +687,7 @@ export default class ColorPicker {
|
|
687
687
|
*
|
688
688
|
* @param {PointerEvent} e
|
689
689
|
*/
|
690
|
-
pointerMove = (e: PointerEvent)
|
690
|
+
pointerMove = (e: PointerEvent) => {
|
691
691
|
const { dragElement, visuals } = this;
|
692
692
|
const [v1, v2, v3] = visuals;
|
693
693
|
const { pageX, pageY } = e;
|
@@ -0,0 +1,20 @@
|
|
1
|
+
export default interface ColorNames {
|
2
|
+
white: string;
|
3
|
+
black: string;
|
4
|
+
grey: string;
|
5
|
+
red: string;
|
6
|
+
orange: string;
|
7
|
+
brown: string;
|
8
|
+
gold: string;
|
9
|
+
olive: string;
|
10
|
+
yellow: string;
|
11
|
+
lime: string;
|
12
|
+
green: string;
|
13
|
+
teal: string;
|
14
|
+
cyan: string;
|
15
|
+
blue: string;
|
16
|
+
violet: string;
|
17
|
+
magenta: string;
|
18
|
+
pink: string;
|
19
|
+
[key: string]: string;
|
20
|
+
}
|
@@ -1,29 +0,0 @@
|
|
1
|
-
import ColorPickerElement from '../../src/js/color-picker-element';
|
2
|
-
|
3
|
-
import getRandomInt from './getRandomInt';
|
4
|
-
import testSample from './testSample';
|
5
|
-
import FORMAT from './format';
|
6
|
-
import colorNamesFrench from './colorNamesFrench';
|
7
|
-
import componentLabelsFrench from './componentLabelsFrench';
|
8
|
-
|
9
|
-
export default function getCEMarkup(body) {
|
10
|
-
const id = getRandomInt(0,9999);
|
11
|
-
const format = FORMAT[getRandomInt(0,3)];
|
12
|
-
const sample = testSample[getRandomInt(0,2)];
|
13
|
-
const value = sample[format];
|
14
|
-
|
15
|
-
// const cpe = document.createElement('color-picker');
|
16
|
-
const cpe = new ColorPickerElement();
|
17
|
-
cpe.setAttribute('data-id', `cpe-${format}-${id}`);
|
18
|
-
cpe.setAttribute('data-format', format);
|
19
|
-
cpe.setAttribute('data-value', value);
|
20
|
-
cpe.setAttribute('data-component-labels', JSON.stringify(componentLabelsFrench));
|
21
|
-
cpe.setAttribute('data-color-labels', colorNamesFrench);
|
22
|
-
cpe.setAttribute('data-color-keywords', 'red,gree,blue');
|
23
|
-
cpe.setAttribute('data-color-presets', '#330000,#990000,#ff0000,#ff6666,#ffcccc,#003333,#009999,#00ffff,#66ffff,#ccffff');
|
24
|
-
|
25
|
-
if (body) {
|
26
|
-
body.append(cpe);
|
27
|
-
}
|
28
|
-
return {value, id, format};
|
29
|
-
}
|