@veeqo/ui 15.23.0 → 15.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,11 +2,14 @@
2
2
 
3
3
  var React = require('react');
4
4
  var withLabels = require('../../hoc/withLabels/withLabels.cjs');
5
+ var buildClassnames = require('../../utils/buildClassnames.cjs');
6
+ require('uid/secure');
5
7
  var blockInvalidCharacters = require('../../utils/blockInvalidCharacters.cjs');
6
8
  var invalidCharactersNumeric = require('../../utils/invalidCharactersNumeric.cjs');
7
- var Stack = require('../Stack/Stack.cjs');
8
- var InputGroup = require('../InputGroup/InputGroup.cjs');
9
+ var WeightInput_module = require('./WeightInput.module.scss.cjs');
9
10
  var InputAffix = require('../InputAffix/InputAffix.cjs');
11
+ var InputGroup = require('../InputGroup/InputGroup.cjs');
12
+ var Stack = require('../Stack/Stack.cjs');
10
13
  var index = require('../TextField/index.cjs');
11
14
  var types = require('./types.cjs');
12
15
 
@@ -14,11 +17,15 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
14
17
 
15
18
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
16
19
 
17
- const flexStyle = { flex: 1 };
18
20
  const blockInvalidChars = (e) => blockInvalidCharacters.blockInvalidCharacters(e, invalidCharactersNumeric.invalidCharsList);
19
21
  const WeightInput = withLabels.withLabels((props) => {
20
22
  const { size = 'base', hasError, disabled, className } = props;
21
23
  const compact = size === 'sm';
24
+ // Default (#CDD1D5) outline for both field + affix; omitted on error so the
25
+ // error/focus border colours take over.
26
+ const defaultBorder = hasError ? undefined : WeightInput_module.defaultBorder;
27
+ // Group gets an error modifier so the focus-within ring turns red on error.
28
+ const groupClass = buildClassnames.buildClassnames([WeightInput_module.group, hasError && WeightInput_module.groupError]);
22
29
  const childProps = {
23
30
  stack: {
24
31
  direction: 'horizontal',
@@ -26,26 +33,28 @@ const WeightInput = withLabels.withLabels((props) => {
26
33
  spacing: 'base',
27
34
  },
28
35
  inputGroup: {
29
- style: flexStyle,
36
+ className: groupClass,
37
+ hasError,
30
38
  },
31
39
  textField: {
32
40
  type: 'number',
33
- placeholder: '0',
41
+ placeholder: '0.00',
34
42
  min: '0',
35
43
  step: 'any',
36
44
  size,
37
45
  disabled,
38
46
  hasError,
39
47
  onKeyDown: blockInvalidChars,
40
- style: flexStyle,
48
+ className: buildClassnames.buildClassnames([WeightInput_module.field, defaultBorder]),
41
49
  },
42
50
  inputAffix: {
43
51
  compact,
52
+ className: buildClassnames.buildClassnames([WeightInput_module.affix, defaultBorder]),
44
53
  },
45
54
  };
46
55
  // If the weight is metric, render grams
47
56
  if (types.isWeightMetric(props)) {
48
- return (React__default.default.createElement(InputGroup.InputGroup, { ...childProps.inputGroup, className: className },
57
+ return (React__default.default.createElement(InputGroup.InputGroup, { ...childProps.inputGroup, className: buildClassnames.buildClassnames([groupClass, className]) },
49
58
  React__default.default.createElement(index.TextField, { ...childProps.textField, name: "gram", value: props.gram, "aria-label": "Grams", onChange: props.handleChangeGram }),
50
59
  React__default.default.createElement(InputAffix.InputAffix, { ...childProps.inputAffix }, "g")));
51
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WeightInput.cjs","sources":["../../../src/components/WeightInput/WeightInput.tsx"],"sourcesContent":["import React from 'react';\n\nimport { withLabels } from '../../hoc';\nimport { blockInvalidCharacters } from '../../utils/blockInvalidCharacters';\nimport { invalidCharsList } from '../../utils/invalidCharactersNumeric';\n\nimport { Stack, StackProps } from '../Stack';\nimport { InputGroup, InputGroupProps } from '../InputGroup';\nimport { InputAffix, InputAffixProps } from '../InputAffix';\nimport { TextField, TextFieldProps } from '../TextField';\n\nimport { WeightProps, isWeightImperial, isWeightMetric } from './types';\n\ntype ChildComponentProps = {\n stack: Partial<StackProps>;\n inputGroup: Partial<InputGroupProps>;\n textField: Partial<TextFieldProps>;\n inputAffix: Partial<InputAffixProps>;\n};\n\nconst flexStyle = { flex: 1 };\n\nconst blockInvalidChars = (e: React.KeyboardEvent) => blockInvalidCharacters(e, invalidCharsList);\n\nexport const WeightInput = withLabels<WeightProps>((props) => {\n const { size = 'base', hasError, disabled, className } = props;\n\n const compact = size === 'sm';\n\n const childProps: ChildComponentProps = {\n stack: {\n direction: 'horizontal',\n alignY: 'center',\n spacing: 'base',\n },\n inputGroup: {\n style: flexStyle,\n },\n textField: {\n type: 'number',\n placeholder: '0',\n min: '0',\n step: 'any',\n size,\n disabled,\n hasError,\n onKeyDown: blockInvalidChars,\n style: flexStyle,\n },\n inputAffix: {\n compact,\n },\n };\n\n // If the weight is metric, render grams\n if (isWeightMetric(props)) {\n return (\n <InputGroup {...childProps.inputGroup} className={className}>\n <TextField\n {...childProps.textField}\n name=\"gram\"\n value={props.gram}\n aria-label=\"Grams\"\n onChange={props.handleChangeGram}\n />\n <InputAffix {...childProps.inputAffix}>g</InputAffix>\n </InputGroup>\n );\n }\n\n // If the weight is imperial, render pounds and ounces\n if (isWeightImperial(props)) {\n return (\n <Stack {...childProps.stack} className={className}>\n <InputGroup {...childProps.inputGroup}>\n <TextField\n {...childProps.textField}\n name=\"pound\"\n value={props.pound}\n aria-label=\"Pounds\"\n onChange={props.handleChangePound}\n />\n <InputAffix {...childProps.inputAffix}>lb</InputAffix>\n </InputGroup>\n <InputGroup {...childProps.inputGroup}>\n <TextField\n {...childProps.textField}\n name=\"ounce\"\n value={props.ounce}\n aria-label=\"Ounces\"\n onChange={props.handleChangeOunce}\n />\n <InputAffix {...childProps.inputAffix}>oz</InputAffix>\n </InputGroup>\n </Stack>\n );\n }\n\n // If neither metric nor imperial, return null or handle as needed\n return null;\n});\n\nWeightInput.displayName = 'WeightInput';\n"],"names":["blockInvalidCharacters","invalidCharsList","withLabels","isWeightMetric","React","InputGroup","TextField","InputAffix","isWeightImperial","Stack"],"mappings":"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"}
1
+ {"version":3,"file":"WeightInput.cjs","sources":["../../../src/components/WeightInput/WeightInput.tsx"],"sourcesContent":["import React from 'react';\n\nimport { withLabels } from '../../hoc';\nimport { buildClassnames } from '../../utils';\nimport { blockInvalidCharacters } from '../../utils/blockInvalidCharacters';\nimport { invalidCharsList } from '../../utils/invalidCharactersNumeric';\nimport styles from './WeightInput.module.scss';\n\nimport { InputAffix, InputAffixProps } from '../InputAffix';\nimport { InputGroup, InputGroupProps } from '../InputGroup';\nimport { Stack, StackProps } from '../Stack';\nimport { TextField, TextFieldProps } from '../TextField';\n\nimport { WeightProps, isWeightImperial, isWeightMetric } from './types';\n\ntype ChildComponentProps = {\n stack: Partial<StackProps>;\n inputGroup: Partial<InputGroupProps>;\n textField: Partial<TextFieldProps>;\n inputAffix: Partial<InputAffixProps>;\n};\n\nconst blockInvalidChars = (e: React.KeyboardEvent) => blockInvalidCharacters(e, invalidCharsList);\n\nexport const WeightInput = withLabels<WeightProps>((props) => {\n const { size = 'base', hasError, disabled, className } = props;\n\n const compact = size === 'sm';\n\n // Default (#CDD1D5) outline for both field + affix; omitted on error so the\n // error/focus border colours take over.\n const defaultBorder = hasError ? undefined : styles.defaultBorder;\n\n // Group gets an error modifier so the focus-within ring turns red on error.\n const groupClass = buildClassnames([styles.group, hasError && styles.groupError]);\n\n const childProps: ChildComponentProps = {\n stack: {\n direction: 'horizontal',\n alignY: 'center',\n spacing: 'base',\n },\n inputGroup: {\n className: groupClass,\n hasError,\n },\n textField: {\n type: 'number',\n placeholder: '0.00',\n min: '0',\n step: 'any',\n size,\n disabled,\n hasError,\n onKeyDown: blockInvalidChars,\n className: buildClassnames([styles.field, defaultBorder]),\n },\n inputAffix: {\n compact,\n className: buildClassnames([styles.affix, defaultBorder]),\n },\n };\n\n // If the weight is metric, render grams\n if (isWeightMetric(props)) {\n return (\n <InputGroup {...childProps.inputGroup} className={buildClassnames([groupClass, className])}>\n <TextField\n {...childProps.textField}\n name=\"gram\"\n value={props.gram}\n aria-label=\"Grams\"\n onChange={props.handleChangeGram}\n />\n <InputAffix {...childProps.inputAffix}>g</InputAffix>\n </InputGroup>\n );\n }\n\n // If the weight is imperial, render pounds and ounces\n if (isWeightImperial(props)) {\n return (\n <Stack {...childProps.stack} className={className}>\n <InputGroup {...childProps.inputGroup}>\n <TextField\n {...childProps.textField}\n name=\"pound\"\n value={props.pound}\n aria-label=\"Pounds\"\n onChange={props.handleChangePound}\n />\n <InputAffix {...childProps.inputAffix}>lb</InputAffix>\n </InputGroup>\n <InputGroup {...childProps.inputGroup}>\n <TextField\n {...childProps.textField}\n name=\"ounce\"\n value={props.ounce}\n aria-label=\"Ounces\"\n onChange={props.handleChangeOunce}\n />\n <InputAffix {...childProps.inputAffix}>oz</InputAffix>\n </InputGroup>\n </Stack>\n );\n }\n\n // If neither metric nor imperial, return null or handle as needed\n return null;\n});\n\nWeightInput.displayName = 'WeightInput';\n"],"names":["blockInvalidCharacters","invalidCharsList","withLabels","styles","buildClassnames","isWeightMetric","React","InputGroup","TextField","InputAffix","isWeightImperial","Stack"],"mappings":"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"}
@@ -1,18 +1,25 @@
1
1
  import React__default from 'react';
2
2
  import { withLabels } from '../../hoc/withLabels/withLabels.js';
3
+ import { buildClassnames } from '../../utils/buildClassnames.js';
4
+ import 'uid/secure';
3
5
  import { blockInvalidCharacters } from '../../utils/blockInvalidCharacters.js';
4
6
  import { invalidCharsList } from '../../utils/invalidCharactersNumeric.js';
5
- import { Stack } from '../Stack/Stack.js';
6
- import { InputGroup } from '../InputGroup/InputGroup.js';
7
+ import styles from './WeightInput.module.scss.js';
7
8
  import { InputAffix } from '../InputAffix/InputAffix.js';
9
+ import { InputGroup } from '../InputGroup/InputGroup.js';
10
+ import { Stack } from '../Stack/Stack.js';
8
11
  import { TextField } from '../TextField/index.js';
9
12
  import { isWeightMetric, isWeightImperial } from './types.js';
10
13
 
11
- const flexStyle = { flex: 1 };
12
14
  const blockInvalidChars = (e) => blockInvalidCharacters(e, invalidCharsList);
13
15
  const WeightInput = withLabels((props) => {
14
16
  const { size = 'base', hasError, disabled, className } = props;
15
17
  const compact = size === 'sm';
18
+ // Default (#CDD1D5) outline for both field + affix; omitted on error so the
19
+ // error/focus border colours take over.
20
+ const defaultBorder = hasError ? undefined : styles.defaultBorder;
21
+ // Group gets an error modifier so the focus-within ring turns red on error.
22
+ const groupClass = buildClassnames([styles.group, hasError && styles.groupError]);
16
23
  const childProps = {
17
24
  stack: {
18
25
  direction: 'horizontal',
@@ -20,26 +27,28 @@ const WeightInput = withLabels((props) => {
20
27
  spacing: 'base',
21
28
  },
22
29
  inputGroup: {
23
- style: flexStyle,
30
+ className: groupClass,
31
+ hasError,
24
32
  },
25
33
  textField: {
26
34
  type: 'number',
27
- placeholder: '0',
35
+ placeholder: '0.00',
28
36
  min: '0',
29
37
  step: 'any',
30
38
  size,
31
39
  disabled,
32
40
  hasError,
33
41
  onKeyDown: blockInvalidChars,
34
- style: flexStyle,
42
+ className: buildClassnames([styles.field, defaultBorder]),
35
43
  },
36
44
  inputAffix: {
37
45
  compact,
46
+ className: buildClassnames([styles.affix, defaultBorder]),
38
47
  },
39
48
  };
40
49
  // If the weight is metric, render grams
41
50
  if (isWeightMetric(props)) {
42
- return (React__default.createElement(InputGroup, { ...childProps.inputGroup, className: className },
51
+ return (React__default.createElement(InputGroup, { ...childProps.inputGroup, className: buildClassnames([groupClass, className]) },
43
52
  React__default.createElement(TextField, { ...childProps.textField, name: "gram", value: props.gram, "aria-label": "Grams", onChange: props.handleChangeGram }),
44
53
  React__default.createElement(InputAffix, { ...childProps.inputAffix }, "g")));
45
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WeightInput.js","sources":["../../../src/components/WeightInput/WeightInput.tsx"],"sourcesContent":["import React from 'react';\n\nimport { withLabels } from '../../hoc';\nimport { blockInvalidCharacters } from '../../utils/blockInvalidCharacters';\nimport { invalidCharsList } from '../../utils/invalidCharactersNumeric';\n\nimport { Stack, StackProps } from '../Stack';\nimport { InputGroup, InputGroupProps } from '../InputGroup';\nimport { InputAffix, InputAffixProps } from '../InputAffix';\nimport { TextField, TextFieldProps } from '../TextField';\n\nimport { WeightProps, isWeightImperial, isWeightMetric } from './types';\n\ntype ChildComponentProps = {\n stack: Partial<StackProps>;\n inputGroup: Partial<InputGroupProps>;\n textField: Partial<TextFieldProps>;\n inputAffix: Partial<InputAffixProps>;\n};\n\nconst flexStyle = { flex: 1 };\n\nconst blockInvalidChars = (e: React.KeyboardEvent) => blockInvalidCharacters(e, invalidCharsList);\n\nexport const WeightInput = withLabels<WeightProps>((props) => {\n const { size = 'base', hasError, disabled, className } = props;\n\n const compact = size === 'sm';\n\n const childProps: ChildComponentProps = {\n stack: {\n direction: 'horizontal',\n alignY: 'center',\n spacing: 'base',\n },\n inputGroup: {\n style: flexStyle,\n },\n textField: {\n type: 'number',\n placeholder: '0',\n min: '0',\n step: 'any',\n size,\n disabled,\n hasError,\n onKeyDown: blockInvalidChars,\n style: flexStyle,\n },\n inputAffix: {\n compact,\n },\n };\n\n // If the weight is metric, render grams\n if (isWeightMetric(props)) {\n return (\n <InputGroup {...childProps.inputGroup} className={className}>\n <TextField\n {...childProps.textField}\n name=\"gram\"\n value={props.gram}\n aria-label=\"Grams\"\n onChange={props.handleChangeGram}\n />\n <InputAffix {...childProps.inputAffix}>g</InputAffix>\n </InputGroup>\n );\n }\n\n // If the weight is imperial, render pounds and ounces\n if (isWeightImperial(props)) {\n return (\n <Stack {...childProps.stack} className={className}>\n <InputGroup {...childProps.inputGroup}>\n <TextField\n {...childProps.textField}\n name=\"pound\"\n value={props.pound}\n aria-label=\"Pounds\"\n onChange={props.handleChangePound}\n />\n <InputAffix {...childProps.inputAffix}>lb</InputAffix>\n </InputGroup>\n <InputGroup {...childProps.inputGroup}>\n <TextField\n {...childProps.textField}\n name=\"ounce\"\n value={props.ounce}\n aria-label=\"Ounces\"\n onChange={props.handleChangeOunce}\n />\n <InputAffix {...childProps.inputAffix}>oz</InputAffix>\n </InputGroup>\n </Stack>\n );\n }\n\n // If neither metric nor imperial, return null or handle as needed\n return null;\n});\n\nWeightInput.displayName = 'WeightInput';\n"],"names":["React"],"mappings":";;;;;;;;;;AAoBA,MAAM,SAAS,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE;AAE7B,MAAM,iBAAiB,GAAG,CAAC,CAAsB,KAAK,sBAAsB,CAAC,CAAC,EAAE,gBAAgB,CAAC;MAEpF,WAAW,GAAG,UAAU,CAAc,CAAC,KAAK,KAAI;AAC3D,IAAA,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK;AAE9D,IAAA,MAAM,OAAO,GAAG,IAAI,KAAK,IAAI;AAE7B,IAAA,MAAM,UAAU,GAAwB;AACtC,QAAA,KAAK,EAAE;AACL,YAAA,SAAS,EAAE,YAAY;AACvB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,OAAO,EAAE,MAAM;AAChB,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,KAAK,EAAE,SAAS;AACjB,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,WAAW,EAAE,GAAG;AAChB,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,IAAI,EAAE,KAAK;YACX,IAAI;YACJ,QAAQ;YACR,QAAQ;AACR,YAAA,SAAS,EAAE,iBAAiB;AAC5B,YAAA,KAAK,EAAE,SAAS;AACjB,SAAA;AACD,QAAA,UAAU,EAAE;YACV,OAAO;AACR,SAAA;KACF;;AAGD,IAAA,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE;QACzB,QACEA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAA,GAAK,UAAU,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,EAAA;YACzDA,cAAA,CAAA,aAAA,CAAC,SAAS,OACJ,UAAU,CAAC,SAAS,EACxB,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,KAAK,CAAC,IAAI,EAAA,YAAA,EACN,OAAO,EAClB,QAAQ,EAAE,KAAK,CAAC,gBAAgB,EAAA,CAChC;YACFA,cAAA,CAAA,aAAA,CAAC,UAAU,OAAK,UAAU,CAAC,UAAU,EAAA,EAAA,GAAA,CAAgB,CAC1C;AAEhB,IAAA;;AAGD,IAAA,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE;QAC3B,QACEA,cAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EAAA,GAAK,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAA;AAC/C,YAAAA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAA,GAAK,UAAU,CAAC,UAAU,EAAA;gBACnCA,cAAA,CAAA,aAAA,CAAC,SAAS,OACJ,UAAU,CAAC,SAAS,EACxB,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,KAAK,CAAC,KAAK,EAAA,YAAA,EACP,QAAQ,EACnB,QAAQ,EAAE,KAAK,CAAC,iBAAiB,EAAA,CACjC;AACF,gBAAAA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAA,GAAK,UAAU,CAAC,UAAU,SAAiB,CAC3C;AACb,YAAAA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAA,GAAK,UAAU,CAAC,UAAU,EAAA;gBACnCA,cAAA,CAAA,aAAA,CAAC,SAAS,OACJ,UAAU,CAAC,SAAS,EACxB,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,KAAK,CAAC,KAAK,EAAA,YAAA,EACP,QAAQ,EACnB,QAAQ,EAAE,KAAK,CAAC,iBAAiB,EAAA,CACjC;gBACFA,cAAA,CAAA,aAAA,CAAC,UAAU,OAAK,UAAU,CAAC,UAAU,EAAA,EAAA,IAAA,CAAiB,CAC3C,CACP;AAEX,IAAA;;AAGD,IAAA,OAAO,IAAI;AACb,CAAC;AAED,WAAW,CAAC,WAAW,GAAG,aAAa;;;;"}
1
+ {"version":3,"file":"WeightInput.js","sources":["../../../src/components/WeightInput/WeightInput.tsx"],"sourcesContent":["import React from 'react';\n\nimport { withLabels } from '../../hoc';\nimport { buildClassnames } from '../../utils';\nimport { blockInvalidCharacters } from '../../utils/blockInvalidCharacters';\nimport { invalidCharsList } from '../../utils/invalidCharactersNumeric';\nimport styles from './WeightInput.module.scss';\n\nimport { InputAffix, InputAffixProps } from '../InputAffix';\nimport { InputGroup, InputGroupProps } from '../InputGroup';\nimport { Stack, StackProps } from '../Stack';\nimport { TextField, TextFieldProps } from '../TextField';\n\nimport { WeightProps, isWeightImperial, isWeightMetric } from './types';\n\ntype ChildComponentProps = {\n stack: Partial<StackProps>;\n inputGroup: Partial<InputGroupProps>;\n textField: Partial<TextFieldProps>;\n inputAffix: Partial<InputAffixProps>;\n};\n\nconst blockInvalidChars = (e: React.KeyboardEvent) => blockInvalidCharacters(e, invalidCharsList);\n\nexport const WeightInput = withLabels<WeightProps>((props) => {\n const { size = 'base', hasError, disabled, className } = props;\n\n const compact = size === 'sm';\n\n // Default (#CDD1D5) outline for both field + affix; omitted on error so the\n // error/focus border colours take over.\n const defaultBorder = hasError ? undefined : styles.defaultBorder;\n\n // Group gets an error modifier so the focus-within ring turns red on error.\n const groupClass = buildClassnames([styles.group, hasError && styles.groupError]);\n\n const childProps: ChildComponentProps = {\n stack: {\n direction: 'horizontal',\n alignY: 'center',\n spacing: 'base',\n },\n inputGroup: {\n className: groupClass,\n hasError,\n },\n textField: {\n type: 'number',\n placeholder: '0.00',\n min: '0',\n step: 'any',\n size,\n disabled,\n hasError,\n onKeyDown: blockInvalidChars,\n className: buildClassnames([styles.field, defaultBorder]),\n },\n inputAffix: {\n compact,\n className: buildClassnames([styles.affix, defaultBorder]),\n },\n };\n\n // If the weight is metric, render grams\n if (isWeightMetric(props)) {\n return (\n <InputGroup {...childProps.inputGroup} className={buildClassnames([groupClass, className])}>\n <TextField\n {...childProps.textField}\n name=\"gram\"\n value={props.gram}\n aria-label=\"Grams\"\n onChange={props.handleChangeGram}\n />\n <InputAffix {...childProps.inputAffix}>g</InputAffix>\n </InputGroup>\n );\n }\n\n // If the weight is imperial, render pounds and ounces\n if (isWeightImperial(props)) {\n return (\n <Stack {...childProps.stack} className={className}>\n <InputGroup {...childProps.inputGroup}>\n <TextField\n {...childProps.textField}\n name=\"pound\"\n value={props.pound}\n aria-label=\"Pounds\"\n onChange={props.handleChangePound}\n />\n <InputAffix {...childProps.inputAffix}>lb</InputAffix>\n </InputGroup>\n <InputGroup {...childProps.inputGroup}>\n <TextField\n {...childProps.textField}\n name=\"ounce\"\n value={props.ounce}\n aria-label=\"Ounces\"\n onChange={props.handleChangeOunce}\n />\n <InputAffix {...childProps.inputAffix}>oz</InputAffix>\n </InputGroup>\n </Stack>\n );\n }\n\n // If neither metric nor imperial, return null or handle as needed\n return null;\n});\n\nWeightInput.displayName = 'WeightInput';\n"],"names":["React"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var ___$insertStyle = require('../../_virtual/____insertStyle.cjs');
4
+
5
+ ___$insertStyle("._group_ypnkv_1 {\n flex: 1;\n --interactive-border: var(--colors-secondary-blue-base);\n --focus-ring: var(--colors-secondary-blue-light);\n /* Only focus/active states additionally get the outer focus ring. */\n}\n._group_ypnkv_1 ._defaultBorder_ypnkv_7 {\n --border-color: var(--colors-neutral-grey-dark);\n}\n._group_ypnkv_1:not(:has(:disabled)):hover, ._group_ypnkv_1:focus-within, ._group_ypnkv_1:not(:has(:disabled)):active {\n border-radius: var(--radius-base);\n}\n._group_ypnkv_1:not(:has(:disabled)):hover > ._field_ypnkv_13,\n._group_ypnkv_1:not(:has(:disabled)):hover > ._affix_ypnkv_14, ._group_ypnkv_1:focus-within > ._field_ypnkv_13,\n._group_ypnkv_1:focus-within > ._affix_ypnkv_14, ._group_ypnkv_1:not(:has(:disabled)):active > ._field_ypnkv_13,\n._group_ypnkv_1:not(:has(:disabled)):active > ._affix_ypnkv_14 {\n outline: none;\n border-color: var(--interactive-border);\n}\n._group_ypnkv_1:focus-within, ._group_ypnkv_1:not(:has(:disabled)):active {\n outline: var(--sizes-xs) solid var(--focus-ring);\n}\n\n._field_ypnkv_13 {\n flex: 1;\n}\n\n._affix_ypnkv_14 {\n flex: 0;\n}\n\n._groupError_ypnkv_32 {\n --interactive-border: var(--colors-secondary-red-base);\n --focus-ring: var(--colors-secondary-red-light);\n}\n._groupError_ypnkv_32 > ._field_ypnkv_13,\n._groupError_ypnkv_32 > ._affix_ypnkv_14 {\n outline: none;\n border-color: var(--colors-secondary-red-base);\n}");
6
+ var styles = {"group":"_group_ypnkv_1","defaultBorder":"_defaultBorder_ypnkv_7","field":"_field_ypnkv_13","affix":"_affix_ypnkv_14","groupError":"_groupError_ypnkv_32"};
7
+
8
+ module.exports = styles;
9
+ //# sourceMappingURL=WeightInput.module.scss.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WeightInput.module.scss.cjs","sources":["../../../src/components/WeightInput/WeightInput.module.scss"],"sourcesContent":[".group {\n flex: 1;\n\n --interactive-border: var(--colors-secondary-blue-base);\n --focus-ring: var(--colors-secondary-blue-light);\n .defaultBorder {\n --border-color: var(--colors-neutral-grey-dark);\n }\n\n &:not(:has(:disabled)):hover,\n &:focus-within,\n &:not(:has(:disabled)):active {\n border-radius: var(--radius-base);\n > .field,\n > .affix {\n outline: none;\n border-color: var(--interactive-border);\n }\n }\n\n /* Only focus/active states additionally get the outer focus ring. */\n &:focus-within,\n &:not(:has(:disabled)):active {\n outline: var(--sizes-xs) solid var(--focus-ring);\n }\n}\n\n.field {\n flex: 1;\n}\n\n.affix {\n flex: 0;\n}\n\n.groupError {\n --interactive-border: var(--colors-secondary-red-base);\n --focus-ring: var(--colors-secondary-red-light);\n\n > .field,\n > .affix {\n outline: none;\n border-color: var(--colors-secondary-red-base);\n }\n}\n"],"names":[],"mappings":";;;;AACE,eAAA,CAAA,i4CAAA;AAEA,aAAA,CAAA,OAAA,CAAA,gBAAA,CAAA,eAAA,CAAA,wBAAA,CAAA,OAAA,CAAA,iBAAA,CAAA,OAAA,CAAA,iBAAA,CAAA,YAAA,CAAA,sBAAA;;;;"}
@@ -0,0 +1,7 @@
1
+ import insertStyle from '../../_virtual/____insertStyle.js';
2
+
3
+ insertStyle("._group_ypnkv_1 {\n flex: 1;\n --interactive-border: var(--colors-secondary-blue-base);\n --focus-ring: var(--colors-secondary-blue-light);\n /* Only focus/active states additionally get the outer focus ring. */\n}\n._group_ypnkv_1 ._defaultBorder_ypnkv_7 {\n --border-color: var(--colors-neutral-grey-dark);\n}\n._group_ypnkv_1:not(:has(:disabled)):hover, ._group_ypnkv_1:focus-within, ._group_ypnkv_1:not(:has(:disabled)):active {\n border-radius: var(--radius-base);\n}\n._group_ypnkv_1:not(:has(:disabled)):hover > ._field_ypnkv_13,\n._group_ypnkv_1:not(:has(:disabled)):hover > ._affix_ypnkv_14, ._group_ypnkv_1:focus-within > ._field_ypnkv_13,\n._group_ypnkv_1:focus-within > ._affix_ypnkv_14, ._group_ypnkv_1:not(:has(:disabled)):active > ._field_ypnkv_13,\n._group_ypnkv_1:not(:has(:disabled)):active > ._affix_ypnkv_14 {\n outline: none;\n border-color: var(--interactive-border);\n}\n._group_ypnkv_1:focus-within, ._group_ypnkv_1:not(:has(:disabled)):active {\n outline: var(--sizes-xs) solid var(--focus-ring);\n}\n\n._field_ypnkv_13 {\n flex: 1;\n}\n\n._affix_ypnkv_14 {\n flex: 0;\n}\n\n._groupError_ypnkv_32 {\n --interactive-border: var(--colors-secondary-red-base);\n --focus-ring: var(--colors-secondary-red-light);\n}\n._groupError_ypnkv_32 > ._field_ypnkv_13,\n._groupError_ypnkv_32 > ._affix_ypnkv_14 {\n outline: none;\n border-color: var(--colors-secondary-red-base);\n}");
4
+ var styles = {"group":"_group_ypnkv_1","defaultBorder":"_defaultBorder_ypnkv_7","field":"_field_ypnkv_13","affix":"_affix_ypnkv_14","groupError":"_groupError_ypnkv_32"};
5
+
6
+ export { styles as default };
7
+ //# sourceMappingURL=WeightInput.module.scss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WeightInput.module.scss.js","sources":["../../../src/components/WeightInput/WeightInput.module.scss"],"sourcesContent":[".group {\n flex: 1;\n\n --interactive-border: var(--colors-secondary-blue-base);\n --focus-ring: var(--colors-secondary-blue-light);\n .defaultBorder {\n --border-color: var(--colors-neutral-grey-dark);\n }\n\n &:not(:has(:disabled)):hover,\n &:focus-within,\n &:not(:has(:disabled)):active {\n border-radius: var(--radius-base);\n > .field,\n > .affix {\n outline: none;\n border-color: var(--interactive-border);\n }\n }\n\n /* Only focus/active states additionally get the outer focus ring. */\n &:focus-within,\n &:not(:has(:disabled)):active {\n outline: var(--sizes-xs) solid var(--focus-ring);\n }\n}\n\n.field {\n flex: 1;\n}\n\n.affix {\n flex: 0;\n}\n\n.groupError {\n --interactive-border: var(--colors-secondary-red-base);\n --focus-ring: var(--colors-secondary-red-light);\n\n > .field,\n > .affix {\n outline: none;\n border-color: var(--colors-secondary-red-base);\n }\n}\n"],"names":["___$insertStyle"],"mappings":";;AACEA,WAAA,CAAA,i4CAAA;AAEA,aAAA,CAAA,OAAA,CAAA,gBAAA,CAAA,eAAA,CAAA,wBAAA,CAAA,OAAA,CAAA,iBAAA,CAAA,OAAA,CAAA,iBAAA,CAAA,YAAA,CAAA,sBAAA;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@veeqo/ui",
3
- "version": "15.23.0",
3
+ "version": "15.23.1",
4
4
  "description": "New optimised component library for Veeqo.",
5
5
  "author": "Robert Wealthall",
6
6
  "license": "ISC",