@laerdal/life-react-components 1.11.0-dev.2 → 1.11.0-dev.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/Button/DualFunctionButton.cjs +22 -11
  2. package/dist/Button/DualFunctionButton.cjs.map +1 -1
  3. package/dist/Button/DualFunctionButton.js +22 -11
  4. package/dist/Button/DualFunctionButton.js.map +1 -1
  5. package/dist/Button/Iconbutton.cjs +2 -2
  6. package/dist/Button/Iconbutton.cjs.map +1 -1
  7. package/dist/Button/Iconbutton.js +2 -2
  8. package/dist/Button/Iconbutton.js.map +1 -1
  9. package/dist/ChipsInput/ChipDropdownInput.cjs +32 -21
  10. package/dist/ChipsInput/ChipDropdownInput.cjs.map +1 -1
  11. package/dist/ChipsInput/ChipDropdownInput.js +32 -21
  12. package/dist/ChipsInput/ChipDropdownInput.js.map +1 -1
  13. package/dist/Dropdown/BasicDropdown.cjs +25 -13
  14. package/dist/Dropdown/BasicDropdown.cjs.map +1 -1
  15. package/dist/Dropdown/BasicDropdown.js +25 -13
  16. package/dist/Dropdown/BasicDropdown.js.map +1 -1
  17. package/dist/Dropdown/DropdownButton.cjs +19 -9
  18. package/dist/Dropdown/DropdownButton.cjs.map +1 -1
  19. package/dist/Dropdown/DropdownButton.js +19 -9
  20. package/dist/Dropdown/DropdownButton.js.map +1 -1
  21. package/dist/Dropdown/DropdownContent.cjs +45 -9
  22. package/dist/Dropdown/DropdownContent.cjs.map +1 -1
  23. package/dist/Dropdown/DropdownContent.d.ts +2 -0
  24. package/dist/Dropdown/DropdownContent.js +45 -9
  25. package/dist/Dropdown/DropdownContent.js.map +1 -1
  26. package/dist/Dropdown/DropdownFilter.cjs +21 -9
  27. package/dist/Dropdown/DropdownFilter.cjs.map +1 -1
  28. package/dist/Dropdown/DropdownFilter.js +21 -9
  29. package/dist/Dropdown/DropdownFilter.js.map +1 -1
  30. package/dist/GlobalNavigationBar/desktop/UserMenu.cjs +2 -4
  31. package/dist/GlobalNavigationBar/desktop/UserMenu.cjs.map +1 -1
  32. package/dist/GlobalNavigationBar/desktop/UserMenu.js +2 -4
  33. package/dist/GlobalNavigationBar/desktop/UserMenu.js.map +1 -1
  34. package/dist/InputFields/DatepickerField.cjs +2 -2
  35. package/dist/InputFields/DatepickerField.cjs.map +1 -1
  36. package/dist/InputFields/DatepickerField.js +2 -2
  37. package/dist/InputFields/DatepickerField.js.map +1 -1
  38. package/dist/InputFields/NumberField.cjs +24 -42
  39. package/dist/InputFields/NumberField.cjs.map +1 -1
  40. package/dist/InputFields/NumberField.d.ts +4 -5
  41. package/dist/InputFields/NumberField.js +24 -39
  42. package/dist/InputFields/NumberField.js.map +1 -1
  43. package/dist/QuizButton/QuizButton.cjs +3 -1
  44. package/dist/QuizButton/QuizButton.cjs.map +1 -1
  45. package/dist/QuizButton/QuizButton.js +3 -1
  46. package/dist/QuizButton/QuizButton.js.map +1 -1
  47. package/dist/Table/Table.cjs +45 -81
  48. package/dist/Table/Table.cjs.map +1 -1
  49. package/dist/Table/Table.js +45 -81
  50. package/dist/Table/Table.js.map +1 -1
  51. package/dist/Table/TableBody.cjs +13 -10
  52. package/dist/Table/TableBody.cjs.map +1 -1
  53. package/dist/Table/TableBody.d.ts +3 -1
  54. package/dist/Table/TableBody.js +14 -11
  55. package/dist/Table/TableBody.js.map +1 -1
  56. package/dist/Table/TableStyles.cjs +21 -17
  57. package/dist/Table/TableStyles.cjs.map +1 -1
  58. package/dist/Table/TableStyles.d.ts +1 -0
  59. package/dist/Table/TableStyles.js +17 -16
  60. package/dist/Table/TableStyles.js.map +1 -1
  61. package/dist/Table/TableTypes.d.ts +1 -2
  62. package/package.json +1 -1
@@ -3,9 +3,9 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
4
  import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
5
5
  import _pt from "prop-types";
6
- var _excluded = ["size", "label", "note", "noteIcon", "required", "prefix", "interval", "minValue", "maxValue", "allowNegative", "decimalPrecision", "disabled", "readOnly", "state", "value", "placeholder", "type", "onChange", "className"];
6
+ var _excluded = ["type", "size", "note", "noteIcon", "required", "prefix", "interval", "minValue", "maxValue", "allowNegative", "decimalPrecision", "disabled", "readOnly", "state", "value", "placeholder", "onChange", "className"];
7
7
 
8
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13;
8
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10;
9
9
 
10
10
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
11
11
 
@@ -23,14 +23,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
23
23
  import { jsxs as _jsxs } from "react/jsx-runtime";
24
24
  import { Fragment as _Fragment } from "react/jsx-runtime";
25
25
  var Container = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral([""])));
26
- var LabelContainer = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n margin-bottom: 4px;\n color: ", ";\n display: flex;\n ", "\n"])), COLORS.neutral_500, function (props) {
27
- return props.size === Size.Small ? ComponentXXSStyling(ComponentTextStyle.Regular, null) : ComponentXSStyling(ComponentTextStyle.Regular, null);
28
- });
29
- var LabelText = styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([""])));
30
- var LabelIcon = styled.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n margin-right: ", ";\n\n svg {\n height: 9px;\n width: 9px;\n }\n"])), function (props) {
31
- return props.size === Size.Small ? '6px' : '8px';
32
- });
33
- var PrefixContainer = styled.div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n width: ", ";\n height: ", ";\n color: ", ";\n ", "\n position: absolute;\n padding: ", ";\n"])), function (props) {
26
+ var PrefixContainer = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n width: ", ";\n height: ", ";\n color: ", ";\n ", "\n position: absolute;\n padding: ", ";\n"])), function (props) {
34
27
  return props.size === Size.Small ? '10px' : '11px';
35
28
  }, function (props) {
36
29
  return props.size === Size.Small ? '20px' : '24px';
@@ -41,10 +34,10 @@ var PrefixContainer = styled.div(_templateObject5 || (_templateObject5 = _tagged
41
34
  }, function (props) {
42
35
  return props.size === Size.Small ? '14px 0 14px 16px' : '16px 0 16px 16px';
43
36
  });
44
- var OperatorWrapper = styled.div(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n right: 0;\n display: flex;\n margin: ", ";\n\n svg {\n height: 14px;\n width: 14px;\n }\n\n .divider {\n margin: 16px 0;\n background: ", ";\n width: 1px;\n }\n"])), function (props) {
37
+ var OperatorWrapper = styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n right: 0;\n display: flex;\n margin: ", ";\n\n svg {\n height: 14px;\n width: 14px;\n }\n\n .divider {\n margin: 16px 0;\n background: ", ";\n width: 1px;\n }\n"])), function (props) {
45
38
  return props.size === Size.Medium ? '4px 0' : '';
46
39
  }, COLORS.neutral_200);
47
- var NumberInput = styled.input(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n width: 100%;\n border: none;\n border-radius: 4px;\n box-shadow: inset 0 0 0 1px ", ";\n outline: none;\n color: ", ";\n\n ", "\n ", "\n ", "\n &::placeholder {\n ", "\n }\n\n &:focus:not(.focus-visible):not(.disabled):not(.readOnly):not(.valid):not(.invalid) {\n box-shadow: inset 0 0 0 2px ", ";\n }\n\n &.focus-visible {\n ", "\n }\n\n &:hover:not(.disabled):not(.readOnly):not(.valid):not(.invalid) {\n box-shadow: inset 0 0 0 2px ", ";\n }\n\n &.disabled {\n box-shadow: inset 0 0 0 1px ", ";\n cursor: not-allowed;\n color: ", ";\n cursor: not-allowed;\n pointer-events: none;\n\n &::placeholder {\n color: ", ";\n }\n }\n\n &.readOnly {\n background: ", ";\n box-shadow: inset 0 0 0 1px ", ";\n cursor: not-allowed;\n background: ", ";\n cursor: not-allowed;\n pointer-events: none;\n color: ", ";\n }\n\n &.valid {\n box-shadow: inset 0 0 0 2px ", ";\n }\n\n &.invalid {\n box-shadow: inset 0 0 0 2px ", ";\n }\n"])), COLORS.neutral_400, COLORS.neutral_500, function (props) {
40
+ var NumberInput = styled.input(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n width: 100%;\n border: none;\n border-radius: 4px;\n box-shadow: inset 0 0 0 1px ", ";\n outline: none;\n color: ", ";\n\n ", "\n ", "\n ", "\n &::placeholder {\n ", "\n }\n\n &:focus:not(.focus-visible):not(.disabled):not(.readOnly):not(.valid):not(.invalid) {\n box-shadow: inset 0 0 0 2px ", ";\n }\n\n &.focus-visible {\n ", "\n }\n\n &:hover:not(.disabled):not(.readOnly):not(.valid):not(.invalid) {\n box-shadow: inset 0 0 0 2px ", ";\n }\n\n &.disabled {\n box-shadow: inset 0 0 0 1px ", ";\n cursor: not-allowed;\n color: ", ";\n pointer-events: none;\n\n &::placeholder {\n color: ", ";\n }\n }\n\n &.readOnly {\n background: ", ";\n box-shadow: inset 0 0 0 1px ", ";\n cursor: not-allowed;\n background: ", ";\n pointer-events: none;\n color: ", ";\n }\n\n &.valid {\n box-shadow: inset 0 0 0 2px ", ";\n }\n\n &.invalid {\n box-shadow: inset 0 0 0 2px ", ";\n }\n"])), COLORS.neutral_400, COLORS.neutral_500, function (props) {
48
41
  return props.fieldSize === Size.Small ? ComponentSStyling(ComponentTextStyle.Regular, COLORS.black) : ComponentMStyling(ComponentTextStyle.Regular, COLORS.black);
49
42
  }, function (props) {
50
43
  return props.type === 'NumberField' ? "\n padding: ".concat(props.fieldSize === Size.Small ? '14px 97px 14px 16px' : '16px 97px 16px 16px', ";\n padding-left: ").concat(props.hasPrefix ? '30px' : '', ";\n ") : '';
@@ -53,26 +46,27 @@ var NumberInput = styled.input(_templateObject7 || (_templateObject7 = _taggedTe
53
46
  }, function (props) {
54
47
  return props.fieldSize === Size.Small ? ComponentSStyling(ComponentTextStyle.Italic, null) : ComponentMStyling(ComponentTextStyle.Italic, null);
55
48
  }, COLORS.primary_800, focusStyles, COLORS.primary_700, COLORS.neutral_100, COLORS.neutral_300, COLORS.neutral_300, COLORS.neutral_100, COLORS.neutral_300, COLORS.neutral_100, COLORS.neutral_500, COLORS.correct_400, COLORS.critical_400);
56
- var NoteLabel = styled.div(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n color: ", ";\n ", "\n"])), COLORS.neutral_500, function (props) {
49
+ var NoteLabel = styled.div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n color: ", ";\n ", "\n"])), COLORS.neutral_500, function (props) {
57
50
  return props.size === Size.Small ? ComponentXXSStyling(ComponentTextStyle.Regular, null) : ComponentXSStyling(ComponentTextStyle.Regular, null);
58
51
  });
59
- var NoteIcon = styled.div(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n svg {\n height: 16px;\n }\n"])));
60
- var NoteContainer = styled.div(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\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, COLORS.correct_500, NoteIcon, COLORS.correct_500, NoteLabel, COLORS.critical_500, NoteIcon, COLORS.critical_500);
61
- var InputContainer = styled.div(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["\n min-width: ", ";\n height: ", ";\n display: flex;\n position: relative;\n\n input.focus-visible ~ div.operator {\n z-index: ", ";\n }\n"])), function (props) {
52
+ var NoteIcon = styled.div(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n svg {\n height: 16px;\n }\n"])));
53
+ var NoteContainer = styled.div(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\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, COLORS.correct_500, NoteIcon, COLORS.correct_500, NoteLabel, COLORS.critical_500, NoteIcon, COLORS.critical_500);
54
+ var InputContainer = styled.div(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n min-width: ", ";\n height: ", ";\n display: flex;\n position: relative;\n\n input.focus-visible ~ div.operator {\n z-index: ", ";\n }\n"])), function (props) {
62
55
  return props.type === 'NumberField' ? '160px' : '144px';
63
56
  }, function (props) {
64
57
  return props.size === Size.Small ? '48px' : '56px';
65
58
  }, Z_INDEXES.focus);
66
- var LeftOperator = styled.div(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["\n position: absolute;\n top: ", ";\n left: 0;\n"])), function (props) {
59
+ var LeftOperator = styled.div(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n position: absolute;\n top: ", ";\n left: 0;\n"])), function (props) {
67
60
  return props.size === Size.Small ? '0' : '4px';
68
61
  });
69
- var RightOperator = styled.div(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n position: absolute;\n top: ", ";\n right: 0;\n"])), function (props) {
62
+ var RightOperator = styled.div(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n position: absolute;\n top: ", ";\n right: 0;\n"])), function (props) {
70
63
  return props.size === Size.Small ? '0' : '4px';
71
64
  });
72
65
  var NumberField = /*#__PURE__*/React.forwardRef(function (props, ref) {
73
- var _props$size = props.size,
74
- size = _props$size === void 0 ? Size.Small : _props$size,
75
- label = props.label,
66
+ var _props$type = props.type,
67
+ type = _props$type === void 0 ? 'NumberField' : _props$type,
68
+ _props$size = props.size,
69
+ size = _props$size === void 0 ? Size.Medium : _props$size,
76
70
  note = props.note,
77
71
  noteIcon = props.noteIcon,
78
72
  required = props.required,
@@ -88,7 +82,6 @@ var NumberField = /*#__PURE__*/React.forwardRef(function (props, ref) {
88
82
  state = props.state,
89
83
  value = props.value,
90
84
  placeholder = props.placeholder,
91
- type = props.type,
92
85
  onChange = props.onChange,
93
86
  className = props.className,
94
87
  rest = _objectWithoutProperties(props, _excluded);
@@ -99,13 +92,16 @@ var NumberField = /*#__PURE__*/React.forwardRef(function (props, ref) {
99
92
  setUserInput = _React$useState2[1];
100
93
 
101
94
  var elementRef = useFocusVisibleRef();
95
+ React.useEffect(function () {
96
+ return setUserInput("".concat(value !== null && value !== void 0 ? value : ''));
97
+ }, [value]);
102
98
  React.useImperativeHandle(ref, function () {
103
99
  return elementRef.current;
104
100
  }, [elementRef]);
105
101
 
106
102
  var setVal = function setVal(e) {
107
103
  setUserInput(e);
108
- onChange && onChange(e);
104
+ onChange && onChange(+e);
109
105
  };
110
106
 
111
107
  var handleKeyPress = function handleKeyPress(e) {
@@ -273,18 +269,7 @@ var NumberField = /*#__PURE__*/React.forwardRef(function (props, ref) {
273
269
  };
274
270
 
275
271
  return /*#__PURE__*/_jsxs(Container, {
276
- children: [/*#__PURE__*/_jsxs(LabelContainer, {
277
- size: size,
278
- children: [required && /*#__PURE__*/_jsx(LabelIcon, {
279
- size: size,
280
- "data-testid": 'labelIcon',
281
- children: /*#__PURE__*/_jsx(SystemIcons.Asterisk, {
282
- color: COLORS.critical_500
283
- })
284
- }), /*#__PURE__*/_jsx(LabelText, {
285
- children: label
286
- })]
287
- }), /*#__PURE__*/_jsxs(InputContainer, {
272
+ children: [/*#__PURE__*/_jsxs(InputContainer, {
288
273
  type: type,
289
274
  size: size,
290
275
  tabIndex: -1,
@@ -303,6 +288,7 @@ var NumberField = /*#__PURE__*/React.forwardRef(function (props, ref) {
303
288
  onKeyDown: function onKeyDown(e) {
304
289
  return handleKeyPress(e);
305
290
  },
291
+ required: required,
306
292
  className: 'numberField'.concat(disabled ? ' disabled' : '').concat(readOnly ? ' readOnly' : '').concat(state ? " ".concat(state) : '').concat(className ? " ".concat(className) : '')
307
293
  }, rest)), type === 'NumberField' && renderNumberFieldElements(), type === 'NumberInput' && renderNumberInputElements()]
308
294
  }), note && /*#__PURE__*/_jsxs(NoteContainer, {
@@ -319,14 +305,13 @@ var NumberField = /*#__PURE__*/React.forwardRef(function (props, ref) {
319
305
  NumberField.propTypes = {
320
306
  prefix: _pt.string,
321
307
  interval: _pt.number,
322
- label: _pt.string.isRequired,
323
- note: _pt.string,
324
- noteIcon: _pt.node,
325
308
  minValue: _pt.number,
326
309
  maxValue: _pt.number,
327
310
  allowNegative: _pt.bool,
328
311
  decimalPrecision: _pt.number,
329
- type: _pt.oneOf(['NumberField', 'NumberInput']).isRequired,
312
+ note: _pt.string,
313
+ noteIcon: _pt.node,
314
+ type: _pt.oneOf(['NumberField', 'NumberInput']),
330
315
  value: _pt.number,
331
316
  onChange: _pt.func
332
317
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/InputFields/NumberField.tsx"],"names":["React","styled","IconButton","useFocusVisibleRef","SystemIcons","COLORS","focusStyles","Z_INDEXES","ComponentMStyling","ComponentSStyling","ComponentTextStyle","ComponentXXSStyling","ComponentXSStyling","Size","Container","div","LabelContainer","neutral_500","props","size","Small","Regular","LabelText","LabelIcon","PrefixContainer","disabled","neutral_300","OperatorWrapper","Medium","neutral_200","NumberInput","input","neutral_400","fieldSize","black","type","hasPrefix","Italic","primary_800","primary_700","neutral_100","correct_400","critical_400","NoteLabel","NoteIcon","NoteContainer","correct_500","critical_500","InputContainer","focus","LeftOperator","RightOperator","NumberField","forwardRef","ref","label","note","noteIcon","required","prefix","interval","minValue","maxValue","allowNegative","decimalPrecision","readOnly","state","value","placeholder","onChange","className","rest","useState","toString","userInput","setUserInput","elementRef","useImperativeHandle","current","setVal","e","handleKeyPress","key","addInterval","subtractInterval","handleInput","preventDefault","simpleRegex","RegExp","decimalFormationRegEx","negativeDecimalFormationRegEx","allowNegativeRegex","decimalPrecisionRegex","undefined","negativeAndDecimalRegex","val","target","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 {\n ComponentMStyling,\n ComponentSStyling,\n ComponentTextStyle,\n ComponentXXSStyling,\n ComponentXSStyling\n} from '../styles/typography';\nimport {Size, States} 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\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\n svg {\n height: 14px;\n width: 14px;\n }\n\n .divider {\n margin: 16px 0;\n background: ${COLORS.neutral_200};\n width: 1px;\n }\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 0 0 0 1px ${COLORS.neutral_400};\n outline: none;\n color: ${COLORS.neutral_500};\n\n ${props => props.fieldSize === Size.Small ? ComponentSStyling(ComponentTextStyle.Regular, COLORS.black) : ComponentMStyling(ComponentTextStyle.Regular, COLORS.black)}\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 ${props => props.type === 'NumberInput' ? `\n padding: ${props.fieldSize === Size.Small ? '14px 48px' : '16px 48px'};\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 0 0 0 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 0 0 0 2px ${COLORS.primary_700};\n }\n\n &.disabled {\n box-shadow: inset 0 0 0 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 0 0 0 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 0 0 0 2px ${COLORS.correct_400};\n }\n\n &.invalid {\n box-shadow: inset 0 0 0 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 input.focus-visible ~ div.operator {\n z-index: ${Z_INDEXES.focus};\n }\n`;\n\nconst LeftOperator = styled.div<{ size: Size }>`\n position: absolute;\n top: ${props => props.size === Size.Small ? '0' : '4px'};\n left: 0;\n`;\n\nconst RightOperator = styled.div<{ size: Size }>`\n position: absolute;\n top: ${props => props.size === Size.Small ? '0' : '4px'};\n right: 0;\n`;\n\ntype NumberFieldProps =\n Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'onKeyDown' | 'onClick' | 'tabIndex' | 'size' | 'value' | 'prefix' | 'min' | 'max'>\n & {\n size?: Size.Small | Size.Medium;\n prefix?: string;\n interval?: number;\n label: string;\n note?: string;\n noteIcon?: React.ReactNode;\n\n minValue?: number;\n maxValue?: number;\n allowNegative?: boolean;\n decimalPrecision?: number;\n\n state?: States.Valid | States.Invalid;\n\n type: 'NumberField' | 'NumberInput';\n value?: number;\n onChange?: (e: string) => void;\n}\n\nconst NumberField = React.forwardRef<HTMLInputElement, NumberFieldProps>((props, ref) => {\n const {\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,\n readOnly,\n state,\n value,\n placeholder,\n type,\n onChange,\n className,\n ...rest\n } = props;\n\n const [userInput, setUserInput] = React.useState(value ? value.toString() : '');\n\n const elementRef = useFocusVisibleRef();\n\n React.useImperativeHandle(ref, () => elementRef.current, [elementRef]);\n\n const setVal = (e: string) => {\n setUserInput(e);\n onChange && onChange(e);\n }\n\n const handleKeyPress = (e: React.KeyboardEvent<HTMLInputElement>) => {\n switch (e.key) {\n case 'ArrowUp':\n addInterval();\n break;\n case 'ArrowDown':\n subtractInterval();\n break;\n default:\n 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 setVal(val);\n else {\n if ((negativeAndDecimalRegex!.test(val) || decimalPrecisionRegex!.test(val)) && isInRange(val, true))\n setVal(val);\n\n else if ((negativeDecimalFormationRegEx.test(val) || decimalFormationRegEx.test(val)) && isInRange(val.replace('.', ''), true))\n setVal(val);\n\n else if ((allowNegativeRegex.test(val) || simpleRegex.test(val)) && isInRange(val, true))\n setVal(val);\n }\n } else if (allowNegative) {\n if (val.length === 1 && val.charAt(0) === '-')\n setVal(val);\n else if ((allowNegativeRegex.test(val) || simpleRegex.test(val)) && isInRange(val, false))\n setVal(val);\n } else if (decimalPrecision && (val.indexOf('.') === val.lastIndexOf('.')) && isInRange(val, true)) {\n if (decimalPrecisionRegex!.test(val))\n setVal(val);\n else if (decimalFormationRegEx.test(val))\n setVal(val);\n else if (!val.includes('.') && simpleRegex.test(val))\n setVal(val);\n } else if (simpleRegex.test(val) && isInRange(val, false)) {\n setVal(val);\n }\n }\n\n if (val === '')\n setVal('');\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 setVal(val.toString());\n else if (!maxValue)\n setVal(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) || !minValue) {\n if (allowNegative || val >= 0) {\n setVal(val.toString());\n }\n }\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;\n\n if (operator === 'subtract' && minValue)\n operatorState = val <= minValue;\n\n if (operator === 'subtract' && !minValue && !allowNegative)\n operatorState = val <= 0;\n\n return operatorState;\n }\n\n const renderNumberFieldElements = () => {\n return (\n <>\n {prefix && <PrefixContainer size={size} disabled={!!disabled} className=\"operator\">\n {prefix}\n </PrefixContainer>}\n\n <OperatorWrapper data-testid={'operators'} size={size} className=\"operator\">\n <IconButton tabIndex={0} variant=\"secondary\" shape=\"square\" action={() => subtractInterval()}\n useTransparentBackground disabled={disabled || readOnly || isLocked(userInput, 'subtract')}>\n <SystemIcons.Minus size=\"14px\"/>\n </IconButton>\n <div className=\"divider\"></div>\n <IconButton tabIndex={0} variant=\"secondary\" shape=\"square\" action={() => addInterval()}\n 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} className=\"operator\">\n <IconButton tabIndex={0} variant=\"secondary\" shape=\"square\" action={() => subtractInterval()}\n useTransparentBackground disabled={disabled || readOnly || isLocked(userInput, 'subtract')}>\n <SystemIcons.Minus size=\"14px\"/>\n </IconButton>\n </LeftOperator>\n <RightOperator data-testid={'rightOperator'} size={size} className=\"operator\">\n <IconButton tabIndex={0} variant=\"secondary\" shape=\"square\" action={() => addInterval()}\n 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}\n data-testid={'numberInput'}\n fieldSize={size}\n hasPrefix={!!prefix}\n placeholder={placeholder ? placeholder : 'Enter number'}\n value={userInput}\n ref={elementRef}\n tabIndex={(disabled || readOnly) ? -1 : 0}\n onChange={e => handleInput(e)}\n onKeyDown={e => handleKeyPress(e)}\n className={'numberField'.concat(disabled ? ' disabled' : '')\n .concat(readOnly ? ' readOnly' : '')\n .concat(state ? ` ${state}` : '')\n .concat(className ? ` ${className}` : '')}\n {...rest}/>\n\n {type === 'NumberField' && renderNumberFieldElements()}\n {type === 'NumberInput' && renderNumberInputElements()}\n </InputContainer>\n\n {note && <NoteContainer className={'noteField'.concat(state ? ` ${state}` : '')}>\n <NoteIcon>\n {noteIcon}\n </NoteIcon>\n <NoteLabel size={size}>\n {note}\n </NoteLabel>\n </NoteContainer>\n }\n </Container>\n );\n }\n )\n;\n\nexport default NumberField;\n"],"file":"NumberField.js"}
1
+ {"version":3,"sources":["../../src/InputFields/NumberField.tsx"],"names":["React","styled","IconButton","useFocusVisibleRef","SystemIcons","COLORS","focusStyles","Z_INDEXES","ComponentMStyling","ComponentSStyling","ComponentTextStyle","ComponentXXSStyling","ComponentXSStyling","Size","Container","div","PrefixContainer","props","size","Small","disabled","neutral_300","neutral_500","Regular","OperatorWrapper","Medium","neutral_200","NumberInput","input","neutral_400","fieldSize","black","type","hasPrefix","Italic","primary_800","primary_700","neutral_100","correct_400","critical_400","NoteLabel","NoteIcon","NoteContainer","correct_500","critical_500","InputContainer","focus","LeftOperator","RightOperator","NumberField","forwardRef","ref","note","noteIcon","required","prefix","interval","minValue","maxValue","allowNegative","decimalPrecision","readOnly","state","value","placeholder","onChange","className","rest","useState","toString","userInput","setUserInput","elementRef","useEffect","useImperativeHandle","current","setVal","e","handleKeyPress","key","addInterval","subtractInterval","handleInput","preventDefault","simpleRegex","RegExp","decimalFormationRegEx","negativeDecimalFormationRegEx","allowNegativeRegex","decimalPrecisionRegex","undefined","negativeAndDecimalRegex","val","target","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 {\n ComponentMStyling,\n ComponentSStyling,\n ComponentTextStyle,\n ComponentXXSStyling,\n ComponentXSStyling\n} from '../styles/typography';\nimport {Size, States} from '../types';\n\nconst Container = styled.div``;\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\n svg {\n height: 14px;\n width: 14px;\n }\n\n .divider {\n margin: 16px 0;\n background: ${COLORS.neutral_200};\n width: 1px;\n }\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 0 0 0 1px ${COLORS.neutral_400};\n outline: none;\n color: ${COLORS.neutral_500};\n\n ${props => props.fieldSize === Size.Small ? ComponentSStyling(ComponentTextStyle.Regular, COLORS.black) : ComponentMStyling(ComponentTextStyle.Regular, COLORS.black)}\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 ${props => props.type === 'NumberInput' ? `\n padding: ${props.fieldSize === Size.Small ? '14px 48px' : '16px 48px'};\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 0 0 0 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 0 0 0 2px ${COLORS.primary_700};\n }\n\n &.disabled {\n box-shadow: inset 0 0 0 1px ${COLORS.neutral_100};\n cursor: not-allowed;\n color: ${COLORS.neutral_300};\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 0 0 0 1px ${COLORS.neutral_300};\n cursor: not-allowed;\n background: ${COLORS.neutral_100};\n pointer-events: none;\n color: ${COLORS.neutral_500};\n }\n\n &.valid {\n box-shadow: inset 0 0 0 2px ${COLORS.correct_400};\n }\n\n &.invalid {\n box-shadow: inset 0 0 0 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 input.focus-visible ~ div.operator {\n z-index: ${Z_INDEXES.focus};\n }\n`;\n\nconst LeftOperator = styled.div<{ size: Size }>`\n position: absolute;\n top: ${props => props.size === Size.Small ? '0' : '4px'};\n left: 0;\n`;\n\nconst RightOperator = styled.div<{ size: Size }>`\n position: absolute;\n top: ${props => props.size === Size.Small ? '0' : '4px'};\n right: 0;\n`;\n\ntype NumberFieldProps =\n Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'onKeyDown' | 'onClick' | 'tabIndex' | 'size' | 'value' | 'prefix' | 'min' | 'max'>\n & {\n size?: Size.Small | Size.Medium;\n prefix?: string;\n interval?: number;\n\n minValue?: number;\n maxValue?: number;\n allowNegative?: boolean;\n decimalPrecision?: number;\n\n state?: States.Valid | States.Invalid;\n note?: string;\n noteIcon?: React.ReactNode;\n\n type?: 'NumberField' | 'NumberInput';\n value?: number;\n onChange?: (e: number) => void;\n}\n\nconst NumberField = React.forwardRef<HTMLInputElement, NumberFieldProps>((props, ref) => {\n const {\n type = 'NumberField',\n size = Size.Medium,\n note,\n noteIcon,\n required,\n prefix,\n interval = 1,\n minValue,\n maxValue,\n allowNegative,\n decimalPrecision,\n disabled,\n readOnly,\n state,\n value,\n placeholder,\n onChange,\n className,\n ...rest\n } = props;\n\n const [userInput, setUserInput] = React.useState(value ? value.toString() : '');\n\n const elementRef = useFocusVisibleRef();\n\n React.useEffect(() => setUserInput(`${value ?? ''}`), [value]);\n\n React.useImperativeHandle(ref, () => elementRef.current, [elementRef]);\n\n const setVal = (e: string) => {\n setUserInput(e);\n onChange && onChange(+e);\n }\n\n const handleKeyPress = (e: React.KeyboardEvent<HTMLInputElement>) => {\n switch (e.key) {\n case 'ArrowUp':\n addInterval();\n break;\n case 'ArrowDown':\n subtractInterval();\n break;\n default:\n 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 setVal(val);\n else {\n if ((negativeAndDecimalRegex!.test(val) || decimalPrecisionRegex!.test(val)) && isInRange(val, true))\n setVal(val);\n\n else if ((negativeDecimalFormationRegEx.test(val) || decimalFormationRegEx.test(val)) && isInRange(val.replace('.', ''), true))\n setVal(val);\n\n else if ((allowNegativeRegex.test(val) || simpleRegex.test(val)) && isInRange(val, true))\n setVal(val);\n }\n } else if (allowNegative) {\n if (val.length === 1 && val.charAt(0) === '-')\n setVal(val);\n else if ((allowNegativeRegex.test(val) || simpleRegex.test(val)) && isInRange(val, false))\n setVal(val);\n } else if (decimalPrecision && (val.indexOf('.') === val.lastIndexOf('.')) && isInRange(val, true)) {\n if (decimalPrecisionRegex!.test(val))\n setVal(val);\n else if (decimalFormationRegEx.test(val))\n setVal(val);\n else if (!val.includes('.') && simpleRegex.test(val))\n setVal(val);\n } else if (simpleRegex.test(val) && isInRange(val, false)) {\n setVal(val);\n }\n }\n\n if (val === '')\n setVal('');\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 setVal(val.toString());\n else if (!maxValue)\n setVal(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) || !minValue) {\n if (allowNegative || val >= 0) {\n setVal(val.toString());\n }\n }\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;\n\n if (operator === 'subtract' && minValue)\n operatorState = val <= minValue;\n\n if (operator === 'subtract' && !minValue && !allowNegative)\n operatorState = val <= 0;\n\n return operatorState;\n }\n\n const renderNumberFieldElements = () => {\n return (\n <>\n {prefix && <PrefixContainer size={size} disabled={!!disabled} className=\"operator\">\n {prefix}\n </PrefixContainer>}\n\n <OperatorWrapper data-testid={'operators'} size={size} className=\"operator\">\n <IconButton tabIndex={0} variant=\"secondary\" shape=\"square\" action={() => subtractInterval()}\n useTransparentBackground disabled={disabled || readOnly || isLocked(userInput, 'subtract')}>\n <SystemIcons.Minus size=\"14px\"/>\n </IconButton>\n <div className=\"divider\"></div>\n <IconButton tabIndex={0} variant=\"secondary\" shape=\"square\" action={() => addInterval()}\n 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} className=\"operator\">\n <IconButton tabIndex={0} variant=\"secondary\" shape=\"square\" action={() => subtractInterval()}\n useTransparentBackground disabled={disabled || readOnly || isLocked(userInput, 'subtract')}>\n <SystemIcons.Minus size=\"14px\"/>\n </IconButton>\n </LeftOperator>\n <RightOperator data-testid={'rightOperator'} size={size} className=\"operator\">\n <IconButton tabIndex={0} variant=\"secondary\" shape=\"square\" action={() => addInterval()}\n useTransparentBackground disabled={disabled || readOnly || isLocked(userInput, 'add')}>\n <SystemIcons.Plus size=\"14px\"/>\n </IconButton>\n </RightOperator>\n </>)\n }\n\n return (\n <Container>\n <InputContainer type={type} size={size} tabIndex={-1}>\n <NumberInput type={type}\n data-testid={'numberInput'}\n fieldSize={size}\n hasPrefix={!!prefix}\n placeholder={placeholder ? placeholder : 'Enter number'}\n value={userInput}\n ref={elementRef}\n tabIndex={(disabled || readOnly) ? -1 : 0}\n onChange={e => handleInput(e)}\n onKeyDown={e => handleKeyPress(e)}\n required={required}\n className={'numberField'.concat(disabled ? ' disabled' : '')\n .concat(readOnly ? ' readOnly' : '')\n .concat(state ? ` ${state}` : '')\n .concat(className ? ` ${className}` : '')}\n {...rest}/>\n\n {type === 'NumberField' && renderNumberFieldElements()}\n {type === 'NumberInput' && renderNumberInputElements()}\n </InputContainer>\n\n {note && <NoteContainer className={'noteField'.concat(state ? ` ${state}` : '')}>\n <NoteIcon>\n {noteIcon}\n </NoteIcon>\n <NoteLabel size={size}>\n {note}\n </NoteLabel>\n </NoteContainer>\n }\n </Container>\n );\n }\n )\n;\n\nexport default NumberField;\n"],"file":"NumberField.js"}
@@ -108,7 +108,9 @@ var QuizButton = function QuizButton(_ref) {
108
108
  onMouseDown: _.defaultOnMouseDownHandler,
109
109
  size: size,
110
110
  className: 'quiz-button '.concat(selected ? ' selected' : '').concat(disabled ? ' disabled' : '').concat(resultType ? ' result ' + resultType : '').concat(className ? ' ' + className : ''),
111
- "data-testid": 'container'
111
+ "data-testid": 'container',
112
+ "aria-checked": selected,
113
+ role: type === 'radio' ? 'radio' : 'checkbox'
112
114
  }, rest), {}, {
113
115
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(ButtonContainer, {
114
116
  "data-testid": 'btnContainer',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/QuizButton/QuizButton.tsx"],"names":["TextContainer","styled","div","COLORS","accent1_20","props","size","Size","Small","Large","ComponentTextStyle","Regular","TextWrapper","ButtonContainer","accent1_100","accent1_600","OptionContainer","accent1_200","neutral_100","neutral_20","neutral_300","correct_20","correct_400","critical_20","critical_500","warning_20","warning_400","focusStyles","accent1_300","isSelected","accent1_700","accent1_400","accent1_800","renderResultContent","resultType","white","QuizButton","text","type","onClick","id","className","selected","disabled","Medium","rest","defaultOnMouseDownHandler","concat"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport styled from 'styled-components';\nimport {Checkbox, COLORS, defaultOnMouseDownHandler, focusStyles, RadioButton, Size, SystemIcons} from '..';\nimport { ComponentLStyling, ComponentMStyling, ComponentSStyling, ComponentTextStyle } from '../styles/typography';\n\nconst TextContainer = styled.div<{size: Size}>`\n border-radius: 0 8px 8px 0;\n display: flex;\n background: ${COLORS.accent1_20};\n width: 100%;\n\n transition: background 100ms ease-in-out;\n align-items: center;\n\n padding: ${props=>props.size===Size.Small?'6px 8px':(props.size===Size.Large?'20px 16px':'12px 16px')};\n ${props=>props.size===Size.Small ? ComponentSStyling(ComponentTextStyle.Regular,null) : (props.size===Size.Large ? ComponentLStyling(ComponentTextStyle.Regular,null) : ComponentMStyling(ComponentTextStyle.Regular,null))}\n`;\n\nconst TextWrapper = styled.div<{size:Size}>``;\n\nconst ButtonContainer = styled.div<{size: Size}>`\n border-radius: 8px 0 0 8px;\n display: flex;\n background: ${COLORS.accent1_100};\n\n width: ${props=>props.size===Size.Small?'32px':(props.size===Size.Large?'64px':'48px')};\n\n transition: background 100ms ease-in-out;\n\n .quiz-button-result-icon {\n height: ${props=>props.size===Size.Small?'16px':(props.size===Size.Large?'32px':'24px')};\n width: ${props=>props.size===Size.Small?'32px':(props.size===Size.Large?'64px':'48px')};\n }\n\n .radio-button-icon, .checkbox-icon {\n margin: auto;\n min-width: unset;\n background: transparent;\n\n svg {\n color: ${COLORS.accent1_600};\n }\n\n &:hover {\n background: transparent;\n }\n\n &:active {\n background: transparent;\n }\n }\n\n .small {\n min-width: 32px;\n min-height: 32px;\n .radio-button-icon, .checkbox-icon {\n svg {\n height: 16px;\n width: 16px;\n }\n }\n }\n\n .medium {\n min-width: 48px;\n min-height: 48px;\n .radio-button-icon, .checkbox-icon {\n svg {\n height: 24px;\n width: 24px;\n }\n }\n }\n\n .large {\n min-width: 64px;\n min-height: 64px;\n .radio-button-icon, .checkbox-icon {\n svg {\n height: 32px;\n width: 32px;\n }\n }\n }\n`;\n\nconst OptionContainer = styled.div<{isSelected:boolean, size:Size}>`\n display: flex;\n flex-direction: row;\n cursor: pointer;\n max-width: 65ch; \n word-break: break-word;\n\n min-height: ${props=>props.size===Size.Small?'32px':(props.size===Size.Large?'64px':'48px')};\n margin-bottom: ${props=>props.size===Size.Small?'16px':(props.size===Size.Large?'32px':'24px')};\n\n &.selected {\n ${TextContainer} {\n background: ${COLORS.accent1_100};\n }\n ${ButtonContainer} {\n background: ${COLORS.accent1_200};\n }\n }\n \n &.disabled {\n cursor: not-allowed;\n \n ${ButtonContainer} {\n pointer-events: none;\n background: ${COLORS.neutral_100};\n }\n ${TextContainer} {\n pointer-events: none;\n background: ${COLORS.neutral_20};\n color: ${COLORS.neutral_300};\n }\n\n .radio-button-icon, .checkbox-icon {\n background: transparent;\n }\n }\n\n &.correct {\n ${TextContainer} { \n background: ${COLORS.correct_20};\n }\n ${ButtonContainer} {\n background: ${COLORS.correct_400};\n svg {\n margin: auto;\n }\n }\n }\n\n &.incorrect {\n ${TextContainer} { \n background: ${COLORS.critical_20};\n }\n ${ButtonContainer} {\n background: ${COLORS.critical_500};\n svg {\n margin: auto;\n }\n }\n }\n\n &.partial {\n ${TextContainer} { \n background: ${COLORS.warning_20};\n }\n ${ButtonContainer} {\n background: ${COLORS.warning_400};\n svg {\n margin: auto;\n }\n }\n }\n\n &:focus,\n &.focus-state {\n ${focusStyles}\n }\n\n &:hover,\n &.hover-state {\n .radio-button-icon, .checkbox-icon {\n background: transparent;\n }\n }\n\n &:active,\n &.active-state {\n .radio-button-icon, .checkbox-icon {\n background: transparent;\n }\n }\n\n &:hover:not(.disabled):not(.result),\n &.hover-state {\n ${ButtonContainer} {\n background: ${COLORS.accent1_300};\n }\n ${TextContainer} {\n background: ${props=>props.isSelected ? COLORS.accent1_200 : COLORS.accent1_100};\n }\n \n .radio-button-icon, .checkbox-icon {\n background: transparent;\n svg {\n color: ${COLORS.accent1_700};\n }\n }\n }\n\n &:active:not(.disabled):not(.result),\n &.active-state {\n ${ButtonContainer} {\n background: ${COLORS.accent1_400};\n transition: none;\n }\n ${TextContainer} {\n background: ${props=>props.isSelected ? COLORS.accent1_300 : COLORS.accent1_200};\n transition: none;\n }\n\n .radio-button-icon, .checkbox-icon {\n background: transparent;\n svg {\n color: ${COLORS.accent1_800};\n }\n }\n }\n`;\n\nconst renderResultContent = (resultType: string) => {\n switch(resultType){\n case 'correct' : return <SystemIcons.CheckMark color={COLORS.white} className={'quiz-button-result-icon'}/>;\n\n case 'incorrect' : return <SystemIcons.Close color={COLORS.white} className={'quiz-button-result-icon'}/>;\n\n default : return <SystemIcons.Close color={COLORS.white} className={'quiz-button-result-icon'}/>;\n }\n};\n\ntype QuizButtonProps = {\n resultType?: 'correct' | 'incorrect' | 'partial';\n text: string;\n onClick?: (arg:any)=>void;\n id: string;\n selected?: boolean;\n disabled?: boolean;\n size?: Size.Small | Size.Medium | Size.Large;\n type: 'radio' | 'checkbox';\n} & Omit<React.HTMLAttributes<HTMLDivElement>, 'onClick' | 'id' | 'tabIndex' | 'onMouseDown'>\n\nconst QuizButton: React.FunctionComponent<QuizButtonProps> = ({\n text,\n type,\n onClick,\n resultType,\n id,\n className,\n selected = false,\n disabled = false,\n size = Size.Medium,\n ...rest\n }) => {\n return ( \n <OptionContainer\n onClick={onClick}\n isSelected={selected}\n tabIndex={(disabled || resultType) ? -1 : 0}\n onMouseDown={defaultOnMouseDownHandler}\n size={size}\n className={'quiz-button '.concat(selected ? ' selected' : '')\n .concat(disabled ? ' disabled' : '')\n .concat(resultType ? ' result ' + resultType : '')\n .concat(className ? ' ' + className : '')}\n data-testid={'container'}\n {...rest}>\n <ButtonContainer data-testid={'btnContainer'} className={'quiz-button-icon'} size={size}>\n {\n resultType ? renderResultContent(resultType) : (\n type==='radio' ? <RadioButton selected={selected} disabled={disabled} size={size} tabIndexVal={-1}\n select={()=>{}} id={id}/> : <Checkbox selected={selected} disabled={disabled} size={size} tabIndexVal={-1}\n select={()=>{}} id={id}/>\n )\n }\n </ButtonContainer>\n\n <TextContainer data-testid={'txtContainer'} className={'quiz-button-text'} size={size}>\n <TextWrapper size={size}>\n {text}\n </TextWrapper>\n </TextContainer>\n </OptionContainer>\n );\n};\n\nexport default QuizButton;\n"],"file":"QuizButton.cjs"}
1
+ {"version":3,"sources":["../../src/QuizButton/QuizButton.tsx"],"names":["TextContainer","styled","div","COLORS","accent1_20","props","size","Size","Small","Large","ComponentTextStyle","Regular","TextWrapper","ButtonContainer","accent1_100","accent1_600","OptionContainer","accent1_200","neutral_100","neutral_20","neutral_300","correct_20","correct_400","critical_20","critical_500","warning_20","warning_400","focusStyles","accent1_300","isSelected","accent1_700","accent1_400","accent1_800","renderResultContent","resultType","white","QuizButton","text","type","onClick","id","className","selected","disabled","Medium","rest","defaultOnMouseDownHandler","concat"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport styled from 'styled-components';\nimport {Checkbox, COLORS, defaultOnMouseDownHandler, focusStyles, RadioButton, Size, SystemIcons} from '..';\nimport { ComponentLStyling, ComponentMStyling, ComponentSStyling, ComponentTextStyle } from '../styles/typography';\n\nconst TextContainer = styled.div<{size: Size}>`\n border-radius: 0 8px 8px 0;\n display: flex;\n background: ${COLORS.accent1_20};\n width: 100%;\n\n transition: background 100ms ease-in-out;\n align-items: center;\n\n padding: ${props=>props.size===Size.Small?'6px 8px':(props.size===Size.Large?'20px 16px':'12px 16px')};\n ${props=>props.size===Size.Small ? ComponentSStyling(ComponentTextStyle.Regular,null) : (props.size===Size.Large ? ComponentLStyling(ComponentTextStyle.Regular,null) : ComponentMStyling(ComponentTextStyle.Regular,null))}\n`;\n\nconst TextWrapper = styled.div<{size:Size}>``;\n\nconst ButtonContainer = styled.div<{size: Size}>`\n border-radius: 8px 0 0 8px;\n display: flex;\n background: ${COLORS.accent1_100};\n\n width: ${props=>props.size===Size.Small?'32px':(props.size===Size.Large?'64px':'48px')};\n\n transition: background 100ms ease-in-out;\n\n .quiz-button-result-icon {\n height: ${props=>props.size===Size.Small?'16px':(props.size===Size.Large?'32px':'24px')};\n width: ${props=>props.size===Size.Small?'32px':(props.size===Size.Large?'64px':'48px')};\n }\n\n .radio-button-icon, .checkbox-icon {\n margin: auto;\n min-width: unset;\n background: transparent;\n\n svg {\n color: ${COLORS.accent1_600};\n }\n\n &:hover {\n background: transparent;\n }\n\n &:active {\n background: transparent;\n }\n }\n\n .small {\n min-width: 32px;\n min-height: 32px;\n .radio-button-icon, .checkbox-icon {\n svg {\n height: 16px;\n width: 16px;\n }\n }\n }\n\n .medium {\n min-width: 48px;\n min-height: 48px;\n .radio-button-icon, .checkbox-icon {\n svg {\n height: 24px;\n width: 24px;\n }\n }\n }\n\n .large {\n min-width: 64px;\n min-height: 64px;\n .radio-button-icon, .checkbox-icon {\n svg {\n height: 32px;\n width: 32px;\n }\n }\n }\n`;\n\nconst OptionContainer = styled.div<{isSelected:boolean, size:Size}>`\n display: flex;\n flex-direction: row;\n cursor: pointer;\n max-width: 65ch; \n word-break: break-word;\n\n min-height: ${props=>props.size===Size.Small?'32px':(props.size===Size.Large?'64px':'48px')};\n margin-bottom: ${props=>props.size===Size.Small?'16px':(props.size===Size.Large?'32px':'24px')};\n\n &.selected {\n ${TextContainer} {\n background: ${COLORS.accent1_100};\n }\n ${ButtonContainer} {\n background: ${COLORS.accent1_200};\n }\n }\n \n &.disabled {\n cursor: not-allowed;\n \n ${ButtonContainer} {\n pointer-events: none;\n background: ${COLORS.neutral_100};\n }\n ${TextContainer} {\n pointer-events: none;\n background: ${COLORS.neutral_20};\n color: ${COLORS.neutral_300};\n }\n\n .radio-button-icon, .checkbox-icon {\n background: transparent;\n }\n }\n\n &.correct {\n ${TextContainer} { \n background: ${COLORS.correct_20};\n }\n ${ButtonContainer} {\n background: ${COLORS.correct_400};\n svg {\n margin: auto;\n }\n }\n }\n\n &.incorrect {\n ${TextContainer} { \n background: ${COLORS.critical_20};\n }\n ${ButtonContainer} {\n background: ${COLORS.critical_500};\n svg {\n margin: auto;\n }\n }\n }\n\n &.partial {\n ${TextContainer} { \n background: ${COLORS.warning_20};\n }\n ${ButtonContainer} {\n background: ${COLORS.warning_400};\n svg {\n margin: auto;\n }\n }\n }\n\n &:focus,\n &.focus-state {\n ${focusStyles}\n }\n\n &:hover,\n &.hover-state {\n .radio-button-icon, .checkbox-icon {\n background: transparent;\n }\n }\n\n &:active,\n &.active-state {\n .radio-button-icon, .checkbox-icon {\n background: transparent;\n }\n }\n\n &:hover:not(.disabled):not(.result),\n &.hover-state {\n ${ButtonContainer} {\n background: ${COLORS.accent1_300};\n }\n ${TextContainer} {\n background: ${props=>props.isSelected ? COLORS.accent1_200 : COLORS.accent1_100};\n }\n \n .radio-button-icon, .checkbox-icon {\n background: transparent;\n svg {\n color: ${COLORS.accent1_700};\n }\n }\n }\n\n &:active:not(.disabled):not(.result),\n &.active-state {\n ${ButtonContainer} {\n background: ${COLORS.accent1_400};\n transition: none;\n }\n ${TextContainer} {\n background: ${props=>props.isSelected ? COLORS.accent1_300 : COLORS.accent1_200};\n transition: none;\n }\n\n .radio-button-icon, .checkbox-icon {\n background: transparent;\n svg {\n color: ${COLORS.accent1_800};\n }\n }\n }\n`;\n\nconst renderResultContent = (resultType: string) => {\n switch(resultType){\n case 'correct' : return <SystemIcons.CheckMark color={COLORS.white} className={'quiz-button-result-icon'}/>;\n\n case 'incorrect' : return <SystemIcons.Close color={COLORS.white} className={'quiz-button-result-icon'}/>;\n\n default : return <SystemIcons.Close color={COLORS.white} className={'quiz-button-result-icon'}/>;\n }\n};\n\ntype QuizButtonProps = {\n resultType?: 'correct' | 'incorrect' | 'partial';\n text: string;\n onClick?: (arg:any)=>void;\n id: string;\n selected?: boolean;\n disabled?: boolean;\n size?: Size.Small | Size.Medium | Size.Large;\n type: 'radio' | 'checkbox';\n} & Omit<React.HTMLAttributes<HTMLDivElement>, 'onClick' | 'id' | 'tabIndex' | 'onMouseDown'>\n\nconst QuizButton: React.FunctionComponent<QuizButtonProps> = ({\n text,\n type,\n onClick,\n resultType,\n id,\n className,\n selected = false,\n disabled = false,\n size = Size.Medium,\n ...rest\n }) => {\n return ( \n <OptionContainer\n onClick={onClick}\n isSelected={selected}\n tabIndex={(disabled || resultType) ? -1 : 0}\n onMouseDown={defaultOnMouseDownHandler}\n size={size}\n className={'quiz-button '.concat(selected ? ' selected' : '')\n .concat(disabled ? ' disabled' : '')\n .concat(resultType ? ' result ' + resultType : '')\n .concat(className ? ' ' + className : '')}\n data-testid={'container'}\n aria-checked={selected}\n role={type === 'radio'? 'radio' : 'checkbox'}\n {...rest}>\n <ButtonContainer data-testid={'btnContainer'} className={'quiz-button-icon'} size={size}>\n {\n resultType ? renderResultContent(resultType) : (\n type==='radio' ? <RadioButton selected={selected} disabled={disabled} size={size} tabIndexVal={-1}\n select={()=>{}} id={id}/> : <Checkbox selected={selected} disabled={disabled} size={size} tabIndexVal={-1}\n select={()=>{}} id={id}/>\n )\n }\n </ButtonContainer>\n\n <TextContainer data-testid={'txtContainer'} className={'quiz-button-text'} size={size}>\n <TextWrapper size={size}>\n {text}\n </TextWrapper>\n </TextContainer>\n </OptionContainer>\n );\n};\n\nexport default QuizButton;\n"],"file":"QuizButton.cjs"}
@@ -83,7 +83,9 @@ var QuizButton = function QuizButton(_ref) {
83
83
  onMouseDown: defaultOnMouseDownHandler,
84
84
  size: size,
85
85
  className: 'quiz-button '.concat(selected ? ' selected' : '').concat(disabled ? ' disabled' : '').concat(resultType ? ' result ' + resultType : '').concat(className ? ' ' + className : ''),
86
- "data-testid": 'container'
86
+ "data-testid": 'container',
87
+ "aria-checked": selected,
88
+ role: type === 'radio' ? 'radio' : 'checkbox'
87
89
  }, rest), {}, {
88
90
  children: [/*#__PURE__*/_jsx(ButtonContainer, {
89
91
  "data-testid": 'btnContainer',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/QuizButton/QuizButton.tsx"],"names":["React","styled","Checkbox","COLORS","defaultOnMouseDownHandler","focusStyles","RadioButton","Size","SystemIcons","ComponentLStyling","ComponentMStyling","ComponentSStyling","ComponentTextStyle","TextContainer","div","accent1_20","props","size","Small","Large","Regular","TextWrapper","ButtonContainer","accent1_100","accent1_600","OptionContainer","accent1_200","neutral_100","neutral_20","neutral_300","correct_20","correct_400","critical_20","critical_500","warning_20","warning_400","accent1_300","isSelected","accent1_700","accent1_400","accent1_800","renderResultContent","resultType","white","QuizButton","text","type","onClick","id","className","selected","disabled","Medium","rest","concat"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport styled from 'styled-components';\nimport {Checkbox, COLORS, defaultOnMouseDownHandler, focusStyles, RadioButton, Size, SystemIcons} from '..';\nimport { ComponentLStyling, ComponentMStyling, ComponentSStyling, ComponentTextStyle } from '../styles/typography';\n\nconst TextContainer = styled.div<{size: Size}>`\n border-radius: 0 8px 8px 0;\n display: flex;\n background: ${COLORS.accent1_20};\n width: 100%;\n\n transition: background 100ms ease-in-out;\n align-items: center;\n\n padding: ${props=>props.size===Size.Small?'6px 8px':(props.size===Size.Large?'20px 16px':'12px 16px')};\n ${props=>props.size===Size.Small ? ComponentSStyling(ComponentTextStyle.Regular,null) : (props.size===Size.Large ? ComponentLStyling(ComponentTextStyle.Regular,null) : ComponentMStyling(ComponentTextStyle.Regular,null))}\n`;\n\nconst TextWrapper = styled.div<{size:Size}>``;\n\nconst ButtonContainer = styled.div<{size: Size}>`\n border-radius: 8px 0 0 8px;\n display: flex;\n background: ${COLORS.accent1_100};\n\n width: ${props=>props.size===Size.Small?'32px':(props.size===Size.Large?'64px':'48px')};\n\n transition: background 100ms ease-in-out;\n\n .quiz-button-result-icon {\n height: ${props=>props.size===Size.Small?'16px':(props.size===Size.Large?'32px':'24px')};\n width: ${props=>props.size===Size.Small?'32px':(props.size===Size.Large?'64px':'48px')};\n }\n\n .radio-button-icon, .checkbox-icon {\n margin: auto;\n min-width: unset;\n background: transparent;\n\n svg {\n color: ${COLORS.accent1_600};\n }\n\n &:hover {\n background: transparent;\n }\n\n &:active {\n background: transparent;\n }\n }\n\n .small {\n min-width: 32px;\n min-height: 32px;\n .radio-button-icon, .checkbox-icon {\n svg {\n height: 16px;\n width: 16px;\n }\n }\n }\n\n .medium {\n min-width: 48px;\n min-height: 48px;\n .radio-button-icon, .checkbox-icon {\n svg {\n height: 24px;\n width: 24px;\n }\n }\n }\n\n .large {\n min-width: 64px;\n min-height: 64px;\n .radio-button-icon, .checkbox-icon {\n svg {\n height: 32px;\n width: 32px;\n }\n }\n }\n`;\n\nconst OptionContainer = styled.div<{isSelected:boolean, size:Size}>`\n display: flex;\n flex-direction: row;\n cursor: pointer;\n max-width: 65ch; \n word-break: break-word;\n\n min-height: ${props=>props.size===Size.Small?'32px':(props.size===Size.Large?'64px':'48px')};\n margin-bottom: ${props=>props.size===Size.Small?'16px':(props.size===Size.Large?'32px':'24px')};\n\n &.selected {\n ${TextContainer} {\n background: ${COLORS.accent1_100};\n }\n ${ButtonContainer} {\n background: ${COLORS.accent1_200};\n }\n }\n \n &.disabled {\n cursor: not-allowed;\n \n ${ButtonContainer} {\n pointer-events: none;\n background: ${COLORS.neutral_100};\n }\n ${TextContainer} {\n pointer-events: none;\n background: ${COLORS.neutral_20};\n color: ${COLORS.neutral_300};\n }\n\n .radio-button-icon, .checkbox-icon {\n background: transparent;\n }\n }\n\n &.correct {\n ${TextContainer} { \n background: ${COLORS.correct_20};\n }\n ${ButtonContainer} {\n background: ${COLORS.correct_400};\n svg {\n margin: auto;\n }\n }\n }\n\n &.incorrect {\n ${TextContainer} { \n background: ${COLORS.critical_20};\n }\n ${ButtonContainer} {\n background: ${COLORS.critical_500};\n svg {\n margin: auto;\n }\n }\n }\n\n &.partial {\n ${TextContainer} { \n background: ${COLORS.warning_20};\n }\n ${ButtonContainer} {\n background: ${COLORS.warning_400};\n svg {\n margin: auto;\n }\n }\n }\n\n &:focus,\n &.focus-state {\n ${focusStyles}\n }\n\n &:hover,\n &.hover-state {\n .radio-button-icon, .checkbox-icon {\n background: transparent;\n }\n }\n\n &:active,\n &.active-state {\n .radio-button-icon, .checkbox-icon {\n background: transparent;\n }\n }\n\n &:hover:not(.disabled):not(.result),\n &.hover-state {\n ${ButtonContainer} {\n background: ${COLORS.accent1_300};\n }\n ${TextContainer} {\n background: ${props=>props.isSelected ? COLORS.accent1_200 : COLORS.accent1_100};\n }\n \n .radio-button-icon, .checkbox-icon {\n background: transparent;\n svg {\n color: ${COLORS.accent1_700};\n }\n }\n }\n\n &:active:not(.disabled):not(.result),\n &.active-state {\n ${ButtonContainer} {\n background: ${COLORS.accent1_400};\n transition: none;\n }\n ${TextContainer} {\n background: ${props=>props.isSelected ? COLORS.accent1_300 : COLORS.accent1_200};\n transition: none;\n }\n\n .radio-button-icon, .checkbox-icon {\n background: transparent;\n svg {\n color: ${COLORS.accent1_800};\n }\n }\n }\n`;\n\nconst renderResultContent = (resultType: string) => {\n switch(resultType){\n case 'correct' : return <SystemIcons.CheckMark color={COLORS.white} className={'quiz-button-result-icon'}/>;\n\n case 'incorrect' : return <SystemIcons.Close color={COLORS.white} className={'quiz-button-result-icon'}/>;\n\n default : return <SystemIcons.Close color={COLORS.white} className={'quiz-button-result-icon'}/>;\n }\n};\n\ntype QuizButtonProps = {\n resultType?: 'correct' | 'incorrect' | 'partial';\n text: string;\n onClick?: (arg:any)=>void;\n id: string;\n selected?: boolean;\n disabled?: boolean;\n size?: Size.Small | Size.Medium | Size.Large;\n type: 'radio' | 'checkbox';\n} & Omit<React.HTMLAttributes<HTMLDivElement>, 'onClick' | 'id' | 'tabIndex' | 'onMouseDown'>\n\nconst QuizButton: React.FunctionComponent<QuizButtonProps> = ({\n text,\n type,\n onClick,\n resultType,\n id,\n className,\n selected = false,\n disabled = false,\n size = Size.Medium,\n ...rest\n }) => {\n return ( \n <OptionContainer\n onClick={onClick}\n isSelected={selected}\n tabIndex={(disabled || resultType) ? -1 : 0}\n onMouseDown={defaultOnMouseDownHandler}\n size={size}\n className={'quiz-button '.concat(selected ? ' selected' : '')\n .concat(disabled ? ' disabled' : '')\n .concat(resultType ? ' result ' + resultType : '')\n .concat(className ? ' ' + className : '')}\n data-testid={'container'}\n {...rest}>\n <ButtonContainer data-testid={'btnContainer'} className={'quiz-button-icon'} size={size}>\n {\n resultType ? renderResultContent(resultType) : (\n type==='radio' ? <RadioButton selected={selected} disabled={disabled} size={size} tabIndexVal={-1}\n select={()=>{}} id={id}/> : <Checkbox selected={selected} disabled={disabled} size={size} tabIndexVal={-1}\n select={()=>{}} id={id}/>\n )\n }\n </ButtonContainer>\n\n <TextContainer data-testid={'txtContainer'} className={'quiz-button-text'} size={size}>\n <TextWrapper size={size}>\n {text}\n </TextWrapper>\n </TextContainer>\n </OptionContainer>\n );\n};\n\nexport default QuizButton;\n"],"file":"QuizButton.js"}
1
+ {"version":3,"sources":["../../src/QuizButton/QuizButton.tsx"],"names":["React","styled","Checkbox","COLORS","defaultOnMouseDownHandler","focusStyles","RadioButton","Size","SystemIcons","ComponentLStyling","ComponentMStyling","ComponentSStyling","ComponentTextStyle","TextContainer","div","accent1_20","props","size","Small","Large","Regular","TextWrapper","ButtonContainer","accent1_100","accent1_600","OptionContainer","accent1_200","neutral_100","neutral_20","neutral_300","correct_20","correct_400","critical_20","critical_500","warning_20","warning_400","accent1_300","isSelected","accent1_700","accent1_400","accent1_800","renderResultContent","resultType","white","QuizButton","text","type","onClick","id","className","selected","disabled","Medium","rest","concat"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport styled from 'styled-components';\nimport {Checkbox, COLORS, defaultOnMouseDownHandler, focusStyles, RadioButton, Size, SystemIcons} from '..';\nimport { ComponentLStyling, ComponentMStyling, ComponentSStyling, ComponentTextStyle } from '../styles/typography';\n\nconst TextContainer = styled.div<{size: Size}>`\n border-radius: 0 8px 8px 0;\n display: flex;\n background: ${COLORS.accent1_20};\n width: 100%;\n\n transition: background 100ms ease-in-out;\n align-items: center;\n\n padding: ${props=>props.size===Size.Small?'6px 8px':(props.size===Size.Large?'20px 16px':'12px 16px')};\n ${props=>props.size===Size.Small ? ComponentSStyling(ComponentTextStyle.Regular,null) : (props.size===Size.Large ? ComponentLStyling(ComponentTextStyle.Regular,null) : ComponentMStyling(ComponentTextStyle.Regular,null))}\n`;\n\nconst TextWrapper = styled.div<{size:Size}>``;\n\nconst ButtonContainer = styled.div<{size: Size}>`\n border-radius: 8px 0 0 8px;\n display: flex;\n background: ${COLORS.accent1_100};\n\n width: ${props=>props.size===Size.Small?'32px':(props.size===Size.Large?'64px':'48px')};\n\n transition: background 100ms ease-in-out;\n\n .quiz-button-result-icon {\n height: ${props=>props.size===Size.Small?'16px':(props.size===Size.Large?'32px':'24px')};\n width: ${props=>props.size===Size.Small?'32px':(props.size===Size.Large?'64px':'48px')};\n }\n\n .radio-button-icon, .checkbox-icon {\n margin: auto;\n min-width: unset;\n background: transparent;\n\n svg {\n color: ${COLORS.accent1_600};\n }\n\n &:hover {\n background: transparent;\n }\n\n &:active {\n background: transparent;\n }\n }\n\n .small {\n min-width: 32px;\n min-height: 32px;\n .radio-button-icon, .checkbox-icon {\n svg {\n height: 16px;\n width: 16px;\n }\n }\n }\n\n .medium {\n min-width: 48px;\n min-height: 48px;\n .radio-button-icon, .checkbox-icon {\n svg {\n height: 24px;\n width: 24px;\n }\n }\n }\n\n .large {\n min-width: 64px;\n min-height: 64px;\n .radio-button-icon, .checkbox-icon {\n svg {\n height: 32px;\n width: 32px;\n }\n }\n }\n`;\n\nconst OptionContainer = styled.div<{isSelected:boolean, size:Size}>`\n display: flex;\n flex-direction: row;\n cursor: pointer;\n max-width: 65ch; \n word-break: break-word;\n\n min-height: ${props=>props.size===Size.Small?'32px':(props.size===Size.Large?'64px':'48px')};\n margin-bottom: ${props=>props.size===Size.Small?'16px':(props.size===Size.Large?'32px':'24px')};\n\n &.selected {\n ${TextContainer} {\n background: ${COLORS.accent1_100};\n }\n ${ButtonContainer} {\n background: ${COLORS.accent1_200};\n }\n }\n \n &.disabled {\n cursor: not-allowed;\n \n ${ButtonContainer} {\n pointer-events: none;\n background: ${COLORS.neutral_100};\n }\n ${TextContainer} {\n pointer-events: none;\n background: ${COLORS.neutral_20};\n color: ${COLORS.neutral_300};\n }\n\n .radio-button-icon, .checkbox-icon {\n background: transparent;\n }\n }\n\n &.correct {\n ${TextContainer} { \n background: ${COLORS.correct_20};\n }\n ${ButtonContainer} {\n background: ${COLORS.correct_400};\n svg {\n margin: auto;\n }\n }\n }\n\n &.incorrect {\n ${TextContainer} { \n background: ${COLORS.critical_20};\n }\n ${ButtonContainer} {\n background: ${COLORS.critical_500};\n svg {\n margin: auto;\n }\n }\n }\n\n &.partial {\n ${TextContainer} { \n background: ${COLORS.warning_20};\n }\n ${ButtonContainer} {\n background: ${COLORS.warning_400};\n svg {\n margin: auto;\n }\n }\n }\n\n &:focus,\n &.focus-state {\n ${focusStyles}\n }\n\n &:hover,\n &.hover-state {\n .radio-button-icon, .checkbox-icon {\n background: transparent;\n }\n }\n\n &:active,\n &.active-state {\n .radio-button-icon, .checkbox-icon {\n background: transparent;\n }\n }\n\n &:hover:not(.disabled):not(.result),\n &.hover-state {\n ${ButtonContainer} {\n background: ${COLORS.accent1_300};\n }\n ${TextContainer} {\n background: ${props=>props.isSelected ? COLORS.accent1_200 : COLORS.accent1_100};\n }\n \n .radio-button-icon, .checkbox-icon {\n background: transparent;\n svg {\n color: ${COLORS.accent1_700};\n }\n }\n }\n\n &:active:not(.disabled):not(.result),\n &.active-state {\n ${ButtonContainer} {\n background: ${COLORS.accent1_400};\n transition: none;\n }\n ${TextContainer} {\n background: ${props=>props.isSelected ? COLORS.accent1_300 : COLORS.accent1_200};\n transition: none;\n }\n\n .radio-button-icon, .checkbox-icon {\n background: transparent;\n svg {\n color: ${COLORS.accent1_800};\n }\n }\n }\n`;\n\nconst renderResultContent = (resultType: string) => {\n switch(resultType){\n case 'correct' : return <SystemIcons.CheckMark color={COLORS.white} className={'quiz-button-result-icon'}/>;\n\n case 'incorrect' : return <SystemIcons.Close color={COLORS.white} className={'quiz-button-result-icon'}/>;\n\n default : return <SystemIcons.Close color={COLORS.white} className={'quiz-button-result-icon'}/>;\n }\n};\n\ntype QuizButtonProps = {\n resultType?: 'correct' | 'incorrect' | 'partial';\n text: string;\n onClick?: (arg:any)=>void;\n id: string;\n selected?: boolean;\n disabled?: boolean;\n size?: Size.Small | Size.Medium | Size.Large;\n type: 'radio' | 'checkbox';\n} & Omit<React.HTMLAttributes<HTMLDivElement>, 'onClick' | 'id' | 'tabIndex' | 'onMouseDown'>\n\nconst QuizButton: React.FunctionComponent<QuizButtonProps> = ({\n text,\n type,\n onClick,\n resultType,\n id,\n className,\n selected = false,\n disabled = false,\n size = Size.Medium,\n ...rest\n }) => {\n return ( \n <OptionContainer\n onClick={onClick}\n isSelected={selected}\n tabIndex={(disabled || resultType) ? -1 : 0}\n onMouseDown={defaultOnMouseDownHandler}\n size={size}\n className={'quiz-button '.concat(selected ? ' selected' : '')\n .concat(disabled ? ' disabled' : '')\n .concat(resultType ? ' result ' + resultType : '')\n .concat(className ? ' ' + className : '')}\n data-testid={'container'}\n aria-checked={selected}\n role={type === 'radio'? 'radio' : 'checkbox'}\n {...rest}>\n <ButtonContainer data-testid={'btnContainer'} className={'quiz-button-icon'} size={size}>\n {\n resultType ? renderResultContent(resultType) : (\n type==='radio' ? <RadioButton selected={selected} disabled={disabled} size={size} tabIndexVal={-1}\n select={()=>{}} id={id}/> : <Checkbox selected={selected} disabled={disabled} size={size} tabIndexVal={-1}\n select={()=>{}} id={id}/>\n )\n }\n </ButtonContainer>\n\n <TextContainer data-testid={'txtContainer'} className={'quiz-button-text'} size={size}>\n <TextWrapper size={size}>\n {text}\n </TextWrapper>\n </TextContainer>\n </OptionContainer>\n );\n};\n\nexport default QuizButton;\n"],"file":"QuizButton.js"}