@transferwise/components 46.70.2 → 46.70.4

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 (49) hide show
  1. package/build/dateLookup/DateLookup.js +1 -1
  2. package/build/dateLookup/DateLookup.js.map +1 -1
  3. package/build/dateLookup/DateLookup.mjs +1 -1
  4. package/build/dateLookup/DateLookup.mjs.map +1 -1
  5. package/build/dateLookup/dateTrigger/DateTrigger.js +2 -0
  6. package/build/dateLookup/dateTrigger/DateTrigger.js.map +1 -1
  7. package/build/dateLookup/dateTrigger/DateTrigger.mjs +2 -0
  8. package/build/dateLookup/dateTrigger/DateTrigger.mjs.map +1 -1
  9. package/build/main.css +6 -0
  10. package/build/styles/main.css +6 -0
  11. package/build/styles/upload/Upload.css +6 -0
  12. package/build/typeahead/Typeahead.js +1 -1
  13. package/build/typeahead/Typeahead.js.map +1 -1
  14. package/build/typeahead/Typeahead.mjs +1 -1
  15. package/build/typeahead/Typeahead.mjs.map +1 -1
  16. package/build/typeahead/typeaheadOption/TypeaheadOption.js +6 -4
  17. package/build/typeahead/typeaheadOption/TypeaheadOption.js.map +1 -1
  18. package/build/typeahead/typeaheadOption/TypeaheadOption.mjs +7 -5
  19. package/build/typeahead/typeaheadOption/TypeaheadOption.mjs.map +1 -1
  20. package/build/typeahead/util/highlight.js +8 -3
  21. package/build/typeahead/util/highlight.js.map +1 -1
  22. package/build/typeahead/util/highlight.mjs +9 -4
  23. package/build/typeahead/util/highlight.mjs.map +1 -1
  24. package/build/types/dateLookup/dateTrigger/DateTrigger.d.ts +1 -0
  25. package/build/types/dateLookup/dateTrigger/DateTrigger.d.ts.map +1 -1
  26. package/build/types/typeahead/typeaheadOption/TypeaheadOption.d.ts.map +1 -1
  27. package/build/types/typeahead/util/highlight.d.ts +5 -1
  28. package/build/types/typeahead/util/highlight.d.ts.map +1 -1
  29. package/build/types/upload/steps/uploadImageStep/uploadImageStep.d.ts.map +1 -1
  30. package/build/upload/steps/uploadImageStep/uploadImageStep.js +1 -0
  31. package/build/upload/steps/uploadImageStep/uploadImageStep.js.map +1 -1
  32. package/build/upload/steps/uploadImageStep/uploadImageStep.mjs +1 -0
  33. package/build/upload/steps/uploadImageStep/uploadImageStep.mjs.map +1 -1
  34. package/package.json +3 -3
  35. package/src/dateLookup/DateLookup.rtl.spec.tsx +5 -4
  36. package/src/dateLookup/DateLookup.story.tsx +33 -0
  37. package/src/dateLookup/DateLookup.testingLibrary.spec.js +1 -2
  38. package/src/dateLookup/DateLookup.tsx +1 -1
  39. package/src/dateLookup/dateTrigger/DateTrigger.tsx +3 -0
  40. package/src/main.css +6 -0
  41. package/src/typeahead/Typeahead.rtl.spec.tsx +26 -0
  42. package/src/typeahead/Typeahead.tsx +2 -2
  43. package/src/typeahead/typeaheadOption/TypeaheadOption.spec.js +5 -4
  44. package/src/typeahead/typeaheadOption/TypeaheadOption.tsx +7 -3
  45. package/src/typeahead/util/highlight.spec.js +5 -5
  46. package/src/typeahead/util/highlight.tsx +11 -3
  47. package/src/upload/Upload.css +6 -0
  48. package/src/upload/Upload.less +8 -0
  49. package/src/upload/steps/uploadImageStep/uploadImageStep.tsx +1 -0
@@ -305,12 +305,12 @@ class DateLookup extends React.PureComponent {
305
305
  ref: this.element,
306
306
  ...inputAttributes,
307
307
  id: id,
308
- "aria-labelledby": ariaLabelledBy,
309
308
  className: "input-group",
310
309
  onKeyDown: this.handleKeyDown,
311
310
  children: /*#__PURE__*/jsxRuntime.jsxs(OverlayIdProvider.OverlayIdProvider, {
312
311
  open: open,
313
312
  children: [/*#__PURE__*/jsxRuntime.jsx(DateTrigger, {
313
+ ariaLabelledBy: ariaLabelledBy,
314
314
  selectedDate: selectedDate,
315
315
  size: size,
316
316
  placeholder: placeholder,
@@ -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 SizeSmall,\n SizeMedium,\n SizeLarge,\n} from '../common';\nimport { isWithinRange, moveToWithinRange } 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 this.state = {\n selectedDate: getStartOfDay(props.value),\n originalDate: null,\n min: getStartOfDay(props.min),\n max: getStartOfDay(props.max),\n viewMonth: (props.value || new Date()).getMonth(),\n viewYear: (props.value || new Date()).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 =\n selectedDate || ((min || max) && moveToWithinRange(new Date(), min, max)) || new Date();\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 if (date) {\n date = moveToWithinRange(date, min, max);\n }\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 aria-labelledby={ariaLabelledBy}\n className=\"input-group\"\n onKeyDown={this.handleKeyDown}\n >\n <OverlayIdProvider open={open}>\n <DateTrigger\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","state","selectedDate","getStartOfDay","originalDate","viewMonth","Date","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","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 SizeSmall,\n SizeMedium,\n SizeLarge,\n} from '../common';\nimport { isWithinRange, moveToWithinRange } 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 this.state = {\n selectedDate: getStartOfDay(props.value),\n originalDate: null,\n min: getStartOfDay(props.min),\n max: getStartOfDay(props.max),\n viewMonth: (props.value || new Date()).getMonth(),\n viewYear: (props.value || new Date()).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 =\n selectedDate || ((min || max) && moveToWithinRange(new Date(), min, max)) || new Date();\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 if (date) {\n date = moveToWithinRange(date, min, max);\n }\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","state","selectedDate","getStartOfDay","originalDate","viewMonth","Date","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","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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"}
@@ -303,12 +303,12 @@ class DateLookup extends PureComponent {
303
303
  ref: this.element,
304
304
  ...inputAttributes,
305
305
  id: id,
306
- "aria-labelledby": ariaLabelledBy,
307
306
  className: "input-group",
308
307
  onKeyDown: this.handleKeyDown,
309
308
  children: /*#__PURE__*/jsxs(OverlayIdProvider, {
310
309
  open: open,
311
310
  children: [/*#__PURE__*/jsx(DateTrigger, {
311
+ ariaLabelledBy: ariaLabelledBy,
312
312
  selectedDate: selectedDate,
313
313
  size: size,
314
314
  placeholder: placeholder,
@@ -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 SizeSmall,\n SizeMedium,\n SizeLarge,\n} from '../common';\nimport { isWithinRange, moveToWithinRange } 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 this.state = {\n selectedDate: getStartOfDay(props.value),\n originalDate: null,\n min: getStartOfDay(props.min),\n max: getStartOfDay(props.max),\n viewMonth: (props.value || new Date()).getMonth(),\n viewYear: (props.value || new Date()).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 =\n selectedDate || ((min || max) && moveToWithinRange(new Date(), min, max)) || new Date();\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 if (date) {\n date = moveToWithinRange(date, min, max);\n }\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 aria-labelledby={ariaLabelledBy}\n className=\"input-group\"\n onKeyDown={this.handleKeyDown}\n >\n <OverlayIdProvider open={open}>\n <DateTrigger\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","state","selectedDate","getStartOfDay","originalDate","viewMonth","Date","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","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":";;;;;;;;;;;;;;;;;;;AAqDA,MAAMA,UAAW,SAAQC,aAAkE,CAAA;AAIzF,EAAA,OAAOC,YAAY,GAAG;AACpBC,IAAAA,KAAK,EAAE,IAAI;AACXC,IAAAA,GAAG,EAAE,IAAI;AACTC,IAAAA,GAAG,EAAE,IAAI;IACTC,IAAI,EAAEC,IAAI,CAACC,MAAM;AACjBC,IAAAA,WAAW,EAAE,EAAE;AACfC,IAAAA,KAAK,EAAE,EAAE;IACTC,WAAW,EAAEC,WAAW,CAACC,IAAI;AAC7BC,IAAAA,QAAQ,EAAE,KAAK;AACfC,IAAAA,SAAS,EAAE,KAAA;GAC0C,CAAA;EAEvDC,OAAO,gBAAGC,SAAS,EAAkB,CAAA;EACrCC,QAAQ,gBAAGD,SAAS,EAAkB,CAAA;EAEtCE,WAAAA,CAAYC,KAA0B,EAAA;IACpC,KAAK,CAACA,KAAK,CAAC,CAAA;IACZ,IAAI,CAACC,KAAK,GAAG;AACXC,MAAAA,YAAY,EAAEC,aAAa,CAACH,KAAK,CAACjB,KAAK,CAAC;AACxCqB,MAAAA,YAAY,EAAE,IAAI;AAClBpB,MAAAA,GAAG,EAAEmB,aAAa,CAACH,KAAK,CAAChB,GAAG,CAAC;AAC7BC,MAAAA,GAAG,EAAEkB,aAAa,CAACH,KAAK,CAACf,GAAG,CAAC;AAC7BoB,MAAAA,SAAS,EAAE,CAACL,KAAK,CAACjB,KAAK,IAAI,IAAIuB,IAAI,EAAE,EAAEC,QAAQ,EAAE;AACjDC,MAAAA,QAAQ,EAAE,CAACR,KAAK,CAACjB,KAAK,IAAI,IAAIuB,IAAI,EAAE,EAAEG,WAAW,EAAE;AACnDC,MAAAA,IAAI,EAAE,KAAK;AACXC,MAAAA,IAAI,EAAE,KAAK;AACXC,MAAAA,QAAQ,EAAE,KAAA;KACX,CAAA;AACH,GAAA;AAEA,EAAA,OAAOC,wBAAwBA,CAACb,KAA0B,EAAEC,KAAsB,EAAA;AAChF,IAAA,MAAMa,aAAa,GAAGX,aAAa,CAACH,KAAK,CAACjB,KAAK,CAAC,CAAA;AAChD,IAAA,MAAMgC,QAAQ,GAAGZ,aAAa,CAACH,KAAK,CAAChB,GAAG,CAAC,CAAA;AACzC,IAAA,MAAMgC,QAAQ,GAAGb,aAAa,CAACH,KAAK,CAACf,GAAG,CAAC,CAAA;AACzC,IAAA,MAAMgC,kBAAkB,GAAGhB,KAAK,CAACC,YAAY,EAAEgB,OAAO,EAAE,KAAKJ,aAAa,EAAEI,OAAO,EAAE,CAAA;AACrF,IAAA,MAAMC,aAAa,GAAGlB,KAAK,CAACjB,GAAG,EAAEkC,OAAO,EAAE,KAAKH,QAAQ,EAAEG,OAAO,EAAE,CAAA;AAClE,IAAA,MAAME,aAAa,GAAGnB,KAAK,CAAChB,GAAG,EAAEiC,OAAO,EAAE,KAAKF,QAAQ,EAAEE,OAAO,EAAE,CAAA;AAClE,IAAA,IAAID,kBAAkB,IAAIE,aAAa,IAAIC,aAAa,EAAE;MACxD,MAAMlB,YAAY,GAAGe,kBAAkB,GAAGH,aAAa,GAAGb,KAAK,CAACC,YAAY,CAAA;MAC5E,MAAMlB,GAAG,GAAGmC,aAAa,GAAGJ,QAAQ,GAAGd,KAAK,CAACjB,GAAG,CAAA;MAChD,MAAMC,GAAG,GAAGmC,aAAa,GAAGJ,QAAQ,GAAGf,KAAK,CAAChB,GAAG,CAAA;MAChD,IAAIiB,YAAY,IAAI,CAACmB,aAAa,CAACnB,YAAY,EAAElB,GAAG,EAAEC,GAAG,CAAC,EAAE;QAC1De,KAAK,CAACsB,QAAQ,CAACC,iBAAiB,CAACrB,YAAY,EAAElB,GAAG,EAAEC,GAAG,CAAC,CAAC,CAAA;AACzD,QAAA,OAAO,IAAI,CAAA;AACb,OAAA;MACA,MAAMuC,yBAAyB,GAC7BtB,YAAY,IAAK,CAAClB,GAAG,IAAIC,GAAG,KAAKsC,iBAAiB,CAAC,IAAIjB,IAAI,EAAE,EAAEtB,GAAG,EAAEC,GAAG,CAAE,IAAI,IAAIqB,IAAI,EAAE,CAAA;AACzF,MAAA,MAAMD,SAAS,GAAGmB,yBAAyB,CAACjB,QAAQ,EAAE,CAAA;AACtD,MAAA,MAAMC,QAAQ,GAAGgB,yBAAyB,CAACf,WAAW,EAAE,CAAA;MACxD,OAAO;QAAEP,YAAY;QAAElB,GAAG;QAAEC,GAAG;QAAEoB,SAAS;AAAEG,QAAAA,QAAAA;OAAU,CAAA;AACxD,KAAA;AACA,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;EAEAiB,kBAAkBA,CAACC,aAAiD,EAAA;IAClE,IAAI,IAAI,CAAC1B,KAAK,CAACjB,KAAK,EAAEmC,OAAO,EAAE,KAAKQ,aAAa,CAAC3C,KAAK,EAAEmC,OAAO,EAAE,IAAI,IAAI,CAACjB,KAAK,CAACS,IAAI,EAAE;AACrF,MAAA,IAAI,CAACiB,OAAO,CAAC,SAAS,CAAC,CAAA;AACzB,KAAA;IACA,MAAMC,UAAU,GAAGC,MAAM,CAACC,UAAU,CAAC,CAAA,YAAA,EAAeC,UAAU,CAACC,KAAK,CAAA,GAAA,CAAK,CAAC,CAAA;IAC1E,IAAI,CAACC,QAAQ,CAAC;MAAErB,QAAQ,EAAEgB,UAAU,CAACM,OAAAA;AAAS,KAAA,CAAC,CAAA;AACjD,GAAA;AAEAC,EAAAA,oBAAoBA,GAAA;AAClB;AACA,IAAA,IAAI,CAACF,QAAQ,GAAG,MAAK,EAAG,CAAA;AAC1B,GAAA;EAEAvB,IAAI,GAAGA,MAAK;IACV,MAAM;AAAE0B,MAAAA,OAAAA;KAAS,GAAG,IAAI,CAACpC,KAAK,CAAA;IAE9B,IAAI,CAACiC,QAAQ,CAAC;AAAEvB,MAAAA,IAAI,EAAE,IAAI;AAAEC,MAAAA,IAAI,EAAE,KAAA;AAAK,KAAE,CAAC,CAAA;AAC1C,IAAA,IAAIyB,OAAO,EAAE;AACXA,MAAAA,OAAO,EAAE,CAAA;AACX,KAAA;GACD,CAAA;EAEDC,OAAO,GAAGA,MAAK;IACb,MAAM;AAAEjC,MAAAA,YAAAA;KAAc,GAAG,IAAI,CAACH,KAAK,CAAA;IACnC,IAAIG,YAAY,KAAK,IAAI,EAAE;AACzB,MAAA,IAAI,CAACJ,KAAK,CAACsB,QAAQ,CAAClB,YAAY,CAAC,CAAA;AACnC,KAAA;IACA,IAAI,CAACkC,KAAK,EAAE,CAAA;GACb,CAAA;EAEDA,KAAK,GAAGA,MAAK;IACX,MAAM;AAAEC,MAAAA,MAAAA;KAAQ,GAAG,IAAI,CAACvC,KAAK,CAAA;IAC7B,IAAI,CAACiC,QAAQ,CAAC;AAAEvB,MAAAA,IAAI,EAAE,KAAK;AAAEN,MAAAA,YAAY,EAAE,IAAA;AAAI,KAAE,CAAC,CAAA;AAClD,IAAA,IAAImC,MAAM,EAAE;AACVA,MAAAA,MAAM,EAAE,CAAA;AACV,KAAA;GACD,CAAA;EAEDC,aAAa,GAAIC,KAAoC,IAAI;IACvD,MAAM;MAAE/B,IAAI;AAAEN,MAAAA,YAAAA;KAAc,GAAG,IAAI,CAACH,KAAK,CAAA;IACzC,QAAQwC,KAAK,CAACC,GAAG;AACf,MAAA,KAAK,WAAW;AACd,QAAA,IAAIhC,IAAI,EAAE;UACR,IAAI,CAACiC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AAC7B,SAAC,MAAM;UACL,IAAI,CAACjC,IAAI,EAAE,CAAA;AACb,SAAA;QACA+B,KAAK,CAACG,cAAc,EAAE,CAAA;AACtB,QAAA,MAAA;AACF,MAAA,KAAK,SAAS;AACZ,QAAA,IAAIlC,IAAI,EAAE;UACR,IAAI,CAACiC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AAC7B,SAAC,MAAM;UACL,IAAI,CAACjC,IAAI,EAAE,CAAA;AACb,SAAA;QACA+B,KAAK,CAACG,cAAc,EAAE,CAAA;AACtB,QAAA,MAAA;AACF,MAAA,KAAK,YAAY;AACf,QAAA,IAAIlC,IAAI,EAAE;UACR,IAAI,CAACiC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAC1B,SAAC,MAAM;UACL,IAAI,CAACjC,IAAI,EAAE,CAAA;AACb,SAAA;QACA+B,KAAK,CAACG,cAAc,EAAE,CAAA;AACtB,QAAA,MAAA;AACF,MAAA,KAAK,WAAW;AACd,QAAA,IAAIlC,IAAI,EAAE;UACR,IAAI,CAACiC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAC1B,SAAC,MAAM;UACL,IAAI,CAACjC,IAAI,EAAE,CAAA;AACb,SAAA;QACA+B,KAAK,CAACG,cAAc,EAAE,CAAA;AACtB,QAAA,MAAA;AACF,MAAA,KAAK,QAAQ;QACX,IAAIxC,YAAY,KAAK,IAAI,EAAE;AACzB,UAAA,IAAI,CAACJ,KAAK,CAACsB,QAAQ,CAAClB,YAAY,CAAC,CAAA;AACnC,SAAA;QACA,IAAI,CAACkC,KAAK,EAAE,CAAA;QACZG,KAAK,CAACG,cAAc,EAAE,CAAA;AACtB,QAAA,MAAA;AAGJ,KAAA;GACD,CAAA;AAEDD,EAAAA,UAAU,GAAGA,CAACE,SAAiB,EAAEC,WAAmB,EAAEC,UAAkB,KAAI;IAC1E,MAAM;MAAE7C,YAAY;MAAElB,GAAG;MAAEC,GAAG;MAAE0B,IAAI;AAAEP,MAAAA,YAAAA;KAAc,GAAG,IAAI,CAACH,KAAK,CAAA;IACjE,IAAIG,YAAY,KAAK,IAAI,EAAE;MACzB,IAAI,CAAC6B,QAAQ,CAAC;AAAE7B,QAAAA,YAAY,EAAEF,YAAAA;AAAc,OAAA,CAAC,CAAA;AAC/C,KAAA;AACA,IAAA,IAAI8C,IAAiB,CAAA;AACrB,IAAA,IAAI9C,YAAY,EAAE;MAChB8C,IAAI,GAAG,IAAI1C,IAAI,CACbK,IAAI,KAAK,MAAM,GAAGT,YAAY,CAACO,WAAW,EAAE,GAAGsC,UAAU,GAAG7C,YAAY,CAACO,WAAW,EAAE,EACtFE,IAAI,KAAK,OAAO,GAAGT,YAAY,CAACK,QAAQ,EAAE,GAAGuC,WAAW,GAAG5C,YAAY,CAACK,QAAQ,EAAE,EAClFI,IAAI,KAAK,KAAK,GAAGT,YAAY,CAAC+C,OAAO,EAAE,GAAGJ,SAAS,GAAG3C,YAAY,CAAC+C,OAAO,EAAE,CAC7E,CAAA;AACH,KAAC,MAAM;AACLD,MAAAA,IAAI,GAAG7C,aAAa,CAAC,IAAIG,IAAI,EAAE,CAAC,CAAA;AAClC,KAAA;AACA,IAAA,IAAI0C,IAAI,EAAE;MACRA,IAAI,GAAGzB,iBAAiB,CAACyB,IAAI,EAAEhE,GAAG,EAAEC,GAAG,CAAC,CAAA;AAC1C,KAAA;IACA,IAAI+D,IAAI,EAAE9B,OAAO,EAAE,KAAKhB,YAAY,EAAEgB,OAAO,EAAE,EAAE;AAC/C,MAAA,IAAI,CAAClB,KAAK,CAACsB,QAAQ,CAAC0B,IAAI,CAAC,CAAA;AAC3B,KAAA;GACD,CAAA;AAEDrB,EAAAA,OAAO,GAAGA,CAACuB,gBAAwB,EAAEC,eAAwB,KAAI;IAC/D,MAAMvD,OAAO,GAAG,IAAI,CAACA,OAAO,CAACwD,OAAO,EAAEC,aAAa,CAACH,gBAAgB,CAAuB,CAAA;AAC3F,IAAA,IAAItD,OAAO,EAAE;MACXA,OAAO,CAAC0D,KAAK,EAAE,CAAA;KAChB,MAAM,IAAIH,eAAe,EAAE;AAC1B,MAAA,IAAI,CAACxB,OAAO,CAACwB,eAAe,CAAC,CAAA;AAC/B,KAAA;GACD,CAAA;EAEDI,UAAU,GAAI5C,IAA8B,IAAI;IAC9C,IAAI,CAACsB,QAAQ,CAAC;AAAEtB,MAAAA,IAAAA;AAAM,KAAA,EAAE,MAAK;AAC3B,MAAA,IAAI,CAACgB,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;AACnC,KAAC,CAAC,CAAA;GACH,CAAA;EAED6B,YAAY,GAAGA,MAAM,IAAI,CAACD,UAAU,CAAC,KAAK,CAAC,CAAA;EAE3CE,cAAc,GAAGA,MAAM,IAAI,CAACF,UAAU,CAAC,OAAO,CAAC,CAAA;EAE/CG,aAAa,GAAGA,MAAM,IAAI,CAACH,UAAU,CAAC,MAAM,CAAC,CAAA;EAE7CI,wBAAwB,GAAIzD,YAAkB,IAAI;IAChD,IAAI,CAAC+B,QAAQ,CAAC;AAAE/B,MAAAA,YAAAA;AAAc,KAAA,EAAE,MAAK;AACnC,MAAA,IAAI,CAACF,KAAK,CAACsB,QAAQ,CAACpB,YAAY,CAAC,CAAA;MACjC,IAAI,CAACoC,KAAK,EAAE,CAAA;AACZ,MAAA,IAAI,CAACX,OAAO,CAAC,MAAM,CAAC,CAAA;AACtB,KAAC,CAAC,CAAA;GACH,CAAA;AAEDiC,EAAAA,oBAAoB,GAAGA,CAAC;AAAEC,IAAAA,KAAK,GAAG,IAAI,CAAC5D,KAAK,CAACI,SAAS;AAAEyD,IAAAA,IAAI,GAAG,IAAI,CAAC7D,KAAK,CAACO,QAAAA;AAAQ,GAAE,KAAI;IACtF,IAAI,CAACyB,QAAQ,CAAC;AAAE5B,MAAAA,SAAS,EAAEwD,KAAK;AAAErD,MAAAA,QAAQ,EAAEsD,IAAAA;AAAI,KAAE,CAAC,CAAA;GACpD,CAAA;EAEDC,WAAW,GAAGA,MAAK;IACjB,MAAM;MAAE7D,YAAY;MAAElB,GAAG;MAAEC,GAAG;MAAEoB,SAAS;MAAEG,QAAQ;MAAEG,IAAI;AAAEC,MAAAA,QAAAA;KAAU,GAAG,IAAI,CAACX,KAAK,CAAA;IAClF,MAAM;MAAEZ,WAAW;AAAEE,MAAAA,WAAAA;KAAa,GAAG,IAAI,CAACS,KAAK,CAAA;AAC/C,IAAA,oBACEgE,IAAA,CAAA,KAAA,EAAA;MAAKC,SAAS,EAAEC,IAAI,CAAC;AAAE,QAAA,OAAO,EAAE,CAACtD,QAAAA;AAAU,OAAA,CAAE;AAAAuD,MAAAA,QAAA,GAC1CxD,IAAI,KAAK,KAAK,iBACbyD,GAAA,CAACC,WAAW,EAAA;AACVnE,QAAAA,YAAY,EAAEA,YAAa;AAC3BlB,QAAAA,GAAG,EAAEA,GAAI;AACTC,QAAAA,GAAG,EAAEA,GAAI;AACToB,QAAAA,SAAS,EAAEA,SAAU;AACrBG,QAAAA,QAAQ,EAAEA,QAAS;AACnBjB,QAAAA,WAAW,EAAEA,WAAY;QACzB+E,QAAQ,EAAE,IAAI,CAACX,wBAAyB;QACxCY,YAAY,EAAE,IAAI,CAACb,aAAc;QACjCc,gBAAgB,EAAE,IAAI,CAACZ,oBAAAA;OAAqB,CAE/C,EACAjD,IAAI,KAAK,OAAO,iBACfyD,GAAA,CAACK,aAAa,EAAA;AACZvE,QAAAA,YAAY,EAAEA,YAAa;AAC3BlB,QAAAA,GAAG,EAAEA,GAAI;AACTC,QAAAA,GAAG,EAAEA,GAAI;AACTuB,QAAAA,QAAQ,EAAEA,QAAS;AACnBnB,QAAAA,WAAW,EAAEA,WAAY;QACzBiF,QAAQ,EAAE,IAAI,CAACd,YAAa;QAC5Be,YAAY,EAAE,IAAI,CAACb,aAAc;QACjCc,gBAAgB,EAAE,IAAI,CAACZ,oBAAAA;OAAqB,CAE/C,EACAjD,IAAI,KAAK,MAAM,iBACdyD,GAAA,CAACM,YAAY,EAAA;AACXxE,QAAAA,YAAY,EAAEA,YAAa;AAC3BlB,QAAAA,GAAG,EAAEA,GAAI;AACTC,QAAAA,GAAG,EAAEA,GAAI;AACTuB,QAAAA,QAAQ,EAAEA,QAAS;AACnBnB,QAAAA,WAAW,EAAEA,WAAY;QACzBiF,QAAQ,EAAE,IAAI,CAACb,cAAe;QAC9Be,gBAAgB,EAAE,IAAI,CAACZ,oBAAAA;AAAqB,OAC5C,CACH,CAAA;AAAA,KACE,CAAC,CAAA;GAET,CAAA;EAEDe,WAAW,GAAGA,MAAK;AACjB,IAAA,IAAI,CAAC3E,KAAK,CAACsB,QAAQ,CAAC,IAAI,CAAC,CAAA;AACzB,IAAA,IAAI,CAACK,OAAO,CAAC,kBAAkB,CAAC,CAAA;GACjC,CAAA;AAEDiD,EAAAA,MAAMA,GAAA;IACJ,MAAM;MAAE1E,YAAY;AAAEQ,MAAAA,IAAAA;KAAM,GAAG,IAAI,CAACT,KAAK,CAAA;IAEzC,MAAM;MACJ4E,eAAe;AACfC,MAAAA,EAAE,EAAEC,MAAM;AACV,MAAA,iBAAiB,EAAEC,kBAAkB;MACrC9F,IAAI;MACJG,WAAW;MACXC,KAAK;MACLC,WAAW;MACXG,QAAQ;MACRC,SAAS;AACTZ,MAAAA,KAAAA;KACD,GAAG,IAAI,CAACiB,KAAK,CAAA;AACd,IAAA,MAAM8E,EAAE,GAAGC,MAAM,IAAIF,eAAe,EAAEC,EAAE,CAAA;AACxC,IAAA,MAAMG,cAAc,GAAGD,kBAAkB,IAAIH,eAAe,GAAG,iBAAiB,CAAC,CAAA;AAEjF,IAAA,oBACET,GAAA,CAAA,KAAA,EAAA;MACEc,GAAG,EAAE,IAAI,CAACtF,OAAQ;AAAA,MAAA,GACdiF,eAAe;AACnBC,MAAAA,EAAE,EAAEA,EAAG;AACP,MAAA,iBAAA,EAAiBG,cAAe;AAChChB,MAAAA,SAAS,EAAC,aAAa;MACvBkB,SAAS,EAAE,IAAI,CAAC3C,aAAc;MAAA2B,QAAA,eAE9BH,IAAA,CAACoB,iBAAiB,EAAA;AAAC1E,QAAAA,IAAI,EAAEA,IAAK;QAAAyD,QAAA,EAAA,cAC5BC,GAAA,CAACiB,WAAW,EAAA;AACVnF,UAAAA,YAAY,EAAEA,YAAa;AAC3BhB,UAAAA,IAAI,EAAEA,IAAK;AACXG,UAAAA,WAAW,EAAEA,WAAY;AACzBC,UAAAA,KAAK,EAAEA,KAAM;AACbC,UAAAA,WAAW,EAAEA,WAAY;UACzBG,QAAQ,EAAEA,QAAQ,IAAI,KAAM;UAC5B4F,OAAO,EAAE,IAAI,CAAC5E,IAAK;UACnB6E,OAAO,EAAE,CAAC7F,QAAQ,IAAIC,SAAS,IAAIZ,KAAK,GAAG,IAAI,CAAC4F,WAAW,GAAGa,SAAAA;AAAU,SAE1E,CAAA,eAAApB,GAAA,CAACqB,eAAe,EAAA;UACdC,SAAS,EAAE,IAAI,CAAC9F,OAAQ;AACxBc,UAAAA,IAAI,EAAEA,IAAK;AACXuD,UAAAA,SAAS,EAAC,qBAAqB;UAC/B0B,QAAQ,EAAEC,QAAQ,CAACC,MAAO;UAC1BC,OAAO,EAAE,IAAI,CAACzD,OAAQ;AAAA8B,UAAAA,QAAA,EAErB,IAAI,CAACJ,WAAW,EAAA;AAAE,SACJ,CACnB,CAAA;OAAmB,CAAA;AACrB,KAAK,CAAC,CAAA;AAEV,GAAA;;AAKF,mBAAegC,mBAAmB,CAChCnH,UAAqE,EACrE;AAAEoH,EAAAA,YAAY,EAAE,IAAA;AAAM,CAAA,CACvB;;;;"}
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 SizeSmall,\n SizeMedium,\n SizeLarge,\n} from '../common';\nimport { isWithinRange, moveToWithinRange } 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 this.state = {\n selectedDate: getStartOfDay(props.value),\n originalDate: null,\n min: getStartOfDay(props.min),\n max: getStartOfDay(props.max),\n viewMonth: (props.value || new Date()).getMonth(),\n viewYear: (props.value || new Date()).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 =\n selectedDate || ((min || max) && moveToWithinRange(new Date(), min, max)) || new Date();\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 if (date) {\n date = moveToWithinRange(date, min, max);\n }\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","state","selectedDate","getStartOfDay","originalDate","viewMonth","Date","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","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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"}
@@ -20,6 +20,7 @@ const DateTrigger = ({
20
20
  label,
21
21
  monthFormat,
22
22
  disabled,
23
+ ariaLabelledBy,
23
24
  onClick,
24
25
  onClear
25
26
  }) => {
@@ -33,6 +34,7 @@ const DateTrigger = ({
33
34
  "aria-haspopup": "dialog",
34
35
  "aria-expanded": overlayId != null,
35
36
  "aria-controls": overlayId,
37
+ "aria-labelledby": ariaLabelledBy,
36
38
  className: `btn btn-${size$1} btn-input np-date-trigger`,
37
39
  disabled: disabled,
38
40
  type: "button",
@@ -1 +1 @@
1
- {"version":3,"file":"DateTrigger.js","sources":["../../../src/dateLookup/dateTrigger/DateTrigger.tsx"],"sourcesContent":["import { formatDate } from '@transferwise/formatting';\nimport { useIntl } from 'react-intl';\n\nimport Chevron from '../../chevron';\nimport { Size, Position, SizeSmall, SizeMedium, SizeLarge, Typography } from '../../common';\nimport { CloseButton } from '../../common/closeButton/CloseButton';\n\nimport messages from './DateTrigger.messages';\nimport { useContext } from 'react';\nimport { OverlayIdContext } from '../../provider/overlay/OverlayIdProvider';\nimport Body from '../../body';\n\ninterface DateTriggerProps {\n selectedDate: Date | null;\n size: SizeSmall | SizeMedium | SizeLarge;\n placeholder: string;\n label: string;\n monthFormat: 'short' | 'long';\n disabled: boolean;\n onClick: () => void;\n onClear?: () => void;\n}\n\nconst DateTrigger: React.FC<DateTriggerProps> = ({\n selectedDate,\n size = Size.MEDIUM,\n placeholder,\n label,\n monthFormat,\n disabled,\n onClick,\n onClear,\n}) => {\n const { locale, formatMessage } = useIntl();\n\n const overlayId = useContext(OverlayIdContext);\n\n return (\n <>\n <button\n aria-haspopup=\"dialog\"\n aria-expanded={overlayId != null}\n aria-controls={overlayId}\n className={`btn btn-${size} btn-input np-date-trigger`}\n disabled={disabled}\n type=\"button\"\n onClick={onClick}\n >\n {label && (\n <Body as=\"span\" className=\"np-date-trigger-label m-r-1\">\n {label}\n </Body>\n )}\n {selectedDate ? (\n <Body as=\"span\" type={Typography.BODY_LARGE}>\n {formatDate(selectedDate, locale, {\n day: 'numeric',\n month: monthFormat,\n year: 'numeric',\n })}\n </Body>\n ) : (\n <span\n className=\"form-control-placeholder visible-xs-inline visible-sm-inline\n visible-md-inline visible-lg-inline visible-xl-inline\"\n >\n {placeholder}\n </span>\n )}\n {!onClear ? <Chevron orientation={Position.BOTTOM} disabled={disabled} /> : null}\n </button>\n {onClear ? (\n <>\n <div className=\"clearfix\" />\n <span className=\"input-group-addon\">\n <CloseButton\n className={`clear-btn clear-btn--${size}`}\n aria-label={`${formatMessage(messages.ariaLabel)} ${label}`}\n size={Size.SMALL}\n onClick={(event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n event.preventDefault();\n onClear();\n }}\n />\n </span>\n </>\n ) : null}\n </>\n );\n};\n\nexport default DateTrigger;\n"],"names":["DateTrigger","selectedDate","size","Size","MEDIUM","placeholder","label","monthFormat","disabled","onClick","onClear","locale","formatMessage","useIntl","overlayId","useContext","OverlayIdContext","_jsxs","_Fragment","children","className","type","_jsx","Body","as","Typography","BODY_LARGE","formatDate","day","month","year","Chevron","orientation","Position","BOTTOM","CloseButton","messages","ariaLabel","SMALL","event","stopPropagation","preventDefault"],"mappings":";;;;;;;;;;;;;;;AAuBMA,MAAAA,WAAW,GAA+BA,CAAC;EAC/CC,YAAY;QACZC,MAAI,GAAGC,SAAI,CAACC,MAAM;EAClBC,WAAW;EACXC,KAAK;EACLC,WAAW;EACXC,QAAQ;EACRC,OAAO;AACPC,EAAAA,OAAAA;AACD,CAAA,KAAI;EACH,MAAM;IAAEC,MAAM;AAAEC,IAAAA,aAAAA;GAAe,GAAGC,iBAAO,EAAE,CAAA;AAE3C,EAAA,MAAMC,SAAS,GAAGC,gBAAU,CAACC,kCAAgB,CAAC,CAAA;EAE9C,oBACEC,eAAA,CAAAC,mBAAA,EAAA;AAAAC,IAAAA,QAAA,gBACEF,eAAA,CAAA,QAAA,EAAA;AACE,MAAA,eAAA,EAAc,QAAQ;MACtB,eAAeH,EAAAA,SAAS,IAAI,IAAK;AACjC,MAAA,eAAA,EAAeA,SAAU;MACzBM,SAAS,EAAE,CAAWlB,QAAAA,EAAAA,MAAI,CAA6B,0BAAA,CAAA;AACvDM,MAAAA,QAAQ,EAAEA,QAAS;AACnBa,MAAAA,IAAI,EAAC,QAAQ;AACbZ,MAAAA,OAAO,EAAEA,OAAQ;AAAAU,MAAAA,QAAA,EAEhBb,CAAAA,KAAK,iBACJgB,cAAA,CAACC,IAAI,EAAA;AAACC,QAAAA,EAAE,EAAC,MAAM;AAACJ,QAAAA,SAAS,EAAC,6BAA6B;AAAAD,QAAAA,QAAA,EACpDb,KAAAA;AAAK,OACF,CACP,EACAL,YAAY,gBACXqB,cAAA,CAACC,IAAI,EAAA;AAACC,QAAAA,EAAE,EAAC,MAAM;QAACH,IAAI,EAAEI,qBAAU,CAACC,UAAW;AAAAP,QAAAA,QAAA,EACzCQ,qBAAU,CAAC1B,YAAY,EAAEU,MAAM,EAAE;AAChCiB,UAAAA,GAAG,EAAE,SAAS;AACdC,UAAAA,KAAK,EAAEtB,WAAW;AAClBuB,UAAAA,IAAI,EAAE,SAAA;SACP,CAAA;OACG,CAAC,gBAEPR,cAAA,CAAA,MAAA,EAAA;AACEF,QAAAA,SAAS,EAAC,oHACuD;AAAAD,QAAAA,QAAA,EAEhEd,WAAAA;AAAW,OACR,CACP,EACA,CAACK,OAAO,gBAAGY,cAAA,CAACS,OAAO,EAAA;QAACC,WAAW,EAAEC,iBAAQ,CAACC,MAAO;AAAC1B,QAAAA,QAAQ,EAAEA,QAAAA;OAAS,CAAG,GAAG,IAAI,CAAA;AAAA,KAC1E,CACR,EAACE,OAAO,gBACNO,eAAA,CAAAC,mBAAA,EAAA;AAAAC,MAAAA,QAAA,gBACEG,cAAA,CAAA,KAAA,EAAA;AAAKF,QAAAA,SAAS,EAAC,UAAA;OACf,CAAA,eAAAE,cAAA,CAAA,MAAA,EAAA;AAAMF,QAAAA,SAAS,EAAC,mBAAmB;QAAAD,QAAA,eACjCG,cAAA,CAACa,uBAAW,EAAA;UACVf,SAAS,EAAE,CAAwBlB,qBAAAA,EAAAA,MAAI,CAAG,CAAA;UAC1C,YAAY,EAAA,CAAA,EAAGU,aAAa,CAACwB,oBAAQ,CAACC,SAAS,CAAC,CAAI/B,CAAAA,EAAAA,KAAK,CAAG,CAAA;UAC5DJ,IAAI,EAAEC,SAAI,CAACmC,KAAM;UACjB7B,OAAO,EAAG8B,KAA0C,IAAI;YACtDA,KAAK,CAACC,eAAe,EAAE,CAAA;YACvBD,KAAK,CAACE,cAAc,EAAE,CAAA;AACtB/B,YAAAA,OAAO,EAAE,CAAA;AACX,WAAA;SAEJ,CAAA;AAAA,OAAM,CACR,CAAA;KAAA,CAAG,GACD,IAAI,CAAA;AAAA,GACV,CAAG,CAAA;AAEP;;;;"}
1
+ {"version":3,"file":"DateTrigger.js","sources":["../../../src/dateLookup/dateTrigger/DateTrigger.tsx"],"sourcesContent":["import { formatDate } from '@transferwise/formatting';\nimport { useIntl } from 'react-intl';\n\nimport Chevron from '../../chevron';\nimport { Size, Position, SizeSmall, SizeMedium, SizeLarge, Typography } from '../../common';\nimport { CloseButton } from '../../common/closeButton/CloseButton';\n\nimport messages from './DateTrigger.messages';\nimport { useContext } from 'react';\nimport { OverlayIdContext } from '../../provider/overlay/OverlayIdProvider';\nimport Body from '../../body';\n\ninterface DateTriggerProps {\n ariaLabelledBy?: string;\n selectedDate: Date | null;\n size: SizeSmall | SizeMedium | SizeLarge;\n placeholder: string;\n label: string;\n monthFormat: 'short' | 'long';\n disabled: boolean;\n onClick: () => void;\n onClear?: () => void;\n}\n\nconst DateTrigger: React.FC<DateTriggerProps> = ({\n selectedDate,\n size = Size.MEDIUM,\n placeholder,\n label,\n monthFormat,\n disabled,\n ariaLabelledBy,\n onClick,\n onClear,\n}) => {\n const { locale, formatMessage } = useIntl();\n\n const overlayId = useContext(OverlayIdContext);\n\n return (\n <>\n <button\n aria-haspopup=\"dialog\"\n aria-expanded={overlayId != null}\n aria-controls={overlayId}\n aria-labelledby={ariaLabelledBy}\n className={`btn btn-${size} btn-input np-date-trigger`}\n disabled={disabled}\n type=\"button\"\n onClick={onClick}\n >\n {label && (\n <Body as=\"span\" className=\"np-date-trigger-label m-r-1\">\n {label}\n </Body>\n )}\n {selectedDate ? (\n <Body as=\"span\" type={Typography.BODY_LARGE}>\n {formatDate(selectedDate, locale, {\n day: 'numeric',\n month: monthFormat,\n year: 'numeric',\n })}\n </Body>\n ) : (\n <span\n className=\"form-control-placeholder visible-xs-inline visible-sm-inline\n visible-md-inline visible-lg-inline visible-xl-inline\"\n >\n {placeholder}\n </span>\n )}\n {!onClear ? <Chevron orientation={Position.BOTTOM} disabled={disabled} /> : null}\n </button>\n {onClear ? (\n <>\n <div className=\"clearfix\" />\n <span className=\"input-group-addon\">\n <CloseButton\n className={`clear-btn clear-btn--${size}`}\n aria-label={`${formatMessage(messages.ariaLabel)} ${label}`}\n size={Size.SMALL}\n onClick={(event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n event.preventDefault();\n onClear();\n }}\n />\n </span>\n </>\n ) : null}\n </>\n );\n};\n\nexport default DateTrigger;\n"],"names":["DateTrigger","selectedDate","size","Size","MEDIUM","placeholder","label","monthFormat","disabled","ariaLabelledBy","onClick","onClear","locale","formatMessage","useIntl","overlayId","useContext","OverlayIdContext","_jsxs","_Fragment","children","className","type","_jsx","Body","as","Typography","BODY_LARGE","formatDate","day","month","year","Chevron","orientation","Position","BOTTOM","CloseButton","messages","ariaLabel","SMALL","event","stopPropagation","preventDefault"],"mappings":";;;;;;;;;;;;;;;AAwBMA,MAAAA,WAAW,GAA+BA,CAAC;EAC/CC,YAAY;QACZC,MAAI,GAAGC,SAAI,CAACC,MAAM;EAClBC,WAAW;EACXC,KAAK;EACLC,WAAW;EACXC,QAAQ;EACRC,cAAc;EACdC,OAAO;AACPC,EAAAA,OAAAA;AACD,CAAA,KAAI;EACH,MAAM;IAAEC,MAAM;AAAEC,IAAAA,aAAAA;GAAe,GAAGC,iBAAO,EAAE,CAAA;AAE3C,EAAA,MAAMC,SAAS,GAAGC,gBAAU,CAACC,kCAAgB,CAAC,CAAA;EAE9C,oBACEC,eAAA,CAAAC,mBAAA,EAAA;AAAAC,IAAAA,QAAA,gBACEF,eAAA,CAAA,QAAA,EAAA;AACE,MAAA,eAAA,EAAc,QAAQ;MACtB,eAAeH,EAAAA,SAAS,IAAI,IAAK;AACjC,MAAA,eAAA,EAAeA,SAAU;AACzB,MAAA,iBAAA,EAAiBN,cAAe;MAChCY,SAAS,EAAE,CAAWnB,QAAAA,EAAAA,MAAI,CAA6B,0BAAA,CAAA;AACvDM,MAAAA,QAAQ,EAAEA,QAAS;AACnBc,MAAAA,IAAI,EAAC,QAAQ;AACbZ,MAAAA,OAAO,EAAEA,OAAQ;AAAAU,MAAAA,QAAA,EAEhBd,CAAAA,KAAK,iBACJiB,cAAA,CAACC,IAAI,EAAA;AAACC,QAAAA,EAAE,EAAC,MAAM;AAACJ,QAAAA,SAAS,EAAC,6BAA6B;AAAAD,QAAAA,QAAA,EACpDd,KAAAA;AAAK,OACF,CACP,EACAL,YAAY,gBACXsB,cAAA,CAACC,IAAI,EAAA;AAACC,QAAAA,EAAE,EAAC,MAAM;QAACH,IAAI,EAAEI,qBAAU,CAACC,UAAW;AAAAP,QAAAA,QAAA,EACzCQ,qBAAU,CAAC3B,YAAY,EAAEW,MAAM,EAAE;AAChCiB,UAAAA,GAAG,EAAE,SAAS;AACdC,UAAAA,KAAK,EAAEvB,WAAW;AAClBwB,UAAAA,IAAI,EAAE,SAAA;SACP,CAAA;OACG,CAAC,gBAEPR,cAAA,CAAA,MAAA,EAAA;AACEF,QAAAA,SAAS,EAAC,oHACuD;AAAAD,QAAAA,QAAA,EAEhEf,WAAAA;AAAW,OACR,CACP,EACA,CAACM,OAAO,gBAAGY,cAAA,CAACS,OAAO,EAAA;QAACC,WAAW,EAAEC,iBAAQ,CAACC,MAAO;AAAC3B,QAAAA,QAAQ,EAAEA,QAAAA;OAAS,CAAG,GAAG,IAAI,CAAA;AAAA,KAC1E,CACR,EAACG,OAAO,gBACNO,eAAA,CAAAC,mBAAA,EAAA;AAAAC,MAAAA,QAAA,gBACEG,cAAA,CAAA,KAAA,EAAA;AAAKF,QAAAA,SAAS,EAAC,UAAA;OACf,CAAA,eAAAE,cAAA,CAAA,MAAA,EAAA;AAAMF,QAAAA,SAAS,EAAC,mBAAmB;QAAAD,QAAA,eACjCG,cAAA,CAACa,uBAAW,EAAA;UACVf,SAAS,EAAE,CAAwBnB,qBAAAA,EAAAA,MAAI,CAAG,CAAA;UAC1C,YAAY,EAAA,CAAA,EAAGW,aAAa,CAACwB,oBAAQ,CAACC,SAAS,CAAC,CAAIhC,CAAAA,EAAAA,KAAK,CAAG,CAAA;UAC5DJ,IAAI,EAAEC,SAAI,CAACoC,KAAM;UACjB7B,OAAO,EAAG8B,KAA0C,IAAI;YACtDA,KAAK,CAACC,eAAe,EAAE,CAAA;YACvBD,KAAK,CAACE,cAAc,EAAE,CAAA;AACtB/B,YAAAA,OAAO,EAAE,CAAA;AACX,WAAA;SAEJ,CAAA;AAAA,OAAM,CACR,CAAA;KAAA,CAAG,GACD,IAAI,CAAA;AAAA,GACV,CAAG,CAAA;AAEP;;;;"}
@@ -18,6 +18,7 @@ const DateTrigger = ({
18
18
  label,
19
19
  monthFormat,
20
20
  disabled,
21
+ ariaLabelledBy,
21
22
  onClick,
22
23
  onClear
23
24
  }) => {
@@ -31,6 +32,7 @@ const DateTrigger = ({
31
32
  "aria-haspopup": "dialog",
32
33
  "aria-expanded": overlayId != null,
33
34
  "aria-controls": overlayId,
35
+ "aria-labelledby": ariaLabelledBy,
34
36
  className: `btn btn-${size} btn-input np-date-trigger`,
35
37
  disabled: disabled,
36
38
  type: "button",
@@ -1 +1 @@
1
- {"version":3,"file":"DateTrigger.mjs","sources":["../../../src/dateLookup/dateTrigger/DateTrigger.tsx"],"sourcesContent":["import { formatDate } from '@transferwise/formatting';\nimport { useIntl } from 'react-intl';\n\nimport Chevron from '../../chevron';\nimport { Size, Position, SizeSmall, SizeMedium, SizeLarge, Typography } from '../../common';\nimport { CloseButton } from '../../common/closeButton/CloseButton';\n\nimport messages from './DateTrigger.messages';\nimport { useContext } from 'react';\nimport { OverlayIdContext } from '../../provider/overlay/OverlayIdProvider';\nimport Body from '../../body';\n\ninterface DateTriggerProps {\n selectedDate: Date | null;\n size: SizeSmall | SizeMedium | SizeLarge;\n placeholder: string;\n label: string;\n monthFormat: 'short' | 'long';\n disabled: boolean;\n onClick: () => void;\n onClear?: () => void;\n}\n\nconst DateTrigger: React.FC<DateTriggerProps> = ({\n selectedDate,\n size = Size.MEDIUM,\n placeholder,\n label,\n monthFormat,\n disabled,\n onClick,\n onClear,\n}) => {\n const { locale, formatMessage } = useIntl();\n\n const overlayId = useContext(OverlayIdContext);\n\n return (\n <>\n <button\n aria-haspopup=\"dialog\"\n aria-expanded={overlayId != null}\n aria-controls={overlayId}\n className={`btn btn-${size} btn-input np-date-trigger`}\n disabled={disabled}\n type=\"button\"\n onClick={onClick}\n >\n {label && (\n <Body as=\"span\" className=\"np-date-trigger-label m-r-1\">\n {label}\n </Body>\n )}\n {selectedDate ? (\n <Body as=\"span\" type={Typography.BODY_LARGE}>\n {formatDate(selectedDate, locale, {\n day: 'numeric',\n month: monthFormat,\n year: 'numeric',\n })}\n </Body>\n ) : (\n <span\n className=\"form-control-placeholder visible-xs-inline visible-sm-inline\n visible-md-inline visible-lg-inline visible-xl-inline\"\n >\n {placeholder}\n </span>\n )}\n {!onClear ? <Chevron orientation={Position.BOTTOM} disabled={disabled} /> : null}\n </button>\n {onClear ? (\n <>\n <div className=\"clearfix\" />\n <span className=\"input-group-addon\">\n <CloseButton\n className={`clear-btn clear-btn--${size}`}\n aria-label={`${formatMessage(messages.ariaLabel)} ${label}`}\n size={Size.SMALL}\n onClick={(event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n event.preventDefault();\n onClear();\n }}\n />\n </span>\n </>\n ) : null}\n </>\n );\n};\n\nexport default DateTrigger;\n"],"names":["DateTrigger","selectedDate","size","Size","MEDIUM","placeholder","label","monthFormat","disabled","onClick","onClear","locale","formatMessage","useIntl","overlayId","useContext","OverlayIdContext","_jsxs","_Fragment","children","className","type","_jsx","Body","as","Typography","BODY_LARGE","formatDate","day","month","year","Chevron","orientation","Position","BOTTOM","CloseButton","messages","ariaLabel","SMALL","event","stopPropagation","preventDefault"],"mappings":";;;;;;;;;;;;;AAuBMA,MAAAA,WAAW,GAA+BA,CAAC;EAC/CC,YAAY;EACZC,IAAI,GAAGC,IAAI,CAACC,MAAM;EAClBC,WAAW;EACXC,KAAK;EACLC,WAAW;EACXC,QAAQ;EACRC,OAAO;AACPC,EAAAA,OAAAA;AACD,CAAA,KAAI;EACH,MAAM;IAAEC,MAAM;AAAEC,IAAAA,aAAAA;GAAe,GAAGC,OAAO,EAAE,CAAA;AAE3C,EAAA,MAAMC,SAAS,GAAGC,UAAU,CAACC,gBAAgB,CAAC,CAAA;EAE9C,oBACEC,IAAA,CAAAC,QAAA,EAAA;AAAAC,IAAAA,QAAA,gBACEF,IAAA,CAAA,QAAA,EAAA;AACE,MAAA,eAAA,EAAc,QAAQ;MACtB,eAAeH,EAAAA,SAAS,IAAI,IAAK;AACjC,MAAA,eAAA,EAAeA,SAAU;MACzBM,SAAS,EAAE,CAAWlB,QAAAA,EAAAA,IAAI,CAA6B,0BAAA,CAAA;AACvDM,MAAAA,QAAQ,EAAEA,QAAS;AACnBa,MAAAA,IAAI,EAAC,QAAQ;AACbZ,MAAAA,OAAO,EAAEA,OAAQ;AAAAU,MAAAA,QAAA,EAEhBb,CAAAA,KAAK,iBACJgB,GAAA,CAACC,IAAI,EAAA;AAACC,QAAAA,EAAE,EAAC,MAAM;AAACJ,QAAAA,SAAS,EAAC,6BAA6B;AAAAD,QAAAA,QAAA,EACpDb,KAAAA;AAAK,OACF,CACP,EACAL,YAAY,gBACXqB,GAAA,CAACC,IAAI,EAAA;AAACC,QAAAA,EAAE,EAAC,MAAM;QAACH,IAAI,EAAEI,UAAU,CAACC,UAAW;AAAAP,QAAAA,QAAA,EACzCQ,UAAU,CAAC1B,YAAY,EAAEU,MAAM,EAAE;AAChCiB,UAAAA,GAAG,EAAE,SAAS;AACdC,UAAAA,KAAK,EAAEtB,WAAW;AAClBuB,UAAAA,IAAI,EAAE,SAAA;SACP,CAAA;OACG,CAAC,gBAEPR,GAAA,CAAA,MAAA,EAAA;AACEF,QAAAA,SAAS,EAAC,oHACuD;AAAAD,QAAAA,QAAA,EAEhEd,WAAAA;AAAW,OACR,CACP,EACA,CAACK,OAAO,gBAAGY,GAAA,CAACS,OAAO,EAAA;QAACC,WAAW,EAAEC,QAAQ,CAACC,MAAO;AAAC1B,QAAAA,QAAQ,EAAEA,QAAAA;OAAS,CAAG,GAAG,IAAI,CAAA;AAAA,KAC1E,CACR,EAACE,OAAO,gBACNO,IAAA,CAAAC,QAAA,EAAA;AAAAC,MAAAA,QAAA,gBACEG,GAAA,CAAA,KAAA,EAAA;AAAKF,QAAAA,SAAS,EAAC,UAAA;OACf,CAAA,eAAAE,GAAA,CAAA,MAAA,EAAA;AAAMF,QAAAA,SAAS,EAAC,mBAAmB;QAAAD,QAAA,eACjCG,GAAA,CAACa,WAAW,EAAA;UACVf,SAAS,EAAE,CAAwBlB,qBAAAA,EAAAA,IAAI,CAAG,CAAA;UAC1C,YAAY,EAAA,CAAA,EAAGU,aAAa,CAACwB,mBAAQ,CAACC,SAAS,CAAC,CAAI/B,CAAAA,EAAAA,KAAK,CAAG,CAAA;UAC5DJ,IAAI,EAAEC,IAAI,CAACmC,KAAM;UACjB7B,OAAO,EAAG8B,KAA0C,IAAI;YACtDA,KAAK,CAACC,eAAe,EAAE,CAAA;YACvBD,KAAK,CAACE,cAAc,EAAE,CAAA;AACtB/B,YAAAA,OAAO,EAAE,CAAA;AACX,WAAA;SAEJ,CAAA;AAAA,OAAM,CACR,CAAA;KAAA,CAAG,GACD,IAAI,CAAA;AAAA,GACV,CAAG,CAAA;AAEP;;;;"}
1
+ {"version":3,"file":"DateTrigger.mjs","sources":["../../../src/dateLookup/dateTrigger/DateTrigger.tsx"],"sourcesContent":["import { formatDate } from '@transferwise/formatting';\nimport { useIntl } from 'react-intl';\n\nimport Chevron from '../../chevron';\nimport { Size, Position, SizeSmall, SizeMedium, SizeLarge, Typography } from '../../common';\nimport { CloseButton } from '../../common/closeButton/CloseButton';\n\nimport messages from './DateTrigger.messages';\nimport { useContext } from 'react';\nimport { OverlayIdContext } from '../../provider/overlay/OverlayIdProvider';\nimport Body from '../../body';\n\ninterface DateTriggerProps {\n ariaLabelledBy?: string;\n selectedDate: Date | null;\n size: SizeSmall | SizeMedium | SizeLarge;\n placeholder: string;\n label: string;\n monthFormat: 'short' | 'long';\n disabled: boolean;\n onClick: () => void;\n onClear?: () => void;\n}\n\nconst DateTrigger: React.FC<DateTriggerProps> = ({\n selectedDate,\n size = Size.MEDIUM,\n placeholder,\n label,\n monthFormat,\n disabled,\n ariaLabelledBy,\n onClick,\n onClear,\n}) => {\n const { locale, formatMessage } = useIntl();\n\n const overlayId = useContext(OverlayIdContext);\n\n return (\n <>\n <button\n aria-haspopup=\"dialog\"\n aria-expanded={overlayId != null}\n aria-controls={overlayId}\n aria-labelledby={ariaLabelledBy}\n className={`btn btn-${size} btn-input np-date-trigger`}\n disabled={disabled}\n type=\"button\"\n onClick={onClick}\n >\n {label && (\n <Body as=\"span\" className=\"np-date-trigger-label m-r-1\">\n {label}\n </Body>\n )}\n {selectedDate ? (\n <Body as=\"span\" type={Typography.BODY_LARGE}>\n {formatDate(selectedDate, locale, {\n day: 'numeric',\n month: monthFormat,\n year: 'numeric',\n })}\n </Body>\n ) : (\n <span\n className=\"form-control-placeholder visible-xs-inline visible-sm-inline\n visible-md-inline visible-lg-inline visible-xl-inline\"\n >\n {placeholder}\n </span>\n )}\n {!onClear ? <Chevron orientation={Position.BOTTOM} disabled={disabled} /> : null}\n </button>\n {onClear ? (\n <>\n <div className=\"clearfix\" />\n <span className=\"input-group-addon\">\n <CloseButton\n className={`clear-btn clear-btn--${size}`}\n aria-label={`${formatMessage(messages.ariaLabel)} ${label}`}\n size={Size.SMALL}\n onClick={(event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n event.preventDefault();\n onClear();\n }}\n />\n </span>\n </>\n ) : null}\n </>\n );\n};\n\nexport default DateTrigger;\n"],"names":["DateTrigger","selectedDate","size","Size","MEDIUM","placeholder","label","monthFormat","disabled","ariaLabelledBy","onClick","onClear","locale","formatMessage","useIntl","overlayId","useContext","OverlayIdContext","_jsxs","_Fragment","children","className","type","_jsx","Body","as","Typography","BODY_LARGE","formatDate","day","month","year","Chevron","orientation","Position","BOTTOM","CloseButton","messages","ariaLabel","SMALL","event","stopPropagation","preventDefault"],"mappings":";;;;;;;;;;;;;AAwBMA,MAAAA,WAAW,GAA+BA,CAAC;EAC/CC,YAAY;EACZC,IAAI,GAAGC,IAAI,CAACC,MAAM;EAClBC,WAAW;EACXC,KAAK;EACLC,WAAW;EACXC,QAAQ;EACRC,cAAc;EACdC,OAAO;AACPC,EAAAA,OAAAA;AACD,CAAA,KAAI;EACH,MAAM;IAAEC,MAAM;AAAEC,IAAAA,aAAAA;GAAe,GAAGC,OAAO,EAAE,CAAA;AAE3C,EAAA,MAAMC,SAAS,GAAGC,UAAU,CAACC,gBAAgB,CAAC,CAAA;EAE9C,oBACEC,IAAA,CAAAC,QAAA,EAAA;AAAAC,IAAAA,QAAA,gBACEF,IAAA,CAAA,QAAA,EAAA;AACE,MAAA,eAAA,EAAc,QAAQ;MACtB,eAAeH,EAAAA,SAAS,IAAI,IAAK;AACjC,MAAA,eAAA,EAAeA,SAAU;AACzB,MAAA,iBAAA,EAAiBN,cAAe;MAChCY,SAAS,EAAE,CAAWnB,QAAAA,EAAAA,IAAI,CAA6B,0BAAA,CAAA;AACvDM,MAAAA,QAAQ,EAAEA,QAAS;AACnBc,MAAAA,IAAI,EAAC,QAAQ;AACbZ,MAAAA,OAAO,EAAEA,OAAQ;AAAAU,MAAAA,QAAA,EAEhBd,CAAAA,KAAK,iBACJiB,GAAA,CAACC,IAAI,EAAA;AAACC,QAAAA,EAAE,EAAC,MAAM;AAACJ,QAAAA,SAAS,EAAC,6BAA6B;AAAAD,QAAAA,QAAA,EACpDd,KAAAA;AAAK,OACF,CACP,EACAL,YAAY,gBACXsB,GAAA,CAACC,IAAI,EAAA;AAACC,QAAAA,EAAE,EAAC,MAAM;QAACH,IAAI,EAAEI,UAAU,CAACC,UAAW;AAAAP,QAAAA,QAAA,EACzCQ,UAAU,CAAC3B,YAAY,EAAEW,MAAM,EAAE;AAChCiB,UAAAA,GAAG,EAAE,SAAS;AACdC,UAAAA,KAAK,EAAEvB,WAAW;AAClBwB,UAAAA,IAAI,EAAE,SAAA;SACP,CAAA;OACG,CAAC,gBAEPR,GAAA,CAAA,MAAA,EAAA;AACEF,QAAAA,SAAS,EAAC,oHACuD;AAAAD,QAAAA,QAAA,EAEhEf,WAAAA;AAAW,OACR,CACP,EACA,CAACM,OAAO,gBAAGY,GAAA,CAACS,OAAO,EAAA;QAACC,WAAW,EAAEC,QAAQ,CAACC,MAAO;AAAC3B,QAAAA,QAAQ,EAAEA,QAAAA;OAAS,CAAG,GAAG,IAAI,CAAA;AAAA,KAC1E,CACR,EAACG,OAAO,gBACNO,IAAA,CAAAC,QAAA,EAAA;AAAAC,MAAAA,QAAA,gBACEG,GAAA,CAAA,KAAA,EAAA;AAAKF,QAAAA,SAAS,EAAC,UAAA;OACf,CAAA,eAAAE,GAAA,CAAA,MAAA,EAAA;AAAMF,QAAAA,SAAS,EAAC,mBAAmB;QAAAD,QAAA,eACjCG,GAAA,CAACa,WAAW,EAAA;UACVf,SAAS,EAAE,CAAwBnB,qBAAAA,EAAAA,IAAI,CAAG,CAAA;UAC1C,YAAY,EAAA,CAAA,EAAGW,aAAa,CAACwB,mBAAQ,CAACC,SAAS,CAAC,CAAIhC,CAAAA,EAAAA,KAAK,CAAG,CAAA;UAC5DJ,IAAI,EAAEC,IAAI,CAACoC,KAAM;UACjB7B,OAAO,EAAG8B,KAA0C,IAAI;YACtDA,KAAK,CAACC,eAAe,EAAE,CAAA;YACvBD,KAAK,CAACE,cAAc,EAAE,CAAA;AACtB/B,YAAAA,OAAO,EAAE,CAAA;AACX,WAAA;SAEJ,CAAA;AAAA,OAAM,CACR,CAAA;KAAA,CAAG,GACD,IAAI,CAAA;AAAA,GACV,CAAG,CAAA;AAEP;;;;"}
package/build/main.css CHANGED
@@ -5449,6 +5449,12 @@ html:not([dir="rtl"]) .np-navigation-option {
5449
5449
  .tw-droppable-sm {
5450
5450
  min-height: 245px;
5451
5451
  }
5452
+ .tw-droppable-lg .btn:focus-visible,
5453
+ .tw-droppable-md .btn:focus-visible,
5454
+ .tw-droppable-sm .btn:focus-visible {
5455
+ outline: var(--ring-outline-color) solid var(--ring-outline-width);
5456
+ outline-offset: var(--ring-outline-offset);
5457
+ }
5452
5458
  .upload-error-message {
5453
5459
  margin-top: 24px;
5454
5460
  margin-top: var(--padding-medium);
@@ -5449,6 +5449,12 @@ html:not([dir="rtl"]) .np-navigation-option {
5449
5449
  .tw-droppable-sm {
5450
5450
  min-height: 245px;
5451
5451
  }
5452
+ .tw-droppable-lg .btn:focus-visible,
5453
+ .tw-droppable-md .btn:focus-visible,
5454
+ .tw-droppable-sm .btn:focus-visible {
5455
+ outline: var(--ring-outline-color) solid var(--ring-outline-width);
5456
+ outline-offset: var(--ring-outline-offset);
5457
+ }
5452
5458
  .upload-error-message {
5453
5459
  margin-top: 24px;
5454
5460
  margin-top: var(--padding-medium);
@@ -13,6 +13,12 @@
13
13
  .tw-droppable-sm {
14
14
  min-height: 245px;
15
15
  }
16
+ .tw-droppable-lg .btn:focus-visible,
17
+ .tw-droppable-md .btn:focus-visible,
18
+ .tw-droppable-sm .btn:focus-visible {
19
+ outline: var(--ring-outline-color) solid var(--ring-outline-width);
20
+ outline-offset: var(--ring-outline-offset);
21
+ }
16
22
  .upload-error-message {
17
23
  margin-top: 24px;
18
24
  margin-top: var(--padding-medium);
@@ -346,7 +346,7 @@ class Typeahead extends React.Component {
346
346
  open: dropdownOpen
347
347
  }),
348
348
  id: `menu-${id}`,
349
- children: !!optionsToRender.length && /*#__PURE__*/jsxRuntime.jsxs("ul", {
349
+ children: (!!optionsToRender.length || footer) && /*#__PURE__*/jsxRuntime.jsxs("ul", {
350
350
  className: "dropdown-menu",
351
351
  role: "menu",
352
352
  children: [optionsToRender.map((option, idx) => {
@@ -1 +1 @@
1
- {"version":3,"file":"Typeahead.js","sources":["../../src/typeahead/Typeahead.tsx"],"sourcesContent":["import { Cross as CrossIcon } from '@transferwise/icons';\nimport { clsx } from 'clsx';\nimport { DebouncedFunc } from 'lodash';\nimport clamp from 'lodash.clamp';\nimport debounce from 'lodash.debounce';\nimport React, { Component, ReactNode } from 'react';\nimport { injectIntl, WrappedComponentProps } from 'react-intl';\n\nimport Chip from '../chips/Chip';\nimport {\n Size,\n Sentiment,\n SizeMedium,\n SizeLarge,\n addClickClassToDocumentOnIos,\n removeClickClassFromDocumentOnIos,\n stopPropagation,\n} from '../common';\nimport InlineAlert from '../inlineAlert';\nimport { InlineAlertProps } from '../inlineAlert/InlineAlert';\nimport { withInputAttributes, WithInputAttributesProps } from '../inputs/contexts';\n\nimport TypeaheadInput from './typeaheadInput/TypeaheadInput';\nimport TypeaheadOption from './typeaheadOption/TypeaheadOption';\nimport messages from './Typeahead.messages';\n\nconst DEFAULT_MIN_QUERY_LENGTH = 3;\nconst SEARCH_DELAY = 200;\n\nexport type TypeaheadOption<T = string> = {\n label: string;\n note?: string;\n secondary?: string;\n value?: T;\n clearQueryOnSelect?: boolean;\n keepFocusOnSelect?: boolean;\n};\n\nexport interface TypeaheadProps<T> extends WrappedComponentProps {\n id: string;\n name: string;\n addon?: ReactNode;\n alert?: {\n message: InlineAlertProps['children'];\n type?: InlineAlertProps['type'];\n };\n allowNew?: boolean;\n autoFillOnBlur?: boolean;\n autoFocus?: boolean;\n chipSeparators?: readonly string[];\n clearable?: boolean;\n footer?: ReactNode;\n initialValue?: readonly TypeaheadOption<T>[];\n inputAutoComplete?: string;\n maxHeight?: number;\n minQueryLength?: number;\n placeholder?: string;\n multiple?: boolean;\n options: readonly TypeaheadOption<T>[];\n searchDelay?: number;\n showSuggestions?: boolean;\n showNewEntry?: boolean;\n size?: SizeMedium | SizeLarge;\n\n onBlur?: () => void;\n onChange: (options: TypeaheadOption<T>[]) => void;\n onFocus?: () => void;\n onInputChange?: (query: string) => void;\n onSearch?: (query: string) => void;\n validateChip?: (chip: TypeaheadOption<T>) => boolean;\n}\n\ntype TypeaheadPropsWithInputAttributes<T> = TypeaheadProps<T> & Partial<WithInputAttributesProps>;\n\ntype TypeaheadState<T> = {\n selected: readonly TypeaheadOption<T>[];\n keyboardFocusedOptionIndex: number | null;\n errorState: boolean;\n query: string;\n optionsShown: boolean;\n isFocused: boolean;\n};\n\nclass Typeahead<T> extends Component<TypeaheadPropsWithInputAttributes<T>, TypeaheadState<T>> {\n declare props: TypeaheadPropsWithInputAttributes<T> &\n Required<Pick<TypeaheadPropsWithInputAttributes<T>, keyof typeof Typeahead.defaultProps>>;\n\n static defaultProps = {\n allowNew: false,\n autoFillOnBlur: true,\n autoFocus: false,\n chipSeparators: [],\n clearable: true,\n initialValue: [],\n inputAutoComplete: 'new-password',\n minQueryLength: DEFAULT_MIN_QUERY_LENGTH,\n multiple: false,\n searchDelay: SEARCH_DELAY,\n showSuggestions: true,\n showNewEntry: true,\n size: Size.MEDIUM,\n validateChip: () => true,\n } satisfies Partial<TypeaheadProps<unknown>>;\n optionRefs: (React.RefObject<HTMLLIElement> | null)[];\n\n constructor(props: TypeaheadPropsWithInputAttributes<T>) {\n super(props);\n const { searchDelay, initialValue, multiple } = this.props;\n this.handleSearchDebounced = debounce(this.handleSearch, searchDelay);\n const initialQuery = !multiple && initialValue.length > 0 ? initialValue[0].label : '';\n this.state = {\n selected: initialValue,\n errorState: false,\n query: initialQuery,\n keyboardFocusedOptionIndex: null,\n optionsShown: false,\n isFocused: false,\n };\n this.optionRefs = [] as (React.RefObject<HTMLLIElement> | null)[];\n }\n\n handleSearchDebounced: DebouncedFunc<Typeahead<T>['handleSearch']>;\n\n UNSAFE_componentWillReceiveProps(nextProps: TypeaheadPropsWithInputAttributes<T>) {\n if (nextProps.multiple !== this.props.multiple) {\n this.setState((previousState) => {\n const { selected } = previousState;\n if (!nextProps.multiple && selected.length > 0) {\n return {\n query: selected[0].label,\n selected: [selected[0]],\n };\n }\n return {\n selected: previousState.selected,\n query: '',\n };\n });\n }\n }\n\n componentWillUnmount() {\n this.handleSearchDebounced.cancel();\n }\n\n handleOnFocus = () => {\n this.showMenu();\n this.props.onFocus?.();\n };\n\n onOptionSelected = (event: React.MouseEvent, item: TypeaheadOption<T>) => {\n event.preventDefault();\n this.selectItem(item);\n };\n\n handleOnChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n const { optionsShown, selected } = this.state;\n const { multiple, onInputChange } = this.props;\n\n if (!optionsShown) {\n this.showMenu();\n }\n\n const query = event.target.value;\n\n if (!multiple && selected.length > 0) {\n this.updateSelectedValue([]);\n }\n\n this.setState({ query }, () => {\n this.handleSearchDebounced(query);\n if (onInputChange) {\n onInputChange(query);\n }\n });\n };\n\n handleOnPaste: React.ClipboardEventHandler<HTMLInputElement> = (event) => {\n const { allowNew, multiple, chipSeparators } = this.props;\n const { selected } = this.state;\n\n if (allowNew && multiple && chipSeparators.length > 0) {\n event.preventDefault();\n const value = event.clipboardData.getData('text');\n if (value) {\n const regex = new RegExp(chipSeparators.join('|'));\n const pastedChips = value\n .split(regex)\n .map((label) => ({ label: label.trim() }))\n .filter((chip) => chip.label);\n\n this.updateSelectedValue([...selected, ...pastedChips]);\n }\n }\n };\n\n handleOnKeyDown: React.KeyboardEventHandler<HTMLInputElement> = (event) => {\n const { showSuggestions, allowNew, multiple, chipSeparators, options } = this.props;\n const { keyboardFocusedOptionIndex, query, selected } = this.state;\n const chipsMode = !showSuggestions && allowNew && multiple;\n\n if (chipsMode && ['Enter', 'Tab', ...chipSeparators].includes(event.key) && query.trim()) {\n event.preventDefault();\n this.selectItem({ label: query });\n } else {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.moveFocusedOption(1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.moveFocusedOption(-1);\n break;\n case 'Enter':\n event.preventDefault();\n if (keyboardFocusedOptionIndex != null && options[keyboardFocusedOptionIndex]) {\n this.selectItem(options[keyboardFocusedOptionIndex]);\n } else if (allowNew && query.trim()) {\n this.selectItem({ label: query });\n }\n break;\n case 'Backspace':\n if (multiple && !query && selected.length > 0) {\n this.updateSelectedValue(selected.slice(0, -1));\n }\n break;\n default:\n break;\n }\n }\n };\n moveFocusedOption(offset: number) {\n this.setState((previousState) => {\n const { keyboardFocusedOptionIndex } = previousState;\n const { options } = this.props;\n let index = 0;\n if (keyboardFocusedOptionIndex !== null) {\n index = clamp(keyboardFocusedOptionIndex + offset, 0, options.length - 1);\n }\n const optionRef = this.optionRefs[index];\n if (optionRef?.current) {\n optionRef.current.focus(); // Set focus on the option element\n }\n return {\n keyboardFocusedOptionIndex: index,\n };\n });\n }\n\n selectItem = (item: TypeaheadOption<T>) => {\n const { multiple } = this.props;\n let selected = [...this.state.selected];\n let query;\n if (multiple) {\n selected.push(item);\n query = '';\n } else {\n selected = [item];\n query = item.label;\n }\n\n this.updateSelectedValue(selected);\n\n if (!item.keepFocusOnSelect) {\n this.hideMenu();\n }\n\n if (item.clearQueryOnSelect) {\n query = '';\n }\n\n this.setState({\n query,\n });\n };\n\n handleSearch = (query: string) => {\n const { onSearch } = this.props;\n if (onSearch) {\n onSearch(query);\n }\n\n this.setState((previousState) => ({\n keyboardFocusedOptionIndex: previousState.keyboardFocusedOptionIndex === null ? null : 0,\n }));\n };\n\n handleDocumentClick = () => {\n if (this.state.optionsShown) {\n this.hideMenu();\n const { allowNew, onBlur, autoFillOnBlur } = this.props;\n const { query } = this.state;\n this.setState({\n isFocused: false,\n });\n if (allowNew && autoFillOnBlur && query.trim()) {\n this.selectItem({ label: query });\n }\n\n if (onBlur) {\n onBlur();\n }\n }\n };\n\n showMenu = () => {\n this.setState(\n {\n isFocused: true,\n optionsShown: true,\n },\n () => {\n addClickClassToDocumentOnIos();\n document.addEventListener('click', this.handleDocumentClick, false);\n },\n );\n };\n\n hideMenu = () => {\n this.setState(\n {\n optionsShown: false,\n keyboardFocusedOptionIndex: null,\n },\n () => {\n removeClickClassFromDocumentOnIos();\n document.removeEventListener('click', this.handleDocumentClick, false);\n },\n );\n };\n\n updateSelectedValue = (selected: readonly TypeaheadOption<T>[]) => {\n const { onChange, validateChip } = this.props;\n\n const errorState = selected.some((chip) => !validateChip(chip));\n this.setState({ selected, errorState }, () => {\n onChange([...selected]);\n });\n };\n\n clear = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n if (this.state.selected.length > 0) {\n this.updateSelectedValue([]);\n }\n\n this.setState({\n query: '',\n });\n };\n\n removeChip = (option: TypeaheadOption<T>) => {\n const { selected } = this.state;\n\n if (selected.length > 0) {\n this.updateSelectedValue([...selected.filter((selectedOption) => selectedOption !== option)]);\n }\n };\n\n renderChip = (option: TypeaheadOption<T>, idx: number): ReactNode => {\n const valid = this.props.validateChip?.(option);\n\n return (\n <Chip\n key={idx}\n label={option.label}\n className={clsx('m-t-1', {\n 'has-error': !valid,\n 'np-chip--valid': valid,\n })}\n onRemove={() => this.removeChip(option)}\n />\n );\n };\n\n renderMenu = ({\n footer,\n options,\n id,\n keyboardFocusedOptionIndex,\n query,\n allowNew,\n showNewEntry,\n dropdownOpen,\n }: Pick<\n TypeaheadPropsWithInputAttributes<T>,\n 'footer' | 'options' | 'id' | 'allowNew' | 'showNewEntry'\n > &\n Pick<TypeaheadState<T>, 'keyboardFocusedOptionIndex' | 'query'> & {\n dropdownOpen: boolean;\n }) => {\n const optionsToRender = [...options];\n if (\n allowNew &&\n query.trim() &&\n options.every((option) => option.label.trim().toUpperCase() !== query.trim().toUpperCase()) &&\n showNewEntry\n ) {\n optionsToRender.push({\n label: query,\n });\n }\n return (\n <div\n className={clsx('dropdown btn-group btn-block', { open: dropdownOpen })}\n id={`menu-${id}`}\n >\n {!!optionsToRender.length && (\n <ul className=\"dropdown-menu\" role=\"menu\">\n {optionsToRender.map((option, idx) => {\n const ref = React.createRef<HTMLLIElement>();\n this.optionRefs[idx] = ref;\n return (\n <TypeaheadOption\n key={`${option.label}${idx.toString()}`}\n ref={ref}\n query={query}\n option={option}\n selected={keyboardFocusedOptionIndex === idx}\n id={String(option.label.replace(/\\s+/g, '-'))}\n onClick={(event) => {\n this.onOptionSelected(event, option);\n }}\n />\n )\n })}\n {footer}\n </ul>\n )}\n </div>\n );\n };\n\n render() {\n const {\n inputAttributes,\n id: idProp,\n placeholder,\n multiple,\n size,\n addon,\n name,\n clearable,\n allowNew,\n footer,\n showSuggestions,\n showNewEntry,\n options,\n minQueryLength,\n autoFocus,\n maxHeight,\n alert,\n inputAutoComplete,\n } = this.props;\n const id = idProp ?? inputAttributes?.id;\n\n const { errorState, query, selected, optionsShown, keyboardFocusedOptionIndex } = this.state;\n\n const clearButton = clearable && (query || selected.length > 0);\n\n const dropdownOpen = optionsShown && showSuggestions && query.length >= minQueryLength;\n\n const menu = this.renderMenu({\n footer,\n options,\n id,\n keyboardFocusedOptionIndex,\n query,\n allowNew,\n showNewEntry,\n dropdownOpen,\n });\n\n const alertType = alert?.type ?? Sentiment.NEUTRAL;\n const hasError = errorState || (alert && alertType === Sentiment.ERROR);\n const displayAlert = (!errorState && alert) || (alert && alertType === Sentiment.ERROR);\n const hasWarning = displayAlert && alertType === Sentiment.WARNING;\n const hasInfo = displayAlert && alertType === Sentiment.NEUTRAL;\n return (\n /* eslint-disable-next-line jsx-a11y/click-events-have-key-events */\n <div\n role=\"group\"\n {...inputAttributes}\n id={id}\n className={clsx('typeahead', `typeahead-${size}`, {\n 'typeahead--has-value': selected.length > 0,\n 'typeahead--empty': selected.length === 0,\n 'typeahead--multiple': multiple,\n open: dropdownOpen,\n })}\n onClick={stopPropagation}\n >\n <div\n className={clsx('form-group', {\n 'has-error': hasError,\n 'has-warning': hasWarning,\n 'has-info': hasInfo,\n })}\n >\n <div\n className={clsx(`input-group input-group-${size}`, {\n 'input-group--has-error': hasError,\n })}\n >\n {addon && <span className=\"input-group-addon input-group-addon--search\">{addon}</span>}\n\n <TypeaheadInput\n {...{\n autoFocus,\n multiple,\n dropdownOpen,\n placeholder,\n selected,\n maxHeight,\n }}\n id={id}\n name={name}\n value={query}\n typeaheadId={id}\n renderChip={this.renderChip}\n autoComplete={inputAutoComplete}\n ariaActivedescendant={\n keyboardFocusedOptionIndex !== null && options[keyboardFocusedOptionIndex]\n ? `option-${options[keyboardFocusedOptionIndex].label.replace(/\\s+/g, '-')}`\n : undefined\n }\n onChange={this.handleOnChange}\n onKeyDown={this.handleOnKeyDown}\n onFocus={this.handleOnFocus}\n onPaste={this.handleOnPaste}\n />\n\n {clearButton && (\n <div className=\"input-group-addon\">\n <button\n type=\"button\"\n className=\"btn-unstyled\"\n aria-label={this.props.intl.formatMessage(messages.clearLabel)}\n onClick={this.clear}\n >\n <CrossIcon />\n </button>\n </div>\n )}\n </div>\n {displayAlert ? <InlineAlert type={alert.type}>{alert.message}</InlineAlert> : menu}\n </div>\n </div>\n );\n }\n}\n\nexport default injectIntl(withInputAttributes(Typeahead, { nonLabelable: true })) as <T>(\n props: TypeaheadProps<T>,\n) => React.ReactElement;\n"],"names":["DEFAULT_MIN_QUERY_LENGTH","SEARCH_DELAY","Typeahead","Component","defaultProps","allowNew","autoFillOnBlur","autoFocus","chipSeparators","clearable","initialValue","inputAutoComplete","minQueryLength","multiple","searchDelay","showSuggestions","showNewEntry","size","Size","MEDIUM","validateChip","optionRefs","constructor","props","handleSearchDebounced","debounce","handleSearch","initialQuery","length","label","state","selected","errorState","query","keyboardFocusedOptionIndex","optionsShown","isFocused","UNSAFE_componentWillReceiveProps","nextProps","setState","previousState","componentWillUnmount","cancel","handleOnFocus","showMenu","onFocus","onOptionSelected","event","item","preventDefault","selectItem","handleOnChange","onInputChange","target","value","updateSelectedValue","handleOnPaste","clipboardData","getData","regex","RegExp","join","pastedChips","split","map","trim","filter","chip","handleOnKeyDown","options","chipsMode","includes","key","moveFocusedOption","slice","offset","index","clamp","optionRef","current","focus","push","keepFocusOnSelect","hideMenu","clearQueryOnSelect","onSearch","handleDocumentClick","onBlur","addClickClassToDocumentOnIos","document","addEventListener","removeClickClassFromDocumentOnIos","removeEventListener","onChange","some","clear","removeChip","option","selectedOption","renderChip","idx","valid","_jsx","Chip","className","clsx","onRemove","renderMenu","footer","id","dropdownOpen","optionsToRender","every","toUpperCase","open","children","_jsxs","role","ref","React","createRef","TypeaheadOption","String","replace","onClick","toString","render","inputAttributes","idProp","placeholder","addon","name","maxHeight","alert","clearButton","menu","alertType","type","Sentiment","NEUTRAL","hasError","ERROR","displayAlert","hasWarning","WARNING","hasInfo","stopPropagation","TypeaheadInput","typeaheadId","autoComplete","ariaActivedescendant","undefined","onKeyDown","onPaste","intl","formatMessage","messages","clearLabel","CrossIcon","InlineAlert","message","injectIntl","withInputAttributes","nonLabelable"],"mappings":"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"}
1
+ {"version":3,"file":"Typeahead.js","sources":["../../src/typeahead/Typeahead.tsx"],"sourcesContent":["import { Cross as CrossIcon } from '@transferwise/icons';\nimport { clsx } from 'clsx';\nimport { DebouncedFunc } from 'lodash';\nimport clamp from 'lodash.clamp';\nimport debounce from 'lodash.debounce';\nimport React, { Component, ReactNode } from 'react';\nimport { injectIntl, WrappedComponentProps } from 'react-intl';\n\nimport Chip from '../chips/Chip';\nimport {\n Size,\n Sentiment,\n SizeMedium,\n SizeLarge,\n addClickClassToDocumentOnIos,\n removeClickClassFromDocumentOnIos,\n stopPropagation,\n} from '../common';\nimport InlineAlert from '../inlineAlert';\nimport { InlineAlertProps } from '../inlineAlert/InlineAlert';\nimport { withInputAttributes, WithInputAttributesProps } from '../inputs/contexts';\n\nimport TypeaheadInput from './typeaheadInput/TypeaheadInput';\nimport TypeaheadOption from './typeaheadOption/TypeaheadOption';\nimport messages from './Typeahead.messages';\n\nconst DEFAULT_MIN_QUERY_LENGTH = 3;\nconst SEARCH_DELAY = 200;\n\nexport type TypeaheadOption<T = string> = {\n label: string;\n note?: string;\n secondary?: string;\n value?: T;\n clearQueryOnSelect?: boolean;\n keepFocusOnSelect?: boolean;\n};\n\nexport interface TypeaheadProps<T> extends WrappedComponentProps {\n id: string;\n name: string;\n addon?: ReactNode;\n alert?: {\n message: InlineAlertProps['children'];\n type?: InlineAlertProps['type'];\n };\n allowNew?: boolean;\n autoFillOnBlur?: boolean;\n autoFocus?: boolean;\n chipSeparators?: readonly string[];\n clearable?: boolean;\n footer?: ReactNode;\n initialValue?: readonly TypeaheadOption<T>[];\n inputAutoComplete?: string;\n maxHeight?: number;\n minQueryLength?: number;\n placeholder?: string;\n multiple?: boolean;\n options: readonly TypeaheadOption<T>[];\n searchDelay?: number;\n showSuggestions?: boolean;\n showNewEntry?: boolean;\n size?: SizeMedium | SizeLarge;\n\n onBlur?: () => void;\n onChange: (options: TypeaheadOption<T>[]) => void;\n onFocus?: () => void;\n onInputChange?: (query: string) => void;\n onSearch?: (query: string) => void;\n validateChip?: (chip: TypeaheadOption<T>) => boolean;\n}\n\ntype TypeaheadPropsWithInputAttributes<T> = TypeaheadProps<T> & Partial<WithInputAttributesProps>;\n\ntype TypeaheadState<T> = {\n selected: readonly TypeaheadOption<T>[];\n keyboardFocusedOptionIndex: number | null;\n errorState: boolean;\n query: string;\n optionsShown: boolean;\n isFocused: boolean;\n};\n\nclass Typeahead<T> extends Component<TypeaheadPropsWithInputAttributes<T>, TypeaheadState<T>> {\n declare props: TypeaheadPropsWithInputAttributes<T> &\n Required<Pick<TypeaheadPropsWithInputAttributes<T>, keyof typeof Typeahead.defaultProps>>;\n\n static defaultProps = {\n allowNew: false,\n autoFillOnBlur: true,\n autoFocus: false,\n chipSeparators: [],\n clearable: true,\n initialValue: [],\n inputAutoComplete: 'new-password',\n minQueryLength: DEFAULT_MIN_QUERY_LENGTH,\n multiple: false,\n searchDelay: SEARCH_DELAY,\n showSuggestions: true,\n showNewEntry: true,\n size: Size.MEDIUM,\n validateChip: () => true,\n } satisfies Partial<TypeaheadProps<unknown>>;\n optionRefs: (React.RefObject<HTMLLIElement> | null)[];\n\n constructor(props: TypeaheadPropsWithInputAttributes<T>) {\n super(props);\n const { searchDelay, initialValue, multiple } = this.props;\n this.handleSearchDebounced = debounce(this.handleSearch, searchDelay);\n const initialQuery = !multiple && initialValue.length > 0 ? initialValue[0].label : '';\n this.state = {\n selected: initialValue,\n errorState: false,\n query: initialQuery,\n keyboardFocusedOptionIndex: null,\n optionsShown: false,\n isFocused: false,\n };\n this.optionRefs = [] as (React.RefObject<HTMLLIElement> | null)[];\n }\n\n handleSearchDebounced: DebouncedFunc<Typeahead<T>['handleSearch']>;\n\n UNSAFE_componentWillReceiveProps(nextProps: TypeaheadPropsWithInputAttributes<T>) {\n if (nextProps.multiple !== this.props.multiple) {\n this.setState((previousState) => {\n const { selected } = previousState;\n if (!nextProps.multiple && selected.length > 0) {\n return {\n query: selected[0].label,\n selected: [selected[0]],\n };\n }\n return {\n selected: previousState.selected,\n query: '',\n };\n });\n }\n }\n\n componentWillUnmount() {\n this.handleSearchDebounced.cancel();\n }\n\n handleOnFocus = () => {\n this.showMenu();\n this.props.onFocus?.();\n };\n\n onOptionSelected = (event: React.MouseEvent, item: TypeaheadOption<T>) => {\n event.preventDefault();\n this.selectItem(item);\n };\n\n handleOnChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\n const { optionsShown, selected } = this.state;\n const { multiple, onInputChange } = this.props;\n\n if (!optionsShown) {\n this.showMenu();\n }\n\n const query = event.target.value;\n\n if (!multiple && selected.length > 0) {\n this.updateSelectedValue([]);\n }\n\n this.setState({ query }, () => {\n this.handleSearchDebounced(query);\n if (onInputChange) {\n onInputChange(query);\n }\n });\n };\n\n handleOnPaste: React.ClipboardEventHandler<HTMLInputElement> = (event) => {\n const { allowNew, multiple, chipSeparators } = this.props;\n const { selected } = this.state;\n\n if (allowNew && multiple && chipSeparators.length > 0) {\n event.preventDefault();\n const value = event.clipboardData.getData('text');\n if (value) {\n const regex = new RegExp(chipSeparators.join('|'));\n const pastedChips = value\n .split(regex)\n .map((label) => ({ label: label.trim() }))\n .filter((chip) => chip.label);\n\n this.updateSelectedValue([...selected, ...pastedChips]);\n }\n }\n };\n\n handleOnKeyDown: React.KeyboardEventHandler<HTMLInputElement> = (event) => {\n const { showSuggestions, allowNew, multiple, chipSeparators, options } = this.props;\n const { keyboardFocusedOptionIndex, query, selected } = this.state;\n const chipsMode = !showSuggestions && allowNew && multiple;\n\n if (chipsMode && ['Enter', 'Tab', ...chipSeparators].includes(event.key) && query.trim()) {\n event.preventDefault();\n this.selectItem({ label: query });\n } else {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.moveFocusedOption(1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.moveFocusedOption(-1);\n break;\n case 'Enter':\n event.preventDefault();\n if (keyboardFocusedOptionIndex != null && options[keyboardFocusedOptionIndex]) {\n this.selectItem(options[keyboardFocusedOptionIndex]);\n } else if (allowNew && query.trim()) {\n this.selectItem({ label: query });\n }\n break;\n case 'Backspace':\n if (multiple && !query && selected.length > 0) {\n this.updateSelectedValue(selected.slice(0, -1));\n }\n break;\n default:\n break;\n }\n }\n };\n moveFocusedOption(offset: number) {\n this.setState((previousState) => {\n const { keyboardFocusedOptionIndex } = previousState;\n const { options } = this.props;\n let index = 0;\n if (keyboardFocusedOptionIndex !== null) {\n index = clamp(keyboardFocusedOptionIndex + offset, 0, options.length - 1);\n }\n const optionRef = this.optionRefs[index];\n if (optionRef?.current) {\n optionRef.current.focus(); // Set focus on the option element\n }\n return {\n keyboardFocusedOptionIndex: index,\n };\n });\n }\n\n selectItem = (item: TypeaheadOption<T>) => {\n const { multiple } = this.props;\n let selected = [...this.state.selected];\n let query;\n if (multiple) {\n selected.push(item);\n query = '';\n } else {\n selected = [item];\n query = item.label;\n }\n\n this.updateSelectedValue(selected);\n\n if (!item.keepFocusOnSelect) {\n this.hideMenu();\n }\n\n if (item.clearQueryOnSelect) {\n query = '';\n }\n\n this.setState({\n query,\n });\n };\n\n handleSearch = (query: string) => {\n const { onSearch } = this.props;\n if (onSearch) {\n onSearch(query);\n }\n\n this.setState((previousState) => ({\n keyboardFocusedOptionIndex: previousState.keyboardFocusedOptionIndex === null ? null : 0,\n }));\n };\n\n handleDocumentClick = () => {\n if (this.state.optionsShown) {\n this.hideMenu();\n const { allowNew, onBlur, autoFillOnBlur } = this.props;\n const { query } = this.state;\n this.setState({\n isFocused: false,\n });\n if (allowNew && autoFillOnBlur && query.trim()) {\n this.selectItem({ label: query });\n }\n\n if (onBlur) {\n onBlur();\n }\n }\n };\n\n showMenu = () => {\n this.setState(\n {\n isFocused: true,\n optionsShown: true,\n },\n () => {\n addClickClassToDocumentOnIos();\n document.addEventListener('click', this.handleDocumentClick, false);\n },\n );\n };\n\n hideMenu = () => {\n this.setState(\n {\n optionsShown: false,\n keyboardFocusedOptionIndex: null,\n },\n () => {\n removeClickClassFromDocumentOnIos();\n document.removeEventListener('click', this.handleDocumentClick, false);\n },\n );\n };\n\n updateSelectedValue = (selected: readonly TypeaheadOption<T>[]) => {\n const { onChange, validateChip } = this.props;\n\n const errorState = selected.some((chip) => !validateChip(chip));\n this.setState({ selected, errorState }, () => {\n onChange([...selected]);\n });\n };\n\n clear = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n if (this.state.selected.length > 0) {\n this.updateSelectedValue([]);\n }\n\n this.setState({\n query: '',\n });\n };\n\n removeChip = (option: TypeaheadOption<T>) => {\n const { selected } = this.state;\n\n if (selected.length > 0) {\n this.updateSelectedValue([...selected.filter((selectedOption) => selectedOption !== option)]);\n }\n };\n\n renderChip = (option: TypeaheadOption<T>, idx: number): ReactNode => {\n const valid = this.props.validateChip?.(option);\n\n return (\n <Chip\n key={idx}\n label={option.label}\n className={clsx('m-t-1', {\n 'has-error': !valid,\n 'np-chip--valid': valid,\n })}\n onRemove={() => this.removeChip(option)}\n />\n );\n };\n\n renderMenu = ({\n footer,\n options,\n id,\n keyboardFocusedOptionIndex,\n query,\n allowNew,\n showNewEntry,\n dropdownOpen,\n }: Pick<\n TypeaheadPropsWithInputAttributes<T>,\n 'footer' | 'options' | 'id' | 'allowNew' | 'showNewEntry'\n > &\n Pick<TypeaheadState<T>, 'keyboardFocusedOptionIndex' | 'query'> & {\n dropdownOpen: boolean;\n }) => {\n const optionsToRender = [...options];\n if (\n allowNew &&\n query.trim() &&\n options.every((option) => option.label.trim().toUpperCase() !== query.trim().toUpperCase()) &&\n showNewEntry\n ) {\n optionsToRender.push({\n label: query,\n });\n }\n return (\n <div\n className={clsx('dropdown btn-group btn-block', { open: dropdownOpen })}\n id={`menu-${id}`}\n >\n {(!!optionsToRender.length || footer) && (\n <ul className=\"dropdown-menu\" role=\"menu\">\n {optionsToRender.map((option, idx) => {\n const ref = React.createRef<HTMLLIElement>();\n this.optionRefs[idx] = ref;\n return (\n <TypeaheadOption\n key={`${option.label}${idx.toString()}`}\n ref={ref}\n query={query}\n option={option}\n selected={keyboardFocusedOptionIndex === idx}\n id={String(option.label.replace(/\\s+/g, '-'))}\n onClick={(event) => {\n this.onOptionSelected(event, option);\n }}\n />\n );\n })}\n {footer}\n </ul>\n )}\n </div>\n );\n };\n\n render() {\n const {\n inputAttributes,\n id: idProp,\n placeholder,\n multiple,\n size,\n addon,\n name,\n clearable,\n allowNew,\n footer,\n showSuggestions,\n showNewEntry,\n options,\n minQueryLength,\n autoFocus,\n maxHeight,\n alert,\n inputAutoComplete,\n } = this.props;\n const id = idProp ?? inputAttributes?.id;\n\n const { errorState, query, selected, optionsShown, keyboardFocusedOptionIndex } = this.state;\n\n const clearButton = clearable && (query || selected.length > 0);\n\n const dropdownOpen = optionsShown && showSuggestions && query.length >= minQueryLength;\n\n const menu = this.renderMenu({\n footer,\n options,\n id,\n keyboardFocusedOptionIndex,\n query,\n allowNew,\n showNewEntry,\n dropdownOpen,\n });\n\n const alertType = alert?.type ?? Sentiment.NEUTRAL;\n const hasError = errorState || (alert && alertType === Sentiment.ERROR);\n const displayAlert = (!errorState && alert) || (alert && alertType === Sentiment.ERROR);\n const hasWarning = displayAlert && alertType === Sentiment.WARNING;\n const hasInfo = displayAlert && alertType === Sentiment.NEUTRAL;\n return (\n /* eslint-disable-next-line jsx-a11y/click-events-have-key-events */\n <div\n role=\"group\"\n {...inputAttributes}\n id={id}\n className={clsx('typeahead', `typeahead-${size}`, {\n 'typeahead--has-value': selected.length > 0,\n 'typeahead--empty': selected.length === 0,\n 'typeahead--multiple': multiple,\n open: dropdownOpen,\n })}\n onClick={stopPropagation}\n >\n <div\n className={clsx('form-group', {\n 'has-error': hasError,\n 'has-warning': hasWarning,\n 'has-info': hasInfo,\n })}\n >\n <div\n className={clsx(`input-group input-group-${size}`, {\n 'input-group--has-error': hasError,\n })}\n >\n {addon && <span className=\"input-group-addon input-group-addon--search\">{addon}</span>}\n\n <TypeaheadInput\n {...{\n autoFocus,\n multiple,\n dropdownOpen,\n placeholder,\n selected,\n maxHeight,\n }}\n id={id}\n name={name}\n value={query}\n typeaheadId={id}\n renderChip={this.renderChip}\n autoComplete={inputAutoComplete}\n ariaActivedescendant={\n keyboardFocusedOptionIndex !== null && options[keyboardFocusedOptionIndex]\n ? `option-${options[keyboardFocusedOptionIndex].label.replace(/\\s+/g, '-')}`\n : undefined\n }\n onChange={this.handleOnChange}\n onKeyDown={this.handleOnKeyDown}\n onFocus={this.handleOnFocus}\n onPaste={this.handleOnPaste}\n />\n\n {clearButton && (\n <div className=\"input-group-addon\">\n <button\n type=\"button\"\n className=\"btn-unstyled\"\n aria-label={this.props.intl.formatMessage(messages.clearLabel)}\n onClick={this.clear}\n >\n <CrossIcon />\n </button>\n </div>\n )}\n </div>\n {displayAlert ? <InlineAlert type={alert.type}>{alert.message}</InlineAlert> : menu}\n </div>\n </div>\n );\n }\n}\n\nexport default injectIntl(withInputAttributes(Typeahead, { nonLabelable: true })) as <T>(\n props: TypeaheadProps<T>,\n) => React.ReactElement;\n"],"names":["DEFAULT_MIN_QUERY_LENGTH","SEARCH_DELAY","Typeahead","Component","defaultProps","allowNew","autoFillOnBlur","autoFocus","chipSeparators","clearable","initialValue","inputAutoComplete","minQueryLength","multiple","searchDelay","showSuggestions","showNewEntry","size","Size","MEDIUM","validateChip","optionRefs","constructor","props","handleSearchDebounced","debounce","handleSearch","initialQuery","length","label","state","selected","errorState","query","keyboardFocusedOptionIndex","optionsShown","isFocused","UNSAFE_componentWillReceiveProps","nextProps","setState","previousState","componentWillUnmount","cancel","handleOnFocus","showMenu","onFocus","onOptionSelected","event","item","preventDefault","selectItem","handleOnChange","onInputChange","target","value","updateSelectedValue","handleOnPaste","clipboardData","getData","regex","RegExp","join","pastedChips","split","map","trim","filter","chip","handleOnKeyDown","options","chipsMode","includes","key","moveFocusedOption","slice","offset","index","clamp","optionRef","current","focus","push","keepFocusOnSelect","hideMenu","clearQueryOnSelect","onSearch","handleDocumentClick","onBlur","addClickClassToDocumentOnIos","document","addEventListener","removeClickClassFromDocumentOnIos","removeEventListener","onChange","some","clear","removeChip","option","selectedOption","renderChip","idx","valid","_jsx","Chip","className","clsx","onRemove","renderMenu","footer","id","dropdownOpen","optionsToRender","every","toUpperCase","open","children","_jsxs","role","ref","React","createRef","TypeaheadOption","String","replace","onClick","toString","render","inputAttributes","idProp","placeholder","addon","name","maxHeight","alert","clearButton","menu","alertType","type","Sentiment","NEUTRAL","hasError","ERROR","displayAlert","hasWarning","WARNING","hasInfo","stopPropagation","TypeaheadInput","typeaheadId","autoComplete","ariaActivedescendant","undefined","onKeyDown","onPaste","intl","formatMessage","messages","clearLabel","CrossIcon","InlineAlert","message","injectIntl","withInputAttributes","nonLabelable"],"mappings":"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"}
@@ -338,7 +338,7 @@ class Typeahead extends Component {
338
338
  open: dropdownOpen
339
339
  }),
340
340
  id: `menu-${id}`,
341
- children: !!optionsToRender.length && /*#__PURE__*/jsxs("ul", {
341
+ children: (!!optionsToRender.length || footer) && /*#__PURE__*/jsxs("ul", {
342
342
  className: "dropdown-menu",
343
343
  role: "menu",
344
344
  children: [optionsToRender.map((option, idx) => {