@transferwise/components 46.52.2 → 46.53.0
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/card/Card.js +20 -13
- package/build/card/Card.js.map +1 -1
- package/build/card/Card.mjs +21 -14
- package/build/card/Card.mjs.map +1 -1
- package/build/common/Option/Option.js.map +1 -1
- package/build/common/Option/Option.mjs.map +1 -1
- package/build/dateLookup/dateTrigger/DateTrigger.js +8 -4
- package/build/dateLookup/dateTrigger/DateTrigger.js.map +1 -1
- package/build/dateLookup/dateTrigger/DateTrigger.mjs +8 -4
- package/build/dateLookup/dateTrigger/DateTrigger.mjs.map +1 -1
- package/build/field/Field.js +36 -8
- package/build/field/Field.js.map +1 -1
- package/build/field/Field.mjs +37 -9
- package/build/field/Field.mjs.map +1 -1
- package/build/i18n/en.json +1 -0
- package/build/i18n/en.json.js +1 -0
- package/build/i18n/en.json.js.map +1 -1
- package/build/i18n/en.json.mjs +1 -0
- package/build/i18n/en.json.mjs.map +1 -1
- package/build/index.js +2 -2
- package/build/index.mjs +1 -1
- package/build/inlineAlert/InlineAlert.js +13 -6
- package/build/inlineAlert/InlineAlert.js.map +1 -1
- package/build/inlineAlert/InlineAlert.mjs +13 -6
- package/build/inlineAlert/InlineAlert.mjs.map +1 -1
- package/build/label/Label.js +35 -4
- package/build/label/Label.js.map +1 -1
- package/build/label/Label.messages.js +12 -0
- package/build/label/Label.messages.js.map +1 -0
- package/build/label/Label.messages.mjs +10 -0
- package/build/label/Label.messages.mjs.map +1 -0
- package/build/label/Label.mjs +36 -5
- package/build/label/Label.mjs.map +1 -1
- package/build/main.css +4 -8
- package/build/styles/dateLookup/dateTrigger/DateTrigger.css +0 -8
- package/build/styles/field/Field.css +4 -0
- package/build/styles/main.css +4 -8
- package/build/tabs/Tab.js +13 -38
- package/build/tabs/Tab.js.map +1 -1
- package/build/tabs/Tab.mjs +13 -34
- package/build/tabs/Tab.mjs.map +1 -1
- package/build/tabs/TabList.js +3 -11
- package/build/tabs/TabList.js.map +1 -1
- package/build/tabs/TabList.mjs +3 -7
- package/build/tabs/TabList.mjs.map +1 -1
- package/build/tabs/TabPanel.js +3 -16
- package/build/tabs/TabPanel.js.map +1 -1
- package/build/tabs/TabPanel.mjs +3 -12
- package/build/tabs/TabPanel.mjs.map +1 -1
- package/build/tabs/Tabs.js +24 -48
- package/build/tabs/Tabs.js.map +1 -1
- package/build/tabs/Tabs.mjs +24 -47
- package/build/tabs/Tabs.mjs.map +1 -1
- package/build/tabs/utils.js +0 -1
- package/build/tabs/utils.js.map +1 -1
- package/build/tabs/utils.mjs +0 -1
- package/build/tabs/utils.mjs.map +1 -1
- package/build/types/card/Card.d.ts.map +1 -1
- package/build/types/common/Option/Option.d.ts +2 -0
- package/build/types/common/Option/Option.d.ts.map +1 -1
- package/build/types/dateLookup/dateTrigger/DateTrigger.d.ts.map +1 -1
- package/build/types/field/Field.d.ts +4 -2
- package/build/types/field/Field.d.ts.map +1 -1
- package/build/types/index.d.ts +2 -1
- package/build/types/index.d.ts.map +1 -1
- package/build/types/inlineAlert/InlineAlert.d.ts +9 -0
- package/build/types/inlineAlert/InlineAlert.d.ts.map +1 -1
- package/build/types/label/Label.d.ts +21 -1
- package/build/types/label/Label.d.ts.map +1 -1
- package/build/types/label/Label.messages.d.ts +8 -0
- package/build/types/label/Label.messages.d.ts.map +1 -0
- package/build/types/label/index.d.ts +3 -0
- package/build/types/label/index.d.ts.map +1 -0
- package/build/types/tabs/Tab.d.ts +12 -1
- package/build/types/tabs/Tab.d.ts.map +1 -1
- package/build/types/tabs/TabList.d.ts +3 -8
- package/build/types/tabs/TabList.d.ts.map +1 -1
- package/build/types/tabs/TabPanel.d.ts +6 -14
- package/build/types/tabs/TabPanel.d.ts.map +1 -1
- package/build/types/tabs/Tabs.d.ts +83 -30
- package/build/types/tabs/Tabs.d.ts.map +1 -1
- package/build/types/tabs/index.d.ts +2 -1
- package/build/types/tabs/index.d.ts.map +1 -1
- package/build/types/tabs/utils.d.ts +12 -7
- package/build/types/tabs/utils.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/card/Card.spec.tsx +35 -3
- package/src/card/Card.story.tsx +56 -40
- package/src/card/Card.tsx +32 -14
- package/src/common/Option/Option.tsx +2 -0
- package/src/dateInput/DateInput.tests.story.tsx +6 -42
- package/src/dateLookup/DateLookup.rtl.spec.tsx +1 -1
- package/src/dateLookup/dateTrigger/DateTrigger.css +0 -8
- package/src/dateLookup/dateTrigger/DateTrigger.less +0 -8
- package/src/dateLookup/dateTrigger/DateTrigger.spec.js +1 -1
- package/src/dateLookup/dateTrigger/DateTrigger.tsx +9 -4
- package/src/field/Field.css +4 -0
- package/src/field/Field.less +5 -0
- package/src/field/Field.spec.tsx +41 -5
- package/src/field/Field.story.tsx +105 -7
- package/src/field/Field.tsx +34 -10
- package/src/i18n/en.json +1 -0
- package/src/index.ts +2 -1
- package/src/inlineAlert/InlineAlert.story.tsx +7 -72
- package/src/inlineAlert/InlineAlert.tsx +14 -3
- package/src/inputWithDisplayFormat/InputWithDisplayFormat.story.js +5 -10
- package/src/inputs/InputGroup.spec.tsx +1 -1
- package/src/inputs/SearchInput.spec.tsx +1 -1
- package/src/inputs/SelectInput.spec.tsx +1 -1
- package/src/label/Label.messages.tsx +8 -0
- package/src/label/Label.spec.tsx +53 -4
- package/src/label/Label.story.tsx +32 -26
- package/src/label/Label.tsx +47 -2
- package/src/label/index.ts +2 -0
- package/src/main.css +4 -8
- package/src/main.less +1 -0
- package/src/moneyInput/MoneyInput.story.tsx +11 -11
- package/src/radioGroup/RadioGroup.rtl.spec.tsx +1 -1
- package/src/select/Select.rtl.spec.tsx +1 -1
- package/src/switch/Switch.spec.tsx +1 -1
- package/src/switch/Switch.story.tsx +19 -21
- package/src/tabs/Tab.tsx +72 -0
- package/src/tabs/TabList.tsx +11 -0
- package/src/tabs/TabPanel.tsx +14 -0
- package/src/tabs/{Tabs.story.js → Tabs.story.tsx} +1 -1
- package/src/tabs/{Tabs.js → Tabs.tsx} +111 -74
- package/src/tabs/index.ts +2 -0
- package/src/tabs/{utils.spec.js → utils.spec.ts} +24 -21
- package/src/tabs/{utils.js → utils.ts} +15 -9
- package/src/field/Field.tests.story.tsx +0 -33
- package/src/tabs/Tab.js +0 -71
- package/src/tabs/TabList.js +0 -15
- package/src/tabs/TabPanel.js +0 -20
- package/src/tabs/index.js +0 -1
package/build/tabs/Tab.mjs
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { clsx } from 'clsx';
|
|
2
|
-
import PropTypes from 'prop-types';
|
|
3
2
|
import { forwardRef, useRef, useEffect } from 'react';
|
|
3
|
+
import { useEffectEvent } from '../common/hooks/useEffectEvent.mjs';
|
|
4
4
|
import { jsx } from 'react/jsx-runtime';
|
|
5
5
|
|
|
6
|
-
const
|
|
6
|
+
const noop = () => {};
|
|
7
|
+
const Tab = /*#__PURE__*/forwardRef(function Tab({
|
|
7
8
|
children,
|
|
8
9
|
id,
|
|
9
10
|
disabled,
|
|
@@ -12,21 +13,19 @@ const Tab = /*#__PURE__*/forwardRef(({
|
|
|
12
13
|
onKeyDown,
|
|
13
14
|
onClick,
|
|
14
15
|
style,
|
|
15
|
-
focusTab
|
|
16
|
-
}, reference)
|
|
16
|
+
focusTab = noop
|
|
17
|
+
}, reference) {
|
|
18
|
+
const handleFocusTab = useEffectEvent(focusTab);
|
|
17
19
|
const firstUpdate = useRef(true);
|
|
18
|
-
|
|
20
|
+
useEffect(function checkFocus() {
|
|
19
21
|
if (firstUpdate.current) {
|
|
20
22
|
firstUpdate.current = false;
|
|
21
23
|
return;
|
|
22
24
|
}
|
|
23
|
-
if (selected
|
|
24
|
-
|
|
25
|
+
if (selected) {
|
|
26
|
+
handleFocusTab();
|
|
25
27
|
}
|
|
26
|
-
};
|
|
27
|
-
useEffect(() => {
|
|
28
|
-
checkFocus();
|
|
29
|
-
}, [selected]);
|
|
28
|
+
}, [handleFocusTab, selected]);
|
|
30
29
|
return /*#__PURE__*/jsx("li", {
|
|
31
30
|
ref: reference,
|
|
32
31
|
className: clsx('tabs__tab', selected ? 'np-text-body-large-bold' : 'np-text-body-large', {
|
|
@@ -38,10 +37,10 @@ const Tab = /*#__PURE__*/forwardRef(({
|
|
|
38
37
|
id: id,
|
|
39
38
|
"aria-selected": selected ? 'true' : 'false',
|
|
40
39
|
"aria-disabled": disabled ? 'true' : 'false',
|
|
41
|
-
"aria-controls": disabled ?
|
|
42
|
-
tabIndex:
|
|
40
|
+
"aria-controls": disabled ? undefined : panelId,
|
|
41
|
+
tabIndex: 0,
|
|
43
42
|
style: style,
|
|
44
|
-
onKeyDown: disabled ?
|
|
43
|
+
onKeyDown: disabled ? undefined : onKeyDown,
|
|
45
44
|
onClick: onClick,
|
|
46
45
|
children: /*#__PURE__*/jsx("span", {
|
|
47
46
|
className: "tabs__tab__content",
|
|
@@ -49,26 +48,6 @@ const Tab = /*#__PURE__*/forwardRef(({
|
|
|
49
48
|
})
|
|
50
49
|
});
|
|
51
50
|
});
|
|
52
|
-
Tab.defaultProps = {
|
|
53
|
-
disabled: false,
|
|
54
|
-
selected: false,
|
|
55
|
-
onClick: null,
|
|
56
|
-
style: null,
|
|
57
|
-
focusTab: null
|
|
58
|
-
};
|
|
59
|
-
Tab.propTypes = {
|
|
60
|
-
children: PropTypes.node.isRequired,
|
|
61
|
-
disabled: PropTypes.bool,
|
|
62
|
-
selected: PropTypes.bool,
|
|
63
|
-
id: PropTypes.string.isRequired,
|
|
64
|
-
panelId: PropTypes.string.isRequired,
|
|
65
|
-
style: PropTypes.shape({
|
|
66
|
-
width: PropTypes.string
|
|
67
|
-
}),
|
|
68
|
-
focusTab: PropTypes.func,
|
|
69
|
-
onKeyDown: PropTypes.func.isRequired,
|
|
70
|
-
onClick: PropTypes.func
|
|
71
|
-
};
|
|
72
51
|
|
|
73
52
|
export { Tab as default };
|
|
74
53
|
//# sourceMappingURL=Tab.mjs.map
|
package/build/tabs/Tab.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tab.mjs","sources":["../../src/tabs/Tab.
|
|
1
|
+
{"version":3,"file":"Tab.mjs","sources":["../../src/tabs/Tab.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { forwardRef, useEffect, useRef } from 'react';\nimport { useEffectEvent } from '../common/hooks/useEffectEvent';\n\nexport interface TabProps {\n children?: React.ReactNode;\n disabled?: boolean;\n selected?: boolean;\n id: string;\n panelId: string;\n style?: React.CSSProperties;\n focusTab?: () => void;\n onKeyDown: React.KeyboardEventHandler<HTMLLIElement>;\n onClick?: React.MouseEventHandler<HTMLLIElement>;\n}\n\nconst noop = () => {};\n\nconst Tab = forwardRef(function Tab(\n {\n children,\n id,\n disabled,\n panelId,\n selected,\n onKeyDown,\n onClick,\n style,\n focusTab = noop,\n }: TabProps,\n reference: React.ForwardedRef<HTMLLIElement>,\n) {\n const handleFocusTab = useEffectEvent(focusTab);\n const firstUpdate = useRef(true);\n useEffect(\n function checkFocus() {\n if (firstUpdate.current) {\n firstUpdate.current = false;\n return;\n }\n\n if (selected) {\n handleFocusTab();\n }\n },\n [handleFocusTab, selected],\n );\n\n return (\n <li\n ref={reference}\n className={clsx('tabs__tab', selected ? 'np-text-body-large-bold' : 'np-text-body-large', {\n 'tabs__tab--selected': selected,\n clickable: !disabled,\n disabled,\n })}\n role=\"tab\"\n id={id}\n aria-selected={selected ? 'true' : 'false'}\n aria-disabled={disabled ? 'true' : 'false'}\n aria-controls={disabled ? undefined : panelId}\n tabIndex={0}\n style={style}\n onKeyDown={disabled ? undefined : onKeyDown}\n onClick={onClick}\n >\n <span className=\"tabs__tab__content\">{children}</span>\n </li>\n );\n});\n\nexport default Tab;\n"],"names":["noop","Tab","forwardRef","children","id","disabled","panelId","selected","onKeyDown","onClick","style","focusTab","reference","handleFocusTab","useEffectEvent","firstUpdate","useRef","useEffect","checkFocus","current","_jsx","ref","className","clsx","clickable","role","undefined","tabIndex"],"mappings":";;;;;AAgBA,MAAMA,IAAI,GAAGA,MAAK,EAAG,CAAA;AAErB,MAAMC,GAAG,gBAAGC,UAAU,CAAC,SAASD,GAAGA,CACjC;EACEE,QAAQ;EACRC,EAAE;EACFC,QAAQ;EACRC,OAAO;EACPC,QAAQ;EACRC,SAAS;EACTC,OAAO;EACPC,KAAK;AACLC,EAAAA,QAAQ,GAAGX,IAAAA;AAAI,CACN,EACXY,SAA4C,EAAA;AAE5C,EAAA,MAAMC,cAAc,GAAGC,cAAc,CAACH,QAAQ,CAAC,CAAA;AAC/C,EAAA,MAAMI,WAAW,GAAGC,MAAM,CAAC,IAAI,CAAC,CAAA;AAChCC,EAAAA,SAAS,CACP,SAASC,UAAUA,GAAA;IACjB,IAAIH,WAAW,CAACI,OAAO,EAAE;MACvBJ,WAAW,CAACI,OAAO,GAAG,KAAK,CAAA;AAC3B,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,IAAIZ,QAAQ,EAAE;AACZM,MAAAA,cAAc,EAAE,CAAA;AAClB,KAAA;AACF,GAAC,EACD,CAACA,cAAc,EAAEN,QAAQ,CAAC,CAC3B,CAAA;AAED,EAAA,oBACEa,GAAA,CAAA,IAAA,EAAA;AACEC,IAAAA,GAAG,EAAET,SAAU;IACfU,SAAS,EAAEC,IAAI,CAAC,WAAW,EAAEhB,QAAQ,GAAG,yBAAyB,GAAG,oBAAoB,EAAE;AACxF,MAAA,qBAAqB,EAAEA,QAAQ;MAC/BiB,SAAS,EAAE,CAACnB,QAAQ;AACpBA,MAAAA,QAAAA;AACD,KAAA,CAAE;AACHoB,IAAAA,IAAI,EAAC,KAAK;AACVrB,IAAAA,EAAE,EAAEA,EAAG;AACP,IAAA,eAAA,EAAeG,QAAQ,GAAG,MAAM,GAAG,OAAQ;AAC3C,IAAA,eAAA,EAAeF,QAAQ,GAAG,MAAM,GAAG,OAAQ;AAC3C,IAAA,eAAA,EAAeA,QAAQ,GAAGqB,SAAS,GAAGpB,OAAQ;AAC9CqB,IAAAA,QAAQ,EAAE,CAAE;AACZjB,IAAAA,KAAK,EAAEA,KAAM;AACbF,IAAAA,SAAS,EAAEH,QAAQ,GAAGqB,SAAS,GAAGlB,SAAU;AAC5CC,IAAAA,OAAO,EAAEA,OAAQ;AAAAN,IAAAA,QAAA,eAEjBiB,GAAA,CAAA,MAAA,EAAA;AAAME,MAAAA,SAAS,EAAC,oBAAoB;AAAAnB,MAAAA,QAAA,EAAEA,QAAAA;KAAe,CAAA;AACvD,GAAI,CAAC,CAAA;AAET,CAAC;;;;"}
|
package/build/tabs/TabList.js
CHANGED
|
@@ -1,24 +1,16 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var PropTypes = require('prop-types');
|
|
4
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
5
4
|
|
|
6
|
-
function
|
|
7
|
-
|
|
8
|
-
var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
|
|
9
|
-
|
|
10
|
-
const TabList = ({
|
|
5
|
+
function TabList({
|
|
11
6
|
children
|
|
12
|
-
})
|
|
7
|
+
}) {
|
|
13
8
|
return /*#__PURE__*/jsxRuntime.jsx("ul", {
|
|
14
9
|
className: "tabs__tab-list",
|
|
15
10
|
role: "tablist",
|
|
16
11
|
children: children
|
|
17
12
|
});
|
|
18
|
-
}
|
|
19
|
-
TabList.propTypes = {
|
|
20
|
-
children: PropTypes__default.default.oneOfType([PropTypes__default.default.object, PropTypes__default.default.array]).isRequired
|
|
21
|
-
};
|
|
13
|
+
}
|
|
22
14
|
|
|
23
15
|
module.exports = TabList;
|
|
24
16
|
//# 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.tsx"],"sourcesContent":["export interface TabListProps {\n children?: React.ReactNode;\n}\n\nexport default function TabList({ children }: TabListProps) {\n return (\n <ul className=\"tabs__tab-list\" role=\"tablist\">\n {children}\n </ul>\n );\n}\n"],"names":["TabList","children","_jsx","className","role"],"mappings":";;;;AAIc,SAAUA,OAAOA,CAAC;AAAEC,EAAAA,QAAAA;AAAwB,CAAA,EAAA;AACxD,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;;;;"}
|
package/build/tabs/TabList.mjs
CHANGED
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
import PropTypes from 'prop-types';
|
|
2
1
|
import { jsx } from 'react/jsx-runtime';
|
|
3
2
|
|
|
4
|
-
|
|
3
|
+
function TabList({
|
|
5
4
|
children
|
|
6
|
-
})
|
|
5
|
+
}) {
|
|
7
6
|
return /*#__PURE__*/jsx("ul", {
|
|
8
7
|
className: "tabs__tab-list",
|
|
9
8
|
role: "tablist",
|
|
10
9
|
children: children
|
|
11
10
|
});
|
|
12
|
-
}
|
|
13
|
-
TabList.propTypes = {
|
|
14
|
-
children: PropTypes.oneOfType([PropTypes.object, PropTypes.array]).isRequired
|
|
15
|
-
};
|
|
11
|
+
}
|
|
16
12
|
|
|
17
13
|
export { TabList as default };
|
|
18
14
|
//# 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.tsx"],"sourcesContent":["export interface TabListProps {\n children?: React.ReactNode;\n}\n\nexport default function TabList({ children }: TabListProps) {\n return (\n <ul className=\"tabs__tab-list\" role=\"tablist\">\n {children}\n </ul>\n );\n}\n"],"names":["TabList","children","_jsx","className","role"],"mappings":";;AAIc,SAAUA,OAAOA,CAAC;AAAEC,EAAAA,QAAAA;AAAwB,CAAA,EAAA;AACxD,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;;;;"}
|
package/build/tabs/TabPanel.js
CHANGED
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var PropTypes = require('prop-types');
|
|
4
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
5
4
|
|
|
6
|
-
function
|
|
7
|
-
|
|
8
|
-
var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
|
|
9
|
-
|
|
10
|
-
const TabPanel = ({
|
|
5
|
+
function TabPanel({
|
|
11
6
|
children,
|
|
12
7
|
id,
|
|
13
8
|
tabId,
|
|
14
9
|
style
|
|
15
|
-
})
|
|
10
|
+
}) {
|
|
16
11
|
return /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
17
12
|
className: "tabs__panel",
|
|
18
13
|
role: "tabpanel",
|
|
@@ -21,15 +16,7 @@ const TabPanel = ({
|
|
|
21
16
|
style: style,
|
|
22
17
|
children: children
|
|
23
18
|
});
|
|
24
|
-
}
|
|
25
|
-
TabPanel.propTypes = {
|
|
26
|
-
children: PropTypes__default.default.node.isRequired,
|
|
27
|
-
id: PropTypes__default.default.string.isRequired,
|
|
28
|
-
tabId: PropTypes__default.default.string.isRequired,
|
|
29
|
-
style: PropTypes__default.default.shape({
|
|
30
|
-
width: PropTypes__default.default.string.isRequired
|
|
31
|
-
}).isRequired
|
|
32
|
-
};
|
|
19
|
+
}
|
|
33
20
|
|
|
34
21
|
module.exports = TabPanel;
|
|
35
22
|
//# sourceMappingURL=TabPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabPanel.js","sources":["../../src/tabs/TabPanel.
|
|
1
|
+
{"version":3,"file":"TabPanel.js","sources":["../../src/tabs/TabPanel.tsx"],"sourcesContent":["export interface TabPanelProps {\n children?: React.ReactNode;\n id: string;\n tabId: string;\n style: React.CSSProperties;\n}\n\nexport default function TabPanel({ children, id, tabId, style }: TabPanelProps) {\n return (\n <div className=\"tabs__panel\" role=\"tabpanel\" id={id} aria-labelledby={tabId} style={style}>\n {children}\n </div>\n );\n}\n"],"names":["TabPanel","children","id","tabId","style","_jsx","className","role"],"mappings":";;;;AAOwB,SAAAA,QAAQA,CAAC;EAAEC,QAAQ;EAAEC,EAAE;EAAEC,KAAK;AAAEC,EAAAA,KAAAA;AAAsB,CAAA,EAAA;AAC5E,EAAA,oBACEC,cAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC,aAAa;AAACC,IAAAA,IAAI,EAAC,UAAU;AAACL,IAAAA,EAAE,EAAEA,EAAG;AAAC,IAAA,iBAAA,EAAiBC,KAAM;AAACC,IAAAA,KAAK,EAAEA,KAAM;AAAAH,IAAAA,QAAA,EACvFA,QAAAA;AAAQ,GACN,CAAC,CAAA;AAEV;;;;"}
|
package/build/tabs/TabPanel.mjs
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import PropTypes from 'prop-types';
|
|
2
1
|
import { jsx } from 'react/jsx-runtime';
|
|
3
2
|
|
|
4
|
-
|
|
3
|
+
function TabPanel({
|
|
5
4
|
children,
|
|
6
5
|
id,
|
|
7
6
|
tabId,
|
|
8
7
|
style
|
|
9
|
-
})
|
|
8
|
+
}) {
|
|
10
9
|
return /*#__PURE__*/jsx("div", {
|
|
11
10
|
className: "tabs__panel",
|
|
12
11
|
role: "tabpanel",
|
|
@@ -15,15 +14,7 @@ const TabPanel = ({
|
|
|
15
14
|
style: style,
|
|
16
15
|
children: children
|
|
17
16
|
});
|
|
18
|
-
}
|
|
19
|
-
TabPanel.propTypes = {
|
|
20
|
-
children: PropTypes.node.isRequired,
|
|
21
|
-
id: PropTypes.string.isRequired,
|
|
22
|
-
tabId: PropTypes.string.isRequired,
|
|
23
|
-
style: PropTypes.shape({
|
|
24
|
-
width: PropTypes.string.isRequired
|
|
25
|
-
}).isRequired
|
|
26
|
-
};
|
|
17
|
+
}
|
|
27
18
|
|
|
28
19
|
export { TabPanel as default };
|
|
29
20
|
//# sourceMappingURL=TabPanel.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabPanel.mjs","sources":["../../src/tabs/TabPanel.
|
|
1
|
+
{"version":3,"file":"TabPanel.mjs","sources":["../../src/tabs/TabPanel.tsx"],"sourcesContent":["export interface TabPanelProps {\n children?: React.ReactNode;\n id: string;\n tabId: string;\n style: React.CSSProperties;\n}\n\nexport default function TabPanel({ children, id, tabId, style }: TabPanelProps) {\n return (\n <div className=\"tabs__panel\" role=\"tabpanel\" id={id} aria-labelledby={tabId} style={style}>\n {children}\n </div>\n );\n}\n"],"names":["TabPanel","children","id","tabId","style","_jsx","className","role"],"mappings":";;AAOwB,SAAAA,QAAQA,CAAC;EAAEC,QAAQ;EAAEC,EAAE;EAAEC,KAAK;AAAEC,EAAAA,KAAAA;AAAsB,CAAA,EAAA;AAC5E,EAAA,oBACEC,GAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC,aAAa;AAACC,IAAAA,IAAI,EAAC,UAAU;AAACL,IAAAA,EAAE,EAAEA,EAAG;AAAC,IAAA,iBAAA,EAAiBC,KAAM;AAACC,IAAAA,KAAK,EAAEA,KAAM;AAAAH,IAAAA,QAAA,EACvFA,QAAAA;AAAQ,GACN,CAAC,CAAA;AAEV;;;;"}
|
package/build/tabs/Tabs.js
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
var web = require('@react-spring/web');
|
|
4
4
|
var clsx = require('clsx');
|
|
5
5
|
var clamp = require('lodash.clamp');
|
|
6
|
-
var PropTypes = require('prop-types');
|
|
7
6
|
var React = require('react');
|
|
8
7
|
var DirectionProvider = require('../provider/direction/DirectionProvider.js');
|
|
9
8
|
var Tab = require('./Tab.js');
|
|
@@ -13,16 +12,12 @@ var utils = require('./utils.js');
|
|
|
13
12
|
var jsxRuntime = require('react/jsx-runtime');
|
|
14
13
|
var width = require('../common/propsValues/width.js');
|
|
15
14
|
var direction = require('../common/direction.js');
|
|
16
|
-
var size = require('../common/propsValues/size.js');
|
|
17
15
|
|
|
18
16
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
19
17
|
|
|
20
18
|
var clamp__default = /*#__PURE__*/_interopDefault(clamp);
|
|
21
|
-
var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
|
|
22
19
|
|
|
23
|
-
/* eslint-disable react/forbid-dom-props */
|
|
24
20
|
const MIN_INDEX = 0;
|
|
25
|
-
const enabledTabsFilter = tab => !tab.disabled;
|
|
26
21
|
const SpacerWidth = {
|
|
27
22
|
default: 0,
|
|
28
23
|
xs: 8,
|
|
@@ -31,7 +26,11 @@ const SpacerWidth = {
|
|
|
31
26
|
lg: 32
|
|
32
27
|
};
|
|
33
28
|
class Tabs extends React.Component {
|
|
34
|
-
|
|
29
|
+
static defaultProps = {
|
|
30
|
+
changeTabOnSwipe: true,
|
|
31
|
+
transitionSpacing: 'default',
|
|
32
|
+
headerWidth: width.Width.BLOCK
|
|
33
|
+
};
|
|
35
34
|
containerReference = /*#__PURE__*/React.createRef();
|
|
36
35
|
constructor(props) {
|
|
37
36
|
super(props);
|
|
@@ -45,14 +44,16 @@ class Tabs extends React.Component {
|
|
|
45
44
|
isSwiping: false,
|
|
46
45
|
isScrolling: false,
|
|
47
46
|
lastSwipeVelocity: 0,
|
|
48
|
-
fullWidthTabs: props.headerWidth === width.Width.BLOCK
|
|
47
|
+
fullWidthTabs: props.headerWidth === width.Width.BLOCK,
|
|
48
|
+
currentSwipe: [],
|
|
49
|
+
selectedTabIndex: props.selected
|
|
49
50
|
};
|
|
50
51
|
}
|
|
51
52
|
container = null;
|
|
52
53
|
containerWidth = 0;
|
|
53
54
|
tabRefs = [];
|
|
54
55
|
get filteredTabsLength() {
|
|
55
|
-
return this.props.tabs.filter(
|
|
56
|
+
return this.props.tabs.filter(tab => !tab.disabled).length;
|
|
56
57
|
}
|
|
57
58
|
get MAX_INDEX() {
|
|
58
59
|
return this.props.tabs.length - 1;
|
|
@@ -76,13 +77,13 @@ class Tabs extends React.Component {
|
|
|
76
77
|
const currentSelected = this.props.selected;
|
|
77
78
|
const previousSelected = previousProps.selected;
|
|
78
79
|
const currentSelectedTab = this.props.tabs[currentSelected];
|
|
79
|
-
const currentSelectedTabIsDisabled = currentSelectedTab
|
|
80
|
+
const currentSelectedTabIsDisabled = currentSelectedTab?.disabled;
|
|
80
81
|
const previousSelectedTab = previousProps.tabs[previousSelected];
|
|
81
|
-
const previousSelectedTabIsDisabled = previousSelectedTab
|
|
82
|
+
const previousSelectedTabIsDisabled = previousSelectedTab?.disabled;
|
|
82
83
|
const currentTabsLength = this.props.tabs.length;
|
|
83
84
|
const previousTabsLength = previousProps.tabs.length;
|
|
84
|
-
const currentDisabledTabsLength = this.props.tabs.filter(
|
|
85
|
-
const previousDisabledTabsLength = previousProps.tabs.filter(
|
|
85
|
+
const currentDisabledTabsLength = this.props.tabs.filter(tab => !tab.disabled).length;
|
|
86
|
+
const previousDisabledTabsLength = previousProps.tabs.filter(tab => !tab.disabled).length;
|
|
86
87
|
const currentHeaderWidth = this.props.headerWidth;
|
|
87
88
|
const previousFullHeaderWidth = previousProps.headerWidth;
|
|
88
89
|
const {
|
|
@@ -126,7 +127,7 @@ class Tabs extends React.Component {
|
|
|
126
127
|
const {
|
|
127
128
|
tabs
|
|
128
129
|
} = this.props;
|
|
129
|
-
return tabs[index]
|
|
130
|
+
return tabs[index]?.disabled ?? false;
|
|
130
131
|
};
|
|
131
132
|
getAllTabsWidth = () => {
|
|
132
133
|
return this.tabRefs.map(reference => {
|
|
@@ -173,7 +174,6 @@ class Tabs extends React.Component {
|
|
|
173
174
|
const width = reference ? reference.getBoundingClientRect().width : 0;
|
|
174
175
|
return `${width}px`;
|
|
175
176
|
};
|
|
176
|
-
|
|
177
177
|
/*
|
|
178
178
|
* Gets the next tab that should be selected based on the swipe direction
|
|
179
179
|
* and the current selected tab (is called recursively to account for disabled tabs).
|
|
@@ -227,7 +227,7 @@ class Tabs extends React.Component {
|
|
|
227
227
|
onTabSelect(index);
|
|
228
228
|
};
|
|
229
229
|
getTabIndexWithoutDisabledTabs(index) {
|
|
230
|
-
return index - this.props.tabs.slice(0, index).filter(tab =>
|
|
230
|
+
return index - this.props.tabs.slice(0, index).filter(tab => tab.disabled).length;
|
|
231
231
|
}
|
|
232
232
|
animateToTab = (index, instant) => {
|
|
233
233
|
this.animateLine(index);
|
|
@@ -238,7 +238,6 @@ class Tabs extends React.Component {
|
|
|
238
238
|
translateLineX: previousState.fullWidthTabs ? `${index * 100}%` : `${this.getDistanceToSelectedTab(index)}px`
|
|
239
239
|
}));
|
|
240
240
|
};
|
|
241
|
-
|
|
242
241
|
// Pass `instant` to set the `translateX` to the new panel with no transition
|
|
243
242
|
animatePanel = (index, instant = false) => {
|
|
244
243
|
const {
|
|
@@ -285,6 +284,9 @@ class Tabs extends React.Component {
|
|
|
285
284
|
const {
|
|
286
285
|
start
|
|
287
286
|
} = this.state;
|
|
287
|
+
if (start == null) {
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
288
290
|
const {
|
|
289
291
|
selected: currentSelectedFromProps
|
|
290
292
|
} = this.props;
|
|
@@ -334,6 +336,9 @@ class Tabs extends React.Component {
|
|
|
334
336
|
start,
|
|
335
337
|
isSwiping
|
|
336
338
|
} = this.state;
|
|
339
|
+
if (start == null) {
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
337
342
|
const {
|
|
338
343
|
selected
|
|
339
344
|
} = this.props;
|
|
@@ -393,7 +398,6 @@ class Tabs extends React.Component {
|
|
|
393
398
|
const restrictedVelocity = (Number.isNaN(remainingContainerToTravel) ? 0 : remainingContainerToTravel) * Math.min(10 * Math.E, lastSwipeVelocity * 10 * Math.E);
|
|
394
399
|
const hidePanelOverflow = isAnimating || isSwiping;
|
|
395
400
|
const sliderWidth = tabsLength * this.containerWidth + spacer * 2;
|
|
396
|
-
|
|
397
401
|
// Uses `props.panelTransitionSpacing` to add a spacer in-between the `TabPanel` you're transitioning to/from
|
|
398
402
|
const Spacer = ({
|
|
399
403
|
id
|
|
@@ -429,10 +433,10 @@ class Tabs extends React.Component {
|
|
|
429
433
|
disabled: disabled,
|
|
430
434
|
focusTab: () => {
|
|
431
435
|
if (this.containerReference.current?.contains(document.activeElement)) {
|
|
432
|
-
this.tabRefs[index]
|
|
436
|
+
this.tabRefs[index]?.focus();
|
|
433
437
|
}
|
|
434
438
|
},
|
|
435
|
-
onClick: disabled ?
|
|
439
|
+
onClick: disabled ? undefined : this.handleTabClick(index),
|
|
436
440
|
onKeyDown: this.onKeyDown(index),
|
|
437
441
|
...(fullWidthTabs ? {
|
|
438
442
|
style: {
|
|
@@ -507,34 +511,6 @@ class Tabs extends React.Component {
|
|
|
507
511
|
});
|
|
508
512
|
}
|
|
509
513
|
}
|
|
510
|
-
const SpacerSizes = {
|
|
511
|
-
...size.Size,
|
|
512
|
-
NONE: 'default'
|
|
513
|
-
};
|
|
514
|
-
Tabs.propTypes = {
|
|
515
|
-
tabs: PropTypes__default.default.arrayOf(PropTypes__default.default.shape({
|
|
516
|
-
title: PropTypes__default.default.string.isRequired,
|
|
517
|
-
content: PropTypes__default.default.node.isRequired,
|
|
518
|
-
disabled: PropTypes__default.default.bool.isRequired
|
|
519
|
-
})).isRequired,
|
|
520
|
-
selected: PropTypes__default.default.number.isRequired,
|
|
521
|
-
name: PropTypes__default.default.string.isRequired,
|
|
522
|
-
animatePanelsOnClick: PropTypes__default.default.bool,
|
|
523
|
-
changeTabOnSwipe: PropTypes__default.default.bool,
|
|
524
|
-
className: PropTypes__default.default.string,
|
|
525
|
-
transitionSpacing: PropTypes__default.default.oneOf(['default', 'xs', 'sm', 'md', 'lg']),
|
|
526
|
-
headerWidth: PropTypes__default.default.oneOf(['auto', 'block']),
|
|
527
|
-
id: PropTypes__default.default.string,
|
|
528
|
-
onTabSelect: PropTypes__default.default.func.isRequired
|
|
529
|
-
};
|
|
530
|
-
Tabs.defaultProps = {
|
|
531
|
-
animatePanelsOnClick: false,
|
|
532
|
-
changeTabOnSwipe: true,
|
|
533
|
-
className: '',
|
|
534
|
-
transitionSpacing: SpacerSizes.NONE,
|
|
535
|
-
headerWidth: width.Width.BLOCK
|
|
536
|
-
};
|
|
537
|
-
var Tabs$1 = Tabs;
|
|
538
514
|
|
|
539
|
-
module.exports = Tabs
|
|
515
|
+
module.exports = Tabs;
|
|
540
516
|
//# sourceMappingURL=Tabs.js.map
|