@contentful/field-editor-number 1.1.0 → 1.1.1
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 +6 -0
- package/dist/field-editor-number.cjs.development.js +69 -30
- package/dist/field-editor-number.cjs.development.js.map +1 -1
- package/dist/field-editor-number.cjs.production.min.js +1 -1
- package/dist/field-editor-number.cjs.production.min.js.map +1 -1
- package/dist/field-editor-number.esm.js +70 -31
- package/dist/field-editor-number.esm.js.map +1 -1
- package/package.json +7 -4
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.1.1](https://github.com/contentful/field-editors/compare/@contentful/field-editor-number@1.1.0...@contentful/field-editor-number@1.1.1) (2022-02-14)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- **number-editor:** use "text" input that syncs numeric value when valid ([#1020](https://github.com/contentful/field-editors/issues/1020)) ([0f38462](https://github.com/contentful/field-editors/commit/0f384623f969284d122255191397402bbb3e7763))
|
|
11
|
+
|
|
6
12
|
# [1.1.0](https://github.com/contentful/field-editors/compare/@contentful/field-editor-number@1.0.3...@contentful/field-editor-number@1.1.0) (2022-01-11)
|
|
7
13
|
|
|
8
14
|
### Features
|
|
@@ -11,11 +11,11 @@ var f36Components = require('@contentful/f36-components');
|
|
|
11
11
|
|
|
12
12
|
function parseNumber(value, type) {
|
|
13
13
|
// This has saner semantics than parseFloat.
|
|
14
|
-
// For values with chars in
|
|
14
|
+
// For values with chars in them, it gives
|
|
15
15
|
// us NaN unlike parseFloat
|
|
16
16
|
var floatVal = +value;
|
|
17
|
-
var hasDot =
|
|
18
|
-
var hasFractional =
|
|
17
|
+
var hasDot = value.includes('.');
|
|
18
|
+
var hasFractional = /^(?:\+|-)?\d+\.\d+$/.test(value);
|
|
19
19
|
|
|
20
20
|
if (isEmpty(value)) {
|
|
21
21
|
return {
|
|
@@ -60,38 +60,77 @@ function getRangeFromField(field) {
|
|
|
60
60
|
return result ? result.range : {};
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
+
function valueToString(value) {
|
|
64
|
+
return value === undefined ? '' : String(value);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function InnerNumberEditor(_ref) {
|
|
68
|
+
var disabled = _ref.disabled,
|
|
69
|
+
errors = _ref.errors,
|
|
70
|
+
field = _ref.field,
|
|
71
|
+
setValue = _ref.setValue,
|
|
72
|
+
sdkValue = _ref.value;
|
|
73
|
+
var previousValue = React.useRef(valueToString(sdkValue));
|
|
74
|
+
|
|
75
|
+
var _React$useState = React.useState(valueToString(sdkValue)),
|
|
76
|
+
inputValue = _React$useState[0],
|
|
77
|
+
setInputValue = _React$useState[1];
|
|
78
|
+
|
|
79
|
+
var range = getRangeFromField(field);
|
|
80
|
+
React.useEffect(function () {
|
|
81
|
+
previousValue.current = valueToString(sdkValue);
|
|
82
|
+
}, [sdkValue]);
|
|
83
|
+
React.useEffect(function () {
|
|
84
|
+
var stringifiedSdkValue = valueToString(sdkValue); // Update the input value (string) if the SDK value (numeric) changes
|
|
85
|
+
|
|
86
|
+
if (stringifiedSdkValue !== previousValue.current && stringifiedSdkValue !== inputValue) {
|
|
87
|
+
setInputValue(stringifiedSdkValue);
|
|
88
|
+
}
|
|
89
|
+
}, [inputValue, sdkValue]);
|
|
90
|
+
return React.createElement("div", {
|
|
91
|
+
"data-test-id": "number-editor"
|
|
92
|
+
}, React.createElement(f36Components.TextInput, {
|
|
93
|
+
testId: "number-editor-input",
|
|
94
|
+
min: range.min !== undefined ? String(range.min) : '',
|
|
95
|
+
max: range.max !== undefined ? String(range.max) : '',
|
|
96
|
+
step: field.type === 'Integer' ? '1' : '',
|
|
97
|
+
isRequired: field.required,
|
|
98
|
+
isInvalid: errors.length > 0,
|
|
99
|
+
isDisabled: disabled,
|
|
100
|
+
value: inputValue,
|
|
101
|
+
// React cannot call onChange for certain changes to type="number"
|
|
102
|
+
// so we use "text" instead. See https://github.com/facebook/react/issues/6556
|
|
103
|
+
type: "text",
|
|
104
|
+
onChange: function onChange(e) {
|
|
105
|
+
var parseResult = parseNumber(e.target.value, field.type);
|
|
106
|
+
field.setInvalid(!parseResult.isValid);
|
|
107
|
+
|
|
108
|
+
if (parseResult.isValid) {
|
|
109
|
+
setValue(parseResult.value);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
setInputValue(e.target.value);
|
|
113
|
+
}
|
|
114
|
+
}));
|
|
115
|
+
}
|
|
116
|
+
|
|
63
117
|
function NumberEditor(props) {
|
|
64
118
|
var field = props.field;
|
|
65
|
-
var range = getRangeFromField(field);
|
|
66
119
|
return React.createElement(fieldEditorShared.FieldConnector, {
|
|
67
120
|
field: field,
|
|
68
121
|
isInitiallyDisabled: props.isInitiallyDisabled
|
|
69
|
-
}, function (
|
|
70
|
-
var value =
|
|
71
|
-
errors =
|
|
72
|
-
disabled =
|
|
73
|
-
setValue =
|
|
74
|
-
return React.createElement(
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
type: "number",
|
|
82
|
-
isRequired: field.required,
|
|
83
|
-
isInvalid: errors.length > 0,
|
|
84
|
-
isDisabled: disabled,
|
|
85
|
-
value: value === undefined ? '' : String(value),
|
|
86
|
-
onChange: function onChange(e) {
|
|
87
|
-
var parseResult = parseNumber(e.target.value, field.type);
|
|
88
|
-
field.setInvalid(!parseResult.isValid);
|
|
89
|
-
|
|
90
|
-
if (parseResult.isValid) {
|
|
91
|
-
setValue(parseResult.value);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}));
|
|
122
|
+
}, function (_ref2) {
|
|
123
|
+
var value = _ref2.value,
|
|
124
|
+
errors = _ref2.errors,
|
|
125
|
+
disabled = _ref2.disabled,
|
|
126
|
+
setValue = _ref2.setValue;
|
|
127
|
+
return React.createElement(InnerNumberEditor, {
|
|
128
|
+
disabled: disabled,
|
|
129
|
+
errors: errors,
|
|
130
|
+
field: field,
|
|
131
|
+
setValue: setValue,
|
|
132
|
+
value: value
|
|
133
|
+
});
|
|
95
134
|
});
|
|
96
135
|
}
|
|
97
136
|
NumberEditor.defaultProps = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-editor-number.cjs.development.js","sources":["../src/parseNumber.ts","../src/NumberEditor.tsx"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\n\nexport function parseNumber(\n value: string,\n type: string\n): {\n isValid: boolean;\n value: number | undefined;\n} {\n // This has saner semantics than parseFloat.\n // For values with chars in
|
|
1
|
+
{"version":3,"file":"field-editor-number.cjs.development.js","sources":["../src/parseNumber.ts","../src/NumberEditor.tsx"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\n\nexport function parseNumber(\n value: string,\n type: string\n): {\n isValid: boolean;\n value: number | undefined;\n} {\n // This has saner semantics than parseFloat.\n // For values with chars in them, it gives\n // us NaN unlike parseFloat\n const floatVal = +value;\n const hasDot = value.includes('.');\n const hasFractional = /^(?:\\+|-)?\\d+\\.\\d+$/.test(value);\n\n if (isEmpty(value)) {\n return {\n isValid: true,\n value: undefined,\n };\n }\n\n if (isNaN(floatVal)) {\n return {\n isValid: false,\n value: undefined,\n };\n }\n\n if (type === 'Integer' && hasDot) {\n const intVal = parseInt(value, 10);\n\n return {\n isValid: false,\n value: intVal,\n };\n }\n\n if (hasDot && !hasFractional) {\n return {\n isValid: false,\n value: floatVal,\n };\n }\n\n return {\n isValid: true,\n value: floatVal,\n };\n}\n","import * as React from 'react';\nimport {\n FieldAPI,\n FieldConnector,\n FieldConnectorChildProps,\n} from '@contentful/field-editor-shared';\nimport { parseNumber } from './parseNumber';\n\nimport { TextInput } from '@contentful/f36-components';\n\nexport interface NumberEditorProps {\n /**\n * is the field disabled initially\n */\n isInitiallyDisabled: boolean;\n\n /**\n * sdk.field\n */\n field: FieldAPI;\n}\n\ntype RangeValidation = { min?: number; max?: number };\n\nfunction getRangeFromField(field: FieldAPI): RangeValidation {\n const validations = field.validations || [];\n const result = validations.find((validation) => (validation as any).range) as\n | { range: RangeValidation }\n | undefined;\n return result ? result.range : {};\n}\n\nfunction valueToString(value: InnerNumberEditorProps['value']) {\n return value === undefined ? '' : String(value);\n}\n\ntype InnerNumberEditorProps = Pick<\n FieldConnectorChildProps<number>,\n 'disabled' | 'errors' | 'setValue' | 'value'\n> & {\n field: NumberEditorProps['field'];\n};\n\nfunction InnerNumberEditor({\n disabled,\n errors,\n field,\n setValue,\n value: sdkValue,\n}: InnerNumberEditorProps) {\n const previousValue = React.useRef(valueToString(sdkValue));\n const [inputValue, setInputValue] = React.useState(valueToString(sdkValue));\n const range = getRangeFromField(field);\n\n React.useEffect(() => {\n previousValue.current = valueToString(sdkValue);\n }, [sdkValue]);\n\n React.useEffect(() => {\n const stringifiedSdkValue = valueToString(sdkValue);\n // Update the input value (string) if the SDK value (numeric) changes\n if (stringifiedSdkValue !== previousValue.current && stringifiedSdkValue !== inputValue) {\n setInputValue(stringifiedSdkValue);\n }\n }, [inputValue, sdkValue]);\n\n return (\n <div data-test-id=\"number-editor\">\n <TextInput\n testId=\"number-editor-input\"\n min={range.min !== undefined ? String(range.min) : ''}\n max={range.max !== undefined ? String(range.max) : ''}\n step={field.type === 'Integer' ? '1' : ''}\n isRequired={field.required}\n isInvalid={errors.length > 0}\n isDisabled={disabled}\n value={inputValue}\n // React cannot call onChange for certain changes to type=\"number\"\n // so we use \"text\" instead. See https://github.com/facebook/react/issues/6556\n type=\"text\"\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n const parseResult = parseNumber(e.target.value, field.type);\n field.setInvalid(!parseResult.isValid);\n\n if (parseResult.isValid) {\n setValue(parseResult.value);\n }\n\n setInputValue(e.target.value);\n }}\n />\n </div>\n );\n}\n\nexport function NumberEditor(props: NumberEditorProps) {\n const { field } = props;\n\n return (\n <FieldConnector<number> field={field} isInitiallyDisabled={props.isInitiallyDisabled}>\n {({\n value,\n errors,\n disabled,\n setValue,\n }: Pick<FieldConnectorChildProps<number>, 'disabled' | 'errors' | 'setValue' | 'value'>) => (\n <InnerNumberEditor\n disabled={disabled}\n errors={errors}\n field={field}\n setValue={setValue}\n value={value}\n />\n )}\n </FieldConnector>\n );\n}\n\nNumberEditor.defaultProps = {\n isInitiallyDisabled: true,\n};\n"],"names":["parseNumber","value","type","floatVal","hasDot","includes","hasFractional","test","isEmpty","isValid","undefined","isNaN","intVal","parseInt","getRangeFromField","field","validations","result","find","validation","range","valueToString","String","InnerNumberEditor","disabled","errors","setValue","sdkValue","previousValue","React","inputValue","setInputValue","current","stringifiedSdkValue","TextInput","testId","min","max","step","isRequired","required","isInvalid","length","isDisabled","onChange","e","parseResult","target","setInvalid","NumberEditor","props","FieldConnector","isInitiallyDisabled","defaultProps"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t=require("react"),i=require("@contentful/field-editor-shared"),r=(e=require("lodash/isEmpty"))&&"object"==typeof e&&"default"in e?e.default:e,a=require("@contentful/f36-components");function n(e){return void 0===e?"":String(e)}function l(e){var i=e.disabled,l=e.errors,u=e.field,d=e.setValue,s=e.value,o=t.useRef(n(s)),f=t.useState(n(s)),v=f[0],c=f[1],m=function(e){var t=(e.validations||[]).find((function(e){return e.range}));return t?t.range:{}}(u);return t.useEffect((function(){o.current=n(s)}),[s]),t.useEffect((function(){var e=n(s);e!==o.current&&e!==v&&c(e)}),[v,s]),t.createElement("div",{"data-test-id":"number-editor"},t.createElement(a.TextInput,{testId:"number-editor-input",min:void 0!==m.min?String(m.min):"",max:void 0!==m.max?String(m.max):"",step:"Integer"===u.type?"1":"",isRequired:u.required,isInvalid:l.length>0,isDisabled:i,value:v,type:"text",onChange:function(e){var t,i,a,n,l,s=(i=u.type,a=+(t=e.target.value),n=t.includes("."),l=/^(?:\+|-)?\d+\.\d+$/.test(t),r(t)?{isValid:!0,value:void 0}:isNaN(a)?{isValid:!1,value:void 0}:"Integer"===i&&n?{isValid:!1,value:parseInt(t,10)}:n&&!l?{isValid:!1,value:a}:{isValid:!0,value:a});u.setInvalid(!s.isValid),s.isValid&&d(s.value),c(e.target.value)}}))}function u(e){var r=e.field;return t.createElement(i.FieldConnector,{field:r,isInitiallyDisabled:e.isInitiallyDisabled},(function(e){return t.createElement(l,{disabled:e.disabled,errors:e.errors,field:r,setValue:e.setValue,value:e.value})}))}u.defaultProps={isInitiallyDisabled:!0},exports.NumberEditor=u;
|
|
2
2
|
//# sourceMappingURL=field-editor-number.cjs.production.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-editor-number.cjs.production.min.js","sources":["../src/NumberEditor.tsx","../src/parseNumber.ts"],"sourcesContent":["import * as React from 'react';\nimport {
|
|
1
|
+
{"version":3,"file":"field-editor-number.cjs.production.min.js","sources":["../src/NumberEditor.tsx","../src/parseNumber.ts"],"sourcesContent":["import * as React from 'react';\nimport {\n FieldAPI,\n FieldConnector,\n FieldConnectorChildProps,\n} from '@contentful/field-editor-shared';\nimport { parseNumber } from './parseNumber';\n\nimport { TextInput } from '@contentful/f36-components';\n\nexport interface NumberEditorProps {\n /**\n * is the field disabled initially\n */\n isInitiallyDisabled: boolean;\n\n /**\n * sdk.field\n */\n field: FieldAPI;\n}\n\ntype RangeValidation = { min?: number; max?: number };\n\nfunction getRangeFromField(field: FieldAPI): RangeValidation {\n const validations = field.validations || [];\n const result = validations.find((validation) => (validation as any).range) as\n | { range: RangeValidation }\n | undefined;\n return result ? result.range : {};\n}\n\nfunction valueToString(value: InnerNumberEditorProps['value']) {\n return value === undefined ? '' : String(value);\n}\n\ntype InnerNumberEditorProps = Pick<\n FieldConnectorChildProps<number>,\n 'disabled' | 'errors' | 'setValue' | 'value'\n> & {\n field: NumberEditorProps['field'];\n};\n\nfunction InnerNumberEditor({\n disabled,\n errors,\n field,\n setValue,\n value: sdkValue,\n}: InnerNumberEditorProps) {\n const previousValue = React.useRef(valueToString(sdkValue));\n const [inputValue, setInputValue] = React.useState(valueToString(sdkValue));\n const range = getRangeFromField(field);\n\n React.useEffect(() => {\n previousValue.current = valueToString(sdkValue);\n }, [sdkValue]);\n\n React.useEffect(() => {\n const stringifiedSdkValue = valueToString(sdkValue);\n // Update the input value (string) if the SDK value (numeric) changes\n if (stringifiedSdkValue !== previousValue.current && stringifiedSdkValue !== inputValue) {\n setInputValue(stringifiedSdkValue);\n }\n }, [inputValue, sdkValue]);\n\n return (\n <div data-test-id=\"number-editor\">\n <TextInput\n testId=\"number-editor-input\"\n min={range.min !== undefined ? String(range.min) : ''}\n max={range.max !== undefined ? String(range.max) : ''}\n step={field.type === 'Integer' ? '1' : ''}\n isRequired={field.required}\n isInvalid={errors.length > 0}\n isDisabled={disabled}\n value={inputValue}\n // React cannot call onChange for certain changes to type=\"number\"\n // so we use \"text\" instead. See https://github.com/facebook/react/issues/6556\n type=\"text\"\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n const parseResult = parseNumber(e.target.value, field.type);\n field.setInvalid(!parseResult.isValid);\n\n if (parseResult.isValid) {\n setValue(parseResult.value);\n }\n\n setInputValue(e.target.value);\n }}\n />\n </div>\n );\n}\n\nexport function NumberEditor(props: NumberEditorProps) {\n const { field } = props;\n\n return (\n <FieldConnector<number> field={field} isInitiallyDisabled={props.isInitiallyDisabled}>\n {({\n value,\n errors,\n disabled,\n setValue,\n }: Pick<FieldConnectorChildProps<number>, 'disabled' | 'errors' | 'setValue' | 'value'>) => (\n <InnerNumberEditor\n disabled={disabled}\n errors={errors}\n field={field}\n setValue={setValue}\n value={value}\n />\n )}\n </FieldConnector>\n );\n}\n\nNumberEditor.defaultProps = {\n isInitiallyDisabled: true,\n};\n","import isEmpty from 'lodash/isEmpty';\n\nexport function parseNumber(\n value: string,\n type: string\n): {\n isValid: boolean;\n value: number | undefined;\n} {\n // This has saner semantics than parseFloat.\n // For values with chars in them, it gives\n // us NaN unlike parseFloat\n const floatVal = +value;\n const hasDot = value.includes('.');\n const hasFractional = /^(?:\\+|-)?\\d+\\.\\d+$/.test(value);\n\n if (isEmpty(value)) {\n return {\n isValid: true,\n value: undefined,\n };\n }\n\n if (isNaN(floatVal)) {\n return {\n isValid: false,\n value: undefined,\n };\n }\n\n if (type === 'Integer' && hasDot) {\n const intVal = parseInt(value, 10);\n\n return {\n isValid: false,\n value: intVal,\n };\n }\n\n if (hasDot && !hasFractional) {\n return {\n isValid: false,\n value: floatVal,\n };\n }\n\n return {\n isValid: true,\n value: floatVal,\n };\n}\n"],"names":["valueToString","value","undefined","String","InnerNumberEditor","disabled","errors","field","setValue","sdkValue","previousValue","React","inputValue","setInputValue","range","result","validations","find","validation","getRangeFromField","current","stringifiedSdkValue","TextInput","testId","min","max","step","type","isRequired","required","isInvalid","length","isDisabled","onChange","e","floatVal","hasDot","hasFractional","parseResult","target","includes","test","isEmpty","isValid","isNaN","parseInt","setInvalid","NumberEditor","props","FieldConnector","isInitiallyDisabled","defaultProps"],"mappings":"iQAgCA,SAASA,EAAcC,eACJC,IAAVD,EAAsB,GAAKE,OAAOF,GAU3C,SAASG,SACPC,IAAAA,SACAC,IAAAA,OACAC,IAAAA,MACAC,IAAAA,SACOC,IAAPR,MAEMS,EAAgBC,SAAaX,EAAcS,MACbE,WAAeX,EAAcS,IAA1DG,OAAYC,OACbC,EA5BR,SAA2BP,OAEnBQ,GADcR,EAAMS,aAAe,IACdC,MAAK,SAACC,UAAgBA,EAAmBJ,gBAG7DC,EAASA,EAAOD,MAAQ,GAuBjBK,CAAkBZ,UAEhCI,aAAgB,WACdD,EAAcU,QAAUpB,EAAcS,KACrC,CAACA,IAEJE,aAAgB,eACRU,EAAsBrB,EAAcS,GAEtCY,IAAwBX,EAAcU,SAAWC,IAAwBT,GAC3EC,EAAcQ,KAEf,CAACT,EAAYH,IAGdE,sCAAkB,iBAChBA,gBAACW,aACCC,OAAO,sBACPC,SAAmBtB,IAAdY,EAAMU,IAAoBrB,OAAOW,EAAMU,KAAO,GACnDC,SAAmBvB,IAAdY,EAAMW,IAAoBtB,OAAOW,EAAMW,KAAO,GACnDC,KAAqB,YAAfnB,EAAMoB,KAAqB,IAAM,GACvCC,WAAYrB,EAAMsB,SAClBC,UAAWxB,EAAOyB,OAAS,EAC3BC,WAAY3B,EACZJ,MAAOW,EAGPe,KAAK,OACLM,SAAU,SAACC,OC7EjBjC,EACA0B,EAQMQ,EACAC,EACAC,EDmEQC,GC7EdX,ED6EwDpB,EAAMoB,KCrExDQ,IATNlC,ED8EwCiC,EAAEK,OAAOtC,OCpE3CmC,EAASnC,EAAMuC,SAAS,KACxBH,EAAgB,sBAAsBI,KAAKxC,GAE7CyC,EAAQzC,GACH,CACL0C,SAAS,EACT1C,WAAOC,GAIP0C,MAAMT,GACD,CACLQ,SAAS,EACT1C,WAAOC,GAIE,YAATyB,GAAsBS,EAGjB,CACLO,SAAS,EACT1C,MAJa4C,SAAS5C,EAAO,KAQ7BmC,IAAWC,EACN,CACLM,SAAS,EACT1C,MAAOkC,GAIJ,CACLQ,SAAS,EACT1C,MAAOkC,IDkCD5B,EAAMuC,YAAYR,EAAYK,SAE1BL,EAAYK,SACdnC,EAAS8B,EAAYrC,OAGvBY,EAAcqB,EAAEK,OAAOtC,oBAOjB8C,EAAaC,OACnBzC,EAAUyC,EAAVzC,aAGNI,gBAACsC,kBAAuB1C,MAAOA,EAAO2C,oBAAqBF,EAAME,sBAC9D,mBAMCvC,gBAACP,GACCC,WAJFA,SAKEC,SANFA,OAOEC,MAAOA,EACPC,WANFA,SAOEP,QAVFA,WAiBR8C,EAAaI,aAAe,CAC1BD,qBAAqB"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { createElement } from 'react';
|
|
1
|
+
import { createElement, useRef, useState, useEffect } from 'react';
|
|
2
2
|
import { FieldConnector } from '@contentful/field-editor-shared';
|
|
3
3
|
import isEmpty from 'lodash-es/isEmpty';
|
|
4
4
|
import { TextInput } from '@contentful/f36-components';
|
|
5
5
|
|
|
6
6
|
function parseNumber(value, type) {
|
|
7
7
|
// This has saner semantics than parseFloat.
|
|
8
|
-
// For values with chars in
|
|
8
|
+
// For values with chars in them, it gives
|
|
9
9
|
// us NaN unlike parseFloat
|
|
10
10
|
var floatVal = +value;
|
|
11
|
-
var hasDot =
|
|
12
|
-
var hasFractional =
|
|
11
|
+
var hasDot = value.includes('.');
|
|
12
|
+
var hasFractional = /^(?:\+|-)?\d+\.\d+$/.test(value);
|
|
13
13
|
|
|
14
14
|
if (isEmpty(value)) {
|
|
15
15
|
return {
|
|
@@ -54,38 +54,77 @@ function getRangeFromField(field) {
|
|
|
54
54
|
return result ? result.range : {};
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
+
function valueToString(value) {
|
|
58
|
+
return value === undefined ? '' : String(value);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function InnerNumberEditor(_ref) {
|
|
62
|
+
var disabled = _ref.disabled,
|
|
63
|
+
errors = _ref.errors,
|
|
64
|
+
field = _ref.field,
|
|
65
|
+
setValue = _ref.setValue,
|
|
66
|
+
sdkValue = _ref.value;
|
|
67
|
+
var previousValue = useRef(valueToString(sdkValue));
|
|
68
|
+
|
|
69
|
+
var _React$useState = useState(valueToString(sdkValue)),
|
|
70
|
+
inputValue = _React$useState[0],
|
|
71
|
+
setInputValue = _React$useState[1];
|
|
72
|
+
|
|
73
|
+
var range = getRangeFromField(field);
|
|
74
|
+
useEffect(function () {
|
|
75
|
+
previousValue.current = valueToString(sdkValue);
|
|
76
|
+
}, [sdkValue]);
|
|
77
|
+
useEffect(function () {
|
|
78
|
+
var stringifiedSdkValue = valueToString(sdkValue); // Update the input value (string) if the SDK value (numeric) changes
|
|
79
|
+
|
|
80
|
+
if (stringifiedSdkValue !== previousValue.current && stringifiedSdkValue !== inputValue) {
|
|
81
|
+
setInputValue(stringifiedSdkValue);
|
|
82
|
+
}
|
|
83
|
+
}, [inputValue, sdkValue]);
|
|
84
|
+
return createElement("div", {
|
|
85
|
+
"data-test-id": "number-editor"
|
|
86
|
+
}, createElement(TextInput, {
|
|
87
|
+
testId: "number-editor-input",
|
|
88
|
+
min: range.min !== undefined ? String(range.min) : '',
|
|
89
|
+
max: range.max !== undefined ? String(range.max) : '',
|
|
90
|
+
step: field.type === 'Integer' ? '1' : '',
|
|
91
|
+
isRequired: field.required,
|
|
92
|
+
isInvalid: errors.length > 0,
|
|
93
|
+
isDisabled: disabled,
|
|
94
|
+
value: inputValue,
|
|
95
|
+
// React cannot call onChange for certain changes to type="number"
|
|
96
|
+
// so we use "text" instead. See https://github.com/facebook/react/issues/6556
|
|
97
|
+
type: "text",
|
|
98
|
+
onChange: function onChange(e) {
|
|
99
|
+
var parseResult = parseNumber(e.target.value, field.type);
|
|
100
|
+
field.setInvalid(!parseResult.isValid);
|
|
101
|
+
|
|
102
|
+
if (parseResult.isValid) {
|
|
103
|
+
setValue(parseResult.value);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
setInputValue(e.target.value);
|
|
107
|
+
}
|
|
108
|
+
}));
|
|
109
|
+
}
|
|
110
|
+
|
|
57
111
|
function NumberEditor(props) {
|
|
58
112
|
var field = props.field;
|
|
59
|
-
var range = getRangeFromField(field);
|
|
60
113
|
return createElement(FieldConnector, {
|
|
61
114
|
field: field,
|
|
62
115
|
isInitiallyDisabled: props.isInitiallyDisabled
|
|
63
|
-
}, function (
|
|
64
|
-
var value =
|
|
65
|
-
errors =
|
|
66
|
-
disabled =
|
|
67
|
-
setValue =
|
|
68
|
-
return createElement(
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
type: "number",
|
|
76
|
-
isRequired: field.required,
|
|
77
|
-
isInvalid: errors.length > 0,
|
|
78
|
-
isDisabled: disabled,
|
|
79
|
-
value: value === undefined ? '' : String(value),
|
|
80
|
-
onChange: function onChange(e) {
|
|
81
|
-
var parseResult = parseNumber(e.target.value, field.type);
|
|
82
|
-
field.setInvalid(!parseResult.isValid);
|
|
83
|
-
|
|
84
|
-
if (parseResult.isValid) {
|
|
85
|
-
setValue(parseResult.value);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}));
|
|
116
|
+
}, function (_ref2) {
|
|
117
|
+
var value = _ref2.value,
|
|
118
|
+
errors = _ref2.errors,
|
|
119
|
+
disabled = _ref2.disabled,
|
|
120
|
+
setValue = _ref2.setValue;
|
|
121
|
+
return createElement(InnerNumberEditor, {
|
|
122
|
+
disabled: disabled,
|
|
123
|
+
errors: errors,
|
|
124
|
+
field: field,
|
|
125
|
+
setValue: setValue,
|
|
126
|
+
value: value
|
|
127
|
+
});
|
|
89
128
|
});
|
|
90
129
|
}
|
|
91
130
|
NumberEditor.defaultProps = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-editor-number.esm.js","sources":["../src/parseNumber.ts","../src/NumberEditor.tsx"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\n\nexport function parseNumber(\n value: string,\n type: string\n): {\n isValid: boolean;\n value: number | undefined;\n} {\n // This has saner semantics than parseFloat.\n // For values with chars in
|
|
1
|
+
{"version":3,"file":"field-editor-number.esm.js","sources":["../src/parseNumber.ts","../src/NumberEditor.tsx"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\n\nexport function parseNumber(\n value: string,\n type: string\n): {\n isValid: boolean;\n value: number | undefined;\n} {\n // This has saner semantics than parseFloat.\n // For values with chars in them, it gives\n // us NaN unlike parseFloat\n const floatVal = +value;\n const hasDot = value.includes('.');\n const hasFractional = /^(?:\\+|-)?\\d+\\.\\d+$/.test(value);\n\n if (isEmpty(value)) {\n return {\n isValid: true,\n value: undefined,\n };\n }\n\n if (isNaN(floatVal)) {\n return {\n isValid: false,\n value: undefined,\n };\n }\n\n if (type === 'Integer' && hasDot) {\n const intVal = parseInt(value, 10);\n\n return {\n isValid: false,\n value: intVal,\n };\n }\n\n if (hasDot && !hasFractional) {\n return {\n isValid: false,\n value: floatVal,\n };\n }\n\n return {\n isValid: true,\n value: floatVal,\n };\n}\n","import * as React from 'react';\nimport {\n FieldAPI,\n FieldConnector,\n FieldConnectorChildProps,\n} from '@contentful/field-editor-shared';\nimport { parseNumber } from './parseNumber';\n\nimport { TextInput } from '@contentful/f36-components';\n\nexport interface NumberEditorProps {\n /**\n * is the field disabled initially\n */\n isInitiallyDisabled: boolean;\n\n /**\n * sdk.field\n */\n field: FieldAPI;\n}\n\ntype RangeValidation = { min?: number; max?: number };\n\nfunction getRangeFromField(field: FieldAPI): RangeValidation {\n const validations = field.validations || [];\n const result = validations.find((validation) => (validation as any).range) as\n | { range: RangeValidation }\n | undefined;\n return result ? result.range : {};\n}\n\nfunction valueToString(value: InnerNumberEditorProps['value']) {\n return value === undefined ? '' : String(value);\n}\n\ntype InnerNumberEditorProps = Pick<\n FieldConnectorChildProps<number>,\n 'disabled' | 'errors' | 'setValue' | 'value'\n> & {\n field: NumberEditorProps['field'];\n};\n\nfunction InnerNumberEditor({\n disabled,\n errors,\n field,\n setValue,\n value: sdkValue,\n}: InnerNumberEditorProps) {\n const previousValue = React.useRef(valueToString(sdkValue));\n const [inputValue, setInputValue] = React.useState(valueToString(sdkValue));\n const range = getRangeFromField(field);\n\n React.useEffect(() => {\n previousValue.current = valueToString(sdkValue);\n }, [sdkValue]);\n\n React.useEffect(() => {\n const stringifiedSdkValue = valueToString(sdkValue);\n // Update the input value (string) if the SDK value (numeric) changes\n if (stringifiedSdkValue !== previousValue.current && stringifiedSdkValue !== inputValue) {\n setInputValue(stringifiedSdkValue);\n }\n }, [inputValue, sdkValue]);\n\n return (\n <div data-test-id=\"number-editor\">\n <TextInput\n testId=\"number-editor-input\"\n min={range.min !== undefined ? String(range.min) : ''}\n max={range.max !== undefined ? String(range.max) : ''}\n step={field.type === 'Integer' ? '1' : ''}\n isRequired={field.required}\n isInvalid={errors.length > 0}\n isDisabled={disabled}\n value={inputValue}\n // React cannot call onChange for certain changes to type=\"number\"\n // so we use \"text\" instead. See https://github.com/facebook/react/issues/6556\n type=\"text\"\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n const parseResult = parseNumber(e.target.value, field.type);\n field.setInvalid(!parseResult.isValid);\n\n if (parseResult.isValid) {\n setValue(parseResult.value);\n }\n\n setInputValue(e.target.value);\n }}\n />\n </div>\n );\n}\n\nexport function NumberEditor(props: NumberEditorProps) {\n const { field } = props;\n\n return (\n <FieldConnector<number> field={field} isInitiallyDisabled={props.isInitiallyDisabled}>\n {({\n value,\n errors,\n disabled,\n setValue,\n }: Pick<FieldConnectorChildProps<number>, 'disabled' | 'errors' | 'setValue' | 'value'>) => (\n <InnerNumberEditor\n disabled={disabled}\n errors={errors}\n field={field}\n setValue={setValue}\n value={value}\n />\n )}\n </FieldConnector>\n );\n}\n\nNumberEditor.defaultProps = {\n isInitiallyDisabled: true,\n};\n"],"names":["parseNumber","value","type","floatVal","hasDot","includes","hasFractional","test","isEmpty","isValid","undefined","isNaN","intVal","parseInt","getRangeFromField","field","validations","result","find","validation","range","valueToString","String","InnerNumberEditor","disabled","errors","setValue","sdkValue","previousValue","React","inputValue","setInputValue","current","stringifiedSdkValue","TextInput","testId","min","max","step","isRequired","required","isInvalid","length","isDisabled","onChange","e","parseResult","target","setInvalid","NumberEditor","props","FieldConnector","isInitiallyDisabled","defaultProps"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contentful/field-editor-number",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"module": "dist/field-editor-number.esm.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
@@ -23,13 +23,16 @@
|
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@contentful/f36-components": "^4.0.1",
|
|
25
25
|
"@contentful/f36-tokens": "^4.0.0",
|
|
26
|
-
"@contentful/field-editor-shared": "^1.1.
|
|
26
|
+
"@contentful/field-editor-shared": "^1.1.1",
|
|
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.1.
|
|
32
|
+
"@contentful/field-editor-test-utils": "^1.1.1",
|
|
33
|
+
"@testing-library/jest-dom": "^5.12.0",
|
|
34
|
+
"@testing-library/react": "^11.2.6",
|
|
35
|
+
"@testing-library/user-event": "^13.1.9"
|
|
33
36
|
},
|
|
34
37
|
"peerDependencies": {
|
|
35
38
|
"react": ">=16.8.0"
|
|
@@ -44,5 +47,5 @@
|
|
|
44
47
|
}
|
|
45
48
|
}
|
|
46
49
|
},
|
|
47
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "391dd70cdc8aeb7aa7e214149c89c07176ba860d"
|
|
48
51
|
}
|