@transferwise/components 0.0.0-experimental-9022f7b → 0.0.0-experimental-97fe512
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/Body/Body.js +1 -1
- package/build/Body/Body.js.map +1 -1
- package/build/Body/Body.mjs +1 -1
- package/build/Body/Body.mjs.map +1 -1
- package/build/Calendar/DayCalendar/Table/DayCalendarTable.js +1 -1
- package/build/Calendar/DayCalendar/Table/DayCalendarTable.js.map +1 -1
- package/build/Calendar/DayCalendar/Table/DayCalendarTable.mjs +1 -1
- package/build/Calendar/DayCalendar/Table/DayCalendarTable.mjs.map +1 -1
- package/build/Calendar/MonthCalendar/Table/MonthCalendarTable.js +1 -1
- package/build/Calendar/MonthCalendar/Table/MonthCalendarTable.js.map +1 -1
- package/build/Calendar/MonthCalendar/Table/MonthCalendarTable.mjs +1 -1
- package/build/Calendar/MonthCalendar/Table/MonthCalendarTable.mjs.map +1 -1
- package/build/Calendar/TableLink/TableLink.js +1 -1
- package/build/Calendar/TableLink/TableLink.js.map +1 -1
- package/build/Calendar/TableLink/TableLink.mjs +1 -1
- package/build/Calendar/TableLink/TableLink.mjs.map +1 -1
- package/build/ExpressiveMoneyInput/AmountInput/AmountInput.js +1 -1
- package/build/ExpressiveMoneyInput/AmountInput/AmountInput.js.map +1 -1
- package/build/ExpressiveMoneyInput/AmountInput/AmountInput.mjs +1 -1
- package/build/ExpressiveMoneyInput/AmountInput/AmountInput.mjs.map +1 -1
- package/build/FlowNavigation/AnimatedLabel/AnimatedLabel.js +1 -1
- package/build/FlowNavigation/AnimatedLabel/AnimatedLabel.js.map +1 -1
- package/build/FlowNavigation/AnimatedLabel/AnimatedLabel.mjs +1 -1
- package/build/FlowNavigation/AnimatedLabel/AnimatedLabel.mjs.map +1 -1
- package/build/Inputs/SelectInput/BottomSheet/SelectInputBottomSheet.js +2 -2
- package/build/Inputs/SelectInput/BottomSheet/SelectInputBottomSheet.js.map +1 -1
- package/build/Inputs/SelectInput/BottomSheet/SelectInputBottomSheet.mjs +2 -2
- package/build/Inputs/SelectInput/BottomSheet/SelectInputBottomSheet.mjs.map +1 -1
- package/build/Inputs/SelectInput/Option/SelectInputOption.js +1 -1
- package/build/Inputs/SelectInput/Option/SelectInputOption.js.map +1 -1
- package/build/Inputs/SelectInput/Option/SelectInputOption.mjs +1 -1
- package/build/Inputs/SelectInput/Option/SelectInputOption.mjs.map +1 -1
- package/build/Inputs/SelectInput/OptionContent/SelectInputOptionContent.js +3 -3
- package/build/Inputs/SelectInput/OptionContent/SelectInputOptionContent.js.map +1 -1
- package/build/Inputs/SelectInput/OptionContent/SelectInputOptionContent.mjs +3 -3
- package/build/Inputs/SelectInput/OptionContent/SelectInputOptionContent.mjs.map +1 -1
- package/build/Inputs/SelectInput/Popover/SelectInputPopover.js +2 -2
- package/build/Inputs/SelectInput/Popover/SelectInputPopover.js.map +1 -1
- package/build/Inputs/SelectInput/Popover/SelectInputPopover.mjs +2 -2
- package/build/Inputs/SelectInput/Popover/SelectInputPopover.mjs.map +1 -1
- package/build/Label/Label.js +1 -1
- package/build/Label/Label.js.map +1 -1
- package/build/Label/Label.mjs +1 -1
- package/build/Label/Label.mjs.map +1 -1
- package/build/Stepper/Stepper.js +1 -1
- package/build/Stepper/Stepper.js.map +1 -1
- package/build/Stepper/Stepper.mjs +1 -1
- package/build/Stepper/Stepper.mjs.map +1 -1
- package/build/Table/Header/TableHeader.js +1 -1
- package/build/Table/Header/TableHeader.js.map +1 -1
- package/build/Table/Header/TableHeader.mjs +1 -1
- package/build/Table/Header/TableHeader.mjs.map +1 -1
- package/build/Tabs/Tab/Tab.js +1 -1
- package/build/Tabs/Tab/Tab.js.map +1 -1
- package/build/Tabs/Tab/Tab.mjs +1 -1
- package/build/Tabs/Tab/Tab.mjs.map +1 -1
- package/build/Tag/Tag.js +1 -1
- package/build/Tag/Tag.js.map +1 -1
- package/build/Tag/Tag.mjs +1 -1
- package/build/Tag/Tag.mjs.map +1 -1
- package/build/Typeahead/TypeaheadOption/TypeaheadOption.js +2 -2
- package/build/Typeahead/TypeaheadOption/TypeaheadOption.js.map +1 -1
- package/build/Typeahead/TypeaheadOption/TypeaheadOption.mjs +2 -2
- package/build/Typeahead/TypeaheadOption/TypeaheadOption.mjs.map +1 -1
- package/build/Upload/Steps/UploadImageStep/UploadImageStep.js +2 -2
- package/build/Upload/Steps/UploadImageStep/UploadImageStep.js.map +1 -1
- package/build/Upload/Steps/UploadImageStep/UploadImageStep.mjs +2 -2
- package/build/Upload/Steps/UploadImageStep/UploadImageStep.mjs.map +1 -1
- package/build/_deprecated/ActionButton/ActionButton.js +1 -1
- package/build/_deprecated/ActionButton/ActionButton.js.map +1 -1
- package/build/_deprecated/ActionButton/ActionButton.mjs +1 -1
- package/build/_deprecated/ActionButton/ActionButton.mjs.map +1 -1
- package/build/_deprecated/Avatar/Avatar.js +1 -1
- package/build/_deprecated/Avatar/Avatar.js.map +1 -1
- package/build/_deprecated/Avatar/Avatar.mjs +1 -1
- package/build/_deprecated/Avatar/Avatar.mjs.map +1 -1
- package/build/_deprecated/Select/Select.js +2 -2
- package/build/_deprecated/Select/Select.js.map +1 -1
- package/build/_deprecated/Select/Select.mjs +2 -2
- package/build/_deprecated/Select/Select.mjs.map +1 -1
- package/build/main.css +157 -153
- package/build/styles/Accordion/Accordion.css +7 -6
- package/build/styles/Body/Body.css +1 -1
- package/build/styles/Calendar/Calendar.css +11 -4
- package/build/styles/Calendar/TableLink/TableLink.css +11 -4
- package/build/styles/Chips/Chip/Chip.css +5 -3
- package/build/styles/Decision/Decision.css +4 -3
- package/build/styles/Emphasis/Emphasis.css +1 -1
- package/build/styles/ExpressiveMoneyInput/AmountInput/AmountInput.css +2 -1
- package/build/styles/ExpressiveMoneyInput/ExpressiveMoneyInput.css +2 -1
- package/build/styles/Inputs/Input/Input.css +5 -41
- package/build/styles/Inputs/TextArea/TextArea.css +5 -41
- package/build/styles/Label/Label.css +3 -0
- package/build/styles/Markup/Markup.css +2 -2
- package/build/styles/MoneyInput/MoneyInput.css +9 -6
- package/build/styles/Nudge/Nudge.css +3 -3
- package/build/styles/Popover/Popover.css +1 -37
- package/build/styles/ProgressBar/ProgressBar.css +3 -2
- package/build/styles/Prompt/PrimitivePrompt/PrimitivePrompt.css +2 -1
- package/build/styles/Snackbar/Snackbar.css +1 -1
- package/build/styles/Table/Table.css +18 -8
- package/build/styles/Tabs/Tabs.css +3 -3
- package/build/styles/Tag/Tag.css +1 -1
- package/build/styles/Tile/Tile.css +4 -3
- package/build/styles/Typeahead/Typeahead.css +4 -2
- package/build/styles/UploadInput/UploadInput.css +1 -1
- package/build/styles/_deprecated/ActionButton/ActionButton.css +3 -4
- package/build/styles/_deprecated/Avatar/Avatar.css +2 -2
- package/build/styles/_deprecated/CriticalBanner/CriticalCommsBanner.css +2 -1
- package/build/styles/_deprecated/Select/Select.css +22 -9
- package/build/styles/_deprecated/Summary/Summary.css +2 -2
- package/build/styles/common/Circle/Circle.css +1 -1
- package/build/styles/common/Option/Option.css +4 -4
- package/build/styles/main.css +157 -153
- package/build/types/ExpressiveMoneyInput/AmountInput/AmountInput.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/Accordion/Accordion.css +7 -6
- package/src/Accordion/Accordion.less +7 -6
- package/src/Body/Body.css +1 -1
- package/src/Body/Body.less +1 -1
- package/src/Body/Body.test.tsx +4 -4
- package/src/Body/Body.tsx +2 -2
- package/src/Calendar/Calendar.css +11 -4
- package/src/Calendar/DayCalendar/Table/DayCalendarTable.tsx +2 -2
- package/src/Calendar/MonthCalendar/Table/MonthCalendarTable.tsx +1 -1
- package/src/Calendar/TableLink/TableLink.css +11 -4
- package/src/Calendar/TableLink/TableLink.less +14 -4
- package/src/Calendar/TableLink/TableLink.tsx +1 -1
- package/src/Chips/Chip/Chip.css +5 -3
- package/src/Chips/Chip/Chip.less +3 -2
- package/src/CircularButton/_stories/CircularButton.story.tsx +6 -16
- package/src/Decision/Decision.css +4 -3
- package/src/Decision/Decision.less +4 -3
- package/src/DefinitionList/_stories/DefinitionList.story.tsx +1 -1
- package/src/Emphasis/Emphasis.css +1 -1
- package/src/Emphasis/Emphasis.less +1 -1
- package/src/ExpressiveMoneyInput/AmountInput/AmountInput.css +2 -1
- package/src/ExpressiveMoneyInput/AmountInput/AmountInput.less +2 -1
- package/src/ExpressiveMoneyInput/AmountInput/AmountInput.tsx +1 -4
- package/src/ExpressiveMoneyInput/ExpressiveMoneyInput.css +2 -1
- package/src/FlowNavigation/AnimatedLabel/AnimatedLabel.tsx +1 -1
- package/src/Inputs/Input/Input.css +5 -41
- package/src/Inputs/SelectInput/BottomSheet/SelectInputBottomSheet.tsx +2 -2
- package/src/Inputs/SelectInput/Option/SelectInputOption.tsx +1 -1
- package/src/Inputs/SelectInput/OptionContent/SelectInputOptionContent.tsx +3 -3
- package/src/Inputs/SelectInput/Popover/SelectInputPopover.tsx +2 -2
- package/src/Inputs/SelectInput/_stories/SelectInput.story.tsx +1 -1
- package/src/Inputs/TextArea/TextArea.css +5 -41
- package/src/Inputs/_common.less +12 -10
- package/src/Label/Label.css +3 -0
- package/src/Label/Label.less +8 -0
- package/src/Label/Label.tsx +1 -1
- package/src/Markup/Markup.css +2 -2
- package/src/Markup/Markup.less +2 -2
- package/src/MoneyInput/MoneyInput.css +9 -6
- package/src/MoneyInput/MoneyInput.less +10 -7
- package/src/Nudge/Nudge.css +3 -3
- package/src/Nudge/Nudge.less +3 -3
- package/src/PocketSurface/_stories/PocketSurface.story.tsx +2 -2
- package/src/Popover/Popover.css +1 -37
- package/src/Popover/Popover.less +2 -2
- package/src/ProgressBar/ProgressBar.css +3 -2
- package/src/ProgressBar/ProgressBar.less +12 -11
- package/src/Prompt/PrimitivePrompt/PrimitivePrompt.css +2 -1
- package/src/Prompt/PrimitivePrompt/PrimitivePrompt.less +2 -1
- package/src/SentimentSurface/_stories/SentimentSurface.story.tsx +1 -1
- package/src/Snackbar/Snackbar.css +1 -1
- package/src/Snackbar/Snackbar.less +1 -1
- package/src/Stepper/Stepper.tsx +1 -1
- package/src/Table/Header/TableHeader.tsx +1 -1
- package/src/Table/StatusText/TableStatusText.test.tsx +5 -5
- package/src/Table/Table.css +18 -8
- package/src/Table/Table.less +20 -9
- package/src/Tabs/Tab/Tab.tsx +1 -1
- package/src/Tabs/Tabs.css +3 -3
- package/src/Tabs/Tabs.less +3 -3
- package/src/Tag/Tag.css +1 -1
- package/src/Tag/Tag.less +1 -1
- package/src/Tag/Tag.tsx +1 -1
- package/src/Tag/_stories/Tag.story.tsx +1 -1
- package/src/Tile/Tile.css +4 -3
- package/src/Tile/Tile.less +4 -3
- package/src/Typeahead/Typeahead.css +4 -2
- package/src/Typeahead/Typeahead.less +2 -1
- package/src/Typeahead/TypeaheadOption/TypeaheadOption.tsx +2 -2
- package/src/Upload/Steps/UploadImageStep/UploadImageStep.tsx +2 -2
- package/src/UploadInput/UploadInput.css +1 -1
- package/src/UploadInput/UploadInput.less +7 -4
- package/src/_deprecated/ActionButton/ActionButton.css +3 -4
- package/src/_deprecated/ActionButton/ActionButton.less +4 -5
- package/src/_deprecated/ActionButton/ActionButton.tsx +1 -1
- package/src/_deprecated/Avatar/Avatar.css +2 -2
- package/src/_deprecated/Avatar/Avatar.less +2 -2
- package/src/_deprecated/Avatar/Avatar.tsx +1 -1
- package/src/_deprecated/CriticalBanner/CriticalCommsBanner.css +2 -1
- package/src/_deprecated/CriticalBanner/CriticalCommsBanner.less +2 -1
- package/src/_deprecated/NavigationOption/_stories/NavigationOption.story.tsx +6 -6
- package/src/_deprecated/Select/Select.css +22 -9
- package/src/_deprecated/Select/Select.less +14 -10
- package/src/_deprecated/Select/Select.tsx +2 -2
- package/src/_deprecated/Summary/Summary.css +2 -2
- package/src/_deprecated/Summary/Summary.less +2 -2
- package/src/common/Circle/Circle.css +1 -1
- package/src/common/Circle/Circle.less +1 -1
- package/src/common/Option/Option.css +4 -4
- package/src/common/Option/Option.less +4 -4
- package/src/main.css +157 -153
- package/src/main.less +3 -2
package/build/Body/Body.js
CHANGED
|
@@ -22,7 +22,7 @@ const Body = /*#__PURE__*/React.forwardRef(function Body({
|
|
|
22
22
|
// @ts-expect-error TODO: Remove when component could be rewritten with generics
|
|
23
23
|
// See: https://fettblog.eu/typescript-react-generic-forward-refs/
|
|
24
24
|
ref: reference,
|
|
25
|
-
className: clsx.clsx(`
|
|
25
|
+
className: clsx.clsx(`wds-text-${isTypeSupported ? type : DEFAULT_TYPE}`, preserveNewlines && 'wds-text--pre-line', className)
|
|
26
26
|
});
|
|
27
27
|
});
|
|
28
28
|
|
package/build/Body/Body.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Body.js","sources":["../../src/Body/Body.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { forwardRef, HTMLAttributes } from 'react';\n\nimport { Typography, BodyTypes } from '../common/PropsValues/typography';\n\nconst DEFAULT_TYPE = Typography.BODY_DEFAULT;\n\nconst bodyTypes = new Set<BodyTypes>([\n Typography.BODY_DEFAULT,\n Typography.BODY_DEFAULT_BOLD,\n Typography.BODY_LARGE,\n Typography.BODY_LARGE_BOLD,\n]);\n\nexport type BodyProps = HTMLAttributes<HTMLSpanElement | HTMLParagraphElement> & {\n /** @default 'body-default' */\n type?: BodyTypes;\n /** @default 'div' */\n as?: 'span' | 'p' | 'div';\n /**\n * When true, preserves newline characters in the text\n * @default false\n */\n preserveNewlines?: boolean;\n};\n\nconst Body = forwardRef(function Body(\n { as: Element = 'div', type = DEFAULT_TYPE, className, preserveNewlines, ...props }: BodyProps,\n reference: React.ForwardedRef<\n | {\n [key in typeof Element]: React.ElementRef<key>;\n }[typeof Element]\n | null\n >,\n) {\n const isTypeSupported = bodyTypes.has(type);\n return (\n <Element\n {...props}\n // @ts-expect-error TODO: Remove when component could be rewritten with generics\n // See: https://fettblog.eu/typescript-react-generic-forward-refs/\n ref={reference}\n className={clsx(\n `
|
|
1
|
+
{"version":3,"file":"Body.js","sources":["../../src/Body/Body.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { forwardRef, HTMLAttributes } from 'react';\n\nimport { Typography, BodyTypes } from '../common/PropsValues/typography';\n\nconst DEFAULT_TYPE = Typography.BODY_DEFAULT;\n\nconst bodyTypes = new Set<BodyTypes>([\n Typography.BODY_DEFAULT,\n Typography.BODY_DEFAULT_BOLD,\n Typography.BODY_LARGE,\n Typography.BODY_LARGE_BOLD,\n]);\n\nexport type BodyProps = HTMLAttributes<HTMLSpanElement | HTMLParagraphElement> & {\n /** @default 'body-default' */\n type?: BodyTypes;\n /** @default 'div' */\n as?: 'span' | 'p' | 'div';\n /**\n * When true, preserves newline characters in the text\n * @default false\n */\n preserveNewlines?: boolean;\n};\n\nconst Body = forwardRef(function Body(\n { as: Element = 'div', type = DEFAULT_TYPE, className, preserveNewlines, ...props }: BodyProps,\n reference: React.ForwardedRef<\n | {\n [key in typeof Element]: React.ElementRef<key>;\n }[typeof Element]\n | null\n >,\n) {\n const isTypeSupported = bodyTypes.has(type);\n return (\n <Element\n {...props}\n // @ts-expect-error TODO: Remove when component could be rewritten with generics\n // See: https://fettblog.eu/typescript-react-generic-forward-refs/\n ref={reference}\n className={clsx(\n `wds-text-${isTypeSupported ? type : DEFAULT_TYPE}`,\n preserveNewlines && 'wds-text--pre-line',\n className,\n )}\n />\n );\n});\n\nexport default Body;\n"],"names":["DEFAULT_TYPE","Typography","BODY_DEFAULT","bodyTypes","Set","BODY_DEFAULT_BOLD","BODY_LARGE","BODY_LARGE_BOLD","Body","forwardRef","as","Element","type","className","preserveNewlines","props","reference","isTypeSupported","has","_jsx","ref","clsx"],"mappings":";;;;;;;;;AAKA,MAAMA,YAAY,GAAGC,qBAAU,CAACC,YAAY;AAE5C,MAAMC,SAAS,GAAG,IAAIC,GAAG,CAAY,CACnCH,qBAAU,CAACC,YAAY,EACvBD,qBAAU,CAACI,iBAAiB,EAC5BJ,qBAAU,CAACK,UAAU,EACrBL,qBAAU,CAACM,eAAe,CAC3B,CAAC;AAcF,MAAMC,IAAI,gBAAGC,gBAAU,CAAC,SAASD,IAAIA,CACnC;EAAEE,EAAE,EAAEC,OAAO,GAAG,KAAK;AAAEC,EAAAA,IAAI,GAAGZ,YAAY;EAAEa,SAAS;EAAEC,gBAAgB;EAAE,GAAGC;AAAK,CAAa,EAC9FC,SAKC,EAAA;AAED,EAAA,MAAMC,eAAe,GAAGd,SAAS,CAACe,GAAG,CAACN,IAAI,CAAC;EAC3C,oBACEO,cAAA,CAACR,OAAO,EAAA;AAAA,IAAA,GACFI,KAAK;AACT;AACA;AACAK,IAAAA,GAAG,EAAEJ,SAAU;AACfH,IAAAA,SAAS,EAAEQ,SAAI,CACb,CAAA,SAAA,EAAYJ,eAAe,GAAGL,IAAI,GAAGZ,YAAY,EAAE,EACnDc,gBAAgB,IAAI,oBAAoB,EACxCD,SAAS;AACT,GAAA,CACF;AAEN,CAAC;;"}
|
package/build/Body/Body.mjs
CHANGED
|
@@ -18,7 +18,7 @@ const Body = /*#__PURE__*/forwardRef(function Body({
|
|
|
18
18
|
// @ts-expect-error TODO: Remove when component could be rewritten with generics
|
|
19
19
|
// See: https://fettblog.eu/typescript-react-generic-forward-refs/
|
|
20
20
|
ref: reference,
|
|
21
|
-
className: clsx(`
|
|
21
|
+
className: clsx(`wds-text-${isTypeSupported ? type : DEFAULT_TYPE}`, preserveNewlines && 'wds-text--pre-line', className)
|
|
22
22
|
});
|
|
23
23
|
});
|
|
24
24
|
|
package/build/Body/Body.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Body.mjs","sources":["../../src/Body/Body.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { forwardRef, HTMLAttributes } from 'react';\n\nimport { Typography, BodyTypes } from '../common/PropsValues/typography';\n\nconst DEFAULT_TYPE = Typography.BODY_DEFAULT;\n\nconst bodyTypes = new Set<BodyTypes>([\n Typography.BODY_DEFAULT,\n Typography.BODY_DEFAULT_BOLD,\n Typography.BODY_LARGE,\n Typography.BODY_LARGE_BOLD,\n]);\n\nexport type BodyProps = HTMLAttributes<HTMLSpanElement | HTMLParagraphElement> & {\n /** @default 'body-default' */\n type?: BodyTypes;\n /** @default 'div' */\n as?: 'span' | 'p' | 'div';\n /**\n * When true, preserves newline characters in the text\n * @default false\n */\n preserveNewlines?: boolean;\n};\n\nconst Body = forwardRef(function Body(\n { as: Element = 'div', type = DEFAULT_TYPE, className, preserveNewlines, ...props }: BodyProps,\n reference: React.ForwardedRef<\n | {\n [key in typeof Element]: React.ElementRef<key>;\n }[typeof Element]\n | null\n >,\n) {\n const isTypeSupported = bodyTypes.has(type);\n return (\n <Element\n {...props}\n // @ts-expect-error TODO: Remove when component could be rewritten with generics\n // See: https://fettblog.eu/typescript-react-generic-forward-refs/\n ref={reference}\n className={clsx(\n `
|
|
1
|
+
{"version":3,"file":"Body.mjs","sources":["../../src/Body/Body.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { forwardRef, HTMLAttributes } from 'react';\n\nimport { Typography, BodyTypes } from '../common/PropsValues/typography';\n\nconst DEFAULT_TYPE = Typography.BODY_DEFAULT;\n\nconst bodyTypes = new Set<BodyTypes>([\n Typography.BODY_DEFAULT,\n Typography.BODY_DEFAULT_BOLD,\n Typography.BODY_LARGE,\n Typography.BODY_LARGE_BOLD,\n]);\n\nexport type BodyProps = HTMLAttributes<HTMLSpanElement | HTMLParagraphElement> & {\n /** @default 'body-default' */\n type?: BodyTypes;\n /** @default 'div' */\n as?: 'span' | 'p' | 'div';\n /**\n * When true, preserves newline characters in the text\n * @default false\n */\n preserveNewlines?: boolean;\n};\n\nconst Body = forwardRef(function Body(\n { as: Element = 'div', type = DEFAULT_TYPE, className, preserveNewlines, ...props }: BodyProps,\n reference: React.ForwardedRef<\n | {\n [key in typeof Element]: React.ElementRef<key>;\n }[typeof Element]\n | null\n >,\n) {\n const isTypeSupported = bodyTypes.has(type);\n return (\n <Element\n {...props}\n // @ts-expect-error TODO: Remove when component could be rewritten with generics\n // See: https://fettblog.eu/typescript-react-generic-forward-refs/\n ref={reference}\n className={clsx(\n `wds-text-${isTypeSupported ? type : DEFAULT_TYPE}`,\n preserveNewlines && 'wds-text--pre-line',\n className,\n )}\n />\n );\n});\n\nexport default Body;\n"],"names":["DEFAULT_TYPE","Typography","BODY_DEFAULT","bodyTypes","Set","BODY_DEFAULT_BOLD","BODY_LARGE","BODY_LARGE_BOLD","Body","forwardRef","as","Element","type","className","preserveNewlines","props","reference","isTypeSupported","has","_jsx","ref","clsx"],"mappings":";;;;;AAKA,MAAMA,YAAY,GAAGC,UAAU,CAACC,YAAY;AAE5C,MAAMC,SAAS,GAAG,IAAIC,GAAG,CAAY,CACnCH,UAAU,CAACC,YAAY,EACvBD,UAAU,CAACI,iBAAiB,EAC5BJ,UAAU,CAACK,UAAU,EACrBL,UAAU,CAACM,eAAe,CAC3B,CAAC;AAcF,MAAMC,IAAI,gBAAGC,UAAU,CAAC,SAASD,IAAIA,CACnC;EAAEE,EAAE,EAAEC,OAAO,GAAG,KAAK;AAAEC,EAAAA,IAAI,GAAGZ,YAAY;EAAEa,SAAS;EAAEC,gBAAgB;EAAE,GAAGC;AAAK,CAAa,EAC9FC,SAKC,EAAA;AAED,EAAA,MAAMC,eAAe,GAAGd,SAAS,CAACe,GAAG,CAACN,IAAI,CAAC;EAC3C,oBACEO,GAAA,CAACR,OAAO,EAAA;AAAA,IAAA,GACFI,KAAK;AACT;AACA;AACAK,IAAAA,GAAG,EAAEJ,SAAU;AACfH,IAAAA,SAAS,EAAEQ,IAAI,CACb,CAAA,SAAA,EAAYJ,eAAe,GAAGL,IAAI,GAAGZ,YAAY,EAAE,EACnDc,gBAAgB,IAAI,oBAAoB,EACxCD,SAAS;AACT,GAAA,CACF;AAEN,CAAC;;"}
|
|
@@ -145,7 +145,7 @@ let DayCalendarTable$1 = class DayCalendarTable extends React.PureComponent {
|
|
|
145
145
|
children: [/*#__PURE__*/jsxRuntime.jsx("thead", {
|
|
146
146
|
children: /*#__PURE__*/jsxRuntime.jsx("tr", {
|
|
147
147
|
children: this.days.map((day, index) => /*#__PURE__*/jsxRuntime.jsxs("th", {
|
|
148
|
-
className: index > 4 ? 'text-xs-center
|
|
148
|
+
className: index > 4 ? 'text-xs-center wds-text-body-default' : 'text-xs-center wds-text-body-default-bold',
|
|
149
149
|
children: [/*#__PURE__*/jsxRuntime.jsx("span", {
|
|
150
150
|
className: "hidden-xs",
|
|
151
151
|
children: /*#__PURE__*/jsxRuntime.jsx("abbr", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DayCalendarTable.js","sources":["../../../../src/Calendar/DayCalendar/Table/DayCalendarTable.tsx"],"sourcesContent":["import { formatDate } from '@transferwise/formatting';\nimport { PureComponent } from 'react';\nimport { injectIntl, type WrappedComponentProps } from '../../../common/injectIntl';\n\nimport { getDayNames, isWithinRange } from '../../../common/DateUtils';\nimport { isDateDisabled } from '../../_helpers';\nimport { LONG_DAY_FORMAT } from '../../Calendar.constants';\nimport type { DisabledRules } from '../../Calendar.types';\nimport { getFocusableTime } from '../../GetFocusableTime/GetFocusableTime';\nimport { getStartOfDay } from '../../GetStartOfDay';\nimport TableLink from '../../TableLink';\n\nconst SHORT_DAY_FORMAT: Intl.DateTimeFormatOptions = { day: 'numeric' };\n\ninterface DayCalendarTableProps extends WrappedComponentProps {\n selectedDate: Date | null;\n focusedDate?: Date | null;\n min: Date | null;\n max: Date | null;\n viewMonth: number;\n viewYear: number;\n disabledRules?: DisabledRules;\n disabledReasonId?: string;\n announceReasonOnFocus?: boolean;\n onSelect: (date: Date) => void;\n onDayFocus?: (date: Date) => void;\n}\n\nclass DayCalendarTable extends PureComponent<DayCalendarTableProps> {\n getTableStructure = () => {\n const { viewMonth, viewYear } = this.props;\n let firstDayOfMonth = new Date(viewYear, viewMonth, 1).getDay();\n // JS Sunday is 0, we're setting it last\n if (firstDayOfMonth === 0) {\n firstDayOfMonth = 7;\n }\n const daysInMonth = new Date(viewYear, viewMonth + 1, 0).getDate();\n\n let week: number[] = [];\n const weeks: number[][] = [];\n let i;\n\n // Pad first week\n for (i = 1; i < firstDayOfMonth; i += 1) {\n week.push(-1);\n }\n // Fill in days\n for (i = 1; i <= daysInMonth; i += 1) {\n week.push(i);\n if ((firstDayOfMonth + i - 1) % 7 === 0) {\n weeks.push(week);\n week = [];\n }\n }\n if (week.length > 0) {\n // Pad last week\n for (i = week.length; i < 7; i += 1) {\n week.push(-1);\n }\n weeks.push(week);\n }\n return weeks;\n };\n\n days = getDayNames(this.props.intl.locale, 'short');\n daysShort = getDayNames(this.props.intl.locale, 'narrow');\n daysLong = getDayNames(this.props.intl.locale, 'long');\n\n selectDay = (day: number) => {\n const { viewMonth, viewYear, onSelect } = this.props;\n onSelect(new Date(viewYear, viewMonth, day));\n };\n\n focusDay = (day: number) => {\n const { viewMonth, viewYear, onDayFocus } = this.props;\n onDayFocus?.(new Date(viewYear, viewMonth, day));\n };\n\n isOutOfRange = (day: number) => {\n if (day < 0) {\n return true;\n }\n const { min, max, viewMonth, viewYear } = this.props;\n const date = new Date(viewYear, viewMonth, day);\n return !isWithinRange(date, min, max);\n };\n\n isDisabled = (day: number) => {\n if (day < 0) {\n return false;\n }\n const { viewMonth, viewYear, disabledRules } = this.props;\n const date = new Date(viewYear, viewMonth, day);\n return isDateDisabled(date, disabledRules);\n };\n\n isUnavailable = (day: number) => this.isOutOfRange(day) || this.isDisabled(day);\n\n isActive = (day: number) => {\n const { selectedDate, viewMonth, viewYear } = this.props;\n return !!(selectedDate && Number(new Date(viewYear, viewMonth, day)) === Number(selectedDate));\n };\n\n isFocused = (day: number) => {\n const { focusedDate, viewMonth, viewYear } = this.props;\n return !!(focusedDate && Number(new Date(viewYear, viewMonth, day)) === Number(focusedDate));\n };\n\n isToday = (day: number) => {\n const { viewMonth, viewYear } = this.props;\n return Number(getStartOfDay(new Date())) === Number(new Date(viewYear, viewMonth, day));\n };\n\n getAutofocusDay = (weeks: number[][]) => {\n const days = weeks.flatMap((week) => week);\n return getFocusableTime({\n isActive: this.isFocused,\n isNow: this.isToday,\n isDisabled: this.isUnavailable,\n timeSpan: days,\n });\n };\n\n render() {\n const { viewMonth, viewYear, intl, disabledReasonId, announceReasonOnFocus } = this.props;\n const weeks = this.getTableStructure();\n const autoFocusDay = this.getAutofocusDay(weeks);\n return (\n <table className=\"table table-condensed table-bordered tw-date-lookup-calendar m-b-0\">\n <thead>\n <tr>\n {this.days.map((day, index) => (\n <th\n key={day}\n className={\n index > 4\n ? 'text-xs-center np-text-body-default'\n : 'text-xs-center np-text-body-default-bold'\n }\n >\n <span className=\"hidden-xs\">\n <abbr title={this.daysLong[index]}>{day.slice(0, 3)}</abbr>\n </span>\n <span className=\"visible-xs-inline-block\">\n <abbr title={this.daysLong[index]}>{this.daysShort[index].slice(0, 2)}</abbr>\n </span>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {/* eslint-disable react/no-array-index-key */}\n {weeks.map((week, weekIndex) => (\n <tr key={weekIndex}>\n {week.map((day, dayIndex) => {\n const dayOutOfRange = this.isOutOfRange(day);\n const dayDisabled = this.isDisabled(day);\n return (\n <td key={dayIndex} className={dayIndex > 4 ? 'weekend' : ''}>\n {day !== -1 && (\n <TableLink\n item={day}\n type=\"day\"\n title={formatDate(\n new Date(viewYear, viewMonth, day),\n intl.locale,\n SHORT_DAY_FORMAT,\n )}\n autofocus={day === autoFocusDay}\n longTitle={formatDate(\n new Date(viewYear, viewMonth, day),\n intl.locale,\n LONG_DAY_FORMAT,\n )}\n active={this.isActive(day)}\n outOfRange={dayOutOfRange}\n disabled={dayDisabled}\n today={this.isToday(day)}\n disabledReasonId={disabledReasonId}\n announceReasonOnFocus={announceReasonOnFocus}\n onClick={this.selectDay}\n onFocus={this.focusDay}\n />\n )}\n </td>\n );\n })}\n </tr>\n ))}\n {/* eslint-enable react/no-array-index-key */}\n </tbody>\n </table>\n );\n }\n}\n\nexport default injectIntl(DayCalendarTable);\n"],"names":["SHORT_DAY_FORMAT","day","DayCalendarTable","PureComponent","getTableStructure","viewMonth","viewYear","props","firstDayOfMonth","Date","getDay","daysInMonth","getDate","week","weeks","i","push","length","days","getDayNames","intl","locale","daysShort","daysLong","selectDay","onSelect","focusDay","onDayFocus","isOutOfRange","min","max","date","isWithinRange","isDisabled","disabledRules","isDateDisabled","isUnavailable","isActive","selectedDate","Number","isFocused","focusedDate","isToday","getStartOfDay","getAutofocusDay","flatMap","getFocusableTime","isNow","timeSpan","render","disabledReasonId","announceReasonOnFocus","autoFocusDay","_jsxs","className","children","_jsx","map","index","title","slice","weekIndex","dayIndex","dayOutOfRange","dayDisabled","TableLink","item","type","formatDate","autofocus","longTitle","LONG_DAY_FORMAT","active","outOfRange","disabled","today","onClick","onFocus","injectIntl"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DayCalendarTable.js","sources":["../../../../src/Calendar/DayCalendar/Table/DayCalendarTable.tsx"],"sourcesContent":["import { formatDate } from '@transferwise/formatting';\nimport { PureComponent } from 'react';\nimport { injectIntl, type WrappedComponentProps } from '../../../common/injectIntl';\n\nimport { getDayNames, isWithinRange } from '../../../common/DateUtils';\nimport { isDateDisabled } from '../../_helpers';\nimport { LONG_DAY_FORMAT } from '../../Calendar.constants';\nimport type { DisabledRules } from '../../Calendar.types';\nimport { getFocusableTime } from '../../GetFocusableTime/GetFocusableTime';\nimport { getStartOfDay } from '../../GetStartOfDay';\nimport TableLink from '../../TableLink';\n\nconst SHORT_DAY_FORMAT: Intl.DateTimeFormatOptions = { day: 'numeric' };\n\ninterface DayCalendarTableProps extends WrappedComponentProps {\n selectedDate: Date | null;\n focusedDate?: Date | null;\n min: Date | null;\n max: Date | null;\n viewMonth: number;\n viewYear: number;\n disabledRules?: DisabledRules;\n disabledReasonId?: string;\n announceReasonOnFocus?: boolean;\n onSelect: (date: Date) => void;\n onDayFocus?: (date: Date) => void;\n}\n\nclass DayCalendarTable extends PureComponent<DayCalendarTableProps> {\n getTableStructure = () => {\n const { viewMonth, viewYear } = this.props;\n let firstDayOfMonth = new Date(viewYear, viewMonth, 1).getDay();\n // JS Sunday is 0, we're setting it last\n if (firstDayOfMonth === 0) {\n firstDayOfMonth = 7;\n }\n const daysInMonth = new Date(viewYear, viewMonth + 1, 0).getDate();\n\n let week: number[] = [];\n const weeks: number[][] = [];\n let i;\n\n // Pad first week\n for (i = 1; i < firstDayOfMonth; i += 1) {\n week.push(-1);\n }\n // Fill in days\n for (i = 1; i <= daysInMonth; i += 1) {\n week.push(i);\n if ((firstDayOfMonth + i - 1) % 7 === 0) {\n weeks.push(week);\n week = [];\n }\n }\n if (week.length > 0) {\n // Pad last week\n for (i = week.length; i < 7; i += 1) {\n week.push(-1);\n }\n weeks.push(week);\n }\n return weeks;\n };\n\n days = getDayNames(this.props.intl.locale, 'short');\n daysShort = getDayNames(this.props.intl.locale, 'narrow');\n daysLong = getDayNames(this.props.intl.locale, 'long');\n\n selectDay = (day: number) => {\n const { viewMonth, viewYear, onSelect } = this.props;\n onSelect(new Date(viewYear, viewMonth, day));\n };\n\n focusDay = (day: number) => {\n const { viewMonth, viewYear, onDayFocus } = this.props;\n onDayFocus?.(new Date(viewYear, viewMonth, day));\n };\n\n isOutOfRange = (day: number) => {\n if (day < 0) {\n return true;\n }\n const { min, max, viewMonth, viewYear } = this.props;\n const date = new Date(viewYear, viewMonth, day);\n return !isWithinRange(date, min, max);\n };\n\n isDisabled = (day: number) => {\n if (day < 0) {\n return false;\n }\n const { viewMonth, viewYear, disabledRules } = this.props;\n const date = new Date(viewYear, viewMonth, day);\n return isDateDisabled(date, disabledRules);\n };\n\n isUnavailable = (day: number) => this.isOutOfRange(day) || this.isDisabled(day);\n\n isActive = (day: number) => {\n const { selectedDate, viewMonth, viewYear } = this.props;\n return !!(selectedDate && Number(new Date(viewYear, viewMonth, day)) === Number(selectedDate));\n };\n\n isFocused = (day: number) => {\n const { focusedDate, viewMonth, viewYear } = this.props;\n return !!(focusedDate && Number(new Date(viewYear, viewMonth, day)) === Number(focusedDate));\n };\n\n isToday = (day: number) => {\n const { viewMonth, viewYear } = this.props;\n return Number(getStartOfDay(new Date())) === Number(new Date(viewYear, viewMonth, day));\n };\n\n getAutofocusDay = (weeks: number[][]) => {\n const days = weeks.flatMap((week) => week);\n return getFocusableTime({\n isActive: this.isFocused,\n isNow: this.isToday,\n isDisabled: this.isUnavailable,\n timeSpan: days,\n });\n };\n\n render() {\n const { viewMonth, viewYear, intl, disabledReasonId, announceReasonOnFocus } = this.props;\n const weeks = this.getTableStructure();\n const autoFocusDay = this.getAutofocusDay(weeks);\n return (\n <table className=\"table table-condensed table-bordered tw-date-lookup-calendar m-b-0\">\n <thead>\n <tr>\n {this.days.map((day, index) => (\n <th\n key={day}\n className={\n index > 4\n ? 'text-xs-center wds-text-body-default'\n : 'text-xs-center wds-text-body-default-bold'\n }\n >\n <span className=\"hidden-xs\">\n <abbr title={this.daysLong[index]}>{day.slice(0, 3)}</abbr>\n </span>\n <span className=\"visible-xs-inline-block\">\n <abbr title={this.daysLong[index]}>{this.daysShort[index].slice(0, 2)}</abbr>\n </span>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {/* eslint-disable react/no-array-index-key */}\n {weeks.map((week, weekIndex) => (\n <tr key={weekIndex}>\n {week.map((day, dayIndex) => {\n const dayOutOfRange = this.isOutOfRange(day);\n const dayDisabled = this.isDisabled(day);\n return (\n <td key={dayIndex} className={dayIndex > 4 ? 'weekend' : ''}>\n {day !== -1 && (\n <TableLink\n item={day}\n type=\"day\"\n title={formatDate(\n new Date(viewYear, viewMonth, day),\n intl.locale,\n SHORT_DAY_FORMAT,\n )}\n autofocus={day === autoFocusDay}\n longTitle={formatDate(\n new Date(viewYear, viewMonth, day),\n intl.locale,\n LONG_DAY_FORMAT,\n )}\n active={this.isActive(day)}\n outOfRange={dayOutOfRange}\n disabled={dayDisabled}\n today={this.isToday(day)}\n disabledReasonId={disabledReasonId}\n announceReasonOnFocus={announceReasonOnFocus}\n onClick={this.selectDay}\n onFocus={this.focusDay}\n />\n )}\n </td>\n );\n })}\n </tr>\n ))}\n {/* eslint-enable react/no-array-index-key */}\n </tbody>\n </table>\n );\n }\n}\n\nexport default injectIntl(DayCalendarTable);\n"],"names":["SHORT_DAY_FORMAT","day","DayCalendarTable","PureComponent","getTableStructure","viewMonth","viewYear","props","firstDayOfMonth","Date","getDay","daysInMonth","getDate","week","weeks","i","push","length","days","getDayNames","intl","locale","daysShort","daysLong","selectDay","onSelect","focusDay","onDayFocus","isOutOfRange","min","max","date","isWithinRange","isDisabled","disabledRules","isDateDisabled","isUnavailable","isActive","selectedDate","Number","isFocused","focusedDate","isToday","getStartOfDay","getAutofocusDay","flatMap","getFocusableTime","isNow","timeSpan","render","disabledReasonId","announceReasonOnFocus","autoFocusDay","_jsxs","className","children","_jsx","map","index","title","slice","weekIndex","dayIndex","dayOutOfRange","dayDisabled","TableLink","item","type","formatDate","autofocus","longTitle","LONG_DAY_FORMAT","active","outOfRange","disabled","today","onClick","onFocus","injectIntl"],"mappings":"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"}
|
|
@@ -141,7 +141,7 @@ class DayCalendarTable extends PureComponent {
|
|
|
141
141
|
children: [/*#__PURE__*/jsx("thead", {
|
|
142
142
|
children: /*#__PURE__*/jsx("tr", {
|
|
143
143
|
children: this.days.map((day, index) => /*#__PURE__*/jsxs("th", {
|
|
144
|
-
className: index > 4 ? 'text-xs-center
|
|
144
|
+
className: index > 4 ? 'text-xs-center wds-text-body-default' : 'text-xs-center wds-text-body-default-bold',
|
|
145
145
|
children: [/*#__PURE__*/jsx("span", {
|
|
146
146
|
className: "hidden-xs",
|
|
147
147
|
children: /*#__PURE__*/jsx("abbr", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DayCalendarTable.mjs","sources":["../../../../src/Calendar/DayCalendar/Table/DayCalendarTable.tsx"],"sourcesContent":["import { formatDate } from '@transferwise/formatting';\nimport { PureComponent } from 'react';\nimport { injectIntl, type WrappedComponentProps } from '../../../common/injectIntl';\n\nimport { getDayNames, isWithinRange } from '../../../common/DateUtils';\nimport { isDateDisabled } from '../../_helpers';\nimport { LONG_DAY_FORMAT } from '../../Calendar.constants';\nimport type { DisabledRules } from '../../Calendar.types';\nimport { getFocusableTime } from '../../GetFocusableTime/GetFocusableTime';\nimport { getStartOfDay } from '../../GetStartOfDay';\nimport TableLink from '../../TableLink';\n\nconst SHORT_DAY_FORMAT: Intl.DateTimeFormatOptions = { day: 'numeric' };\n\ninterface DayCalendarTableProps extends WrappedComponentProps {\n selectedDate: Date | null;\n focusedDate?: Date | null;\n min: Date | null;\n max: Date | null;\n viewMonth: number;\n viewYear: number;\n disabledRules?: DisabledRules;\n disabledReasonId?: string;\n announceReasonOnFocus?: boolean;\n onSelect: (date: Date) => void;\n onDayFocus?: (date: Date) => void;\n}\n\nclass DayCalendarTable extends PureComponent<DayCalendarTableProps> {\n getTableStructure = () => {\n const { viewMonth, viewYear } = this.props;\n let firstDayOfMonth = new Date(viewYear, viewMonth, 1).getDay();\n // JS Sunday is 0, we're setting it last\n if (firstDayOfMonth === 0) {\n firstDayOfMonth = 7;\n }\n const daysInMonth = new Date(viewYear, viewMonth + 1, 0).getDate();\n\n let week: number[] = [];\n const weeks: number[][] = [];\n let i;\n\n // Pad first week\n for (i = 1; i < firstDayOfMonth; i += 1) {\n week.push(-1);\n }\n // Fill in days\n for (i = 1; i <= daysInMonth; i += 1) {\n week.push(i);\n if ((firstDayOfMonth + i - 1) % 7 === 0) {\n weeks.push(week);\n week = [];\n }\n }\n if (week.length > 0) {\n // Pad last week\n for (i = week.length; i < 7; i += 1) {\n week.push(-1);\n }\n weeks.push(week);\n }\n return weeks;\n };\n\n days = getDayNames(this.props.intl.locale, 'short');\n daysShort = getDayNames(this.props.intl.locale, 'narrow');\n daysLong = getDayNames(this.props.intl.locale, 'long');\n\n selectDay = (day: number) => {\n const { viewMonth, viewYear, onSelect } = this.props;\n onSelect(new Date(viewYear, viewMonth, day));\n };\n\n focusDay = (day: number) => {\n const { viewMonth, viewYear, onDayFocus } = this.props;\n onDayFocus?.(new Date(viewYear, viewMonth, day));\n };\n\n isOutOfRange = (day: number) => {\n if (day < 0) {\n return true;\n }\n const { min, max, viewMonth, viewYear } = this.props;\n const date = new Date(viewYear, viewMonth, day);\n return !isWithinRange(date, min, max);\n };\n\n isDisabled = (day: number) => {\n if (day < 0) {\n return false;\n }\n const { viewMonth, viewYear, disabledRules } = this.props;\n const date = new Date(viewYear, viewMonth, day);\n return isDateDisabled(date, disabledRules);\n };\n\n isUnavailable = (day: number) => this.isOutOfRange(day) || this.isDisabled(day);\n\n isActive = (day: number) => {\n const { selectedDate, viewMonth, viewYear } = this.props;\n return !!(selectedDate && Number(new Date(viewYear, viewMonth, day)) === Number(selectedDate));\n };\n\n isFocused = (day: number) => {\n const { focusedDate, viewMonth, viewYear } = this.props;\n return !!(focusedDate && Number(new Date(viewYear, viewMonth, day)) === Number(focusedDate));\n };\n\n isToday = (day: number) => {\n const { viewMonth, viewYear } = this.props;\n return Number(getStartOfDay(new Date())) === Number(new Date(viewYear, viewMonth, day));\n };\n\n getAutofocusDay = (weeks: number[][]) => {\n const days = weeks.flatMap((week) => week);\n return getFocusableTime({\n isActive: this.isFocused,\n isNow: this.isToday,\n isDisabled: this.isUnavailable,\n timeSpan: days,\n });\n };\n\n render() {\n const { viewMonth, viewYear, intl, disabledReasonId, announceReasonOnFocus } = this.props;\n const weeks = this.getTableStructure();\n const autoFocusDay = this.getAutofocusDay(weeks);\n return (\n <table className=\"table table-condensed table-bordered tw-date-lookup-calendar m-b-0\">\n <thead>\n <tr>\n {this.days.map((day, index) => (\n <th\n key={day}\n className={\n index > 4\n ? 'text-xs-center np-text-body-default'\n : 'text-xs-center np-text-body-default-bold'\n }\n >\n <span className=\"hidden-xs\">\n <abbr title={this.daysLong[index]}>{day.slice(0, 3)}</abbr>\n </span>\n <span className=\"visible-xs-inline-block\">\n <abbr title={this.daysLong[index]}>{this.daysShort[index].slice(0, 2)}</abbr>\n </span>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {/* eslint-disable react/no-array-index-key */}\n {weeks.map((week, weekIndex) => (\n <tr key={weekIndex}>\n {week.map((day, dayIndex) => {\n const dayOutOfRange = this.isOutOfRange(day);\n const dayDisabled = this.isDisabled(day);\n return (\n <td key={dayIndex} className={dayIndex > 4 ? 'weekend' : ''}>\n {day !== -1 && (\n <TableLink\n item={day}\n type=\"day\"\n title={formatDate(\n new Date(viewYear, viewMonth, day),\n intl.locale,\n SHORT_DAY_FORMAT,\n )}\n autofocus={day === autoFocusDay}\n longTitle={formatDate(\n new Date(viewYear, viewMonth, day),\n intl.locale,\n LONG_DAY_FORMAT,\n )}\n active={this.isActive(day)}\n outOfRange={dayOutOfRange}\n disabled={dayDisabled}\n today={this.isToday(day)}\n disabledReasonId={disabledReasonId}\n announceReasonOnFocus={announceReasonOnFocus}\n onClick={this.selectDay}\n onFocus={this.focusDay}\n />\n )}\n </td>\n );\n })}\n </tr>\n ))}\n {/* eslint-enable react/no-array-index-key */}\n </tbody>\n </table>\n );\n }\n}\n\nexport default injectIntl(DayCalendarTable);\n"],"names":["SHORT_DAY_FORMAT","day","DayCalendarTable","PureComponent","getTableStructure","viewMonth","viewYear","props","firstDayOfMonth","Date","getDay","daysInMonth","getDate","week","weeks","i","push","length","days","getDayNames","intl","locale","daysShort","daysLong","selectDay","onSelect","focusDay","onDayFocus","isOutOfRange","min","max","date","isWithinRange","isDisabled","disabledRules","isDateDisabled","isUnavailable","isActive","selectedDate","Number","isFocused","focusedDate","isToday","getStartOfDay","getAutofocusDay","flatMap","getFocusableTime","isNow","timeSpan","render","disabledReasonId","announceReasonOnFocus","autoFocusDay","_jsxs","className","children","_jsx","map","index","title","slice","weekIndex","dayIndex","dayOutOfRange","dayDisabled","TableLink","item","type","formatDate","autofocus","longTitle","LONG_DAY_FORMAT","active","outOfRange","disabled","today","onClick","onFocus","injectIntl"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DayCalendarTable.mjs","sources":["../../../../src/Calendar/DayCalendar/Table/DayCalendarTable.tsx"],"sourcesContent":["import { formatDate } from '@transferwise/formatting';\nimport { PureComponent } from 'react';\nimport { injectIntl, type WrappedComponentProps } from '../../../common/injectIntl';\n\nimport { getDayNames, isWithinRange } from '../../../common/DateUtils';\nimport { isDateDisabled } from '../../_helpers';\nimport { LONG_DAY_FORMAT } from '../../Calendar.constants';\nimport type { DisabledRules } from '../../Calendar.types';\nimport { getFocusableTime } from '../../GetFocusableTime/GetFocusableTime';\nimport { getStartOfDay } from '../../GetStartOfDay';\nimport TableLink from '../../TableLink';\n\nconst SHORT_DAY_FORMAT: Intl.DateTimeFormatOptions = { day: 'numeric' };\n\ninterface DayCalendarTableProps extends WrappedComponentProps {\n selectedDate: Date | null;\n focusedDate?: Date | null;\n min: Date | null;\n max: Date | null;\n viewMonth: number;\n viewYear: number;\n disabledRules?: DisabledRules;\n disabledReasonId?: string;\n announceReasonOnFocus?: boolean;\n onSelect: (date: Date) => void;\n onDayFocus?: (date: Date) => void;\n}\n\nclass DayCalendarTable extends PureComponent<DayCalendarTableProps> {\n getTableStructure = () => {\n const { viewMonth, viewYear } = this.props;\n let firstDayOfMonth = new Date(viewYear, viewMonth, 1).getDay();\n // JS Sunday is 0, we're setting it last\n if (firstDayOfMonth === 0) {\n firstDayOfMonth = 7;\n }\n const daysInMonth = new Date(viewYear, viewMonth + 1, 0).getDate();\n\n let week: number[] = [];\n const weeks: number[][] = [];\n let i;\n\n // Pad first week\n for (i = 1; i < firstDayOfMonth; i += 1) {\n week.push(-1);\n }\n // Fill in days\n for (i = 1; i <= daysInMonth; i += 1) {\n week.push(i);\n if ((firstDayOfMonth + i - 1) % 7 === 0) {\n weeks.push(week);\n week = [];\n }\n }\n if (week.length > 0) {\n // Pad last week\n for (i = week.length; i < 7; i += 1) {\n week.push(-1);\n }\n weeks.push(week);\n }\n return weeks;\n };\n\n days = getDayNames(this.props.intl.locale, 'short');\n daysShort = getDayNames(this.props.intl.locale, 'narrow');\n daysLong = getDayNames(this.props.intl.locale, 'long');\n\n selectDay = (day: number) => {\n const { viewMonth, viewYear, onSelect } = this.props;\n onSelect(new Date(viewYear, viewMonth, day));\n };\n\n focusDay = (day: number) => {\n const { viewMonth, viewYear, onDayFocus } = this.props;\n onDayFocus?.(new Date(viewYear, viewMonth, day));\n };\n\n isOutOfRange = (day: number) => {\n if (day < 0) {\n return true;\n }\n const { min, max, viewMonth, viewYear } = this.props;\n const date = new Date(viewYear, viewMonth, day);\n return !isWithinRange(date, min, max);\n };\n\n isDisabled = (day: number) => {\n if (day < 0) {\n return false;\n }\n const { viewMonth, viewYear, disabledRules } = this.props;\n const date = new Date(viewYear, viewMonth, day);\n return isDateDisabled(date, disabledRules);\n };\n\n isUnavailable = (day: number) => this.isOutOfRange(day) || this.isDisabled(day);\n\n isActive = (day: number) => {\n const { selectedDate, viewMonth, viewYear } = this.props;\n return !!(selectedDate && Number(new Date(viewYear, viewMonth, day)) === Number(selectedDate));\n };\n\n isFocused = (day: number) => {\n const { focusedDate, viewMonth, viewYear } = this.props;\n return !!(focusedDate && Number(new Date(viewYear, viewMonth, day)) === Number(focusedDate));\n };\n\n isToday = (day: number) => {\n const { viewMonth, viewYear } = this.props;\n return Number(getStartOfDay(new Date())) === Number(new Date(viewYear, viewMonth, day));\n };\n\n getAutofocusDay = (weeks: number[][]) => {\n const days = weeks.flatMap((week) => week);\n return getFocusableTime({\n isActive: this.isFocused,\n isNow: this.isToday,\n isDisabled: this.isUnavailable,\n timeSpan: days,\n });\n };\n\n render() {\n const { viewMonth, viewYear, intl, disabledReasonId, announceReasonOnFocus } = this.props;\n const weeks = this.getTableStructure();\n const autoFocusDay = this.getAutofocusDay(weeks);\n return (\n <table className=\"table table-condensed table-bordered tw-date-lookup-calendar m-b-0\">\n <thead>\n <tr>\n {this.days.map((day, index) => (\n <th\n key={day}\n className={\n index > 4\n ? 'text-xs-center wds-text-body-default'\n : 'text-xs-center wds-text-body-default-bold'\n }\n >\n <span className=\"hidden-xs\">\n <abbr title={this.daysLong[index]}>{day.slice(0, 3)}</abbr>\n </span>\n <span className=\"visible-xs-inline-block\">\n <abbr title={this.daysLong[index]}>{this.daysShort[index].slice(0, 2)}</abbr>\n </span>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {/* eslint-disable react/no-array-index-key */}\n {weeks.map((week, weekIndex) => (\n <tr key={weekIndex}>\n {week.map((day, dayIndex) => {\n const dayOutOfRange = this.isOutOfRange(day);\n const dayDisabled = this.isDisabled(day);\n return (\n <td key={dayIndex} className={dayIndex > 4 ? 'weekend' : ''}>\n {day !== -1 && (\n <TableLink\n item={day}\n type=\"day\"\n title={formatDate(\n new Date(viewYear, viewMonth, day),\n intl.locale,\n SHORT_DAY_FORMAT,\n )}\n autofocus={day === autoFocusDay}\n longTitle={formatDate(\n new Date(viewYear, viewMonth, day),\n intl.locale,\n LONG_DAY_FORMAT,\n )}\n active={this.isActive(day)}\n outOfRange={dayOutOfRange}\n disabled={dayDisabled}\n today={this.isToday(day)}\n disabledReasonId={disabledReasonId}\n announceReasonOnFocus={announceReasonOnFocus}\n onClick={this.selectDay}\n onFocus={this.focusDay}\n />\n )}\n </td>\n );\n })}\n </tr>\n ))}\n {/* eslint-enable react/no-array-index-key */}\n </tbody>\n </table>\n );\n }\n}\n\nexport default injectIntl(DayCalendarTable);\n"],"names":["SHORT_DAY_FORMAT","day","DayCalendarTable","PureComponent","getTableStructure","viewMonth","viewYear","props","firstDayOfMonth","Date","getDay","daysInMonth","getDate","week","weeks","i","push","length","days","getDayNames","intl","locale","daysShort","daysLong","selectDay","onSelect","focusDay","onDayFocus","isOutOfRange","min","max","date","isWithinRange","isDisabled","disabledRules","isDateDisabled","isUnavailable","isActive","selectedDate","Number","isFocused","focusedDate","isToday","getStartOfDay","getAutofocusDay","flatMap","getFocusableTime","isNow","timeSpan","render","disabledReasonId","announceReasonOnFocus","autoFocusDay","_jsxs","className","children","_jsx","map","index","title","slice","weekIndex","dayIndex","dayOutOfRange","dayDisabled","TableLink","item","type","formatDate","autofocus","longTitle","LONG_DAY_FORMAT","active","outOfRange","disabled","today","onClick","onFocus","injectIntl"],"mappings":"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"}
|
|
@@ -63,7 +63,7 @@ const MonthCalendarTable = ({
|
|
|
63
63
|
});
|
|
64
64
|
})();
|
|
65
65
|
return /*#__PURE__*/jsxRuntime.jsxs("table", {
|
|
66
|
-
className: "table table-condensed table-bordered tw-date-lookup-calendar
|
|
66
|
+
className: "table table-condensed table-bordered tw-date-lookup-calendar wds-text-body-default-bold m-b-0",
|
|
67
67
|
children: [/*#__PURE__*/jsxRuntime.jsx("thead", {
|
|
68
68
|
className: "sr-only",
|
|
69
69
|
children: /*#__PURE__*/jsxRuntime.jsx("tr", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MonthCalendarTable.js","sources":["../../../../src/Calendar/MonthCalendar/Table/MonthCalendarTable.tsx"],"sourcesContent":["import { formatDate } from '@transferwise/formatting';\nimport { useIntl } from 'react-intl';\n\nimport { getFocusableTime } from '../../GetFocusableTime/GetFocusableTime';\nimport TableLink from '../../TableLink';\n\ninterface MonthCalendarTableProps {\n selectedDate: Date | null;\n focusedDate?: Date | null;\n min: Date | null;\n max: Date | null;\n viewYear: number;\n placeholder?: string;\n onSelect: (date: number) => void;\n}\n\nconst ROWS = 3;\nconst COLS = 4;\nconst MONTH_ONLY_FORMAT: Intl.DateTimeFormatOptions = { month: 'short' };\n\nconst MonthCalendarTable = ({\n selectedDate,\n focusedDate,\n min,\n max,\n viewYear,\n placeholder,\n onSelect,\n}: MonthCalendarTableProps) => {\n const { locale } = useIntl();\n\n const getLink = (month: number) => {\n return (\n <TableLink\n item={month}\n type=\"month\"\n title={formatDate(new Date(viewYear, month), locale, MONTH_ONLY_FORMAT)}\n active={isActive(month)}\n outOfRange={isDisabled(month)}\n disabled={false}\n today={viewYear === new Date().getFullYear() && month === new Date().getMonth()}\n autofocus={autofocusMonth === month}\n onClick={onSelect}\n />\n );\n };\n\n const isActive = (month: number) => {\n return !!(month === selectedDate?.getMonth() && viewYear === selectedDate?.getFullYear());\n };\n\n const isFocused = (month: number) => {\n return !!(month === focusedDate?.getMonth() && viewYear === focusedDate?.getFullYear());\n };\n\n const isThisMonth = (month: number) => {\n return viewYear === new Date().getFullYear() && month === new Date().getMonth();\n };\n\n const isDisabled = (month: number) => {\n const date = new Date(viewYear, month);\n return !!(\n (min && date < new Date(min.getFullYear(), min.getMonth())) ||\n (max && date > new Date(max.getFullYear(), max.getMonth()))\n );\n };\n\n const autofocusMonth = (() => {\n const months = Array.from({ length: ROWS * COLS }, (_, index) => index);\n return getFocusableTime({\n isActive: isFocused,\n isNow: isThisMonth,\n isDisabled,\n timeSpan: months,\n });\n })();\n\n return (\n <table className=\"table table-condensed table-bordered tw-date-lookup-calendar
|
|
1
|
+
{"version":3,"file":"MonthCalendarTable.js","sources":["../../../../src/Calendar/MonthCalendar/Table/MonthCalendarTable.tsx"],"sourcesContent":["import { formatDate } from '@transferwise/formatting';\nimport { useIntl } from 'react-intl';\n\nimport { getFocusableTime } from '../../GetFocusableTime/GetFocusableTime';\nimport TableLink from '../../TableLink';\n\ninterface MonthCalendarTableProps {\n selectedDate: Date | null;\n focusedDate?: Date | null;\n min: Date | null;\n max: Date | null;\n viewYear: number;\n placeholder?: string;\n onSelect: (date: number) => void;\n}\n\nconst ROWS = 3;\nconst COLS = 4;\nconst MONTH_ONLY_FORMAT: Intl.DateTimeFormatOptions = { month: 'short' };\n\nconst MonthCalendarTable = ({\n selectedDate,\n focusedDate,\n min,\n max,\n viewYear,\n placeholder,\n onSelect,\n}: MonthCalendarTableProps) => {\n const { locale } = useIntl();\n\n const getLink = (month: number) => {\n return (\n <TableLink\n item={month}\n type=\"month\"\n title={formatDate(new Date(viewYear, month), locale, MONTH_ONLY_FORMAT)}\n active={isActive(month)}\n outOfRange={isDisabled(month)}\n disabled={false}\n today={viewYear === new Date().getFullYear() && month === new Date().getMonth()}\n autofocus={autofocusMonth === month}\n onClick={onSelect}\n />\n );\n };\n\n const isActive = (month: number) => {\n return !!(month === selectedDate?.getMonth() && viewYear === selectedDate?.getFullYear());\n };\n\n const isFocused = (month: number) => {\n return !!(month === focusedDate?.getMonth() && viewYear === focusedDate?.getFullYear());\n };\n\n const isThisMonth = (month: number) => {\n return viewYear === new Date().getFullYear() && month === new Date().getMonth();\n };\n\n const isDisabled = (month: number) => {\n const date = new Date(viewYear, month);\n return !!(\n (min && date < new Date(min.getFullYear(), min.getMonth())) ||\n (max && date > new Date(max.getFullYear(), max.getMonth()))\n );\n };\n\n const autofocusMonth = (() => {\n const months = Array.from({ length: ROWS * COLS }, (_, index) => index);\n return getFocusableTime({\n isActive: isFocused,\n isNow: isThisMonth,\n isDisabled,\n timeSpan: months,\n });\n })();\n\n return (\n <table className=\"table table-condensed table-bordered tw-date-lookup-calendar wds-text-body-default-bold m-b-0\">\n <thead className=\"sr-only\">\n <tr>\n <th colSpan={COLS}>{placeholder}</th>\n </tr>\n </thead>\n <tbody>\n {Array.from({ length: ROWS }, (_, rowIndex) => (\n <tr key={rowIndex}>\n {Array.from({ length: COLS }, (_, colIndex) => (\n <td key={colIndex}>{getLink(rowIndex * COLS + colIndex)}</td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n );\n};\n\nexport default MonthCalendarTable;\n"],"names":["ROWS","COLS","MONTH_ONLY_FORMAT","month","MonthCalendarTable","selectedDate","focusedDate","min","max","viewYear","placeholder","onSelect","locale","useIntl","getLink","_jsx","TableLink","item","type","title","formatDate","Date","active","isActive","outOfRange","isDisabled","disabled","today","getFullYear","getMonth","autofocus","autofocusMonth","onClick","isFocused","isThisMonth","date","months","Array","from","length","_","index","getFocusableTime","isNow","timeSpan","_jsxs","className","children","colSpan","rowIndex","colIndex"],"mappings":";;;;;;;;;;AAgBA,MAAMA,IAAI,GAAG,CAAC;AACd,MAAMC,IAAI,GAAG,CAAC;AACd,MAAMC,iBAAiB,GAA+B;AAAEC,EAAAA,KAAK,EAAE;CAAS;AAExE,MAAMC,kBAAkB,GAAGA,CAAC;EAC1BC,YAAY;EACZC,WAAW;EACXC,GAAG;EACHC,GAAG;EACHC,QAAQ;EACRC,WAAW;AACXC,EAAAA;AAAQ,CACgB,KAAI;EAC5B,MAAM;AAAEC,IAAAA;GAAQ,GAAGC,iBAAO,EAAE;EAE5B,MAAMC,OAAO,GAAIX,KAAa,IAAI;IAChC,oBACEY,cAAA,CAACC,iBAAS,EAAA;AACRC,MAAAA,IAAI,EAAEd,KAAM;AACZe,MAAAA,IAAI,EAAC,OAAO;AACZC,MAAAA,KAAK,EAAEC,qBAAU,CAAC,IAAIC,IAAI,CAACZ,QAAQ,EAAEN,KAAK,CAAC,EAAES,MAAM,EAAEV,iBAAiB,CAAE;AACxEoB,MAAAA,MAAM,EAAEC,QAAQ,CAACpB,KAAK,CAAE;AACxBqB,MAAAA,UAAU,EAAEC,UAAU,CAACtB,KAAK,CAAE;AAC9BuB,MAAAA,QAAQ,EAAE,KAAM;MAChBC,KAAK,EAAElB,QAAQ,KAAK,IAAIY,IAAI,EAAE,CAACO,WAAW,EAAE,IAAIzB,KAAK,KAAK,IAAIkB,IAAI,EAAE,CAACQ,QAAQ,EAAG;MAChFC,SAAS,EAAEC,cAAc,KAAK5B,KAAM;AACpC6B,MAAAA,OAAO,EAAErB;AAAS,KAAA,CAClB;EAEN,CAAC;EAED,MAAMY,QAAQ,GAAIpB,KAAa,IAAI;AACjC,IAAA,OAAO,CAAC,EAAEA,KAAK,KAAKE,YAAY,EAAEwB,QAAQ,EAAE,IAAIpB,QAAQ,KAAKJ,YAAY,EAAEuB,WAAW,EAAE,CAAC;EAC3F,CAAC;EAED,MAAMK,SAAS,GAAI9B,KAAa,IAAI;AAClC,IAAA,OAAO,CAAC,EAAEA,KAAK,KAAKG,WAAW,EAAEuB,QAAQ,EAAE,IAAIpB,QAAQ,KAAKH,WAAW,EAAEsB,WAAW,EAAE,CAAC;EACzF,CAAC;EAED,MAAMM,WAAW,GAAI/B,KAAa,IAAI;IACpC,OAAOM,QAAQ,KAAK,IAAIY,IAAI,EAAE,CAACO,WAAW,EAAE,IAAIzB,KAAK,KAAK,IAAIkB,IAAI,EAAE,CAACQ,QAAQ,EAAE;EACjF,CAAC;EAED,MAAMJ,UAAU,GAAItB,KAAa,IAAI;IACnC,MAAMgC,IAAI,GAAG,IAAId,IAAI,CAACZ,QAAQ,EAAEN,KAAK,CAAC;AACtC,IAAA,OAAO,CAAC,EACLI,GAAG,IAAI4B,IAAI,GAAG,IAAId,IAAI,CAACd,GAAG,CAACqB,WAAW,EAAE,EAAErB,GAAG,CAACsB,QAAQ,EAAE,CAAC,IACzDrB,GAAG,IAAI2B,IAAI,GAAG,IAAId,IAAI,CAACb,GAAG,CAACoB,WAAW,EAAE,EAAEpB,GAAG,CAACqB,QAAQ,EAAE,CAAE,CAC5D;EACH,CAAC;EAED,MAAME,cAAc,GAAG,CAAC,MAAK;AAC3B,IAAA,MAAMK,MAAM,GAAGC,KAAK,CAACC,IAAI,CAAC;MAAEC,MAAM,EAAEvC,IAAI,GAAGC;AAAI,KAAE,EAAE,CAACuC,CAAC,EAAEC,KAAK,KAAKA,KAAK,CAAC;AACvE,IAAA,OAAOC,iCAAgB,CAAC;AACtBnB,MAAAA,QAAQ,EAAEU,SAAS;AACnBU,MAAAA,KAAK,EAAET,WAAW;MAClBT,UAAU;AACVmB,MAAAA,QAAQ,EAAER;AACX,KAAA,CAAC;AACJ,EAAA,CAAC,GAAG;AAEJ,EAAA,oBACES,eAAA,CAAA,OAAA,EAAA;AAAOC,IAAAA,SAAS,EAAC,+FAA+F;AAAAC,IAAAA,QAAA,gBAC9GhC,cAAA,CAAA,OAAA,EAAA;AAAO+B,MAAAA,SAAS,EAAC,SAAS;AAAAC,MAAAA,QAAA,eACxBhC,cAAA,CAAA,IAAA,EAAA;AAAAgC,QAAAA,QAAA,eACEhC,cAAA,CAAA,IAAA,EAAA;AAAIiC,UAAAA,OAAO,EAAE/C,IAAK;AAAA8C,UAAAA,QAAA,EAAErC;SAAgB;OAClC;KACC,CACP,eAAAK,cAAA,CAAA,OAAA,EAAA;AAAAgC,MAAAA,QAAA,EACGV,KAAK,CAACC,IAAI,CAAC;AAAEC,QAAAA,MAAM,EAAEvC;AAAI,OAAE,EAAE,CAACwC,CAAC,EAAES,QAAQ,kBACxClC,cAAA,CAAA,IAAA,EAAA;AAAAgC,QAAAA,QAAA,EACGV,KAAK,CAACC,IAAI,CAAC;AAAEC,UAAAA,MAAM,EAAEtC;AAAI,SAAE,EAAE,CAACuC,CAAC,EAAEU,QAAQ,kBACxCnC,cAAA,CAAA,IAAA,EAAA;AAAAgC,UAAAA,QAAA,EAAoBjC,OAAO,CAACmC,QAAQ,GAAGhD,IAAI,GAAGiD,QAAQ;AAAC,SAAA,EAA9CA,QAAmD,CAC7D;AAAC,OAAA,EAHKD,QAIL,CACL;AAAC,KACG,CACT;AAAA,GAAO,CAAC;AAEZ;;"}
|
|
@@ -59,7 +59,7 @@ const MonthCalendarTable = ({
|
|
|
59
59
|
});
|
|
60
60
|
})();
|
|
61
61
|
return /*#__PURE__*/jsxs("table", {
|
|
62
|
-
className: "table table-condensed table-bordered tw-date-lookup-calendar
|
|
62
|
+
className: "table table-condensed table-bordered tw-date-lookup-calendar wds-text-body-default-bold m-b-0",
|
|
63
63
|
children: [/*#__PURE__*/jsx("thead", {
|
|
64
64
|
className: "sr-only",
|
|
65
65
|
children: /*#__PURE__*/jsx("tr", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MonthCalendarTable.mjs","sources":["../../../../src/Calendar/MonthCalendar/Table/MonthCalendarTable.tsx"],"sourcesContent":["import { formatDate } from '@transferwise/formatting';\nimport { useIntl } from 'react-intl';\n\nimport { getFocusableTime } from '../../GetFocusableTime/GetFocusableTime';\nimport TableLink from '../../TableLink';\n\ninterface MonthCalendarTableProps {\n selectedDate: Date | null;\n focusedDate?: Date | null;\n min: Date | null;\n max: Date | null;\n viewYear: number;\n placeholder?: string;\n onSelect: (date: number) => void;\n}\n\nconst ROWS = 3;\nconst COLS = 4;\nconst MONTH_ONLY_FORMAT: Intl.DateTimeFormatOptions = { month: 'short' };\n\nconst MonthCalendarTable = ({\n selectedDate,\n focusedDate,\n min,\n max,\n viewYear,\n placeholder,\n onSelect,\n}: MonthCalendarTableProps) => {\n const { locale } = useIntl();\n\n const getLink = (month: number) => {\n return (\n <TableLink\n item={month}\n type=\"month\"\n title={formatDate(new Date(viewYear, month), locale, MONTH_ONLY_FORMAT)}\n active={isActive(month)}\n outOfRange={isDisabled(month)}\n disabled={false}\n today={viewYear === new Date().getFullYear() && month === new Date().getMonth()}\n autofocus={autofocusMonth === month}\n onClick={onSelect}\n />\n );\n };\n\n const isActive = (month: number) => {\n return !!(month === selectedDate?.getMonth() && viewYear === selectedDate?.getFullYear());\n };\n\n const isFocused = (month: number) => {\n return !!(month === focusedDate?.getMonth() && viewYear === focusedDate?.getFullYear());\n };\n\n const isThisMonth = (month: number) => {\n return viewYear === new Date().getFullYear() && month === new Date().getMonth();\n };\n\n const isDisabled = (month: number) => {\n const date = new Date(viewYear, month);\n return !!(\n (min && date < new Date(min.getFullYear(), min.getMonth())) ||\n (max && date > new Date(max.getFullYear(), max.getMonth()))\n );\n };\n\n const autofocusMonth = (() => {\n const months = Array.from({ length: ROWS * COLS }, (_, index) => index);\n return getFocusableTime({\n isActive: isFocused,\n isNow: isThisMonth,\n isDisabled,\n timeSpan: months,\n });\n })();\n\n return (\n <table className=\"table table-condensed table-bordered tw-date-lookup-calendar
|
|
1
|
+
{"version":3,"file":"MonthCalendarTable.mjs","sources":["../../../../src/Calendar/MonthCalendar/Table/MonthCalendarTable.tsx"],"sourcesContent":["import { formatDate } from '@transferwise/formatting';\nimport { useIntl } from 'react-intl';\n\nimport { getFocusableTime } from '../../GetFocusableTime/GetFocusableTime';\nimport TableLink from '../../TableLink';\n\ninterface MonthCalendarTableProps {\n selectedDate: Date | null;\n focusedDate?: Date | null;\n min: Date | null;\n max: Date | null;\n viewYear: number;\n placeholder?: string;\n onSelect: (date: number) => void;\n}\n\nconst ROWS = 3;\nconst COLS = 4;\nconst MONTH_ONLY_FORMAT: Intl.DateTimeFormatOptions = { month: 'short' };\n\nconst MonthCalendarTable = ({\n selectedDate,\n focusedDate,\n min,\n max,\n viewYear,\n placeholder,\n onSelect,\n}: MonthCalendarTableProps) => {\n const { locale } = useIntl();\n\n const getLink = (month: number) => {\n return (\n <TableLink\n item={month}\n type=\"month\"\n title={formatDate(new Date(viewYear, month), locale, MONTH_ONLY_FORMAT)}\n active={isActive(month)}\n outOfRange={isDisabled(month)}\n disabled={false}\n today={viewYear === new Date().getFullYear() && month === new Date().getMonth()}\n autofocus={autofocusMonth === month}\n onClick={onSelect}\n />\n );\n };\n\n const isActive = (month: number) => {\n return !!(month === selectedDate?.getMonth() && viewYear === selectedDate?.getFullYear());\n };\n\n const isFocused = (month: number) => {\n return !!(month === focusedDate?.getMonth() && viewYear === focusedDate?.getFullYear());\n };\n\n const isThisMonth = (month: number) => {\n return viewYear === new Date().getFullYear() && month === new Date().getMonth();\n };\n\n const isDisabled = (month: number) => {\n const date = new Date(viewYear, month);\n return !!(\n (min && date < new Date(min.getFullYear(), min.getMonth())) ||\n (max && date > new Date(max.getFullYear(), max.getMonth()))\n );\n };\n\n const autofocusMonth = (() => {\n const months = Array.from({ length: ROWS * COLS }, (_, index) => index);\n return getFocusableTime({\n isActive: isFocused,\n isNow: isThisMonth,\n isDisabled,\n timeSpan: months,\n });\n })();\n\n return (\n <table className=\"table table-condensed table-bordered tw-date-lookup-calendar wds-text-body-default-bold m-b-0\">\n <thead className=\"sr-only\">\n <tr>\n <th colSpan={COLS}>{placeholder}</th>\n </tr>\n </thead>\n <tbody>\n {Array.from({ length: ROWS }, (_, rowIndex) => (\n <tr key={rowIndex}>\n {Array.from({ length: COLS }, (_, colIndex) => (\n <td key={colIndex}>{getLink(rowIndex * COLS + colIndex)}</td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n );\n};\n\nexport default MonthCalendarTable;\n"],"names":["ROWS","COLS","MONTH_ONLY_FORMAT","month","MonthCalendarTable","selectedDate","focusedDate","min","max","viewYear","placeholder","onSelect","locale","useIntl","getLink","_jsx","TableLink","item","type","title","formatDate","Date","active","isActive","outOfRange","isDisabled","disabled","today","getFullYear","getMonth","autofocus","autofocusMonth","onClick","isFocused","isThisMonth","date","months","Array","from","length","_","index","getFocusableTime","isNow","timeSpan","_jsxs","className","children","colSpan","rowIndex","colIndex"],"mappings":"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"}
|
|
@@ -73,7 +73,7 @@ const TableLink = ({
|
|
|
73
73
|
"aria-disabled": isUnavailable || undefined,
|
|
74
74
|
"aria-label": calculateAriaLabel(),
|
|
75
75
|
"aria-pressed": active,
|
|
76
|
-
className: clsx.clsx(`wds-Calendar__option--${type}`, `tw-date-lookup-${type}-option
|
|
76
|
+
className: clsx.clsx(`wds-Calendar__option--${type}`, `tw-date-lookup-${type}-option wds-text-body-default-bold`, {
|
|
77
77
|
active: !!active
|
|
78
78
|
}, {
|
|
79
79
|
today: !!today
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableLink.js","sources":["../../../src/Calendar/TableLink/TableLink.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { useEffect, useRef } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport messages from '../Calendar.messages';\nimport SentimentSurface from '../../SentimentSurface';\n\ninterface TableLinkProps {\n item: number;\n type: 'day' | 'month' | 'year';\n title?: string;\n longTitle?: string;\n active: boolean;\n outOfRange: boolean;\n disabled: boolean;\n today: boolean;\n autofocus?: boolean;\n disabledReasonId?: string;\n announceReasonOnFocus?: boolean;\n onClick: (item: number) => void;\n onFocus?: (item: number) => void;\n}\n\nconst TableLink = ({\n item,\n type,\n title,\n longTitle,\n active,\n outOfRange,\n disabled,\n today,\n autofocus,\n disabledReasonId,\n announceReasonOnFocus,\n onClick,\n onFocus,\n}: TableLinkProps) => {\n const buttonRef = useRef<HTMLButtonElement>(null);\n // Distinguishes keyboard-driven .focus() (arrow keys) from screen-reader-initiated focus (VoiceOver cursor).\n // Without this, the onFocus callback would re-trigger state updates that conflict with the already-committed focusedDate.\n const isProgrammaticFocus = useRef(false);\n const isMouseDown = useRef(false);\n const intl = useIntl();\n\n useEffect(() => {\n if (autofocus) {\n setTimeout(() => {\n isProgrammaticFocus.current = true;\n buttonRef.current?.focus();\n isProgrammaticFocus.current = false;\n }, 0);\n }\n }, [autofocus]);\n\n const isUnavailable = outOfRange || disabled;\n\n const onCalendarClick = (event: React.MouseEvent) => {\n event.preventDefault();\n onClick(item);\n };\n\n const onCalendarMouseDown = () => {\n isMouseDown.current = true;\n };\n\n const onCalendarFocus = () => {\n if (!isProgrammaticFocus.current && !isMouseDown.current) {\n onFocus?.(item);\n }\n isMouseDown.current = false;\n };\n\n const calculateAriaLabel = () => {\n let label = longTitle || title || '';\n if (active) {\n label += `, ${intl.formatMessage(messages.selected)} ${intl.formatMessage(messages[type])}`;\n }\n if (isUnavailable) {\n label += `, ${intl.formatMessage(messages.notAvailable)}`;\n }\n return label;\n };\n\n return (\n <SentimentSurface\n // @ts-expect-error - Generic forwardRef limitation in SentimentSurface\n ref={buttonRef}\n as=\"button\"\n data-calendar-cell\n aria-describedby={\n isUnavailable || (autofocus && announceReasonOnFocus) ? disabledReasonId : undefined\n }\n aria-disabled={isUnavailable || undefined}\n aria-label={calculateAriaLabel()}\n aria-pressed={active}\n className={clsx(\n `wds-Calendar__option--${type}`,\n `tw-date-lookup-${type}-option
|
|
1
|
+
{"version":3,"file":"TableLink.js","sources":["../../../src/Calendar/TableLink/TableLink.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { useEffect, useRef } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport messages from '../Calendar.messages';\nimport SentimentSurface from '../../SentimentSurface';\n\ninterface TableLinkProps {\n item: number;\n type: 'day' | 'month' | 'year';\n title?: string;\n longTitle?: string;\n active: boolean;\n outOfRange: boolean;\n disabled: boolean;\n today: boolean;\n autofocus?: boolean;\n disabledReasonId?: string;\n announceReasonOnFocus?: boolean;\n onClick: (item: number) => void;\n onFocus?: (item: number) => void;\n}\n\nconst TableLink = ({\n item,\n type,\n title,\n longTitle,\n active,\n outOfRange,\n disabled,\n today,\n autofocus,\n disabledReasonId,\n announceReasonOnFocus,\n onClick,\n onFocus,\n}: TableLinkProps) => {\n const buttonRef = useRef<HTMLButtonElement>(null);\n // Distinguishes keyboard-driven .focus() (arrow keys) from screen-reader-initiated focus (VoiceOver cursor).\n // Without this, the onFocus callback would re-trigger state updates that conflict with the already-committed focusedDate.\n const isProgrammaticFocus = useRef(false);\n const isMouseDown = useRef(false);\n const intl = useIntl();\n\n useEffect(() => {\n if (autofocus) {\n setTimeout(() => {\n isProgrammaticFocus.current = true;\n buttonRef.current?.focus();\n isProgrammaticFocus.current = false;\n }, 0);\n }\n }, [autofocus]);\n\n const isUnavailable = outOfRange || disabled;\n\n const onCalendarClick = (event: React.MouseEvent) => {\n event.preventDefault();\n onClick(item);\n };\n\n const onCalendarMouseDown = () => {\n isMouseDown.current = true;\n };\n\n const onCalendarFocus = () => {\n if (!isProgrammaticFocus.current && !isMouseDown.current) {\n onFocus?.(item);\n }\n isMouseDown.current = false;\n };\n\n const calculateAriaLabel = () => {\n let label = longTitle || title || '';\n if (active) {\n label += `, ${intl.formatMessage(messages.selected)} ${intl.formatMessage(messages[type])}`;\n }\n if (isUnavailable) {\n label += `, ${intl.formatMessage(messages.notAvailable)}`;\n }\n return label;\n };\n\n return (\n <SentimentSurface\n // @ts-expect-error - Generic forwardRef limitation in SentimentSurface\n ref={buttonRef}\n as=\"button\"\n data-calendar-cell\n aria-describedby={\n isUnavailable || (autofocus && announceReasonOnFocus) ? disabledReasonId : undefined\n }\n aria-disabled={isUnavailable || undefined}\n aria-label={calculateAriaLabel()}\n aria-pressed={active}\n className={clsx(\n `wds-Calendar__option--${type}`,\n `tw-date-lookup-${type}-option wds-text-body-default-bold`,\n { active: !!active },\n { today: !!today },\n { disabled: !!isUnavailable },\n )}\n hasBaseStyles={false}\n sentiment={isUnavailable ? 'negative' : 'neutral'}\n tabIndex={autofocus ? 0 : -1}\n type=\"button\"\n onClick={onCalendarClick}\n onFocus={onCalendarFocus}\n onMouseDown={onCalendarMouseDown}\n >\n {title || item}\n </SentimentSurface>\n );\n};\n\nexport default TableLink;\n"],"names":["TableLink","item","type","title","longTitle","active","outOfRange","disabled","today","autofocus","disabledReasonId","announceReasonOnFocus","onClick","onFocus","buttonRef","useRef","isProgrammaticFocus","isMouseDown","intl","useIntl","useEffect","setTimeout","current","focus","isUnavailable","onCalendarClick","event","preventDefault","onCalendarMouseDown","onCalendarFocus","calculateAriaLabel","label","formatMessage","messages","selected","notAvailable","_jsx","SentimentSurface","ref","as","undefined","className","clsx","hasBaseStyles","sentiment","tabIndex","onMouseDown","children"],"mappings":"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"}
|
|
@@ -69,7 +69,7 @@ const TableLink = ({
|
|
|
69
69
|
"aria-disabled": isUnavailable || undefined,
|
|
70
70
|
"aria-label": calculateAriaLabel(),
|
|
71
71
|
"aria-pressed": active,
|
|
72
|
-
className: clsx(`wds-Calendar__option--${type}`, `tw-date-lookup-${type}-option
|
|
72
|
+
className: clsx(`wds-Calendar__option--${type}`, `tw-date-lookup-${type}-option wds-text-body-default-bold`, {
|
|
73
73
|
active: !!active
|
|
74
74
|
}, {
|
|
75
75
|
today: !!today
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableLink.mjs","sources":["../../../src/Calendar/TableLink/TableLink.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { useEffect, useRef } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport messages from '../Calendar.messages';\nimport SentimentSurface from '../../SentimentSurface';\n\ninterface TableLinkProps {\n item: number;\n type: 'day' | 'month' | 'year';\n title?: string;\n longTitle?: string;\n active: boolean;\n outOfRange: boolean;\n disabled: boolean;\n today: boolean;\n autofocus?: boolean;\n disabledReasonId?: string;\n announceReasonOnFocus?: boolean;\n onClick: (item: number) => void;\n onFocus?: (item: number) => void;\n}\n\nconst TableLink = ({\n item,\n type,\n title,\n longTitle,\n active,\n outOfRange,\n disabled,\n today,\n autofocus,\n disabledReasonId,\n announceReasonOnFocus,\n onClick,\n onFocus,\n}: TableLinkProps) => {\n const buttonRef = useRef<HTMLButtonElement>(null);\n // Distinguishes keyboard-driven .focus() (arrow keys) from screen-reader-initiated focus (VoiceOver cursor).\n // Without this, the onFocus callback would re-trigger state updates that conflict with the already-committed focusedDate.\n const isProgrammaticFocus = useRef(false);\n const isMouseDown = useRef(false);\n const intl = useIntl();\n\n useEffect(() => {\n if (autofocus) {\n setTimeout(() => {\n isProgrammaticFocus.current = true;\n buttonRef.current?.focus();\n isProgrammaticFocus.current = false;\n }, 0);\n }\n }, [autofocus]);\n\n const isUnavailable = outOfRange || disabled;\n\n const onCalendarClick = (event: React.MouseEvent) => {\n event.preventDefault();\n onClick(item);\n };\n\n const onCalendarMouseDown = () => {\n isMouseDown.current = true;\n };\n\n const onCalendarFocus = () => {\n if (!isProgrammaticFocus.current && !isMouseDown.current) {\n onFocus?.(item);\n }\n isMouseDown.current = false;\n };\n\n const calculateAriaLabel = () => {\n let label = longTitle || title || '';\n if (active) {\n label += `, ${intl.formatMessage(messages.selected)} ${intl.formatMessage(messages[type])}`;\n }\n if (isUnavailable) {\n label += `, ${intl.formatMessage(messages.notAvailable)}`;\n }\n return label;\n };\n\n return (\n <SentimentSurface\n // @ts-expect-error - Generic forwardRef limitation in SentimentSurface\n ref={buttonRef}\n as=\"button\"\n data-calendar-cell\n aria-describedby={\n isUnavailable || (autofocus && announceReasonOnFocus) ? disabledReasonId : undefined\n }\n aria-disabled={isUnavailable || undefined}\n aria-label={calculateAriaLabel()}\n aria-pressed={active}\n className={clsx(\n `wds-Calendar__option--${type}`,\n `tw-date-lookup-${type}-option
|
|
1
|
+
{"version":3,"file":"TableLink.mjs","sources":["../../../src/Calendar/TableLink/TableLink.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { useEffect, useRef } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport messages from '../Calendar.messages';\nimport SentimentSurface from '../../SentimentSurface';\n\ninterface TableLinkProps {\n item: number;\n type: 'day' | 'month' | 'year';\n title?: string;\n longTitle?: string;\n active: boolean;\n outOfRange: boolean;\n disabled: boolean;\n today: boolean;\n autofocus?: boolean;\n disabledReasonId?: string;\n announceReasonOnFocus?: boolean;\n onClick: (item: number) => void;\n onFocus?: (item: number) => void;\n}\n\nconst TableLink = ({\n item,\n type,\n title,\n longTitle,\n active,\n outOfRange,\n disabled,\n today,\n autofocus,\n disabledReasonId,\n announceReasonOnFocus,\n onClick,\n onFocus,\n}: TableLinkProps) => {\n const buttonRef = useRef<HTMLButtonElement>(null);\n // Distinguishes keyboard-driven .focus() (arrow keys) from screen-reader-initiated focus (VoiceOver cursor).\n // Without this, the onFocus callback would re-trigger state updates that conflict with the already-committed focusedDate.\n const isProgrammaticFocus = useRef(false);\n const isMouseDown = useRef(false);\n const intl = useIntl();\n\n useEffect(() => {\n if (autofocus) {\n setTimeout(() => {\n isProgrammaticFocus.current = true;\n buttonRef.current?.focus();\n isProgrammaticFocus.current = false;\n }, 0);\n }\n }, [autofocus]);\n\n const isUnavailable = outOfRange || disabled;\n\n const onCalendarClick = (event: React.MouseEvent) => {\n event.preventDefault();\n onClick(item);\n };\n\n const onCalendarMouseDown = () => {\n isMouseDown.current = true;\n };\n\n const onCalendarFocus = () => {\n if (!isProgrammaticFocus.current && !isMouseDown.current) {\n onFocus?.(item);\n }\n isMouseDown.current = false;\n };\n\n const calculateAriaLabel = () => {\n let label = longTitle || title || '';\n if (active) {\n label += `, ${intl.formatMessage(messages.selected)} ${intl.formatMessage(messages[type])}`;\n }\n if (isUnavailable) {\n label += `, ${intl.formatMessage(messages.notAvailable)}`;\n }\n return label;\n };\n\n return (\n <SentimentSurface\n // @ts-expect-error - Generic forwardRef limitation in SentimentSurface\n ref={buttonRef}\n as=\"button\"\n data-calendar-cell\n aria-describedby={\n isUnavailable || (autofocus && announceReasonOnFocus) ? disabledReasonId : undefined\n }\n aria-disabled={isUnavailable || undefined}\n aria-label={calculateAriaLabel()}\n aria-pressed={active}\n className={clsx(\n `wds-Calendar__option--${type}`,\n `tw-date-lookup-${type}-option wds-text-body-default-bold`,\n { active: !!active },\n { today: !!today },\n { disabled: !!isUnavailable },\n )}\n hasBaseStyles={false}\n sentiment={isUnavailable ? 'negative' : 'neutral'}\n tabIndex={autofocus ? 0 : -1}\n type=\"button\"\n onClick={onCalendarClick}\n onFocus={onCalendarFocus}\n onMouseDown={onCalendarMouseDown}\n >\n {title || item}\n </SentimentSurface>\n );\n};\n\nexport default TableLink;\n"],"names":["TableLink","item","type","title","longTitle","active","outOfRange","disabled","today","autofocus","disabledReasonId","announceReasonOnFocus","onClick","onFocus","buttonRef","useRef","isProgrammaticFocus","isMouseDown","intl","useIntl","useEffect","setTimeout","current","focus","isUnavailable","onCalendarClick","event","preventDefault","onCalendarMouseDown","onCalendarFocus","calculateAriaLabel","label","formatMessage","messages","selected","notAvailable","_jsx","SentimentSurface","ref","as","undefined","className","clsx","hasBaseStyles","sentiment","tabIndex","onMouseDown","children"],"mappings":"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"}
|
|
@@ -232,7 +232,7 @@ const AmountInput = ({
|
|
|
232
232
|
className: "wds-amount-input-container",
|
|
233
233
|
dir: "ltr",
|
|
234
234
|
children: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
235
|
-
className: clsx.clsx('wds-amount-input-input-container'
|
|
235
|
+
className: clsx.clsx('wds-amount-input-input-container'),
|
|
236
236
|
style: style,
|
|
237
237
|
children: [/*#__PURE__*/jsxRuntime.jsx("input", {
|
|
238
238
|
ref: ref,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AmountInput.js","sources":["../../../src/ExpressiveMoneyInput/AmountInput/AmountInput.tsx"],"sourcesContent":["import { formatAmount } from '@transferwise/formatting';\nimport { clsx } from 'clsx';\nimport { AnimatePresence } from 'motion/react';\nimport { type ChangeEvent, type KeyboardEvent, useEffect, useMemo, useRef, useState } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport type { ExpressiveMoneyInputProps } from '../ExpressiveMoneyInput';\nimport { AnimatedNumber } from '../AnimatedNumber/AnimatedNumber';\nimport { useFocus } from '../hooks/useFocus';\nimport { useInputStyle } from '../hooks/useInputStyle';\nimport {\n getDecimalCount,\n getDecimalSeparator,\n getEnteredDecimalsCount,\n getFormattedString,\n getGroupSeparator,\n getUnformattedNumber,\n isAllowedInputKey,\n isInputPossiblyOverflowing,\n} from './utils';\n\ntype AmountInputProps = {\n id: string;\n describedById?: string;\n amount?: number | null;\n currency: string;\n autoFocus?: boolean;\n onChange: (amount: number | null) => void;\n onFocusChange?: (focused: boolean) => void;\n} & Pick<ExpressiveMoneyInputProps, 'loading'>;\n\nexport const AmountInput = ({\n id,\n describedById,\n amount,\n currency,\n autoFocus,\n onChange,\n onFocusChange,\n loading,\n}: AmountInputProps) => {\n const intl = useIntl();\n const { focus, setFocus, visualFocus, setVisualFocus } = useFocus();\n\n const [value, setValue] = useState<string>(() =>\n amount\n ? getFormattedString({\n value: amount,\n currency,\n locale: intl.locale,\n })\n : '',\n );\n const prevAmountRef = useRef<string | number | null | undefined>(amount);\n const numericValue = useMemo(() => {\n return getUnformattedNumber({\n value,\n currency,\n locale: intl.locale,\n });\n }, [value, currency, intl.locale]);\n\n const valueWithFullDecimals = useMemo(() => {\n return getFormattedString({\n value: numericValue ?? 0,\n currency,\n locale: intl.locale,\n alwaysShowDecimals: true,\n });\n }, [numericValue, currency, intl.locale]);\n\n const ref = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (autoFocus) {\n ref.current?.focus();\n }\n }, []);\n\n const placeholder = getPlaceholder(currency, intl.locale);\n const groupSeparator = getGroupSeparator(currency, intl.locale);\n const decimalSeparator = getDecimalSeparator(currency, intl.locale);\n const maxDecimalCount = getDecimalCount(currency, intl.locale);\n\n const decimalPart = getDecimalPart(value, decimalSeparator);\n const decimalMode = decimalSeparator && value.includes(decimalSeparator);\n\n useEffect(() => {\n if (prevAmountRef.current !== amount) {\n prevAmountRef.current = amount;\n\n // Only update the displayed value if not focused (preserve user input when focused)\n if (!focus) {\n // eslint-disable-next-line react-hooks/set-state-in-effect -- Syncing external prop to internal state when unfocused\n setValue(\n amount\n ? getFormattedString({\n value: amount,\n currency,\n locale: intl.locale,\n })\n : '',\n );\n }\n }\n }, [amount, focus, currency, intl.locale]);\n\n useEffect(() => {\n onFocusChange?.(visualFocus);\n }, [onFocusChange, visualFocus]);\n\n const shouldReformatAfterUserInput = (newValue: string) => {\n // don't reformat if formatting would wipe out user's input\n if (reformatValue(newValue) === '') {\n return false;\n }\n\n const endsWithDecimalSeparator = decimalSeparator && newValue.endsWith(decimalSeparator);\n const endsWithGroupSeparator = groupSeparator && newValue.endsWith(groupSeparator);\n\n // if the user has entered a seperator to the end, formatting would delete it\n if (endsWithDecimalSeparator || endsWithGroupSeparator) {\n return false;\n }\n\n const containsDecimalSeparator = decimalSeparator && newValue.includes(decimalSeparator);\n\n if (containsDecimalSeparator) {\n const enteredDecimalsCount = getEnteredDecimalsCount(newValue, decimalSeparator);\n // don't reformat until user has entered all the allowed decimals\n // for example, we don't want 1.1 to be reformatted to 1.10 immediately\n if (enteredDecimalsCount < maxDecimalCount) {\n return false;\n }\n }\n\n return true;\n };\n\n const reformatValue = (newValue: string) => {\n const unformattedValue = getUnformattedNumber({\n value: newValue,\n currency,\n locale: intl.locale,\n });\n const formattedValue = unformattedValue\n ? getFormattedString({\n value: unformattedValue,\n currency,\n locale: intl.locale,\n })\n : '';\n return formattedValue;\n };\n\n const handleChange = (newValue: string) => {\n const oldCursorPosition = ref.current?.selectionStart ?? 0;\n\n const newFormattedString = shouldReformatAfterUserInput(newValue)\n ? reformatValue(newValue)\n : newValue;\n setValue(newFormattedString);\n\n const newNumber = getUnformattedNumber({\n value: newFormattedString,\n currency,\n locale: intl.locale,\n });\n\n if (newNumber !== numericValue) {\n if (numericValue || newNumber) {\n onChange(newNumber);\n }\n }\n\n const newCursorPosition = oldCursorPosition + (newFormattedString.length - newValue.length);\n requestAnimationFrame(() => {\n ref?.current?.setSelectionRange(newCursorPosition, newCursorPosition);\n });\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n\n const clipboardData = e.clipboardData?.getData('text/plain');\n if (!clipboardData) {\n return;\n }\n\n // need to sanitise the pasted value otherwise other validation logic will ignore the input entirely\n const sanitisedValue = reformatValue(clipboardData);\n\n handleChange(sanitisedValue);\n };\n\n const handleBlur = () => {\n setFocus(false);\n setValue(reformatValue(value));\n };\n\n const handleBackspace = (e: KeyboardEvent<HTMLInputElement>) => {\n const input = e.target as HTMLInputElement;\n // using the updated selection range after the backspace key has been processed, instead of the current selection range in state\n const { value: currentValue, selectionStart, selectionEnd } = input;\n\n if (selectionStart === selectionEnd && selectionStart && selectionStart > 0) {\n const charBeforeCursor = currentValue[selectionStart - 1];\n\n // if the user deletes a thousands separator, remove the digit before it as well\n if (charBeforeCursor === groupSeparator) {\n e.preventDefault();\n const beforeCursor = currentValue.slice(0, selectionStart - 2);\n const afterCursor = currentValue.slice(selectionStart);\n const newValue = `${beforeCursor}${afterCursor}`;\n input.setSelectionRange(beforeCursor.length, beforeCursor.length);\n handleChange(newValue);\n }\n }\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n setFocus(true);\n if (!isAllowedInputKey(e)) {\n e.preventDefault();\n }\n\n if (e.key === 'Backspace') {\n handleBackspace(e);\n }\n };\n\n const isAllowedInput = (e: ChangeEvent<HTMLInputElement>) => {\n const hasMultipleDecimalSeparators =\n decimalSeparator && e.target.value.split(decimalSeparator).length > 2;\n if (hasMultipleDecimalSeparators) {\n return false;\n }\n\n const newNumericValue = getUnformattedNumber({\n value: e.target.value,\n currency,\n locale: intl.locale,\n });\n const maxLength = Number.MAX_SAFE_INTEGER.toString().length;\n if (String(newNumericValue).length > maxLength) {\n return false;\n }\n\n return true;\n };\n\n const addonContent = useMemo((): string | null | undefined => {\n // because we're using a separate \"addon\" element for the placeholder decimals, there is a possibility that the input itself will become scrollable\n // and the decimals will appear on top of the input. Safest thing to do is to just hide the addon if there is not enough room\n // eslint-disable-next-line react-hooks/refs -- Reading layout dimensions for overflow detection\n if (isInputPossiblyOverflowing({ ref, value })) {\n return null;\n }\n if (!decimalSeparator || !value) {\n return null;\n }\n\n // if the user has typed a decimal separator, show the full decimal part as a placeholder\n // this returns a string even if there is no content, typing should replace the placeholder immediately without animation\n // otherwise there is an ugly animation when going from 1.23 to 1.2 due to AnimatePresence\n if (focus && decimalMode) {\n // reuse getDecimalPart\n const fullDecimalPart = getDecimalPart(valueWithFullDecimals, decimalSeparator);\n // show only the characters that are not already displayed by the input\n return fullDecimalPart?.slice(decimalPart?.length);\n }\n\n // in unfocused state, always show the full decimal part unless the user has already entered decimals\n if (!focus && !decimalMode) {\n const [_, decimalPlaceholder] = placeholder.split(decimalSeparator);\n return decimalSeparator + decimalPlaceholder;\n }\n\n return null;\n }, [\n decimalMode,\n decimalPart?.length,\n decimalSeparator,\n focus,\n placeholder,\n value,\n valueWithFullDecimals,\n ]);\n\n const style = useInputStyle({\n // whenever decimals are shown, we need to account for the full decimal part for the font size calculation\n value: addonContent ? valueWithFullDecimals : value,\n focus: visualFocus,\n inputElement: ref,\n loading,\n });\n\n return (\n <div className=\"wds-amount-input-container\" dir=\"ltr\">\n <div\n className={clsx('wds-amount-input-input-container', 'np-text-display-large--forced')}\n style={style}\n >\n <input\n ref={ref}\n dir=\"auto\"\n className=\"wds-amount-input-input\"\n id={id}\n autoComplete=\"off\"\n inputMode=\"decimal\"\n value={value}\n type=\"text\"\n placeholder={placeholder}\n aria-describedby={describedById}\n /* without this, the input tries to keep an aspect ratio and doesn't respect CSS width rules */\n size={1}\n onChange={(e) => {\n if (isAllowedInput(e)) {\n handleChange(e.target.value);\n }\n }}\n onBlurCapture={() => handleBlur()}\n onPaste={(e) => handlePaste(e)}\n onFocus={() => {\n setFocus(true);\n }}\n onBlur={() => {\n setTimeout(() => setVisualFocus(false), 30);\n }}\n onKeyDown={(e) => handleKeyDown(e)}\n />\n <AnimatePresence initial={false}>\n {addonContent !== null && (\n <AnimatedNumber\n className={clsx(\n 'wds-amount-input-placeholder',\n visualFocus && 'wds-amount-input-placeholder-focus',\n )}\n onClick={() => ref.current?.focus()}\n >\n {addonContent}\n </AnimatedNumber>\n )}\n </AnimatePresence>\n </div>\n </div>\n );\n};\n\nconst getPlaceholder = (currency: string, locale: string) => {\n return formatAmount(0, currency, locale, { alwaysShowDecimals: true });\n};\n\nconst getDecimalPart = (value: string, decimalSeparator: string | null) => {\n if (!value || !decimalSeparator) {\n return undefined;\n }\n\n const [_, decimalPart] = value.split(decimalSeparator);\n return decimalPart ?? undefined;\n};\n"],"names":["AmountInput","id","describedById","amount","currency","autoFocus","onChange","onFocusChange","loading","intl","useIntl","focus","setFocus","visualFocus","setVisualFocus","useFocus","value","setValue","useState","getFormattedString","locale","prevAmountRef","useRef","numericValue","useMemo","getUnformattedNumber","valueWithFullDecimals","alwaysShowDecimals","ref","useEffect","current","placeholder","getPlaceholder","groupSeparator","getGroupSeparator","decimalSeparator","getDecimalSeparator","maxDecimalCount","getDecimalCount","decimalPart","getDecimalPart","decimalMode","includes","shouldReformatAfterUserInput","newValue","reformatValue","endsWithDecimalSeparator","endsWith","endsWithGroupSeparator","containsDecimalSeparator","enteredDecimalsCount","getEnteredDecimalsCount","unformattedValue","formattedValue","handleChange","oldCursorPosition","selectionStart","newFormattedString","newNumber","newCursorPosition","length","requestAnimationFrame","setSelectionRange","handlePaste","e","preventDefault","clipboardData","getData","sanitisedValue","handleBlur","handleBackspace","input","target","currentValue","selectionEnd","charBeforeCursor","beforeCursor","slice","afterCursor","handleKeyDown","isAllowedInputKey","key","isAllowedInput","hasMultipleDecimalSeparators","split","newNumericValue","maxLength","Number","MAX_SAFE_INTEGER","toString","String","addonContent","isInputPossiblyOverflowing","fullDecimalPart","_","decimalPlaceholder","style","useInputStyle","inputElement","_jsx","className","dir","children","_jsxs","clsx","autoComplete","inputMode","type","size","onBlurCapture","onPaste","onFocus","onBlur","setTimeout","onKeyDown","AnimatePresence","initial","AnimatedNumber","onClick","formatAmount","undefined"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AmountInput.js","sources":["../../../src/ExpressiveMoneyInput/AmountInput/AmountInput.tsx"],"sourcesContent":["import { formatAmount } from '@transferwise/formatting';\nimport { clsx } from 'clsx';\nimport { AnimatePresence } from 'motion/react';\nimport { type ChangeEvent, type KeyboardEvent, useEffect, useMemo, useRef, useState } from 'react';\nimport { useIntl } from 'react-intl';\n\nimport type { ExpressiveMoneyInputProps } from '../ExpressiveMoneyInput';\nimport { AnimatedNumber } from '../AnimatedNumber/AnimatedNumber';\nimport { useFocus } from '../hooks/useFocus';\nimport { useInputStyle } from '../hooks/useInputStyle';\nimport {\n getDecimalCount,\n getDecimalSeparator,\n getEnteredDecimalsCount,\n getFormattedString,\n getGroupSeparator,\n getUnformattedNumber,\n isAllowedInputKey,\n isInputPossiblyOverflowing,\n} from './utils';\n\ntype AmountInputProps = {\n id: string;\n describedById?: string;\n amount?: number | null;\n currency: string;\n autoFocus?: boolean;\n onChange: (amount: number | null) => void;\n onFocusChange?: (focused: boolean) => void;\n} & Pick<ExpressiveMoneyInputProps, 'loading'>;\n\nexport const AmountInput = ({\n id,\n describedById,\n amount,\n currency,\n autoFocus,\n onChange,\n onFocusChange,\n loading,\n}: AmountInputProps) => {\n const intl = useIntl();\n const { focus, setFocus, visualFocus, setVisualFocus } = useFocus();\n\n const [value, setValue] = useState<string>(() =>\n amount\n ? getFormattedString({\n value: amount,\n currency,\n locale: intl.locale,\n })\n : '',\n );\n const prevAmountRef = useRef<string | number | null | undefined>(amount);\n const numericValue = useMemo(() => {\n return getUnformattedNumber({\n value,\n currency,\n locale: intl.locale,\n });\n }, [value, currency, intl.locale]);\n\n const valueWithFullDecimals = useMemo(() => {\n return getFormattedString({\n value: numericValue ?? 0,\n currency,\n locale: intl.locale,\n alwaysShowDecimals: true,\n });\n }, [numericValue, currency, intl.locale]);\n\n const ref = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (autoFocus) {\n ref.current?.focus();\n }\n }, []);\n\n const placeholder = getPlaceholder(currency, intl.locale);\n const groupSeparator = getGroupSeparator(currency, intl.locale);\n const decimalSeparator = getDecimalSeparator(currency, intl.locale);\n const maxDecimalCount = getDecimalCount(currency, intl.locale);\n\n const decimalPart = getDecimalPart(value, decimalSeparator);\n const decimalMode = decimalSeparator && value.includes(decimalSeparator);\n\n useEffect(() => {\n if (prevAmountRef.current !== amount) {\n prevAmountRef.current = amount;\n\n // Only update the displayed value if not focused (preserve user input when focused)\n if (!focus) {\n // eslint-disable-next-line react-hooks/set-state-in-effect -- Syncing external prop to internal state when unfocused\n setValue(\n amount\n ? getFormattedString({\n value: amount,\n currency,\n locale: intl.locale,\n })\n : '',\n );\n }\n }\n }, [amount, focus, currency, intl.locale]);\n\n useEffect(() => {\n onFocusChange?.(visualFocus);\n }, [onFocusChange, visualFocus]);\n\n const shouldReformatAfterUserInput = (newValue: string) => {\n // don't reformat if formatting would wipe out user's input\n if (reformatValue(newValue) === '') {\n return false;\n }\n\n const endsWithDecimalSeparator = decimalSeparator && newValue.endsWith(decimalSeparator);\n const endsWithGroupSeparator = groupSeparator && newValue.endsWith(groupSeparator);\n\n // if the user has entered a seperator to the end, formatting would delete it\n if (endsWithDecimalSeparator || endsWithGroupSeparator) {\n return false;\n }\n\n const containsDecimalSeparator = decimalSeparator && newValue.includes(decimalSeparator);\n\n if (containsDecimalSeparator) {\n const enteredDecimalsCount = getEnteredDecimalsCount(newValue, decimalSeparator);\n // don't reformat until user has entered all the allowed decimals\n // for example, we don't want 1.1 to be reformatted to 1.10 immediately\n if (enteredDecimalsCount < maxDecimalCount) {\n return false;\n }\n }\n\n return true;\n };\n\n const reformatValue = (newValue: string) => {\n const unformattedValue = getUnformattedNumber({\n value: newValue,\n currency,\n locale: intl.locale,\n });\n const formattedValue = unformattedValue\n ? getFormattedString({\n value: unformattedValue,\n currency,\n locale: intl.locale,\n })\n : '';\n return formattedValue;\n };\n\n const handleChange = (newValue: string) => {\n const oldCursorPosition = ref.current?.selectionStart ?? 0;\n\n const newFormattedString = shouldReformatAfterUserInput(newValue)\n ? reformatValue(newValue)\n : newValue;\n setValue(newFormattedString);\n\n const newNumber = getUnformattedNumber({\n value: newFormattedString,\n currency,\n locale: intl.locale,\n });\n\n if (newNumber !== numericValue) {\n if (numericValue || newNumber) {\n onChange(newNumber);\n }\n }\n\n const newCursorPosition = oldCursorPosition + (newFormattedString.length - newValue.length);\n requestAnimationFrame(() => {\n ref?.current?.setSelectionRange(newCursorPosition, newCursorPosition);\n });\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n\n const clipboardData = e.clipboardData?.getData('text/plain');\n if (!clipboardData) {\n return;\n }\n\n // need to sanitise the pasted value otherwise other validation logic will ignore the input entirely\n const sanitisedValue = reformatValue(clipboardData);\n\n handleChange(sanitisedValue);\n };\n\n const handleBlur = () => {\n setFocus(false);\n setValue(reformatValue(value));\n };\n\n const handleBackspace = (e: KeyboardEvent<HTMLInputElement>) => {\n const input = e.target as HTMLInputElement;\n // using the updated selection range after the backspace key has been processed, instead of the current selection range in state\n const { value: currentValue, selectionStart, selectionEnd } = input;\n\n if (selectionStart === selectionEnd && selectionStart && selectionStart > 0) {\n const charBeforeCursor = currentValue[selectionStart - 1];\n\n // if the user deletes a thousands separator, remove the digit before it as well\n if (charBeforeCursor === groupSeparator) {\n e.preventDefault();\n const beforeCursor = currentValue.slice(0, selectionStart - 2);\n const afterCursor = currentValue.slice(selectionStart);\n const newValue = `${beforeCursor}${afterCursor}`;\n input.setSelectionRange(beforeCursor.length, beforeCursor.length);\n handleChange(newValue);\n }\n }\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n setFocus(true);\n if (!isAllowedInputKey(e)) {\n e.preventDefault();\n }\n\n if (e.key === 'Backspace') {\n handleBackspace(e);\n }\n };\n\n const isAllowedInput = (e: ChangeEvent<HTMLInputElement>) => {\n const hasMultipleDecimalSeparators =\n decimalSeparator && e.target.value.split(decimalSeparator).length > 2;\n if (hasMultipleDecimalSeparators) {\n return false;\n }\n\n const newNumericValue = getUnformattedNumber({\n value: e.target.value,\n currency,\n locale: intl.locale,\n });\n const maxLength = Number.MAX_SAFE_INTEGER.toString().length;\n if (String(newNumericValue).length > maxLength) {\n return false;\n }\n\n return true;\n };\n\n const addonContent = useMemo((): string | null | undefined => {\n // because we're using a separate \"addon\" element for the placeholder decimals, there is a possibility that the input itself will become scrollable\n // and the decimals will appear on top of the input. Safest thing to do is to just hide the addon if there is not enough room\n // eslint-disable-next-line react-hooks/refs -- Reading layout dimensions for overflow detection\n if (isInputPossiblyOverflowing({ ref, value })) {\n return null;\n }\n if (!decimalSeparator || !value) {\n return null;\n }\n\n // if the user has typed a decimal separator, show the full decimal part as a placeholder\n // this returns a string even if there is no content, typing should replace the placeholder immediately without animation\n // otherwise there is an ugly animation when going from 1.23 to 1.2 due to AnimatePresence\n if (focus && decimalMode) {\n // reuse getDecimalPart\n const fullDecimalPart = getDecimalPart(valueWithFullDecimals, decimalSeparator);\n // show only the characters that are not already displayed by the input\n return fullDecimalPart?.slice(decimalPart?.length);\n }\n\n // in unfocused state, always show the full decimal part unless the user has already entered decimals\n if (!focus && !decimalMode) {\n const [_, decimalPlaceholder] = placeholder.split(decimalSeparator);\n return decimalSeparator + decimalPlaceholder;\n }\n\n return null;\n }, [\n decimalMode,\n decimalPart?.length,\n decimalSeparator,\n focus,\n placeholder,\n value,\n valueWithFullDecimals,\n ]);\n\n const style = useInputStyle({\n // whenever decimals are shown, we need to account for the full decimal part for the font size calculation\n value: addonContent ? valueWithFullDecimals : value,\n focus: visualFocus,\n inputElement: ref,\n loading,\n });\n\n return (\n <div className=\"wds-amount-input-container\" dir=\"ltr\">\n <div className={clsx('wds-amount-input-input-container')} style={style}>\n <input\n ref={ref}\n dir=\"auto\"\n className=\"wds-amount-input-input\"\n id={id}\n autoComplete=\"off\"\n inputMode=\"decimal\"\n value={value}\n type=\"text\"\n placeholder={placeholder}\n aria-describedby={describedById}\n /* without this, the input tries to keep an aspect ratio and doesn't respect CSS width rules */\n size={1}\n onChange={(e) => {\n if (isAllowedInput(e)) {\n handleChange(e.target.value);\n }\n }}\n onBlurCapture={() => handleBlur()}\n onPaste={(e) => handlePaste(e)}\n onFocus={() => {\n setFocus(true);\n }}\n onBlur={() => {\n setTimeout(() => setVisualFocus(false), 30);\n }}\n onKeyDown={(e) => handleKeyDown(e)}\n />\n <AnimatePresence initial={false}>\n {addonContent !== null && (\n <AnimatedNumber\n className={clsx(\n 'wds-amount-input-placeholder',\n visualFocus && 'wds-amount-input-placeholder-focus',\n )}\n onClick={() => ref.current?.focus()}\n >\n {addonContent}\n </AnimatedNumber>\n )}\n </AnimatePresence>\n </div>\n </div>\n );\n};\n\nconst getPlaceholder = (currency: string, locale: string) => {\n return formatAmount(0, currency, locale, { alwaysShowDecimals: true });\n};\n\nconst getDecimalPart = (value: string, decimalSeparator: string | null) => {\n if (!value || !decimalSeparator) {\n return undefined;\n }\n\n const [_, decimalPart] = value.split(decimalSeparator);\n return decimalPart ?? undefined;\n};\n"],"names":["AmountInput","id","describedById","amount","currency","autoFocus","onChange","onFocusChange","loading","intl","useIntl","focus","setFocus","visualFocus","setVisualFocus","useFocus","value","setValue","useState","getFormattedString","locale","prevAmountRef","useRef","numericValue","useMemo","getUnformattedNumber","valueWithFullDecimals","alwaysShowDecimals","ref","useEffect","current","placeholder","getPlaceholder","groupSeparator","getGroupSeparator","decimalSeparator","getDecimalSeparator","maxDecimalCount","getDecimalCount","decimalPart","getDecimalPart","decimalMode","includes","shouldReformatAfterUserInput","newValue","reformatValue","endsWithDecimalSeparator","endsWith","endsWithGroupSeparator","containsDecimalSeparator","enteredDecimalsCount","getEnteredDecimalsCount","unformattedValue","formattedValue","handleChange","oldCursorPosition","selectionStart","newFormattedString","newNumber","newCursorPosition","length","requestAnimationFrame","setSelectionRange","handlePaste","e","preventDefault","clipboardData","getData","sanitisedValue","handleBlur","handleBackspace","input","target","currentValue","selectionEnd","charBeforeCursor","beforeCursor","slice","afterCursor","handleKeyDown","isAllowedInputKey","key","isAllowedInput","hasMultipleDecimalSeparators","split","newNumericValue","maxLength","Number","MAX_SAFE_INTEGER","toString","String","addonContent","isInputPossiblyOverflowing","fullDecimalPart","_","decimalPlaceholder","style","useInputStyle","inputElement","_jsx","className","dir","children","_jsxs","clsx","autoComplete","inputMode","type","size","onBlurCapture","onPaste","onFocus","onBlur","setTimeout","onKeyDown","AnimatePresence","initial","AnimatedNumber","onClick","formatAmount","undefined"],"mappings":";;;;;;;;;;;;;AA+BO,MAAMA,WAAW,GAAGA,CAAC;EAC1BC,EAAE;EACFC,aAAa;EACbC,MAAM;EACNC,QAAQ;EACRC,SAAS;EACTC,QAAQ;EACRC,aAAa;AACbC,EAAAA;AAAO,CACU,KAAI;AACrB,EAAA,MAAMC,IAAI,GAAGC,iBAAO,EAAE;EACtB,MAAM;IAAEC,KAAK;IAAEC,QAAQ;IAAEC,WAAW;AAAEC,IAAAA;GAAgB,GAAGC,iBAAQ,EAAE;AAEnE,EAAA,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAGC,cAAQ,CAAS,MACzCf,MAAM,GACFgB,wBAAkB,CAAC;AACjBH,IAAAA,KAAK,EAAEb,MAAM;IACbC,QAAQ;IACRgB,MAAM,EAAEX,IAAI,CAACW;GACd,CAAC,GACF,EAAE,CACP;AACD,EAAA,MAAMC,aAAa,GAAGC,YAAM,CAAqCnB,MAAM,CAAC;AACxE,EAAA,MAAMoB,YAAY,GAAGC,aAAO,CAAC,MAAK;AAChC,IAAA,OAAOC,0BAAoB,CAAC;MAC1BT,KAAK;MACLZ,QAAQ;MACRgB,MAAM,EAAEX,IAAI,CAACW;AACd,KAAA,CAAC;EACJ,CAAC,EAAE,CAACJ,KAAK,EAAEZ,QAAQ,EAAEK,IAAI,CAACW,MAAM,CAAC,CAAC;AAElC,EAAA,MAAMM,qBAAqB,GAAGF,aAAO,CAAC,MAAK;AACzC,IAAA,OAAOL,wBAAkB,CAAC;MACxBH,KAAK,EAAEO,YAAY,IAAI,CAAC;MACxBnB,QAAQ;MACRgB,MAAM,EAAEX,IAAI,CAACW,MAAM;AACnBO,MAAAA,kBAAkB,EAAE;AACrB,KAAA,CAAC;EACJ,CAAC,EAAE,CAACJ,YAAY,EAAEnB,QAAQ,EAAEK,IAAI,CAACW,MAAM,CAAC,CAAC;AAEzC,EAAA,MAAMQ,GAAG,GAAGN,YAAM,CAAmB,IAAI,CAAC;AAE1CO,EAAAA,eAAS,CAAC,MAAK;AACb,IAAA,IAAIxB,SAAS,EAAE;AACbuB,MAAAA,GAAG,CAACE,OAAO,EAAEnB,KAAK,EAAE;AACtB,IAAA;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMoB,WAAW,GAAGC,cAAc,CAAC5B,QAAQ,EAAEK,IAAI,CAACW,MAAM,CAAC;EACzD,MAAMa,cAAc,GAAGC,uBAAiB,CAAC9B,QAAQ,EAAEK,IAAI,CAACW,MAAM,CAAC;EAC/D,MAAMe,gBAAgB,GAAGC,yBAAmB,CAAChC,QAAQ,EAAEK,IAAI,CAACW,MAAM,CAAC;EACnE,MAAMiB,eAAe,GAAGC,qBAAe,CAAClC,QAAQ,EAAEK,IAAI,CAACW,MAAM,CAAC;AAE9D,EAAA,MAAMmB,WAAW,GAAGC,cAAc,CAACxB,KAAK,EAAEmB,gBAAgB,CAAC;EAC3D,MAAMM,WAAW,GAAGN,gBAAgB,IAAInB,KAAK,CAAC0B,QAAQ,CAACP,gBAAgB,CAAC;AAExEN,EAAAA,eAAS,CAAC,MAAK;AACb,IAAA,IAAIR,aAAa,CAACS,OAAO,KAAK3B,MAAM,EAAE;MACpCkB,aAAa,CAACS,OAAO,GAAG3B,MAAM;AAE9B;MACA,IAAI,CAACQ,KAAK,EAAE;AACV;AACAM,QAAAA,QAAQ,CACNd,MAAM,GACFgB,wBAAkB,CAAC;AACjBH,UAAAA,KAAK,EAAEb,MAAM;UACbC,QAAQ;UACRgB,MAAM,EAAEX,IAAI,CAACW;SACd,CAAC,GACF,EAAE,CACP;AACH,MAAA;AACF,IAAA;AACF,EAAA,CAAC,EAAE,CAACjB,MAAM,EAAEQ,KAAK,EAAEP,QAAQ,EAAEK,IAAI,CAACW,MAAM,CAAC,CAAC;AAE1CS,EAAAA,eAAS,CAAC,MAAK;IACbtB,aAAa,GAAGM,WAAW,CAAC;AAC9B,EAAA,CAAC,EAAE,CAACN,aAAa,EAAEM,WAAW,CAAC,CAAC;EAEhC,MAAM8B,4BAA4B,GAAIC,QAAgB,IAAI;AACxD;AACA,IAAA,IAAIC,aAAa,CAACD,QAAQ,CAAC,KAAK,EAAE,EAAE;AAClC,MAAA,OAAO,KAAK;AACd,IAAA;IAEA,MAAME,wBAAwB,GAAGX,gBAAgB,IAAIS,QAAQ,CAACG,QAAQ,CAACZ,gBAAgB,CAAC;IACxF,MAAMa,sBAAsB,GAAGf,cAAc,IAAIW,QAAQ,CAACG,QAAQ,CAACd,cAAc,CAAC;AAElF;IACA,IAAIa,wBAAwB,IAAIE,sBAAsB,EAAE;AACtD,MAAA,OAAO,KAAK;AACd,IAAA;IAEA,MAAMC,wBAAwB,GAAGd,gBAAgB,IAAIS,QAAQ,CAACF,QAAQ,CAACP,gBAAgB,CAAC;AAExF,IAAA,IAAIc,wBAAwB,EAAE;AAC5B,MAAA,MAAMC,oBAAoB,GAAGC,6BAAuB,CAACP,QAAQ,EAAET,gBAAgB,CAAC;AAChF;AACA;MACA,IAAIe,oBAAoB,GAAGb,eAAe,EAAE;AAC1C,QAAA,OAAO,KAAK;AACd,MAAA;AACF,IAAA;AAEA,IAAA,OAAO,IAAI;EACb,CAAC;EAED,MAAMQ,aAAa,GAAID,QAAgB,IAAI;IACzC,MAAMQ,gBAAgB,GAAG3B,0BAAoB,CAAC;AAC5CT,MAAAA,KAAK,EAAE4B,QAAQ;MACfxC,QAAQ;MACRgB,MAAM,EAAEX,IAAI,CAACW;AACd,KAAA,CAAC;AACF,IAAA,MAAMiC,cAAc,GAAGD,gBAAgB,GACnCjC,wBAAkB,CAAC;AACjBH,MAAAA,KAAK,EAAEoC,gBAAgB;MACvBhD,QAAQ;MACRgB,MAAM,EAAEX,IAAI,CAACW;KACd,CAAC,GACF,EAAE;AACN,IAAA,OAAOiC,cAAc;EACvB,CAAC;EAED,MAAMC,YAAY,GAAIV,QAAgB,IAAI;IACxC,MAAMW,iBAAiB,GAAG3B,GAAG,CAACE,OAAO,EAAE0B,cAAc,IAAI,CAAC;AAE1D,IAAA,MAAMC,kBAAkB,GAAGd,4BAA4B,CAACC,QAAQ,CAAC,GAC7DC,aAAa,CAACD,QAAQ,CAAC,GACvBA,QAAQ;IACZ3B,QAAQ,CAACwC,kBAAkB,CAAC;IAE5B,MAAMC,SAAS,GAAGjC,0BAAoB,CAAC;AACrCT,MAAAA,KAAK,EAAEyC,kBAAkB;MACzBrD,QAAQ;MACRgB,MAAM,EAAEX,IAAI,CAACW;AACd,KAAA,CAAC;IAEF,IAAIsC,SAAS,KAAKnC,YAAY,EAAE;MAC9B,IAAIA,YAAY,IAAImC,SAAS,EAAE;QAC7BpD,QAAQ,CAACoD,SAAS,CAAC;AACrB,MAAA;AACF,IAAA;IAEA,MAAMC,iBAAiB,GAAGJ,iBAAiB,IAAIE,kBAAkB,CAACG,MAAM,GAAGhB,QAAQ,CAACgB,MAAM,CAAC;AAC3FC,IAAAA,qBAAqB,CAAC,MAAK;MACzBjC,GAAG,EAAEE,OAAO,EAAEgC,iBAAiB,CAACH,iBAAiB,EAAEA,iBAAiB,CAAC;AACvE,IAAA,CAAC,CAAC;EACJ,CAAC;EAED,MAAMI,WAAW,GAAIC,CAAyC,IAAI;IAChEA,CAAC,CAACC,cAAc,EAAE;IAElB,MAAMC,aAAa,GAAGF,CAAC,CAACE,aAAa,EAAEC,OAAO,CAAC,YAAY,CAAC;IAC5D,IAAI,CAACD,aAAa,EAAE;AAClB,MAAA;AACF,IAAA;AAEA;AACA,IAAA,MAAME,cAAc,GAAGvB,aAAa,CAACqB,aAAa,CAAC;IAEnDZ,YAAY,CAACc,cAAc,CAAC;EAC9B,CAAC;EAED,MAAMC,UAAU,GAAGA,MAAK;IACtBzD,QAAQ,CAAC,KAAK,CAAC;AACfK,IAAAA,QAAQ,CAAC4B,aAAa,CAAC7B,KAAK,CAAC,CAAC;EAChC,CAAC;EAED,MAAMsD,eAAe,GAAIN,CAAkC,IAAI;AAC7D,IAAA,MAAMO,KAAK,GAAGP,CAAC,CAACQ,MAA0B;AAC1C;IACA,MAAM;AAAExD,MAAAA,KAAK,EAAEyD,YAAY;MAAEjB,cAAc;AAAEkB,MAAAA;AAAY,KAAE,GAAGH,KAAK;IAEnE,IAAIf,cAAc,KAAKkB,YAAY,IAAIlB,cAAc,IAAIA,cAAc,GAAG,CAAC,EAAE;AAC3E,MAAA,MAAMmB,gBAAgB,GAAGF,YAAY,CAACjB,cAAc,GAAG,CAAC,CAAC;AAEzD;MACA,IAAImB,gBAAgB,KAAK1C,cAAc,EAAE;QACvC+B,CAAC,CAACC,cAAc,EAAE;QAClB,MAAMW,YAAY,GAAGH,YAAY,CAACI,KAAK,CAAC,CAAC,EAAErB,cAAc,GAAG,CAAC,CAAC;AAC9D,QAAA,MAAMsB,WAAW,GAAGL,YAAY,CAACI,KAAK,CAACrB,cAAc,CAAC;AACtD,QAAA,MAAMZ,QAAQ,GAAG,CAAA,EAAGgC,YAAY,CAAA,EAAGE,WAAW,CAAA,CAAE;QAChDP,KAAK,CAACT,iBAAiB,CAACc,YAAY,CAAChB,MAAM,EAAEgB,YAAY,CAAChB,MAAM,CAAC;QACjEN,YAAY,CAACV,QAAQ,CAAC;AACxB,MAAA;AACF,IAAA;EACF,CAAC;EAED,MAAMmC,aAAa,GAAIf,CAAkC,IAAI;IAC3DpD,QAAQ,CAAC,IAAI,CAAC;AACd,IAAA,IAAI,CAACoE,uBAAiB,CAAChB,CAAC,CAAC,EAAE;MACzBA,CAAC,CAACC,cAAc,EAAE;AACpB,IAAA;AAEA,IAAA,IAAID,CAAC,CAACiB,GAAG,KAAK,WAAW,EAAE;MACzBX,eAAe,CAACN,CAAC,CAAC;AACpB,IAAA;EACF,CAAC;EAED,MAAMkB,cAAc,GAAIlB,CAAgC,IAAI;AAC1D,IAAA,MAAMmB,4BAA4B,GAChChD,gBAAgB,IAAI6B,CAAC,CAACQ,MAAM,CAACxD,KAAK,CAACoE,KAAK,CAACjD,gBAAgB,CAAC,CAACyB,MAAM,GAAG,CAAC;AACvE,IAAA,IAAIuB,4BAA4B,EAAE;AAChC,MAAA,OAAO,KAAK;AACd,IAAA;IAEA,MAAME,eAAe,GAAG5D,0BAAoB,CAAC;AAC3CT,MAAAA,KAAK,EAAEgD,CAAC,CAACQ,MAAM,CAACxD,KAAK;MACrBZ,QAAQ;MACRgB,MAAM,EAAEX,IAAI,CAACW;AACd,KAAA,CAAC;IACF,MAAMkE,SAAS,GAAGC,MAAM,CAACC,gBAAgB,CAACC,QAAQ,EAAE,CAAC7B,MAAM;IAC3D,IAAI8B,MAAM,CAACL,eAAe,CAAC,CAACzB,MAAM,GAAG0B,SAAS,EAAE;AAC9C,MAAA,OAAO,KAAK;AACd,IAAA;AAEA,IAAA,OAAO,IAAI;EACb,CAAC;AAED,EAAA,MAAMK,YAAY,GAAGnE,aAAO,CAAC,MAAgC;AAC3D;AACA;AACA;AACA,IAAA,IAAIoE,gCAA0B,CAAC;MAAEhE,GAAG;AAAEZ,MAAAA;AAAK,KAAE,CAAC,EAAE;AAC9C,MAAA,OAAO,IAAI;AACb,IAAA;AACA,IAAA,IAAI,CAACmB,gBAAgB,IAAI,CAACnB,KAAK,EAAE;AAC/B,MAAA,OAAO,IAAI;AACb,IAAA;AAEA;AACA;AACA;IACA,IAAIL,KAAK,IAAI8B,WAAW,EAAE;AACxB;AACA,MAAA,MAAMoD,eAAe,GAAGrD,cAAc,CAACd,qBAAqB,EAAES,gBAAgB,CAAC;AAC/E;AACA,MAAA,OAAO0D,eAAe,EAAEhB,KAAK,CAACtC,WAAW,EAAEqB,MAAM,CAAC;AACpD,IAAA;AAEA;AACA,IAAA,IAAI,CAACjD,KAAK,IAAI,CAAC8B,WAAW,EAAE;MAC1B,MAAM,CAACqD,CAAC,EAAEC,kBAAkB,CAAC,GAAGhE,WAAW,CAACqD,KAAK,CAACjD,gBAAgB,CAAC;MACnE,OAAOA,gBAAgB,GAAG4D,kBAAkB;AAC9C,IAAA;AAEA,IAAA,OAAO,IAAI;AACb,EAAA,CAAC,EAAE,CACDtD,WAAW,EACXF,WAAW,EAAEqB,MAAM,EACnBzB,gBAAgB,EAChBxB,KAAK,EACLoB,WAAW,EACXf,KAAK,EACLU,qBAAqB,CACtB,CAAC;EAEF,MAAMsE,KAAK,GAAGC,2BAAa,CAAC;AAC1B;AACAjF,IAAAA,KAAK,EAAE2E,YAAY,GAAGjE,qBAAqB,GAAGV,KAAK;AACnDL,IAAAA,KAAK,EAAEE,WAAW;AAClBqF,IAAAA,YAAY,EAAEtE,GAAG;AACjBpB,IAAAA;AACD,GAAA,CAAC;AAEF,EAAA,oBACE2F,cAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC,4BAA4B;AAACC,IAAAA,GAAG,EAAC,KAAK;AAAAC,IAAAA,QAAA,eACnDC,eAAA,CAAA,KAAA,EAAA;AAAKH,MAAAA,SAAS,EAAEI,SAAI,CAAC,kCAAkC,CAAE;AAACR,MAAAA,KAAK,EAAEA,KAAM;AAAAM,MAAAA,QAAA,gBACrEH,cAAA,CAAA,OAAA,EAAA;AACEvE,QAAAA,GAAG,EAAEA,GAAI;AACTyE,QAAAA,GAAG,EAAC,MAAM;AACVD,QAAAA,SAAS,EAAC,wBAAwB;AAClCnG,QAAAA,EAAE,EAAEA,EAAG;AACPwG,QAAAA,YAAY,EAAC,KAAK;AAClBC,QAAAA,SAAS,EAAC,SAAS;AACnB1F,QAAAA,KAAK,EAAEA,KAAM;AACb2F,QAAAA,IAAI,EAAC,MAAM;AACX5E,QAAAA,WAAW,EAAEA,WAAY;QACzB,kBAAA,EAAkB7B;AAClB;AACA0G,QAAAA,IAAI,EAAE,CAAE;QACRtG,QAAQ,EAAG0D,CAAC,IAAI;AACd,UAAA,IAAIkB,cAAc,CAAClB,CAAC,CAAC,EAAE;AACrBV,YAAAA,YAAY,CAACU,CAAC,CAACQ,MAAM,CAACxD,KAAK,CAAC;AAC9B,UAAA;QACF,CAAE;AACF6F,QAAAA,aAAa,EAAEA,MAAMxC,UAAU,EAAG;AAClCyC,QAAAA,OAAO,EAAG9C,CAAC,IAAKD,WAAW,CAACC,CAAC,CAAE;QAC/B+C,OAAO,EAAEA,MAAK;UACZnG,QAAQ,CAAC,IAAI,CAAC;QAChB,CAAE;QACFoG,MAAM,EAAEA,MAAK;UACXC,UAAU,CAAC,MAAMnG,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QAC7C,CAAE;AACFoG,QAAAA,SAAS,EAAGlD,CAAC,IAAKe,aAAa,CAACf,CAAC;AAAE,OAAA,CAErC,eAAAmC,cAAA,CAACgB,qBAAe,EAAA;AAACC,QAAAA,OAAO,EAAE,KAAM;AAAAd,QAAAA,QAAA,EAC7BX,YAAY,KAAK,IAAI,iBACpBQ,cAAA,CAACkB,6BAAc,EAAA;UACbjB,SAAS,EAAEI,SAAI,CACb,8BAA8B,EAC9B3F,WAAW,IAAI,oCAAoC,CACnD;UACFyG,OAAO,EAAEA,MAAM1F,GAAG,CAACE,OAAO,EAAEnB,KAAK,EAAG;AAAA2F,UAAAA,QAAA,EAEnCX;SACa;AACjB,OACc,CACnB;KAAK;AACP,GAAK,CAAC;AAEV;AAEA,MAAM3D,cAAc,GAAGA,CAAC5B,QAAgB,EAAEgB,MAAc,KAAI;AAC1D,EAAA,OAAOmG,uBAAY,CAAC,CAAC,EAAEnH,QAAQ,EAAEgB,MAAM,EAAE;AAAEO,IAAAA,kBAAkB,EAAE;AAAI,GAAE,CAAC;AACxE,CAAC;AAED,MAAMa,cAAc,GAAGA,CAACxB,KAAa,EAAEmB,gBAA+B,KAAI;AACxE,EAAA,IAAI,CAACnB,KAAK,IAAI,CAACmB,gBAAgB,EAAE;AAC/B,IAAA,OAAOqF,SAAS;AAClB,EAAA;EAEA,MAAM,CAAC1B,CAAC,EAAEvD,WAAW,CAAC,GAAGvB,KAAK,CAACoE,KAAK,CAACjD,gBAAgB,CAAC;EACtD,OAAOI,WAAW,IAAIiF,SAAS;AACjC,CAAC;;"}
|
|
@@ -230,7 +230,7 @@ const AmountInput = ({
|
|
|
230
230
|
className: "wds-amount-input-container",
|
|
231
231
|
dir: "ltr",
|
|
232
232
|
children: /*#__PURE__*/jsxs("div", {
|
|
233
|
-
className: clsx('wds-amount-input-input-container'
|
|
233
|
+
className: clsx('wds-amount-input-input-container'),
|
|
234
234
|
style: style,
|
|
235
235
|
children: [/*#__PURE__*/jsx("input", {
|
|
236
236
|
ref: ref,
|