@transferwise/components 46.50.1 → 46.52.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/accordion/AccordionItem/AccordionItem.js +3 -7
- package/build/accordion/AccordionItem/AccordionItem.js.map +1 -1
- package/build/accordion/AccordionItem/AccordionItem.mjs +3 -3
- package/build/accordion/AccordionItem/AccordionItem.mjs.map +1 -1
- package/build/actionButton/ActionButton.js +2 -6
- package/build/actionButton/ActionButton.js.map +1 -1
- package/build/actionButton/ActionButton.mjs +2 -2
- package/build/actionButton/ActionButton.mjs.map +1 -1
- package/build/actionOption/ActionOption.js +2 -6
- package/build/actionOption/ActionOption.js.map +1 -1
- package/build/actionOption/ActionOption.mjs +2 -2
- package/build/actionOption/ActionOption.mjs.map +1 -1
- package/build/alert/Alert.js +3 -7
- package/build/alert/Alert.js.map +1 -1
- package/build/alert/Alert.mjs +3 -3
- package/build/alert/Alert.mjs.map +1 -1
- package/build/avatar/Avatar.js +2 -6
- package/build/avatar/Avatar.js.map +1 -1
- package/build/avatar/Avatar.mjs +2 -2
- package/build/avatar/Avatar.mjs.map +1 -1
- package/build/badge/Badge.js +2 -6
- package/build/badge/Badge.js.map +1 -1
- package/build/badge/Badge.mjs +2 -2
- package/build/badge/Badge.mjs.map +1 -1
- package/build/body/Body.js +2 -6
- package/build/body/Body.js.map +1 -1
- package/build/body/Body.mjs +2 -2
- package/build/body/Body.mjs.map +1 -1
- package/build/button/Button.js +2 -6
- package/build/button/Button.js.map +1 -1
- package/build/button/Button.mjs +2 -2
- package/build/button/Button.mjs.map +1 -1
- package/build/card/Card.js +4 -8
- package/build/card/Card.js.map +1 -1
- package/build/card/Card.mjs +4 -4
- package/build/card/Card.mjs.map +1 -1
- package/build/carousel/Carousel.js +5 -9
- package/build/carousel/Carousel.js.map +1 -1
- package/build/carousel/Carousel.mjs +5 -5
- package/build/carousel/Carousel.mjs.map +1 -1
- package/build/checkbox/Checkbox.js +3 -7
- package/build/checkbox/Checkbox.js.map +1 -1
- package/build/checkbox/Checkbox.mjs +3 -3
- package/build/checkbox/Checkbox.mjs.map +1 -1
- package/build/checkboxButton/CheckboxButton.js +2 -6
- package/build/checkboxButton/CheckboxButton.js.map +1 -1
- package/build/checkboxButton/CheckboxButton.mjs +2 -2
- package/build/checkboxButton/CheckboxButton.mjs.map +1 -1
- package/build/chevron/Chevron.js +3 -7
- package/build/chevron/Chevron.js.map +1 -1
- package/build/chevron/Chevron.mjs +3 -3
- package/build/chevron/Chevron.mjs.map +1 -1
- package/build/chips/Chip.js +2 -6
- package/build/chips/Chip.js.map +1 -1
- package/build/chips/Chip.mjs +2 -2
- package/build/chips/Chip.mjs.map +1 -1
- package/build/chips/Chips.js +3 -7
- package/build/chips/Chips.js.map +1 -1
- package/build/chips/Chips.mjs +3 -3
- package/build/chips/Chips.mjs.map +1 -1
- package/build/circularButton/CircularButton.js +3 -7
- package/build/circularButton/CircularButton.js.map +1 -1
- package/build/circularButton/CircularButton.mjs +3 -3
- package/build/circularButton/CircularButton.mjs.map +1 -1
- package/build/common/Option/Option.js +3 -7
- package/build/common/Option/Option.js.map +1 -1
- package/build/common/Option/Option.mjs +3 -3
- package/build/common/Option/Option.mjs.map +1 -1
- package/build/common/RadioButton/RadioButton.js +2 -6
- package/build/common/RadioButton/RadioButton.js.map +1 -1
- package/build/common/RadioButton/RadioButton.mjs +2 -2
- package/build/common/RadioButton/RadioButton.mjs.map +1 -1
- package/build/common/action/Action.js +2 -6
- package/build/common/action/Action.js.map +1 -1
- package/build/common/action/Action.mjs +2 -2
- package/build/common/action/Action.mjs.map +1 -1
- package/build/common/bottomSheet/BottomSheet.js +2 -6
- package/build/common/bottomSheet/BottomSheet.js.map +1 -1
- package/build/common/bottomSheet/BottomSheet.mjs +2 -2
- package/build/common/bottomSheet/BottomSheet.mjs.map +1 -1
- package/build/common/card/Card.js +2 -6
- package/build/common/card/Card.js.map +1 -1
- package/build/common/card/Card.mjs +2 -2
- package/build/common/card/Card.mjs.map +1 -1
- package/build/common/closeButton/CloseButton.js +2 -6
- package/build/common/closeButton/CloseButton.js.map +1 -1
- package/build/common/closeButton/CloseButton.mjs +2 -2
- package/build/common/closeButton/CloseButton.mjs.map +1 -1
- package/build/common/flowHeader/FlowHeader.js +3 -6
- package/build/common/flowHeader/FlowHeader.js.map +1 -1
- package/build/common/flowHeader/FlowHeader.mjs +3 -3
- package/build/common/flowHeader/FlowHeader.mjs.map +1 -1
- package/build/common/panel/Panel.js +4 -8
- package/build/common/panel/Panel.js.map +1 -1
- package/build/common/panel/Panel.mjs +4 -4
- package/build/common/panel/Panel.mjs.map +1 -1
- package/build/criticalBanner/CriticalCommsBanner.js +4 -8
- package/build/criticalBanner/CriticalCommsBanner.js.map +1 -1
- package/build/criticalBanner/CriticalCommsBanner.mjs +4 -4
- package/build/criticalBanner/CriticalCommsBanner.mjs.map +1 -1
- package/build/dateInput/DateInput.js +2 -6
- package/build/dateInput/DateInput.js.map +1 -1
- package/build/dateInput/DateInput.mjs +2 -2
- package/build/dateInput/DateInput.mjs.map +1 -1
- package/build/dateLookup/DateLookup.js +2 -6
- package/build/dateLookup/DateLookup.js.map +1 -1
- package/build/dateLookup/DateLookup.mjs +2 -2
- package/build/dateLookup/DateLookup.mjs.map +1 -1
- package/build/dateLookup/dateHeader/DateHeader.js +2 -6
- package/build/dateLookup/dateHeader/DateHeader.js.map +1 -1
- package/build/dateLookup/dateHeader/DateHeader.mjs +2 -2
- package/build/dateLookup/dateHeader/DateHeader.mjs.map +1 -1
- package/build/dateLookup/tableLink/TableLink.js +15 -21
- package/build/dateLookup/tableLink/TableLink.js.map +1 -1
- package/build/dateLookup/tableLink/TableLink.mjs +16 -18
- package/build/dateLookup/tableLink/TableLink.mjs.map +1 -1
- package/build/decision/Decision.js +3 -7
- package/build/decision/Decision.js.map +1 -1
- package/build/decision/Decision.mjs +3 -3
- package/build/decision/Decision.mjs.map +1 -1
- package/build/definitionList/DefinitionList.js +4 -8
- package/build/definitionList/DefinitionList.js.map +1 -1
- package/build/definitionList/DefinitionList.mjs +4 -4
- package/build/definitionList/DefinitionList.mjs.map +1 -1
- package/build/dimmer/Dimmer.js +6 -10
- package/build/dimmer/Dimmer.js.map +1 -1
- package/build/dimmer/Dimmer.mjs +6 -6
- package/build/dimmer/Dimmer.mjs.map +1 -1
- package/build/display/Display.js +2 -6
- package/build/display/Display.js.map +1 -1
- package/build/display/Display.mjs +2 -2
- package/build/display/Display.mjs.map +1 -1
- package/build/drawer/Drawer.js +5 -9
- package/build/drawer/Drawer.js.map +1 -1
- package/build/drawer/Drawer.mjs +5 -5
- package/build/drawer/Drawer.mjs.map +1 -1
- package/build/field/Field.js +2 -6
- package/build/field/Field.js.map +1 -1
- package/build/field/Field.mjs +2 -2
- package/build/field/Field.mjs.map +1 -1
- package/build/flowNavigation/FlowNavigation.js +4 -8
- package/build/flowNavigation/FlowNavigation.js.map +1 -1
- package/build/flowNavigation/FlowNavigation.mjs +4 -4
- package/build/flowNavigation/FlowNavigation.mjs.map +1 -1
- package/build/flowNavigation/animatedLabel/AnimatedLabel.js +3 -7
- package/build/flowNavigation/animatedLabel/AnimatedLabel.js.map +1 -1
- package/build/flowNavigation/animatedLabel/AnimatedLabel.mjs +3 -3
- package/build/flowNavigation/animatedLabel/AnimatedLabel.mjs.map +1 -1
- package/build/flowNavigation/backButton/BackButton.js +2 -6
- package/build/flowNavigation/backButton/BackButton.js.map +1 -1
- package/build/flowNavigation/backButton/BackButton.mjs +2 -2
- package/build/flowNavigation/backButton/BackButton.mjs.map +1 -1
- package/build/header/Header.js +3 -7
- package/build/header/Header.js.map +1 -1
- package/build/header/Header.mjs +3 -3
- package/build/header/Header.mjs.map +1 -1
- package/build/i18n/zh-HK.json +2 -0
- package/build/i18n/zh-HK.json.js +2 -0
- package/build/i18n/zh-HK.json.js.map +1 -1
- package/build/i18n/zh-HK.json.mjs +2 -0
- package/build/i18n/zh-HK.json.mjs.map +1 -1
- package/build/image/Image.js +2 -6
- package/build/image/Image.js.map +1 -1
- package/build/image/Image.mjs +2 -2
- package/build/image/Image.mjs.map +1 -1
- package/build/info/Info.js +2 -6
- package/build/info/Info.js.map +1 -1
- package/build/info/Info.mjs +2 -2
- package/build/info/Info.mjs.map +1 -1
- package/build/inlineAlert/InlineAlert.js +2 -6
- package/build/inlineAlert/InlineAlert.js.map +1 -1
- package/build/inlineAlert/InlineAlert.mjs +2 -2
- package/build/inlineAlert/InlineAlert.mjs.map +1 -1
- package/build/inputs/Input.js +2 -6
- package/build/inputs/Input.js.map +1 -1
- package/build/inputs/Input.mjs +2 -2
- package/build/inputs/Input.mjs.map +1 -1
- package/build/inputs/InputGroup.js +3 -7
- package/build/inputs/InputGroup.js.map +1 -1
- package/build/inputs/InputGroup.mjs +3 -3
- package/build/inputs/InputGroup.mjs.map +1 -1
- package/build/inputs/SelectInput.js +118 -48
- package/build/inputs/SelectInput.js.map +1 -1
- package/build/inputs/SelectInput.mjs +120 -49
- package/build/inputs/SelectInput.mjs.map +1 -1
- package/build/inputs/TextArea.js +2 -6
- package/build/inputs/TextArea.js.map +1 -1
- package/build/inputs/TextArea.mjs +2 -2
- package/build/inputs/TextArea.mjs.map +1 -1
- package/build/inputs/_BottomSheet.js +2 -6
- package/build/inputs/_BottomSheet.js.map +1 -1
- package/build/inputs/_BottomSheet.mjs +2 -2
- package/build/inputs/_BottomSheet.mjs.map +1 -1
- package/build/inputs/_ButtonInput.js +2 -6
- package/build/inputs/_ButtonInput.js.map +1 -1
- package/build/inputs/_ButtonInput.mjs +2 -2
- package/build/inputs/_ButtonInput.mjs.map +1 -1
- package/build/inputs/_Popover.js +3 -7
- package/build/inputs/_Popover.js.map +1 -1
- package/build/inputs/_Popover.mjs +3 -3
- package/build/inputs/_Popover.mjs.map +1 -1
- package/build/inputs/_common.js +2 -6
- package/build/inputs/_common.js.map +1 -1
- package/build/inputs/_common.mjs +2 -2
- package/build/inputs/_common.mjs.map +1 -1
- package/build/instructionsList/InstructionsList.js +2 -6
- package/build/instructionsList/InstructionsList.js.map +1 -1
- package/build/instructionsList/InstructionsList.mjs +2 -2
- package/build/instructionsList/InstructionsList.mjs.map +1 -1
- package/build/label/Label.js +2 -6
- package/build/label/Label.js.map +1 -1
- package/build/label/Label.mjs +2 -2
- package/build/label/Label.mjs.map +1 -1
- package/build/link/Link.js +2 -6
- package/build/link/Link.js.map +1 -1
- package/build/link/Link.mjs +2 -2
- package/build/link/Link.mjs.map +1 -1
- package/build/listItem/ListItem.js +3 -7
- package/build/listItem/ListItem.js.map +1 -1
- package/build/listItem/ListItem.mjs +3 -3
- package/build/listItem/ListItem.mjs.map +1 -1
- package/build/loader/Loader.js +2 -6
- package/build/loader/Loader.js.map +1 -1
- package/build/loader/Loader.mjs +4 -4
- package/build/loader/Loader.mjs.map +1 -1
- package/build/logo/Logo.js +2 -6
- package/build/logo/Logo.js.map +1 -1
- package/build/logo/Logo.mjs +2 -2
- package/build/logo/Logo.mjs.map +1 -1
- package/build/main.css +10 -0
- package/build/modal/Modal.js +7 -11
- package/build/modal/Modal.js.map +1 -1
- package/build/modal/Modal.mjs +7 -7
- package/build/modal/Modal.mjs.map +1 -1
- package/build/moneyInput/MoneyInput.js +17 -39
- package/build/moneyInput/MoneyInput.js.map +1 -1
- package/build/moneyInput/MoneyInput.mjs +17 -35
- package/build/moneyInput/MoneyInput.mjs.map +1 -1
- package/build/navigationOption/NavigationOption.js +2 -6
- package/build/navigationOption/NavigationOption.js.map +1 -1
- package/build/navigationOption/NavigationOption.mjs +2 -2
- package/build/navigationOption/NavigationOption.mjs.map +1 -1
- package/build/nudge/Nudge.js +4 -8
- package/build/nudge/Nudge.js.map +1 -1
- package/build/nudge/Nudge.mjs +4 -4
- package/build/nudge/Nudge.mjs.map +1 -1
- package/build/overlayHeader/OverlayHeader.js +3 -7
- package/build/overlayHeader/OverlayHeader.js.map +1 -1
- package/build/overlayHeader/OverlayHeader.mjs +3 -3
- package/build/overlayHeader/OverlayHeader.mjs.map +1 -1
- package/build/popover/Popover.js +2 -6
- package/build/popover/Popover.js.map +1 -1
- package/build/popover/Popover.mjs +2 -2
- package/build/popover/Popover.mjs.map +1 -1
- package/build/processIndicator/ProcessIndicator.js +2 -6
- package/build/processIndicator/ProcessIndicator.js.map +1 -1
- package/build/processIndicator/ProcessIndicator.mjs +2 -2
- package/build/processIndicator/ProcessIndicator.mjs.map +1 -1
- package/build/progress/Progress.js +2 -6
- package/build/progress/Progress.js.map +1 -1
- package/build/progress/Progress.mjs +2 -2
- package/build/progress/Progress.mjs.map +1 -1
- package/build/progressBar/ProgressBar.js +2 -6
- package/build/progressBar/ProgressBar.js.map +1 -1
- package/build/progressBar/ProgressBar.mjs +2 -2
- package/build/progressBar/ProgressBar.mjs.map +1 -1
- package/build/promoCard/PromoCard.js +3 -4
- package/build/promoCard/PromoCard.js.map +1 -1
- package/build/promoCard/PromoCard.mjs +3 -3
- package/build/promoCard/PromoCard.mjs.map +1 -1
- package/build/promoCard/PromoCardGroup.js +2 -3
- package/build/promoCard/PromoCardGroup.js.map +1 -1
- package/build/promoCard/PromoCardGroup.mjs +2 -2
- package/build/promoCard/PromoCardGroup.mjs.map +1 -1
- package/build/promoCard/PromoCardIndicator.js +2 -6
- package/build/promoCard/PromoCardIndicator.js.map +1 -1
- package/build/promoCard/PromoCardIndicator.mjs +2 -2
- package/build/promoCard/PromoCardIndicator.mjs.map +1 -1
- package/build/radio/Radio.js +5 -9
- package/build/radio/Radio.js.map +1 -1
- package/build/radio/Radio.mjs +5 -5
- package/build/radio/Radio.mjs.map +1 -1
- package/build/section/Section.js +2 -6
- package/build/section/Section.js.map +1 -1
- package/build/section/Section.mjs +2 -2
- package/build/section/Section.mjs.map +1 -1
- package/build/segmentedControl/SegmentedControl.js +5 -9
- package/build/segmentedControl/SegmentedControl.js.map +1 -1
- package/build/segmentedControl/SegmentedControl.mjs +5 -5
- package/build/segmentedControl/SegmentedControl.mjs.map +1 -1
- package/build/select/Select.js +9 -10
- package/build/select/Select.js.map +1 -1
- package/build/select/Select.mjs +9 -9
- package/build/select/Select.mjs.map +1 -1
- package/build/select/option/Option.js +2 -6
- package/build/select/option/Option.js.map +1 -1
- package/build/select/option/Option.mjs +2 -2
- package/build/select/option/Option.mjs.map +1 -1
- package/build/select/searchBox/SearchBox.js +4 -8
- package/build/select/searchBox/SearchBox.js.map +1 -1
- package/build/select/searchBox/SearchBox.mjs +6 -6
- package/build/select/searchBox/SearchBox.mjs.map +1 -1
- package/build/selectOption/SelectOption.js +4 -8
- package/build/selectOption/SelectOption.js.map +1 -1
- package/build/selectOption/SelectOption.mjs +4 -4
- package/build/selectOption/SelectOption.mjs.map +1 -1
- package/build/slidingPanel/SlidingPanel.js +2 -6
- package/build/slidingPanel/SlidingPanel.js.map +1 -1
- package/build/slidingPanel/SlidingPanel.mjs +2 -2
- package/build/slidingPanel/SlidingPanel.mjs.map +1 -1
- package/build/statusIcon/StatusIcon.js +3 -7
- package/build/statusIcon/StatusIcon.js.map +1 -1
- package/build/statusIcon/StatusIcon.mjs +3 -3
- package/build/statusIcon/StatusIcon.mjs.map +1 -1
- package/build/stepper/Stepper.js +3 -7
- package/build/stepper/Stepper.js.map +1 -1
- package/build/stepper/Stepper.mjs +3 -3
- package/build/stepper/Stepper.mjs.map +1 -1
- package/build/styles/inputs/SelectInput.css +10 -0
- package/build/styles/main.css +10 -0
- package/build/summary/Summary.js +2 -6
- package/build/summary/Summary.js.map +1 -1
- package/build/summary/Summary.mjs +2 -2
- package/build/summary/Summary.mjs.map +1 -1
- package/build/switch/Switch.js +2 -6
- package/build/switch/Switch.js.map +1 -1
- package/build/switch/Switch.mjs +2 -2
- package/build/switch/Switch.mjs.map +1 -1
- package/build/tabs/Tab.js +6 -7
- package/build/tabs/Tab.js.map +1 -1
- package/build/tabs/Tab.mjs +6 -6
- package/build/tabs/Tab.mjs.map +1 -1
- package/build/tabs/Tabs.js +2 -3
- package/build/tabs/Tabs.js.map +1 -1
- package/build/tabs/Tabs.mjs +2 -2
- package/build/tabs/Tabs.mjs.map +1 -1
- package/build/tile/Tile.js +3 -7
- package/build/tile/Tile.js.map +1 -1
- package/build/tile/Tile.mjs +3 -3
- package/build/tile/Tile.mjs.map +1 -1
- package/build/title/Title.js +3 -7
- package/build/title/Title.js.map +1 -1
- package/build/title/Title.mjs +3 -3
- package/build/title/Title.mjs.map +1 -1
- package/build/tooltip/Tooltip.js +3 -7
- package/build/tooltip/Tooltip.js.map +1 -1
- package/build/tooltip/Tooltip.mjs +3 -3
- package/build/tooltip/Tooltip.mjs.map +1 -1
- package/build/typeahead/Typeahead.js +6 -7
- package/build/typeahead/Typeahead.js.map +1 -1
- package/build/typeahead/Typeahead.mjs +6 -6
- package/build/typeahead/Typeahead.mjs.map +1 -1
- package/build/typeahead/typeaheadInput/TypeaheadInput.js +2 -6
- package/build/typeahead/typeaheadInput/TypeaheadInput.js.map +1 -1
- package/build/typeahead/typeaheadInput/TypeaheadInput.mjs +2 -2
- package/build/typeahead/typeaheadInput/TypeaheadInput.mjs.map +1 -1
- package/build/typeahead/typeaheadOption/TypeaheadOption.js +2 -6
- package/build/typeahead/typeaheadOption/TypeaheadOption.js.map +1 -1
- package/build/typeahead/typeaheadOption/TypeaheadOption.mjs +2 -2
- package/build/typeahead/typeaheadOption/TypeaheadOption.mjs.map +1 -1
- package/build/types/accordion/AccordionItem/AccordionItem.d.ts.map +1 -1
- package/build/types/chevron/Chevron.d.ts.map +1 -1
- package/build/types/circularButton/CircularButton.d.ts.map +1 -1
- package/build/types/dateLookup/tableLink/TableLink.d.ts.map +1 -1
- package/build/types/flowNavigation/FlowNavigation.d.ts.map +1 -1
- package/build/types/inputs/SelectInput.d.ts.map +1 -1
- package/build/types/link/Link.d.ts.map +1 -1
- package/build/types/modal/Modal.d.ts.map +1 -1
- package/build/types/moneyInput/MoneyInput.d.ts +0 -1
- package/build/types/moneyInput/MoneyInput.d.ts.map +1 -1
- package/build/types/select/searchBox/SearchBox.d.ts.map +1 -1
- package/build/types/tabs/Tab.d.ts.map +1 -1
- package/build/types/uploadInput/uploadButton/UploadButton.d.ts.map +1 -1
- package/build/upload/Upload.js +2 -6
- package/build/upload/Upload.js.map +1 -1
- package/build/upload/Upload.mjs +2 -2
- package/build/upload/Upload.mjs.map +1 -1
- package/build/uploadInput/UploadInput.js +2 -6
- package/build/uploadInput/UploadInput.js.map +1 -1
- package/build/uploadInput/UploadInput.mjs +2 -2
- package/build/uploadInput/UploadInput.mjs.map +1 -1
- package/build/uploadInput/uploadButton/UploadButton.js +5 -9
- package/build/uploadInput/uploadButton/UploadButton.js.map +1 -1
- package/build/uploadInput/uploadButton/UploadButton.mjs +5 -5
- package/build/uploadInput/uploadButton/UploadButton.mjs.map +1 -1
- package/build/uploadInput/uploadItem/UploadItem.js +3 -7
- package/build/uploadInput/uploadItem/UploadItem.js.map +1 -1
- package/build/uploadInput/uploadItem/UploadItem.mjs +3 -3
- package/build/uploadInput/uploadItem/UploadItem.mjs.map +1 -1
- package/build/uploadInput/uploadItem/UploadItemLink.js +2 -6
- package/build/uploadInput/uploadItem/UploadItemLink.js.map +1 -1
- package/build/uploadInput/uploadItem/UploadItemLink.mjs +2 -2
- package/build/uploadInput/uploadItem/UploadItemLink.mjs.map +1 -1
- package/package.json +6 -5
- package/src/accordion/AccordionItem/AccordionItem.tsx +5 -9
- package/src/actionButton/ActionButton.tsx +2 -2
- package/src/actionOption/ActionOption.tsx +2 -2
- package/src/alert/Alert.tsx +3 -3
- package/src/avatar/Avatar.tsx +2 -2
- package/src/badge/Badge.tsx +2 -2
- package/src/body/Body.tsx +2 -2
- package/src/button/Button.tsx +2 -2
- package/src/card/Card.tsx +4 -4
- package/src/carousel/Carousel.tsx +5 -5
- package/src/checkbox/Checkbox.tsx +3 -3
- package/src/checkboxButton/CheckboxButton.tsx +2 -2
- package/src/chevron/Chevron.tsx +3 -12
- package/src/chips/Chip.tsx +2 -2
- package/src/chips/Chips.tsx +3 -3
- package/src/circularButton/CircularButton.tsx +4 -7
- package/src/common/Option/Option.tsx +3 -3
- package/src/common/RadioButton/RadioButton.tsx +2 -2
- package/src/common/action/Action.tsx +2 -2
- package/src/common/bottomSheet/BottomSheet.tsx +2 -2
- package/src/common/card/Card.tsx +2 -2
- package/src/common/closeButton/CloseButton.tsx +2 -2
- package/src/common/flowHeader/FlowHeader.tsx +3 -3
- package/src/common/panel/Panel.tsx +4 -4
- package/src/criticalBanner/CriticalCommsBanner.tsx +4 -4
- package/src/dateInput/DateInput.tsx +2 -2
- package/src/dateLookup/DateLookup.tsx +2 -2
- package/src/dateLookup/dateHeader/DateHeader.tsx +2 -2
- package/src/dateLookup/tableLink/TableLink.tsx +3 -5
- package/src/decision/Decision.tsx +3 -3
- package/src/definitionList/DefinitionList.tsx +4 -4
- package/src/dimmer/Dimmer.tsx +6 -6
- package/src/display/Display.tsx +2 -2
- package/src/drawer/Drawer.tsx +5 -5
- package/src/field/Field.tsx +3 -3
- package/src/flowNavigation/FlowNavigation.tsx +6 -7
- package/src/flowNavigation/animatedLabel/AnimatedLabel.tsx +3 -3
- package/src/flowNavigation/backButton/BackButton.tsx +2 -2
- package/src/header/Header.tsx +3 -3
- package/src/i18n/zh-HK.json +2 -0
- package/src/image/Image.tsx +2 -2
- package/src/info/Info.tsx +2 -2
- package/src/inlineAlert/InlineAlert.tsx +2 -2
- package/src/inputs/Input.tsx +2 -2
- package/src/inputs/InputGroup.tsx +3 -3
- package/src/inputs/SelectInput.css +10 -0
- package/src/inputs/SelectInput.less +12 -0
- package/src/inputs/SelectInput.story.tsx +22 -2
- package/src/inputs/SelectInput.tsx +156 -58
- package/src/inputs/TextArea.tsx +2 -2
- package/src/inputs/_BottomSheet.tsx +2 -2
- package/src/inputs/_ButtonInput.tsx +2 -2
- package/src/inputs/_Popover.tsx +3 -3
- package/src/inputs/_common.ts +2 -2
- package/src/instructionsList/InstructionsList.tsx +3 -3
- package/src/label/Label.tsx +2 -2
- package/src/link/Link.tsx +2 -7
- package/src/listItem/ListItem.tsx +3 -3
- package/src/loader/Loader.tsx +2 -2
- package/src/logo/Logo.tsx +2 -2
- package/src/main.css +10 -0
- package/src/modal/Modal.tsx +9 -15
- package/src/moneyInput/MoneyInput.story.tsx +0 -34
- package/src/moneyInput/MoneyInput.tsx +6 -29
- package/src/navigationOption/NavigationOption.tsx +2 -2
- package/src/nudge/Nudge.tsx +4 -4
- package/src/overlayHeader/OverlayHeader.tsx +3 -3
- package/src/popover/Popover.tsx +2 -2
- package/src/processIndicator/ProcessIndicator.tsx +2 -2
- package/src/progress/Progress.tsx +2 -2
- package/src/progressBar/ProgressBar.tsx +2 -2
- package/src/promoCard/PromoCard.tsx +4 -4
- package/src/promoCard/PromoCardGroup.tsx +2 -2
- package/src/promoCard/PromoCardIndicator.tsx +2 -2
- package/src/radio/Radio.tsx +5 -5
- package/src/section/Section.tsx +2 -2
- package/src/segmentedControl/SegmentedControl.tsx +5 -5
- package/src/select/Select.js +9 -9
- package/src/select/option/Option.tsx +2 -2
- package/src/select/searchBox/SearchBox.tsx +4 -7
- package/src/selectOption/SelectOption.tsx +5 -5
- package/src/slidingPanel/SlidingPanel.tsx +2 -2
- package/src/statusIcon/StatusIcon.tsx +3 -3
- package/src/stepper/Stepper.tsx +3 -3
- package/src/summary/Summary.tsx +2 -2
- package/src/switch/Switch.tsx +2 -2
- package/src/tabs/Tab.js +8 -12
- package/src/tabs/Tabs.js +2 -2
- package/src/tile/Tile.tsx +3 -3
- package/src/title/Title.tsx +3 -3
- package/src/tooltip/Tooltip.tsx +3 -3
- package/src/typeahead/Typeahead.tsx +6 -6
- package/src/typeahead/typeaheadInput/TypeaheadInput.tsx +2 -2
- package/src/typeahead/typeaheadOption/TypeaheadOption.tsx +2 -2
- package/src/upload/Upload.tsx +2 -2
- package/src/uploadInput/UploadInput.tsx +2 -2
- package/src/uploadInput/uploadButton/UploadButton.tsx +5 -9
- package/src/uploadInput/uploadItem/UploadItem.tsx +3 -3
- package/src/uploadInput/uploadItem/UploadItemLink.tsx +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Typeahead.js","sources":["../../src/typeahead/Typeahead.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/anchor-is-valid */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n\nimport { Cross as CrossIcon } from '@transferwise/icons';\nimport classNames from 'classnames';\nimport { DebouncedFunc } from 'lodash';\nimport clamp from 'lodash.clamp';\nimport debounce from 'lodash.debounce';\nimport { Component, ReactNode } from 'react';\n\nimport Chip from '../chips/Chip';\nimport { Size, Sentiment, SizeMedium, SizeLarge } from '../common';\nimport {\n addClickClassToDocumentOnIos,\n removeClickClassFromDocumentOnIos,\n stopPropagation,\n} from '../common/domHelpers';\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';\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> {\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\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 }\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\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 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={classNames('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={classNames('dropdown btn-group btn-block', { open: dropdownOpen })}\n id={`menu-${id}`}\n >\n <ul className=\"dropdown-menu\" role=\"menu\" aria-labelledby=\"dropdownMenu1\">\n {optionsToRender.map((option, idx) => (\n <TypeaheadOption\n key={`${option.label}${idx.toString()}`}\n query={query}\n option={option}\n selected={keyboardFocusedOptionIndex === idx}\n onClick={(event) => {\n this.onOptionSelected(event, option);\n }}\n />\n ))}\n {footer}\n </ul>\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 <div\n role=\"group\"\n {...inputAttributes}\n id={id}\n className={classNames('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={classNames('form-group', {\n 'has-error': hasError,\n 'has-warning': hasWarning,\n 'has-info': hasInfo,\n })}\n >\n <div\n className={classNames(`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 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 type=\"button\" className=\"btn-unstyled\" onClick={this.clear}>\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 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","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","push","keepFocusOnSelect","hideMenu","clearQueryOnSelect","onSearch","handleDocumentClick","onBlur","addClickClassToDocumentOnIos","document","addEventListener","removeClickClassFromDocumentOnIos","removeEventListener","onChange","some","clear","removeChip","option","selectedOption","renderChip","idx","valid","_jsx","Chip","className","classNames","onRemove","renderMenu","footer","id","dropdownOpen","optionsToRender","every","toUpperCase","open","children","_jsxs","role","TypeaheadOption","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","onKeyDown","onPaste","CrossIcon","InlineAlert","message","withInputAttributes","nonLabelable"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Typeahead.js","sources":["../../src/typeahead/Typeahead.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/anchor-is-valid */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n\nimport { 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 { Component, ReactNode } from 'react';\n\nimport Chip from '../chips/Chip';\nimport { Size, Sentiment, SizeMedium, SizeLarge } from '../common';\nimport {\n addClickClassToDocumentOnIos,\n removeClickClassFromDocumentOnIos,\n stopPropagation,\n} from '../common/domHelpers';\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';\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> {\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\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 }\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\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 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 <ul className=\"dropdown-menu\" role=\"menu\" aria-labelledby=\"dropdownMenu1\">\n {optionsToRender.map((option, idx) => (\n <TypeaheadOption\n key={`${option.label}${idx.toString()}`}\n query={query}\n option={option}\n selected={keyboardFocusedOptionIndex === idx}\n onClick={(event) => {\n this.onOptionSelected(event, option);\n }}\n />\n ))}\n {footer}\n </ul>\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 <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 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 type=\"button\" className=\"btn-unstyled\" onClick={this.clear}>\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 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","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","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","TypeaheadOption","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","onKeyDown","onPaste","CrossIcon","InlineAlert","message","withInputAttributes","nonLabelable"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Cross } from '@transferwise/icons';
|
|
2
|
-
import
|
|
2
|
+
import { clsx } from 'clsx';
|
|
3
3
|
import clamp from 'lodash.clamp';
|
|
4
4
|
import debounce from 'lodash.debounce';
|
|
5
5
|
import { Component } from 'react';
|
|
@@ -305,7 +305,7 @@ class Typeahead extends Component {
|
|
|
305
305
|
const valid = this.props.validateChip?.(option);
|
|
306
306
|
return /*#__PURE__*/jsx(Chip, {
|
|
307
307
|
label: option.label,
|
|
308
|
-
className:
|
|
308
|
+
className: clsx('m-t-1', {
|
|
309
309
|
'has-error': !valid,
|
|
310
310
|
'np-chip--valid': valid
|
|
311
311
|
}),
|
|
@@ -329,7 +329,7 @@ class Typeahead extends Component {
|
|
|
329
329
|
});
|
|
330
330
|
}
|
|
331
331
|
return /*#__PURE__*/jsx("div", {
|
|
332
|
-
className:
|
|
332
|
+
className: clsx('dropdown btn-group btn-block', {
|
|
333
333
|
open: dropdownOpen
|
|
334
334
|
}),
|
|
335
335
|
id: `menu-${id}`,
|
|
@@ -398,7 +398,7 @@ class Typeahead extends Component {
|
|
|
398
398
|
role: "group",
|
|
399
399
|
...inputAttributes,
|
|
400
400
|
id: id,
|
|
401
|
-
className:
|
|
401
|
+
className: clsx('typeahead', `typeahead-${size}`, {
|
|
402
402
|
'typeahead--has-value': selected.length > 0,
|
|
403
403
|
'typeahead--empty': selected.length === 0,
|
|
404
404
|
'typeahead--multiple': multiple,
|
|
@@ -406,13 +406,13 @@ class Typeahead extends Component {
|
|
|
406
406
|
}),
|
|
407
407
|
onClick: stopPropagation,
|
|
408
408
|
children: /*#__PURE__*/jsxs("div", {
|
|
409
|
-
className:
|
|
409
|
+
className: clsx('form-group', {
|
|
410
410
|
'has-error': hasError,
|
|
411
411
|
'has-warning': hasWarning,
|
|
412
412
|
'has-info': hasInfo
|
|
413
413
|
}),
|
|
414
414
|
children: [/*#__PURE__*/jsxs("div", {
|
|
415
|
-
className:
|
|
415
|
+
className: clsx(`input-group input-group-${size}`, {
|
|
416
416
|
'input-group--has-error': hasError
|
|
417
417
|
}),
|
|
418
418
|
children: [addon && /*#__PURE__*/jsx("span", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Typeahead.mjs","sources":["../../src/typeahead/Typeahead.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/anchor-is-valid */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n\nimport { Cross as CrossIcon } from '@transferwise/icons';\nimport classNames from 'classnames';\nimport { DebouncedFunc } from 'lodash';\nimport clamp from 'lodash.clamp';\nimport debounce from 'lodash.debounce';\nimport { Component, ReactNode } from 'react';\n\nimport Chip from '../chips/Chip';\nimport { Size, Sentiment, SizeMedium, SizeLarge } from '../common';\nimport {\n addClickClassToDocumentOnIos,\n removeClickClassFromDocumentOnIos,\n stopPropagation,\n} from '../common/domHelpers';\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';\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> {\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\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 }\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\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 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={classNames('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={classNames('dropdown btn-group btn-block', { open: dropdownOpen })}\n id={`menu-${id}`}\n >\n <ul className=\"dropdown-menu\" role=\"menu\" aria-labelledby=\"dropdownMenu1\">\n {optionsToRender.map((option, idx) => (\n <TypeaheadOption\n key={`${option.label}${idx.toString()}`}\n query={query}\n option={option}\n selected={keyboardFocusedOptionIndex === idx}\n onClick={(event) => {\n this.onOptionSelected(event, option);\n }}\n />\n ))}\n {footer}\n </ul>\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 <div\n role=\"group\"\n {...inputAttributes}\n id={id}\n className={classNames('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={classNames('form-group', {\n 'has-error': hasError,\n 'has-warning': hasWarning,\n 'has-info': hasInfo,\n })}\n >\n <div\n className={classNames(`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 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 type=\"button\" className=\"btn-unstyled\" onClick={this.clear}>\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 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","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","push","keepFocusOnSelect","hideMenu","clearQueryOnSelect","onSearch","handleDocumentClick","onBlur","addClickClassToDocumentOnIos","document","addEventListener","removeClickClassFromDocumentOnIos","removeEventListener","onChange","some","clear","removeChip","option","selectedOption","renderChip","idx","valid","_jsx","Chip","className","classNames","onRemove","renderMenu","footer","id","dropdownOpen","optionsToRender","every","toUpperCase","open","children","_jsxs","role","TypeaheadOption","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","onKeyDown","onPaste","CrossIcon","InlineAlert","message","withInputAttributes","nonLabelable"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Typeahead.mjs","sources":["../../src/typeahead/Typeahead.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/anchor-is-valid */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n\nimport { 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 { Component, ReactNode } from 'react';\n\nimport Chip from '../chips/Chip';\nimport { Size, Sentiment, SizeMedium, SizeLarge } from '../common';\nimport {\n addClickClassToDocumentOnIos,\n removeClickClassFromDocumentOnIos,\n stopPropagation,\n} from '../common/domHelpers';\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';\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> {\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\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 }\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\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 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 <ul className=\"dropdown-menu\" role=\"menu\" aria-labelledby=\"dropdownMenu1\">\n {optionsToRender.map((option, idx) => (\n <TypeaheadOption\n key={`${option.label}${idx.toString()}`}\n query={query}\n option={option}\n selected={keyboardFocusedOptionIndex === idx}\n onClick={(event) => {\n this.onOptionSelected(event, option);\n }}\n />\n ))}\n {footer}\n </ul>\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 <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 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 type=\"button\" className=\"btn-unstyled\" onClick={this.clear}>\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 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","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","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","TypeaheadOption","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","onKeyDown","onPaste","CrossIcon","InlineAlert","message","withInputAttributes","nonLabelable"],"mappings":"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"}
|
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var clsx = require('clsx');
|
|
4
4
|
var React = require('react');
|
|
5
5
|
var Input = require('../../inputs/Input.js');
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
7
7
|
|
|
8
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
-
|
|
10
|
-
var classNames__default = /*#__PURE__*/_interopDefault(classNames);
|
|
11
|
-
|
|
12
8
|
/* eslint-disable jsx-a11y/no-autofocus */
|
|
13
9
|
/* eslint-disable jsx-a11y/click-events-have-key-events */
|
|
14
10
|
/* eslint-disable jsx-a11y/no-static-element-interactions */
|
|
@@ -64,7 +60,7 @@ class TypeaheadInput extends React.Component {
|
|
|
64
60
|
const hasPlaceholder = !multiple || selected.length === 0;
|
|
65
61
|
return /*#__PURE__*/jsxRuntime.jsx(Input.Input, {
|
|
66
62
|
ref: this.inputRef,
|
|
67
|
-
className:
|
|
63
|
+
className: clsx.clsx(multiple && 'typeahead__input'),
|
|
68
64
|
name: name,
|
|
69
65
|
id: `input-${typeaheadId}`,
|
|
70
66
|
autoFocus: autoFocus,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeaheadInput.js","sources":["../../../src/typeahead/typeaheadInput/TypeaheadInput.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-autofocus */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport
|
|
1
|
+
{"version":3,"file":"TypeaheadInput.js","sources":["../../../src/typeahead/typeaheadInput/TypeaheadInput.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-autofocus */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport { clsx } from 'clsx';\nimport { Component, createRef, ReactNode } from 'react';\n\nimport { Input } from '../../inputs/Input';\nimport { TypeaheadOption, TypeaheadProps } from '../Typeahead';\n\nconst DEFAULT_INPUT_MIN_WIDTH = 10;\n\nexport type TypeaheadInputProps<T> = {\n typeaheadId: string;\n value: string;\n selected: readonly TypeaheadOption<T>[];\n dropdownOpen?: boolean;\n autoComplete: string;\n onChange: React.ChangeEventHandler<HTMLInputElement>;\n onKeyDown: React.KeyboardEventHandler<HTMLInputElement>;\n onFocus: () => void;\n onPaste: React.ClipboardEventHandler<HTMLInputElement>;\n renderChip: (chip: TypeaheadOption<T>, index: number) => ReactNode;\n} & Pick<TypeaheadProps<T>, 'id' | 'name' | 'autoFocus' | 'multiple' | 'placeholder' | 'maxHeight'>;\n\ntype TypeaheadInputState = {\n inputWidth: number;\n};\n\nexport default class TypeaheadInput<T> extends Component<\n TypeaheadInputProps<T>,\n TypeaheadInputState\n> {\n inputRef = createRef<HTMLInputElement>();\n sizerRef = createRef<HTMLDivElement>();\n\n constructor(props: TypeaheadInputProps<T>) {\n super(props);\n this.state = {\n inputWidth: DEFAULT_INPUT_MIN_WIDTH,\n };\n }\n\n componentDidMount() {\n const { autoFocus } = this.props;\n if (autoFocus) {\n this.inputRef.current?.focus();\n }\n }\n\n componentDidUpdate(previousProps: TypeaheadInputProps<T>) {\n if (previousProps.value !== this.props.value && this.props.multiple) {\n this.recalculateWidth();\n }\n }\n\n recalculateWidth = () => {\n requestAnimationFrame(() => {\n this.setState({\n inputWidth: Math.max(DEFAULT_INPUT_MIN_WIDTH, this.sizerRef.current?.scrollWidth ?? 0 + 10),\n });\n });\n };\n\n renderInput = () => {\n const {\n typeaheadId,\n autoFocus,\n multiple,\n name,\n dropdownOpen,\n placeholder,\n selected,\n value,\n onChange,\n onKeyDown,\n onFocus,\n onPaste,\n autoComplete,\n } = this.props;\n const { inputWidth } = this.state;\n\n const hasPlaceholder = !multiple || selected.length === 0;\n return (\n <Input\n ref={this.inputRef}\n className={clsx(multiple && 'typeahead__input')}\n name={name}\n id={`input-${typeaheadId}`}\n autoFocus={autoFocus}\n placeholder={hasPlaceholder ? placeholder : ''}\n aria-autocomplete=\"list\"\n aria-expanded={dropdownOpen}\n aria-haspopup=\"listbox\"\n aria-controls={`menu-${typeaheadId}`}\n autoComplete={autoComplete}\n role=\"combobox\"\n value={value}\n style={multiple && selected.length > 0 ? { width: inputWidth } : {}}\n onChange={onChange}\n onKeyDown={onKeyDown}\n onClick={onFocus}\n onFocus={onFocus}\n onPaste={onPaste}\n />\n );\n };\n\n render() {\n const { multiple, selected, value, maxHeight, renderChip } = this.props;\n\n return multiple ? (\n <div\n className=\"form-control typeahead__input-container\"\n style={{ maxHeight }}\n onClick={() => {\n this.inputRef.current?.focus();\n }}\n >\n <div className=\"typeahead__input-wrapper\">\n {selected && selected.map((chip, idx) => renderChip(chip, idx))}\n\n {this.renderInput()}\n <div className=\"typeahead__input-aligner\" />\n </div>\n <div ref={this.sizerRef} className=\"sizer form-control typeahead__input\">\n {value}\n </div>\n </div>\n ) : (\n this.renderInput()\n );\n }\n}\n"],"names":["DEFAULT_INPUT_MIN_WIDTH","TypeaheadInput","Component","inputRef","createRef","sizerRef","constructor","props","state","inputWidth","componentDidMount","autoFocus","current","focus","componentDidUpdate","previousProps","value","multiple","recalculateWidth","requestAnimationFrame","setState","Math","max","scrollWidth","renderInput","typeaheadId","name","dropdownOpen","placeholder","selected","onChange","onKeyDown","onFocus","onPaste","autoComplete","hasPlaceholder","length","_jsx","Input","ref","className","clsx","id","role","style","width","onClick","render","maxHeight","renderChip","_jsxs","children","map","chip","idx"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { clsx } from 'clsx';
|
|
2
2
|
import { Component, createRef } from 'react';
|
|
3
3
|
import { Input } from '../../inputs/Input.mjs';
|
|
4
4
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
@@ -58,7 +58,7 @@ class TypeaheadInput extends Component {
|
|
|
58
58
|
const hasPlaceholder = !multiple || selected.length === 0;
|
|
59
59
|
return /*#__PURE__*/jsx(Input, {
|
|
60
60
|
ref: this.inputRef,
|
|
61
|
-
className:
|
|
61
|
+
className: clsx(multiple && 'typeahead__input'),
|
|
62
62
|
name: name,
|
|
63
63
|
id: `input-${typeaheadId}`,
|
|
64
64
|
autoFocus: autoFocus,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeaheadInput.mjs","sources":["../../../src/typeahead/typeaheadInput/TypeaheadInput.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-autofocus */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport
|
|
1
|
+
{"version":3,"file":"TypeaheadInput.mjs","sources":["../../../src/typeahead/typeaheadInput/TypeaheadInput.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-autofocus */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport { clsx } from 'clsx';\nimport { Component, createRef, ReactNode } from 'react';\n\nimport { Input } from '../../inputs/Input';\nimport { TypeaheadOption, TypeaheadProps } from '../Typeahead';\n\nconst DEFAULT_INPUT_MIN_WIDTH = 10;\n\nexport type TypeaheadInputProps<T> = {\n typeaheadId: string;\n value: string;\n selected: readonly TypeaheadOption<T>[];\n dropdownOpen?: boolean;\n autoComplete: string;\n onChange: React.ChangeEventHandler<HTMLInputElement>;\n onKeyDown: React.KeyboardEventHandler<HTMLInputElement>;\n onFocus: () => void;\n onPaste: React.ClipboardEventHandler<HTMLInputElement>;\n renderChip: (chip: TypeaheadOption<T>, index: number) => ReactNode;\n} & Pick<TypeaheadProps<T>, 'id' | 'name' | 'autoFocus' | 'multiple' | 'placeholder' | 'maxHeight'>;\n\ntype TypeaheadInputState = {\n inputWidth: number;\n};\n\nexport default class TypeaheadInput<T> extends Component<\n TypeaheadInputProps<T>,\n TypeaheadInputState\n> {\n inputRef = createRef<HTMLInputElement>();\n sizerRef = createRef<HTMLDivElement>();\n\n constructor(props: TypeaheadInputProps<T>) {\n super(props);\n this.state = {\n inputWidth: DEFAULT_INPUT_MIN_WIDTH,\n };\n }\n\n componentDidMount() {\n const { autoFocus } = this.props;\n if (autoFocus) {\n this.inputRef.current?.focus();\n }\n }\n\n componentDidUpdate(previousProps: TypeaheadInputProps<T>) {\n if (previousProps.value !== this.props.value && this.props.multiple) {\n this.recalculateWidth();\n }\n }\n\n recalculateWidth = () => {\n requestAnimationFrame(() => {\n this.setState({\n inputWidth: Math.max(DEFAULT_INPUT_MIN_WIDTH, this.sizerRef.current?.scrollWidth ?? 0 + 10),\n });\n });\n };\n\n renderInput = () => {\n const {\n typeaheadId,\n autoFocus,\n multiple,\n name,\n dropdownOpen,\n placeholder,\n selected,\n value,\n onChange,\n onKeyDown,\n onFocus,\n onPaste,\n autoComplete,\n } = this.props;\n const { inputWidth } = this.state;\n\n const hasPlaceholder = !multiple || selected.length === 0;\n return (\n <Input\n ref={this.inputRef}\n className={clsx(multiple && 'typeahead__input')}\n name={name}\n id={`input-${typeaheadId}`}\n autoFocus={autoFocus}\n placeholder={hasPlaceholder ? placeholder : ''}\n aria-autocomplete=\"list\"\n aria-expanded={dropdownOpen}\n aria-haspopup=\"listbox\"\n aria-controls={`menu-${typeaheadId}`}\n autoComplete={autoComplete}\n role=\"combobox\"\n value={value}\n style={multiple && selected.length > 0 ? { width: inputWidth } : {}}\n onChange={onChange}\n onKeyDown={onKeyDown}\n onClick={onFocus}\n onFocus={onFocus}\n onPaste={onPaste}\n />\n );\n };\n\n render() {\n const { multiple, selected, value, maxHeight, renderChip } = this.props;\n\n return multiple ? (\n <div\n className=\"form-control typeahead__input-container\"\n style={{ maxHeight }}\n onClick={() => {\n this.inputRef.current?.focus();\n }}\n >\n <div className=\"typeahead__input-wrapper\">\n {selected && selected.map((chip, idx) => renderChip(chip, idx))}\n\n {this.renderInput()}\n <div className=\"typeahead__input-aligner\" />\n </div>\n <div ref={this.sizerRef} className=\"sizer form-control typeahead__input\">\n {value}\n </div>\n </div>\n ) : (\n this.renderInput()\n );\n }\n}\n"],"names":["DEFAULT_INPUT_MIN_WIDTH","TypeaheadInput","Component","inputRef","createRef","sizerRef","constructor","props","state","inputWidth","componentDidMount","autoFocus","current","focus","componentDidUpdate","previousProps","value","multiple","recalculateWidth","requestAnimationFrame","setState","Math","max","scrollWidth","renderInput","typeaheadId","name","dropdownOpen","placeholder","selected","onChange","onKeyDown","onFocus","onPaste","autoComplete","hasPlaceholder","length","_jsx","Input","ref","className","clsx","id","role","style","width","onClick","render","maxHeight","renderChip","_jsxs","children","map","chip","idx"],"mappings":"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"}
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var clsx = require('clsx');
|
|
4
4
|
var highlight = require('../util/highlight.js');
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
|
|
7
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
|
-
|
|
9
|
-
var classNames__default = /*#__PURE__*/_interopDefault(classNames);
|
|
10
|
-
|
|
11
7
|
/* eslint-disable jsx-a11y/anchor-is-valid */
|
|
12
8
|
const Option = props => {
|
|
13
9
|
const {
|
|
@@ -24,7 +20,7 @@ const Option = props => {
|
|
|
24
20
|
return /*#__PURE__*/jsxRuntime.jsx("li", {
|
|
25
21
|
role: "option",
|
|
26
22
|
"aria-selected": "false",
|
|
27
|
-
className:
|
|
23
|
+
className: clsx.clsx('typeahead__option tw-dropdown-item clickable', {
|
|
28
24
|
'tw-dropdown-item--focused': selected
|
|
29
25
|
}),
|
|
30
26
|
children: /*#__PURE__*/jsxRuntime.jsxs("a", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeaheadOption.js","sources":["../../../src/typeahead/typeaheadOption/TypeaheadOption.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/anchor-is-valid */\nimport
|
|
1
|
+
{"version":3,"file":"TypeaheadOption.js","sources":["../../../src/typeahead/typeaheadOption/TypeaheadOption.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/anchor-is-valid */\nimport { clsx } from 'clsx';\n\nimport { TypeaheadOption } from '../Typeahead';\nimport highlight from '../util/highlight';\n\nexport type TypeaheadOptionProps<T> = {\n option: TypeaheadOption<T>;\n selected?: boolean;\n onClick?: React.MouseEventHandler;\n query?: string;\n};\n\nconst Option = <T,>(props: TypeaheadOptionProps<T>) => {\n const { option, selected = false, onClick = () => {}, query = '' } = props;\n const { label, note, secondary } = option;\n\n return (\n <li\n role=\"option\"\n aria-selected=\"false\"\n className={clsx('typeahead__option tw-dropdown-item clickable', {\n 'tw-dropdown-item--focused': selected,\n })}\n >\n <a className=\"dropdown-item\" href=\"#\" tabIndex={-1} onClick={onClick}>\n <span>{highlight(label, query)}</span>\n {note && <span className=\"np-text-body-default m-l-1\">{note}</span>}\n {secondary && (\n <span className=\"np-text-body-default text-ellipsis\">{highlight(secondary, query)}</span>\n )}\n </a>\n </li>\n );\n};\n\nexport default Option;\n"],"names":["Option","props","option","selected","onClick","query","label","note","secondary","_jsx","role","className","clsx","children","_jsxs","href","tabIndex","highlight"],"mappings":";;;;;;AAAA;AAaMA,MAAAA,MAAM,GAAQC,KAA8B,IAAI;EACpD,MAAM;IAAEC,MAAM;AAAEC,IAAAA,QAAQ,GAAG,KAAK;AAAEC,IAAAA,OAAO,GAAGA,MAAO,EAAC;AAAEC,IAAAA,KAAK,GAAG,EAAA;AAAI,GAAA,GAAGJ,KAAK,CAAA;EAC1E,MAAM;IAAEK,KAAK;IAAEC,IAAI;AAAEC,IAAAA,SAAAA;AAAS,GAAE,GAAGN,MAAM,CAAA;AAEzC,EAAA,oBACEO,cAAA,CAAA,IAAA,EAAA;AACEC,IAAAA,IAAI,EAAC,QAAQ;AACb,IAAA,eAAA,EAAc,OAAO;AACrBC,IAAAA,SAAS,EAAEC,SAAI,CAAC,8CAA8C,EAAE;AAC9D,MAAA,2BAA2B,EAAET,QAAAA;AAC9B,KAAA,CAAE;AAAAU,IAAAA,QAAA,eAEHC,eAAA,CAAA,GAAA,EAAA;AAAGH,MAAAA,SAAS,EAAC,eAAe;AAACI,MAAAA,IAAI,EAAC,GAAG;MAACC,QAAQ,EAAE,CAAC,CAAE;AAACZ,MAAAA,OAAO,EAAEA,OAAQ;AAAAS,MAAAA,QAAA,gBACnEJ,cAAA,CAAA,MAAA,EAAA;AAAAI,QAAAA,QAAA,EAAOI,SAAS,CAACX,KAAK,EAAED,KAAK,CAAA;AAAC,OAAO,CACrC,EAACE,IAAI,iBAAIE,cAAA,CAAA,MAAA,EAAA;AAAME,QAAAA,SAAS,EAAC,4BAA4B;AAAAE,QAAAA,QAAA,EAAEN,IAAAA;AAAI,OAAO,CAAC,EAClEC,SAAS,iBACRC,cAAA,CAAA,MAAA,EAAA;AAAME,QAAAA,SAAS,EAAC,oCAAoC;AAAAE,QAAAA,QAAA,EAAEI,SAAS,CAACT,SAAS,EAAEH,KAAK,CAAA;AAAC,OAAO,CACzF,CAAA;KACA,CAAA;AACL,GAAI,CAAC,CAAA;AAET;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { clsx } from 'clsx';
|
|
2
2
|
import highlight from '../util/highlight.mjs';
|
|
3
3
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
4
4
|
|
|
@@ -18,7 +18,7 @@ const Option = props => {
|
|
|
18
18
|
return /*#__PURE__*/jsx("li", {
|
|
19
19
|
role: "option",
|
|
20
20
|
"aria-selected": "false",
|
|
21
|
-
className:
|
|
21
|
+
className: clsx('typeahead__option tw-dropdown-item clickable', {
|
|
22
22
|
'tw-dropdown-item--focused': selected
|
|
23
23
|
}),
|
|
24
24
|
children: /*#__PURE__*/jsxs("a", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeaheadOption.mjs","sources":["../../../src/typeahead/typeaheadOption/TypeaheadOption.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/anchor-is-valid */\nimport
|
|
1
|
+
{"version":3,"file":"TypeaheadOption.mjs","sources":["../../../src/typeahead/typeaheadOption/TypeaheadOption.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/anchor-is-valid */\nimport { clsx } from 'clsx';\n\nimport { TypeaheadOption } from '../Typeahead';\nimport highlight from '../util/highlight';\n\nexport type TypeaheadOptionProps<T> = {\n option: TypeaheadOption<T>;\n selected?: boolean;\n onClick?: React.MouseEventHandler;\n query?: string;\n};\n\nconst Option = <T,>(props: TypeaheadOptionProps<T>) => {\n const { option, selected = false, onClick = () => {}, query = '' } = props;\n const { label, note, secondary } = option;\n\n return (\n <li\n role=\"option\"\n aria-selected=\"false\"\n className={clsx('typeahead__option tw-dropdown-item clickable', {\n 'tw-dropdown-item--focused': selected,\n })}\n >\n <a className=\"dropdown-item\" href=\"#\" tabIndex={-1} onClick={onClick}>\n <span>{highlight(label, query)}</span>\n {note && <span className=\"np-text-body-default m-l-1\">{note}</span>}\n {secondary && (\n <span className=\"np-text-body-default text-ellipsis\">{highlight(secondary, query)}</span>\n )}\n </a>\n </li>\n );\n};\n\nexport default Option;\n"],"names":["Option","props","option","selected","onClick","query","label","note","secondary","_jsx","role","className","clsx","children","_jsxs","href","tabIndex","highlight"],"mappings":";;;;AAAA;AAaMA,MAAAA,MAAM,GAAQC,KAA8B,IAAI;EACpD,MAAM;IAAEC,MAAM;AAAEC,IAAAA,QAAQ,GAAG,KAAK;AAAEC,IAAAA,OAAO,GAAGA,MAAO,EAAC;AAAEC,IAAAA,KAAK,GAAG,EAAA;AAAI,GAAA,GAAGJ,KAAK,CAAA;EAC1E,MAAM;IAAEK,KAAK;IAAEC,IAAI;AAAEC,IAAAA,SAAAA;AAAS,GAAE,GAAGN,MAAM,CAAA;AAEzC,EAAA,oBACEO,GAAA,CAAA,IAAA,EAAA;AACEC,IAAAA,IAAI,EAAC,QAAQ;AACb,IAAA,eAAA,EAAc,OAAO;AACrBC,IAAAA,SAAS,EAAEC,IAAI,CAAC,8CAA8C,EAAE;AAC9D,MAAA,2BAA2B,EAAET,QAAAA;AAC9B,KAAA,CAAE;AAAAU,IAAAA,QAAA,eAEHC,IAAA,CAAA,GAAA,EAAA;AAAGH,MAAAA,SAAS,EAAC,eAAe;AAACI,MAAAA,IAAI,EAAC,GAAG;MAACC,QAAQ,EAAE,CAAC,CAAE;AAACZ,MAAAA,OAAO,EAAEA,OAAQ;AAAAS,MAAAA,QAAA,gBACnEJ,GAAA,CAAA,MAAA,EAAA;AAAAI,QAAAA,QAAA,EAAOI,SAAS,CAACX,KAAK,EAAED,KAAK,CAAA;AAAC,OAAO,CACrC,EAACE,IAAI,iBAAIE,GAAA,CAAA,MAAA,EAAA;AAAME,QAAAA,SAAS,EAAC,4BAA4B;AAAAE,QAAAA,QAAA,EAAEN,IAAAA;AAAI,OAAO,CAAC,EAClEC,SAAS,iBACRC,GAAA,CAAA,MAAA,EAAA;AAAME,QAAAA,SAAS,EAAC,oCAAoC;AAAAE,QAAAA,QAAA,EAAEI,SAAS,CAACT,SAAS,EAAEH,KAAK,CAAA;AAAC,OAAO,CACzF,CAAA;KACA,CAAA;AACL,GAAI,CAAC,CAAA;AAET;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccordionItem.d.ts","sourceRoot":"","sources":["../../../../src/accordion/AccordionItem/AccordionItem.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,SAAS,EAAuB,MAAM,OAAO,CAAC;AAO3D,MAAM,WAAW,kBAAkB;IACjC,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,uCAAuC;IACvC,KAAK,EAAE,SAAS,CAAC;IACjB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,yCAAyC;IACzC,OAAO,EAAE,SAAS,CAAC;IACnB,6EAA6E;IAC7E,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,8DAA8D;IAC9D,IAAI,EAAE,OAAO,CAAC;IACd,oEAAoE;IACpE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,sBAAsB;IACtB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,QAAA,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,
|
|
1
|
+
{"version":3,"file":"AccordionItem.d.ts","sourceRoot":"","sources":["../../../../src/accordion/AccordionItem/AccordionItem.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,SAAS,EAAuB,MAAM,OAAO,CAAC;AAO3D,MAAM,WAAW,kBAAkB;IACjC,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,uCAAuC;IACvC,KAAK,EAAE,SAAS,CAAC;IACjB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,yCAAyC;IACzC,OAAO,EAAE,SAAS,CAAC;IACnB,6EAA6E;IAC7E,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,8DAA8D;IAC9D,IAAI,EAAE,OAAO,CAAC;IACd,oEAAoE;IACpE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,sBAAsB;IACtB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,QAAA,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CAoDzC,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chevron.d.ts","sourceRoot":"","sources":["../../../src/chevron/Chevron.tsx"],"names":[],"mappings":"AAIA,OAAO,EAGL,WAAW,EACX,cAAc,EACd,aAAa,EACb,YAAY,EACZ,cAAc,EACd,SAAS,EACT,UAAU,EACX,MAAM,WAAW,CAAC;AAQnB,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,WAAW,GAAG,cAAc,GAAG,YAAY,GAAG,aAAa,CAAC;IAC1E,IAAI,CAAC,EAAE,cAAc,GAAG,SAAS,GAAG,UAAU,CAAC;IAC/C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"Chevron.d.ts","sourceRoot":"","sources":["../../../src/chevron/Chevron.tsx"],"names":[],"mappings":"AAIA,OAAO,EAGL,WAAW,EACX,cAAc,EACd,aAAa,EACb,YAAY,EACZ,cAAc,EACd,SAAS,EACT,UAAU,EACX,MAAM,WAAW,CAAC;AAQnB,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,WAAW,GAAG,cAAc,GAAG,YAAY,GAAG,aAAa,CAAC;IAC1E,IAAI,CAAC,EAAE,cAAc,GAAG,SAAS,GAAG,UAAU,CAAC;IAC/C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAeD,QAAA,MAAM,OAAO,gDAKV,YAAY,gCAUd,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CircularButton.d.ts","sourceRoot":"","sources":["../../../src/circularButton/CircularButton.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"CircularButton.d.ts","sourceRoot":"","sources":["../../../src/circularButton/CircularButton.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAe,MAAM,WAAW,CAAC;AAE/D,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IACpD,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;IACtD,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;CAC9E;AAED,QAAA,MAAM,cAAc,qEAQjB,mBAAmB,gCAoBrB,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableLink.d.ts","sourceRoot":"","sources":["../../../../src/dateLookup/tableLink/TableLink.tsx"],"names":[],"mappings":"AAMA,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED,QAAA,MAAM,SAAS,mFAUZ,cAAc,
|
|
1
|
+
{"version":3,"file":"TableLink.d.ts","sourceRoot":"","sources":["../../../../src/dateLookup/tableLink/TableLink.tsx"],"names":[],"mappings":"AAMA,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED,QAAA,MAAM,SAAS,mFAUZ,cAAc,gCA8ChB,CAAC;AAEF,eAAe,SAAS,CAAC"}
|