@transferwise/components 0.0.0-experimental-39a3a7b → 0.0.0-experimental-72f740f

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/build/dateLookup/DateLookup.js +4 -4
  2. package/build/dateLookup/DateLookup.js.map +1 -1
  3. package/build/dateLookup/DateLookup.mjs +4 -4
  4. package/build/dateLookup/DateLookup.mjs.map +1 -1
  5. package/build/dateLookup/dayCalendar/table/DayCalendarTable.js +3 -3
  6. package/build/dateLookup/dayCalendar/table/DayCalendarTable.js.map +1 -1
  7. package/build/dateLookup/dayCalendar/table/DayCalendarTable.mjs +3 -3
  8. package/build/dateLookup/dayCalendar/table/DayCalendarTable.mjs.map +1 -1
  9. package/build/moneyInput/MoneyInput.js +2 -2
  10. package/build/moneyInput/MoneyInput.js.map +1 -1
  11. package/build/moneyInput/MoneyInput.mjs +2 -2
  12. package/build/moneyInput/MoneyInput.mjs.map +1 -1
  13. package/build/snackbar/Snackbar.js +1 -1
  14. package/build/snackbar/Snackbar.js.map +1 -1
  15. package/build/snackbar/Snackbar.mjs +1 -1
  16. package/build/snackbar/Snackbar.mjs.map +1 -1
  17. package/build/tabs/Tabs.js +3 -3
  18. package/build/tabs/Tabs.js.map +1 -1
  19. package/build/tabs/Tabs.mjs +3 -3
  20. package/build/tabs/Tabs.mjs.map +1 -1
  21. package/build/typeahead/Typeahead.js +2 -2
  22. package/build/typeahead/Typeahead.js.map +1 -1
  23. package/build/typeahead/Typeahead.mjs +2 -2
  24. package/build/typeahead/Typeahead.mjs.map +1 -1
  25. package/build/typeahead/typeaheadInput/TypeaheadInput.js +2 -2
  26. package/build/typeahead/typeaheadInput/TypeaheadInput.js.map +1 -1
  27. package/build/typeahead/typeaheadInput/TypeaheadInput.mjs +2 -2
  28. package/build/typeahead/typeaheadInput/TypeaheadInput.mjs.map +1 -1
  29. package/build/upload/Upload.js +2 -2
  30. package/build/upload/Upload.js.map +1 -1
  31. package/build/upload/Upload.mjs +2 -2
  32. package/build/upload/Upload.mjs.map +1 -1
  33. package/build/upload/steps/uploadImageStep/uploadImageStep.js +1 -1
  34. package/build/upload/steps/uploadImageStep/uploadImageStep.js.map +1 -1
  35. package/build/upload/steps/uploadImageStep/uploadImageStep.mjs +1 -1
  36. package/build/upload/steps/uploadImageStep/uploadImageStep.mjs.map +1 -1
  37. package/package.json +10 -10
@@ -41,7 +41,7 @@ var MonthCalendar = require('./monthCalendar/MonthCalendar.js');
41
41
  var YearCalendar = require('./yearCalendar/YearCalendar.js');
42
42
 
43
43
  class DateLookup extends React.PureComponent {
44
- static defaultProps = (() => ({
44
+ static defaultProps = {
45
45
  value: null,
46
46
  min: null,
47
47
  max: null,
@@ -51,9 +51,9 @@ class DateLookup extends React.PureComponent {
51
51
  monthFormat: monthFormat.MonthFormat.LONG,
52
52
  disabled: false,
53
53
  clearable: false
54
- }))();
55
- element = (() => /*#__PURE__*/React.createRef())();
56
- dropdown = (() => /*#__PURE__*/React.createRef())();
54
+ };
55
+ element = /*#__PURE__*/React.createRef();
56
+ dropdown = /*#__PURE__*/React.createRef();
57
57
  constructor(props) {
58
58
  super(props);
59
59
  const dateView = getDateView.returnDateView(props.value, props.min, props.max);
@@ -1 +1 @@
1
- {"version":3,"file":"DateLookup.js","sources":["../../src/dateLookup/DateLookup.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { createRef, PureComponent, KeyboardEvent } from 'react';\n\nimport {\n Size,\n MonthFormat,\n Position,\n Breakpoint,\n type SizeSmall,\n type SizeMedium,\n type SizeLarge,\n} from '../common';\nimport { isWithinRange, moveToWithinRange, returnDateView } from '../common/dateUtils';\nimport ResponsivePanel from '../common/responsivePanel';\nimport { WithInputAttributesProps, withInputAttributes } from '../inputs/contexts';\nimport { OverlayIdContext, OverlayIdProvider } from '../provider/overlay/OverlayIdProvider';\nimport DateTrigger from './dateTrigger';\nimport DayCalendar from './dayCalendar';\nimport { getStartOfDay } from './getStartOfDay';\nimport MonthCalendar from './monthCalendar';\nimport YearCalendar from './yearCalendar';\n\nexport interface DateLookupProps {\n id?: string;\n value: Date | null;\n min?: Date | null;\n max?: Date | null;\n size?: SizeSmall | SizeMedium | SizeLarge;\n placeholder?: string;\n label?: string;\n 'aria-labelledby'?: string;\n monthFormat?: `${MonthFormat}`;\n disabled?: boolean;\n clearable?: boolean;\n onChange: (date: Date | null) => void;\n onFocus?: () => void;\n onBlur?: () => void;\n}\n\ntype DateLookupPropsWithInputAttributes = DateLookupProps & Partial<WithInputAttributesProps>;\n\ninterface DateLookupState {\n selectedDate: Date | null;\n originalDate: Date | null;\n min: Date | null;\n max: Date | null;\n viewMonth: number;\n viewYear: number;\n open: boolean;\n mode: 'day' | 'month' | 'year';\n isMobile: boolean;\n}\n\nclass DateLookup extends PureComponent<DateLookupPropsWithInputAttributes, DateLookupState> {\n declare props: DateLookupPropsWithInputAttributes &\n Required<Pick<DateLookupPropsWithInputAttributes, keyof typeof DateLookup.defaultProps>>;\n\n static defaultProps = {\n value: null,\n min: null,\n max: null,\n size: Size.MEDIUM,\n placeholder: '',\n label: '',\n monthFormat: MonthFormat.LONG,\n disabled: false,\n clearable: false,\n } satisfies Partial<DateLookupPropsWithInputAttributes>;\n\n element = createRef<HTMLDivElement>();\n dropdown = createRef<HTMLDivElement>();\n\n constructor(props: DateLookup['props']) {\n super(props);\n const dateView = returnDateView(props.value, props.min, props.max);\n this.state = {\n selectedDate: getStartOfDay(props.value),\n originalDate: null,\n min: getStartOfDay(props.min),\n max: getStartOfDay(props.max),\n viewMonth: dateView.getMonth(),\n viewYear: dateView.getFullYear(),\n open: false,\n mode: 'day',\n isMobile: false,\n };\n }\n\n static getDerivedStateFromProps(props: DateLookup['props'], state: DateLookupState) {\n const propsSelected = getStartOfDay(props.value);\n const propsMin = getStartOfDay(props.min);\n const propsMax = getStartOfDay(props.max);\n const hasSelectedChanged = state.selectedDate?.getTime() !== propsSelected?.getTime();\n const hasMinChanged = state.min?.getTime() !== propsMin?.getTime();\n const hasMaxChanged = state.max?.getTime() !== propsMax?.getTime();\n if (hasSelectedChanged || hasMinChanged || hasMaxChanged) {\n const selectedDate = hasSelectedChanged ? propsSelected : state.selectedDate;\n const min = hasMinChanged ? propsMin : state.min;\n const max = hasMaxChanged ? propsMax : state.max;\n if (selectedDate && !isWithinRange(selectedDate, min, max)) {\n props.onChange(moveToWithinRange(selectedDate, min, max));\n return null;\n }\n const viewDateThatIsWithinRange: Date = returnDateView(selectedDate, min, max);\n const viewMonth = viewDateThatIsWithinRange.getMonth();\n const viewYear = viewDateThatIsWithinRange.getFullYear();\n return { selectedDate, min, max, viewMonth, viewYear };\n }\n return null;\n }\n\n componentDidUpdate(previousProps: DateLookupPropsWithInputAttributes) {\n if (this.props.value?.getTime() !== previousProps.value?.getTime() && this.state.open) {\n this.focusOn('.active');\n }\n const mediaQuery = window.matchMedia(`(max-width: ${Breakpoint.SMALL}px)`);\n this.setState({ isMobile: mediaQuery.matches });\n }\n\n componentWillUnmount() {\n // Prevents memory leak by cleaning state.\n this.setState = () => {};\n }\n\n open = () => {\n const { onFocus } = this.props;\n\n this.setState({ open: true, mode: 'day' });\n if (onFocus) {\n onFocus();\n }\n };\n\n discard = () => {\n const { originalDate } = this.state;\n if (originalDate !== null) {\n this.props.onChange(originalDate);\n }\n this.close();\n };\n\n close = () => {\n const { onBlur } = this.props;\n this.setState({ open: false, originalDate: null });\n if (onBlur) {\n onBlur();\n }\n };\n\n handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const { open, originalDate } = this.state;\n switch (event.key) {\n case 'ArrowLeft':\n if (open) {\n this.adjustDate(-1, -1, -1);\n } else {\n this.open();\n }\n event.preventDefault();\n break;\n case 'ArrowUp':\n if (open) {\n this.adjustDate(-7, -4, -4);\n } else {\n this.open();\n }\n event.preventDefault();\n break;\n case 'ArrowRight':\n if (open) {\n this.adjustDate(1, 1, 1);\n } else {\n this.open();\n }\n event.preventDefault();\n break;\n case 'ArrowDown':\n if (open) {\n this.adjustDate(7, 4, 4);\n } else {\n this.open();\n }\n event.preventDefault();\n break;\n case 'Escape':\n if (originalDate !== null) {\n this.props.onChange(originalDate);\n }\n this.close();\n event.preventDefault();\n break;\n default:\n break;\n }\n };\n\n adjustDate = (daysToAdd: number, monthsToAdd: number, yearsToAdd: number) => {\n const { selectedDate, min, max, mode, originalDate } = this.state;\n if (originalDate === null) {\n this.setState({ originalDate: selectedDate });\n }\n let date: Date | null;\n if (selectedDate) {\n date = new Date(\n mode === 'year' ? selectedDate.getFullYear() + yearsToAdd : selectedDate.getFullYear(),\n mode === 'month' ? selectedDate.getMonth() + monthsToAdd : selectedDate.getMonth(),\n mode === 'day' ? selectedDate.getDate() + daysToAdd : selectedDate.getDate(),\n );\n } else {\n date = getStartOfDay(new Date());\n }\n date &&= moveToWithinRange(date, min, max);\n if (date?.getTime() !== selectedDate?.getTime()) {\n this.props.onChange(date);\n }\n };\n\n focusOn = (preferredElement: string, fallbackElement?: string) => {\n const element = this.element.current?.querySelector(preferredElement) as HTMLElement | null;\n if (element) {\n element.focus();\n } else if (fallbackElement) {\n this.focusOn(fallbackElement);\n }\n };\n\n switchMode = (mode: 'day' | 'month' | 'year') => {\n this.setState({ mode }, () => {\n this.focusOn('.active', '.today');\n });\n };\n\n switchToDays = () => this.switchMode('day');\n\n switchToMonths = () => this.switchMode('month');\n\n switchToYears = () => this.switchMode('year');\n\n handleSelectedDateUpdate = (selectedDate: Date) => {\n this.setState({ selectedDate }, () => {\n this.props.onChange(selectedDate);\n this.close();\n this.focusOn('.btn');\n });\n };\n\n handleViewDateUpdate = ({ month = this.state.viewMonth, year = this.state.viewYear }) => {\n this.setState({ viewMonth: month, viewYear: year });\n };\n\n getCalendar = () => {\n const { selectedDate, min, max, viewMonth, viewYear, mode, isMobile } = this.state;\n const { placeholder, monthFormat } = this.props;\n return (\n <div className={clsx({ 'p-a-1': !isMobile })}>\n {mode === 'day' && (\n <DayCalendar\n selectedDate={selectedDate}\n min={min}\n max={max}\n viewMonth={viewMonth}\n viewYear={viewYear}\n monthFormat={monthFormat}\n onSelect={this.handleSelectedDateUpdate}\n onLabelClick={this.switchToYears}\n onViewDateUpdate={this.handleViewDateUpdate}\n />\n )}\n {mode === 'month' && (\n <MonthCalendar\n selectedDate={selectedDate}\n min={min}\n max={max}\n viewYear={viewYear}\n placeholder={placeholder}\n onSelect={this.switchToDays}\n onLabelClick={this.switchToYears}\n onViewDateUpdate={this.handleViewDateUpdate}\n />\n )}\n {mode === 'year' && (\n <YearCalendar\n selectedDate={selectedDate}\n min={min}\n max={max}\n viewYear={viewYear}\n placeholder={placeholder}\n onSelect={this.switchToMonths}\n onViewDateUpdate={this.handleViewDateUpdate}\n />\n )}\n </div>\n );\n };\n\n handleClear = () => {\n this.props.onChange(null);\n this.focusOn('.np-date-trigger');\n };\n\n render() {\n const { selectedDate, open } = this.state;\n\n const {\n inputAttributes,\n id: idProp,\n 'aria-labelledby': ariaLabelledByProp,\n size,\n placeholder,\n label,\n monthFormat,\n disabled,\n clearable,\n value,\n } = this.props;\n const id = idProp ?? inputAttributes?.id;\n const ariaLabelledBy = ariaLabelledByProp ?? inputAttributes?.['aria-labelledby'];\n\n return (\n <div\n ref={this.element}\n {...inputAttributes}\n id={id}\n className=\"input-group\"\n onKeyDown={this.handleKeyDown}\n >\n <OverlayIdProvider open={open}>\n <DateTrigger\n ariaLabelledBy={ariaLabelledBy}\n selectedDate={selectedDate}\n size={size}\n placeholder={placeholder}\n label={label}\n monthFormat={monthFormat}\n disabled={disabled || false}\n onClick={this.open}\n onClear={!disabled && clearable && value ? this.handleClear : undefined}\n />\n <ResponsivePanel\n anchorRef={this.element}\n open={open}\n className=\"tw-date-lookup-menu\"\n position={Position.BOTTOM}\n onClose={this.discard}\n >\n {this.getCalendar()}\n </ResponsivePanel>\n </OverlayIdProvider>\n </div>\n );\n }\n}\n\nexport const DateLookupWithoutInputAttributes = DateLookup;\n\nexport default withInputAttributes(\n DateLookup as React.ComponentType<DateLookupPropsWithInputAttributes>,\n { nonLabelable: true },\n);\n"],"names":["DateLookup","PureComponent","defaultProps","value","min","max","size","Size","MEDIUM","placeholder","label","monthFormat","MonthFormat","LONG","disabled","clearable","element","createRef","dropdown","constructor","props","dateView","returnDateView","state","selectedDate","getStartOfDay","originalDate","viewMonth","getMonth","viewYear","getFullYear","open","mode","isMobile","getDerivedStateFromProps","propsSelected","propsMin","propsMax","hasSelectedChanged","getTime","hasMinChanged","hasMaxChanged","isWithinRange","onChange","moveToWithinRange","viewDateThatIsWithinRange","componentDidUpdate","previousProps","focusOn","mediaQuery","window","matchMedia","Breakpoint","SMALL","setState","matches","componentWillUnmount","onFocus","discard","close","onBlur","handleKeyDown","event","key","adjustDate","preventDefault","daysToAdd","monthsToAdd","yearsToAdd","date","Date","getDate","preferredElement","fallbackElement","current","querySelector","focus","switchMode","switchToDays","switchToMonths","switchToYears","handleSelectedDateUpdate","handleViewDateUpdate","month","year","getCalendar","_jsxs","className","clsx","children","_jsx","DayCalendar","onSelect","onLabelClick","onViewDateUpdate","MonthCalendar","YearCalendar","handleClear","render","inputAttributes","id","idProp","ariaLabelledByProp","ariaLabelledBy","ref","onKeyDown","OverlayIdProvider","DateTrigger","onClick","onClear","undefined","ResponsivePanel","anchorRef","position","Position","BOTTOM","onClose","withInputAttributes","nonLabelable"],"mappings":"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"}
1
+ {"version":3,"file":"DateLookup.js","sources":["../../src/dateLookup/DateLookup.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { createRef, PureComponent, KeyboardEvent } from 'react';\n\nimport {\n Size,\n MonthFormat,\n Position,\n Breakpoint,\n type SizeSmall,\n type SizeMedium,\n type SizeLarge,\n} from '../common';\nimport { isWithinRange, moveToWithinRange, returnDateView } from '../common/dateUtils';\nimport ResponsivePanel from '../common/responsivePanel';\nimport { WithInputAttributesProps, withInputAttributes } from '../inputs/contexts';\nimport { OverlayIdContext, OverlayIdProvider } from '../provider/overlay/OverlayIdProvider';\nimport DateTrigger from './dateTrigger';\nimport DayCalendar from './dayCalendar';\nimport { getStartOfDay } from './getStartOfDay';\nimport MonthCalendar from './monthCalendar';\nimport YearCalendar from './yearCalendar';\n\nexport interface DateLookupProps {\n id?: string;\n value: Date | null;\n min?: Date | null;\n max?: Date | null;\n size?: SizeSmall | SizeMedium | SizeLarge;\n placeholder?: string;\n label?: string;\n 'aria-labelledby'?: string;\n monthFormat?: `${MonthFormat}`;\n disabled?: boolean;\n clearable?: boolean;\n onChange: (date: Date | null) => void;\n onFocus?: () => void;\n onBlur?: () => void;\n}\n\ntype DateLookupPropsWithInputAttributes = DateLookupProps & Partial<WithInputAttributesProps>;\n\ninterface DateLookupState {\n selectedDate: Date | null;\n originalDate: Date | null;\n min: Date | null;\n max: Date | null;\n viewMonth: number;\n viewYear: number;\n open: boolean;\n mode: 'day' | 'month' | 'year';\n isMobile: boolean;\n}\n\nclass DateLookup extends PureComponent<DateLookupPropsWithInputAttributes, DateLookupState> {\n declare props: DateLookupPropsWithInputAttributes &\n Required<Pick<DateLookupPropsWithInputAttributes, keyof typeof DateLookup.defaultProps>>;\n\n static defaultProps = {\n value: null,\n min: null,\n max: null,\n size: Size.MEDIUM,\n placeholder: '',\n label: '',\n monthFormat: MonthFormat.LONG,\n disabled: false,\n clearable: false,\n } satisfies Partial<DateLookupPropsWithInputAttributes>;\n\n element = createRef<HTMLDivElement>();\n dropdown = createRef<HTMLDivElement>();\n\n constructor(props: DateLookup['props']) {\n super(props);\n const dateView = returnDateView(props.value, props.min, props.max);\n this.state = {\n selectedDate: getStartOfDay(props.value),\n originalDate: null,\n min: getStartOfDay(props.min),\n max: getStartOfDay(props.max),\n viewMonth: dateView.getMonth(),\n viewYear: dateView.getFullYear(),\n open: false,\n mode: 'day',\n isMobile: false,\n };\n }\n\n static getDerivedStateFromProps(props: DateLookup['props'], state: DateLookupState) {\n const propsSelected = getStartOfDay(props.value);\n const propsMin = getStartOfDay(props.min);\n const propsMax = getStartOfDay(props.max);\n const hasSelectedChanged = state.selectedDate?.getTime() !== propsSelected?.getTime();\n const hasMinChanged = state.min?.getTime() !== propsMin?.getTime();\n const hasMaxChanged = state.max?.getTime() !== propsMax?.getTime();\n if (hasSelectedChanged || hasMinChanged || hasMaxChanged) {\n const selectedDate = hasSelectedChanged ? propsSelected : state.selectedDate;\n const min = hasMinChanged ? propsMin : state.min;\n const max = hasMaxChanged ? propsMax : state.max;\n if (selectedDate && !isWithinRange(selectedDate, min, max)) {\n props.onChange(moveToWithinRange(selectedDate, min, max));\n return null;\n }\n const viewDateThatIsWithinRange: Date = returnDateView(selectedDate, min, max);\n const viewMonth = viewDateThatIsWithinRange.getMonth();\n const viewYear = viewDateThatIsWithinRange.getFullYear();\n return { selectedDate, min, max, viewMonth, viewYear };\n }\n return null;\n }\n\n componentDidUpdate(previousProps: DateLookupPropsWithInputAttributes) {\n if (this.props.value?.getTime() !== previousProps.value?.getTime() && this.state.open) {\n this.focusOn('.active');\n }\n const mediaQuery = window.matchMedia(`(max-width: ${Breakpoint.SMALL}px)`);\n this.setState({ isMobile: mediaQuery.matches });\n }\n\n componentWillUnmount() {\n // Prevents memory leak by cleaning state.\n this.setState = () => {};\n }\n\n open = () => {\n const { onFocus } = this.props;\n\n this.setState({ open: true, mode: 'day' });\n if (onFocus) {\n onFocus();\n }\n };\n\n discard = () => {\n const { originalDate } = this.state;\n if (originalDate !== null) {\n this.props.onChange(originalDate);\n }\n this.close();\n };\n\n close = () => {\n const { onBlur } = this.props;\n this.setState({ open: false, originalDate: null });\n if (onBlur) {\n onBlur();\n }\n };\n\n handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const { open, originalDate } = this.state;\n switch (event.key) {\n case 'ArrowLeft':\n if (open) {\n this.adjustDate(-1, -1, -1);\n } else {\n this.open();\n }\n event.preventDefault();\n break;\n case 'ArrowUp':\n if (open) {\n this.adjustDate(-7, -4, -4);\n } else {\n this.open();\n }\n event.preventDefault();\n break;\n case 'ArrowRight':\n if (open) {\n this.adjustDate(1, 1, 1);\n } else {\n this.open();\n }\n event.preventDefault();\n break;\n case 'ArrowDown':\n if (open) {\n this.adjustDate(7, 4, 4);\n } else {\n this.open();\n }\n event.preventDefault();\n break;\n case 'Escape':\n if (originalDate !== null) {\n this.props.onChange(originalDate);\n }\n this.close();\n event.preventDefault();\n break;\n default:\n break;\n }\n };\n\n adjustDate = (daysToAdd: number, monthsToAdd: number, yearsToAdd: number) => {\n const { selectedDate, min, max, mode, originalDate } = this.state;\n if (originalDate === null) {\n this.setState({ originalDate: selectedDate });\n }\n let date: Date | null;\n if (selectedDate) {\n date = new Date(\n mode === 'year' ? selectedDate.getFullYear() + yearsToAdd : selectedDate.getFullYear(),\n mode === 'month' ? selectedDate.getMonth() + monthsToAdd : selectedDate.getMonth(),\n mode === 'day' ? selectedDate.getDate() + daysToAdd : selectedDate.getDate(),\n );\n } else {\n date = getStartOfDay(new Date());\n }\n date &&= moveToWithinRange(date, min, max);\n if (date?.getTime() !== selectedDate?.getTime()) {\n this.props.onChange(date);\n }\n };\n\n focusOn = (preferredElement: string, fallbackElement?: string) => {\n const element = this.element.current?.querySelector(preferredElement) as HTMLElement | null;\n if (element) {\n element.focus();\n } else if (fallbackElement) {\n this.focusOn(fallbackElement);\n }\n };\n\n switchMode = (mode: 'day' | 'month' | 'year') => {\n this.setState({ mode }, () => {\n this.focusOn('.active', '.today');\n });\n };\n\n switchToDays = () => this.switchMode('day');\n\n switchToMonths = () => this.switchMode('month');\n\n switchToYears = () => this.switchMode('year');\n\n handleSelectedDateUpdate = (selectedDate: Date) => {\n this.setState({ selectedDate }, () => {\n this.props.onChange(selectedDate);\n this.close();\n this.focusOn('.btn');\n });\n };\n\n handleViewDateUpdate = ({ month = this.state.viewMonth, year = this.state.viewYear }) => {\n this.setState({ viewMonth: month, viewYear: year });\n };\n\n getCalendar = () => {\n const { selectedDate, min, max, viewMonth, viewYear, mode, isMobile } = this.state;\n const { placeholder, monthFormat } = this.props;\n return (\n <div className={clsx({ 'p-a-1': !isMobile })}>\n {mode === 'day' && (\n <DayCalendar\n selectedDate={selectedDate}\n min={min}\n max={max}\n viewMonth={viewMonth}\n viewYear={viewYear}\n monthFormat={monthFormat}\n onSelect={this.handleSelectedDateUpdate}\n onLabelClick={this.switchToYears}\n onViewDateUpdate={this.handleViewDateUpdate}\n />\n )}\n {mode === 'month' && (\n <MonthCalendar\n selectedDate={selectedDate}\n min={min}\n max={max}\n viewYear={viewYear}\n placeholder={placeholder}\n onSelect={this.switchToDays}\n onLabelClick={this.switchToYears}\n onViewDateUpdate={this.handleViewDateUpdate}\n />\n )}\n {mode === 'year' && (\n <YearCalendar\n selectedDate={selectedDate}\n min={min}\n max={max}\n viewYear={viewYear}\n placeholder={placeholder}\n onSelect={this.switchToMonths}\n onViewDateUpdate={this.handleViewDateUpdate}\n />\n )}\n </div>\n );\n };\n\n handleClear = () => {\n this.props.onChange(null);\n this.focusOn('.np-date-trigger');\n };\n\n render() {\n const { selectedDate, open } = this.state;\n\n const {\n inputAttributes,\n id: idProp,\n 'aria-labelledby': ariaLabelledByProp,\n size,\n placeholder,\n label,\n monthFormat,\n disabled,\n clearable,\n value,\n } = this.props;\n const id = idProp ?? inputAttributes?.id;\n const ariaLabelledBy = ariaLabelledByProp ?? inputAttributes?.['aria-labelledby'];\n\n return (\n <div\n ref={this.element}\n {...inputAttributes}\n id={id}\n className=\"input-group\"\n onKeyDown={this.handleKeyDown}\n >\n <OverlayIdProvider open={open}>\n <DateTrigger\n ariaLabelledBy={ariaLabelledBy}\n selectedDate={selectedDate}\n size={size}\n placeholder={placeholder}\n label={label}\n monthFormat={monthFormat}\n disabled={disabled || false}\n onClick={this.open}\n onClear={!disabled && clearable && value ? this.handleClear : undefined}\n />\n <ResponsivePanel\n anchorRef={this.element}\n open={open}\n className=\"tw-date-lookup-menu\"\n position={Position.BOTTOM}\n onClose={this.discard}\n >\n {this.getCalendar()}\n </ResponsivePanel>\n </OverlayIdProvider>\n </div>\n );\n }\n}\n\nexport const DateLookupWithoutInputAttributes = DateLookup;\n\nexport default withInputAttributes(\n DateLookup as React.ComponentType<DateLookupPropsWithInputAttributes>,\n { nonLabelable: true },\n);\n"],"names":["DateLookup","PureComponent","defaultProps","value","min","max","size","Size","MEDIUM","placeholder","label","monthFormat","MonthFormat","LONG","disabled","clearable","element","createRef","dropdown","constructor","props","dateView","returnDateView","state","selectedDate","getStartOfDay","originalDate","viewMonth","getMonth","viewYear","getFullYear","open","mode","isMobile","getDerivedStateFromProps","propsSelected","propsMin","propsMax","hasSelectedChanged","getTime","hasMinChanged","hasMaxChanged","isWithinRange","onChange","moveToWithinRange","viewDateThatIsWithinRange","componentDidUpdate","previousProps","focusOn","mediaQuery","window","matchMedia","Breakpoint","SMALL","setState","matches","componentWillUnmount","onFocus","discard","close","onBlur","handleKeyDown","event","key","adjustDate","preventDefault","daysToAdd","monthsToAdd","yearsToAdd","date","Date","getDate","preferredElement","fallbackElement","current","querySelector","focus","switchMode","switchToDays","switchToMonths","switchToYears","handleSelectedDateUpdate","handleViewDateUpdate","month","year","getCalendar","_jsxs","className","clsx","children","_jsx","DayCalendar","onSelect","onLabelClick","onViewDateUpdate","MonthCalendar","YearCalendar","handleClear","render","inputAttributes","id","idProp","ariaLabelledByProp","ariaLabelledBy","ref","onKeyDown","OverlayIdProvider","DateTrigger","onClick","onClear","undefined","ResponsivePanel","anchorRef","position","Position","BOTTOM","onClose","withInputAttributes","nonLabelable"],"mappings":"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"}
@@ -37,7 +37,7 @@ import MonthCalendar from './monthCalendar/MonthCalendar.mjs';
37
37
  import YearCalendar from './yearCalendar/YearCalendar.mjs';
38
38
 
39
39
  class DateLookup extends PureComponent {
40
- static defaultProps = (() => ({
40
+ static defaultProps = {
41
41
  value: null,
42
42
  min: null,
43
43
  max: null,
@@ -47,9 +47,9 @@ class DateLookup extends PureComponent {
47
47
  monthFormat: MonthFormat.LONG,
48
48
  disabled: false,
49
49
  clearable: false
50
- }))();
51
- element = (() => /*#__PURE__*/createRef())();
52
- dropdown = (() => /*#__PURE__*/createRef())();
50
+ };
51
+ element = /*#__PURE__*/createRef();
52
+ dropdown = /*#__PURE__*/createRef();
53
53
  constructor(props) {
54
54
  super(props);
55
55
  const dateView = returnDateView(props.value, props.min, props.max);
@@ -1 +1 @@
1
- {"version":3,"file":"DateLookup.mjs","sources":["../../src/dateLookup/DateLookup.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { createRef, PureComponent, KeyboardEvent } from 'react';\n\nimport {\n Size,\n MonthFormat,\n Position,\n Breakpoint,\n type SizeSmall,\n type SizeMedium,\n type SizeLarge,\n} from '../common';\nimport { isWithinRange, moveToWithinRange, returnDateView } from '../common/dateUtils';\nimport ResponsivePanel from '../common/responsivePanel';\nimport { WithInputAttributesProps, withInputAttributes } from '../inputs/contexts';\nimport { OverlayIdContext, OverlayIdProvider } from '../provider/overlay/OverlayIdProvider';\nimport DateTrigger from './dateTrigger';\nimport DayCalendar from './dayCalendar';\nimport { getStartOfDay } from './getStartOfDay';\nimport MonthCalendar from './monthCalendar';\nimport YearCalendar from './yearCalendar';\n\nexport interface DateLookupProps {\n id?: string;\n value: Date | null;\n min?: Date | null;\n max?: Date | null;\n size?: SizeSmall | SizeMedium | SizeLarge;\n placeholder?: string;\n label?: string;\n 'aria-labelledby'?: string;\n monthFormat?: `${MonthFormat}`;\n disabled?: boolean;\n clearable?: boolean;\n onChange: (date: Date | null) => void;\n onFocus?: () => void;\n onBlur?: () => void;\n}\n\ntype DateLookupPropsWithInputAttributes = DateLookupProps & Partial<WithInputAttributesProps>;\n\ninterface DateLookupState {\n selectedDate: Date | null;\n originalDate: Date | null;\n min: Date | null;\n max: Date | null;\n viewMonth: number;\n viewYear: number;\n open: boolean;\n mode: 'day' | 'month' | 'year';\n isMobile: boolean;\n}\n\nclass DateLookup extends PureComponent<DateLookupPropsWithInputAttributes, DateLookupState> {\n declare props: DateLookupPropsWithInputAttributes &\n Required<Pick<DateLookupPropsWithInputAttributes, keyof typeof DateLookup.defaultProps>>;\n\n static defaultProps = {\n value: null,\n min: null,\n max: null,\n size: Size.MEDIUM,\n placeholder: '',\n label: '',\n monthFormat: MonthFormat.LONG,\n disabled: false,\n clearable: false,\n } satisfies Partial<DateLookupPropsWithInputAttributes>;\n\n element = createRef<HTMLDivElement>();\n dropdown = createRef<HTMLDivElement>();\n\n constructor(props: DateLookup['props']) {\n super(props);\n const dateView = returnDateView(props.value, props.min, props.max);\n this.state = {\n selectedDate: getStartOfDay(props.value),\n originalDate: null,\n min: getStartOfDay(props.min),\n max: getStartOfDay(props.max),\n viewMonth: dateView.getMonth(),\n viewYear: dateView.getFullYear(),\n open: false,\n mode: 'day',\n isMobile: false,\n };\n }\n\n static getDerivedStateFromProps(props: DateLookup['props'], state: DateLookupState) {\n const propsSelected = getStartOfDay(props.value);\n const propsMin = getStartOfDay(props.min);\n const propsMax = getStartOfDay(props.max);\n const hasSelectedChanged = state.selectedDate?.getTime() !== propsSelected?.getTime();\n const hasMinChanged = state.min?.getTime() !== propsMin?.getTime();\n const hasMaxChanged = state.max?.getTime() !== propsMax?.getTime();\n if (hasSelectedChanged || hasMinChanged || hasMaxChanged) {\n const selectedDate = hasSelectedChanged ? propsSelected : state.selectedDate;\n const min = hasMinChanged ? propsMin : state.min;\n const max = hasMaxChanged ? propsMax : state.max;\n if (selectedDate && !isWithinRange(selectedDate, min, max)) {\n props.onChange(moveToWithinRange(selectedDate, min, max));\n return null;\n }\n const viewDateThatIsWithinRange: Date = returnDateView(selectedDate, min, max);\n const viewMonth = viewDateThatIsWithinRange.getMonth();\n const viewYear = viewDateThatIsWithinRange.getFullYear();\n return { selectedDate, min, max, viewMonth, viewYear };\n }\n return null;\n }\n\n componentDidUpdate(previousProps: DateLookupPropsWithInputAttributes) {\n if (this.props.value?.getTime() !== previousProps.value?.getTime() && this.state.open) {\n this.focusOn('.active');\n }\n const mediaQuery = window.matchMedia(`(max-width: ${Breakpoint.SMALL}px)`);\n this.setState({ isMobile: mediaQuery.matches });\n }\n\n componentWillUnmount() {\n // Prevents memory leak by cleaning state.\n this.setState = () => {};\n }\n\n open = () => {\n const { onFocus } = this.props;\n\n this.setState({ open: true, mode: 'day' });\n if (onFocus) {\n onFocus();\n }\n };\n\n discard = () => {\n const { originalDate } = this.state;\n if (originalDate !== null) {\n this.props.onChange(originalDate);\n }\n this.close();\n };\n\n close = () => {\n const { onBlur } = this.props;\n this.setState({ open: false, originalDate: null });\n if (onBlur) {\n onBlur();\n }\n };\n\n handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const { open, originalDate } = this.state;\n switch (event.key) {\n case 'ArrowLeft':\n if (open) {\n this.adjustDate(-1, -1, -1);\n } else {\n this.open();\n }\n event.preventDefault();\n break;\n case 'ArrowUp':\n if (open) {\n this.adjustDate(-7, -4, -4);\n } else {\n this.open();\n }\n event.preventDefault();\n break;\n case 'ArrowRight':\n if (open) {\n this.adjustDate(1, 1, 1);\n } else {\n this.open();\n }\n event.preventDefault();\n break;\n case 'ArrowDown':\n if (open) {\n this.adjustDate(7, 4, 4);\n } else {\n this.open();\n }\n event.preventDefault();\n break;\n case 'Escape':\n if (originalDate !== null) {\n this.props.onChange(originalDate);\n }\n this.close();\n event.preventDefault();\n break;\n default:\n break;\n }\n };\n\n adjustDate = (daysToAdd: number, monthsToAdd: number, yearsToAdd: number) => {\n const { selectedDate, min, max, mode, originalDate } = this.state;\n if (originalDate === null) {\n this.setState({ originalDate: selectedDate });\n }\n let date: Date | null;\n if (selectedDate) {\n date = new Date(\n mode === 'year' ? selectedDate.getFullYear() + yearsToAdd : selectedDate.getFullYear(),\n mode === 'month' ? selectedDate.getMonth() + monthsToAdd : selectedDate.getMonth(),\n mode === 'day' ? selectedDate.getDate() + daysToAdd : selectedDate.getDate(),\n );\n } else {\n date = getStartOfDay(new Date());\n }\n date &&= moveToWithinRange(date, min, max);\n if (date?.getTime() !== selectedDate?.getTime()) {\n this.props.onChange(date);\n }\n };\n\n focusOn = (preferredElement: string, fallbackElement?: string) => {\n const element = this.element.current?.querySelector(preferredElement) as HTMLElement | null;\n if (element) {\n element.focus();\n } else if (fallbackElement) {\n this.focusOn(fallbackElement);\n }\n };\n\n switchMode = (mode: 'day' | 'month' | 'year') => {\n this.setState({ mode }, () => {\n this.focusOn('.active', '.today');\n });\n };\n\n switchToDays = () => this.switchMode('day');\n\n switchToMonths = () => this.switchMode('month');\n\n switchToYears = () => this.switchMode('year');\n\n handleSelectedDateUpdate = (selectedDate: Date) => {\n this.setState({ selectedDate }, () => {\n this.props.onChange(selectedDate);\n this.close();\n this.focusOn('.btn');\n });\n };\n\n handleViewDateUpdate = ({ month = this.state.viewMonth, year = this.state.viewYear }) => {\n this.setState({ viewMonth: month, viewYear: year });\n };\n\n getCalendar = () => {\n const { selectedDate, min, max, viewMonth, viewYear, mode, isMobile } = this.state;\n const { placeholder, monthFormat } = this.props;\n return (\n <div className={clsx({ 'p-a-1': !isMobile })}>\n {mode === 'day' && (\n <DayCalendar\n selectedDate={selectedDate}\n min={min}\n max={max}\n viewMonth={viewMonth}\n viewYear={viewYear}\n monthFormat={monthFormat}\n onSelect={this.handleSelectedDateUpdate}\n onLabelClick={this.switchToYears}\n onViewDateUpdate={this.handleViewDateUpdate}\n />\n )}\n {mode === 'month' && (\n <MonthCalendar\n selectedDate={selectedDate}\n min={min}\n max={max}\n viewYear={viewYear}\n placeholder={placeholder}\n onSelect={this.switchToDays}\n onLabelClick={this.switchToYears}\n onViewDateUpdate={this.handleViewDateUpdate}\n />\n )}\n {mode === 'year' && (\n <YearCalendar\n selectedDate={selectedDate}\n min={min}\n max={max}\n viewYear={viewYear}\n placeholder={placeholder}\n onSelect={this.switchToMonths}\n onViewDateUpdate={this.handleViewDateUpdate}\n />\n )}\n </div>\n );\n };\n\n handleClear = () => {\n this.props.onChange(null);\n this.focusOn('.np-date-trigger');\n };\n\n render() {\n const { selectedDate, open } = this.state;\n\n const {\n inputAttributes,\n id: idProp,\n 'aria-labelledby': ariaLabelledByProp,\n size,\n placeholder,\n label,\n monthFormat,\n disabled,\n clearable,\n value,\n } = this.props;\n const id = idProp ?? inputAttributes?.id;\n const ariaLabelledBy = ariaLabelledByProp ?? inputAttributes?.['aria-labelledby'];\n\n return (\n <div\n ref={this.element}\n {...inputAttributes}\n id={id}\n className=\"input-group\"\n onKeyDown={this.handleKeyDown}\n >\n <OverlayIdProvider open={open}>\n <DateTrigger\n ariaLabelledBy={ariaLabelledBy}\n selectedDate={selectedDate}\n size={size}\n placeholder={placeholder}\n label={label}\n monthFormat={monthFormat}\n disabled={disabled || false}\n onClick={this.open}\n onClear={!disabled && clearable && value ? this.handleClear : undefined}\n />\n <ResponsivePanel\n anchorRef={this.element}\n open={open}\n className=\"tw-date-lookup-menu\"\n position={Position.BOTTOM}\n onClose={this.discard}\n >\n {this.getCalendar()}\n </ResponsivePanel>\n </OverlayIdProvider>\n </div>\n );\n }\n}\n\nexport const DateLookupWithoutInputAttributes = DateLookup;\n\nexport default withInputAttributes(\n DateLookup as React.ComponentType<DateLookupPropsWithInputAttributes>,\n { nonLabelable: true },\n);\n"],"names":["DateLookup","PureComponent","defaultProps","value","min","max","size","Size","MEDIUM","placeholder","label","monthFormat","MonthFormat","LONG","disabled","clearable","element","createRef","dropdown","constructor","props","dateView","returnDateView","state","selectedDate","getStartOfDay","originalDate","viewMonth","getMonth","viewYear","getFullYear","open","mode","isMobile","getDerivedStateFromProps","propsSelected","propsMin","propsMax","hasSelectedChanged","getTime","hasMinChanged","hasMaxChanged","isWithinRange","onChange","moveToWithinRange","viewDateThatIsWithinRange","componentDidUpdate","previousProps","focusOn","mediaQuery","window","matchMedia","Breakpoint","SMALL","setState","matches","componentWillUnmount","onFocus","discard","close","onBlur","handleKeyDown","event","key","adjustDate","preventDefault","daysToAdd","monthsToAdd","yearsToAdd","date","Date","getDate","preferredElement","fallbackElement","current","querySelector","focus","switchMode","switchToDays","switchToMonths","switchToYears","handleSelectedDateUpdate","handleViewDateUpdate","month","year","getCalendar","_jsxs","className","clsx","children","_jsx","DayCalendar","onSelect","onLabelClick","onViewDateUpdate","MonthCalendar","YearCalendar","handleClear","render","inputAttributes","id","idProp","ariaLabelledByProp","ariaLabelledBy","ref","onKeyDown","OverlayIdProvider","DateTrigger","onClick","onClear","undefined","ResponsivePanel","anchorRef","position","Position","BOTTOM","onClose","withInputAttributes","nonLabelable"],"mappings":"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"}
1
+ {"version":3,"file":"DateLookup.mjs","sources":["../../src/dateLookup/DateLookup.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport { createRef, PureComponent, KeyboardEvent } from 'react';\n\nimport {\n Size,\n MonthFormat,\n Position,\n Breakpoint,\n type SizeSmall,\n type SizeMedium,\n type SizeLarge,\n} from '../common';\nimport { isWithinRange, moveToWithinRange, returnDateView } from '../common/dateUtils';\nimport ResponsivePanel from '../common/responsivePanel';\nimport { WithInputAttributesProps, withInputAttributes } from '../inputs/contexts';\nimport { OverlayIdContext, OverlayIdProvider } from '../provider/overlay/OverlayIdProvider';\nimport DateTrigger from './dateTrigger';\nimport DayCalendar from './dayCalendar';\nimport { getStartOfDay } from './getStartOfDay';\nimport MonthCalendar from './monthCalendar';\nimport YearCalendar from './yearCalendar';\n\nexport interface DateLookupProps {\n id?: string;\n value: Date | null;\n min?: Date | null;\n max?: Date | null;\n size?: SizeSmall | SizeMedium | SizeLarge;\n placeholder?: string;\n label?: string;\n 'aria-labelledby'?: string;\n monthFormat?: `${MonthFormat}`;\n disabled?: boolean;\n clearable?: boolean;\n onChange: (date: Date | null) => void;\n onFocus?: () => void;\n onBlur?: () => void;\n}\n\ntype DateLookupPropsWithInputAttributes = DateLookupProps & Partial<WithInputAttributesProps>;\n\ninterface DateLookupState {\n selectedDate: Date | null;\n originalDate: Date | null;\n min: Date | null;\n max: Date | null;\n viewMonth: number;\n viewYear: number;\n open: boolean;\n mode: 'day' | 'month' | 'year';\n isMobile: boolean;\n}\n\nclass DateLookup extends PureComponent<DateLookupPropsWithInputAttributes, DateLookupState> {\n declare props: DateLookupPropsWithInputAttributes &\n Required<Pick<DateLookupPropsWithInputAttributes, keyof typeof DateLookup.defaultProps>>;\n\n static defaultProps = {\n value: null,\n min: null,\n max: null,\n size: Size.MEDIUM,\n placeholder: '',\n label: '',\n monthFormat: MonthFormat.LONG,\n disabled: false,\n clearable: false,\n } satisfies Partial<DateLookupPropsWithInputAttributes>;\n\n element = createRef<HTMLDivElement>();\n dropdown = createRef<HTMLDivElement>();\n\n constructor(props: DateLookup['props']) {\n super(props);\n const dateView = returnDateView(props.value, props.min, props.max);\n this.state = {\n selectedDate: getStartOfDay(props.value),\n originalDate: null,\n min: getStartOfDay(props.min),\n max: getStartOfDay(props.max),\n viewMonth: dateView.getMonth(),\n viewYear: dateView.getFullYear(),\n open: false,\n mode: 'day',\n isMobile: false,\n };\n }\n\n static getDerivedStateFromProps(props: DateLookup['props'], state: DateLookupState) {\n const propsSelected = getStartOfDay(props.value);\n const propsMin = getStartOfDay(props.min);\n const propsMax = getStartOfDay(props.max);\n const hasSelectedChanged = state.selectedDate?.getTime() !== propsSelected?.getTime();\n const hasMinChanged = state.min?.getTime() !== propsMin?.getTime();\n const hasMaxChanged = state.max?.getTime() !== propsMax?.getTime();\n if (hasSelectedChanged || hasMinChanged || hasMaxChanged) {\n const selectedDate = hasSelectedChanged ? propsSelected : state.selectedDate;\n const min = hasMinChanged ? propsMin : state.min;\n const max = hasMaxChanged ? propsMax : state.max;\n if (selectedDate && !isWithinRange(selectedDate, min, max)) {\n props.onChange(moveToWithinRange(selectedDate, min, max));\n return null;\n }\n const viewDateThatIsWithinRange: Date = returnDateView(selectedDate, min, max);\n const viewMonth = viewDateThatIsWithinRange.getMonth();\n const viewYear = viewDateThatIsWithinRange.getFullYear();\n return { selectedDate, min, max, viewMonth, viewYear };\n }\n return null;\n }\n\n componentDidUpdate(previousProps: DateLookupPropsWithInputAttributes) {\n if (this.props.value?.getTime() !== previousProps.value?.getTime() && this.state.open) {\n this.focusOn('.active');\n }\n const mediaQuery = window.matchMedia(`(max-width: ${Breakpoint.SMALL}px)`);\n this.setState({ isMobile: mediaQuery.matches });\n }\n\n componentWillUnmount() {\n // Prevents memory leak by cleaning state.\n this.setState = () => {};\n }\n\n open = () => {\n const { onFocus } = this.props;\n\n this.setState({ open: true, mode: 'day' });\n if (onFocus) {\n onFocus();\n }\n };\n\n discard = () => {\n const { originalDate } = this.state;\n if (originalDate !== null) {\n this.props.onChange(originalDate);\n }\n this.close();\n };\n\n close = () => {\n const { onBlur } = this.props;\n this.setState({ open: false, originalDate: null });\n if (onBlur) {\n onBlur();\n }\n };\n\n handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const { open, originalDate } = this.state;\n switch (event.key) {\n case 'ArrowLeft':\n if (open) {\n this.adjustDate(-1, -1, -1);\n } else {\n this.open();\n }\n event.preventDefault();\n break;\n case 'ArrowUp':\n if (open) {\n this.adjustDate(-7, -4, -4);\n } else {\n this.open();\n }\n event.preventDefault();\n break;\n case 'ArrowRight':\n if (open) {\n this.adjustDate(1, 1, 1);\n } else {\n this.open();\n }\n event.preventDefault();\n break;\n case 'ArrowDown':\n if (open) {\n this.adjustDate(7, 4, 4);\n } else {\n this.open();\n }\n event.preventDefault();\n break;\n case 'Escape':\n if (originalDate !== null) {\n this.props.onChange(originalDate);\n }\n this.close();\n event.preventDefault();\n break;\n default:\n break;\n }\n };\n\n adjustDate = (daysToAdd: number, monthsToAdd: number, yearsToAdd: number) => {\n const { selectedDate, min, max, mode, originalDate } = this.state;\n if (originalDate === null) {\n this.setState({ originalDate: selectedDate });\n }\n let date: Date | null;\n if (selectedDate) {\n date = new Date(\n mode === 'year' ? selectedDate.getFullYear() + yearsToAdd : selectedDate.getFullYear(),\n mode === 'month' ? selectedDate.getMonth() + monthsToAdd : selectedDate.getMonth(),\n mode === 'day' ? selectedDate.getDate() + daysToAdd : selectedDate.getDate(),\n );\n } else {\n date = getStartOfDay(new Date());\n }\n date &&= moveToWithinRange(date, min, max);\n if (date?.getTime() !== selectedDate?.getTime()) {\n this.props.onChange(date);\n }\n };\n\n focusOn = (preferredElement: string, fallbackElement?: string) => {\n const element = this.element.current?.querySelector(preferredElement) as HTMLElement | null;\n if (element) {\n element.focus();\n } else if (fallbackElement) {\n this.focusOn(fallbackElement);\n }\n };\n\n switchMode = (mode: 'day' | 'month' | 'year') => {\n this.setState({ mode }, () => {\n this.focusOn('.active', '.today');\n });\n };\n\n switchToDays = () => this.switchMode('day');\n\n switchToMonths = () => this.switchMode('month');\n\n switchToYears = () => this.switchMode('year');\n\n handleSelectedDateUpdate = (selectedDate: Date) => {\n this.setState({ selectedDate }, () => {\n this.props.onChange(selectedDate);\n this.close();\n this.focusOn('.btn');\n });\n };\n\n handleViewDateUpdate = ({ month = this.state.viewMonth, year = this.state.viewYear }) => {\n this.setState({ viewMonth: month, viewYear: year });\n };\n\n getCalendar = () => {\n const { selectedDate, min, max, viewMonth, viewYear, mode, isMobile } = this.state;\n const { placeholder, monthFormat } = this.props;\n return (\n <div className={clsx({ 'p-a-1': !isMobile })}>\n {mode === 'day' && (\n <DayCalendar\n selectedDate={selectedDate}\n min={min}\n max={max}\n viewMonth={viewMonth}\n viewYear={viewYear}\n monthFormat={monthFormat}\n onSelect={this.handleSelectedDateUpdate}\n onLabelClick={this.switchToYears}\n onViewDateUpdate={this.handleViewDateUpdate}\n />\n )}\n {mode === 'month' && (\n <MonthCalendar\n selectedDate={selectedDate}\n min={min}\n max={max}\n viewYear={viewYear}\n placeholder={placeholder}\n onSelect={this.switchToDays}\n onLabelClick={this.switchToYears}\n onViewDateUpdate={this.handleViewDateUpdate}\n />\n )}\n {mode === 'year' && (\n <YearCalendar\n selectedDate={selectedDate}\n min={min}\n max={max}\n viewYear={viewYear}\n placeholder={placeholder}\n onSelect={this.switchToMonths}\n onViewDateUpdate={this.handleViewDateUpdate}\n />\n )}\n </div>\n );\n };\n\n handleClear = () => {\n this.props.onChange(null);\n this.focusOn('.np-date-trigger');\n };\n\n render() {\n const { selectedDate, open } = this.state;\n\n const {\n inputAttributes,\n id: idProp,\n 'aria-labelledby': ariaLabelledByProp,\n size,\n placeholder,\n label,\n monthFormat,\n disabled,\n clearable,\n value,\n } = this.props;\n const id = idProp ?? inputAttributes?.id;\n const ariaLabelledBy = ariaLabelledByProp ?? inputAttributes?.['aria-labelledby'];\n\n return (\n <div\n ref={this.element}\n {...inputAttributes}\n id={id}\n className=\"input-group\"\n onKeyDown={this.handleKeyDown}\n >\n <OverlayIdProvider open={open}>\n <DateTrigger\n ariaLabelledBy={ariaLabelledBy}\n selectedDate={selectedDate}\n size={size}\n placeholder={placeholder}\n label={label}\n monthFormat={monthFormat}\n disabled={disabled || false}\n onClick={this.open}\n onClear={!disabled && clearable && value ? this.handleClear : undefined}\n />\n <ResponsivePanel\n anchorRef={this.element}\n open={open}\n className=\"tw-date-lookup-menu\"\n position={Position.BOTTOM}\n onClose={this.discard}\n >\n {this.getCalendar()}\n </ResponsivePanel>\n </OverlayIdProvider>\n </div>\n );\n }\n}\n\nexport const DateLookupWithoutInputAttributes = DateLookup;\n\nexport default withInputAttributes(\n DateLookup as React.ComponentType<DateLookupPropsWithInputAttributes>,\n { nonLabelable: true },\n);\n"],"names":["DateLookup","PureComponent","defaultProps","value","min","max","size","Size","MEDIUM","placeholder","label","monthFormat","MonthFormat","LONG","disabled","clearable","element","createRef","dropdown","constructor","props","dateView","returnDateView","state","selectedDate","getStartOfDay","originalDate","viewMonth","getMonth","viewYear","getFullYear","open","mode","isMobile","getDerivedStateFromProps","propsSelected","propsMin","propsMax","hasSelectedChanged","getTime","hasMinChanged","hasMaxChanged","isWithinRange","onChange","moveToWithinRange","viewDateThatIsWithinRange","componentDidUpdate","previousProps","focusOn","mediaQuery","window","matchMedia","Breakpoint","SMALL","setState","matches","componentWillUnmount","onFocus","discard","close","onBlur","handleKeyDown","event","key","adjustDate","preventDefault","daysToAdd","monthsToAdd","yearsToAdd","date","Date","getDate","preferredElement","fallbackElement","current","querySelector","focus","switchMode","switchToDays","switchToMonths","switchToYears","handleSelectedDateUpdate","handleViewDateUpdate","month","year","getCalendar","_jsxs","className","clsx","children","_jsx","DayCalendar","onSelect","onLabelClick","onViewDateUpdate","MonthCalendar","YearCalendar","handleClear","render","inputAttributes","id","idProp","ariaLabelledByProp","ariaLabelledBy","ref","onKeyDown","OverlayIdProvider","DateTrigger","onClick","onClear","undefined","ResponsivePanel","anchorRef","position","Position","BOTTOM","onClose","withInputAttributes","nonLabelable"],"mappings":"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"}
@@ -51,9 +51,9 @@ class DayCalendarTable extends React.PureComponent {
51
51
  }
52
52
  return weeks;
53
53
  };
54
- days = (() => getDayNames.getDayNames(this.props.intl.locale, 'short'))();
55
- daysShort = (() => getDayNames.getDayNames(this.props.intl.locale, 'narrow'))();
56
- daysLong = (() => getDayNames.getDayNames(this.props.intl.locale, 'long'))();
54
+ days = getDayNames.getDayNames(this.props.intl.locale, 'short');
55
+ daysShort = getDayNames.getDayNames(this.props.intl.locale, 'narrow');
56
+ daysLong = getDayNames.getDayNames(this.props.intl.locale, 'long');
57
57
  selectDay = day => {
58
58
  const {
59
59
  viewMonth,
@@ -1 +1 @@
1
- {"version":3,"file":"DayCalendarTable.js","sources":["../../../../src/dateLookup/dayCalendar/table/DayCalendarTable.tsx"],"sourcesContent":["import { formatDate } from '@transferwise/formatting';\nimport { PureComponent } from 'react';\nimport { injectIntl, type WrappedComponentProps } from 'react-intl';\n\nimport { getDayNames, isWithinRange } from '../../../common/dateUtils';\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 min: Date | null;\n max: Date | null;\n viewMonth: number;\n viewYear: number;\n onSelect: (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 isDisabled = (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\n return !isWithinRange(date, min, max);\n };\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 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.isActive,\n isNow: this.isToday,\n isDisabled: this.isDisabled,\n timeSpan: days,\n });\n };\n\n render() {\n const { viewMonth, viewYear, intl } = 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 <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(new Date(viewYear, viewMonth, day), intl.locale)}\n active={this.isActive(day)}\n disabled={this.isDisabled(day)}\n today={this.isToday(day)}\n onClick={this.selectDay}\n />\n )}\n </td>\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","isDisabled","min","max","date","isWithinRange","isActive","selectedDate","Number","isToday","getStartOfDay","getAutofocusDay","flatMap","getFocusableTime","isNow","timeSpan","render","autoFocusDay","_jsxs","className","children","_jsx","map","index","title","slice","weekIndex","dayIndex","TableLink","item","type","formatDate","autofocus","longTitle","active","disabled","today","onClick","injectIntl"],"mappings":";;;;;;;;;;;;;;AASA,MAAMA,gBAAgB,GAA+B;AAAEC,EAAAA,GAAG,EAAE;CAAW;AAWvE,MAAMC,gBAAiB,SAAQC,mBAAoC,CAAA;EACjEC,iBAAiB,GAAGA,MAAK;IACvB,MAAM;MAAEC,SAAS;AAAEC,MAAAA;KAAU,GAAG,IAAI,CAACC,KAAK;AAC1C,IAAA,IAAIC,eAAe,GAAG,IAAIC,IAAI,CAACH,QAAQ,EAAED,SAAS,EAAE,CAAC,CAAC,CAACK,MAAM,EAAE;AAC/D;IACA,IAAIF,eAAe,KAAK,CAAC,EAAE;AACzBA,MAAAA,eAAe,GAAG,CAAC;AACrB;AACA,IAAA,MAAMG,WAAW,GAAG,IAAIF,IAAI,CAACH,QAAQ,EAAED,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC,CAACO,OAAO,EAAE;IAElE,IAAIC,IAAI,GAAa,EAAE;IACvB,MAAMC,KAAK,GAAe,EAAE;AAC5B,IAAA,IAAIC,CAAC;AAEL;IACA,KAAKA,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGP,eAAe,EAAEO,CAAC,IAAI,CAAC,EAAE;AACvCF,MAAAA,IAAI,CAACG,IAAI,CAAC,EAAE,CAAC;AACf;AACA;IACA,KAAKD,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIJ,WAAW,EAAEI,CAAC,IAAI,CAAC,EAAE;AACpCF,MAAAA,IAAI,CAACG,IAAI,CAACD,CAAC,CAAC;MACZ,IAAI,CAACP,eAAe,GAAGO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACvCD,QAAAA,KAAK,CAACE,IAAI,CAACH,IAAI,CAAC;AAChBA,QAAAA,IAAI,GAAG,EAAE;AACX;AACF;AACA,IAAA,IAAIA,IAAI,CAACI,MAAM,GAAG,CAAC,EAAE;AACnB;AACA,MAAA,KAAKF,CAAC,GAAGF,IAAI,CAACI,MAAM,EAAEF,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI,CAAC,EAAE;AACnCF,QAAAA,IAAI,CAACG,IAAI,CAAC,EAAE,CAAC;AACf;AACAF,MAAAA,KAAK,CAACE,IAAI,CAACH,IAAI,CAAC;AAClB;AACA,IAAA,OAAOC,KAAK;GACb;AAEDI,EAAAA,IAAI,GAAGC,CAAAA,MAAAA,uBAAW,CAAC,IAAI,CAACZ,KAAK,CAACa,IAAI,CAACC,MAAM,EAAE,OAAO,CAAC,GAAA;AACnDC,EAAAA,SAAS,GAAGH,CAAAA,MAAAA,uBAAW,CAAC,IAAI,CAACZ,KAAK,CAACa,IAAI,CAACC,MAAM,EAAE,QAAQ,CAAC,GAAA;AACzDE,EAAAA,QAAQ,GAAGJ,CAAAA,MAAAA,uBAAW,CAAC,IAAI,CAACZ,KAAK,CAACa,IAAI,CAACC,MAAM,EAAE,MAAM,CAAC,GAAA;EAEtDG,SAAS,GAAIvB,GAAW,IAAI;IAC1B,MAAM;MAAEI,SAAS;MAAEC,QAAQ;AAAEmB,MAAAA;KAAU,GAAG,IAAI,CAAClB,KAAK;IACpDkB,QAAQ,CAAC,IAAIhB,IAAI,CAACH,QAAQ,EAAED,SAAS,EAAEJ,GAAG,CAAC,CAAC;GAC7C;EAEDyB,UAAU,GAAIzB,GAAW,IAAI;IAC3B,IAAIA,GAAG,GAAG,CAAC,EAAE;AACX,MAAA,OAAO,IAAI;AACb;IACA,MAAM;MAAE0B,GAAG;MAAEC,GAAG;MAAEvB,SAAS;AAAEC,MAAAA;KAAU,GAAG,IAAI,CAACC,KAAK;IACpD,MAAMsB,IAAI,GAAG,IAAIpB,IAAI,CAACH,QAAQ,EAAED,SAAS,EAAEJ,GAAG,CAAC;IAE/C,OAAO,CAAC6B,2BAAa,CAACD,IAAI,EAAEF,GAAG,EAAEC,GAAG,CAAC;GACtC;EAEDG,QAAQ,GAAI9B,GAAW,IAAI;IACzB,MAAM;MAAE+B,YAAY;MAAE3B,SAAS;AAAEC,MAAAA;KAAU,GAAG,IAAI,CAACC,KAAK;IACxD,OAAO,CAAC,EAAEyB,YAAY,IAAIC,MAAM,CAAC,IAAIxB,IAAI,CAACH,QAAQ,EAAED,SAAS,EAAEJ,GAAG,CAAC,CAAC,KAAKgC,MAAM,CAACD,YAAY,CAAC,CAAC;GAC/F;EAEDE,OAAO,GAAIjC,GAAW,IAAI;IACxB,MAAM;MAAEI,SAAS;AAAEC,MAAAA;KAAU,GAAG,IAAI,CAACC,KAAK;IAC1C,OAAO0B,MAAM,CAACE,2BAAa,CAAC,IAAI1B,IAAI,EAAE,CAAC,CAAC,KAAKwB,MAAM,CAAC,IAAIxB,IAAI,CAACH,QAAQ,EAAED,SAAS,EAAEJ,GAAG,CAAC,CAAC;GACxF;EAEDmC,eAAe,GAAItB,KAAiB,IAAI;IACtC,MAAMI,IAAI,GAAGJ,KAAK,CAACuB,OAAO,CAAExB,IAAI,IAAKA,IAAI,CAAC;AAC1C,IAAA,OAAOyB,iCAAgB,CAAC;MACtBP,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBQ,KAAK,EAAE,IAAI,CAACL,OAAO;MACnBR,UAAU,EAAE,IAAI,CAACA,UAAU;AAC3Bc,MAAAA,QAAQ,EAAEtB;AACX,KAAA,CAAC;GACH;AAEDuB,EAAAA,MAAMA,GAAA;IACJ,MAAM;MAAEpC,SAAS;MAAEC,QAAQ;AAAEc,MAAAA;KAAM,GAAG,IAAI,CAACb,KAAK;AAChD,IAAA,MAAMO,KAAK,GAAG,IAAI,CAACV,iBAAiB,EAAE;AACtC,IAAA,MAAMsC,YAAY,GAAG,IAAI,CAACN,eAAe,CAACtB,KAAK,CAAC;AAChD,IAAA,oBACE6B,eAAA,CAAA,OAAA,EAAA;AAAOC,MAAAA,SAAS,EAAC,oEAAoE;AAAAC,MAAAA,QAAA,gBACnFC,cAAA,CAAA,OAAA,EAAA;AAAAD,QAAAA,QAAA,eACEC,cAAA,CAAA,IAAA,EAAA;AAAAD,UAAAA,QAAA,EACG,IAAI,CAAC3B,IAAI,CAAC6B,GAAG,CAAC,CAAC9C,GAAG,EAAE+C,KAAK,kBACxBL,eAAA,CAAA,IAAA,EAAA;AAEEC,YAAAA,SAAS,EACPI,KAAK,GAAG,CAAC,GACL,qCAAqC,GACrC,0CACL;AAAAH,YAAAA,QAAA,gBAEDC,cAAA,CAAA,MAAA,EAAA;AAAMF,cAAAA,SAAS,EAAC,WAAW;AAAAC,cAAAA,QAAA,eACzBC,cAAA,CAAA,MAAA,EAAA;AAAMG,gBAAAA,KAAK,EAAE,IAAI,CAAC1B,QAAQ,CAACyB,KAAK,CAAE;AAAAH,gBAAAA,QAAA,EAAE5C,GAAG,CAACiD,KAAK,CAAC,CAAC,EAAE,CAAC;eAAQ;aACtD,CACN,eAAAJ,cAAA,CAAA,MAAA,EAAA;AAAMF,cAAAA,SAAS,EAAC,yBAAyB;AAAAC,cAAAA,QAAA,eACvCC,cAAA,CAAA,MAAA,EAAA;AAAMG,gBAAAA,KAAK,EAAE,IAAI,CAAC1B,QAAQ,CAACyB,KAAK,CAAE;AAAAH,gBAAAA,QAAA,EAAE,IAAI,CAACvB,SAAS,CAAC0B,KAAK,CAAC,CAACE,KAAK,CAAC,CAAC,EAAE,CAAC;eAAQ;AAC9E,aAAM,CACR;AAAA,WAAA,EAbOjD,GAaH,CACL;SACC;OACC,CACP,eAAA6C,cAAA,CAAA,OAAA,EAAA;QAAAD,QAAA,EAEG/B,KAAK,CAACiC,GAAG,CAAC,CAAClC,IAAI,EAAEsC,SAAS,kBACzBL,cAAA,CAAA,IAAA,EAAA;UAAAD,QAAA,EACGhC,IAAI,CAACkC,GAAG,CAAC,CAAC9C,GAAG,EAAEmD,QAAQ,kBACtBN,cAAA,CAAA,IAAA,EAAA;AAAmBF,YAAAA,SAAS,EAAEQ,QAAQ,GAAG,CAAC,GAAG,SAAS,GAAG,EAAG;YAAAP,QAAA,EACzD5C,GAAG,KAAK,EAAE,iBACT6C,cAAA,CAACO,iBAAS,EAAA;AACRC,cAAAA,IAAI,EAAErD,GAAI;AACVsD,cAAAA,IAAI,EAAC,KAAK;AACVN,cAAAA,KAAK,EAAEO,qBAAU,CACf,IAAI/C,IAAI,CAACH,QAAQ,EAAED,SAAS,EAAEJ,GAAG,CAAC,EAClCmB,IAAI,CAACC,MAAM,EACXrB,gBAAgB,CAChB;cACFyD,SAAS,EAAExD,GAAG,KAAKyC,YAAa;AAChCgB,cAAAA,SAAS,EAAEF,qBAAU,CAAC,IAAI/C,IAAI,CAACH,QAAQ,EAAED,SAAS,EAAEJ,GAAG,CAAC,EAAEmB,IAAI,CAACC,MAAM,CAAE;AACvEsC,cAAAA,MAAM,EAAE,IAAI,CAAC5B,QAAQ,CAAC9B,GAAG,CAAE;AAC3B2D,cAAAA,QAAQ,EAAE,IAAI,CAAClC,UAAU,CAACzB,GAAG,CAAE;AAC/B4D,cAAAA,KAAK,EAAE,IAAI,CAAC3B,OAAO,CAACjC,GAAG,CAAE;cACzB6D,OAAO,EAAE,IAAI,CAACtC;aACd;AACH,WAAA,EAjBM4B,QAkBL,CACL;AAAC,SAAA,EArBKD,SAsBL,CACL;AAAC,OAEG,CACT;AAAA,KAAO,CAAC;AAEZ;AACD;AAED,yBAAeY,oBAAU,CAAC7D,gBAAgB,CAAC;;;;"}
1
+ {"version":3,"file":"DayCalendarTable.js","sources":["../../../../src/dateLookup/dayCalendar/table/DayCalendarTable.tsx"],"sourcesContent":["import { formatDate } from '@transferwise/formatting';\nimport { PureComponent } from 'react';\nimport { injectIntl, type WrappedComponentProps } from 'react-intl';\n\nimport { getDayNames, isWithinRange } from '../../../common/dateUtils';\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 min: Date | null;\n max: Date | null;\n viewMonth: number;\n viewYear: number;\n onSelect: (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 isDisabled = (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\n return !isWithinRange(date, min, max);\n };\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 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.isActive,\n isNow: this.isToday,\n isDisabled: this.isDisabled,\n timeSpan: days,\n });\n };\n\n render() {\n const { viewMonth, viewYear, intl } = 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 <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(new Date(viewYear, viewMonth, day), intl.locale)}\n active={this.isActive(day)}\n disabled={this.isDisabled(day)}\n today={this.isToday(day)}\n onClick={this.selectDay}\n />\n )}\n </td>\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","isDisabled","min","max","date","isWithinRange","isActive","selectedDate","Number","isToday","getStartOfDay","getAutofocusDay","flatMap","getFocusableTime","isNow","timeSpan","render","autoFocusDay","_jsxs","className","children","_jsx","map","index","title","slice","weekIndex","dayIndex","TableLink","item","type","formatDate","autofocus","longTitle","active","disabled","today","onClick","injectIntl"],"mappings":"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"}
@@ -47,9 +47,9 @@ class DayCalendarTable extends PureComponent {
47
47
  }
48
48
  return weeks;
49
49
  };
50
- days = (() => getDayNames(this.props.intl.locale, 'short'))();
51
- daysShort = (() => getDayNames(this.props.intl.locale, 'narrow'))();
52
- daysLong = (() => getDayNames(this.props.intl.locale, 'long'))();
50
+ days = getDayNames(this.props.intl.locale, 'short');
51
+ daysShort = getDayNames(this.props.intl.locale, 'narrow');
52
+ daysLong = getDayNames(this.props.intl.locale, 'long');
53
53
  selectDay = day => {
54
54
  const {
55
55
  viewMonth,
@@ -1 +1 @@
1
- {"version":3,"file":"DayCalendarTable.mjs","sources":["../../../../src/dateLookup/dayCalendar/table/DayCalendarTable.tsx"],"sourcesContent":["import { formatDate } from '@transferwise/formatting';\nimport { PureComponent } from 'react';\nimport { injectIntl, type WrappedComponentProps } from 'react-intl';\n\nimport { getDayNames, isWithinRange } from '../../../common/dateUtils';\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 min: Date | null;\n max: Date | null;\n viewMonth: number;\n viewYear: number;\n onSelect: (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 isDisabled = (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\n return !isWithinRange(date, min, max);\n };\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 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.isActive,\n isNow: this.isToday,\n isDisabled: this.isDisabled,\n timeSpan: days,\n });\n };\n\n render() {\n const { viewMonth, viewYear, intl } = 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 <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(new Date(viewYear, viewMonth, day), intl.locale)}\n active={this.isActive(day)}\n disabled={this.isDisabled(day)}\n today={this.isToday(day)}\n onClick={this.selectDay}\n />\n )}\n </td>\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","isDisabled","min","max","date","isWithinRange","isActive","selectedDate","Number","isToday","getStartOfDay","getAutofocusDay","flatMap","getFocusableTime","isNow","timeSpan","render","autoFocusDay","_jsxs","className","children","_jsx","map","index","title","slice","weekIndex","dayIndex","TableLink","item","type","formatDate","autofocus","longTitle","active","disabled","today","onClick","injectIntl"],"mappings":"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"}
1
+ {"version":3,"file":"DayCalendarTable.mjs","sources":["../../../../src/dateLookup/dayCalendar/table/DayCalendarTable.tsx"],"sourcesContent":["import { formatDate } from '@transferwise/formatting';\nimport { PureComponent } from 'react';\nimport { injectIntl, type WrappedComponentProps } from 'react-intl';\n\nimport { getDayNames, isWithinRange } from '../../../common/dateUtils';\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 min: Date | null;\n max: Date | null;\n viewMonth: number;\n viewYear: number;\n onSelect: (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 isDisabled = (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\n return !isWithinRange(date, min, max);\n };\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 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.isActive,\n isNow: this.isToday,\n isDisabled: this.isDisabled,\n timeSpan: days,\n });\n };\n\n render() {\n const { viewMonth, viewYear, intl } = 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 <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(new Date(viewYear, viewMonth, day), intl.locale)}\n active={this.isActive(day)}\n disabled={this.isDisabled(day)}\n today={this.isToday(day)}\n onClick={this.selectDay}\n />\n )}\n </td>\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","isDisabled","min","max","date","isWithinRange","isActive","selectedDate","Number","isToday","getStartOfDay","getAutofocusDay","flatMap","getFocusableTime","isNow","timeSpan","render","autoFocusDay","_jsxs","className","children","_jsx","map","index","title","slice","weekIndex","dayIndex","TableLink","item","type","formatDate","autofocus","longTitle","active","disabled","today","onClick","injectIntl"],"mappings":"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"}
@@ -55,11 +55,11 @@ const parseNumber = ({
55
55
  };
56
56
  const allowedInputKeys = new Set(['Backspace', 'Delete', ',', '.', 'ArrowDown', 'ArrowUp', 'ArrowLeft', 'ArrowRight', 'Enter', 'Escape', 'Tab']);
57
57
  class MoneyInput extends React.Component {
58
- static defaultProps = (() => ({
58
+ static defaultProps = {
59
59
  size: size.Size.LARGE,
60
60
  classNames: {},
61
61
  selectProps: {}
62
- }))();
62
+ };
63
63
  amountFocused = false;
64
64
  constructor(props) {
65
65
  super(props);
@@ -1 +1 @@
1
- {"version":3,"file":"MoneyInput.js","sources":["../../src/moneyInput/MoneyInput.tsx"],"sourcesContent":["import { isEmpty, isNumber, isNull } from '@transferwise/neptune-validation';\nimport { Flag } from '@wise/art';\nimport { clsx } from 'clsx';\nimport { Component } from 'react';\nimport { injectIntl, WrappedComponentProps } from 'react-intl';\n\nimport { Typography, Size, SizeLarge, SizeMedium, SizeSmall } from '../common';\nimport { withInputAttributes, WithInputAttributesProps } from '../inputs/contexts';\nimport { Input } from '../inputs/Input';\nimport {\n SelectInput,\n SelectInputItem,\n SelectInputOptionContent,\n SelectInputOptionItem,\n SelectInputProps,\n} from '../inputs/SelectInput';\nimport Title from '../title';\n\nimport messages from './MoneyInput.messages';\nimport { formatAmount, parseAmount } from './currencyFormatting';\nimport withId from '../withId';\n\nexport interface CurrencyOptionItem {\n header?: never;\n value: string;\n label: string;\n currency: string;\n note?: string;\n searchable?: string;\n}\n\nexport interface CurrencyHeaderItem {\n header: string;\n}\n\nexport type CurrencyItem = CurrencyOptionItem | CurrencyHeaderItem;\n\nconst isNumberOrNull = (v: unknown): v is number | null => isNumber(v) || isNull(v);\n\nconst formatAmountIfSet = ({\n amount,\n currency,\n locale,\n}: {\n amount: number | null | undefined;\n currency: string;\n locale: string;\n}) => {\n return typeof amount === 'number' ? formatAmount(amount, currency, locale) : '';\n};\n\nconst parseNumber = ({\n amount,\n currency,\n locale,\n}: {\n amount: string;\n currency: string;\n locale: string;\n}) => {\n return parseAmount(amount, currency, locale);\n};\n\nconst allowedInputKeys = new Set([\n 'Backspace',\n 'Delete',\n ',',\n '.',\n 'ArrowDown',\n 'ArrowUp',\n 'ArrowLeft',\n 'ArrowRight',\n 'Enter',\n 'Escape',\n 'Tab',\n]);\n\nexport interface MoneyInputProps extends WrappedComponentProps {\n id?: string;\n 'aria-labelledby'?: string;\n currencies: readonly CurrencyItem[];\n selectedCurrency: CurrencyOptionItem;\n onCurrencyChange?: (value: CurrencyOptionItem) => void;\n placeholder?: number;\n amount: number | null;\n size?: SizeSmall | SizeMedium | SizeLarge;\n onAmountChange?: (value: number | null) => void;\n addon?: React.ReactNode;\n searchPlaceholder?: string;\n /**\n * Allows the consumer to react to searching, while the search itself is handled internally.\n */\n onSearchChange?: (value: { searchQuery: string; filteredOptions: CurrencyItem[] }) => void;\n customActionLabel?: React.ReactNode;\n onCustomAction?: () => void;\n classNames?: Record<string, string>;\n selectProps?: Partial<SelectInputProps<CurrencyOptionItem>>;\n}\n\nexport type MoneyInputPropsWithInputAttributes = MoneyInputProps &\n Partial<WithInputAttributesProps>;\n\ninterface MoneyInputState {\n searchQuery: string;\n formattedAmount: string;\n locale: string;\n}\n\nclass MoneyInput extends Component<MoneyInputPropsWithInputAttributes, MoneyInputState> {\n declare props: MoneyInputPropsWithInputAttributes &\n Required<Pick<MoneyInputPropsWithInputAttributes, keyof typeof MoneyInput.defaultProps>>;\n\n static defaultProps = {\n size: Size.LARGE,\n classNames: {},\n selectProps: {},\n } satisfies Partial<MoneyInputPropsWithInputAttributes>;\n\n amountFocused = false;\n\n constructor(props: MoneyInputProps) {\n super(props);\n this.state = {\n searchQuery: '',\n formattedAmount: formatAmountIfSet({\n amount: props.amount,\n currency: props.selectedCurrency.currency,\n locale: props.intl.locale,\n }),\n locale: props.intl.locale,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps: MoneyInputProps) {\n this.setState({ locale: nextProps.intl.locale });\n\n if (!this.amountFocused) {\n this.setState({\n formattedAmount: formatAmountIfSet({\n amount: nextProps.amount,\n currency: nextProps.selectedCurrency.currency,\n locale: nextProps.intl.locale,\n }),\n });\n }\n }\n\n isInputAllowedForKeyEvent = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const { metaKey, key, ctrlKey } = event;\n const isNumberKey = isNumber(Number.parseInt(key, 10));\n\n return isNumberKey || metaKey || ctrlKey || allowedInputKeys.has(key);\n };\n\n handleKeyDown: React.KeyboardEventHandler<HTMLInputElement> = (event) => {\n if (!this.isInputAllowedForKeyEvent(event)) {\n event.preventDefault();\n }\n };\n\n handlePaste: React.ClipboardEventHandler<HTMLInputElement> = (event) => {\n const paste = event.clipboardData.getData('text');\n const { locale } = this.state;\n const parsed = isEmpty(paste)\n ? null\n : parseNumber({\n amount: paste,\n currency: this.props.selectedCurrency.currency,\n locale,\n });\n\n if (isNumberOrNull(parsed)) {\n this.setState({\n formattedAmount: formatAmountIfSet({\n amount: parsed,\n currency: this.props.selectedCurrency.currency,\n locale,\n }),\n });\n this.props.onAmountChange?.(parsed);\n }\n\n event.preventDefault();\n };\n\n onAmountChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n const { value } = event.target;\n this.setState({\n formattedAmount: value,\n });\n const parsed = isEmpty(value)\n ? null\n : parseNumber({\n amount: value,\n currency: this.props.selectedCurrency.currency,\n locale: this.state.locale,\n });\n if (isNumberOrNull(parsed)) {\n this.props.onAmountChange?.(parsed);\n }\n };\n\n onAmountBlur = () => {\n this.amountFocused = false;\n this.setAmount();\n };\n\n onAmountFocus = () => {\n this.amountFocused = true;\n };\n\n getSelectOptions() {\n const selectOptions = filterCurrenciesForQuery(this.props.currencies, this.state.searchQuery);\n\n const formattedOptions: SelectInputItem<CurrencyOptionItem>[] = [];\n let currentGroupOptions: SelectInputOptionItem<CurrencyOptionItem>[] | undefined;\n\n selectOptions.forEach((item) => {\n if (item.header != null) {\n currentGroupOptions = [];\n formattedOptions.push({\n type: 'group',\n label: item.header,\n options: currentGroupOptions,\n });\n } else {\n (currentGroupOptions ?? formattedOptions).push({\n type: 'option',\n value: item,\n filterMatchers: [item.value, item.label, item.note ?? '', item.searchable ?? ''],\n });\n }\n });\n\n return formattedOptions;\n }\n\n setAmount() {\n this.setState((previousState) => {\n const parsed = parseNumber({\n amount: previousState.formattedAmount,\n currency: this.props.selectedCurrency.currency,\n locale: previousState.locale,\n });\n if (!isNumberOrNull(parsed)) {\n return {\n formattedAmount: previousState.formattedAmount,\n };\n }\n return {\n formattedAmount: formatAmountIfSet({\n amount: parsed,\n currency: this.props.selectedCurrency.currency,\n locale: previousState.locale,\n }),\n };\n });\n }\n\n handleSelectChange = (value: CurrencyOptionItem) => {\n this.handleSearchChange('');\n this.props.onCurrencyChange?.(value);\n };\n\n handleSearchChange = (searchQuery: string) => {\n this.setState({ searchQuery });\n this.props.onSearchChange?.({\n searchQuery,\n filteredOptions: filterCurrenciesForQuery(this.props.currencies, searchQuery),\n });\n };\n\n style = (className: string) => this.props.classNames[className] || className;\n\n render() {\n const {\n inputAttributes,\n id: amountInputId,\n 'aria-labelledby': ariaLabelledByProp,\n selectedCurrency,\n onCurrencyChange,\n size,\n addon,\n selectProps,\n } = this.props;\n const ariaLabelledBy = ariaLabelledByProp ?? inputAttributes?.['aria-labelledby'];\n const selectOptions = this.getSelectOptions();\n\n const hasSingleCurrency = () => {\n if (selectOptions.length !== 0) {\n const firstItem = selectOptions[0];\n\n if (selectOptions.length === 1) {\n if (firstItem.type === 'option') {\n return firstItem.value.currency === selectedCurrency.currency;\n }\n if (firstItem.type === 'group') {\n return (\n firstItem.options.length === 1 &&\n !(this.props.onCustomAction && this.props.customActionLabel)\n );\n }\n }\n } else if (selectedCurrency?.currency) {\n return true;\n }\n\n return false;\n };\n\n const isFixedCurrency = (!this.state.searchQuery && hasSingleCurrency()) || !onCurrencyChange;\n const disabled = !this.props.onAmountChange;\n const selectedCurrencyElementId = `${inputAttributes?.id ?? amountInputId}SelectedCurrency`;\n\n return (\n <div\n role=\"group\"\n {...inputAttributes}\n aria-labelledby={ariaLabelledBy}\n className={clsx(\n this.style('tw-money-input'),\n this.style('input-group'),\n this.style(`input-group-${size}`),\n )}\n >\n <Input\n id={amountInputId}\n value={this.state.formattedAmount}\n inputMode=\"decimal\"\n disabled={disabled}\n placeholder={formatAmountIfSet({\n amount: this.props.placeholder,\n currency: this.props.selectedCurrency.currency,\n locale: this.state.locale,\n })}\n autoComplete=\"off\"\n aria-describedby={selectedCurrencyElementId}\n onKeyDown={this.handleKeyDown}\n onChange={this.onAmountChange}\n onFocus={this.onAmountFocus}\n onBlur={this.onAmountBlur}\n onPaste={this.handlePaste}\n />\n {addon && (\n <span\n className={clsx(\n this.style('input-group-addon'),\n this.style(`input-${size}`),\n disabled ? this.style('disabled') : '',\n )}\n >\n {addon}\n </span>\n )}\n {isFixedCurrency ? (\n <div\n className={clsx(\n this.style('input-group-addon'),\n this.style(`input-${size}`),\n this.style('tw-money-input__fixed-currency'),\n disabled ? this.style('disabled') : '',\n )}\n id={selectedCurrencyElementId}\n >\n {(size === 'lg' || size === 'md') && (\n <span className={clsx(this.style('money-input-currency-flag'), this.style('m-r-2'))}>\n <Flag code={selectedCurrency.currency.toLowerCase()} intrinsicSize={24} />\n </span>\n )}\n <Title\n as=\"span\"\n type={Typography.TITLE_SUBSECTION}\n className={size === 'lg' ? this.style('m-r-1') : ''}\n >\n {selectedCurrency.currency.toUpperCase()}\n </Title>\n </div>\n ) : (\n <div\n translate=\"no\"\n className={clsx(\n this.style('input-group-btn'),\n this.style('amount-currency-select-btn'),\n )}\n >\n <SelectInput\n UNSAFE_triggerButtonProps={{\n id: undefined,\n 'aria-labelledby': undefined,\n 'aria-describedby': ariaLabelledBy,\n 'aria-invalid': undefined,\n 'aria-label': this.props.intl.formatMessage(messages.selectCurrencyLabel),\n }}\n id={selectedCurrencyElementId}\n items={selectOptions}\n value={selectedCurrency}\n compareValues=\"currency\"\n renderValue={(currency, withinTrigger) => {\n return (\n <SelectInputOptionContent\n title={withinTrigger ? currency.currency.toUpperCase() : currency.label}\n note={withinTrigger ? undefined : currency.note}\n icon={<Flag code={currency.currency} intrinsicSize={24} />}\n />\n );\n }}\n renderFooter={\n this.props.onCustomAction\n ? () => (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n <div role=\"button\" tabIndex={0} onClick={this.props.onCustomAction}>\n {this.props.customActionLabel}\n </div>\n )\n : undefined\n }\n placeholder={this.props.intl.formatMessage(messages.selectPlaceholder)}\n filterable\n filterPlaceholder={\n this.props.searchPlaceholder ||\n this.props.intl.formatMessage(messages.searchPlaceholder)\n }\n disabled={disabled}\n size={size}\n onChange={this.handleSelectChange}\n onFilterChange={({ queryNormalized }) => {\n this.handleSearchChange(queryNormalized ?? '');\n }}\n {...selectProps}\n />\n </div>\n )}\n </div>\n );\n }\n}\n\nfunction filterCurrenciesForQuery(\n currencies: readonly CurrencyItem[],\n query: string,\n): CurrencyItem[] {\n if (!query) {\n return [...currencies];\n }\n\n const options = currencies.filter(\n (option): option is CurrencyOptionItem => option.header == null,\n );\n const filteredOptions = removeDuplicateValueOptions(options).filter((option) =>\n currencyOptionFitsQuery(option, query),\n );\n\n return sortOptionsLabelsToFirst(filteredOptions, query);\n}\n\nfunction removeDuplicateValueOptions(options: readonly CurrencyOptionItem[]) {\n const uniqueValues = new Set<string>();\n return options.filter((option) => {\n if (!uniqueValues.has(option.value)) {\n uniqueValues.add(option.value);\n return true;\n }\n return false;\n });\n}\n\nfunction currencyOptionFitsQuery(option: CurrencyOptionItem, query: string) {\n if (!option.value) {\n return false;\n }\n\n return (\n contains(option.label, query) ||\n contains(option.searchable, query) ||\n contains(option.note, query)\n );\n}\n\nfunction contains(property: string | undefined, query: string) {\n return property?.toLowerCase().includes(query.toLowerCase());\n}\n\nfunction sortOptionsLabelsToFirst(options: readonly CurrencyOptionItem[], query: string) {\n return [...options].sort((first, second) => {\n const firstContains = contains(first.label, query);\n const secondContains = contains(second.label, query);\n\n if (firstContains && secondContains) {\n return 0;\n }\n if (firstContains) {\n return -1;\n }\n if (secondContains) {\n return 1;\n }\n return 0;\n });\n}\n\nexport default injectIntl(withId(withInputAttributes(MoneyInput, { nonLabelable: true })));\n"],"names":["isNumberOrNull","v","isNumber","isNull","formatAmountIfSet","amount","currency","locale","formatAmount","parseNumber","parseAmount","allowedInputKeys","Set","MoneyInput","Component","defaultProps","size","Size","LARGE","classNames","selectProps","amountFocused","constructor","props","state","searchQuery","formattedAmount","selectedCurrency","intl","UNSAFE_componentWillReceiveProps","nextProps","setState","isInputAllowedForKeyEvent","event","metaKey","key","ctrlKey","isNumberKey","Number","parseInt","has","handleKeyDown","preventDefault","handlePaste","paste","clipboardData","getData","parsed","isEmpty","onAmountChange","value","target","onAmountBlur","setAmount","onAmountFocus","getSelectOptions","selectOptions","filterCurrenciesForQuery","currencies","formattedOptions","currentGroupOptions","forEach","item","header","push","type","label","options","filterMatchers","note","searchable","previousState","handleSelectChange","handleSearchChange","onCurrencyChange","onSearchChange","filteredOptions","style","className","render","inputAttributes","id","amountInputId","ariaLabelledByProp","addon","ariaLabelledBy","hasSingleCurrency","length","firstItem","onCustomAction","customActionLabel","isFixedCurrency","disabled","selectedCurrencyElementId","_jsxs","role","clsx","children","_jsx","Input","inputMode","placeholder","autoComplete","onKeyDown","onChange","onFocus","onBlur","onPaste","Flag","code","toLowerCase","intrinsicSize","Title","as","Typography","TITLE_SUBSECTION","toUpperCase","translate","SelectInput","UNSAFE_triggerButtonProps","undefined","formatMessage","messages","selectCurrencyLabel","items","compareValues","renderValue","withinTrigger","SelectInputOptionContent","title","icon","renderFooter","tabIndex","onClick","selectPlaceholder","filterable","filterPlaceholder","searchPlaceholder","onFilterChange","queryNormalized","query","filter","option","removeDuplicateValueOptions","currencyOptionFitsQuery","sortOptionsLabelsToFirst","uniqueValues","add","contains","property","includes","sort","first","second","firstContains","secondContains","injectIntl","withId","withInputAttributes","nonLabelable"],"mappings":"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"}
1
+ {"version":3,"file":"MoneyInput.js","sources":["../../src/moneyInput/MoneyInput.tsx"],"sourcesContent":["import { isEmpty, isNumber, isNull } from '@transferwise/neptune-validation';\nimport { Flag } from '@wise/art';\nimport { clsx } from 'clsx';\nimport { Component } from 'react';\nimport { injectIntl, WrappedComponentProps } from 'react-intl';\n\nimport { Typography, Size, SizeLarge, SizeMedium, SizeSmall } from '../common';\nimport { withInputAttributes, WithInputAttributesProps } from '../inputs/contexts';\nimport { Input } from '../inputs/Input';\nimport {\n SelectInput,\n SelectInputItem,\n SelectInputOptionContent,\n SelectInputOptionItem,\n SelectInputProps,\n} from '../inputs/SelectInput';\nimport Title from '../title';\n\nimport messages from './MoneyInput.messages';\nimport { formatAmount, parseAmount } from './currencyFormatting';\nimport withId from '../withId';\n\nexport interface CurrencyOptionItem {\n header?: never;\n value: string;\n label: string;\n currency: string;\n note?: string;\n searchable?: string;\n}\n\nexport interface CurrencyHeaderItem {\n header: string;\n}\n\nexport type CurrencyItem = CurrencyOptionItem | CurrencyHeaderItem;\n\nconst isNumberOrNull = (v: unknown): v is number | null => isNumber(v) || isNull(v);\n\nconst formatAmountIfSet = ({\n amount,\n currency,\n locale,\n}: {\n amount: number | null | undefined;\n currency: string;\n locale: string;\n}) => {\n return typeof amount === 'number' ? formatAmount(amount, currency, locale) : '';\n};\n\nconst parseNumber = ({\n amount,\n currency,\n locale,\n}: {\n amount: string;\n currency: string;\n locale: string;\n}) => {\n return parseAmount(amount, currency, locale);\n};\n\nconst allowedInputKeys = new Set([\n 'Backspace',\n 'Delete',\n ',',\n '.',\n 'ArrowDown',\n 'ArrowUp',\n 'ArrowLeft',\n 'ArrowRight',\n 'Enter',\n 'Escape',\n 'Tab',\n]);\n\nexport interface MoneyInputProps extends WrappedComponentProps {\n id?: string;\n 'aria-labelledby'?: string;\n currencies: readonly CurrencyItem[];\n selectedCurrency: CurrencyOptionItem;\n onCurrencyChange?: (value: CurrencyOptionItem) => void;\n placeholder?: number;\n amount: number | null;\n size?: SizeSmall | SizeMedium | SizeLarge;\n onAmountChange?: (value: number | null) => void;\n addon?: React.ReactNode;\n searchPlaceholder?: string;\n /**\n * Allows the consumer to react to searching, while the search itself is handled internally.\n */\n onSearchChange?: (value: { searchQuery: string; filteredOptions: CurrencyItem[] }) => void;\n customActionLabel?: React.ReactNode;\n onCustomAction?: () => void;\n classNames?: Record<string, string>;\n selectProps?: Partial<SelectInputProps<CurrencyOptionItem>>;\n}\n\nexport type MoneyInputPropsWithInputAttributes = MoneyInputProps &\n Partial<WithInputAttributesProps>;\n\ninterface MoneyInputState {\n searchQuery: string;\n formattedAmount: string;\n locale: string;\n}\n\nclass MoneyInput extends Component<MoneyInputPropsWithInputAttributes, MoneyInputState> {\n declare props: MoneyInputPropsWithInputAttributes &\n Required<Pick<MoneyInputPropsWithInputAttributes, keyof typeof MoneyInput.defaultProps>>;\n\n static defaultProps = {\n size: Size.LARGE,\n classNames: {},\n selectProps: {},\n } satisfies Partial<MoneyInputPropsWithInputAttributes>;\n\n amountFocused = false;\n\n constructor(props: MoneyInputProps) {\n super(props);\n this.state = {\n searchQuery: '',\n formattedAmount: formatAmountIfSet({\n amount: props.amount,\n currency: props.selectedCurrency.currency,\n locale: props.intl.locale,\n }),\n locale: props.intl.locale,\n };\n }\n\n UNSAFE_componentWillReceiveProps(nextProps: MoneyInputProps) {\n this.setState({ locale: nextProps.intl.locale });\n\n if (!this.amountFocused) {\n this.setState({\n formattedAmount: formatAmountIfSet({\n amount: nextProps.amount,\n currency: nextProps.selectedCurrency.currency,\n locale: nextProps.intl.locale,\n }),\n });\n }\n }\n\n isInputAllowedForKeyEvent = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const { metaKey, key, ctrlKey } = event;\n const isNumberKey = isNumber(Number.parseInt(key, 10));\n\n return isNumberKey || metaKey || ctrlKey || allowedInputKeys.has(key);\n };\n\n handleKeyDown: React.KeyboardEventHandler<HTMLInputElement> = (event) => {\n if (!this.isInputAllowedForKeyEvent(event)) {\n event.preventDefault();\n }\n };\n\n handlePaste: React.ClipboardEventHandler<HTMLInputElement> = (event) => {\n const paste = event.clipboardData.getData('text');\n const { locale } = this.state;\n const parsed = isEmpty(paste)\n ? null\n : parseNumber({\n amount: paste,\n currency: this.props.selectedCurrency.currency,\n locale,\n });\n\n if (isNumberOrNull(parsed)) {\n this.setState({\n formattedAmount: formatAmountIfSet({\n amount: parsed,\n currency: this.props.selectedCurrency.currency,\n locale,\n }),\n });\n this.props.onAmountChange?.(parsed);\n }\n\n event.preventDefault();\n };\n\n onAmountChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n const { value } = event.target;\n this.setState({\n formattedAmount: value,\n });\n const parsed = isEmpty(value)\n ? null\n : parseNumber({\n amount: value,\n currency: this.props.selectedCurrency.currency,\n locale: this.state.locale,\n });\n if (isNumberOrNull(parsed)) {\n this.props.onAmountChange?.(parsed);\n }\n };\n\n onAmountBlur = () => {\n this.amountFocused = false;\n this.setAmount();\n };\n\n onAmountFocus = () => {\n this.amountFocused = true;\n };\n\n getSelectOptions() {\n const selectOptions = filterCurrenciesForQuery(this.props.currencies, this.state.searchQuery);\n\n const formattedOptions: SelectInputItem<CurrencyOptionItem>[] = [];\n let currentGroupOptions: SelectInputOptionItem<CurrencyOptionItem>[] | undefined;\n\n selectOptions.forEach((item) => {\n if (item.header != null) {\n currentGroupOptions = [];\n formattedOptions.push({\n type: 'group',\n label: item.header,\n options: currentGroupOptions,\n });\n } else {\n (currentGroupOptions ?? formattedOptions).push({\n type: 'option',\n value: item,\n filterMatchers: [item.value, item.label, item.note ?? '', item.searchable ?? ''],\n });\n }\n });\n\n return formattedOptions;\n }\n\n setAmount() {\n this.setState((previousState) => {\n const parsed = parseNumber({\n amount: previousState.formattedAmount,\n currency: this.props.selectedCurrency.currency,\n locale: previousState.locale,\n });\n if (!isNumberOrNull(parsed)) {\n return {\n formattedAmount: previousState.formattedAmount,\n };\n }\n return {\n formattedAmount: formatAmountIfSet({\n amount: parsed,\n currency: this.props.selectedCurrency.currency,\n locale: previousState.locale,\n }),\n };\n });\n }\n\n handleSelectChange = (value: CurrencyOptionItem) => {\n this.handleSearchChange('');\n this.props.onCurrencyChange?.(value);\n };\n\n handleSearchChange = (searchQuery: string) => {\n this.setState({ searchQuery });\n this.props.onSearchChange?.({\n searchQuery,\n filteredOptions: filterCurrenciesForQuery(this.props.currencies, searchQuery),\n });\n };\n\n style = (className: string) => this.props.classNames[className] || className;\n\n render() {\n const {\n inputAttributes,\n id: amountInputId,\n 'aria-labelledby': ariaLabelledByProp,\n selectedCurrency,\n onCurrencyChange,\n size,\n addon,\n selectProps,\n } = this.props;\n const ariaLabelledBy = ariaLabelledByProp ?? inputAttributes?.['aria-labelledby'];\n const selectOptions = this.getSelectOptions();\n\n const hasSingleCurrency = () => {\n if (selectOptions.length !== 0) {\n const firstItem = selectOptions[0];\n\n if (selectOptions.length === 1) {\n if (firstItem.type === 'option') {\n return firstItem.value.currency === selectedCurrency.currency;\n }\n if (firstItem.type === 'group') {\n return (\n firstItem.options.length === 1 &&\n !(this.props.onCustomAction && this.props.customActionLabel)\n );\n }\n }\n } else if (selectedCurrency?.currency) {\n return true;\n }\n\n return false;\n };\n\n const isFixedCurrency = (!this.state.searchQuery && hasSingleCurrency()) || !onCurrencyChange;\n const disabled = !this.props.onAmountChange;\n const selectedCurrencyElementId = `${inputAttributes?.id ?? amountInputId}SelectedCurrency`;\n\n return (\n <div\n role=\"group\"\n {...inputAttributes}\n aria-labelledby={ariaLabelledBy}\n className={clsx(\n this.style('tw-money-input'),\n this.style('input-group'),\n this.style(`input-group-${size}`),\n )}\n >\n <Input\n id={amountInputId}\n value={this.state.formattedAmount}\n inputMode=\"decimal\"\n disabled={disabled}\n placeholder={formatAmountIfSet({\n amount: this.props.placeholder,\n currency: this.props.selectedCurrency.currency,\n locale: this.state.locale,\n })}\n autoComplete=\"off\"\n aria-describedby={selectedCurrencyElementId}\n onKeyDown={this.handleKeyDown}\n onChange={this.onAmountChange}\n onFocus={this.onAmountFocus}\n onBlur={this.onAmountBlur}\n onPaste={this.handlePaste}\n />\n {addon && (\n <span\n className={clsx(\n this.style('input-group-addon'),\n this.style(`input-${size}`),\n disabled ? this.style('disabled') : '',\n )}\n >\n {addon}\n </span>\n )}\n {isFixedCurrency ? (\n <div\n className={clsx(\n this.style('input-group-addon'),\n this.style(`input-${size}`),\n this.style('tw-money-input__fixed-currency'),\n disabled ? this.style('disabled') : '',\n )}\n id={selectedCurrencyElementId}\n >\n {(size === 'lg' || size === 'md') && (\n <span className={clsx(this.style('money-input-currency-flag'), this.style('m-r-2'))}>\n <Flag code={selectedCurrency.currency.toLowerCase()} intrinsicSize={24} />\n </span>\n )}\n <Title\n as=\"span\"\n type={Typography.TITLE_SUBSECTION}\n className={size === 'lg' ? this.style('m-r-1') : ''}\n >\n {selectedCurrency.currency.toUpperCase()}\n </Title>\n </div>\n ) : (\n <div\n translate=\"no\"\n className={clsx(\n this.style('input-group-btn'),\n this.style('amount-currency-select-btn'),\n )}\n >\n <SelectInput\n UNSAFE_triggerButtonProps={{\n id: undefined,\n 'aria-labelledby': undefined,\n 'aria-describedby': ariaLabelledBy,\n 'aria-invalid': undefined,\n 'aria-label': this.props.intl.formatMessage(messages.selectCurrencyLabel),\n }}\n id={selectedCurrencyElementId}\n items={selectOptions}\n value={selectedCurrency}\n compareValues=\"currency\"\n renderValue={(currency, withinTrigger) => {\n return (\n <SelectInputOptionContent\n title={withinTrigger ? currency.currency.toUpperCase() : currency.label}\n note={withinTrigger ? undefined : currency.note}\n icon={<Flag code={currency.currency} intrinsicSize={24} />}\n />\n );\n }}\n renderFooter={\n this.props.onCustomAction\n ? () => (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n <div role=\"button\" tabIndex={0} onClick={this.props.onCustomAction}>\n {this.props.customActionLabel}\n </div>\n )\n : undefined\n }\n placeholder={this.props.intl.formatMessage(messages.selectPlaceholder)}\n filterable\n filterPlaceholder={\n this.props.searchPlaceholder ||\n this.props.intl.formatMessage(messages.searchPlaceholder)\n }\n disabled={disabled}\n size={size}\n onChange={this.handleSelectChange}\n onFilterChange={({ queryNormalized }) => {\n this.handleSearchChange(queryNormalized ?? '');\n }}\n {...selectProps}\n />\n </div>\n )}\n </div>\n );\n }\n}\n\nfunction filterCurrenciesForQuery(\n currencies: readonly CurrencyItem[],\n query: string,\n): CurrencyItem[] {\n if (!query) {\n return [...currencies];\n }\n\n const options = currencies.filter(\n (option): option is CurrencyOptionItem => option.header == null,\n );\n const filteredOptions = removeDuplicateValueOptions(options).filter((option) =>\n currencyOptionFitsQuery(option, query),\n );\n\n return sortOptionsLabelsToFirst(filteredOptions, query);\n}\n\nfunction removeDuplicateValueOptions(options: readonly CurrencyOptionItem[]) {\n const uniqueValues = new Set<string>();\n return options.filter((option) => {\n if (!uniqueValues.has(option.value)) {\n uniqueValues.add(option.value);\n return true;\n }\n return false;\n });\n}\n\nfunction currencyOptionFitsQuery(option: CurrencyOptionItem, query: string) {\n if (!option.value) {\n return false;\n }\n\n return (\n contains(option.label, query) ||\n contains(option.searchable, query) ||\n contains(option.note, query)\n );\n}\n\nfunction contains(property: string | undefined, query: string) {\n return property?.toLowerCase().includes(query.toLowerCase());\n}\n\nfunction sortOptionsLabelsToFirst(options: readonly CurrencyOptionItem[], query: string) {\n return [...options].sort((first, second) => {\n const firstContains = contains(first.label, query);\n const secondContains = contains(second.label, query);\n\n if (firstContains && secondContains) {\n return 0;\n }\n if (firstContains) {\n return -1;\n }\n if (secondContains) {\n return 1;\n }\n return 0;\n });\n}\n\nexport default injectIntl(withId(withInputAttributes(MoneyInput, { nonLabelable: true })));\n"],"names":["isNumberOrNull","v","isNumber","isNull","formatAmountIfSet","amount","currency","locale","formatAmount","parseNumber","parseAmount","allowedInputKeys","Set","MoneyInput","Component","defaultProps","size","Size","LARGE","classNames","selectProps","amountFocused","constructor","props","state","searchQuery","formattedAmount","selectedCurrency","intl","UNSAFE_componentWillReceiveProps","nextProps","setState","isInputAllowedForKeyEvent","event","metaKey","key","ctrlKey","isNumberKey","Number","parseInt","has","handleKeyDown","preventDefault","handlePaste","paste","clipboardData","getData","parsed","isEmpty","onAmountChange","value","target","onAmountBlur","setAmount","onAmountFocus","getSelectOptions","selectOptions","filterCurrenciesForQuery","currencies","formattedOptions","currentGroupOptions","forEach","item","header","push","type","label","options","filterMatchers","note","searchable","previousState","handleSelectChange","handleSearchChange","onCurrencyChange","onSearchChange","filteredOptions","style","className","render","inputAttributes","id","amountInputId","ariaLabelledByProp","addon","ariaLabelledBy","hasSingleCurrency","length","firstItem","onCustomAction","customActionLabel","isFixedCurrency","disabled","selectedCurrencyElementId","_jsxs","role","clsx","children","_jsx","Input","inputMode","placeholder","autoComplete","onKeyDown","onChange","onFocus","onBlur","onPaste","Flag","code","toLowerCase","intrinsicSize","Title","as","Typography","TITLE_SUBSECTION","toUpperCase","translate","SelectInput","UNSAFE_triggerButtonProps","undefined","formatMessage","messages","selectCurrencyLabel","items","compareValues","renderValue","withinTrigger","SelectInputOptionContent","title","icon","renderFooter","tabIndex","onClick","selectPlaceholder","filterable","filterPlaceholder","searchPlaceholder","onFilterChange","queryNormalized","query","filter","option","removeDuplicateValueOptions","currencyOptionFitsQuery","sortOptionsLabelsToFirst","uniqueValues","add","contains","property","includes","sort","first","second","firstContains","secondContains","injectIntl","withId","withInputAttributes","nonLabelable"],"mappings":"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"}
@@ -51,11 +51,11 @@ const parseNumber = ({
51
51
  };
52
52
  const allowedInputKeys = new Set(['Backspace', 'Delete', ',', '.', 'ArrowDown', 'ArrowUp', 'ArrowLeft', 'ArrowRight', 'Enter', 'Escape', 'Tab']);
53
53
  class MoneyInput extends Component {
54
- static defaultProps = (() => ({
54
+ static defaultProps = {
55
55
  size: Size.LARGE,
56
56
  classNames: {},
57
57
  selectProps: {}
58
- }))();
58
+ };
59
59
  amountFocused = false;
60
60
  constructor(props) {
61
61
  super(props);