@thednp/color-picker 1.0.1 → 2.0.0-alpha2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. package/.eslintrc.cjs +199 -0
  2. package/.lgtm.yml +9 -0
  3. package/.prettierrc.json +15 -0
  4. package/.stylelintrc.json +236 -0
  5. package/LICENSE +0 -0
  6. package/README.md +55 -72
  7. package/compile.js +48 -0
  8. package/cypress/e2e/color-palette.cy.ts +128 -0
  9. package/cypress/e2e/color-picker.cy.ts +920 -0
  10. package/cypress/fixtures/colorNamesFrench.js +3 -0
  11. package/cypress/fixtures/componentLabelsFrench.js +21 -0
  12. package/cypress/fixtures/format.js +3 -0
  13. package/cypress/fixtures/getCEMarkup.js +29 -0
  14. package/cypress/fixtures/getMarkup.js +28 -0
  15. package/cypress/fixtures/getRandomInt.js +6 -0
  16. package/cypress/fixtures/sampleWebcolors.js +18 -0
  17. package/cypress/fixtures/testSample.js +8 -0
  18. package/cypress/plugins/esbuild-istanbul.ts +50 -0
  19. package/cypress/plugins/tsCompile.ts +34 -0
  20. package/cypress/support/commands.ts +0 -0
  21. package/cypress/support/e2e.ts +21 -0
  22. package/cypress/test.html +23 -0
  23. package/cypress.config.ts +29 -0
  24. package/dist/css/color-picker.css +16 -40
  25. package/dist/css/color-picker.min.css +2 -2
  26. package/dist/css/color-picker.rtl.css +16 -40
  27. package/dist/css/color-picker.rtl.min.css +2 -2
  28. package/dist/js/color-picker.cjs +8 -0
  29. package/dist/js/color-picker.cjs.map +1 -0
  30. package/dist/js/color-picker.d.ts +278 -0
  31. package/dist/js/color-picker.js +5 -3570
  32. package/dist/js/color-picker.js.map +1 -0
  33. package/dist/js/color-picker.mjs +2631 -0
  34. package/dist/js/color-picker.mjs.map +1 -0
  35. package/dts.config.ts +15 -0
  36. package/package.json +64 -74
  37. package/src/scss/_variables.scss +0 -1
  38. package/src/scss/color-picker.rtl.scss +4 -0
  39. package/src/scss/color-picker.scss +80 -40
  40. package/src/ts/colorPalette.ts +89 -0
  41. package/src/{js/color-picker.js → ts/index.ts} +489 -486
  42. package/src/ts/interface/colorPickerLabels.ts +20 -0
  43. package/src/ts/interface/colorPickerOptions.ts +11 -0
  44. package/src/ts/interface/paletteOptions.ts +6 -0
  45. package/src/ts/util/colorNames.ts +21 -0
  46. package/src/{js/util/colorPickerLabels.js → ts/util/colorPickerLabels.ts} +4 -2
  47. package/src/ts/util/getColorControls.ts +90 -0
  48. package/src/{js/util/getColorForm.js → ts/util/getColorForm.ts} +28 -18
  49. package/src/{js/util/getColorMenu.js → ts/util/getColorMenu.ts} +21 -30
  50. package/src/ts/util/isValidJSON.ts +19 -0
  51. package/src/{js/util/setMarkup.js → ts/util/setMarkup.ts} +57 -48
  52. package/src/{js/util/vHidden.js → ts/util/vHidden.ts} +0 -0
  53. package/tsconfig.json +29 -0
  54. package/vite.config.ts +34 -0
  55. package/dist/js/color-esm.js +0 -1164
  56. package/dist/js/color-esm.min.js +0 -2
  57. package/dist/js/color-palette-esm.js +0 -1235
  58. package/dist/js/color-palette-esm.min.js +0 -2
  59. package/dist/js/color-palette.js +0 -1243
  60. package/dist/js/color-palette.min.js +0 -2
  61. package/dist/js/color-picker-element-esm.js +0 -3718
  62. package/dist/js/color-picker-element-esm.min.js +0 -2
  63. package/dist/js/color-picker-element.js +0 -3726
  64. package/dist/js/color-picker-element.min.js +0 -2
  65. package/dist/js/color-picker-esm.js +0 -3565
  66. package/dist/js/color-picker-esm.min.js +0 -2
  67. package/dist/js/color-picker.min.js +0 -2
  68. package/dist/js/color.js +0 -1172
  69. package/dist/js/color.min.js +0 -2
  70. package/src/js/color-palette.js +0 -75
  71. package/src/js/color-picker-element.js +0 -107
  72. package/src/js/color.js +0 -1104
  73. package/src/js/index.js +0 -8
  74. package/src/js/util/colorNames.js +0 -6
  75. package/src/js/util/getColorControls.js +0 -103
  76. package/src/js/util/isValidJSON.js +0 -13
  77. package/src/js/util/nonColors.js +0 -5
  78. package/src/js/util/roundPart.js +0 -9
  79. package/src/js/util/setCSSProperties.js +0 -12
  80. package/src/js/util/tabindex.js +0 -3
  81. package/src/js/util/toggleCEAttr.js +0 -70
  82. package/src/js/util/version.js +0 -5
  83. package/src/js/version.js +0 -5
  84. package/types/cp.d.ts +0 -558
  85. package/types/index.d.ts +0 -44
  86. package/types/source/source.ts +0 -4
  87. package/types/source/types.d.ts +0 -92
package/src/js/index.js DELETED
@@ -1,8 +0,0 @@
1
- /**
2
- * A single import is required to add the `CP` namespace to `src` sources.
3
- * @typedef {import("../../types/index")}
4
- */
5
-
6
- import ColorPicker from './color-picker';
7
-
8
- export default ColorPicker;
@@ -1,6 +0,0 @@
1
- /**
2
- * A list of 17 color names used for WAI-ARIA compliance.
3
- * @type {string[]}
4
- */
5
- const colorNames = ['white', 'black', 'grey', 'red', 'orange', 'brown', 'gold', 'olive', 'yellow', 'lime', 'green', 'teal', 'cyan', 'blue', 'violet', 'magenta', 'pink'];
6
- export default colorNames;
@@ -1,103 +0,0 @@
1
- import ariaLabel from 'shorter-js/src/strings/ariaLabel';
2
- import ariaValueMin from 'shorter-js/src/strings/ariaValueMin';
3
- import ariaValueMax from 'shorter-js/src/strings/ariaValueMax';
4
- import createElement from 'shorter-js/src/misc/createElement';
5
- import setAttribute from 'shorter-js/src/attr/setAttribute';
6
-
7
- import tabIndex from './tabindex';
8
-
9
- /**
10
- * Returns all color controls for `ColorPicker`.
11
- *
12
- * @param {CP.ColorPicker} self the `ColorPicker` instance
13
- * @returns {HTMLElement | Element} color controls
14
- */
15
- export default function getColorControls(self) {
16
- const { format, componentLabels } = self;
17
- const {
18
- hueLabel, alphaLabel, lightnessLabel, saturationLabel,
19
- whitenessLabel, blacknessLabel,
20
- } = componentLabels;
21
-
22
- const max1 = format === 'hsl' ? 360 : 100;
23
- const max2 = format === 'hsl' ? 100 : 360;
24
- const max3 = 100;
25
-
26
- let ctrl1Label = format === 'hsl'
27
- ? `${hueLabel} & ${lightnessLabel}`
28
- : `${lightnessLabel} & ${saturationLabel}`;
29
-
30
- ctrl1Label = format === 'hwb'
31
- ? `${whitenessLabel} & ${blacknessLabel}`
32
- : ctrl1Label;
33
-
34
- const ctrl2Label = format === 'hsl'
35
- ? `${saturationLabel}`
36
- : `${hueLabel}`;
37
-
38
- const colorControls = createElement({
39
- tagName: 'div',
40
- className: `color-controls ${format}`,
41
- });
42
-
43
- const colorPointer = 'color-pointer';
44
- const colorSlider = 'color-slider';
45
-
46
- const controls = [
47
- {
48
- i: 1,
49
- c: colorPointer,
50
- l: ctrl1Label,
51
- min: 0,
52
- max: max1,
53
- },
54
- {
55
- i: 2,
56
- c: colorSlider,
57
- l: ctrl2Label,
58
- min: 0,
59
- max: max2,
60
- },
61
- {
62
- i: 3,
63
- c: colorSlider,
64
- l: alphaLabel,
65
- min: 0,
66
- max: max3,
67
- },
68
- ];
69
-
70
- controls.forEach((template) => {
71
- const {
72
- i, c, l, min, max,
73
- } = template;
74
- const control = createElement({
75
- tagName: 'div',
76
- className: 'color-control',
77
- });
78
- setAttribute(control, 'role', 'presentation');
79
-
80
- control.append(
81
- createElement({
82
- tagName: 'div',
83
- className: `visual-control visual-control${i}`,
84
- }),
85
- );
86
-
87
- const knob = createElement({
88
- tagName: 'div',
89
- className: `${c} knob`,
90
- ariaLive: 'polite',
91
- });
92
-
93
- setAttribute(knob, ariaLabel, l);
94
- setAttribute(knob, 'role', 'slider');
95
- setAttribute(knob, tabIndex, '0');
96
- setAttribute(knob, ariaValueMin, `${min}`);
97
- setAttribute(knob, ariaValueMax, `${max}`);
98
- control.append(knob);
99
- colorControls.append(control);
100
- });
101
-
102
- return colorControls;
103
- }
@@ -1,13 +0,0 @@
1
- /**
2
- * Check if a string is valid JSON string.
3
- * @param {string} str the string input
4
- * @returns {boolean} the query result
5
- */
6
- export default function isValidJSON(str) {
7
- try {
8
- JSON.parse(str);
9
- } catch (e) {
10
- return false;
11
- }
12
- return true;
13
- }
@@ -1,5 +0,0 @@
1
- /**
2
- * A list of explicit default non-color values.
3
- */
4
- const nonColors = ['transparent', 'currentColor', 'inherit', 'revert', 'initial'];
5
- export default nonColors;
@@ -1,9 +0,0 @@
1
- /**
2
- * Round colour components, for all formats except HEX.
3
- * @param {number} v one of the colour components
4
- * @returns {number} the rounded number
5
- */
6
- export default function roundPart(v) {
7
- const floor = Math.floor(v);
8
- return v - floor < 0.5 ? floor : Math.round(v);
9
- }
@@ -1,12 +0,0 @@
1
- import ObjectKeys from 'shorter-js/src/misc/ObjectKeys';
2
-
3
- /**
4
- * Helps setting CSS variables to the color-menu.
5
- * @param {HTMLElement} element
6
- * @param {Record<string,any>} props
7
- */
8
- export default function setCSSProperties(element, props) {
9
- ObjectKeys(props).forEach((prop) => {
10
- element.style.setProperty(prop, props[prop]);
11
- });
12
- }
@@ -1,3 +0,0 @@
1
- const tabIndex = 'tabindex';
2
-
3
- export default tabIndex;
@@ -1,70 +0,0 @@
1
- import setAttribute from 'shorter-js/src/attr/setAttribute';
2
- import removeAttribute from 'shorter-js/src/attr/removeAttribute';
3
- import ObjectKeys from 'shorter-js/src/misc/ObjectKeys';
4
-
5
- import ColorPalette from '../color-palette';
6
- import colorNames from './colorNames';
7
- import colorPickerLabels from './colorPickerLabels';
8
-
9
- /**
10
- * A small utility to toggle `ColorPickerElement` attributes
11
- * when `connectedCallback` or `disconnectedCallback` methods
12
- * are called and helps the instance keep its value and settings instact.
13
- *
14
- * @param {CP.ColorPickerElement} self ColorPickerElement instance
15
- * @param {Function=} callback when `true`, attributes are added
16
- *
17
- * @example
18
- * const attributes = [
19
- * // essentials
20
- * 'value', 'format',
21
- * // presets menus
22
- * 'color-presets', 'color-keywords',
23
- * // labels
24
- * 'color-labels', 'component-labels',
25
- * ];
26
- */
27
- export default function toggleCEAttr(self, callback) {
28
- if (callback) {
29
- const { input, colorPicker } = self;
30
-
31
- const {
32
- value, format, colorPresets, colorKeywords, componentLabels, colorLabels,
33
- } = colorPicker;
34
-
35
- const { id, placeholder } = input;
36
-
37
- setAttribute(self, 'data-id', id);
38
- setAttribute(self, 'data-value', value);
39
- setAttribute(self, 'data-format', format);
40
- setAttribute(self, 'data-placeholder', placeholder);
41
-
42
- if (ObjectKeys(colorPickerLabels).some((l) => colorPickerLabels[l] !== componentLabels[l])) {
43
- setAttribute(self, 'data-component-labels', JSON.stringify(componentLabels));
44
- }
45
- if (!colorNames.every((c) => c === colorLabels[c])) {
46
- setAttribute(self, 'data-color-labels', colorNames.map((n) => colorLabels[n]).join(','));
47
- }
48
- if (colorPresets instanceof ColorPalette) {
49
- const { hue, hueSteps, lightSteps } = colorPresets;
50
- setAttribute(self, 'data-color-presets', JSON.stringify({ hue, hueSteps, lightSteps }));
51
- }
52
- if (Array.isArray(colorPresets) && colorPresets.length) {
53
- setAttribute(self, 'data-color-presets', colorPresets.join(','));
54
- }
55
- if (colorKeywords) {
56
- setAttribute(self, 'data-color-keywords', colorKeywords.join(','));
57
- }
58
- setTimeout(callback, 0);
59
- } else {
60
- // keep id
61
- // removeAttribute(self, 'data-id');
62
- removeAttribute(self, 'data-value');
63
- removeAttribute(self, 'data-format');
64
- removeAttribute(self, 'data-placeholder');
65
- removeAttribute(self, 'data-component-labels');
66
- removeAttribute(self, 'data-color-labels');
67
- removeAttribute(self, 'data-color-presets');
68
- removeAttribute(self, 'data-color-keywords');
69
- }
70
- }
@@ -1,5 +0,0 @@
1
- import { version } from '../../../package.json';
2
-
3
- const Version = version;
4
-
5
- export default Version;
package/src/js/version.js DELETED
@@ -1,5 +0,0 @@
1
- import { version } from '../../package.json';
2
-
3
- const Version = version;
4
-
5
- export default Version;