@thednp/color-picker 2.0.0-alpha8 → 2.0.0-alpha9

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,114 +1,115 @@
1
- {
2
- "name": "@thednp/color-picker",
3
- "version": "2.0.0-alpha8",
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/index.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-alpha16"
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.3.0",
91
- "@typescript-eslint/parser": "^6.3.0",
92
- "cypress": "^12.17.3",
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.1",
104
- "rimraf": "^5.0.1",
105
- "sass": "^1.65.1",
106
- "stylelint": "^15.10.2",
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
- text-indent: 2.1rem;
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: 150px;
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: 150px;
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 >= 578px) {
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: Record<string, string> = {};
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
- colorNames.forEach((c, i) => {
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): void => {
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: Event & { target: HTMLElement; code: string }) => {
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): void => {
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: Event & { target: HTMLElement; pageX: number; pageY: number }) => {
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): void => {
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
- }