@transferwise/components 0.0.0-experimental-5d40786 → 0.0.0-experimental-2932cd5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/field/Field.js +4 -4
- package/build/field/Field.js.map +1 -1
- package/build/field/Field.mjs +4 -4
- package/build/field/Field.mjs.map +1 -1
- package/build/inputs/InputGroup.js +42 -46
- package/build/inputs/InputGroup.js.map +1 -1
- package/build/inputs/InputGroup.mjs +43 -47
- package/build/inputs/InputGroup.mjs.map +1 -1
- package/build/inputs/contexts.js +1 -2
- package/build/inputs/contexts.js.map +1 -1
- package/build/inputs/contexts.mjs +1 -2
- package/build/inputs/contexts.mjs.map +1 -1
- package/build/main.css +0 -3
- package/build/segmentedControl/SegmentedControl.js +1 -6
- package/build/segmentedControl/SegmentedControl.js.map +1 -1
- package/build/segmentedControl/SegmentedControl.mjs +1 -6
- package/build/segmentedControl/SegmentedControl.mjs.map +1 -1
- package/build/styles/main.css +0 -3
- package/build/styles/segmentedControl/SegmentedControl.css +0 -3
- package/build/tabs/TabList.js +11 -8
- package/build/tabs/TabList.js.map +1 -1
- package/build/tabs/TabList.mjs +7 -8
- package/build/tabs/TabList.mjs.map +1 -1
- package/build/types/field/Field.d.ts.map +1 -1
- package/build/types/inputs/InputGroup.d.ts.map +1 -1
- package/build/types/inputs/contexts.d.ts.map +1 -1
- package/build/types/segmentedControl/SegmentedControl.d.ts.map +1 -1
- package/build/types/tabs/TabList.d.ts +8 -3
- package/build/types/tabs/TabList.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/field/Field.tsx +7 -5
- package/src/inputs/InputGroup.spec.tsx +6 -1
- package/src/inputs/InputGroup.tsx +39 -45
- package/src/inputs/SearchInput.spec.tsx +1 -1
- package/src/inputs/SelectInput.spec.tsx +1 -1
- package/src/inputs/contexts.tsx +1 -2
- package/src/main.css +0 -3
- package/src/segmentedControl/SegmentedControl.css +0 -3
- package/src/segmentedControl/SegmentedControl.less +0 -4
- package/src/segmentedControl/SegmentedControl.spec.tsx +0 -10
- package/src/segmentedControl/SegmentedControl.story.tsx +4 -42
- package/src/segmentedControl/SegmentedControl.tsx +1 -5
- package/src/tabs/TabList.js +15 -0
- package/src/tabs/Tabs.story.js +135 -0
- package/src/tabs/TabList.tsx +0 -15
- package/src/tabs/Tabs.rtl.spec.tsx +0 -40
- package/src/tabs/Tabs.story.tsx +0 -88
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SegmentedControl.js","sources":["../../src/segmentedControl/SegmentedControl.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport { createRef, useEffect, useRef, useState } from 'react';\n\nimport Body from '../body';\nimport { Typography } from '../common';\
|
|
1
|
+
{"version":3,"file":"SegmentedControl.js","sources":["../../src/segmentedControl/SegmentedControl.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport { createRef, useEffect, useRef, useState } from 'react';\n\nimport Body from '../body';\nimport { Typography } from '../common';\n\ntype SegmentBase = { id: string; label: string; value: string };\n\ntype Segment = SegmentBase & { controls?: never };\ntype SegmentWithControls = SegmentBase & { controls: string };\n\nexport type Segments = readonly Segment[] | readonly SegmentWithControls[];\n\ntype SegmentedControlPropsBase = {\n name: string;\n value: string;\n mode: 'input' | 'view';\n onChange: (value: string) => void;\n};\n\ntype SegmentedControlViewProps = {\n mode: 'view';\n segments: readonly SegmentWithControls[];\n};\n\ntype SegmentedControlInputProps = {\n mode: 'input';\n segments: readonly Segment[];\n};\n\nexport type SegmentedControlProps = SegmentedControlPropsBase &\n (SegmentedControlViewProps | SegmentedControlInputProps);\n\nconst SegmentedControl = ({\n name,\n value,\n mode = 'input',\n segments,\n onChange,\n}: SegmentedControlProps) => {\n const [animate, setAnimate] = useState(false);\n\n const segmentsRef = useRef<HTMLDivElement>(null);\n\n if (segments.length > 3) {\n throw new Error(\n 'SegmentedControl only supports up to 3 segments. Please refer to: https://wise.design/components/segmented-control',\n );\n }\n\n const segmentsWithRefs = segments.map((segment) => ({\n ...segment,\n ref: createRef<HTMLLabelElement | HTMLButtonElement>(),\n }));\n\n const updateSegmentPosition = () => {\n const selectedSegmentRef = segmentsWithRefs.find((segment) => segment.value === value)?.ref;\n\n // We grab the active segments style object from the ref\n // and set the css variables to the selected segments width and x position.\n // This is so we can animate the highlight to the selected segment\n if (selectedSegmentRef?.current && segmentsRef.current) {\n const { style } = segmentsRef.current;\n style.setProperty('--segment-highlight-width', `${selectedSegmentRef.current.offsetWidth}px`);\n style.setProperty('--segment-highlight-x', `${selectedSegmentRef.current.offsetLeft}px`);\n }\n };\n\n useEffect(() => {\n setAnimate(true);\n updateSegmentPosition();\n\n const handleWindowSizeChange = () => {\n setAnimate(false);\n updateSegmentPosition();\n };\n\n window.addEventListener('resize', handleWindowSizeChange);\n return () => {\n window.removeEventListener('resize', handleWindowSizeChange);\n };\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [segmentsWithRefs, value]);\n\n return (\n <div\n ref={segmentsRef}\n data-testid=\"segmented-control\"\n className={classNames('segmented-control', {\n 'segmented-control--input': mode === 'input',\n })}\n >\n <div\n className={classNames('segmented-control__segments', {\n 'segmented-control__segments--no-animate': !animate,\n })}\n role={mode !== 'input' ? 'tablist' : undefined}\n >\n {segmentsWithRefs.map((segment) => {\n const onSelect = () => {\n setAnimate(true);\n onChange(segment.value);\n };\n return mode === 'input' ? (\n <label\n ref={segment.ref as React.MutableRefObject<HTMLLabelElement | null>}\n key={segment.id}\n htmlFor={segment.id}\n className={classNames('segmented-control__segment', {\n 'segmented-control__selected-segment': value === segment.value,\n })}\n >\n <input\n type=\"radio\"\n className=\"segmented-control__radio-input\"\n id={segment.id}\n name={name}\n value={segment.value}\n checked={value === segment.value}\n onChange={onSelect}\n />\n <Body\n className=\"segmented-control__text\"\n as=\"span\"\n type={\n value === segment.value ? Typography.BODY_DEFAULT_BOLD : Typography.BODY_DEFAULT\n }\n >\n {segment.label}\n </Body>\n </label>\n ) : (\n <button\n ref={segment.ref as React.MutableRefObject<HTMLButtonElement | null>}\n key={segment.id}\n type=\"button\"\n role=\"tab\"\n id={segment.id}\n aria-controls={segment.controls}\n aria-selected={value === segment.value}\n className={classNames('segmented-control__segment', 'segmented-control__button', {\n 'segmented-control__selected-segment': value === segment.value,\n })}\n onClick={onSelect}\n >\n <Body\n as=\"span\"\n className=\"segmented-control__text\"\n type={\n value === segment.value ? Typography.BODY_DEFAULT_BOLD : Typography.BODY_DEFAULT\n }\n >\n {segment.label}\n </Body>\n </button>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default SegmentedControl;\n"],"names":["SegmentedControl","name","value","mode","segments","onChange","animate","setAnimate","useState","segmentsRef","useRef","length","Error","segmentsWithRefs","map","segment","ref","createRef","updateSegmentPosition","selectedSegmentRef","find","current","style","setProperty","offsetWidth","offsetLeft","useEffect","handleWindowSizeChange","window","addEventListener","removeEventListener","_jsx","className","classNames","children","role","undefined","onSelect","_jsxs","htmlFor","id","type","checked","Body","as","Typography","BODY_DEFAULT_BOLD","BODY_DEFAULT","label","controls","onClick"],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import classNames from 'classnames';
|
|
2
2
|
import { useState, useRef, createRef, useEffect } from 'react';
|
|
3
3
|
import Body from '../body/Body.mjs';
|
|
4
|
-
import { useInputAttributes } from '../inputs/contexts.mjs';
|
|
5
4
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
5
|
import { Typography } from '../common/propsValues/typography.mjs';
|
|
7
6
|
|
|
@@ -12,9 +11,6 @@ const SegmentedControl = ({
|
|
|
12
11
|
segments,
|
|
13
12
|
onChange
|
|
14
13
|
}) => {
|
|
15
|
-
const inputAttributes = useInputAttributes({
|
|
16
|
-
nonLabelable: true
|
|
17
|
-
});
|
|
18
14
|
const [animate, setAnimate] = useState(false);
|
|
19
15
|
const segmentsRef = useRef(null);
|
|
20
16
|
if (segments.length > 3) {
|
|
@@ -60,8 +56,7 @@ const SegmentedControl = ({
|
|
|
60
56
|
className: classNames('segmented-control__segments', {
|
|
61
57
|
'segmented-control__segments--no-animate': !animate
|
|
62
58
|
}),
|
|
63
|
-
role: mode !== 'input' ? 'tablist' :
|
|
64
|
-
...inputAttributes,
|
|
59
|
+
role: mode !== 'input' ? 'tablist' : undefined,
|
|
65
60
|
children: segmentsWithRefs.map(segment => {
|
|
66
61
|
const onSelect = () => {
|
|
67
62
|
setAnimate(true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SegmentedControl.mjs","sources":["../../src/segmentedControl/SegmentedControl.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport { createRef, useEffect, useRef, useState } from 'react';\n\nimport Body from '../body';\nimport { Typography } from '../common';\
|
|
1
|
+
{"version":3,"file":"SegmentedControl.mjs","sources":["../../src/segmentedControl/SegmentedControl.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport { createRef, useEffect, useRef, useState } from 'react';\n\nimport Body from '../body';\nimport { Typography } from '../common';\n\ntype SegmentBase = { id: string; label: string; value: string };\n\ntype Segment = SegmentBase & { controls?: never };\ntype SegmentWithControls = SegmentBase & { controls: string };\n\nexport type Segments = readonly Segment[] | readonly SegmentWithControls[];\n\ntype SegmentedControlPropsBase = {\n name: string;\n value: string;\n mode: 'input' | 'view';\n onChange: (value: string) => void;\n};\n\ntype SegmentedControlViewProps = {\n mode: 'view';\n segments: readonly SegmentWithControls[];\n};\n\ntype SegmentedControlInputProps = {\n mode: 'input';\n segments: readonly Segment[];\n};\n\nexport type SegmentedControlProps = SegmentedControlPropsBase &\n (SegmentedControlViewProps | SegmentedControlInputProps);\n\nconst SegmentedControl = ({\n name,\n value,\n mode = 'input',\n segments,\n onChange,\n}: SegmentedControlProps) => {\n const [animate, setAnimate] = useState(false);\n\n const segmentsRef = useRef<HTMLDivElement>(null);\n\n if (segments.length > 3) {\n throw new Error(\n 'SegmentedControl only supports up to 3 segments. Please refer to: https://wise.design/components/segmented-control',\n );\n }\n\n const segmentsWithRefs = segments.map((segment) => ({\n ...segment,\n ref: createRef<HTMLLabelElement | HTMLButtonElement>(),\n }));\n\n const updateSegmentPosition = () => {\n const selectedSegmentRef = segmentsWithRefs.find((segment) => segment.value === value)?.ref;\n\n // We grab the active segments style object from the ref\n // and set the css variables to the selected segments width and x position.\n // This is so we can animate the highlight to the selected segment\n if (selectedSegmentRef?.current && segmentsRef.current) {\n const { style } = segmentsRef.current;\n style.setProperty('--segment-highlight-width', `${selectedSegmentRef.current.offsetWidth}px`);\n style.setProperty('--segment-highlight-x', `${selectedSegmentRef.current.offsetLeft}px`);\n }\n };\n\n useEffect(() => {\n setAnimate(true);\n updateSegmentPosition();\n\n const handleWindowSizeChange = () => {\n setAnimate(false);\n updateSegmentPosition();\n };\n\n window.addEventListener('resize', handleWindowSizeChange);\n return () => {\n window.removeEventListener('resize', handleWindowSizeChange);\n };\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [segmentsWithRefs, value]);\n\n return (\n <div\n ref={segmentsRef}\n data-testid=\"segmented-control\"\n className={classNames('segmented-control', {\n 'segmented-control--input': mode === 'input',\n })}\n >\n <div\n className={classNames('segmented-control__segments', {\n 'segmented-control__segments--no-animate': !animate,\n })}\n role={mode !== 'input' ? 'tablist' : undefined}\n >\n {segmentsWithRefs.map((segment) => {\n const onSelect = () => {\n setAnimate(true);\n onChange(segment.value);\n };\n return mode === 'input' ? (\n <label\n ref={segment.ref as React.MutableRefObject<HTMLLabelElement | null>}\n key={segment.id}\n htmlFor={segment.id}\n className={classNames('segmented-control__segment', {\n 'segmented-control__selected-segment': value === segment.value,\n })}\n >\n <input\n type=\"radio\"\n className=\"segmented-control__radio-input\"\n id={segment.id}\n name={name}\n value={segment.value}\n checked={value === segment.value}\n onChange={onSelect}\n />\n <Body\n className=\"segmented-control__text\"\n as=\"span\"\n type={\n value === segment.value ? Typography.BODY_DEFAULT_BOLD : Typography.BODY_DEFAULT\n }\n >\n {segment.label}\n </Body>\n </label>\n ) : (\n <button\n ref={segment.ref as React.MutableRefObject<HTMLButtonElement | null>}\n key={segment.id}\n type=\"button\"\n role=\"tab\"\n id={segment.id}\n aria-controls={segment.controls}\n aria-selected={value === segment.value}\n className={classNames('segmented-control__segment', 'segmented-control__button', {\n 'segmented-control__selected-segment': value === segment.value,\n })}\n onClick={onSelect}\n >\n <Body\n as=\"span\"\n className=\"segmented-control__text\"\n type={\n value === segment.value ? Typography.BODY_DEFAULT_BOLD : Typography.BODY_DEFAULT\n }\n >\n {segment.label}\n </Body>\n </button>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default SegmentedControl;\n"],"names":["SegmentedControl","name","value","mode","segments","onChange","animate","setAnimate","useState","segmentsRef","useRef","length","Error","segmentsWithRefs","map","segment","ref","createRef","updateSegmentPosition","selectedSegmentRef","find","current","style","setProperty","offsetWidth","offsetLeft","useEffect","handleWindowSizeChange","window","addEventListener","removeEventListener","_jsx","className","classNames","children","role","undefined","onSelect","_jsxs","htmlFor","id","type","checked","Body","as","Typography","BODY_DEFAULT_BOLD","BODY_DEFAULT","label","controls","onClick"],"mappings":"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"}
|
package/build/styles/main.css
CHANGED
|
@@ -4755,9 +4755,6 @@ html:not([dir="rtl"]) .np-navigation-option {
|
|
|
4755
4755
|
transition: background 300ms;
|
|
4756
4756
|
color: var(--color-interactive-primary);
|
|
4757
4757
|
}
|
|
4758
|
-
.np-theme-personal .form-group .segmented-control__segment {
|
|
4759
|
-
margin-bottom: 0;
|
|
4760
|
-
}
|
|
4761
4758
|
.segmented-control__segment:first-child {
|
|
4762
4759
|
margin-left: 0;
|
|
4763
4760
|
}
|
package/build/tabs/TabList.js
CHANGED
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var PropTypes = require('prop-types');
|
|
4
4
|
var jsxRuntime = require('react/jsx-runtime');
|
|
5
5
|
|
|
6
|
-
function
|
|
6
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
|
+
|
|
8
|
+
var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
|
|
9
|
+
|
|
10
|
+
const TabList = ({
|
|
7
11
|
children
|
|
8
|
-
}) {
|
|
9
|
-
const inputAttributes = contexts.useInputAttributes({
|
|
10
|
-
nonLabelable: true
|
|
11
|
-
});
|
|
12
|
+
}) => {
|
|
12
13
|
return /*#__PURE__*/jsxRuntime.jsx("ul", {
|
|
13
14
|
className: "tabs__tab-list",
|
|
14
15
|
role: "tablist",
|
|
15
|
-
...inputAttributes,
|
|
16
16
|
children: children
|
|
17
17
|
});
|
|
18
|
-
}
|
|
18
|
+
};
|
|
19
|
+
TabList.propTypes = {
|
|
20
|
+
children: PropTypes__default.default.oneOfType([PropTypes__default.default.object, PropTypes__default.default.array]).isRequired
|
|
21
|
+
};
|
|
19
22
|
|
|
20
23
|
module.exports = TabList;
|
|
21
24
|
//# sourceMappingURL=TabList.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabList.js","sources":["../../src/tabs/TabList.
|
|
1
|
+
{"version":3,"file":"TabList.js","sources":["../../src/tabs/TabList.js"],"sourcesContent":["import PropTypes from 'prop-types';\n\nconst TabList = ({ children }) => {\n return (\n <ul className=\"tabs__tab-list\" role=\"tablist\">\n {children}\n </ul>\n );\n};\n\nTabList.propTypes = {\n children: PropTypes.oneOfType([PropTypes.object, PropTypes.array]).isRequired,\n};\n\nexport default TabList;\n"],"names":["TabList","children","_jsx","className","role","propTypes","PropTypes","oneOfType","object","array","isRequired"],"mappings":";;;;;;;;;AAEMA,MAAAA,OAAO,GAAGA,CAAC;AAAEC,EAAAA,QAAAA;AAAS,CAAC,KAAK;AAChC,EAAA,oBACEC,cAAA,CAAA,IAAA,EAAA;AAAIC,IAAAA,SAAS,EAAC,gBAAgB;AAACC,IAAAA,IAAI,EAAC,SAAS;AAAAH,IAAAA,QAAA,EAC1CA,QAAAA;AAAQ,GACP,CAAC,CAAA;AAET,EAAC;AAEDD,OAAO,CAACK,SAAS,GAAG;AAClBJ,EAAAA,QAAQ,EAAEK,0BAAS,CAACC,SAAS,CAAC,CAACD,0BAAS,CAACE,MAAM,EAAEF,0BAAS,CAACG,KAAK,CAAC,CAAC,CAACC,UAAAA;AACrE,CAAC;;;;"}
|
package/build/tabs/TabList.mjs
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
import
|
|
1
|
+
import PropTypes from 'prop-types';
|
|
2
2
|
import { jsx } from 'react/jsx-runtime';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
const TabList = ({
|
|
5
5
|
children
|
|
6
|
-
}) {
|
|
7
|
-
const inputAttributes = useInputAttributes({
|
|
8
|
-
nonLabelable: true
|
|
9
|
-
});
|
|
6
|
+
}) => {
|
|
10
7
|
return /*#__PURE__*/jsx("ul", {
|
|
11
8
|
className: "tabs__tab-list",
|
|
12
9
|
role: "tablist",
|
|
13
|
-
...inputAttributes,
|
|
14
10
|
children: children
|
|
15
11
|
});
|
|
16
|
-
}
|
|
12
|
+
};
|
|
13
|
+
TabList.propTypes = {
|
|
14
|
+
children: PropTypes.oneOfType([PropTypes.object, PropTypes.array]).isRequired
|
|
15
|
+
};
|
|
17
16
|
|
|
18
17
|
export { TabList as default };
|
|
19
18
|
//# sourceMappingURL=TabList.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabList.mjs","sources":["../../src/tabs/TabList.
|
|
1
|
+
{"version":3,"file":"TabList.mjs","sources":["../../src/tabs/TabList.js"],"sourcesContent":["import PropTypes from 'prop-types';\n\nconst TabList = ({ children }) => {\n return (\n <ul className=\"tabs__tab-list\" role=\"tablist\">\n {children}\n </ul>\n );\n};\n\nTabList.propTypes = {\n children: PropTypes.oneOfType([PropTypes.object, PropTypes.array]).isRequired,\n};\n\nexport default TabList;\n"],"names":["TabList","children","_jsx","className","role","propTypes","PropTypes","oneOfType","object","array","isRequired"],"mappings":";;;AAEMA,MAAAA,OAAO,GAAGA,CAAC;AAAEC,EAAAA,QAAAA;AAAS,CAAC,KAAK;AAChC,EAAA,oBACEC,GAAA,CAAA,IAAA,EAAA;AAAIC,IAAAA,SAAS,EAAC,gBAAgB;AAACC,IAAAA,IAAI,EAAC,SAAS;AAAAH,IAAAA,QAAA,EAC1CA,QAAAA;AAAQ,GACP,CAAC,CAAA;AAET,EAAC;AAEDD,OAAO,CAACK,SAAS,GAAG;AAClBJ,EAAAA,QAAQ,EAAEK,SAAS,CAACC,SAAS,CAAC,CAACD,SAAS,CAACE,MAAM,EAAEF,SAAS,CAACG,KAAK,CAAC,CAAC,CAACC,UAAAA;AACrE,CAAC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../../src/field/Field.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAUtC,MAAM,MAAM,UAAU,GAAG;IACvB,6IAA6I;IAC7I,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,sGAAsG;IACtG,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,6EAA6E;IAC7E,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;IACjG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,KAAK,4FAQf,UAAU,
|
|
1
|
+
{"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../../src/field/Field.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAUtC,MAAM,MAAM,UAAU,GAAG;IACvB,6IAA6I;IAC7I,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,sGAAsG;IACtG,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,6EAA6E;IAC7E,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;IACjG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,KAAK,4FAQf,UAAU,gCAiDZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputGroup.d.ts","sourceRoot":"","sources":["../../../src/inputs/InputGroup.tsx"],"names":[],"mappings":"AAsBA,wBAAgB,gBAAgB;;;EAQ/B;AAED,UAAU,eAAe;IACvB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAiBD,wBAAgB,UAAU,CAAC,EACzB,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,QAAQ,GACT,EAAE,eAAe,+
|
|
1
|
+
{"version":3,"file":"InputGroup.d.ts","sourceRoot":"","sources":["../../../src/inputs/InputGroup.tsx"],"names":[],"mappings":"AAsBA,wBAAgB,gBAAgB;;;EAQ/B;AAED,UAAU,eAAe;IACvB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAiBD,wBAAgB,UAAU,CAAC,EACzB,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,QAAQ,GACT,EAAE,eAAe,+BAmBjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contexts.d.ts","sourceRoot":"","sources":["../../../src/inputs/contexts.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,2BAA2B,8CAA+B,CAAC;AAGxE,eAAO,MAAM,sBAAsB,8CAA0B,CAAC;AAG9D,eAAO,MAAM,wBAAwB,8CAAmC,CAAC;AAGzE,eAAO,MAAM,oBAAoB,+CAA+B,CAAC;AAEjE,UAAU,sBAAsB;IAC9B,gLAAgL;IAChL,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,kBAAkB,CAAC,EAAE,YAAY,EAAE,GAAE,sBAA2B;;;;;
|
|
1
|
+
{"version":3,"file":"contexts.d.ts","sourceRoot":"","sources":["../../../src/inputs/contexts.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,2BAA2B,8CAA+B,CAAC;AAGxE,eAAO,MAAM,sBAAsB,8CAA0B,CAAC;AAG9D,eAAO,MAAM,wBAAwB,8CAAmC,CAAC;AAGzE,eAAO,MAAM,oBAAoB,+CAA+B,CAAC;AAEjE,UAAU,sBAAsB;IAC9B,gLAAgL;IAChL,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,kBAAkB,CAAC,EAAE,YAAY,EAAE,GAAE,sBAA2B;;;;;EAQ/E;AAED,MAAM,WAAW,wBAAwB;IACvC,eAAe,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;CACxD;AAED,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,OAAO,CAAC,wBAAwB,CAAC,EAC7E,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EACjC,IAAI,CAAC,EAAE,sBAAsB;YAEgB,IAAI,CAAC,CAAC,EAAE,MAAM,wBAAwB,CAAC;;EAOrF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SegmentedControl.d.ts","sourceRoot":"","sources":["../../../src/segmentedControl/SegmentedControl.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SegmentedControl.d.ts","sourceRoot":"","sources":["../../../src/segmentedControl/SegmentedControl.tsx"],"names":[],"mappings":"AAMA,KAAK,WAAW,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhE,KAAK,OAAO,GAAG,WAAW,GAAG;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAClD,KAAK,mBAAmB,GAAG,WAAW,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D,MAAM,MAAM,QAAQ,GAAG,SAAS,OAAO,EAAE,GAAG,SAAS,mBAAmB,EAAE,CAAC;AAE3E,KAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC,CAAC;AAEF,KAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;CAC1C,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,yBAAyB,GAC3D,CAAC,yBAAyB,GAAG,0BAA0B,CAAC,CAAC;AAE3D,QAAA,MAAM,gBAAgB,+CAMnB,qBAAqB,gCA0HvB,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
1
|
+
export default TabList;
|
|
2
|
+
declare function TabList({ children }: {
|
|
3
|
+
children: any;
|
|
4
|
+
}): import("react").JSX.Element;
|
|
5
|
+
declare namespace TabList {
|
|
6
|
+
namespace propTypes {
|
|
7
|
+
let children: any;
|
|
8
|
+
}
|
|
3
9
|
}
|
|
4
|
-
export default function TabList({ children }: TabListProps): import("react").JSX.Element;
|
|
5
10
|
//# sourceMappingURL=TabList.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabList.d.ts","sourceRoot":"","sources":["../../../src/tabs/TabList.
|
|
1
|
+
{"version":3,"file":"TabList.d.ts","sourceRoot":"","sources":["../../../src/tabs/TabList.js"],"names":[],"mappings":";AAEA;;gCAMC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@transferwise/components",
|
|
3
|
-
"version": "0.0.0-experimental-
|
|
3
|
+
"version": "0.0.0-experimental-2932cd5",
|
|
4
4
|
"description": "Neptune React components",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -94,12 +94,12 @@
|
|
|
94
94
|
"rollup-preserve-directives": "^1.1.1",
|
|
95
95
|
"storybook": "^8.1.10",
|
|
96
96
|
"@transferwise/less-config": "3.1.0",
|
|
97
|
-
"@transferwise/neptune-css": "
|
|
97
|
+
"@transferwise/neptune-css": "14.12.0",
|
|
98
98
|
"@wise/components-theming": "1.4.0"
|
|
99
99
|
},
|
|
100
100
|
"peerDependencies": {
|
|
101
101
|
"@transferwise/icons": "^3.7.0",
|
|
102
|
-
"@transferwise/neptune-css": "
|
|
102
|
+
"@transferwise/neptune-css": "^14.9.6",
|
|
103
103
|
"@wise/art": "^2.7.0",
|
|
104
104
|
"@wise/components-theming": "^1.0.0",
|
|
105
105
|
"react": ">=18",
|
package/src/field/Field.tsx
CHANGED
|
@@ -63,12 +63,14 @@ export const Field = ({
|
|
|
63
63
|
className,
|
|
64
64
|
)}
|
|
65
65
|
>
|
|
66
|
-
{label ? (
|
|
67
|
-
<
|
|
66
|
+
{label != null ? (
|
|
67
|
+
<Label id={labelId} htmlFor={inputId}>
|
|
68
68
|
{label}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
{children}
|
|
70
|
+
</Label>
|
|
71
|
+
) : (
|
|
72
|
+
children
|
|
73
|
+
)}
|
|
72
74
|
|
|
73
75
|
{message && (
|
|
74
76
|
<InlineAlert type={sentiment} id={descriptionId}>
|
|
@@ -4,6 +4,7 @@ import { Field } from '../field/Field';
|
|
|
4
4
|
import { mockResizeObserver, render, screen } from '../test-utils';
|
|
5
5
|
import { Input } from './Input';
|
|
6
6
|
import { InputGroup } from './InputGroup';
|
|
7
|
+
import Button from '../button';
|
|
7
8
|
|
|
8
9
|
mockResizeObserver();
|
|
9
10
|
|
|
@@ -16,11 +17,15 @@ describe('InputGroup', () => {
|
|
|
16
17
|
content: <Search size={24} />,
|
|
17
18
|
initialContentWidth: 24,
|
|
18
19
|
}}
|
|
20
|
+
addonEnd={{
|
|
21
|
+
content: <Button>Go</Button>,
|
|
22
|
+
interactive: true,
|
|
23
|
+
}}
|
|
19
24
|
>
|
|
20
25
|
<Input />
|
|
21
26
|
</InputGroup>
|
|
22
27
|
</Field>,
|
|
23
28
|
);
|
|
24
|
-
expect(screen.
|
|
29
|
+
expect(screen.getByLabelText('Search…')).toHaveRole('textbox');
|
|
25
30
|
});
|
|
26
31
|
});
|
|
@@ -67,38 +67,23 @@ export function InputGroup({
|
|
|
67
67
|
className,
|
|
68
68
|
children,
|
|
69
69
|
}: InputGroupProps) {
|
|
70
|
-
const inputAttributes = useInputAttributes({ nonLabelable: true });
|
|
71
|
-
|
|
72
70
|
const [paddingStart, setPaddingStart] = useState(inputPaddingInitialState(addonStart));
|
|
73
71
|
const [paddingEnd, setPaddingEnd] = useState(inputPaddingInitialState(addonEnd));
|
|
74
72
|
|
|
75
73
|
return (
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
disabled={disabled}
|
|
90
|
-
className={classNames(className, 'np-input-group')}
|
|
91
|
-
>
|
|
92
|
-
{addonStart != null ? <InputAddon placement="start" {...addonStart} /> : null}
|
|
93
|
-
{children}
|
|
94
|
-
{addonEnd != null ? <InputAddon placement="end" {...addonEnd} /> : null}
|
|
95
|
-
</fieldset>
|
|
96
|
-
</InputPaddingEndContext.Provider>
|
|
97
|
-
</InputPaddingStartContext.Provider>
|
|
98
|
-
</InputInvalidProvider>
|
|
99
|
-
</InputDescribedByProvider>
|
|
100
|
-
</InputIdContextProvider>
|
|
101
|
-
</FieldLabelIdContextProvider>
|
|
74
|
+
<InputPaddingStartContext.Provider
|
|
75
|
+
value={useMemo(() => [paddingStart, setPaddingStart], [paddingStart])}
|
|
76
|
+
>
|
|
77
|
+
<InputPaddingEndContext.Provider
|
|
78
|
+
value={useMemo(() => [paddingEnd, setPaddingEnd], [paddingEnd])}
|
|
79
|
+
>
|
|
80
|
+
<fieldset disabled={disabled} className={classNames(className, 'np-input-group')}>
|
|
81
|
+
{addonStart != null ? <InputAddon placement="start" {...addonStart} /> : null}
|
|
82
|
+
{children}
|
|
83
|
+
{addonEnd != null ? <InputAddon placement="end" {...addonEnd} /> : null}
|
|
84
|
+
</fieldset>
|
|
85
|
+
</InputPaddingEndContext.Provider>
|
|
86
|
+
</InputPaddingStartContext.Provider>
|
|
102
87
|
);
|
|
103
88
|
}
|
|
104
89
|
|
|
@@ -143,22 +128,31 @@ function InputAddon({
|
|
|
143
128
|
});
|
|
144
129
|
|
|
145
130
|
return (
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
131
|
+
/* Prevent nested controls from being labeled redundantly */
|
|
132
|
+
<FieldLabelIdContextProvider value={undefined}>
|
|
133
|
+
<InputIdContextProvider value={undefined}>
|
|
134
|
+
<InputDescribedByProvider value={undefined}>
|
|
135
|
+
<InputInvalidProvider value={undefined}>
|
|
136
|
+
<span
|
|
137
|
+
ref={ref}
|
|
138
|
+
className={classNames(
|
|
139
|
+
'np-input-addon',
|
|
140
|
+
{
|
|
141
|
+
'np-input-addon--placement-start': placement === 'start',
|
|
142
|
+
'np-input-addon--placement-end': placement === 'end',
|
|
143
|
+
},
|
|
144
|
+
interactive && 'np-input-addon--interactive',
|
|
145
|
+
{
|
|
146
|
+
'np-input-addon--padding-sm': padding === 'sm',
|
|
147
|
+
'np-input-addon--padding-md': padding === 'md',
|
|
148
|
+
},
|
|
149
|
+
)}
|
|
150
|
+
>
|
|
151
|
+
{content}
|
|
152
|
+
</span>
|
|
153
|
+
</InputInvalidProvider>
|
|
154
|
+
</InputDescribedByProvider>
|
|
155
|
+
</InputIdContextProvider>
|
|
156
|
+
</FieldLabelIdContextProvider>
|
|
163
157
|
);
|
|
164
158
|
}
|
|
@@ -214,6 +214,6 @@ describe('SelectInput', () => {
|
|
|
214
214
|
<SelectInput items={[{ type: 'option', value: 'USD' }]} value="USD" />
|
|
215
215
|
</Field>,
|
|
216
216
|
);
|
|
217
|
-
expect(screen.
|
|
217
|
+
expect(screen.getByLabelText('Currency')).toHaveAttribute('aria-haspopup');
|
|
218
218
|
});
|
|
219
219
|
});
|
package/src/inputs/contexts.tsx
CHANGED
|
@@ -18,10 +18,9 @@ interface UseInputAttributesArgs {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
export function useInputAttributes({ nonLabelable }: UseInputAttributesArgs = {}) {
|
|
21
|
-
const id = useContext(InputIdContext);
|
|
22
21
|
const labelId = useContext(FieldLabelIdContext);
|
|
23
22
|
return {
|
|
24
|
-
id:
|
|
23
|
+
id: useContext(InputIdContext),
|
|
25
24
|
'aria-labelledby': nonLabelable ? labelId : undefined,
|
|
26
25
|
'aria-describedby': useContext(InputDescribedByContext),
|
|
27
26
|
'aria-invalid': useContext(InputInvalidContext),
|
package/src/main.css
CHANGED
|
@@ -4755,9 +4755,6 @@ html:not([dir="rtl"]) .np-navigation-option {
|
|
|
4755
4755
|
transition: background 300ms;
|
|
4756
4756
|
color: var(--color-interactive-primary);
|
|
4757
4757
|
}
|
|
4758
|
-
.np-theme-personal .form-group .segmented-control__segment {
|
|
4759
|
-
margin-bottom: 0;
|
|
4760
|
-
}
|
|
4761
4758
|
.segmented-control__segment:first-child {
|
|
4762
4759
|
margin-left: 0;
|
|
4763
4760
|
}
|
|
@@ -3,7 +3,6 @@ import React from 'react';
|
|
|
3
3
|
import { render, screen, userEvent, waitFor } from '../test-utils';
|
|
4
4
|
|
|
5
5
|
import SegmentedControl, { SegmentedControlProps } from './SegmentedControl';
|
|
6
|
-
import { Field } from '../field/Field';
|
|
7
6
|
|
|
8
7
|
const defaultSegments = [
|
|
9
8
|
{
|
|
@@ -189,13 +188,4 @@ describe('SegmentedControl', () => {
|
|
|
189
188
|
'SegmentedControl only supports up to 3 segments. Please refer to: https://wise.design/components/segmented-control',
|
|
190
189
|
);
|
|
191
190
|
});
|
|
192
|
-
|
|
193
|
-
it('supports `Field` for labeling', () => {
|
|
194
|
-
render(
|
|
195
|
-
<Field label="Label">
|
|
196
|
-
<SegmentedControl {...defaultProps} />
|
|
197
|
-
</Field>,
|
|
198
|
-
);
|
|
199
|
-
expect(screen.getAllByRole('group')[0]).toHaveAccessibleName(/^Label/);
|
|
200
|
-
});
|
|
201
191
|
});
|
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import React
|
|
1
|
+
import { StoryFn } from '@storybook/react';
|
|
2
|
+
import React from 'react';
|
|
3
3
|
|
|
4
4
|
import Button from '../button';
|
|
5
5
|
|
|
6
6
|
import SegmentedControl from './SegmentedControl';
|
|
7
|
-
import { Field } from '../field/Field';
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
export default {
|
|
10
9
|
component: SegmentedControl,
|
|
11
10
|
title: 'Forms/SegmentedControl',
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export default meta;
|
|
15
|
-
type Story = StoryObj<typeof meta>;
|
|
11
|
+
};
|
|
16
12
|
|
|
17
13
|
const Template: StoryFn = (args) => {
|
|
18
14
|
const [segments, setSegments] = React.useState([
|
|
@@ -95,37 +91,3 @@ export const SegmentedControlView = {
|
|
|
95
91
|
mode: 'view',
|
|
96
92
|
},
|
|
97
93
|
};
|
|
98
|
-
|
|
99
|
-
export const WithinField = {
|
|
100
|
-
args: {
|
|
101
|
-
name: 'aSegmentedControl',
|
|
102
|
-
mode: 'input',
|
|
103
|
-
value: 'cupcakes',
|
|
104
|
-
segments: [
|
|
105
|
-
{ id: 'CUPCAKE', label: 'Cupcakes', value: 'cupcakes' },
|
|
106
|
-
{ id: 'SPONGECAKE', label: 'Sponge cake', value: 'spongecake' },
|
|
107
|
-
{ id: 'CARROT_CAKE', label: 'Carrot cake', value: 'carrotcake' },
|
|
108
|
-
],
|
|
109
|
-
onChange: () => {},
|
|
110
|
-
},
|
|
111
|
-
render: function Render({ value: initialValue, onChange, ...args }) {
|
|
112
|
-
const [value, setValue] = useState(initialValue);
|
|
113
|
-
return (
|
|
114
|
-
<SegmentedControl
|
|
115
|
-
value={value}
|
|
116
|
-
onChange={(nextValue) => {
|
|
117
|
-
setValue(nextValue);
|
|
118
|
-
onChange?.(nextValue);
|
|
119
|
-
}}
|
|
120
|
-
{...args}
|
|
121
|
-
/>
|
|
122
|
-
);
|
|
123
|
-
},
|
|
124
|
-
decorators: [
|
|
125
|
-
(Story) => (
|
|
126
|
-
<Field label="Label">
|
|
127
|
-
<Story />
|
|
128
|
-
</Field>
|
|
129
|
-
),
|
|
130
|
-
],
|
|
131
|
-
} satisfies Story;
|