@strapi/plugin-color-picker 0.0.0-next.a2b1a1e72400fea121da3c3fb18f524b0c885ba8 → 0.0.0-next.a4bb06d54b493ab973659d0200e0e42937988850

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.
Files changed (45) hide show
  1. package/LICENSE +34 -12
  2. package/dist/_chunks/ColorPickerInput-BiwD6BEw.mjs +137 -0
  3. package/dist/_chunks/ColorPickerInput-gD_Mb6qe.js +155 -0
  4. package/dist/_chunks/cs-CKl0OyEH.js +15 -0
  5. package/{admin/src/translations/cs.json → dist/_chunks/cs-DMmE6LK7.mjs} +5 -2
  6. package/{admin/src/translations/en.json → dist/_chunks/en-BlDau3us.mjs} +5 -2
  7. package/dist/_chunks/en-Ct0C5cA2.js +18 -0
  8. package/dist/_chunks/index-CNTxZbMN.js +126 -0
  9. package/dist/_chunks/index-dnY2u5Dg.mjs +127 -0
  10. package/dist/_chunks/ru-Wrg-npZz.js +18 -0
  11. package/{admin/src/translations/ru.json → dist/_chunks/ru-aOnA-eym.mjs} +5 -2
  12. package/{admin/src/translations/sv.json → dist/_chunks/sv-BaFDND79.mjs} +5 -2
  13. package/dist/_chunks/sv-CKY6es_6.js +15 -0
  14. package/{admin/src/translations/tr.json → dist/_chunks/tr-CHHW_hYI.mjs} +5 -2
  15. package/dist/_chunks/tr-DcLzQS-J.js +15 -0
  16. package/{admin/src/translations/zh.json → dist/_chunks/zh-DBH6uCXb.mjs} +5 -2
  17. package/dist/_chunks/zh-T5cJzhPD.js +15 -0
  18. package/dist/admin/index.js +3 -0
  19. package/dist/admin/index.mjs +4 -0
  20. package/dist/admin/src/components/ColorPickerIcon.d.ts +1 -0
  21. package/dist/admin/src/components/ColorPickerInput.d.ts +7 -0
  22. package/dist/admin/src/index.d.ts +18 -0
  23. package/dist/admin/src/pluginId.d.ts +1 -0
  24. package/dist/admin/src/utils/getTrad.d.ts +1 -0
  25. package/dist/admin/src/utils/prefixPluginTranslations.d.ts +3 -0
  26. package/dist/server/index.js +10 -5
  27. package/dist/server/index.mjs +13 -0
  28. package/dist/server/{index.d.ts → src/index.d.ts} +1 -0
  29. package/dist/server/src/index.d.ts.map +1 -0
  30. package/dist/server/{register.d.ts → src/register.d.ts} +1 -0
  31. package/dist/server/src/register.d.ts.map +1 -0
  32. package/package.json +64 -49
  33. package/admin/src/components/ColorPicker/ColorPickerIcon/index.js +0 -26
  34. package/admin/src/components/ColorPicker/ColorPickerInput/index.js +0 -214
  35. package/admin/src/components/tests/__snapshots__/color-picker-input.test.js.snap +0 -238
  36. package/admin/src/components/tests/color-picker-input.test.js +0 -65
  37. package/admin/src/hooks/useComposeRefs.js +0 -48
  38. package/admin/src/index.js +0 -88
  39. package/admin/src/pluginId.js +0 -5
  40. package/admin/src/utils/getTrad.js +0 -5
  41. package/dist/server/index.js.map +0 -1
  42. package/dist/server/register.js +0 -12
  43. package/dist/server/register.js.map +0 -1
  44. package/strapi-admin.js +0 -3
  45. package/strapi-server.js +0 -3
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const ru = {
4
+ "color-picker.description": "Выбирайте любые цвета",
5
+ "color-picker.input.aria-label": "Введите выбранный цвет",
6
+ "color-picker.input.format": "HEX",
7
+ "color-picker.label": "Цвет",
8
+ "color-picker.options.advanced.regex": "Шаблон регулярного выражения (RegExp)",
9
+ "color-picker.options.advanced.regex.description": "Обеспечивает проверку с помощью регулярного выражение для HEX (шестнадцатеричного) HEX значения цвета",
10
+ "color-picker.options.advanced.requiredField": "Обязательное поле",
11
+ "color-picker.options.advanced.requiredField.description": "Вы не сможете продолжить, если это поле пусто",
12
+ "color-picker.settings": "Настройки",
13
+ "color-picker.toggle.aria-label": "Переключатель средства выбора цвета",
14
+ "plugin.description.long": "Настраиваемое поле средства выбора цвета, поддерживаемое Strapi. Используйте ползунки насыщенности и оттенка, чтобы выбрать цвет и сохранить его HEX (шестнадцатеричное) значение.",
15
+ "plugin.description.short": "Настраиваемое поле средства выбора цвета, поддерживаемое Strapi.",
16
+ "plugin.name": "Выбор цвета"
17
+ };
18
+ exports.default = ru;
@@ -1,4 +1,4 @@
1
- {
1
+ const ru = {
2
2
  "color-picker.description": "Выбирайте любые цвета",
3
3
  "color-picker.input.aria-label": "Введите выбранный цвет",
4
4
  "color-picker.input.format": "HEX",
@@ -12,4 +12,7 @@
12
12
  "plugin.description.long": "Настраиваемое поле средства выбора цвета, поддерживаемое Strapi. Используйте ползунки насыщенности и оттенка, чтобы выбрать цвет и сохранить его HEX (шестнадцатеричное) значение.",
13
13
  "plugin.description.short": "Настраиваемое поле средства выбора цвета, поддерживаемое Strapi.",
14
14
  "plugin.name": "Выбор цвета"
15
- }
15
+ };
16
+ export {
17
+ ru as default
18
+ };
@@ -1,4 +1,4 @@
1
- {
1
+ const sv = {
2
2
  "color-picker.description": "Välj färger",
3
3
  "color-picker.input.aria-label": "Färgväljarinmatning",
4
4
  "color-picker.input.format": "HEX",
@@ -9,4 +9,7 @@
9
9
  "color-picker.options.advanced.requiredField.description": "Du kommer inte att kunna skapa en post om det här fältet är tomt",
10
10
  "color-picker.settings": "Inställningar",
11
11
  "color-picker.toggle.aria-label": "Växla färgväljare"
12
- }
12
+ };
13
+ export {
14
+ sv as default
15
+ };
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const sv = {
4
+ "color-picker.description": "Välj färger",
5
+ "color-picker.input.aria-label": "Färgväljarinmatning",
6
+ "color-picker.input.format": "HEX",
7
+ "color-picker.label": "Färgväljare",
8
+ "color-picker.options.advanced.regex": "RegEx-mönster",
9
+ "color-picker.options.advanced.regex.description": "Ange ett regex-mönster för att validera HEX-värdet",
10
+ "color-picker.options.advanced.requiredField": "Obligatoriskt fält",
11
+ "color-picker.options.advanced.requiredField.description": "Du kommer inte att kunna skapa en post om det här fältet är tomt",
12
+ "color-picker.settings": "Inställningar",
13
+ "color-picker.toggle.aria-label": "Växla färgväljare"
14
+ };
15
+ exports.default = sv;
@@ -1,4 +1,4 @@
1
- {
1
+ const tr = {
2
2
  "color-picker.description": "Herhangi bir renk seç",
3
3
  "color-picker.input.aria-label": "Renk seçici girişi",
4
4
  "color-picker.input.format": "HEX",
@@ -9,4 +9,7 @@
9
9
  "color-picker.options.advanced.requiredField.description": "Bu alan boş olursa yeni bir girdi oluşturamazsın",
10
10
  "color-picker.settings": "Ayarlar",
11
11
  "color-picker.toggle.aria-label": "Renk seçici anahtarı"
12
- }
12
+ };
13
+ export {
14
+ tr as default
15
+ };
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const tr = {
4
+ "color-picker.description": "Herhangi bir renk seç",
5
+ "color-picker.input.aria-label": "Renk seçici girişi",
6
+ "color-picker.input.format": "HEX",
7
+ "color-picker.label": "Renk",
8
+ "color-picker.options.advanced.regex": "RegExp ifadesi",
9
+ "color-picker.options.advanced.regex.description": "HEX değerini doğrulamak için bir RegExp ifadesi sağla",
10
+ "color-picker.options.advanced.requiredField": "Zorunlu alan",
11
+ "color-picker.options.advanced.requiredField.description": "Bu alan boş olursa yeni bir girdi oluşturamazsın",
12
+ "color-picker.settings": "Ayarlar",
13
+ "color-picker.toggle.aria-label": "Renk seçici anahtarı"
14
+ };
15
+ exports.default = tr;
@@ -1,4 +1,4 @@
1
- {
1
+ const zh = {
2
2
  "color-picker.description": "選擇任意顏色",
3
3
  "color-picker.input.aria-label": "選色器輸入",
4
4
  "color-picker.input.format": "HEX",
@@ -9,4 +9,7 @@
9
9
  "color-picker.options.advanced.requiredField.description": "若此欄位為空,您將無法建立項目",
10
10
  "color-picker.settings": "設定",
11
11
  "color-picker.toggle.aria-label": "選色器開關"
12
- }
12
+ };
13
+ export {
14
+ zh as default
15
+ };
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const zh = {
4
+ "color-picker.description": "選擇任意顏色",
5
+ "color-picker.input.aria-label": "選色器輸入",
6
+ "color-picker.input.format": "HEX",
7
+ "color-picker.label": "顏色",
8
+ "color-picker.options.advanced.regex": "正則表達模式",
9
+ "color-picker.options.advanced.regex.description": "提供正則表達式以驗證 HEX 值",
10
+ "color-picker.options.advanced.requiredField": "必填欄位",
11
+ "color-picker.options.advanced.requiredField.description": "若此欄位為空,您將無法建立項目",
12
+ "color-picker.settings": "設定",
13
+ "color-picker.toggle.aria-label": "選色器開關"
14
+ };
15
+ exports.default = zh;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ const index = require("../_chunks/index-CNTxZbMN.js");
3
+ module.exports = index.index;
@@ -0,0 +1,4 @@
1
+ import { i } from "../_chunks/index-dnY2u5Dg.mjs";
2
+ export {
3
+ i as default
4
+ };
@@ -0,0 +1 @@
1
+ export declare const ColorPickerIcon: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ import { type InputProps } from '@strapi/strapi/admin';
3
+ type ColorPickerInputProps = InputProps & {
4
+ labelAction?: React.ReactNode;
5
+ };
6
+ export declare const ColorPickerInput: React.ForwardRefExoticComponent<ColorPickerInputProps & React.RefAttributes<HTMLButtonElement>>;
7
+ export {};
@@ -0,0 +1,18 @@
1
+ declare const _default: {
2
+ /**
3
+ * TODO: we need to have the type for StrapiApp done from `@strapi/admin` package.
4
+ */
5
+ register(app: any): void;
6
+ registerTrads({ locales }: {
7
+ locales: string[];
8
+ }): Promise<({
9
+ data: {
10
+ [x: string]: string;
11
+ };
12
+ locale: string;
13
+ } | {
14
+ data: {};
15
+ locale: string;
16
+ })[]>;
17
+ };
18
+ export default _default;
@@ -0,0 +1 @@
1
+ export declare const pluginId = "color-picker";
@@ -0,0 +1 @@
1
+ export declare const getTrad: (id: string) => string;
@@ -0,0 +1,3 @@
1
+ type TradOptions = Record<string, string>;
2
+ declare const prefixPluginTranslations: (trad: TradOptions, pluginId: string) => TradOptions;
3
+ export { prefixPluginTranslations };
@@ -1,7 +1,12 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const register_1 = require("./register");
4
- exports.default = {
5
- register: register_1.register,
2
+ const register = ({ strapi }) => {
3
+ strapi.customFields.register({
4
+ name: "color",
5
+ plugin: "color-picker",
6
+ type: "string"
7
+ });
6
8
  };
7
- //# sourceMappingURL=index.js.map
9
+ const index = {
10
+ register
11
+ };
12
+ module.exports = index;
@@ -0,0 +1,13 @@
1
+ const register = ({ strapi }) => {
2
+ strapi.customFields.register({
3
+ name: "color",
4
+ plugin: "color-picker",
5
+ type: "string"
6
+ });
7
+ };
8
+ const index = {
9
+ register
10
+ };
11
+ export {
12
+ index as default
13
+ };
@@ -2,3 +2,4 @@ declare const _default: {
2
2
  register: ({ strapi }: any) => void;
3
3
  };
4
4
  export default _default;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/src/index.ts"],"names":[],"mappings":";;;AAEA,wBAEE"}
@@ -1 +1,2 @@
1
1
  export declare const register: ({ strapi }: any) => void;
2
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../server/src/register.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,eAAgB,GAAG,SAMvC,CAAC"}
package/package.json CHANGED
@@ -1,53 +1,7 @@
1
1
  {
2
2
  "name": "@strapi/plugin-color-picker",
3
- "version": "0.0.0-next.a2b1a1e72400fea121da3c3fb18f524b0c885ba8",
3
+ "version": "0.0.0-next.a4bb06d54b493ab973659d0200e0e42937988850",
4
4
  "description": "Strapi maintained Custom Fields",
5
- "strapi": {
6
- "name": "color-picker",
7
- "description": "Color picker custom field",
8
- "kind": "plugin",
9
- "displayName": "Color Picker"
10
- },
11
- "dependencies": {
12
- "@strapi/design-system": "1.9.0",
13
- "@strapi/helper-plugin": "0.0.0-next.a2b1a1e72400fea121da3c3fb18f524b0c885ba8",
14
- "@strapi/icons": "1.9.0",
15
- "prop-types": "^15.8.1",
16
- "react-colorful": "5.6.1",
17
- "react-intl": "6.4.1"
18
- },
19
- "devDependencies": {
20
- "@testing-library/react": "14.0.0",
21
- "react": "^18.2.0",
22
- "react-dom": "^18.2.0",
23
- "react-router-dom": "5.3.4",
24
- "styled-components": "5.3.3"
25
- },
26
- "peerDependencies": {
27
- "@strapi/strapi": "^4.4.0",
28
- "react": "^17.0.0 || ^18.0.0",
29
- "react-dom": "^17.0.0 || ^18.0.0",
30
- "react-router-dom": "5.3.4",
31
- "styled-components": "5.3.3"
32
- },
33
- "files": [
34
- "./dist",
35
- "./admin",
36
- "strapi-admin.js",
37
- "strapi-server.js"
38
- ],
39
- "scripts": {
40
- "build": "run -T tsc -p server/tsconfig.json --outDir ./dist/server",
41
- "build:ts": "run build",
42
- "watch": "run -T tsc -w --preserveWatchOutput",
43
- "clean": "run -T rimraf ./dist",
44
- "prepublishOnly": "yarn clean && yarn build",
45
- "test:front": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js",
46
- "test:front:watch": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js --watchAll",
47
- "test:front:ce": "run -T cross-env IS_EE=false jest --config ./jest.config.front.js",
48
- "test:front:watch:ce": "run -T cross-env IS_EE=false jest --config ./jest.config.front.js --watchAll",
49
- "lint": "run -T eslint ."
50
- },
51
5
  "repository": {
52
6
  "type": "git",
53
7
  "url": "https://github.com/strapi/strapi.git",
@@ -66,9 +20,70 @@
66
20
  "url": "https://strapi.io"
67
21
  }
68
22
  ],
23
+ "exports": {
24
+ "./strapi-admin": {
25
+ "types": "./dist/admin/src/index.d.ts",
26
+ "source": "./admin/src/index.ts",
27
+ "import": "./dist/admin/index.mjs",
28
+ "require": "./dist/admin/index.js",
29
+ "default": "./dist/admin/index.js"
30
+ },
31
+ "./strapi-server": {
32
+ "types": "./dist/server/src/index.d.ts",
33
+ "source": "./server/src/index.ts",
34
+ "import": "./dist/server/index.mjs",
35
+ "require": "./dist/server/index.js",
36
+ "default": "./dist/server/index.js"
37
+ },
38
+ "./package.json": "./package.json"
39
+ },
40
+ "files": [
41
+ "dist/",
42
+ "strapi-server.js"
43
+ ],
44
+ "scripts": {
45
+ "build": "strapi-plugin build",
46
+ "clean": "run -T rimraf ./dist",
47
+ "lint": "run -T eslint .",
48
+ "test:front": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js",
49
+ "test:front:ce": "run -T cross-env IS_EE=false jest --config ./jest.config.front.js",
50
+ "test:front:watch": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js --watchAll",
51
+ "test:front:watch:ce": "run -T cross-env IS_EE=false jest --config ./jest.config.front.js --watchAll",
52
+ "test:ts:front": "run -T tsc -p admin/tsconfig.json",
53
+ "watch": "strapi-plugin watch"
54
+ },
55
+ "dependencies": {
56
+ "@strapi/design-system": "2.0.0-rc.14",
57
+ "@strapi/icons": "2.0.0-rc.14",
58
+ "react-colorful": "5.6.1",
59
+ "react-intl": "6.6.2"
60
+ },
61
+ "devDependencies": {
62
+ "@strapi/sdk-plugin": "^5.2.0",
63
+ "@strapi/strapi": "0.0.0-next.a4bb06d54b493ab973659d0200e0e42937988850",
64
+ "@testing-library/react": "15.0.7",
65
+ "@testing-library/user-event": "14.5.2",
66
+ "react": "18.3.1",
67
+ "react-dom": "18.3.1",
68
+ "react-router-dom": "6.22.3",
69
+ "styled-components": "6.1.8",
70
+ "typescript": "5.3.2"
71
+ },
72
+ "peerDependencies": {
73
+ "@strapi/strapi": "^5.0.0",
74
+ "react": "^17.0.0 || ^18.0.0",
75
+ "react-dom": "^17.0.0 || ^18.0.0",
76
+ "react-router-dom": "^6.0.0",
77
+ "styled-components": "^6.0.0"
78
+ },
69
79
  "engines": {
70
- "node": ">=16.0.0 <=20.x.x",
80
+ "node": ">=18.0.0 <=22.x.x",
71
81
  "npm": ">=6.0.0"
72
82
  },
73
- "gitHead": "a2b1a1e72400fea121da3c3fb18f524b0c885ba8"
83
+ "strapi": {
84
+ "name": "color-picker",
85
+ "description": "Color picker custom field",
86
+ "kind": "plugin",
87
+ "displayName": "Color Picker"
88
+ }
74
89
  }
@@ -1,26 +0,0 @@
1
- import React from 'react';
2
-
3
- import { Flex, Icon } from '@strapi/design-system';
4
- import { Paint } from '@strapi/icons';
5
- import styled from 'styled-components';
6
-
7
- const IconBox = styled(Flex)`
8
- /* Hard code color values */
9
- /* to stay consistent between themes */
10
- background-color: #f0f0ff; /* primary100 */
11
- border: 1px solid #d9d8ff; /* primary200 */
12
-
13
- svg > path {
14
- fill: #4945ff; /* primary600 */
15
- }
16
- `;
17
-
18
- const ColorPickerIcon = () => {
19
- return (
20
- <IconBox justifyContent="center" alignItems="center" width={7} height={6} hasRadius aria-hidden>
21
- <Icon as={Paint} />
22
- </IconBox>
23
- );
24
- };
25
-
26
- export default ColorPickerIcon;
@@ -1,214 +0,0 @@
1
- import React, { forwardRef, useRef, useState } from 'react';
2
-
3
- import {
4
- BaseButton,
5
- Box,
6
- Field,
7
- FieldError,
8
- FieldHint,
9
- FieldInput,
10
- FieldLabel,
11
- Flex,
12
- FocusTrap,
13
- Popover,
14
- Typography,
15
- } from '@strapi/design-system';
16
- import { CarretDown } from '@strapi/icons';
17
- import PropTypes from 'prop-types';
18
- import { HexColorPicker } from 'react-colorful';
19
- import { useIntl } from 'react-intl';
20
- import styled from 'styled-components';
21
-
22
- import { useComposedRefs } from '../../../hooks/useComposeRefs';
23
- import getTrad from '../../../utils/getTrad';
24
-
25
- const ColorPreview = styled.div`
26
- border-radius: 50%;
27
- width: 20px;
28
- height: 20px;
29
- margin-right: 10px;
30
- background-color: ${(props) => props.color};
31
- border: 1px solid rgba(0, 0, 0, 0.1);
32
- `;
33
-
34
- const ColorPicker = styled(HexColorPicker)`
35
- && {
36
- width: 100%;
37
- aspect-ratio: 1.5;
38
- }
39
-
40
- .react-colorful__pointer {
41
- width: ${({ theme }) => theme.spaces[3]};
42
- height: ${({ theme }) => theme.spaces[3]};
43
- }
44
-
45
- .react-colorful__saturation {
46
- border-radius: ${({ theme }) => theme.spaces[1]};
47
- border-bottom: none;
48
- }
49
-
50
- .react-colorful__hue {
51
- border-radius: 10px;
52
- height: ${({ theme }) => theme.spaces[3]};
53
- margin-top: ${({ theme }) => theme.spaces[2]};
54
- }
55
- `;
56
-
57
- const ColorPickerToggle = styled(BaseButton)`
58
- display: flex;
59
- justify-content: space-between;
60
- align-items: center;
61
-
62
- svg {
63
- width: ${({ theme }) => theme.spaces[2]};
64
- height: ${({ theme }) => theme.spaces[2]};
65
- }
66
-
67
- svg > path {
68
- fill: ${({ theme }) => theme.colors.neutral500};
69
- justify-self: flex-end;
70
- }
71
- `;
72
-
73
- const ColorPickerPopover = styled(Popover)`
74
- padding: ${({ theme }) => theme.spaces[2]};
75
- min-height: 270px;
76
- `;
77
-
78
- const ColorPickerInput = forwardRef(
79
- (
80
- {
81
- attribute,
82
- description,
83
- disabled,
84
- error,
85
- intlLabel,
86
- labelAction,
87
- name,
88
- onChange,
89
- required,
90
- value,
91
- },
92
- forwardedRef
93
- ) => {
94
- const [showColorPicker, setShowColorPicker] = useState(false);
95
- const colorPickerButtonRef = useRef();
96
- const { formatMessage } = useIntl();
97
- const color = value || '#000000';
98
- const styleUppercase = { textTransform: 'uppercase' };
99
-
100
- const handleBlur = (e) => {
101
- e.preventDefault();
102
-
103
- if (!e.currentTarget.contains(e.relatedTarget)) {
104
- setShowColorPicker(false);
105
- }
106
- };
107
-
108
- const composedRefs = useComposedRefs(forwardedRef, colorPickerButtonRef);
109
-
110
- return (
111
- <Field
112
- name={name}
113
- id={name}
114
- // GenericInput calls formatMessage and returns a string for the error
115
- error={error}
116
- hint={description && formatMessage(description)}
117
- required={required}
118
- >
119
- <Flex direction="column" alignItems="stretch" gap={1}>
120
- <FieldLabel action={labelAction}>{formatMessage(intlLabel)}</FieldLabel>
121
- <ColorPickerToggle
122
- ref={composedRefs}
123
- aria-label={formatMessage({
124
- id: getTrad('color-picker.toggle.aria-label'),
125
- defaultMessage: 'Color picker toggle',
126
- })}
127
- aria-controls="color-picker-value"
128
- aria-haspopup="dialog"
129
- aria-expanded={showColorPicker}
130
- aria-disabled={disabled}
131
- disabled={disabled}
132
- onClick={() => setShowColorPicker(!showColorPicker)}
133
- >
134
- <Flex>
135
- <ColorPreview color={color} />
136
- <Typography
137
- style={styleUppercase}
138
- textColor={value ? null : 'neutral600'}
139
- variant="omega"
140
- >
141
- {color}
142
- </Typography>
143
- </Flex>
144
- <CarretDown aria-hidden />
145
- </ColorPickerToggle>
146
- {showColorPicker && (
147
- <ColorPickerPopover
148
- onBlur={handleBlur}
149
- role="dialog"
150
- source={colorPickerButtonRef}
151
- spacing={4}
152
- >
153
- <FocusTrap onEscape={() => setShowColorPicker(false)}>
154
- <ColorPicker
155
- color={color}
156
- onChange={(hexValue) =>
157
- onChange({ target: { name, value: hexValue, type: attribute.type } })
158
- }
159
- />
160
- <Flex paddingTop={3} paddingLeft={4} justifyContent="flex-end">
161
- <Box paddingRight={2}>
162
- <Typography variant="omega" as="label" textColor="neutral600">
163
- {formatMessage({
164
- id: getTrad('color-picker.input.format'),
165
- defaultMessage: 'HEX',
166
- })}
167
- </Typography>
168
- </Box>
169
- <FieldInput
170
- id="color-picker-value"
171
- aria-label={formatMessage({
172
- id: getTrad('color-picker.input.aria-label'),
173
- defaultMessage: 'Color picker input',
174
- })}
175
- style={styleUppercase}
176
- value={value}
177
- placeholder="#000000"
178
- onChange={onChange}
179
- />
180
- </Flex>
181
- </FocusTrap>
182
- </ColorPickerPopover>
183
- )}
184
- <FieldHint />
185
- <FieldError />
186
- </Flex>
187
- </Field>
188
- );
189
- }
190
- );
191
-
192
- ColorPickerInput.defaultProps = {
193
- description: null,
194
- disabled: false,
195
- error: null,
196
- labelAction: null,
197
- required: false,
198
- value: '',
199
- };
200
-
201
- ColorPickerInput.propTypes = {
202
- intlLabel: PropTypes.object.isRequired,
203
- onChange: PropTypes.func.isRequired,
204
- attribute: PropTypes.object.isRequired,
205
- name: PropTypes.string.isRequired,
206
- description: PropTypes.object,
207
- disabled: PropTypes.bool,
208
- error: PropTypes.string,
209
- labelAction: PropTypes.object,
210
- required: PropTypes.bool,
211
- value: PropTypes.string,
212
- };
213
-
214
- export default ColorPickerInput;