@laerdal/life-react-components 1.9.4-dev.9 → 1.9.7-dev.1.full
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/dist/Button/Button.cjs +1 -1
- package/dist/Button/Button.cjs.map +1 -1
- package/dist/Button/Button.js +1 -1
- package/dist/Button/Button.js.map +1 -1
- package/dist/Card/CardMiddleSection.cjs +5 -5
- package/dist/Card/CardMiddleSection.cjs.map +1 -1
- package/dist/Card/CardMiddleSection.js +5 -5
- package/dist/Card/CardMiddleSection.js.map +1 -1
- package/dist/InputFields/NumberField.cjs +53 -118
- package/dist/InputFields/NumberField.cjs.map +1 -1
- package/dist/InputFields/NumberField.d.ts +0 -2
- package/dist/InputFields/NumberField.js +53 -117
- package/dist/InputFields/NumberField.js.map +1 -1
- package/package.json +4 -4
|
@@ -21,8 +21,6 @@ var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
|
21
21
|
|
|
22
22
|
var _Button = require("../Button");
|
|
23
23
|
|
|
24
|
-
var _common = require("../common");
|
|
25
|
-
|
|
26
24
|
var _icons = require("../icons");
|
|
27
25
|
|
|
28
26
|
var _styles = require("../styles");
|
|
@@ -33,7 +31,7 @@ var _types = require("../types");
|
|
|
33
31
|
|
|
34
32
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
35
33
|
|
|
36
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12
|
|
34
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12;
|
|
37
35
|
|
|
38
36
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
39
37
|
|
|
@@ -51,53 +49,41 @@ var LabelIcon = _styledComponents.default.div(_templateObject4 || (_templateObje
|
|
|
51
49
|
return props.size === _types.Size.Small ? '6px' : '8px';
|
|
52
50
|
});
|
|
53
51
|
|
|
54
|
-
var
|
|
52
|
+
var InputWrapper = _styledComponents.default.div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["\n margin: ", ";\n display: flex;\n flex-grow: 1;\n"])), function (props) {
|
|
53
|
+
return props.size === _types.Size.Small ? '14px 0 14px 16px' : '16px 0 16px 16px';
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
var PrefixContainer = _styledComponents.default.div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["\n margin-right: 4px;\n width: ", ";\n height: ", ";\n color: ", ";\n ", "\n"])), function (props) {
|
|
55
57
|
return props.size === _types.Size.Small ? '10px' : '11px';
|
|
56
58
|
}, function (props) {
|
|
57
59
|
return props.size === _types.Size.Small ? '20px' : '24px';
|
|
58
|
-
}, function (props) {
|
|
59
|
-
return props.disabled ? _styles.COLORS.neutral_300 : _styles.COLORS.neutral_500;
|
|
60
|
-
}, function (props) {
|
|
60
|
+
}, _styles.COLORS.neutral_500, function (props) {
|
|
61
61
|
return props.size === _types.Size.Small ? (0, _typography.ComponentSStyling)(_typography.ComponentTextStyle.Regular, null) : (0, _typography.ComponentMStyling)(_typography.ComponentTextStyle.Regular, null);
|
|
62
|
-
}, function (props) {
|
|
63
|
-
return props.size === _types.Size.Small ? '14px 0 14px 16px' : '16px 0 16px 16px';
|
|
64
62
|
});
|
|
65
63
|
|
|
66
|
-
var OperatorWrapper = _styledComponents.default.div(
|
|
64
|
+
var OperatorWrapper = _styledComponents.default.div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n margin:", ";\n svg {\n height: 14px;\n width: 14px;\n }\n .divider {\n margin: 16px 0;\n background: ", ";\n width: 1px;\n }\n"])), function (props) {
|
|
67
65
|
return props.size === _types.Size.Medium ? '4px 0' : '';
|
|
68
|
-
}, _styles.COLORS.neutral_200
|
|
66
|
+
}, _styles.COLORS.neutral_200);
|
|
69
67
|
|
|
70
|
-
var NumberInput = _styledComponents.default.input(
|
|
68
|
+
var NumberInput = _styledComponents.default.input(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2.default)(["\n width: 100%; \n height: ", "; \n border: none;\n color: ", ";\n padding: 0; \n ", "\n\n &:hover, &:focus, &:active {\n outline: none;\n }\n\n &::placeholder {\n ", "\n }\n"])), function (props) {
|
|
69
|
+
return props.fieldSize === _types.Size.Small ? '20px' : '24px';
|
|
70
|
+
}, _styles.COLORS.neutral_500, function (props) {
|
|
71
71
|
return props.fieldSize === _types.Size.Small ? (0, _typography.ComponentSStyling)(_typography.ComponentTextStyle.Regular, _styles.COLORS.black) : (0, _typography.ComponentMStyling)(_typography.ComponentTextStyle.Regular, _styles.COLORS.black);
|
|
72
|
-
}, function (props) {
|
|
73
|
-
return props.type === 'NumberField' ? "\n padding: ".concat(props.fieldSize === _types.Size.Small ? '14px 97px 14px 16px' : '16px 97px 16px 16px', ";\n padding-left: ").concat(props.hasPrefix ? '30px' : '', ";\n ") : '';
|
|
74
|
-
}, function (props) {
|
|
75
|
-
return props.type === 'NumberInput' ? "\n padding: ".concat(props.fieldSize === _types.Size.Small ? '14px 48px' : '16px 48px', ";\n ") : '';
|
|
76
72
|
}, function (props) {
|
|
77
73
|
return props.fieldSize === _types.Size.Small ? (0, _typography.ComponentSStyling)(_typography.ComponentTextStyle.Italic, null) : (0, _typography.ComponentMStyling)(_typography.ComponentTextStyle.Italic, null);
|
|
78
|
-
}
|
|
74
|
+
});
|
|
79
75
|
|
|
80
|
-
var NoteLabel = _styledComponents.default.div(
|
|
76
|
+
var NoteLabel = _styledComponents.default.div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2.default)(["\n color: ", ";\n ", " \n"])), _styles.COLORS.neutral_500, function (props) {
|
|
81
77
|
return props.size === _types.Size.Small ? (0, _typography.ComponentXXSStyling)(_typography.ComponentTextStyle.Regular, null) : (0, _typography.ComponentXSStyling)(_typography.ComponentTextStyle.Regular, null);
|
|
82
78
|
});
|
|
83
79
|
|
|
84
|
-
var NoteIcon = _styledComponents.default.div(
|
|
80
|
+
var NoteIcon = _styledComponents.default.div(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2.default)(["\n svg {\n height: 16px;\n }\n"])));
|
|
85
81
|
|
|
86
|
-
var NoteContainer = _styledComponents.default.div(
|
|
82
|
+
var NoteContainer = _styledComponents.default.div(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n margin-top: 5px;\n\n &.valid {\n ", " {\n color: ", ";\n }\n\n ", " {\n svg path {\n fill: ", ";\n }\n }\n }\n\n &.invalid {\n ", " {\n color: ", ";\n }\n\n ", " {\n svg path {\n fill: ", ";\n }\n }\n }\n"])), NoteLabel, _styles.COLORS.correct_500, NoteIcon, _styles.COLORS.correct_500, NoteLabel, _styles.COLORS.critical_500, NoteIcon, _styles.COLORS.critical_500);
|
|
87
83
|
|
|
88
|
-
var InputContainer = _styledComponents.default.div(
|
|
89
|
-
return props.type === 'NumberField' ? '160px' : '144px';
|
|
90
|
-
}, function (props) {
|
|
84
|
+
var InputContainer = _styledComponents.default.div(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2.default)(["\n min-width: 160px;\n height: ", ";\n display: flex;\n border: 0;\n border-radius: 4px;\n box-shadow: inset 0px 0px 0px 1px ", ";\n\n &:hover:not(.disabled):not(.readOnly):not(.valid):not(.invalid) {\n box-shadow: inset 0px 0px 0px 2px ", ";\n }\n\n &:focus-within:not(.disabled):not(.readOnly):not(.valid):not(.invalid) {\n box-shadow: inset 0px 0px 0px 2px ", ";\n }\n\n &:active:not(.disabled):not(.readOnly):not(.valid):not(.invalid) {\n box-shadow: inset 0px 0px 0px 2px ", ";\n }\n\n &.disabled {\n box-shadow: inset 0px 0px 0px 1px ", ";\n cursor: not-allowed;\n \n ", "{\n color: ", ";\n }\n\n ", "{\n color: ", ";\n cursor: not-allowed;\n pointer-events: none;\n\n &::placeholder {\n color: ", ";\n }\n }\n }\n\n &.readOnly {\n background: ", ";\n box-shadow: inset 0px 0px 0px 1px ", ";\n cursor: not-allowed;\n\n ", "{\n background: ", ";\n cursor: not-allowed;\n pointer-events: none;\n color: ", ";\n }\n }\n\n &.valid {\n box-shadow: inset 0px 0px 0px 2px ", ";\n }\n\n &.invalid {\n box-shadow: inset 0px 0px 0px 2px ", ";\n }\n"])), function (props) {
|
|
91
85
|
return props.size === _types.Size.Small ? '48px' : '56px';
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
var LeftOperator = _styledComponents.default.div(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2.default)(["\n position: absolute;\n top: ", ";\n left: 0;\n z-index: ", ";\n"])), function (props) {
|
|
95
|
-
return props.size === _types.Size.Small ? '0' : '4px';
|
|
96
|
-
}, _styles.Z_INDEXES.focus);
|
|
97
|
-
|
|
98
|
-
var RightOperator = _styledComponents.default.div(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2.default)(["\n position: absolute;\n top: ", ";\n right: 0;\n z-index: ", ";\n"])), function (props) {
|
|
99
|
-
return props.size === _types.Size.Small ? '0' : '4px';
|
|
100
|
-
}, _styles.Z_INDEXES.focus);
|
|
86
|
+
}, _styles.COLORS.neutral_400, _styles.COLORS.primary_700, _styles.COLORS.primary_800, _styles.COLORS.primary_800, _styles.COLORS.neutral_100, PrefixContainer, _styles.COLORS.neutral_300, NumberInput, _styles.COLORS.neutral_300, _styles.COLORS.neutral_300, _styles.COLORS.neutral_100, _styles.COLORS.neutral_300, NumberInput, _styles.COLORS.neutral_100, _styles.COLORS.neutral_500, _styles.COLORS.correct_400, _styles.COLORS.critical_400);
|
|
101
87
|
|
|
102
88
|
var NumberField = function NumberField(_ref) {
|
|
103
89
|
var _ref$size = _ref.size,
|
|
@@ -118,9 +104,7 @@ var NumberField = function NumberField(_ref) {
|
|
|
118
104
|
_ref$readOnly = _ref.readOnly,
|
|
119
105
|
readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
|
|
120
106
|
valid = _ref.valid,
|
|
121
|
-
defaultVal = _ref.defaultVal
|
|
122
|
-
placeholder = _ref.placeholder,
|
|
123
|
-
type = _ref.type;
|
|
107
|
+
defaultVal = _ref.defaultVal;
|
|
124
108
|
|
|
125
109
|
var _React$useState = React.useState(defaultVal ? defaultVal.toString() : ''),
|
|
126
110
|
_React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
|
|
@@ -128,7 +112,6 @@ var NumberField = function NumberField(_ref) {
|
|
|
128
112
|
setUserInput = _React$useState2[1];
|
|
129
113
|
|
|
130
114
|
var fieldState = valid !== undefined ? valid ? 'valid' : 'invalid' : undefined;
|
|
131
|
-
var elementRef = (0, _common.useFocusVisibleRef)();
|
|
132
115
|
|
|
133
116
|
var handleKeyPress = function handleKeyPress(e) {
|
|
134
117
|
switch (e.key) {
|
|
@@ -207,12 +190,40 @@ var NumberField = function NumberField(_ref) {
|
|
|
207
190
|
return operatorState;
|
|
208
191
|
};
|
|
209
192
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
193
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Container, {
|
|
194
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(LabelContainer, {
|
|
195
|
+
size: size,
|
|
196
|
+
children: [required && /*#__PURE__*/(0, _jsxRuntime.jsx)(LabelIcon, {
|
|
213
197
|
size: size,
|
|
214
|
-
|
|
215
|
-
children:
|
|
198
|
+
"data-testid": 'labelIcon',
|
|
199
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.SystemIcons.Asterisk, {
|
|
200
|
+
color: _styles.COLORS.critical_500
|
|
201
|
+
})
|
|
202
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(LabelText, {
|
|
203
|
+
children: label
|
|
204
|
+
})]
|
|
205
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(InputContainer, {
|
|
206
|
+
size: size,
|
|
207
|
+
"data-testid": 'inputContainer',
|
|
208
|
+
tabIndex: -1,
|
|
209
|
+
className: 'numberField'.concat(disabled ? ' disabled' : '').concat(readOnly ? ' readOnly' : '').concat(fieldState ? " ".concat(fieldState) : ''),
|
|
210
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(InputWrapper, {
|
|
211
|
+
size: size,
|
|
212
|
+
children: [prefix && /*#__PURE__*/(0, _jsxRuntime.jsx)(PrefixContainer, {
|
|
213
|
+
size: size,
|
|
214
|
+
children: prefix
|
|
215
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(NumberInput, {
|
|
216
|
+
fieldSize: size,
|
|
217
|
+
placeholder: "Enter number",
|
|
218
|
+
value: userInput,
|
|
219
|
+
tabIndex: disabled || readOnly ? -1 : 0,
|
|
220
|
+
onChange: function onChange(e) {
|
|
221
|
+
return handleInput(e);
|
|
222
|
+
},
|
|
223
|
+
onKeyDown: function onKeyDown(e) {
|
|
224
|
+
return handleKeyPress(e);
|
|
225
|
+
}
|
|
226
|
+
})]
|
|
216
227
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(OperatorWrapper, {
|
|
217
228
|
"data-testid": 'operators',
|
|
218
229
|
size: size,
|
|
@@ -244,80 +255,6 @@ var NumberField = function NumberField(_ref) {
|
|
|
244
255
|
})
|
|
245
256
|
})]
|
|
246
257
|
})]
|
|
247
|
-
});
|
|
248
|
-
};
|
|
249
|
-
|
|
250
|
-
var renderNumberInputElements = function renderNumberInputElements() {
|
|
251
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
252
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(LeftOperator, {
|
|
253
|
-
"data-testid": 'leftOperator',
|
|
254
|
-
size: size,
|
|
255
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.IconButton, {
|
|
256
|
-
tabIndex: -1,
|
|
257
|
-
variant: "secondary",
|
|
258
|
-
shape: "square",
|
|
259
|
-
action: function action() {
|
|
260
|
-
return subtractInterval();
|
|
261
|
-
},
|
|
262
|
-
useTransparentBackground: true,
|
|
263
|
-
disabled: disabled || readOnly || isLocked(userInput, 'subtract'),
|
|
264
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.SystemIcons.Minus, {
|
|
265
|
-
size: "14px"
|
|
266
|
-
})
|
|
267
|
-
})
|
|
268
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(RightOperator, {
|
|
269
|
-
"data-testid": 'rightOperator',
|
|
270
|
-
size: size,
|
|
271
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.IconButton, {
|
|
272
|
-
tabIndex: -1,
|
|
273
|
-
variant: "secondary",
|
|
274
|
-
shape: "square",
|
|
275
|
-
action: function action() {
|
|
276
|
-
return addInterval();
|
|
277
|
-
},
|
|
278
|
-
useTransparentBackground: true,
|
|
279
|
-
disabled: disabled || readOnly || isLocked(userInput, 'add'),
|
|
280
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.SystemIcons.Plus, {
|
|
281
|
-
size: "14px"
|
|
282
|
-
})
|
|
283
|
-
})
|
|
284
|
-
})]
|
|
285
|
-
});
|
|
286
|
-
};
|
|
287
|
-
|
|
288
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Container, {
|
|
289
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(LabelContainer, {
|
|
290
|
-
size: size,
|
|
291
|
-
children: [required && /*#__PURE__*/(0, _jsxRuntime.jsx)(LabelIcon, {
|
|
292
|
-
size: size,
|
|
293
|
-
"data-testid": 'labelIcon',
|
|
294
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.SystemIcons.Asterisk, {
|
|
295
|
-
color: _styles.COLORS.critical_500
|
|
296
|
-
})
|
|
297
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(LabelText, {
|
|
298
|
-
children: label
|
|
299
|
-
})]
|
|
300
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(InputContainer, {
|
|
301
|
-
type: type,
|
|
302
|
-
size: size,
|
|
303
|
-
tabIndex: -1,
|
|
304
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(NumberInput, {
|
|
305
|
-
type: type,
|
|
306
|
-
"data-testid": 'numberInput',
|
|
307
|
-
fieldSize: size,
|
|
308
|
-
hasPrefix: !!prefix,
|
|
309
|
-
placeholder: placeholder ? placeholder : 'Enter number',
|
|
310
|
-
value: userInput,
|
|
311
|
-
ref: elementRef,
|
|
312
|
-
tabIndex: disabled || readOnly ? -1 : 0,
|
|
313
|
-
onChange: function onChange(e) {
|
|
314
|
-
return handleInput(e);
|
|
315
|
-
},
|
|
316
|
-
onKeyDown: function onKeyDown(e) {
|
|
317
|
-
return handleKeyPress(e);
|
|
318
|
-
},
|
|
319
|
-
className: 'numberField'.concat(disabled ? ' disabled' : '').concat(readOnly ? ' readOnly' : '').concat(fieldState ? " ".concat(fieldState) : '')
|
|
320
|
-
}), type === 'NumberField' && renderNumberFieldElements(), type === 'NumberInput' && renderNumberInputElements()]
|
|
321
258
|
}), note && /*#__PURE__*/(0, _jsxRuntime.jsxs)(NoteContainer, {
|
|
322
259
|
className: 'noteField'.concat(fieldState ? " ".concat(fieldState) : ''),
|
|
323
260
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(NoteIcon, {
|
|
@@ -344,9 +281,7 @@ NumberField.propTypes = {
|
|
|
344
281
|
disabled: _propTypes.default.bool,
|
|
345
282
|
readOnly: _propTypes.default.bool,
|
|
346
283
|
valid: _propTypes.default.bool,
|
|
347
|
-
defaultVal: _propTypes.default.number
|
|
348
|
-
placeholder: _propTypes.default.string,
|
|
349
|
-
type: _propTypes.default.oneOf(['NumberField', 'NumberInput']).isRequired
|
|
284
|
+
defaultVal: _propTypes.default.number
|
|
350
285
|
};
|
|
351
286
|
var _default = NumberField;
|
|
352
287
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/InputFields/NumberField.tsx"],"names":["Container","styled","div","LabelContainer","COLORS","neutral_500","props","size","Size","Small","ComponentTextStyle","Regular","LabelText","LabelIcon","PrefixContainer","disabled","neutral_300","OperatorWrapper","Medium","neutral_200","Z_INDEXES","focus","NumberInput","input","neutral_400","fieldSize","black","type","hasPrefix","Italic","primary_800","focusStyles","primary_700","neutral_100","correct_400","critical_400","NoteLabel","NoteIcon","NoteContainer","correct_500","critical_500","InputContainer","LeftOperator","RightOperator","NumberField","label","note","noteIcon","required","prefix","interval","minValue","maxValue","allowNegative","decimalPrecision","readOnly","valid","defaultVal","placeholder","React","useState","toString","userInput","setUserInput","fieldState","undefined","elementRef","handleKeyPress","e","key","addInterval","subtractInterval","handleInput","preventDefault","simpleRegex","RegExp","decimalFormationRegEx","negativeDecimalFormationRegEx","allowNegativeRegex","decimalPrecisionRegex","negativeAndDecimalRegex","val","target","value","length","charAt","test","isInRange","replace","indexOf","lastIndexOf","includes","isDecimal","x","parseFloat","toFixed","parseInt","isNaN","Math","round","pow","isLocked","operator","operatorState","renderNumberFieldElements","renderNumberInputElements","concat"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport styled from 'styled-components';\nimport { IconButton } from '../Button';\nimport { useFocusVisibleRef } from '../common';\nimport { SystemIcons } from '../icons';\nimport { COLORS, focusStyles, Z_INDEXES } from '../styles';\nimport { ComponentMStyling, ComponentSStyling, ComponentTextStyle, ComponentXXSStyling, ComponentXSStyling } from '../styles/typography';\nimport { Size } from '../types';\n\nconst Container = styled.div``;\n\nconst LabelContainer = styled.div<{size: Size}>`\n margin-bottom: 4px;\n color: ${COLORS.neutral_500};\n display: flex;\n ${props=>props.size===Size.Small ? ComponentXXSStyling(ComponentTextStyle.Regular,null) : ComponentXSStyling(ComponentTextStyle.Regular,null)}\n`;\n\nconst LabelText = styled.div``;\n\nconst LabelIcon = styled.div<{size: Size}>`\n margin-right: ${props => props.size === Size.Small?'6px':'8px'};\n svg {\n height: 9px;\n width: 9px;\n }\n`;\n\nconst PrefixContainer = styled.div<{size: Size, disabled: boolean}>`\n width: ${props => props.size === Size.Small?'10px':'11px'};\n height: ${props => props.size === Size.Small?'20px':'24px'};\n color: ${props => props.disabled ? COLORS.neutral_300 : COLORS.neutral_500};\n ${props=>props.size===Size.Small?ComponentSStyling(ComponentTextStyle.Regular,null):ComponentMStyling(ComponentTextStyle.Regular,null)}\n position: absolute;\n padding: ${props => props.size === Size.Small?'14px 0 14px 16px':'16px 0 16px 16px'};\n`;\n\nconst OperatorWrapper = styled.div<{size: Size}>`\n position: absolute;\n top: 0;\n right:0;\n display: flex;\n margin:${props => props.size === Size.Medium?'4px 0':''};\n svg {\n height: 14px;\n width: 14px;\n }\n .divider {\n margin: 16px 0;\n background: ${COLORS.neutral_200};\n width: 1px;\n }\n\n z-index: ${Z_INDEXES.focus};\n`;\n\nconst NumberInput = styled.input<{fieldSize: Size, hasPrefix: boolean, type: string}>`\n width: 100%; \n border: none;\n border-radius: 4px;\n box-shadow: inset 0px 0px 0px 1px ${COLORS.neutral_400};\n outline: none;\n color: ${COLORS.neutral_500};\n ${props => props.fieldSize === Size.Small?ComponentSStyling(ComponentTextStyle.Regular, COLORS.black):ComponentMStyling(ComponentTextStyle.Regular, COLORS.black)}\n\n ${props => props.type === 'NumberField' ? `\n padding: ${props.fieldSize === Size.Small?'14px 97px 14px 16px':'16px 97px 16px 16px'};\n padding-left: ${props.hasPrefix ? '30px':''};\n ` : ''}\n\n ${props => props.type === 'NumberInput' ? `\n padding: ${props.fieldSize === Size.Small?'14px 48px':'16px 48px'};\n ` : ''}\n\n &::placeholder {\n ${props => props.fieldSize === Size.Small?ComponentSStyling(ComponentTextStyle.Italic, null):ComponentMStyling(ComponentTextStyle.Italic, null)}\n }\n\n &:focus:not(.focus-visible):not(.disabled):not(.readOnly):not(.valid):not(.invalid) {\n box-shadow: inset 0px 0px 0px 2px ${COLORS.primary_800};\n }\n \n &.focus-visible {\n ${focusStyles}\n }\n\n &:hover:not(.disabled):not(.readOnly):not(.valid):not(.invalid) {\n box-shadow: inset 0px 0px 0px 2px ${COLORS.primary_700};\n }\n\n &.disabled {\n box-shadow: inset 0px 0px 0px 1px ${COLORS.neutral_100};\n cursor: not-allowed;\n color: ${COLORS.neutral_300};\n cursor: not-allowed;\n pointer-events: none;\n\n &::placeholder {\n color: ${COLORS.neutral_300};\n }\n }\n\n &.readOnly {\n background: ${COLORS.neutral_100};\n box-shadow: inset 0px 0px 0px 1px ${COLORS.neutral_300};\n cursor: not-allowed;\n background: ${COLORS.neutral_100};\n cursor: not-allowed;\n pointer-events: none;\n color: ${COLORS.neutral_500};\n }\n\n &.valid {\n box-shadow: inset 0px 0px 0px 2px ${COLORS.correct_400};\n }\n\n &.invalid {\n box-shadow: inset 0px 0px 0px 2px ${COLORS.critical_400};\n }\n`;\n\nconst NoteLabel = styled.div<{size: Size}>`\n color: ${COLORS.neutral_500};\n ${props=>props.size===Size.Small ? ComponentXXSStyling(ComponentTextStyle.Regular,null) : ComponentXSStyling(ComponentTextStyle.Regular,null)} \n`;\n\nconst NoteIcon = styled.div`\n svg {\n height: 16px;\n }\n`;\n\nconst NoteContainer = styled.div`\n display: flex;\n margin-top: 5px;\n\n &.valid {\n ${NoteLabel} {\n color: ${COLORS.correct_500};\n }\n\n ${NoteIcon} {\n svg path {\n fill: ${COLORS.correct_500};\n }\n }\n }\n\n &.invalid {\n ${NoteLabel} {\n color: ${COLORS.critical_500};\n }\n\n ${NoteIcon} {\n svg path {\n fill: ${COLORS.critical_500};\n }\n }\n }\n`;\n\nconst InputContainer = styled.div<{size: Size, type:string}>`\n min-width: ${props => props.type === 'NumberField' ? '160px' : '144px'};\n height: ${props => props.size === Size.Small?'48px':'56px'};\n display: flex;\n position: relative;\n`;\n\nconst LeftOperator = styled.div<{size: Size}>`\n position: absolute;\n top: ${props => props.size === Size.Small ? '0' : '4px'};\n left: 0;\n z-index: ${Z_INDEXES.focus};\n`;\n\nconst RightOperator = styled.div<{size: Size}>`\n position: absolute;\n top: ${props => props.size === Size.Small ? '0' : '4px'};\n right: 0;\n z-index: ${Z_INDEXES.focus};\n`;\n\ntype NumberFieldProps = {\n size: Size.Small | Size.Medium;\n prefix?: string;\n interval?: number;\n label: string;\n note?: string;\n noteIcon?: React.ReactNode;\n required?: boolean;\n minValue?: number;\n maxValue?: number;\n allowNegative?: boolean;\n decimalPrecision?: number;\n disabled?: boolean;\n readOnly?: boolean;\n valid?: boolean;\n defaultVal?: number;\n placeholder?: string;\n type: 'NumberField' | 'NumberInput';\n}\n\nconst NumberField: React.FunctionComponent<NumberFieldProps> = (\n {size=Size.Small, \n label,\n note, \n noteIcon, \n required, \n prefix,\n interval=1, \n minValue, \n maxValue, \n allowNegative, \n decimalPrecision, \n disabled=false, \n readOnly=false, \n valid,\n defaultVal,\n placeholder,\n type}) => {\n const [userInput, setUserInput] = React.useState(defaultVal?defaultVal.toString():'');\n let fieldState = (valid!==undefined) ? (valid?'valid':'invalid') : undefined;\n\n const elementRef = useFocusVisibleRef();\n\n const handleKeyPress = (e: React.KeyboardEvent<HTMLInputElement>) => {\n switch(e.key){\n case 'ArrowUp': addInterval();\n break;\n case 'ArrowDown': subtractInterval();\n break;\n default: break;\n }\n }\n\n const handleInput = (e: React.ChangeEvent<HTMLInputElement>) => {\n e.preventDefault();\n let simpleRegex = new RegExp(/^[0-9]\\d*$/);\n let decimalFormationRegEx = new RegExp(/^[0-9]\\d*\\.$/); \n let negativeDecimalFormationRegEx = new RegExp(/^[-][0-9]\\d*\\.$/);\n \n let allowNegativeRegex = new RegExp(/^[-][0-9]\\d*$/); \n let decimalPrecisionRegex = decimalPrecision ? new RegExp(`^[0-9]\\\\d*\\\\.[0-9]\\\\d{0,${decimalPrecision-1}}$`) : undefined;\n let negativeAndDecimalRegex = (decimalPrecision && allowNegative) ? new RegExp(`^[-][0-9]\\\\d*\\\\.[0-9]\\\\d{0,${decimalPrecision-1}}$`): undefined;\n \n let val = e.target.value; \n if(val!==''){\n if(allowNegative && decimalPrecision){\n if(val.length===1 && val.charAt(0)==='-')\n setUserInput(val);\n else{\n if((negativeAndDecimalRegex!.test(val) || decimalPrecisionRegex!.test(val)) && isInRange(val,true))\n setUserInput(val);\n\n else if((negativeDecimalFormationRegEx.test(val) || decimalFormationRegEx.test(val)) && isInRange(val.replace('.',''),true))\n setUserInput(val);\n \n else if((allowNegativeRegex.test(val) || simpleRegex.test(val)) && isInRange(val,true))\n setUserInput(val);\n }\n }\n\n else if(allowNegative){\n if(val.length===1 && val.charAt(0)==='-')\n setUserInput(val);\n else if((allowNegativeRegex.test(val) || simpleRegex.test(val)) && isInRange(val,false))\n setUserInput(val);\n }\n\n else if(decimalPrecision && (val.indexOf('.')===val.lastIndexOf('.')) && isInRange(val,true)){\n if(decimalPrecisionRegex!.test(val))\n setUserInput(val);\n else if(decimalFormationRegEx.test(val))\n setUserInput(val);\n else if(!val.includes('.') && simpleRegex.test(val))\n setUserInput(val);\n }\n\n else if(simpleRegex.test(val) && isInRange(val, false)){\n setUserInput(val);\n }\n }\n\n if(val==='')\n setUserInput('');\n }\n\n const isInRange = (value: string, isDecimal: boolean): boolean => {\n let x = isDecimal ? parseFloat(value).toFixed(decimalPrecision) : parseInt(value);\n if(minValue && minValue>x)\n return false;\n else if(maxValue && maxValue<x)\n return false;\n else\n return true;\n }\n\n const addInterval = () => {\n let val = decimalPrecision ? parseFloat(userInput) : parseInt(userInput);\n val = isNaN(val) && userInput === '' ? (minValue ? minValue-1 : 0) : val;\n if(!isNaN(val)){\n if(decimalPrecision)\n val = Math.round((val+interval)*Math.pow(10,decimalPrecision!))/Math.pow(10,decimalPrecision!);\n else\n val +=1;\n\n if(maxValue && maxValue>=val)\n setUserInput(val.toString());\n else if(!maxValue)\n setUserInput(val.toString());\n }\n }\n\n const subtractInterval = () => {\n let val = decimalPrecision ? parseFloat(userInput) : parseInt(userInput);\n val = isNaN(val) && userInput === '' ? (maxValue ? maxValue+1 : 0) : val;\n if(!isNaN(val)){\n if(decimalPrecision)\n val = Math.round((val-interval)*Math.pow(10,decimalPrecision!))/Math.pow(10,decimalPrecision!);\n else\n val -=1;\n \n if(minValue && minValue<=val)\n allowNegative ? setUserInput(val.toString()) : (val>=0 ? setUserInput(val.toString()) : undefined);\n else if(!minValue)\n allowNegative ? setUserInput(val.toString()) : (val>=0 ? setUserInput(val.toString()) : undefined);\n }\n }\n\n const isLocked = (input: string, operator: string): boolean => {\n let val = decimalPrecision ? parseFloat(input) : parseInt(input);\n val = isNaN(val) && userInput === '' ? 0 : val;\n let operatorState = false;\n if(operator === 'add' && maxValue)\n operatorState = val < maxValue ? false : true;\n \n if(operator === 'subtract' && minValue)\n operatorState = val > minValue ? false : true;\n\n if(operator === 'subtract' && !minValue && !allowNegative)\n operatorState = val > 0 ? false : true;\n\n return operatorState;\n }\n\n const renderNumberFieldElements = () => {\n return(\n <>\n {prefix && <PrefixContainer size={size} disabled={disabled}>\n {prefix}\n </PrefixContainer>}\n\n <OperatorWrapper data-testid={'operators'} size={size}>\n <IconButton tabIndex={-1} variant='secondary' shape='square' action={()=>subtractInterval()} useTransparentBackground disabled={disabled || readOnly || isLocked(userInput,'subtract')}>\n <SystemIcons.Minus size='14px'/>\n </IconButton> \n <div className='divider'></div>\n <IconButton tabIndex={-1} variant='secondary' shape='square' action={()=>addInterval()} useTransparentBackground disabled={disabled || readOnly || isLocked(userInput,'add')}>\n <SystemIcons.Plus size='14px'/>\n </IconButton>\n </OperatorWrapper>\n </>)\n }\n\n const renderNumberInputElements = () => {\n return(\n <>\n <LeftOperator data-testid={'leftOperator'} size={size}>\n <IconButton tabIndex={-1} variant='secondary' shape='square' action={()=>subtractInterval()} useTransparentBackground disabled={disabled || readOnly || isLocked(userInput,'subtract')}>\n <SystemIcons.Minus size='14px'/>\n </IconButton>\n </LeftOperator>\n <RightOperator data-testid={'rightOperator'} size={size}>\n <IconButton tabIndex={-1} variant='secondary' shape='square' action={()=>addInterval()} useTransparentBackground disabled={disabled || readOnly || isLocked(userInput,'add')}>\n <SystemIcons.Plus size='14px'/>\n </IconButton>\n </RightOperator>\n </>)\n }\n\n return (\n <Container>\n <LabelContainer size={size}>\n {required && <LabelIcon size={size} data-testid={'labelIcon'}>\n <SystemIcons.Asterisk color={COLORS.critical_500}/>\n </LabelIcon>\n }\n <LabelText>\n {label}\n </LabelText>\n </LabelContainer>\n\n <InputContainer type={type} size={size} tabIndex={-1}>\n <NumberInput type={type} data-testid={'numberInput'} fieldSize={size} hasPrefix={!!prefix} placeholder={placeholder ? placeholder : 'Enter number'}\n value={userInput} ref={elementRef}\n tabIndex={(disabled || readOnly) ? -1 : 0} onChange={e=>handleInput(e)} onKeyDown={e=>handleKeyPress(e)}\n className={'numberField'.concat(disabled?' disabled':'')\n .concat(readOnly?' readOnly':'')\n .concat(fieldState?` ${fieldState}`:'')}/>\n \n {type === 'NumberField' && renderNumberFieldElements()}\n {type === 'NumberInput' && renderNumberInputElements()}\n </InputContainer>\n\n {note && <NoteContainer className={'noteField'.concat(fieldState?` ${fieldState}`:'')}>\n <NoteIcon>\n {noteIcon}\n </NoteIcon>\n <NoteLabel size={size}>\n {note}\n </NoteLabel> \n </NoteContainer>\n }\n </Container>\n ); \n}\n\nexport default NumberField;\n"],"file":"NumberField.cjs"}
|
|
1
|
+
{"version":3,"sources":["../../src/InputFields/NumberField.tsx"],"names":["Container","styled","div","LabelContainer","COLORS","neutral_500","props","size","Size","Small","ComponentTextStyle","Regular","LabelText","LabelIcon","InputWrapper","PrefixContainer","OperatorWrapper","Medium","neutral_200","NumberInput","input","fieldSize","black","Italic","NoteLabel","NoteIcon","NoteContainer","correct_500","critical_500","InputContainer","neutral_400","primary_700","primary_800","neutral_100","neutral_300","correct_400","critical_400","NumberField","label","note","noteIcon","required","prefix","interval","minValue","maxValue","allowNegative","decimalPrecision","disabled","readOnly","valid","defaultVal","React","useState","toString","userInput","setUserInput","fieldState","undefined","handleKeyPress","e","key","addInterval","subtractInterval","handleInput","preventDefault","simpleRegex","RegExp","decimalFormationRegEx","negativeDecimalFormationRegEx","allowNegativeRegex","decimalPrecisionRegex","negativeAndDecimalRegex","val","target","value","length","charAt","test","isInRange","replace","indexOf","lastIndexOf","includes","isDecimal","x","parseFloat","toFixed","parseInt","isNaN","Math","round","pow","isLocked","operator","operatorState","concat"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport styled from 'styled-components';\nimport { IconButton } from '../Button';\nimport { SystemIcons } from '../icons';\nimport { COLORS } from '../styles';\nimport { ComponentMStyling, ComponentSStyling, ComponentTextStyle, ComponentXXSStyling, ComponentXSStyling } from '../styles/typography';\nimport { Size } from '../types';\n\nconst Container = styled.div``;\n\nconst LabelContainer = styled.div<{size: Size}>`\n margin-bottom: 4px;\n color: ${COLORS.neutral_500};\n display: flex;\n ${props=>props.size===Size.Small ? ComponentXXSStyling(ComponentTextStyle.Regular,null) : ComponentXSStyling(ComponentTextStyle.Regular,null)}\n`;\n\nconst LabelText = styled.div``;\n\nconst LabelIcon = styled.div<{size: Size}>`\n margin-right: ${props => props.size === Size.Small?'6px':'8px'};\n svg {\n height: 9px;\n width: 9px;\n }\n`;\n\nconst InputWrapper = styled.div<{size: Size}>`\n margin: ${props => props.size === Size.Small?'14px 0 14px 16px':'16px 0 16px 16px'};\n display: flex;\n flex-grow: 1;\n`;\n\nconst PrefixContainer = styled.div<{size: Size}>`\n margin-right: 4px;\n width: ${props => props.size === Size.Small?'10px':'11px'};\n height: ${props => props.size === Size.Small?'20px':'24px'};\n color: ${COLORS.neutral_500};\n ${props=>props.size===Size.Small?ComponentSStyling(ComponentTextStyle.Regular,null):ComponentMStyling(ComponentTextStyle.Regular,null)}\n`;\n\nconst OperatorWrapper = styled.div<{size: Size}>`\n display: flex;\n margin:${props => props.size === Size.Medium?'4px 0':''};\n svg {\n height: 14px;\n width: 14px;\n }\n .divider {\n margin: 16px 0;\n background: ${COLORS.neutral_200};\n width: 1px;\n }\n`;\n\nconst NumberInput = styled.input<{fieldSize: Size}>`\n width: 100%; \n height: ${props => props.fieldSize === Size.Small?'20px':'24px'}; \n border: none;\n color: ${COLORS.neutral_500};\n padding: 0; \n ${props => props.fieldSize === Size.Small?ComponentSStyling(ComponentTextStyle.Regular, COLORS.black):ComponentMStyling(ComponentTextStyle.Regular, COLORS.black)}\n\n &:hover, &:focus, &:active {\n outline: none;\n }\n\n &::placeholder {\n ${props => props.fieldSize === Size.Small?ComponentSStyling(ComponentTextStyle.Italic, null):ComponentMStyling(ComponentTextStyle.Italic, null)}\n }\n`;\n\nconst NoteLabel = styled.div<{size: Size}>`\n color: ${COLORS.neutral_500};\n ${props=>props.size===Size.Small ? ComponentXXSStyling(ComponentTextStyle.Regular,null) : ComponentXSStyling(ComponentTextStyle.Regular,null)} \n`;\n\nconst NoteIcon = styled.div`\n svg {\n height: 16px;\n }\n`;\n\nconst NoteContainer = styled.div`\n display: flex;\n margin-top: 5px;\n\n &.valid {\n ${NoteLabel} {\n color: ${COLORS.correct_500};\n }\n\n ${NoteIcon} {\n svg path {\n fill: ${COLORS.correct_500};\n }\n }\n }\n\n &.invalid {\n ${NoteLabel} {\n color: ${COLORS.critical_500};\n }\n\n ${NoteIcon} {\n svg path {\n fill: ${COLORS.critical_500};\n }\n }\n }\n`;\n\nconst InputContainer = styled.div<{size: Size}>`\n min-width: 160px;\n height: ${props => props.size === Size.Small?'48px':'56px'};\n display: flex;\n border: 0;\n border-radius: 4px;\n box-shadow: inset 0px 0px 0px 1px ${COLORS.neutral_400};\n\n &:hover:not(.disabled):not(.readOnly):not(.valid):not(.invalid) {\n box-shadow: inset 0px 0px 0px 2px ${COLORS.primary_700};\n }\n\n &:focus-within:not(.disabled):not(.readOnly):not(.valid):not(.invalid) {\n box-shadow: inset 0px 0px 0px 2px ${COLORS.primary_800};\n }\n\n &:active:not(.disabled):not(.readOnly):not(.valid):not(.invalid) {\n box-shadow: inset 0px 0px 0px 2px ${COLORS.primary_800};\n }\n\n &.disabled {\n box-shadow: inset 0px 0px 0px 1px ${COLORS.neutral_100};\n cursor: not-allowed;\n \n ${PrefixContainer}{\n color: ${COLORS.neutral_300};\n }\n\n ${NumberInput}{\n color: ${COLORS.neutral_300};\n cursor: not-allowed;\n pointer-events: none;\n\n &::placeholder {\n color: ${COLORS.neutral_300};\n }\n }\n }\n\n &.readOnly {\n background: ${COLORS.neutral_100};\n box-shadow: inset 0px 0px 0px 1px ${COLORS.neutral_300};\n cursor: not-allowed;\n\n ${NumberInput}{\n background: ${COLORS.neutral_100};\n cursor: not-allowed;\n pointer-events: none;\n color: ${COLORS.neutral_500};\n }\n }\n\n &.valid {\n box-shadow: inset 0px 0px 0px 2px ${COLORS.correct_400};\n }\n\n &.invalid {\n box-shadow: inset 0px 0px 0px 2px ${COLORS.critical_400};\n }\n`;\n\ntype NumberFieldProps = {\n size: Size.Small | Size.Medium;\n prefix?: string;\n interval?: number;\n label: string;\n note?: string;\n noteIcon?: React.ReactNode;\n required?: boolean;\n minValue?: number;\n maxValue?: number;\n allowNegative?: boolean;\n decimalPrecision?: number;\n disabled?: boolean;\n readOnly?: boolean;\n valid?: boolean;\n defaultVal?: number;\n}\n\nconst NumberField: React.FunctionComponent<NumberFieldProps> = (\n {size=Size.Small, \n label,\n note, \n noteIcon, \n required, \n prefix,\n interval=1, \n minValue, \n maxValue, \n allowNegative, \n decimalPrecision, \n disabled=false, \n readOnly=false, \n valid,\n defaultVal}) => {\n const [userInput, setUserInput] = React.useState(defaultVal?defaultVal.toString():'');\n let fieldState = (valid!==undefined) ? (valid?'valid':'invalid') : undefined;\n\n const handleKeyPress = (e: React.KeyboardEvent<HTMLInputElement>) => {\n switch(e.key){\n case 'ArrowUp': addInterval();\n break;\n case 'ArrowDown': subtractInterval();\n break;\n default: break;\n }\n }\n\n const handleInput = (e: React.ChangeEvent<HTMLInputElement>) => {\n e.preventDefault();\n let simpleRegex = new RegExp(/^[0-9]\\d*$/);\n let decimalFormationRegEx = new RegExp(/^[0-9]\\d*\\.$/); \n let negativeDecimalFormationRegEx = new RegExp(/^[-][0-9]\\d*\\.$/);\n \n let allowNegativeRegex = new RegExp(/^[-][0-9]\\d*$/); \n let decimalPrecisionRegex = decimalPrecision ? new RegExp(`^[0-9]\\\\d*\\\\.[0-9]\\\\d{0,${decimalPrecision-1}}$`) : undefined;\n let negativeAndDecimalRegex = (decimalPrecision && allowNegative) ? new RegExp(`^[-][0-9]\\\\d*\\\\.[0-9]\\\\d{0,${decimalPrecision-1}}$`): undefined;\n \n let val = e.target.value; \n if(val!==''){\n if(allowNegative && decimalPrecision){\n if(val.length===1 && val.charAt(0)==='-')\n setUserInput(val);\n else{\n if((negativeAndDecimalRegex!.test(val) || decimalPrecisionRegex!.test(val)) && isInRange(val,true))\n setUserInput(val);\n\n else if((negativeDecimalFormationRegEx.test(val) || decimalFormationRegEx.test(val)) && isInRange(val.replace('.',''),true))\n setUserInput(val);\n \n else if((allowNegativeRegex.test(val) || simpleRegex.test(val)) && isInRange(val,true))\n setUserInput(val);\n }\n }\n\n else if(allowNegative){\n if(val.length===1 && val.charAt(0)==='-')\n setUserInput(val);\n else if((allowNegativeRegex.test(val) || simpleRegex.test(val)) && isInRange(val,false))\n setUserInput(val);\n }\n\n else if(decimalPrecision && (val.indexOf('.')===val.lastIndexOf('.')) && isInRange(val,true)){\n if(decimalPrecisionRegex!.test(val))\n setUserInput(val);\n else if(decimalFormationRegEx.test(val))\n setUserInput(val);\n else if(!val.includes('.') && simpleRegex.test(val))\n setUserInput(val);\n }\n\n else if(simpleRegex.test(val) && isInRange(val, false)){\n setUserInput(val);\n }\n }\n\n if(val==='')\n setUserInput('');\n }\n\n const isInRange = (value: string, isDecimal: boolean): boolean => {\n let x = isDecimal ? parseFloat(value).toFixed(decimalPrecision) : parseInt(value);\n if(minValue && minValue>x)\n return false;\n else if(maxValue && maxValue<x)\n return false;\n else\n return true;\n }\n\n const addInterval = () => {\n let val = decimalPrecision ? parseFloat(userInput) : parseInt(userInput);\n val = isNaN(val) && userInput === '' ? (minValue ? minValue-1 : 0) : val;\n if(!isNaN(val)){\n if(decimalPrecision)\n val = Math.round((val+interval)*Math.pow(10,decimalPrecision!))/Math.pow(10,decimalPrecision!);\n else\n val +=1;\n\n if(maxValue && maxValue>=val)\n setUserInput(val.toString());\n else if(!maxValue)\n setUserInput(val.toString());\n }\n }\n\n const subtractInterval = () => {\n let val = decimalPrecision ? parseFloat(userInput) : parseInt(userInput);\n val = isNaN(val) && userInput === '' ? (maxValue ? maxValue+1 : 0) : val;\n if(!isNaN(val)){\n if(decimalPrecision)\n val = Math.round((val-interval)*Math.pow(10,decimalPrecision!))/Math.pow(10,decimalPrecision!);\n else\n val -=1;\n \n if(minValue && minValue<=val)\n allowNegative ? setUserInput(val.toString()) : (val>=0 ? setUserInput(val.toString()) : undefined);\n else if(!minValue)\n allowNegative ? setUserInput(val.toString()) : (val>=0 ? setUserInput(val.toString()) : undefined);\n }\n }\n\n const isLocked = (input: string, operator: string): boolean => {\n let val = decimalPrecision ? parseFloat(input) : parseInt(input);\n val = isNaN(val) && userInput === '' ? 0 : val;\n let operatorState = false;\n if(operator === 'add' && maxValue)\n operatorState = val < maxValue ? false : true;\n \n if(operator === 'subtract' && minValue)\n operatorState = val > minValue ? false : true;\n\n if(operator === 'subtract' && !minValue && !allowNegative)\n operatorState = val > 0 ? false : true;\n\n return operatorState;\n }\n\n return (\n <Container>\n <LabelContainer size={size}>\n {required && <LabelIcon size={size} data-testid={'labelIcon'}>\n <SystemIcons.Asterisk color={COLORS.critical_500}/>\n </LabelIcon>\n }\n <LabelText>\n {label}\n </LabelText>\n </LabelContainer>\n\n <InputContainer size={size} data-testid={'inputContainer'} tabIndex={-1} className={'numberField'.concat(disabled?' disabled':'')\n .concat(readOnly?' readOnly':'')\n .concat(fieldState?` ${fieldState}`:'')}>\n <InputWrapper size={size}>\n {prefix && <PrefixContainer size={size}>\n {prefix}\n </PrefixContainer>}\n <NumberInput fieldSize={size} placeholder='Enter number' value={userInput} tabIndex={(disabled || readOnly) ? -1 : 0} onChange={e=>handleInput(e)} onKeyDown={e=>handleKeyPress(e)}/>\n </InputWrapper>\n\n <OperatorWrapper data-testid={'operators'} size={size}>\n <IconButton tabIndex={-1} variant='secondary' shape='square' action={()=>subtractInterval()} useTransparentBackground disabled={disabled || readOnly || isLocked(userInput,'subtract')}>\n <SystemIcons.Minus size='14px'/>\n </IconButton> \n <div className='divider'></div>\n <IconButton tabIndex={-1} variant='secondary' shape='square' action={()=>addInterval()} useTransparentBackground disabled={disabled || readOnly || isLocked(userInput,'add')}>\n <SystemIcons.Plus size='14px'/>\n </IconButton>\n </OperatorWrapper>\n </InputContainer>\n\n {note && <NoteContainer className={'noteField'.concat(fieldState?` ${fieldState}`:'')}>\n <NoteIcon>\n {noteIcon}\n </NoteIcon>\n <NoteLabel size={size}>\n {note}\n </NoteLabel> \n </NoteContainer>\n }\n </Container>\n ); \n}\n\nexport default NumberField;\n"],"file":"NumberField.cjs"}
|
|
@@ -16,8 +16,6 @@ declare type NumberFieldProps = {
|
|
|
16
16
|
readOnly?: boolean;
|
|
17
17
|
valid?: boolean;
|
|
18
18
|
defaultVal?: number;
|
|
19
|
-
placeholder?: string;
|
|
20
|
-
type: 'NumberField' | 'NumberInput';
|
|
21
19
|
};
|
|
22
20
|
declare const NumberField: React.FunctionComponent<NumberFieldProps>;
|
|
23
21
|
export default NumberField;
|