@contentful/field-editor-checkbox 1.1.12 → 1.2.0

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/CHANGELOG.md CHANGED
@@ -3,6 +3,12 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.2.0](https://github.com/contentful/field-editors/compare/@contentful/field-editor-checkbox@1.1.12...@contentful/field-editor-checkbox@1.2.0) (2023-04-19)
7
+
8
+ ### Features
9
+
10
+ - upgrade cypress [TOL-1036] ([#1391](https://github.com/contentful/field-editors/issues/1391)) ([9c1aec9](https://github.com/contentful/field-editors/commit/9c1aec98aabbe464cdc3f1236c3bb1cc29b8208d))
11
+
6
12
  ## [1.1.12](https://github.com/contentful/field-editors/compare/@contentful/field-editor-checkbox@1.1.11...@contentful/field-editor-checkbox@1.1.12) (2023-03-14)
7
13
 
8
14
  **Note:** Version bump only for package @contentful/field-editor-checkbox
@@ -5,24 +5,24 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
6
 
7
7
  var React = require('react');
8
+ var f36Components = require('@contentful/f36-components');
9
+ var fieldEditorShared = require('@contentful/field-editor-shared');
8
10
  var emotion = require('emotion');
9
11
  var get = _interopDefault(require('lodash/get'));
10
- var fieldEditorShared = require('@contentful/field-editor-shared');
11
- var f36Components = require('@contentful/f36-components');
12
- var tokens = _interopDefault(require('@contentful/f36-tokens'));
13
12
  var nanoid = require('nanoid');
13
+ var tokens = _interopDefault(require('@contentful/f36-tokens'));
14
14
 
15
- var form = /*#__PURE__*/emotion.css({
15
+ const form = /*#__PURE__*/emotion.css({
16
16
  marginTop: tokens.spacingS
17
17
  });
18
- var rightToLeft = /*#__PURE__*/emotion.css({
18
+ const rightToLeft = /*#__PURE__*/emotion.css({
19
19
  direction: 'rtl'
20
20
  });
21
- var invalidText = /*#__PURE__*/emotion.css({
21
+ const invalidText = /*#__PURE__*/emotion.css({
22
22
  color: tokens.red500,
23
23
  marginLeft: tokens.spacing2Xs
24
24
  });
25
- var removeBtn = /*#__PURE__*/emotion.css({
25
+ const removeBtn = /*#__PURE__*/emotion.css({
26
26
  marginLeft: tokens.spacingL
27
27
  });
28
28
 
@@ -32,115 +32,94 @@ function isEmptyListValue(value) {
32
32
 
33
33
  function getOptions(field, id) {
34
34
  // Get first object that has a 'in' property
35
- var validations = get(field, ['items', 'validations'], []);
36
- var predefinedValues = validations.filter(function (validation) {
37
- return validation["in"];
38
- }).map(function (validation) {
39
- return validation["in"];
40
- });
41
- var firstPredefinedValues = predefinedValues.length > 0 ? predefinedValues[0] : [];
42
- return firstPredefinedValues.map(function (value, index) {
43
- return {
44
- // Append a random id to distinguish between checkboxes opened in two editors (e.g. slide-in)
45
- id: ['entity', field.id, field.locale, index, id].join('.'),
46
- value: value,
47
- label: value
48
- };
49
- });
35
+ const validations = get(field, ['items', 'validations'], []);
36
+ const predefinedValues = validations.filter(validation => validation.in).map(validation => validation.in);
37
+ const firstPredefinedValues = predefinedValues.length > 0 ? predefinedValues[0] : [];
38
+ return firstPredefinedValues.map((value, index) => ({
39
+ // Append a random id to distinguish between checkboxes opened in two editors (e.g. slide-in)
40
+ id: ['entity', field.id, field.locale, index, id].join('.'),
41
+ value,
42
+ label: value
43
+ }));
50
44
  }
51
45
 
52
- var getInvalidValues = function getInvalidValues(field, values, options) {
53
- var getValueFromOptions = options.map(function (item) {
54
- return item.value;
55
- });
56
- var invalidValues = values.filter(function (value) {
57
- return !getValueFromOptions.includes(value);
58
- }).map(function (value, index) {
59
- return {
60
- id: ['entity', field.id, field.locale, index, 'invalid'].join('.'),
61
- label: value,
62
- invalid: true,
63
- value: value
64
- };
65
- });
46
+ const getInvalidValues = (field, values, options) => {
47
+ const getValueFromOptions = options.map(item => item.value);
48
+ const invalidValues = values.filter(value => !getValueFromOptions.includes(value)).map((value, index) => ({
49
+ id: ['entity', field.id, field.locale, index, 'invalid'].join('.'),
50
+ label: value,
51
+ invalid: true,
52
+ value
53
+ }));
66
54
  return invalidValues;
67
55
  };
68
56
 
69
57
  function CheckboxEditor(props) {
70
- var _useState = React.useState(function () {
71
- return nanoid.nanoid(6);
72
- }),
73
- id = _useState[0];
74
-
75
- var field = props.field,
76
- locales = props.locales;
77
- var options = getOptions(field, id);
78
- var misconfigured = options.length === 0;
58
+ const [id] = React.useState(() => nanoid.nanoid(6));
59
+ const {
60
+ field,
61
+ locales
62
+ } = props;
63
+ const options = getOptions(field, id);
64
+ const misconfigured = options.length === 0;
79
65
 
80
66
  if (misconfigured) {
81
67
  return React.createElement(fieldEditorShared.PredefinedValuesError, null);
82
68
  }
83
69
 
84
- var direction = locales.direction[field.locale] || 'ltr';
70
+ const direction = locales.direction[field.locale] || 'ltr';
85
71
  return React.createElement(fieldEditorShared.FieldConnector, {
86
72
  throttle: 0,
87
73
  isEmptyValue: isEmptyListValue,
88
74
  field: field,
89
75
  isInitiallyDisabled: props.isInitiallyDisabled
90
- }, function (_ref) {
91
- var disabled = _ref.disabled,
92
- value = _ref.value,
93
- setValue = _ref.setValue;
94
- var values = value || [];
76
+ }, ({
77
+ disabled,
78
+ value,
79
+ setValue
80
+ }) => {
81
+ const values = value || [];
95
82
 
96
- var addValue = function addValue(value) {
97
- var newValues = [].concat(values.filter(function (item) {
98
- return item !== value;
99
- }), [value]);
83
+ const addValue = value => {
84
+ const newValues = [...values.filter(item => item !== value), value];
100
85
  setValue(newValues);
101
86
  };
102
87
 
103
- var removeValue = function removeValue(value) {
104
- var newValues = values.filter(function (item) {
105
- return item !== value;
106
- });
88
+ const removeValue = value => {
89
+ const newValues = values.filter(item => item !== value);
107
90
  setValue(newValues);
108
91
  };
109
92
 
110
- var invalidValues = getInvalidValues(field, values, options);
111
- var mergedOptions = [].concat(options, invalidValues);
93
+ const invalidValues = getInvalidValues(field, values, options);
94
+ const mergedOptions = [...options, ...invalidValues];
112
95
  return React.createElement(f36Components.Form, {
113
96
  testId: "checkbox-editor",
114
97
  className: emotion.cx(form, direction === 'rtl' ? rightToLeft : '')
115
- }, mergedOptions.map(function (item) {
116
- return React.createElement(f36Components.Box, {
117
- key: item.id,
118
- marginBottom: "spacingS"
119
- }, React.createElement(f36Components.Checkbox, {
120
- key: item.id,
121
- id: item.id,
122
- isChecked: values.includes(item.value),
123
- isDisabled: disabled,
124
- value: item.value,
125
- name: field.id + "." + field.locale,
126
- onChange: function onChange(e) {
127
- if (e.target.checked) {
128
- addValue(item.value);
129
- } else {
130
- removeValue(item.value);
131
- }
132
- }
133
- }, item.label), item.invalid && React.createElement(React.Fragment, null, React.createElement("span", {
134
- "data-test-id": "invalid-text",
135
- className: invalidText
136
- }, "(invalid)"), React.createElement(f36Components.TextLink, {
137
- as: "button",
138
- className: removeBtn,
139
- onClick: function onClick() {
140
- return removeValue(item.value);
98
+ }, mergedOptions.map(item => React.createElement(f36Components.Box, {
99
+ key: item.id,
100
+ marginBottom: "spacingS"
101
+ }, React.createElement(f36Components.Checkbox, {
102
+ key: item.id,
103
+ id: item.id,
104
+ isChecked: values.includes(item.value),
105
+ isDisabled: disabled,
106
+ value: item.value,
107
+ name: `${field.id}.${field.locale}`,
108
+ onChange: e => {
109
+ if (e.target.checked) {
110
+ addValue(item.value);
111
+ } else {
112
+ removeValue(item.value);
141
113
  }
142
- }, "Remove")));
143
- }));
114
+ }
115
+ }, item.label), item.invalid && React.createElement(React.Fragment, null, React.createElement("span", {
116
+ "data-test-id": "invalid-text",
117
+ className: invalidText
118
+ }, "(invalid)"), React.createElement(f36Components.TextLink, {
119
+ as: "button",
120
+ className: removeBtn,
121
+ onClick: () => removeValue(item.value)
122
+ }, "Remove")))));
144
123
  });
145
124
  }
146
125
  CheckboxEditor.defaultProps = {
@@ -1 +1 @@
1
- {"version":3,"file":"field-editor-checkbox.cjs.development.js","sources":["../src/styles.ts","../src/CheckboxEditor.tsx"],"sourcesContent":["import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const form = css({\n marginTop: tokens.spacingS,\n});\n\nexport const rightToLeft = css({\n direction: 'rtl',\n});\n\nexport const invalidText = css({\n color: tokens.red500,\n marginLeft: tokens.spacing2Xs,\n});\n\nexport const removeBtn = css({\n marginLeft: tokens.spacingL,\n});\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { cx } from 'emotion';\nimport get from 'lodash/get';\nimport {\n FieldAPI,\n FieldConnector,\n LocalesAPI,\n PredefinedValuesError,\n} from '@contentful/field-editor-shared';\nimport { Checkbox, Box } from '@contentful/f36-components';\nimport * as styles from './styles';\nimport { nanoid } from 'nanoid';\n\nimport { TextLink, Form } from '@contentful/f36-components';\n\nexport interface CheckboxEditorProps {\n /**\n * is the field disabled initially\n */\n isInitiallyDisabled: boolean;\n /**\n * sdk.field\n */\n field: FieldAPI;\n /**\n * sdk.locales\n */\n locales: LocalesAPI;\n}\n\ntype ListValue = string[];\n\ntype CheckboxOption = { id: string; value: string; label: string; invalid?: boolean };\n\nfunction isEmptyListValue(value: ListValue | null) {\n return value === null || value.length === 0;\n}\n\nfunction getOptions(field: FieldAPI, id: string): CheckboxOption[] {\n // Get first object that has a 'in' property\n const validations = get(field, ['items', 'validations'], []) as Record<\n string,\n { in?: string[] }\n >[];\n\n const predefinedValues = validations\n .filter((validation) => validation.in)\n .map((validation) => validation.in);\n\n const firstPredefinedValues = (\n predefinedValues.length > 0 ? predefinedValues[0] : []\n ) as string[];\n\n return firstPredefinedValues.map((value: string, index) => ({\n // Append a random id to distinguish between checkboxes opened in two editors (e.g. slide-in)\n id: ['entity', field.id, field.locale, index, id].join('.'),\n value,\n label: value,\n }));\n}\n\nconst getInvalidValues = (\n field: FieldAPI,\n values: string[],\n options: CheckboxOption[]\n): CheckboxOption[] => {\n const getValueFromOptions = (options as CheckboxOption[]).map((item) => item.value);\n const invalidValues = values\n .filter((value) => !getValueFromOptions.includes(value))\n .map((value, index) => ({\n id: ['entity', field.id, field.locale, index, 'invalid'].join('.'),\n label: value,\n invalid: true,\n value,\n }));\n\n return invalidValues;\n};\n\nexport function CheckboxEditor(props: CheckboxEditorProps) {\n const [id] = useState(() => nanoid(6));\n const { field, locales } = props;\n\n const options = getOptions(field, id);\n const misconfigured = options.length === 0;\n\n if (misconfigured) {\n return <PredefinedValuesError />;\n }\n\n const direction = locales.direction[field.locale] || 'ltr';\n\n return (\n <FieldConnector<ListValue>\n throttle={0}\n isEmptyValue={isEmptyListValue}\n field={field}\n isInitiallyDisabled={props.isInitiallyDisabled}>\n {({ disabled, value, setValue }) => {\n const values = value || [];\n\n const addValue = (value: string) => {\n const newValues = [...values.filter((item) => item !== value), value];\n setValue(newValues);\n };\n\n const removeValue = (value: string) => {\n const newValues = values.filter((item) => item !== value);\n setValue(newValues);\n };\n\n const invalidValues = getInvalidValues(field, values, options);\n const mergedOptions = [...options, ...invalidValues];\n\n return (\n <Form\n testId=\"checkbox-editor\"\n className={cx(styles.form, direction === 'rtl' ? styles.rightToLeft : '')}>\n {mergedOptions.map((item) => (\n <Box key={item.id} marginBottom=\"spacingS\">\n <Checkbox\n key={item.id}\n id={item.id}\n isChecked={values.includes(item.value)}\n isDisabled={disabled}\n value={item.value}\n name={`${field.id}.${field.locale}`}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.checked) {\n addValue(item.value);\n } else {\n removeValue(item.value);\n }\n }}>\n {item.label}\n </Checkbox>\n {item.invalid && (\n <>\n <span data-test-id=\"invalid-text\" className={styles.invalidText}>\n (invalid)\n </span>\n <TextLink\n as=\"button\"\n className={styles.removeBtn}\n onClick={() => removeValue(item.value)}>\n Remove\n </TextLink>\n </>\n )}\n </Box>\n ))}\n </Form>\n );\n }}\n </FieldConnector>\n );\n}\n\nCheckboxEditor.defaultProps = {\n isInitiallyDisabled: true,\n};\n"],"names":["form","css","marginTop","tokens","spacingS","rightToLeft","direction","invalidText","color","red500","marginLeft","spacing2Xs","removeBtn","spacingL","isEmptyListValue","value","length","getOptions","field","id","validations","get","predefinedValues","filter","validation","map","firstPredefinedValues","index","locale","join","label","getInvalidValues","values","options","getValueFromOptions","item","invalidValues","includes","invalid","CheckboxEditor","props","useState","nanoid","locales","misconfigured","React","PredefinedValuesError","FieldConnector","throttle","isEmptyValue","isInitiallyDisabled","disabled","setValue","addValue","newValues","removeValue","mergedOptions","Form","testId","className","cx","styles","Box","key","marginBottom","Checkbox","isChecked","isDisabled","name","onChange","e","target","checked","TextLink","as","onClick","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"field-editor-checkbox.cjs.development.js","sources":["../src/styles.ts","../src/CheckboxEditor.tsx"],"sourcesContent":["import tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\n\nexport const form = css({\n marginTop: tokens.spacingS,\n});\n\nexport const rightToLeft = css({\n direction: 'rtl',\n});\n\nexport const invalidText = css({\n color: tokens.red500,\n marginLeft: tokens.spacing2Xs,\n});\n\nexport const removeBtn = css({\n marginLeft: tokens.spacingL,\n});\n","import * as React from 'react';\nimport { useState } from 'react';\n\nimport { Checkbox, Box } from '@contentful/f36-components';\nimport { TextLink, Form } from '@contentful/f36-components';\nimport {\n FieldAPI,\n FieldConnector,\n LocalesAPI,\n PredefinedValuesError,\n} from '@contentful/field-editor-shared';\nimport { cx } from 'emotion';\nimport get from 'lodash/get';\nimport { nanoid } from 'nanoid';\n\nimport * as styles from './styles';\n\n\nexport interface CheckboxEditorProps {\n /**\n * is the field disabled initially\n */\n isInitiallyDisabled: boolean;\n /**\n * sdk.field\n */\n field: FieldAPI;\n /**\n * sdk.locales\n */\n locales: LocalesAPI;\n}\n\ntype ListValue = string[];\n\ntype CheckboxOption = { id: string; value: string; label: string; invalid?: boolean };\n\nfunction isEmptyListValue(value: ListValue | null) {\n return value === null || value.length === 0;\n}\n\nfunction getOptions(field: FieldAPI, id: string): CheckboxOption[] {\n // Get first object that has a 'in' property\n const validations = get(field, ['items', 'validations'], []) as Record<\n string,\n { in?: string[] }\n >[];\n\n const predefinedValues = validations\n .filter((validation) => validation.in)\n .map((validation) => validation.in);\n\n const firstPredefinedValues = (\n predefinedValues.length > 0 ? predefinedValues[0] : []\n ) as string[];\n\n return firstPredefinedValues.map((value: string, index) => ({\n // Append a random id to distinguish between checkboxes opened in two editors (e.g. slide-in)\n id: ['entity', field.id, field.locale, index, id].join('.'),\n value,\n label: value,\n }));\n}\n\nconst getInvalidValues = (\n field: FieldAPI,\n values: string[],\n options: CheckboxOption[]\n): CheckboxOption[] => {\n const getValueFromOptions = (options as CheckboxOption[]).map((item) => item.value);\n const invalidValues = values\n .filter((value) => !getValueFromOptions.includes(value))\n .map((value, index) => ({\n id: ['entity', field.id, field.locale, index, 'invalid'].join('.'),\n label: value,\n invalid: true,\n value,\n }));\n\n return invalidValues;\n};\n\nexport function CheckboxEditor(props: CheckboxEditorProps) {\n const [id] = useState(() => nanoid(6));\n const { field, locales } = props;\n\n const options = getOptions(field, id);\n const misconfigured = options.length === 0;\n\n if (misconfigured) {\n return <PredefinedValuesError />;\n }\n\n const direction = locales.direction[field.locale] || 'ltr';\n\n return (\n <FieldConnector<ListValue>\n throttle={0}\n isEmptyValue={isEmptyListValue}\n field={field}\n isInitiallyDisabled={props.isInitiallyDisabled}>\n {({ disabled, value, setValue }) => {\n const values = value || [];\n\n const addValue = (value: string) => {\n const newValues = [...values.filter((item) => item !== value), value];\n setValue(newValues);\n };\n\n const removeValue = (value: string) => {\n const newValues = values.filter((item) => item !== value);\n setValue(newValues);\n };\n\n const invalidValues = getInvalidValues(field, values, options);\n const mergedOptions = [...options, ...invalidValues];\n\n return (\n <Form\n testId=\"checkbox-editor\"\n className={cx(styles.form, direction === 'rtl' ? styles.rightToLeft : '')}>\n {mergedOptions.map((item) => (\n <Box key={item.id} marginBottom=\"spacingS\">\n <Checkbox\n key={item.id}\n id={item.id}\n isChecked={values.includes(item.value)}\n isDisabled={disabled}\n value={item.value}\n name={`${field.id}.${field.locale}`}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.checked) {\n addValue(item.value);\n } else {\n removeValue(item.value);\n }\n }}>\n {item.label}\n </Checkbox>\n {item.invalid && (\n <>\n <span data-test-id=\"invalid-text\" className={styles.invalidText}>\n (invalid)\n </span>\n <TextLink\n as=\"button\"\n className={styles.removeBtn}\n onClick={() => removeValue(item.value)}>\n Remove\n </TextLink>\n </>\n )}\n </Box>\n ))}\n </Form>\n );\n }}\n </FieldConnector>\n );\n}\n\nCheckboxEditor.defaultProps = {\n isInitiallyDisabled: true,\n};\n"],"names":["form","css","marginTop","tokens","spacingS","rightToLeft","direction","invalidText","color","red500","marginLeft","spacing2Xs","removeBtn","spacingL","isEmptyListValue","value","length","getOptions","field","id","validations","get","predefinedValues","filter","validation","in","map","firstPredefinedValues","index","locale","join","label","getInvalidValues","values","options","getValueFromOptions","item","invalidValues","includes","invalid","CheckboxEditor","props","useState","nanoid","locales","misconfigured","React","PredefinedValuesError","FieldConnector","throttle","isEmptyValue","isInitiallyDisabled","disabled","setValue","addValue","newValues","removeValue","mergedOptions","Form","testId","className","cx","styles","Box","key","marginBottom","Checkbox","isChecked","isDisabled","name","onChange","e","target","checked","TextLink","as","onClick","defaultProps"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var n=require("react"),t=require("emotion"),i=e(require("lodash/get")),r=require("@contentful/field-editor-shared"),a=require("@contentful/f36-components"),l=e(require("@contentful/f36-tokens")),u=require("nanoid"),c=t.css({marginTop:l.spacingS}),o=t.css({direction:"rtl"}),s=t.css({color:l.red500,marginLeft:l.spacing2Xs}),d=t.css({marginLeft:l.spacingL});function f(e){return null===e||0===e.length}function m(e){var l=n.useState((function(){return u.nanoid(6)})),m=e.field,v=e.locales,p=function(e,n){var t=i(e,["items","validations"],[]).filter((function(e){return e.in})).map((function(e){return e.in}));return(t.length>0?t[0]:[]).map((function(t,i){return{id:["entity",e.id,e.locale,i,n].join("."),value:t,label:t}}))}(m,l[0]);if(0===p.length)return n.createElement(r.PredefinedValuesError,null);var g=v.direction[m.locale]||"ltr";return n.createElement(r.FieldConnector,{throttle:0,isEmptyValue:f,field:m,isInitiallyDisabled:e.isInitiallyDisabled},(function(e){var i=e.disabled,r=e.setValue,l=e.value||[],u=function(e){var n=l.filter((function(n){return n!==e}));r(n)},f=function(e,n,t){var i=t.map((function(e){return e.value}));return n.filter((function(e){return!i.includes(e)})).map((function(n,t){return{id:["entity",e.id,e.locale,t,"invalid"].join("."),label:n,invalid:!0,value:n}}))}(m,l,p),v=[].concat(p,f);return n.createElement(a.Form,{testId:"checkbox-editor",className:t.cx(c,"rtl"===g?o:"")},v.map((function(e){return n.createElement(a.Box,{key:e.id,marginBottom:"spacingS"},n.createElement(a.Checkbox,{key:e.id,id:e.id,isChecked:l.includes(e.value),isDisabled:i,value:e.value,name:m.id+"."+m.locale,onChange:function(n){var t,i;n.target.checked?(t=e.value,i=[].concat(l.filter((function(e){return e!==t})),[t]),r(i)):u(e.value)}},e.label),e.invalid&&n.createElement(n.Fragment,null,n.createElement("span",{"data-test-id":"invalid-text",className:s},"(invalid)"),n.createElement(a.TextLink,{as:"button",className:d,onClick:function(){return u(e.value)}},"Remove")))})))}))}m.defaultProps={isInitiallyDisabled:!0},exports.CheckboxEditor=m;
1
+ "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("react"),i=require("@contentful/f36-components"),l=require("@contentful/field-editor-shared"),n=require("emotion"),a=e(require("lodash/get")),r=require("nanoid"),o=e(require("@contentful/f36-tokens"));const s=n.css({marginTop:o.spacingS}),c=n.css({direction:"rtl"}),d=n.css({color:o.red500,marginLeft:o.spacing2Xs}),u=n.css({marginLeft:o.spacingL});function m(e){return null===e||0===e.length}function f(e){const[o]=t.useState(()=>r.nanoid(6)),{field:f,locales:v}=e,p=function(e,t){const i=a(e,["items","validations"],[]).filter(e=>e.in).map(e=>e.in);return(i.length>0?i[0]:[]).map((i,l)=>({id:["entity",e.id,e.locale,l,t].join("."),value:i,label:i}))}(f,o);if(0===p.length)return t.createElement(l.PredefinedValuesError,null);const g=v.direction[f.locale]||"ltr";return t.createElement(l.FieldConnector,{throttle:0,isEmptyValue:m,field:f,isInitiallyDisabled:e.isInitiallyDisabled},({disabled:e,value:l,setValue:a})=>{const r=l||[],o=e=>{const t=r.filter(t=>t!==e);a(t)},m=((e,t,i)=>{const l=i.map(e=>e.value);return t.filter(e=>!l.includes(e)).map((t,i)=>({id:["entity",e.id,e.locale,i,"invalid"].join("."),label:t,invalid:!0,value:t}))})(f,r,p),v=[...p,...m];return t.createElement(i.Form,{testId:"checkbox-editor",className:n.cx(s,"rtl"===g?c:"")},v.map(l=>t.createElement(i.Box,{key:l.id,marginBottom:"spacingS"},t.createElement(i.Checkbox,{key:l.id,id:l.id,isChecked:r.includes(l.value),isDisabled:e,value:l.value,name:`${f.id}.${f.locale}`,onChange:e=>{e.target.checked?(e=>{const t=[...r.filter(t=>t!==e),e];a(t)})(l.value):o(l.value)}},l.label),l.invalid&&t.createElement(t.Fragment,null,t.createElement("span",{"data-test-id":"invalid-text",className:d},"(invalid)"),t.createElement(i.TextLink,{as:"button",className:u,onClick:()=>o(l.value)},"Remove")))))})}f.defaultProps={isInitiallyDisabled:!0},exports.CheckboxEditor=f;
2
2
  //# sourceMappingURL=field-editor-checkbox.cjs.production.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"field-editor-checkbox.cjs.production.min.js","sources":["../src/styles.ts","../src/CheckboxEditor.tsx"],"sourcesContent":["import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const form = css({\n marginTop: tokens.spacingS,\n});\n\nexport const rightToLeft = css({\n direction: 'rtl',\n});\n\nexport const invalidText = css({\n color: tokens.red500,\n marginLeft: tokens.spacing2Xs,\n});\n\nexport const removeBtn = css({\n marginLeft: tokens.spacingL,\n});\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { cx } from 'emotion';\nimport get from 'lodash/get';\nimport {\n FieldAPI,\n FieldConnector,\n LocalesAPI,\n PredefinedValuesError,\n} from '@contentful/field-editor-shared';\nimport { Checkbox, Box } from '@contentful/f36-components';\nimport * as styles from './styles';\nimport { nanoid } from 'nanoid';\n\nimport { TextLink, Form } from '@contentful/f36-components';\n\nexport interface CheckboxEditorProps {\n /**\n * is the field disabled initially\n */\n isInitiallyDisabled: boolean;\n /**\n * sdk.field\n */\n field: FieldAPI;\n /**\n * sdk.locales\n */\n locales: LocalesAPI;\n}\n\ntype ListValue = string[];\n\ntype CheckboxOption = { id: string; value: string; label: string; invalid?: boolean };\n\nfunction isEmptyListValue(value: ListValue | null) {\n return value === null || value.length === 0;\n}\n\nfunction getOptions(field: FieldAPI, id: string): CheckboxOption[] {\n // Get first object that has a 'in' property\n const validations = get(field, ['items', 'validations'], []) as Record<\n string,\n { in?: string[] }\n >[];\n\n const predefinedValues = validations\n .filter((validation) => validation.in)\n .map((validation) => validation.in);\n\n const firstPredefinedValues = (\n predefinedValues.length > 0 ? predefinedValues[0] : []\n ) as string[];\n\n return firstPredefinedValues.map((value: string, index) => ({\n // Append a random id to distinguish between checkboxes opened in two editors (e.g. slide-in)\n id: ['entity', field.id, field.locale, index, id].join('.'),\n value,\n label: value,\n }));\n}\n\nconst getInvalidValues = (\n field: FieldAPI,\n values: string[],\n options: CheckboxOption[]\n): CheckboxOption[] => {\n const getValueFromOptions = (options as CheckboxOption[]).map((item) => item.value);\n const invalidValues = values\n .filter((value) => !getValueFromOptions.includes(value))\n .map((value, index) => ({\n id: ['entity', field.id, field.locale, index, 'invalid'].join('.'),\n label: value,\n invalid: true,\n value,\n }));\n\n return invalidValues;\n};\n\nexport function CheckboxEditor(props: CheckboxEditorProps) {\n const [id] = useState(() => nanoid(6));\n const { field, locales } = props;\n\n const options = getOptions(field, id);\n const misconfigured = options.length === 0;\n\n if (misconfigured) {\n return <PredefinedValuesError />;\n }\n\n const direction = locales.direction[field.locale] || 'ltr';\n\n return (\n <FieldConnector<ListValue>\n throttle={0}\n isEmptyValue={isEmptyListValue}\n field={field}\n isInitiallyDisabled={props.isInitiallyDisabled}>\n {({ disabled, value, setValue }) => {\n const values = value || [];\n\n const addValue = (value: string) => {\n const newValues = [...values.filter((item) => item !== value), value];\n setValue(newValues);\n };\n\n const removeValue = (value: string) => {\n const newValues = values.filter((item) => item !== value);\n setValue(newValues);\n };\n\n const invalidValues = getInvalidValues(field, values, options);\n const mergedOptions = [...options, ...invalidValues];\n\n return (\n <Form\n testId=\"checkbox-editor\"\n className={cx(styles.form, direction === 'rtl' ? styles.rightToLeft : '')}>\n {mergedOptions.map((item) => (\n <Box key={item.id} marginBottom=\"spacingS\">\n <Checkbox\n key={item.id}\n id={item.id}\n isChecked={values.includes(item.value)}\n isDisabled={disabled}\n value={item.value}\n name={`${field.id}.${field.locale}`}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.checked) {\n addValue(item.value);\n } else {\n removeValue(item.value);\n }\n }}>\n {item.label}\n </Checkbox>\n {item.invalid && (\n <>\n <span data-test-id=\"invalid-text\" className={styles.invalidText}>\n (invalid)\n </span>\n <TextLink\n as=\"button\"\n className={styles.removeBtn}\n onClick={() => removeValue(item.value)}>\n Remove\n </TextLink>\n </>\n )}\n </Box>\n ))}\n </Form>\n );\n }}\n </FieldConnector>\n );\n}\n\nCheckboxEditor.defaultProps = {\n isInitiallyDisabled: true,\n};\n"],"names":["form","css","marginTop","tokens","spacingS","rightToLeft","direction","invalidText","color","red500","marginLeft","spacing2Xs","removeBtn","spacingL","isEmptyListValue","value","length","CheckboxEditor","props","useState","nanoid","field","locales","options","id","predefinedValues","get","filter","validation","map","index","locale","join","label","getOptions","React","PredefinedValuesError","FieldConnector","throttle","isEmptyValue","isInitiallyDisabled","disabled","setValue","values","removeValue","newValues","item","invalidValues","getValueFromOptions","includes","invalid","getInvalidValues","mergedOptions","Form","testId","className","cx","styles","Box","key","marginBottom","Checkbox","isChecked","isDisabled","name","onChange","e","target","checked","TextLink","as","onClick","defaultProps"],"mappings":"iWAGaA,EAAOC,MAAI,CACtBC,UAAWC,EAAOC,WAGPC,EAAcJ,MAAI,CAC7BK,UAAW,QAGAC,EAAcN,MAAI,CAC7BO,MAAOL,EAAOM,OACdC,WAAYP,EAAOQ,aAGRC,EAAYX,MAAI,CAC3BS,WAAYP,EAAOU,WCkBrB,SAASC,EAAiBC,UACP,OAAVA,GAAmC,IAAjBA,EAAMC,gBA4CjBC,EAAeC,SAChBC,YAAS,kBAAMC,SAAO,MAC3BC,EAAmBH,EAAnBG,MAAOC,EAAYJ,EAAZI,QAETC,EA7CR,SAAoBF,EAAiBG,OAO7BC,EALcC,EAAIL,EAAO,CAAC,QAAS,eAAgB,IAMtDM,QAAO,SAACC,UAAeA,QACvBC,KAAI,SAACD,UAAeA,eAGrBH,EAAiBT,OAAS,EAAIS,EAAiB,GAAK,IAGzBI,KAAI,SAACd,EAAee,SAAW,CAE1DN,GAAI,CAAC,SAAUH,EAAMG,GAAIH,EAAMU,OAAQD,EAAON,GAAIQ,KAAK,KACvDjB,MAAAA,EACAkB,MAAOlB,MA0BOmB,CAAWb,WACc,IAAnBE,EAAQP,cAGrBmB,gBAACC,kCAGJ9B,EAAYgB,EAAQhB,UAAUe,EAAMU,SAAW,aAGnDI,gBAACE,kBACCC,SAAU,EACVC,aAAczB,EACdO,MAAOA,EACPmB,oBAAqBtB,EAAMsB,sBAC1B,gBAAGC,IAAAA,SAAiBC,IAAAA,SACbC,IADM5B,OACY,GAOlB6B,EAAc,SAAC7B,OACb8B,EAAYF,EAAOhB,QAAO,SAACmB,UAASA,IAAS/B,KACnD2B,EAASG,IAGLE,EAlDW,SACvB1B,EACAsB,EACApB,OAEMyB,EAAuBzB,EAA6BM,KAAI,SAACiB,UAASA,EAAK/B,gBACvD4B,EACnBhB,QAAO,SAACZ,UAAWiC,EAAoBC,SAASlC,MAChDc,KAAI,SAACd,EAAOe,SAAW,CACtBN,GAAI,CAAC,SAAUH,EAAMG,GAAIH,EAAMU,OAAQD,EAAO,WAAWE,KAAK,KAC9DC,MAAOlB,EACPmC,SAAS,EACTnC,MAAAA,MAsCwBoC,CAAiB9B,EAAOsB,EAAQpB,GAChD6B,YAAoB7B,EAAYwB,UAGpCZ,gBAACkB,QACCC,OAAO,kBACPC,UAAWC,KAAGC,EAA2B,QAAdnD,EAAsBmD,EAAqB,KACrEL,EAAcvB,KAAI,SAACiB,UAClBX,gBAACuB,OAAIC,IAAKb,EAAKtB,GAAIoC,aAAa,YAC9BzB,gBAAC0B,YACCF,IAAKb,EAAKtB,GACVA,GAAIsB,EAAKtB,GACTsC,UAAWnB,EAAOM,SAASH,EAAK/B,OAChCgD,WAAYtB,EACZ1B,MAAO+B,EAAK/B,MACZiD,KAAS3C,EAAMG,OAAMH,EAAMU,OAC3BkC,SAAU,SAACC,GA1BJ,IAACnD,EACV8B,EA0BQqB,EAAEC,OAAOC,SA3BPrD,EA4BK+B,EAAK/B,MA3BpB8B,YAAgBF,EAAOhB,QAAO,SAACmB,UAASA,IAAS/B,MAAQA,IAC/D2B,EAASG,IA4BGD,EAAYE,EAAK/B,SAGpB+B,EAAKb,OAEPa,EAAKI,SACJf,gCACEA,uCAAmB,eAAeoB,UAAWE,gBAG7CtB,gBAACkC,YACCC,GAAG,SACHf,UAAWE,EACXc,QAAS,kBAAM3B,EAAYE,EAAK/B,4BActDE,EAAeuD,aAAe,CAC5BhC,qBAAqB"}
1
+ {"version":3,"file":"field-editor-checkbox.cjs.production.min.js","sources":["../src/styles.ts","../src/CheckboxEditor.tsx"],"sourcesContent":["import tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\n\nexport const form = css({\n marginTop: tokens.spacingS,\n});\n\nexport const rightToLeft = css({\n direction: 'rtl',\n});\n\nexport const invalidText = css({\n color: tokens.red500,\n marginLeft: tokens.spacing2Xs,\n});\n\nexport const removeBtn = css({\n marginLeft: tokens.spacingL,\n});\n","import * as React from 'react';\nimport { useState } from 'react';\n\nimport { Checkbox, Box } from '@contentful/f36-components';\nimport { TextLink, Form } from '@contentful/f36-components';\nimport {\n FieldAPI,\n FieldConnector,\n LocalesAPI,\n PredefinedValuesError,\n} from '@contentful/field-editor-shared';\nimport { cx } from 'emotion';\nimport get from 'lodash/get';\nimport { nanoid } from 'nanoid';\n\nimport * as styles from './styles';\n\n\nexport interface CheckboxEditorProps {\n /**\n * is the field disabled initially\n */\n isInitiallyDisabled: boolean;\n /**\n * sdk.field\n */\n field: FieldAPI;\n /**\n * sdk.locales\n */\n locales: LocalesAPI;\n}\n\ntype ListValue = string[];\n\ntype CheckboxOption = { id: string; value: string; label: string; invalid?: boolean };\n\nfunction isEmptyListValue(value: ListValue | null) {\n return value === null || value.length === 0;\n}\n\nfunction getOptions(field: FieldAPI, id: string): CheckboxOption[] {\n // Get first object that has a 'in' property\n const validations = get(field, ['items', 'validations'], []) as Record<\n string,\n { in?: string[] }\n >[];\n\n const predefinedValues = validations\n .filter((validation) => validation.in)\n .map((validation) => validation.in);\n\n const firstPredefinedValues = (\n predefinedValues.length > 0 ? predefinedValues[0] : []\n ) as string[];\n\n return firstPredefinedValues.map((value: string, index) => ({\n // Append a random id to distinguish between checkboxes opened in two editors (e.g. slide-in)\n id: ['entity', field.id, field.locale, index, id].join('.'),\n value,\n label: value,\n }));\n}\n\nconst getInvalidValues = (\n field: FieldAPI,\n values: string[],\n options: CheckboxOption[]\n): CheckboxOption[] => {\n const getValueFromOptions = (options as CheckboxOption[]).map((item) => item.value);\n const invalidValues = values\n .filter((value) => !getValueFromOptions.includes(value))\n .map((value, index) => ({\n id: ['entity', field.id, field.locale, index, 'invalid'].join('.'),\n label: value,\n invalid: true,\n value,\n }));\n\n return invalidValues;\n};\n\nexport function CheckboxEditor(props: CheckboxEditorProps) {\n const [id] = useState(() => nanoid(6));\n const { field, locales } = props;\n\n const options = getOptions(field, id);\n const misconfigured = options.length === 0;\n\n if (misconfigured) {\n return <PredefinedValuesError />;\n }\n\n const direction = locales.direction[field.locale] || 'ltr';\n\n return (\n <FieldConnector<ListValue>\n throttle={0}\n isEmptyValue={isEmptyListValue}\n field={field}\n isInitiallyDisabled={props.isInitiallyDisabled}>\n {({ disabled, value, setValue }) => {\n const values = value || [];\n\n const addValue = (value: string) => {\n const newValues = [...values.filter((item) => item !== value), value];\n setValue(newValues);\n };\n\n const removeValue = (value: string) => {\n const newValues = values.filter((item) => item !== value);\n setValue(newValues);\n };\n\n const invalidValues = getInvalidValues(field, values, options);\n const mergedOptions = [...options, ...invalidValues];\n\n return (\n <Form\n testId=\"checkbox-editor\"\n className={cx(styles.form, direction === 'rtl' ? styles.rightToLeft : '')}>\n {mergedOptions.map((item) => (\n <Box key={item.id} marginBottom=\"spacingS\">\n <Checkbox\n key={item.id}\n id={item.id}\n isChecked={values.includes(item.value)}\n isDisabled={disabled}\n value={item.value}\n name={`${field.id}.${field.locale}`}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.checked) {\n addValue(item.value);\n } else {\n removeValue(item.value);\n }\n }}>\n {item.label}\n </Checkbox>\n {item.invalid && (\n <>\n <span data-test-id=\"invalid-text\" className={styles.invalidText}>\n (invalid)\n </span>\n <TextLink\n as=\"button\"\n className={styles.removeBtn}\n onClick={() => removeValue(item.value)}>\n Remove\n </TextLink>\n </>\n )}\n </Box>\n ))}\n </Form>\n );\n }}\n </FieldConnector>\n );\n}\n\nCheckboxEditor.defaultProps = {\n isInitiallyDisabled: true,\n};\n"],"names":["form","css","marginTop","tokens","spacingS","rightToLeft","direction","invalidText","color","red500","marginLeft","spacing2Xs","removeBtn","spacingL","isEmptyListValue","value","length","CheckboxEditor","props","id","useState","nanoid","field","locales","options","predefinedValues","get","filter","validation","in","map","index","locale","join","label","getOptions","React","PredefinedValuesError","FieldConnector","throttle","isEmptyValue","isInitiallyDisabled","disabled","setValue","values","removeValue","newValues","item","invalidValues","getValueFromOptions","includes","invalid","getInvalidValues","mergedOptions","Form","testId","className","cx","styles","Box","key","marginBottom","Checkbox","isChecked","isDisabled","name","onChange","e","target","checked","addValue","TextLink","as","onClick","defaultProps"],"mappings":"iWAGO,MAAMA,EAAOC,MAAI,CACtBC,UAAWC,EAAOC,WAGPC,EAAcJ,MAAI,CAC7BK,UAAW,QAGAC,EAAcN,MAAI,CAC7BO,MAAOL,EAAOM,OACdC,WAAYP,EAAOQ,aAGRC,EAAYX,MAAI,CAC3BS,WAAYP,EAAOU,WCoBrB,SAASC,EAAiBC,UACP,OAAVA,GAAmC,IAAjBA,EAAMC,gBA4CjBC,EAAeC,SACtBC,GAAMC,WAAS,IAAMC,SAAO,KAC7BC,MAAEA,EAAFC,QAASA,GAAYL,EAErBM,EA7CR,SAAoBF,EAAiBH,SAO7BM,EALcC,EAAIJ,EAAO,CAAC,QAAS,eAAgB,IAMtDK,OAAQC,GAAeA,EAAWC,IAClCC,IAAKF,GAAeA,EAAWC,WAGhCJ,EAAiBT,OAAS,EAAIS,EAAiB,GAAK,IAGzBK,IAAI,CAACf,EAAegB,MAE/CZ,GAAI,CAAC,SAAUG,EAAMH,GAAIG,EAAMU,OAAQD,EAAOZ,GAAIc,KAAK,KACvDlB,MAAAA,EACAmB,MAAOnB,KA0BOoB,CAAWb,EAAOH,MACO,IAAnBK,EAAQR,cAGrBoB,gBAACC,oCAGJ/B,EAAYiB,EAAQjB,UAAUgB,EAAMU,SAAW,aAGnDI,gBAACE,kBACCC,SAAU,EACVC,aAAc1B,EACdQ,MAAOA,EACPmB,oBAAqBvB,EAAMuB,qBAC1B,EAAGC,SAAAA,EAAU3B,MAAAA,EAAO4B,SAAAA,YACbC,EAAS7B,GAAS,GAOlB8B,EAAe9B,UACb+B,EAAYF,EAAOjB,OAAQoB,GAASA,IAAShC,GACnD4B,EAASG,IAGLE,EAlDW,EACvB1B,EACAsB,EACApB,WAEMyB,EAAuBzB,EAA6BM,IAAKiB,GAASA,EAAKhC,cACvD6B,EACnBjB,OAAQZ,IAAWkC,EAAoBC,SAASnC,IAChDe,IAAI,CAACf,EAAOgB,MACXZ,GAAI,CAAC,SAAUG,EAAMH,GAAIG,EAAMU,OAAQD,EAAO,WAAWE,KAAK,KAC9DC,MAAOnB,EACPoC,SAAS,EACTpC,MAAAA,MAsCwBqC,CAAiB9B,EAAOsB,EAAQpB,GAChD6B,EAAgB,IAAI7B,KAAYwB,UAGpCZ,gBAACkB,QACCC,OAAO,kBACPC,UAAWC,KAAGC,EAA2B,QAAdpD,EAAsBoD,EAAqB,KACrEL,EAAcvB,IAAKiB,GAClBX,gBAACuB,OAAIC,IAAKb,EAAK5B,GAAI0C,aAAa,YAC9BzB,gBAAC0B,YACCF,IAAKb,EAAK5B,GACVA,GAAI4B,EAAK5B,GACT4C,UAAWnB,EAAOM,SAASH,EAAKhC,OAChCiD,WAAYtB,EACZ3B,MAAOgC,EAAKhC,MACZkD,QAAS3C,EAAMH,MAAMG,EAAMU,SAC3BkC,SAAWC,IACLA,EAAEC,OAAOC,QA3BPtD,CAAAA,UACV+B,EAAY,IAAIF,EAAOjB,OAAQoB,GAASA,IAAShC,GAAQA,GAC/D4B,EAASG,IA0BGwB,CAASvB,EAAKhC,OAEd8B,EAAYE,EAAKhC,SAGpBgC,EAAKb,OAEPa,EAAKI,SACJf,gCACEA,uCAAmB,eAAeoB,UAAWE,gBAG7CtB,gBAACmC,YACCC,GAAG,SACHhB,UAAWE,EACXe,QAAS,IAAM5B,EAAYE,EAAKhC,wBActDE,EAAeyD,aAAe,CAC5BjC,qBAAqB"}
@@ -1,22 +1,22 @@
1
1
  import { useState, createElement, Fragment } from 'react';
2
+ import { Form, Box, Checkbox, TextLink } from '@contentful/f36-components';
3
+ import { PredefinedValuesError, FieldConnector } from '@contentful/field-editor-shared';
2
4
  import { css, cx } from 'emotion';
3
5
  import get from 'lodash-es/get';
4
- import { PredefinedValuesError, FieldConnector } from '@contentful/field-editor-shared';
5
- import { Form, Box, Checkbox, TextLink } from '@contentful/f36-components';
6
- import tokens from '@contentful/f36-tokens';
7
6
  import { nanoid } from 'nanoid';
7
+ import tokens from '@contentful/f36-tokens';
8
8
 
9
- var form = /*#__PURE__*/css({
9
+ const form = /*#__PURE__*/css({
10
10
  marginTop: tokens.spacingS
11
11
  });
12
- var rightToLeft = /*#__PURE__*/css({
12
+ const rightToLeft = /*#__PURE__*/css({
13
13
  direction: 'rtl'
14
14
  });
15
- var invalidText = /*#__PURE__*/css({
15
+ const invalidText = /*#__PURE__*/css({
16
16
  color: tokens.red500,
17
17
  marginLeft: tokens.spacing2Xs
18
18
  });
19
- var removeBtn = /*#__PURE__*/css({
19
+ const removeBtn = /*#__PURE__*/css({
20
20
  marginLeft: tokens.spacingL
21
21
  });
22
22
 
@@ -26,115 +26,94 @@ function isEmptyListValue(value) {
26
26
 
27
27
  function getOptions(field, id) {
28
28
  // Get first object that has a 'in' property
29
- var validations = get(field, ['items', 'validations'], []);
30
- var predefinedValues = validations.filter(function (validation) {
31
- return validation["in"];
32
- }).map(function (validation) {
33
- return validation["in"];
34
- });
35
- var firstPredefinedValues = predefinedValues.length > 0 ? predefinedValues[0] : [];
36
- return firstPredefinedValues.map(function (value, index) {
37
- return {
38
- // Append a random id to distinguish between checkboxes opened in two editors (e.g. slide-in)
39
- id: ['entity', field.id, field.locale, index, id].join('.'),
40
- value: value,
41
- label: value
42
- };
43
- });
29
+ const validations = get(field, ['items', 'validations'], []);
30
+ const predefinedValues = validations.filter(validation => validation.in).map(validation => validation.in);
31
+ const firstPredefinedValues = predefinedValues.length > 0 ? predefinedValues[0] : [];
32
+ return firstPredefinedValues.map((value, index) => ({
33
+ // Append a random id to distinguish between checkboxes opened in two editors (e.g. slide-in)
34
+ id: ['entity', field.id, field.locale, index, id].join('.'),
35
+ value,
36
+ label: value
37
+ }));
44
38
  }
45
39
 
46
- var getInvalidValues = function getInvalidValues(field, values, options) {
47
- var getValueFromOptions = options.map(function (item) {
48
- return item.value;
49
- });
50
- var invalidValues = values.filter(function (value) {
51
- return !getValueFromOptions.includes(value);
52
- }).map(function (value, index) {
53
- return {
54
- id: ['entity', field.id, field.locale, index, 'invalid'].join('.'),
55
- label: value,
56
- invalid: true,
57
- value: value
58
- };
59
- });
40
+ const getInvalidValues = (field, values, options) => {
41
+ const getValueFromOptions = options.map(item => item.value);
42
+ const invalidValues = values.filter(value => !getValueFromOptions.includes(value)).map((value, index) => ({
43
+ id: ['entity', field.id, field.locale, index, 'invalid'].join('.'),
44
+ label: value,
45
+ invalid: true,
46
+ value
47
+ }));
60
48
  return invalidValues;
61
49
  };
62
50
 
63
51
  function CheckboxEditor(props) {
64
- var _useState = useState(function () {
65
- return nanoid(6);
66
- }),
67
- id = _useState[0];
68
-
69
- var field = props.field,
70
- locales = props.locales;
71
- var options = getOptions(field, id);
72
- var misconfigured = options.length === 0;
52
+ const [id] = useState(() => nanoid(6));
53
+ const {
54
+ field,
55
+ locales
56
+ } = props;
57
+ const options = getOptions(field, id);
58
+ const misconfigured = options.length === 0;
73
59
 
74
60
  if (misconfigured) {
75
61
  return createElement(PredefinedValuesError, null);
76
62
  }
77
63
 
78
- var direction = locales.direction[field.locale] || 'ltr';
64
+ const direction = locales.direction[field.locale] || 'ltr';
79
65
  return createElement(FieldConnector, {
80
66
  throttle: 0,
81
67
  isEmptyValue: isEmptyListValue,
82
68
  field: field,
83
69
  isInitiallyDisabled: props.isInitiallyDisabled
84
- }, function (_ref) {
85
- var disabled = _ref.disabled,
86
- value = _ref.value,
87
- setValue = _ref.setValue;
88
- var values = value || [];
70
+ }, ({
71
+ disabled,
72
+ value,
73
+ setValue
74
+ }) => {
75
+ const values = value || [];
89
76
 
90
- var addValue = function addValue(value) {
91
- var newValues = [].concat(values.filter(function (item) {
92
- return item !== value;
93
- }), [value]);
77
+ const addValue = value => {
78
+ const newValues = [...values.filter(item => item !== value), value];
94
79
  setValue(newValues);
95
80
  };
96
81
 
97
- var removeValue = function removeValue(value) {
98
- var newValues = values.filter(function (item) {
99
- return item !== value;
100
- });
82
+ const removeValue = value => {
83
+ const newValues = values.filter(item => item !== value);
101
84
  setValue(newValues);
102
85
  };
103
86
 
104
- var invalidValues = getInvalidValues(field, values, options);
105
- var mergedOptions = [].concat(options, invalidValues);
87
+ const invalidValues = getInvalidValues(field, values, options);
88
+ const mergedOptions = [...options, ...invalidValues];
106
89
  return createElement(Form, {
107
90
  testId: "checkbox-editor",
108
91
  className: cx(form, direction === 'rtl' ? rightToLeft : '')
109
- }, mergedOptions.map(function (item) {
110
- return createElement(Box, {
111
- key: item.id,
112
- marginBottom: "spacingS"
113
- }, createElement(Checkbox, {
114
- key: item.id,
115
- id: item.id,
116
- isChecked: values.includes(item.value),
117
- isDisabled: disabled,
118
- value: item.value,
119
- name: field.id + "." + field.locale,
120
- onChange: function onChange(e) {
121
- if (e.target.checked) {
122
- addValue(item.value);
123
- } else {
124
- removeValue(item.value);
125
- }
126
- }
127
- }, item.label), item.invalid && createElement(Fragment, null, createElement("span", {
128
- "data-test-id": "invalid-text",
129
- className: invalidText
130
- }, "(invalid)"), createElement(TextLink, {
131
- as: "button",
132
- className: removeBtn,
133
- onClick: function onClick() {
134
- return removeValue(item.value);
92
+ }, mergedOptions.map(item => createElement(Box, {
93
+ key: item.id,
94
+ marginBottom: "spacingS"
95
+ }, createElement(Checkbox, {
96
+ key: item.id,
97
+ id: item.id,
98
+ isChecked: values.includes(item.value),
99
+ isDisabled: disabled,
100
+ value: item.value,
101
+ name: `${field.id}.${field.locale}`,
102
+ onChange: e => {
103
+ if (e.target.checked) {
104
+ addValue(item.value);
105
+ } else {
106
+ removeValue(item.value);
135
107
  }
136
- }, "Remove")));
137
- }));
108
+ }
109
+ }, item.label), item.invalid && createElement(Fragment, null, createElement("span", {
110
+ "data-test-id": "invalid-text",
111
+ className: invalidText
112
+ }, "(invalid)"), createElement(TextLink, {
113
+ as: "button",
114
+ className: removeBtn,
115
+ onClick: () => removeValue(item.value)
116
+ }, "Remove")))));
138
117
  });
139
118
  }
140
119
  CheckboxEditor.defaultProps = {
@@ -1 +1 @@
1
- {"version":3,"file":"field-editor-checkbox.esm.js","sources":["../src/styles.ts","../src/CheckboxEditor.tsx"],"sourcesContent":["import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const form = css({\n marginTop: tokens.spacingS,\n});\n\nexport const rightToLeft = css({\n direction: 'rtl',\n});\n\nexport const invalidText = css({\n color: tokens.red500,\n marginLeft: tokens.spacing2Xs,\n});\n\nexport const removeBtn = css({\n marginLeft: tokens.spacingL,\n});\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { cx } from 'emotion';\nimport get from 'lodash/get';\nimport {\n FieldAPI,\n FieldConnector,\n LocalesAPI,\n PredefinedValuesError,\n} from '@contentful/field-editor-shared';\nimport { Checkbox, Box } from '@contentful/f36-components';\nimport * as styles from './styles';\nimport { nanoid } from 'nanoid';\n\nimport { TextLink, Form } from '@contentful/f36-components';\n\nexport interface CheckboxEditorProps {\n /**\n * is the field disabled initially\n */\n isInitiallyDisabled: boolean;\n /**\n * sdk.field\n */\n field: FieldAPI;\n /**\n * sdk.locales\n */\n locales: LocalesAPI;\n}\n\ntype ListValue = string[];\n\ntype CheckboxOption = { id: string; value: string; label: string; invalid?: boolean };\n\nfunction isEmptyListValue(value: ListValue | null) {\n return value === null || value.length === 0;\n}\n\nfunction getOptions(field: FieldAPI, id: string): CheckboxOption[] {\n // Get first object that has a 'in' property\n const validations = get(field, ['items', 'validations'], []) as Record<\n string,\n { in?: string[] }\n >[];\n\n const predefinedValues = validations\n .filter((validation) => validation.in)\n .map((validation) => validation.in);\n\n const firstPredefinedValues = (\n predefinedValues.length > 0 ? predefinedValues[0] : []\n ) as string[];\n\n return firstPredefinedValues.map((value: string, index) => ({\n // Append a random id to distinguish between checkboxes opened in two editors (e.g. slide-in)\n id: ['entity', field.id, field.locale, index, id].join('.'),\n value,\n label: value,\n }));\n}\n\nconst getInvalidValues = (\n field: FieldAPI,\n values: string[],\n options: CheckboxOption[]\n): CheckboxOption[] => {\n const getValueFromOptions = (options as CheckboxOption[]).map((item) => item.value);\n const invalidValues = values\n .filter((value) => !getValueFromOptions.includes(value))\n .map((value, index) => ({\n id: ['entity', field.id, field.locale, index, 'invalid'].join('.'),\n label: value,\n invalid: true,\n value,\n }));\n\n return invalidValues;\n};\n\nexport function CheckboxEditor(props: CheckboxEditorProps) {\n const [id] = useState(() => nanoid(6));\n const { field, locales } = props;\n\n const options = getOptions(field, id);\n const misconfigured = options.length === 0;\n\n if (misconfigured) {\n return <PredefinedValuesError />;\n }\n\n const direction = locales.direction[field.locale] || 'ltr';\n\n return (\n <FieldConnector<ListValue>\n throttle={0}\n isEmptyValue={isEmptyListValue}\n field={field}\n isInitiallyDisabled={props.isInitiallyDisabled}>\n {({ disabled, value, setValue }) => {\n const values = value || [];\n\n const addValue = (value: string) => {\n const newValues = [...values.filter((item) => item !== value), value];\n setValue(newValues);\n };\n\n const removeValue = (value: string) => {\n const newValues = values.filter((item) => item !== value);\n setValue(newValues);\n };\n\n const invalidValues = getInvalidValues(field, values, options);\n const mergedOptions = [...options, ...invalidValues];\n\n return (\n <Form\n testId=\"checkbox-editor\"\n className={cx(styles.form, direction === 'rtl' ? styles.rightToLeft : '')}>\n {mergedOptions.map((item) => (\n <Box key={item.id} marginBottom=\"spacingS\">\n <Checkbox\n key={item.id}\n id={item.id}\n isChecked={values.includes(item.value)}\n isDisabled={disabled}\n value={item.value}\n name={`${field.id}.${field.locale}`}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.checked) {\n addValue(item.value);\n } else {\n removeValue(item.value);\n }\n }}>\n {item.label}\n </Checkbox>\n {item.invalid && (\n <>\n <span data-test-id=\"invalid-text\" className={styles.invalidText}>\n (invalid)\n </span>\n <TextLink\n as=\"button\"\n className={styles.removeBtn}\n onClick={() => removeValue(item.value)}>\n Remove\n </TextLink>\n </>\n )}\n </Box>\n ))}\n </Form>\n );\n }}\n </FieldConnector>\n );\n}\n\nCheckboxEditor.defaultProps = {\n isInitiallyDisabled: true,\n};\n"],"names":["form","css","marginTop","tokens","spacingS","rightToLeft","direction","invalidText","color","red500","marginLeft","spacing2Xs","removeBtn","spacingL","isEmptyListValue","value","length","getOptions","field","id","validations","get","predefinedValues","filter","validation","map","firstPredefinedValues","index","locale","join","label","getInvalidValues","values","options","getValueFromOptions","item","invalidValues","includes","invalid","CheckboxEditor","props","useState","nanoid","locales","misconfigured","React","PredefinedValuesError","FieldConnector","throttle","isEmptyValue","isInitiallyDisabled","disabled","setValue","addValue","newValues","removeValue","mergedOptions","Form","testId","className","cx","styles","Box","key","marginBottom","Checkbox","isChecked","isDisabled","name","onChange","e","target","checked","TextLink","as","onClick","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"field-editor-checkbox.esm.js","sources":["../src/styles.ts","../src/CheckboxEditor.tsx"],"sourcesContent":["import tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\n\nexport const form = css({\n marginTop: tokens.spacingS,\n});\n\nexport const rightToLeft = css({\n direction: 'rtl',\n});\n\nexport const invalidText = css({\n color: tokens.red500,\n marginLeft: tokens.spacing2Xs,\n});\n\nexport const removeBtn = css({\n marginLeft: tokens.spacingL,\n});\n","import * as React from 'react';\nimport { useState } from 'react';\n\nimport { Checkbox, Box } from '@contentful/f36-components';\nimport { TextLink, Form } from '@contentful/f36-components';\nimport {\n FieldAPI,\n FieldConnector,\n LocalesAPI,\n PredefinedValuesError,\n} from '@contentful/field-editor-shared';\nimport { cx } from 'emotion';\nimport get from 'lodash/get';\nimport { nanoid } from 'nanoid';\n\nimport * as styles from './styles';\n\n\nexport interface CheckboxEditorProps {\n /**\n * is the field disabled initially\n */\n isInitiallyDisabled: boolean;\n /**\n * sdk.field\n */\n field: FieldAPI;\n /**\n * sdk.locales\n */\n locales: LocalesAPI;\n}\n\ntype ListValue = string[];\n\ntype CheckboxOption = { id: string; value: string; label: string; invalid?: boolean };\n\nfunction isEmptyListValue(value: ListValue | null) {\n return value === null || value.length === 0;\n}\n\nfunction getOptions(field: FieldAPI, id: string): CheckboxOption[] {\n // Get first object that has a 'in' property\n const validations = get(field, ['items', 'validations'], []) as Record<\n string,\n { in?: string[] }\n >[];\n\n const predefinedValues = validations\n .filter((validation) => validation.in)\n .map((validation) => validation.in);\n\n const firstPredefinedValues = (\n predefinedValues.length > 0 ? predefinedValues[0] : []\n ) as string[];\n\n return firstPredefinedValues.map((value: string, index) => ({\n // Append a random id to distinguish between checkboxes opened in two editors (e.g. slide-in)\n id: ['entity', field.id, field.locale, index, id].join('.'),\n value,\n label: value,\n }));\n}\n\nconst getInvalidValues = (\n field: FieldAPI,\n values: string[],\n options: CheckboxOption[]\n): CheckboxOption[] => {\n const getValueFromOptions = (options as CheckboxOption[]).map((item) => item.value);\n const invalidValues = values\n .filter((value) => !getValueFromOptions.includes(value))\n .map((value, index) => ({\n id: ['entity', field.id, field.locale, index, 'invalid'].join('.'),\n label: value,\n invalid: true,\n value,\n }));\n\n return invalidValues;\n};\n\nexport function CheckboxEditor(props: CheckboxEditorProps) {\n const [id] = useState(() => nanoid(6));\n const { field, locales } = props;\n\n const options = getOptions(field, id);\n const misconfigured = options.length === 0;\n\n if (misconfigured) {\n return <PredefinedValuesError />;\n }\n\n const direction = locales.direction[field.locale] || 'ltr';\n\n return (\n <FieldConnector<ListValue>\n throttle={0}\n isEmptyValue={isEmptyListValue}\n field={field}\n isInitiallyDisabled={props.isInitiallyDisabled}>\n {({ disabled, value, setValue }) => {\n const values = value || [];\n\n const addValue = (value: string) => {\n const newValues = [...values.filter((item) => item !== value), value];\n setValue(newValues);\n };\n\n const removeValue = (value: string) => {\n const newValues = values.filter((item) => item !== value);\n setValue(newValues);\n };\n\n const invalidValues = getInvalidValues(field, values, options);\n const mergedOptions = [...options, ...invalidValues];\n\n return (\n <Form\n testId=\"checkbox-editor\"\n className={cx(styles.form, direction === 'rtl' ? styles.rightToLeft : '')}>\n {mergedOptions.map((item) => (\n <Box key={item.id} marginBottom=\"spacingS\">\n <Checkbox\n key={item.id}\n id={item.id}\n isChecked={values.includes(item.value)}\n isDisabled={disabled}\n value={item.value}\n name={`${field.id}.${field.locale}`}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.checked) {\n addValue(item.value);\n } else {\n removeValue(item.value);\n }\n }}>\n {item.label}\n </Checkbox>\n {item.invalid && (\n <>\n <span data-test-id=\"invalid-text\" className={styles.invalidText}>\n (invalid)\n </span>\n <TextLink\n as=\"button\"\n className={styles.removeBtn}\n onClick={() => removeValue(item.value)}>\n Remove\n </TextLink>\n </>\n )}\n </Box>\n ))}\n </Form>\n );\n }}\n </FieldConnector>\n );\n}\n\nCheckboxEditor.defaultProps = {\n isInitiallyDisabled: true,\n};\n"],"names":["form","css","marginTop","tokens","spacingS","rightToLeft","direction","invalidText","color","red500","marginLeft","spacing2Xs","removeBtn","spacingL","isEmptyListValue","value","length","getOptions","field","id","validations","get","predefinedValues","filter","validation","in","map","firstPredefinedValues","index","locale","join","label","getInvalidValues","values","options","getValueFromOptions","item","invalidValues","includes","invalid","CheckboxEditor","props","useState","nanoid","locales","misconfigured","React","PredefinedValuesError","FieldConnector","throttle","isEmptyValue","isInitiallyDisabled","disabled","setValue","addValue","newValues","removeValue","mergedOptions","Form","testId","className","cx","styles","Box","key","marginBottom","Checkbox","isChecked","isDisabled","name","onChange","e","target","checked","TextLink","as","onClick","defaultProps"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contentful/field-editor-checkbox",
3
- "version": "1.1.12",
3
+ "version": "1.2.0",
4
4
  "main": "dist/index.js",
5
5
  "module": "dist/field-editor-checkbox.esm.js",
6
6
  "typings": "dist/index.d.ts",
@@ -23,16 +23,16 @@
23
23
  "dependencies": {
24
24
  "@contentful/f36-components": "^4.3.23",
25
25
  "@contentful/f36-tokens": "^4.0.0",
26
- "@contentful/field-editor-shared": "^1.1.8",
26
+ "@contentful/field-editor-shared": "^1.2.0",
27
27
  "emotion": "^10.0.17",
28
28
  "lodash": "^4.17.15",
29
29
  "lodash-es": "^4.17.15"
30
30
  },
31
31
  "devDependencies": {
32
- "@contentful/field-editor-test-utils": "^1.2.7"
32
+ "@contentful/field-editor-test-utils": "^1.3.0"
33
33
  },
34
34
  "peerDependencies": {
35
35
  "react": ">=16.8.0"
36
36
  },
37
- "gitHead": "4fff7b9534374dcc44cb477240d369fc34f46415"
37
+ "gitHead": "de7e74e3485dd69c240cfe9c545e6e50e41fb295"
38
38
  }