@salt-ds/core 1.20.0 → 1.21.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/css/salt-core.css +470 -19
- package/dist-cjs/accordion/Accordion.js +75 -0
- package/dist-cjs/accordion/Accordion.js.map +1 -1
- package/dist-cjs/accordion/AccordionContext.js +79 -0
- package/dist-cjs/accordion/AccordionContext.js.map +1 -1
- package/dist-cjs/accordion/AccordionGroup.js +76 -1
- package/dist-cjs/accordion/AccordionGroup.js.map +1 -1
- package/dist-cjs/accordion/AccordionHeader.js +73 -0
- package/dist-cjs/accordion/AccordionHeader.js.map +1 -1
- package/dist-cjs/accordion/AccordionPanel.js +75 -0
- package/dist-cjs/accordion/AccordionPanel.js.map +1 -1
- package/dist-cjs/aria-announcer/useAriaAnnouncer.js +78 -0
- package/dist-cjs/aria-announcer/useAriaAnnouncer.js.map +1 -1
- package/dist-cjs/avatar/Avatar.js +74 -0
- package/dist-cjs/avatar/Avatar.js.map +1 -1
- package/dist-cjs/avatar/useAvatarImage.js +79 -0
- package/dist-cjs/avatar/useAvatarImage.js.map +1 -1
- package/dist-cjs/badge/Badge.js +75 -0
- package/dist-cjs/badge/Badge.js.map +1 -1
- package/dist-cjs/banner/Banner.js +76 -2
- package/dist-cjs/banner/Banner.js.map +1 -1
- package/dist-cjs/banner/BannerActions.js +76 -1
- package/dist-cjs/banner/BannerActions.js.map +1 -1
- package/dist-cjs/banner/BannerContent.js +76 -1
- package/dist-cjs/banner/BannerContent.js.map +1 -1
- package/dist-cjs/border-item/BorderItem.js +75 -1
- package/dist-cjs/border-item/BorderItem.js.map +1 -1
- package/dist-cjs/border-layout/BorderLayout.js +76 -0
- package/dist-cjs/border-layout/BorderLayout.js.map +1 -1
- package/dist-cjs/button/Button.js +76 -1
- package/dist-cjs/button/Button.js.map +1 -1
- package/dist-cjs/card/Card.js +75 -0
- package/dist-cjs/card/Card.js.map +1 -1
- package/dist-cjs/card/InteractableCard.js +75 -0
- package/dist-cjs/card/InteractableCard.js.map +1 -1
- package/dist-cjs/checkbox/Checkbox.js +73 -0
- package/dist-cjs/checkbox/Checkbox.js.map +1 -1
- package/dist-cjs/checkbox/CheckboxGroup.js +74 -0
- package/dist-cjs/checkbox/CheckboxGroup.js.map +1 -1
- package/dist-cjs/checkbox/CheckboxIcon.js +75 -0
- package/dist-cjs/checkbox/CheckboxIcon.js.map +1 -1
- package/dist-cjs/checkbox/internal/CheckboxGroupContext.js +79 -0
- package/dist-cjs/checkbox/internal/CheckboxGroupContext.js.map +1 -1
- package/dist-cjs/combo-box/ComboBox.css.js +6 -0
- package/dist-cjs/combo-box/ComboBox.css.js.map +1 -0
- package/dist-cjs/combo-box/ComboBox.js +443 -0
- package/dist-cjs/combo-box/ComboBox.js.map +1 -0
- package/dist-cjs/combo-box/useComboBox.js +153 -0
- package/dist-cjs/combo-box/useComboBox.js.map +1 -0
- package/dist-cjs/dialog/Dialog.js +77 -3
- package/dist-cjs/dialog/Dialog.js.map +1 -1
- package/dist-cjs/dialog/DialogActions.js +76 -1
- package/dist-cjs/dialog/DialogActions.js.map +1 -1
- package/dist-cjs/dialog/DialogCloseButton.js +74 -1
- package/dist-cjs/dialog/DialogCloseButton.js.map +1 -1
- package/dist-cjs/dialog/DialogContent.js +76 -1
- package/dist-cjs/dialog/DialogContent.js.map +1 -1
- package/dist-cjs/dialog/DialogHeader.js +71 -3
- package/dist-cjs/dialog/DialogHeader.js.map +1 -1
- package/dist-cjs/drawer/Drawer.js +75 -2
- package/dist-cjs/drawer/Drawer.js.map +1 -1
- package/dist-cjs/drawer/DrawerCloseButton.js +74 -1
- package/dist-cjs/drawer/DrawerCloseButton.js.map +1 -1
- package/dist-cjs/dropdown/Dropdown.css.js +6 -0
- package/dist-cjs/dropdown/Dropdown.css.js.map +1 -0
- package/dist-cjs/dropdown/Dropdown.js +412 -0
- package/dist-cjs/dropdown/Dropdown.js.map +1 -0
- package/dist-cjs/file-drop-zone/FileDropZone.js +75 -0
- package/dist-cjs/file-drop-zone/FileDropZone.js.map +1 -1
- package/dist-cjs/file-drop-zone/FileDropZoneTrigger.js +76 -0
- package/dist-cjs/file-drop-zone/FileDropZoneTrigger.js.map +1 -1
- package/dist-cjs/flex-item/FlexItem.js +79 -2
- package/dist-cjs/flex-item/FlexItem.js.map +1 -1
- package/dist-cjs/flex-layout/FlexLayout.js +79 -2
- package/dist-cjs/flex-layout/FlexLayout.js.map +1 -1
- package/dist-cjs/form-field/FormField.js +74 -0
- package/dist-cjs/form-field/FormField.js.map +1 -1
- package/dist-cjs/form-field/FormFieldHelperText.js +70 -2
- package/dist-cjs/form-field/FormFieldHelperText.js.map +1 -1
- package/dist-cjs/form-field/FormFieldLabel.js +69 -0
- package/dist-cjs/form-field/FormFieldLabel.js.map +1 -1
- package/dist-cjs/form-field-context/FormFieldContext.js +78 -0
- package/dist-cjs/form-field-context/FormFieldContext.js.map +1 -1
- package/dist-cjs/grid-item/GridItem.js +79 -2
- package/dist-cjs/grid-item/GridItem.js.map +1 -1
- package/dist-cjs/grid-layout/GridLayout.js +79 -2
- package/dist-cjs/grid-layout/GridLayout.js.map +1 -1
- package/dist-cjs/index.js +16 -0
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/input/Input.js +73 -0
- package/dist-cjs/input/Input.js.map +1 -1
- package/dist-cjs/link/Link.js +70 -2
- package/dist-cjs/link/Link.js.map +1 -1
- package/dist-cjs/link-card/LinkCard.js +75 -0
- package/dist-cjs/link-card/LinkCard.js.map +1 -1
- package/dist-cjs/list-control/ListControlContext.js +121 -0
- package/dist-cjs/list-control/ListControlContext.js.map +1 -0
- package/dist-cjs/list-control/ListControlState.js +276 -0
- package/dist-cjs/list-control/ListControlState.js.map +1 -0
- package/dist-cjs/multiline-input/MultilineInput.js +73 -0
- package/dist-cjs/multiline-input/MultilineInput.js.map +1 -1
- package/dist-cjs/navigation-item/NavigationItem.js +77 -2
- package/dist-cjs/navigation-item/NavigationItem.js.map +1 -1
- package/dist-cjs/option/Option.css.js +6 -0
- package/dist-cjs/option/Option.css.js.map +1 -0
- package/dist-cjs/option/Option.js +178 -0
- package/dist-cjs/option/Option.js.map +1 -0
- package/dist-cjs/option/OptionGroup.css.js +6 -0
- package/dist-cjs/option/OptionGroup.css.js.map +1 -0
- package/dist-cjs/option/OptionGroup.js +123 -0
- package/dist-cjs/option/OptionGroup.js.map +1 -0
- package/dist-cjs/option/OptionList.css.js +6 -0
- package/dist-cjs/option/OptionList.css.js.map +1 -0
- package/dist-cjs/option/OptionList.js +118 -0
- package/dist-cjs/option/OptionList.js.map +1 -0
- package/dist-cjs/option/OptionListBase.js +113 -0
- package/dist-cjs/option/OptionListBase.js.map +1 -0
- package/dist-cjs/pagination/CompactInput.js +76 -2
- package/dist-cjs/pagination/CompactInput.js.map +1 -1
- package/dist-cjs/pagination/CompactPaginator.js +69 -2
- package/dist-cjs/pagination/CompactPaginator.js.map +1 -1
- package/dist-cjs/pagination/GoToInput.js +68 -3
- package/dist-cjs/pagination/GoToInput.js.map +1 -1
- package/dist-cjs/pagination/PageButton.js +77 -2
- package/dist-cjs/pagination/PageButton.js.map +1 -1
- package/dist-cjs/pagination/PageRanges.js +78 -2
- package/dist-cjs/pagination/PageRanges.js.map +1 -1
- package/dist-cjs/pagination/Pagination.js +76 -2
- package/dist-cjs/pagination/Pagination.js.map +1 -1
- package/dist-cjs/pagination/Paginator.js +75 -2
- package/dist-cjs/pagination/Paginator.js.map +1 -1
- package/dist-cjs/panel/Panel.js +77 -2
- package/dist-cjs/panel/Panel.js.map +1 -1
- package/dist-cjs/pill/Pill.js +74 -0
- package/dist-cjs/pill/Pill.js.map +1 -1
- package/dist-cjs/pill-input/PillInput.css.js +6 -0
- package/dist-cjs/pill-input/PillInput.css.js.map +1 -0
- package/dist-cjs/pill-input/PillInput.js +338 -0
- package/dist-cjs/pill-input/PillInput.js.map +1 -0
- package/dist-cjs/pill-input/useTruncatePills.js +83 -0
- package/dist-cjs/pill-input/useTruncatePills.js.map +1 -0
- package/dist-cjs/progress/CircularProgress/CircularProgress.css.js +1 -1
- package/dist-cjs/progress/CircularProgress/CircularProgress.js +138 -14
- package/dist-cjs/progress/CircularProgress/CircularProgress.js.map +1 -1
- package/dist-cjs/progress/LinearProgress/LinearProgress.css.js +1 -1
- package/dist-cjs/progress/LinearProgress/LinearProgress.js +89 -8
- package/dist-cjs/progress/LinearProgress/LinearProgress.js.map +1 -1
- package/dist-cjs/radio-button/RadioButton.js +78 -4
- package/dist-cjs/radio-button/RadioButton.js.map +1 -1
- package/dist-cjs/radio-button/RadioButtonGroup.js +77 -3
- package/dist-cjs/radio-button/RadioButtonGroup.js.map +1 -1
- package/dist-cjs/radio-button/RadioButtonIcon.js +76 -0
- package/dist-cjs/radio-button/RadioButtonIcon.js.map +1 -1
- package/dist-cjs/radio-button/internal/RadioGroupContext.js +79 -0
- package/dist-cjs/radio-button/internal/RadioGroupContext.js.map +1 -1
- package/dist-cjs/salt-provider/SaltProvider.js +78 -3
- package/dist-cjs/salt-provider/SaltProvider.js.map +1 -1
- package/dist-cjs/scrim/Scrim.js +76 -1
- package/dist-cjs/scrim/Scrim.js.map +1 -1
- package/dist-cjs/spinner/Spinner.js +76 -2
- package/dist-cjs/spinner/Spinner.js.map +1 -1
- package/dist-cjs/spinner/svgSpinners/SpinnerSVG.js +78 -0
- package/dist-cjs/spinner/svgSpinners/SpinnerSVG.js.map +1 -1
- package/dist-cjs/split-layout/SplitLayout.js +76 -2
- package/dist-cjs/split-layout/SplitLayout.js.map +1 -1
- package/dist-cjs/stack-layout/StackLayout.js +78 -2
- package/dist-cjs/stack-layout/StackLayout.js.map +1 -1
- package/dist-cjs/status-adornment/StatusAdornment.js +75 -0
- package/dist-cjs/status-adornment/StatusAdornment.js.map +1 -1
- package/dist-cjs/status-indicator/StatusIndicator.js +76 -2
- package/dist-cjs/status-indicator/StatusIndicator.js.map +1 -1
- package/dist-cjs/switch/Switch.js +75 -2
- package/dist-cjs/switch/Switch.js.map +1 -1
- package/dist-cjs/text/Text.js +77 -2
- package/dist-cjs/text/Text.js.map +1 -1
- package/dist-cjs/toast/Toast.js +74 -0
- package/dist-cjs/toast/Toast.js.map +1 -1
- package/dist-cjs/toast/ToastContent.js +75 -0
- package/dist-cjs/toast/ToastContent.js.map +1 -1
- package/dist-cjs/toggle-button/ToggleButton.js +73 -0
- package/dist-cjs/toggle-button/ToggleButton.js.map +1 -1
- package/dist-cjs/toggle-button-group/ToggleButtonGroup.js +74 -0
- package/dist-cjs/toggle-button-group/ToggleButtonGroup.js.map +1 -1
- package/dist-cjs/toggle-button-group/ToggleButtonGroupContext.js +78 -0
- package/dist-cjs/toggle-button-group/ToggleButtonGroupContext.js.map +1 -1
- package/dist-cjs/tooltip/Tooltip.js +75 -1
- package/dist-cjs/tooltip/Tooltip.js.map +1 -1
- package/dist-cjs/tooltip/TooltipBase.js +75 -2
- package/dist-cjs/tooltip/TooltipBase.js.map +1 -1
- package/dist-cjs/tooltip/useAriaAnnounce.js +77 -0
- package/dist-cjs/tooltip/useAriaAnnounce.js.map +1 -1
- package/dist-cjs/tooltip/useTooltip.js +78 -0
- package/dist-cjs/tooltip/useTooltip.js.map +1 -1
- package/dist-cjs/utils/ownerWindow.js.map +1 -1
- package/dist-cjs/utils/useEventCallback.js +20 -0
- package/dist-cjs/utils/useEventCallback.js.map +1 -0
- package/dist-cjs/utils/useResizeObserver.js +29 -0
- package/dist-cjs/utils/useResizeObserver.js.map +1 -0
- package/dist-cjs/utils/useValueEffect.js +124 -0
- package/dist-cjs/utils/useValueEffect.js.map +1 -0
- package/dist-cjs/viewport/ViewportProvider.js +78 -0
- package/dist-cjs/viewport/ViewportProvider.js.map +1 -1
- package/dist-es/accordion/Accordion.js +75 -0
- package/dist-es/accordion/Accordion.js.map +1 -1
- package/dist-es/accordion/AccordionContext.js +79 -0
- package/dist-es/accordion/AccordionContext.js.map +1 -1
- package/dist-es/accordion/AccordionGroup.js +76 -1
- package/dist-es/accordion/AccordionGroup.js.map +1 -1
- package/dist-es/accordion/AccordionHeader.js +73 -0
- package/dist-es/accordion/AccordionHeader.js.map +1 -1
- package/dist-es/accordion/AccordionPanel.js +75 -0
- package/dist-es/accordion/AccordionPanel.js.map +1 -1
- package/dist-es/aria-announcer/useAriaAnnouncer.js +78 -0
- package/dist-es/aria-announcer/useAriaAnnouncer.js.map +1 -1
- package/dist-es/avatar/Avatar.js +74 -0
- package/dist-es/avatar/Avatar.js.map +1 -1
- package/dist-es/avatar/useAvatarImage.js +79 -0
- package/dist-es/avatar/useAvatarImage.js.map +1 -1
- package/dist-es/badge/Badge.js +75 -0
- package/dist-es/badge/Badge.js.map +1 -1
- package/dist-es/banner/Banner.js +76 -2
- package/dist-es/banner/Banner.js.map +1 -1
- package/dist-es/banner/BannerActions.js +76 -1
- package/dist-es/banner/BannerActions.js.map +1 -1
- package/dist-es/banner/BannerContent.js +76 -1
- package/dist-es/banner/BannerContent.js.map +1 -1
- package/dist-es/border-item/BorderItem.js +75 -1
- package/dist-es/border-item/BorderItem.js.map +1 -1
- package/dist-es/border-layout/BorderLayout.js +76 -0
- package/dist-es/border-layout/BorderLayout.js.map +1 -1
- package/dist-es/button/Button.js +76 -1
- package/dist-es/button/Button.js.map +1 -1
- package/dist-es/card/Card.js +75 -0
- package/dist-es/card/Card.js.map +1 -1
- package/dist-es/card/InteractableCard.js +75 -0
- package/dist-es/card/InteractableCard.js.map +1 -1
- package/dist-es/checkbox/Checkbox.js +73 -0
- package/dist-es/checkbox/Checkbox.js.map +1 -1
- package/dist-es/checkbox/CheckboxGroup.js +74 -0
- package/dist-es/checkbox/CheckboxGroup.js.map +1 -1
- package/dist-es/checkbox/CheckboxIcon.js +75 -0
- package/dist-es/checkbox/CheckboxIcon.js.map +1 -1
- package/dist-es/checkbox/internal/CheckboxGroupContext.js +79 -0
- package/dist-es/checkbox/internal/CheckboxGroupContext.js.map +1 -1
- package/dist-es/combo-box/ComboBox.css.js +4 -0
- package/dist-es/combo-box/ComboBox.css.js.map +1 -0
- package/dist-es/combo-box/ComboBox.js +439 -0
- package/dist-es/combo-box/ComboBox.js.map +1 -0
- package/dist-es/combo-box/useComboBox.js +149 -0
- package/dist-es/combo-box/useComboBox.js.map +1 -0
- package/dist-es/dialog/Dialog.js +77 -3
- package/dist-es/dialog/Dialog.js.map +1 -1
- package/dist-es/dialog/DialogActions.js +76 -1
- package/dist-es/dialog/DialogActions.js.map +1 -1
- package/dist-es/dialog/DialogCloseButton.js +74 -1
- package/dist-es/dialog/DialogCloseButton.js.map +1 -1
- package/dist-es/dialog/DialogContent.js +76 -1
- package/dist-es/dialog/DialogContent.js.map +1 -1
- package/dist-es/dialog/DialogHeader.js +71 -3
- package/dist-es/dialog/DialogHeader.js.map +1 -1
- package/dist-es/drawer/Drawer.js +75 -2
- package/dist-es/drawer/Drawer.js.map +1 -1
- package/dist-es/drawer/DrawerCloseButton.js +74 -1
- package/dist-es/drawer/DrawerCloseButton.js.map +1 -1
- package/dist-es/dropdown/Dropdown.css.js +4 -0
- package/dist-es/dropdown/Dropdown.css.js.map +1 -0
- package/dist-es/dropdown/Dropdown.js +408 -0
- package/dist-es/dropdown/Dropdown.js.map +1 -0
- package/dist-es/file-drop-zone/FileDropZone.js +75 -0
- package/dist-es/file-drop-zone/FileDropZone.js.map +1 -1
- package/dist-es/file-drop-zone/FileDropZoneTrigger.js +76 -0
- package/dist-es/file-drop-zone/FileDropZoneTrigger.js.map +1 -1
- package/dist-es/flex-item/FlexItem.js +79 -2
- package/dist-es/flex-item/FlexItem.js.map +1 -1
- package/dist-es/flex-layout/FlexLayout.js +79 -2
- package/dist-es/flex-layout/FlexLayout.js.map +1 -1
- package/dist-es/form-field/FormField.js +74 -0
- package/dist-es/form-field/FormField.js.map +1 -1
- package/dist-es/form-field/FormFieldHelperText.js +70 -2
- package/dist-es/form-field/FormFieldHelperText.js.map +1 -1
- package/dist-es/form-field/FormFieldLabel.js +69 -0
- package/dist-es/form-field/FormFieldLabel.js.map +1 -1
- package/dist-es/form-field-context/FormFieldContext.js +78 -0
- package/dist-es/form-field-context/FormFieldContext.js.map +1 -1
- package/dist-es/grid-item/GridItem.js +79 -2
- package/dist-es/grid-item/GridItem.js.map +1 -1
- package/dist-es/grid-layout/GridLayout.js +79 -2
- package/dist-es/grid-layout/GridLayout.js.map +1 -1
- package/dist-es/index.js +8 -0
- package/dist-es/index.js.map +1 -1
- package/dist-es/input/Input.js +73 -0
- package/dist-es/input/Input.js.map +1 -1
- package/dist-es/link/Link.js +70 -2
- package/dist-es/link/Link.js.map +1 -1
- package/dist-es/link-card/LinkCard.js +75 -0
- package/dist-es/link-card/LinkCard.js.map +1 -1
- package/dist-es/list-control/ListControlContext.js +116 -0
- package/dist-es/list-control/ListControlContext.js.map +1 -0
- package/dist-es/list-control/ListControlState.js +271 -0
- package/dist-es/list-control/ListControlState.js.map +1 -0
- package/dist-es/multiline-input/MultilineInput.js +73 -0
- package/dist-es/multiline-input/MultilineInput.js.map +1 -1
- package/dist-es/navigation-item/NavigationItem.js +77 -2
- package/dist-es/navigation-item/NavigationItem.js.map +1 -1
- package/dist-es/option/Option.css.js +4 -0
- package/dist-es/option/Option.css.js.map +1 -0
- package/dist-es/option/Option.js +174 -0
- package/dist-es/option/Option.js.map +1 -0
- package/dist-es/option/OptionGroup.css.js +4 -0
- package/dist-es/option/OptionGroup.css.js.map +1 -0
- package/dist-es/option/OptionGroup.js +119 -0
- package/dist-es/option/OptionGroup.js.map +1 -0
- package/dist-es/option/OptionList.css.js +4 -0
- package/dist-es/option/OptionList.css.js.map +1 -0
- package/dist-es/option/OptionList.js +114 -0
- package/dist-es/option/OptionList.js.map +1 -0
- package/dist-es/option/OptionListBase.js +109 -0
- package/dist-es/option/OptionListBase.js.map +1 -0
- package/dist-es/pagination/CompactInput.js +76 -2
- package/dist-es/pagination/CompactInput.js.map +1 -1
- package/dist-es/pagination/CompactPaginator.js +69 -2
- package/dist-es/pagination/CompactPaginator.js.map +1 -1
- package/dist-es/pagination/GoToInput.js +68 -3
- package/dist-es/pagination/GoToInput.js.map +1 -1
- package/dist-es/pagination/PageButton.js +77 -2
- package/dist-es/pagination/PageButton.js.map +1 -1
- package/dist-es/pagination/PageRanges.js +78 -2
- package/dist-es/pagination/PageRanges.js.map +1 -1
- package/dist-es/pagination/Pagination.js +76 -2
- package/dist-es/pagination/Pagination.js.map +1 -1
- package/dist-es/pagination/Paginator.js +75 -2
- package/dist-es/pagination/Paginator.js.map +1 -1
- package/dist-es/panel/Panel.js +77 -2
- package/dist-es/panel/Panel.js.map +1 -1
- package/dist-es/pill/Pill.js +74 -0
- package/dist-es/pill/Pill.js.map +1 -1
- package/dist-es/pill-input/PillInput.css.js +4 -0
- package/dist-es/pill-input/PillInput.css.js.map +1 -0
- package/dist-es/pill-input/PillInput.js +334 -0
- package/dist-es/pill-input/PillInput.js.map +1 -0
- package/dist-es/pill-input/useTruncatePills.js +79 -0
- package/dist-es/pill-input/useTruncatePills.js.map +1 -0
- package/dist-es/progress/CircularProgress/CircularProgress.css.js +1 -1
- package/dist-es/progress/CircularProgress/CircularProgress.js +138 -14
- package/dist-es/progress/CircularProgress/CircularProgress.js.map +1 -1
- package/dist-es/progress/LinearProgress/LinearProgress.css.js +1 -1
- package/dist-es/progress/LinearProgress/LinearProgress.js +89 -8
- package/dist-es/progress/LinearProgress/LinearProgress.js.map +1 -1
- package/dist-es/radio-button/RadioButton.js +78 -4
- package/dist-es/radio-button/RadioButton.js.map +1 -1
- package/dist-es/radio-button/RadioButtonGroup.js +77 -3
- package/dist-es/radio-button/RadioButtonGroup.js.map +1 -1
- package/dist-es/radio-button/RadioButtonIcon.js +76 -0
- package/dist-es/radio-button/RadioButtonIcon.js.map +1 -1
- package/dist-es/radio-button/internal/RadioGroupContext.js +79 -0
- package/dist-es/radio-button/internal/RadioGroupContext.js.map +1 -1
- package/dist-es/salt-provider/SaltProvider.js +78 -3
- package/dist-es/salt-provider/SaltProvider.js.map +1 -1
- package/dist-es/scrim/Scrim.js +76 -1
- package/dist-es/scrim/Scrim.js.map +1 -1
- package/dist-es/spinner/Spinner.js +76 -2
- package/dist-es/spinner/Spinner.js.map +1 -1
- package/dist-es/spinner/svgSpinners/SpinnerSVG.js +78 -0
- package/dist-es/spinner/svgSpinners/SpinnerSVG.js.map +1 -1
- package/dist-es/split-layout/SplitLayout.js +76 -2
- package/dist-es/split-layout/SplitLayout.js.map +1 -1
- package/dist-es/stack-layout/StackLayout.js +78 -2
- package/dist-es/stack-layout/StackLayout.js.map +1 -1
- package/dist-es/status-adornment/StatusAdornment.js +75 -0
- package/dist-es/status-adornment/StatusAdornment.js.map +1 -1
- package/dist-es/status-indicator/StatusIndicator.js +76 -2
- package/dist-es/status-indicator/StatusIndicator.js.map +1 -1
- package/dist-es/switch/Switch.js +75 -2
- package/dist-es/switch/Switch.js.map +1 -1
- package/dist-es/text/Text.js +77 -2
- package/dist-es/text/Text.js.map +1 -1
- package/dist-es/toast/Toast.js +74 -0
- package/dist-es/toast/Toast.js.map +1 -1
- package/dist-es/toast/ToastContent.js +75 -0
- package/dist-es/toast/ToastContent.js.map +1 -1
- package/dist-es/toggle-button/ToggleButton.js +73 -0
- package/dist-es/toggle-button/ToggleButton.js.map +1 -1
- package/dist-es/toggle-button-group/ToggleButtonGroup.js +74 -0
- package/dist-es/toggle-button-group/ToggleButtonGroup.js.map +1 -1
- package/dist-es/toggle-button-group/ToggleButtonGroupContext.js +78 -0
- package/dist-es/toggle-button-group/ToggleButtonGroupContext.js.map +1 -1
- package/dist-es/tooltip/Tooltip.js +75 -1
- package/dist-es/tooltip/Tooltip.js.map +1 -1
- package/dist-es/tooltip/TooltipBase.js +75 -2
- package/dist-es/tooltip/TooltipBase.js.map +1 -1
- package/dist-es/tooltip/useAriaAnnounce.js +77 -0
- package/dist-es/tooltip/useAriaAnnounce.js.map +1 -1
- package/dist-es/tooltip/useTooltip.js +78 -0
- package/dist-es/tooltip/useTooltip.js.map +1 -1
- package/dist-es/utils/ownerWindow.js.map +1 -1
- package/dist-es/utils/useEventCallback.js +16 -0
- package/dist-es/utils/useEventCallback.js.map +1 -0
- package/dist-es/utils/useResizeObserver.js +25 -0
- package/dist-es/utils/useResizeObserver.js.map +1 -0
- package/dist-es/utils/useValueEffect.js +120 -0
- package/dist-es/utils/useValueEffect.js.map +1 -0
- package/dist-es/viewport/ViewportProvider.js +78 -0
- package/dist-es/viewport/ViewportProvider.js.map +1 -1
- package/dist-types/combo-box/ComboBox.d.ts +17 -0
- package/dist-types/combo-box/index.d.ts +1 -0
- package/dist-types/combo-box/useComboBox.d.ts +30 -0
- package/dist-types/dialog/DialogHeader.d.ts +2 -4
- package/dist-types/dropdown/Dropdown.d.ts +99 -0
- package/dist-types/dropdown/index.d.ts +1 -0
- package/dist-types/index.d.ts +4 -0
- package/dist-types/list-control/ListControlContext.d.ts +21 -0
- package/dist-types/list-control/ListControlState.d.ts +70 -0
- package/dist-types/list-control/index.d.ts +1 -0
- package/dist-types/option/Option.d.ts +16 -0
- package/dist-types/option/OptionGroup.d.ts +12 -0
- package/dist-types/option/OptionList.d.ts +5 -0
- package/dist-types/option/OptionListBase.d.ts +4 -0
- package/dist-types/option/index.d.ts +2 -0
- package/dist-types/pill-input/PillInput.d.ts +48 -0
- package/dist-types/pill-input/index.d.ts +1 -0
- package/dist-types/pill-input/useTruncatePills.d.ts +8 -0
- package/dist-types/progress/CircularProgress/CircularProgress.d.ts +5 -0
- package/dist-types/progress/LinearProgress/LinearProgress.d.ts +5 -0
- package/dist-types/utils/index.d.ts +3 -0
- package/dist-types/utils/ownerWindow.d.ts +1 -1
- package/dist-types/utils/useEventCallback.d.ts +4 -0
- package/dist-types/utils/useResizeObserver.d.ts +6 -0
- package/dist-types/utils/useValueEffect.d.ts +4 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTooltip.js","sources":["../src/tooltip/useTooltip.ts"],"sourcesContent":["import {\n arrow,\n flip,\n offset,\n safePolygon,\n shift,\n useDismiss,\n useFocus,\n useHover,\n useInteractions,\n useRole,\n limitShift,\n} from \"@floating-ui/react\";\nimport { HTMLProps, useRef } from \"react\";\nimport { useControlled, UseFloatingUIProps, useFloatingUI } from \"../utils\";\nimport { useAriaAnnounce } from \"./useAriaAnnounce\";\n\nexport interface UseTooltipProps\n extends Partial<\n Pick<UseFloatingUIProps, \"onOpenChange\" | \"open\" | \"placement\">\n > {\n /**\n * Do not respond to focus events.\n */\n disableFocusListener?: boolean;\n /**\n * Do not respond to hover events.\n */\n disableHoverListener?: boolean;\n /**\n * The number of milliseconds to wait before showing the tooltip.\n * This prop won't impact the enter touch delay (`enterTouchDelay`).\n */\n enterDelay?: number;\n /**\n * The number of milliseconds to wait before hiding the tooltip.\n * This prop won't impact the leave touch delay (`leaveTouchDelay`).\n */\n leaveDelay?: number;\n}\n\nexport function useTooltip(props?: UseTooltipProps) {\n const {\n enterDelay,\n leaveDelay,\n open: openProp,\n onOpenChange,\n placement: placementProp,\n disableHoverListener,\n disableFocusListener,\n } = props ?? {};\n\n const arrowRef = useRef<SVGSVGElement | null>(null);\n\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: false,\n name: \"Tooltip\",\n state: \"open\",\n });\n const handleOpenChange = (open: boolean) => {\n setOpen(open);\n onOpenChange?.(open);\n };\n\n const { floating, reference, x, y, strategy, placement, context, elements } =\n useFloatingUI({\n open,\n onOpenChange: handleOpenChange,\n placement: placementProp,\n middleware: [\n offset(8),\n shift({ limiter: limitShift() }),\n flip({\n fallbackAxisSideDirection: \"end\",\n fallbackStrategy: \"initialPlacement\",\n }),\n arrow({ element: arrowRef }),\n ],\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useHover(context, {\n delay: {\n open: enterDelay,\n close: leaveDelay,\n },\n enabled: !disableHoverListener,\n handleClose: safePolygon(),\n }),\n useFocus(context, { enabled: !disableFocusListener }),\n useRole(context, { role: \"tooltip\" }),\n useDismiss(context),\n useAriaAnnounce(context, {\n delay: {\n open: enterDelay,\n close: leaveDelay,\n },\n }),\n ]);\n\n const arrowProps = {\n ref: arrowRef,\n context,\n };\n\n const getTooltipProps = (): HTMLProps<HTMLDivElement> => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- tabIndex raises false positives because it is set to \"-1\".\n const { tabIndex, ...tooltipProps } = getFloatingProps({\n // @ts-expect-error - `data-*` props need extra typing when not used on a DOM element.\n \"data-placement\": placement,\n ref: floating,\n });\n\n return tooltipProps;\n };\n\n const getTriggerProps = () =>\n getReferenceProps({\n ref: reference,\n });\n\n const getTooltipPosition = () => ({\n top: y ?? 0,\n left: x ?? 0,\n position: strategy,\n width: elements.floating?.offsetWidth,\n height: elements.floating?.offsetHeight,\n });\n\n return {\n arrowProps,\n open,\n floating,\n reference,\n getTooltipProps,\n getTriggerProps,\n getTooltipPosition,\n };\n}\n"],"names":["open"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useTooltip.js","sources":["../src/tooltip/useTooltip.ts"],"sourcesContent":["import {\n arrow,\n flip,\n offset,\n safePolygon,\n shift,\n useDismiss,\n useFocus,\n useHover,\n useInteractions,\n useRole,\n limitShift,\n} from \"@floating-ui/react\";\nimport { HTMLProps, useRef } from \"react\";\nimport { useControlled, UseFloatingUIProps, useFloatingUI } from \"../utils\";\nimport { useAriaAnnounce } from \"./useAriaAnnounce\";\n\nexport interface UseTooltipProps\n extends Partial<\n Pick<UseFloatingUIProps, \"onOpenChange\" | \"open\" | \"placement\">\n > {\n /**\n * Do not respond to focus events.\n */\n disableFocusListener?: boolean;\n /**\n * Do not respond to hover events.\n */\n disableHoverListener?: boolean;\n /**\n * The number of milliseconds to wait before showing the tooltip.\n * This prop won't impact the enter touch delay (`enterTouchDelay`).\n */\n enterDelay?: number;\n /**\n * The number of milliseconds to wait before hiding the tooltip.\n * This prop won't impact the leave touch delay (`leaveTouchDelay`).\n */\n leaveDelay?: number;\n}\n\nexport function useTooltip(props?: UseTooltipProps) {\n const {\n enterDelay,\n leaveDelay,\n open: openProp,\n onOpenChange,\n placement: placementProp,\n disableHoverListener,\n disableFocusListener,\n } = props ?? {};\n\n const arrowRef = useRef<SVGSVGElement | null>(null);\n\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: false,\n name: \"Tooltip\",\n state: \"open\",\n });\n const handleOpenChange = (open: boolean) => {\n setOpen(open);\n onOpenChange?.(open);\n };\n\n const { floating, reference, x, y, strategy, placement, context, elements } =\n useFloatingUI({\n open,\n onOpenChange: handleOpenChange,\n placement: placementProp,\n middleware: [\n offset(8),\n shift({ limiter: limitShift() }),\n flip({\n fallbackAxisSideDirection: \"end\",\n fallbackStrategy: \"initialPlacement\",\n }),\n arrow({ element: arrowRef }),\n ],\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useHover(context, {\n delay: {\n open: enterDelay,\n close: leaveDelay,\n },\n enabled: !disableHoverListener,\n handleClose: safePolygon(),\n }),\n useFocus(context, { enabled: !disableFocusListener }),\n useRole(context, { role: \"tooltip\" }),\n useDismiss(context),\n useAriaAnnounce(context, {\n delay: {\n open: enterDelay,\n close: leaveDelay,\n },\n }),\n ]);\n\n const arrowProps = {\n ref: arrowRef,\n context,\n };\n\n const getTooltipProps = (): HTMLProps<HTMLDivElement> => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- tabIndex raises false positives because it is set to \"-1\".\n const { tabIndex, ...tooltipProps } = getFloatingProps({\n // @ts-expect-error - `data-*` props need extra typing when not used on a DOM element.\n \"data-placement\": placement,\n ref: floating,\n });\n\n return tooltipProps;\n };\n\n const getTriggerProps = () =>\n getReferenceProps({\n ref: reference,\n });\n\n const getTooltipPosition = () => ({\n top: y ?? 0,\n left: x ?? 0,\n position: strategy,\n width: elements.floating?.offsetWidth,\n height: elements.floating?.offsetHeight,\n });\n\n return {\n arrowProps,\n open,\n floating,\n reference,\n getTooltipProps,\n getTriggerProps,\n getTooltipPosition,\n };\n}\n"],"names":["open"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCO,SAAS,WAAW,KAAyB,EAAA;AAClD,EAAM,MAAA;AAAA,IACJ,UAAA;AAAA,IACA,UAAA;AAAA,IACA,IAAM,EAAA,QAAA;AAAA,IACN,YAAA;AAAA,IACA,SAAW,EAAA,aAAA;AAAA,IACX,oBAAA;AAAA,IACA,oBAAA;AAAA,GACF,GAAI,wBAAS,EAAC,CAAA;AAEd,EAAM,MAAA,QAAA,GAAW,OAA6B,IAAI,CAAA,CAAA;AAElD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,aAAc,CAAA;AAAA,IACpC,UAAY,EAAA,QAAA;AAAA,IACZ,OAAS,EAAA,KAAA;AAAA,IACT,IAAM,EAAA,SAAA;AAAA,IACN,KAAO,EAAA,MAAA;AAAA,GACR,CAAA,CAAA;AACD,EAAM,MAAA,gBAAA,GAAmB,CAACA,KAAkB,KAAA;AAC1C,IAAA,OAAA,CAAQA,KAAI,CAAA,CAAA;AACZ,IAAeA,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,YAAAA,CAAAA,KAAAA,CAAAA,CAAAA;AAAA,GACjB,CAAA;AAEA,EAAM,MAAA,EAAE,QAAU,EAAA,SAAA,EAAW,CAAG,EAAA,CAAA,EAAG,UAAU,SAAW,EAAA,OAAA,EAAS,QAAS,EAAA,GACxE,aAAc,CAAA;AAAA,IACZ,IAAA;AAAA,IACA,YAAc,EAAA,gBAAA;AAAA,IACd,SAAW,EAAA,aAAA;AAAA,IACX,UAAY,EAAA;AAAA,MACV,OAAO,CAAC,CAAA;AAAA,MACR,KAAM,CAAA,EAAE,OAAS,EAAA,UAAA,IAAc,CAAA;AAAA,MAC/B,IAAK,CAAA;AAAA,QACH,yBAA2B,EAAA,KAAA;AAAA,QAC3B,gBAAkB,EAAA,kBAAA;AAAA,OACnB,CAAA;AAAA,MACD,KAAM,CAAA,EAAE,OAAS,EAAA,QAAA,EAAU,CAAA;AAAA,KAC7B;AAAA,GACD,CAAA,CAAA;AAEH,EAAA,MAAM,EAAE,iBAAA,EAAmB,gBAAiB,EAAA,GAAI,eAAgB,CAAA;AAAA,IAC9D,SAAS,OAAS,EAAA;AAAA,MAChB,KAAO,EAAA;AAAA,QACL,IAAM,EAAA,UAAA;AAAA,QACN,KAAO,EAAA,UAAA;AAAA,OACT;AAAA,MACA,SAAS,CAAC,oBAAA;AAAA,MACV,aAAa,WAAY,EAAA;AAAA,KAC1B,CAAA;AAAA,IACD,SAAS,OAAS,EAAA,EAAE,OAAS,EAAA,CAAC,sBAAsB,CAAA;AAAA,IACpD,OAAQ,CAAA,OAAA,EAAS,EAAE,IAAA,EAAM,WAAW,CAAA;AAAA,IACpC,WAAW,OAAO,CAAA;AAAA,IAClB,gBAAgB,OAAS,EAAA;AAAA,MACvB,KAAO,EAAA;AAAA,QACL,IAAM,EAAA,UAAA;AAAA,QACN,KAAO,EAAA,UAAA;AAAA,OACT;AAAA,KACD,CAAA;AAAA,GACF,CAAA,CAAA;AAED,EAAA,MAAM,UAAa,GAAA;AAAA,IACjB,GAAK,EAAA,QAAA;AAAA,IACL,OAAA;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,kBAAkB,MAAiC;AAEvD,IAAA,MAAM,EAAE,QAAA,EAAA,GAAa,YAAa,EAAA,GAAI,gBAAiB,CAAA;AAAA,MAErD,gBAAkB,EAAA,SAAA;AAAA,MAClB,GAAK,EAAA,QAAA;AAAA,KACN,CAAA,CAAA;AAED,IAAO,OAAA,YAAA,CAAA;AAAA,GACT,CAAA;AAEA,EAAM,MAAA,eAAA,GAAkB,MACtB,iBAAkB,CAAA;AAAA,IAChB,GAAK,EAAA,SAAA;AAAA,GACN,CAAA,CAAA;AAEH,EAAA,MAAM,qBAAqB,MAAG;AA1HhC,IAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AA0HoC,IAAA,OAAA;AAAA,MAChC,KAAK,CAAK,IAAA,IAAA,GAAA,CAAA,GAAA,CAAA;AAAA,MACV,MAAM,CAAK,IAAA,IAAA,GAAA,CAAA,GAAA,CAAA;AAAA,MACX,QAAU,EAAA,QAAA;AAAA,MACV,KAAA,EAAA,CAAO,EAAS,GAAA,QAAA,CAAA,QAAA,KAAT,IAAmB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAA;AAAA,MAC1B,MAAA,EAAA,CAAQ,EAAS,GAAA,QAAA,CAAA,QAAA,KAAT,IAAmB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAA;AAAA,KAC7B,CAAA;AAAA,GAAA,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,UAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,eAAA;AAAA,IACA,eAAA;AAAA,IACA,kBAAA;AAAA,GACF,CAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ownerWindow.js","sources":["../src/utils/ownerWindow.ts"],"sourcesContent":["import { ownerDocument } from \"./ownerDocument\";\n\nexport function ownerWindow(node: Node | null | undefined)
|
|
1
|
+
{"version":3,"file":"ownerWindow.js","sources":["../src/utils/ownerWindow.ts"],"sourcesContent":["import { ownerDocument } from \"./ownerDocument\";\n\nexport function ownerWindow(node: Node | null | undefined) {\n const doc = ownerDocument(node);\n return doc.defaultView || window;\n}\n"],"names":[],"mappings":";;AAEO,SAAS,YAAY,IAA+B,EAAA;AACzD,EAAM,MAAA,GAAA,GAAM,cAAc,IAAI,CAAA,CAAA;AAC9B,EAAA,OAAO,IAAI,WAAe,IAAA,MAAA,CAAA;AAC5B;;;;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { useRef, useCallback } from 'react';
|
|
2
|
+
import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.js';
|
|
3
|
+
|
|
4
|
+
function useEventCallback(fn) {
|
|
5
|
+
const ref = useRef(fn);
|
|
6
|
+
useIsomorphicLayoutEffect(() => {
|
|
7
|
+
ref.current = fn;
|
|
8
|
+
});
|
|
9
|
+
return useCallback(
|
|
10
|
+
(...args) => (0, ref.current)(...args),
|
|
11
|
+
[]
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { useEventCallback };
|
|
16
|
+
//# sourceMappingURL=useEventCallback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useEventCallback.js","sources":["../src/utils/useEventCallback.ts"],"sourcesContent":["import { useRef, useCallback } from \"react\";\nimport { useIsomorphicLayoutEffect } from \"./useIsomorphicLayoutEffect\";\n\n/**\n * https://github.com/facebook/react/issues/14099#issuecomment-440013892\n */\nexport function useEventCallback<Args extends unknown[], Return>(\n fn: (...args: Args) => Return\n): (...args: Args) => Return {\n const ref = useRef(fn);\n useIsomorphicLayoutEffect(() => {\n ref.current = fn;\n });\n return useCallback(\n (...args: Args) =>\n // tslint:disable-next-line:ban-comma-operator\n (void 0, ref.current)(...args),\n []\n );\n}\n"],"names":[],"mappings":";;;AAMO,SAAS,iBACd,EAC2B,EAAA;AAC3B,EAAM,MAAA,GAAA,GAAM,OAAO,EAAE,CAAA,CAAA;AACrB,EAAA,yBAAA,CAA0B,MAAM;AAC9B,IAAA,GAAA,CAAI,OAAU,GAAA,EAAA,CAAA;AAAA,GACf,CAAA,CAAA;AACD,EAAO,OAAA,WAAA;AAAA,IACL,IAAI,IAED,KAAA,IAAQ,GAAI,CAAA,OAAA,EAAS,GAAG,IAAI,CAAA;AAAA,IAC/B,EAAC;AAAA,GACH,CAAA;AACF;;;;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
import { ownerWindow } from './ownerWindow.js';
|
|
3
|
+
|
|
4
|
+
function useResizeObserver({ ref, onResize }) {
|
|
5
|
+
useEffect(() => {
|
|
6
|
+
const element = ref == null ? void 0 : ref.current;
|
|
7
|
+
if (!element)
|
|
8
|
+
return;
|
|
9
|
+
const win = ownerWindow(element);
|
|
10
|
+
const resizeObserver = new win.ResizeObserver((entries) => {
|
|
11
|
+
if (entries.length === 0)
|
|
12
|
+
return;
|
|
13
|
+
onResize();
|
|
14
|
+
});
|
|
15
|
+
resizeObserver.observe(element);
|
|
16
|
+
return () => {
|
|
17
|
+
if (element) {
|
|
18
|
+
resizeObserver.unobserve(element);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
}, [ref, onResize]);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { useResizeObserver };
|
|
25
|
+
//# sourceMappingURL=useResizeObserver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useResizeObserver.js","sources":["../src/utils/useResizeObserver.ts"],"sourcesContent":["import { useEffect, RefObject } from \"react\";\nimport { ownerWindow } from \"./ownerWindow\";\n\nexport interface UseResizeObserverProps {\n ref: RefObject<HTMLElement>;\n onResize: () => void;\n}\n\nexport function useResizeObserver({ ref, onResize }: UseResizeObserverProps) {\n useEffect(() => {\n const element = ref?.current;\n if (!element) return;\n\n const win = ownerWindow(element);\n\n const resizeObserver = new win.ResizeObserver((entries) => {\n if (entries.length === 0) return;\n\n onResize();\n });\n resizeObserver.observe(element);\n\n return () => {\n if (element) {\n resizeObserver.unobserve(element);\n }\n };\n }, [ref, onResize]);\n}\n"],"names":[],"mappings":";;;AAQO,SAAS,iBAAkB,CAAA,EAAE,GAAK,EAAA,QAAA,EAAoC,EAAA;AAC3E,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,UAAU,GAAK,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAA,OAAA,CAAA;AACrB,IAAA,IAAI,CAAC,OAAA;AAAS,MAAA,OAAA;AAEd,IAAM,MAAA,GAAA,GAAM,YAAY,OAAO,CAAA,CAAA;AAE/B,IAAA,MAAM,cAAiB,GAAA,IAAI,GAAI,CAAA,cAAA,CAAe,CAAC,OAAY,KAAA;AACzD,MAAA,IAAI,QAAQ,MAAW,KAAA,CAAA;AAAG,QAAA,OAAA;AAE1B,MAAS,QAAA,EAAA,CAAA;AAAA,KACV,CAAA,CAAA;AACD,IAAA,cAAA,CAAe,QAAQ,OAAO,CAAA,CAAA;AAE9B,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,OAAS,EAAA;AACX,QAAA,cAAA,CAAe,UAAU,OAAO,CAAA,CAAA;AAAA,OAClC;AAAA,KACF,CAAA;AAAA,GACC,EAAA,CAAC,GAAK,EAAA,QAAQ,CAAC,CAAA,CAAA;AACpB;;;;"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { useState, useRef } from 'react';
|
|
2
|
+
import '../accordion/AccordionGroup.js';
|
|
3
|
+
import '../accordion/AccordionPanel.js';
|
|
4
|
+
import '../accordion/Accordion.js';
|
|
5
|
+
import '../accordion/AccordionHeader.js';
|
|
6
|
+
import '../aria-announcer/AriaAnnouncerContext.js';
|
|
7
|
+
import 'react/jsx-runtime';
|
|
8
|
+
import './useFloatingUI/useFloatingUI.js';
|
|
9
|
+
import './useId.js';
|
|
10
|
+
import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.js';
|
|
11
|
+
import '../salt-provider/SaltProvider.js';
|
|
12
|
+
import '../viewport/ViewportProvider.js';
|
|
13
|
+
import 'clsx';
|
|
14
|
+
import { useEventCallback } from './useEventCallback.js';
|
|
15
|
+
import '../avatar/Avatar.js';
|
|
16
|
+
import '../badge/Badge.js';
|
|
17
|
+
import '../banner/Banner.js';
|
|
18
|
+
import '../banner/BannerActions.js';
|
|
19
|
+
import '../banner/BannerContent.js';
|
|
20
|
+
import '../border-item/BorderItem.js';
|
|
21
|
+
import '../border-layout/BorderLayout.js';
|
|
22
|
+
import '../button/Button.js';
|
|
23
|
+
import '../card/Card.js';
|
|
24
|
+
import '../card/InteractableCard.js';
|
|
25
|
+
import '../checkbox/Checkbox.js';
|
|
26
|
+
import '../checkbox/CheckboxGroup.js';
|
|
27
|
+
import '@salt-ds/styles';
|
|
28
|
+
import '@salt-ds/window';
|
|
29
|
+
import '@salt-ds/icons';
|
|
30
|
+
import '../combo-box/ComboBox.js';
|
|
31
|
+
import '../dialog/Dialog.js';
|
|
32
|
+
import '../status-indicator/StatusIndicator.js';
|
|
33
|
+
import '../text/Text.js';
|
|
34
|
+
import '../text/Display.js';
|
|
35
|
+
import '../text/Headings.js';
|
|
36
|
+
import '../text/Label.js';
|
|
37
|
+
import '../text/TextNotation.js';
|
|
38
|
+
import '../text/TextAction.js';
|
|
39
|
+
import '../dialog/DialogContext.js';
|
|
40
|
+
import '../dialog/DialogActions.js';
|
|
41
|
+
import '../dialog/DialogContent.js';
|
|
42
|
+
import '../dialog/DialogCloseButton.js';
|
|
43
|
+
import '../drawer/Drawer.js';
|
|
44
|
+
import '../drawer/DrawerCloseButton.js';
|
|
45
|
+
import '../dropdown/Dropdown.js';
|
|
46
|
+
import '../file-drop-zone/FileDropZone.js';
|
|
47
|
+
import '../file-drop-zone/FileDropZoneIcon.js';
|
|
48
|
+
import '../file-drop-zone/FileDropZoneTrigger.js';
|
|
49
|
+
import '../flex-item/FlexItem.js';
|
|
50
|
+
import '../flex-layout/FlexLayout.js';
|
|
51
|
+
import '../flow-layout/FlowLayout.js';
|
|
52
|
+
import '../form-field/FormField.js';
|
|
53
|
+
import '../form-field-context/FormFieldContext.js';
|
|
54
|
+
import '../grid-item/GridItem.js';
|
|
55
|
+
import '../grid-layout/GridLayout.js';
|
|
56
|
+
import '../input/Input.js';
|
|
57
|
+
import '../link/Link.js';
|
|
58
|
+
import '../link-card/LinkCard.js';
|
|
59
|
+
import '../list-control/ListControlContext.js';
|
|
60
|
+
import '../multiline-input/MultilineInput.js';
|
|
61
|
+
import '../navigation-item/NavigationItem.js';
|
|
62
|
+
import '../option/Option.js';
|
|
63
|
+
import '../option/OptionGroup.js';
|
|
64
|
+
import '../pagination/Pagination.js';
|
|
65
|
+
import '../pagination/Paginator.js';
|
|
66
|
+
import '../pagination/CompactInput.js';
|
|
67
|
+
import '../pagination/CompactPaginator.js';
|
|
68
|
+
import '../pagination/GoToInput.js';
|
|
69
|
+
import '../panel/Panel.js';
|
|
70
|
+
import '../pill/Pill.js';
|
|
71
|
+
import '../progress/CircularProgress/CircularProgress.js';
|
|
72
|
+
import '../progress/LinearProgress/LinearProgress.js';
|
|
73
|
+
import '../radio-button/RadioButton.js';
|
|
74
|
+
import '../radio-button/RadioButtonGroup.js';
|
|
75
|
+
import '../scrim/Scrim.js';
|
|
76
|
+
import '../spinner/Spinner.js';
|
|
77
|
+
import '../stack-layout/StackLayout.js';
|
|
78
|
+
import '../status-adornment/StatusAdornment.js';
|
|
79
|
+
import '../toast/Toast.js';
|
|
80
|
+
import '../toast/ToastContent.js';
|
|
81
|
+
import '../split-layout/SplitLayout.js';
|
|
82
|
+
import '../switch/Switch.js';
|
|
83
|
+
import '../toggle-button/ToggleButton.js';
|
|
84
|
+
import '../toggle-button-group/ToggleButtonGroup.js';
|
|
85
|
+
import '../toggle-button-group/ToggleButtonGroupContext.js';
|
|
86
|
+
import '../tooltip/Tooltip.js';
|
|
87
|
+
import '@floating-ui/react';
|
|
88
|
+
|
|
89
|
+
function useValueEffect(defaultValue) {
|
|
90
|
+
const [value, setValue] = useState(defaultValue);
|
|
91
|
+
const effect = useRef(null);
|
|
92
|
+
const nextRef = useEventCallback(() => {
|
|
93
|
+
if (!effect.current) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const newValue = effect.current.next();
|
|
97
|
+
if (newValue.done) {
|
|
98
|
+
effect.current = null;
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
if (value === newValue.value) {
|
|
102
|
+
nextRef();
|
|
103
|
+
} else {
|
|
104
|
+
setValue(newValue.value);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
useIsomorphicLayoutEffect(() => {
|
|
108
|
+
if (effect.current) {
|
|
109
|
+
nextRef();
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
const queue = useEventCallback((fn) => {
|
|
113
|
+
effect.current = fn(value);
|
|
114
|
+
nextRef();
|
|
115
|
+
});
|
|
116
|
+
return [value, queue];
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export { useValueEffect };
|
|
120
|
+
//# sourceMappingURL=useValueEffect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useValueEffect.js","sources":["../src/utils/useValueEffect.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { Dispatch, MutableRefObject, useRef, useState } from \"react\";\nimport { useIsomorphicLayoutEffect } from \"../index\";\nimport { useEventCallback } from \"./useEventCallback\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype SetValueAction<S> = (prev: S) => Generator<any, void, unknown>;\n\n// This hook works like `useState`, but when setting the value, you pass a generator function\n// that can yield multiple values. Each yielded value updates the state and waits for the next\n// layout effect, then continues the generator. This allows sequential updates to state to be\n// written linearly.\nexport function useValueEffect<S>(\n defaultValue: S | (() => S)\n): [S, Dispatch<SetValueAction<S>>] {\n const [value, setValue] = useState(defaultValue);\n const effect: MutableRefObject<Generator<S> | null> =\n useRef<Generator<S> | null>(null);\n\n // Store the function in a ref so we can always access the current version\n // which has the proper `value` in scope.\n const nextRef = useEventCallback(() => {\n if (!effect.current) {\n return;\n }\n // Run the generator to the next yield.\n const newValue = effect.current.next();\n\n // If the generator is done, reset the effect.\n if (newValue.done) {\n effect.current = null;\n return;\n }\n\n // If the value is the same as the current value,\n // then continue to the next yield. Otherwise,\n // set the value in state and wait for the next layout effect.\n if (value === newValue.value) {\n nextRef();\n } else {\n setValue(newValue.value);\n }\n });\n\n useIsomorphicLayoutEffect(() => {\n // If there is an effect currently running, continue to the next yield.\n if (effect.current) {\n nextRef();\n }\n });\n\n const queue: Dispatch<SetValueAction<S>> = useEventCallback((fn) => {\n effect.current = fn(value);\n nextRef();\n });\n\n return [value, queue];\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBO,SAAS,eACd,YACkC,EAAA;AAClC,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,YAAY,CAAA,CAAA;AAC/C,EAAM,MAAA,MAAA,GACJ,OAA4B,IAAI,CAAA,CAAA;AAIlC,EAAM,MAAA,OAAA,GAAU,iBAAiB,MAAM;AACrC,IAAI,IAAA,CAAC,OAAO,OAAS,EAAA;AACnB,MAAA,OAAA;AAAA,KACF;AAEA,IAAM,MAAA,QAAA,GAAW,MAAO,CAAA,OAAA,CAAQ,IAAK,EAAA,CAAA;AAGrC,IAAA,IAAI,SAAS,IAAM,EAAA;AACjB,MAAA,MAAA,CAAO,OAAU,GAAA,IAAA,CAAA;AACjB,MAAA,OAAA;AAAA,KACF;AAKA,IAAI,IAAA,KAAA,KAAU,SAAS,KAAO,EAAA;AAC5B,MAAQ,OAAA,EAAA,CAAA;AAAA,KACH,MAAA;AACL,MAAA,QAAA,CAAS,SAAS,KAAK,CAAA,CAAA;AAAA,KACzB;AAAA,GACD,CAAA,CAAA;AAED,EAAA,yBAAA,CAA0B,MAAM;AAE9B,IAAA,IAAI,OAAO,OAAS,EAAA;AAClB,MAAQ,OAAA,EAAA,CAAA;AAAA,KACV;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,KAAA,GAAqC,gBAAiB,CAAA,CAAC,EAAO,KAAA;AAClE,IAAO,MAAA,CAAA,OAAA,GAAU,GAAG,KAAK,CAAA,CAAA;AACzB,IAAQ,OAAA,EAAA,CAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAO,OAAA,CAAC,OAAO,KAAK,CAAA,CAAA;AACtB;;;;"}
|
|
@@ -5,6 +5,84 @@ import '../utils/useId.js';
|
|
|
5
5
|
import { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect.js';
|
|
6
6
|
import '../salt-provider/SaltProvider.js';
|
|
7
7
|
import 'clsx';
|
|
8
|
+
import '../accordion/AccordionGroup.js';
|
|
9
|
+
import '../accordion/AccordionPanel.js';
|
|
10
|
+
import '../accordion/Accordion.js';
|
|
11
|
+
import '../accordion/AccordionHeader.js';
|
|
12
|
+
import '../aria-announcer/AriaAnnouncerContext.js';
|
|
13
|
+
import '../avatar/Avatar.js';
|
|
14
|
+
import '../badge/Badge.js';
|
|
15
|
+
import '../banner/Banner.js';
|
|
16
|
+
import '../banner/BannerActions.js';
|
|
17
|
+
import '../banner/BannerContent.js';
|
|
18
|
+
import '../border-item/BorderItem.js';
|
|
19
|
+
import '../border-layout/BorderLayout.js';
|
|
20
|
+
import '../button/Button.js';
|
|
21
|
+
import '../card/Card.js';
|
|
22
|
+
import '../card/InteractableCard.js';
|
|
23
|
+
import '../checkbox/Checkbox.js';
|
|
24
|
+
import '../checkbox/CheckboxGroup.js';
|
|
25
|
+
import '@salt-ds/styles';
|
|
26
|
+
import '@salt-ds/window';
|
|
27
|
+
import '@salt-ds/icons';
|
|
28
|
+
import '../combo-box/ComboBox.js';
|
|
29
|
+
import '../dialog/Dialog.js';
|
|
30
|
+
import '../status-indicator/StatusIndicator.js';
|
|
31
|
+
import '../text/Text.js';
|
|
32
|
+
import '../text/Display.js';
|
|
33
|
+
import '../text/Headings.js';
|
|
34
|
+
import '../text/Label.js';
|
|
35
|
+
import '../text/TextNotation.js';
|
|
36
|
+
import '../text/TextAction.js';
|
|
37
|
+
import '../dialog/DialogContext.js';
|
|
38
|
+
import '../dialog/DialogActions.js';
|
|
39
|
+
import '../dialog/DialogContent.js';
|
|
40
|
+
import '../dialog/DialogCloseButton.js';
|
|
41
|
+
import '../drawer/Drawer.js';
|
|
42
|
+
import '../drawer/DrawerCloseButton.js';
|
|
43
|
+
import '../dropdown/Dropdown.js';
|
|
44
|
+
import '../file-drop-zone/FileDropZone.js';
|
|
45
|
+
import '../file-drop-zone/FileDropZoneIcon.js';
|
|
46
|
+
import '../file-drop-zone/FileDropZoneTrigger.js';
|
|
47
|
+
import '../flex-item/FlexItem.js';
|
|
48
|
+
import '../flex-layout/FlexLayout.js';
|
|
49
|
+
import '../flow-layout/FlowLayout.js';
|
|
50
|
+
import '../form-field/FormField.js';
|
|
51
|
+
import '../form-field-context/FormFieldContext.js';
|
|
52
|
+
import '../grid-item/GridItem.js';
|
|
53
|
+
import '../grid-layout/GridLayout.js';
|
|
54
|
+
import '../input/Input.js';
|
|
55
|
+
import '../link/Link.js';
|
|
56
|
+
import '../link-card/LinkCard.js';
|
|
57
|
+
import '../list-control/ListControlContext.js';
|
|
58
|
+
import '../multiline-input/MultilineInput.js';
|
|
59
|
+
import '../navigation-item/NavigationItem.js';
|
|
60
|
+
import '../option/Option.js';
|
|
61
|
+
import '../option/OptionGroup.js';
|
|
62
|
+
import '../pagination/Pagination.js';
|
|
63
|
+
import '../pagination/Paginator.js';
|
|
64
|
+
import '../pagination/CompactInput.js';
|
|
65
|
+
import '../pagination/CompactPaginator.js';
|
|
66
|
+
import '../pagination/GoToInput.js';
|
|
67
|
+
import '../panel/Panel.js';
|
|
68
|
+
import '../pill/Pill.js';
|
|
69
|
+
import '../progress/CircularProgress/CircularProgress.js';
|
|
70
|
+
import '../progress/LinearProgress/LinearProgress.js';
|
|
71
|
+
import '../radio-button/RadioButton.js';
|
|
72
|
+
import '../radio-button/RadioButtonGroup.js';
|
|
73
|
+
import '../scrim/Scrim.js';
|
|
74
|
+
import '../spinner/Spinner.js';
|
|
75
|
+
import '../stack-layout/StackLayout.js';
|
|
76
|
+
import '../status-adornment/StatusAdornment.js';
|
|
77
|
+
import '../toast/Toast.js';
|
|
78
|
+
import '../toast/ToastContent.js';
|
|
79
|
+
import '../split-layout/SplitLayout.js';
|
|
80
|
+
import '../switch/Switch.js';
|
|
81
|
+
import '../toggle-button/ToggleButton.js';
|
|
82
|
+
import '../toggle-button-group/ToggleButtonGroup.js';
|
|
83
|
+
import '../toggle-button-group/ToggleButtonGroupContext.js';
|
|
84
|
+
import '../tooltip/Tooltip.js';
|
|
85
|
+
import '@floating-ui/react';
|
|
8
86
|
|
|
9
87
|
const ViewportContext = createContext(null);
|
|
10
88
|
const ViewportProvider = ({ children }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewportProvider.js","sources":["../src/viewport/ViewportProvider.tsx"],"sourcesContent":["import { createContext, useState, useContext, ReactNode } from \"react\";\nimport { useIsomorphicLayoutEffect } from \"../utils\";\n\nconst ViewportContext = createContext<number | null>(null);\n\ntype ViewportProviderProps = {\n children?: ReactNode;\n};\n\nconst ViewportProvider = ({ children }: ViewportProviderProps) => {\n // Get value directly from the ViewportContext so we can detect if the value is null (no inherited ViewportProvider)\n const existingViewport = useContext(ViewportContext);\n const [viewport, setViewport] = useState(existingViewport);\n\n const noExistingViewport = existingViewport === null;\n const viewportValue = existingViewport || viewport || 0;\n\n useIsomorphicLayoutEffect(() => {\n let observer: ResizeObserver | null = null;\n\n if (noExistingViewport) {\n observer = new ResizeObserver(\n (observerEntries: ResizeObserverEntry[]) => {\n setViewport(observerEntries[0].contentRect.width);\n }\n );\n\n observer.observe(document.body);\n setViewport(document.body.getBoundingClientRect().width);\n }\n\n return () => {\n if (observer) {\n observer.disconnect();\n }\n };\n }, [noExistingViewport]);\n\n return (\n <ViewportContext.Provider value={viewportValue}>\n {children}\n </ViewportContext.Provider>\n );\n};\n\nconst useViewport = (): number => {\n const value = useContext(ViewportContext);\n return value === null ? 0 : value;\n};\n\nexport { ViewportProvider, ViewportContext, useViewport };\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ViewportProvider.js","sources":["../src/viewport/ViewportProvider.tsx"],"sourcesContent":["import { createContext, useState, useContext, ReactNode } from \"react\";\nimport { useIsomorphicLayoutEffect } from \"../utils\";\n\nconst ViewportContext = createContext<number | null>(null);\n\ntype ViewportProviderProps = {\n children?: ReactNode;\n};\n\nconst ViewportProvider = ({ children }: ViewportProviderProps) => {\n // Get value directly from the ViewportContext so we can detect if the value is null (no inherited ViewportProvider)\n const existingViewport = useContext(ViewportContext);\n const [viewport, setViewport] = useState(existingViewport);\n\n const noExistingViewport = existingViewport === null;\n const viewportValue = existingViewport || viewport || 0;\n\n useIsomorphicLayoutEffect(() => {\n let observer: ResizeObserver | null = null;\n\n if (noExistingViewport) {\n observer = new ResizeObserver(\n (observerEntries: ResizeObserverEntry[]) => {\n setViewport(observerEntries[0].contentRect.width);\n }\n );\n\n observer.observe(document.body);\n setViewport(document.body.getBoundingClientRect().width);\n }\n\n return () => {\n if (observer) {\n observer.disconnect();\n }\n };\n }, [noExistingViewport]);\n\n return (\n <ViewportContext.Provider value={viewportValue}>\n {children}\n </ViewportContext.Provider>\n );\n};\n\nconst useViewport = (): number => {\n const value = useContext(ViewportContext);\n return value === null ? 0 : value;\n};\n\nexport { ViewportProvider, ViewportContext, useViewport };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGM,MAAA,eAAA,GAAkB,cAA6B,IAAI,EAAA;AAMzD,MAAM,gBAAmB,GAAA,CAAC,EAAE,QAAA,EAAsC,KAAA;AAEhE,EAAM,MAAA,gBAAA,GAAmB,WAAW,eAAe,CAAA,CAAA;AACnD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,gBAAgB,CAAA,CAAA;AAEzD,EAAA,MAAM,qBAAqB,gBAAqB,KAAA,IAAA,CAAA;AAChD,EAAM,MAAA,aAAA,GAAgB,oBAAoB,QAAY,IAAA,CAAA,CAAA;AAEtD,EAAA,yBAAA,CAA0B,MAAM;AAC9B,IAAA,IAAI,QAAkC,GAAA,IAAA,CAAA;AAEtC,IAAA,IAAI,kBAAoB,EAAA;AACtB,MAAA,QAAA,GAAW,IAAI,cAAA;AAAA,QACb,CAAC,eAA2C,KAAA;AAC1C,UAAY,WAAA,CAAA,eAAA,CAAgB,CAAG,CAAA,CAAA,WAAA,CAAY,KAAK,CAAA,CAAA;AAAA,SAClD;AAAA,OACF,CAAA;AAEA,MAAS,QAAA,CAAA,OAAA,CAAQ,SAAS,IAAI,CAAA,CAAA;AAC9B,MAAA,WAAA,CAAY,QAAS,CAAA,IAAA,CAAK,qBAAsB,EAAA,CAAE,KAAK,CAAA,CAAA;AAAA,KACzD;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,QAAU,EAAA;AACZ,QAAA,QAAA,CAAS,UAAW,EAAA,CAAA;AAAA,OACtB;AAAA,KACF,CAAA;AAAA,GACF,EAAG,CAAC,kBAAkB,CAAC,CAAA,CAAA;AAEvB,EACE,uBAAA,GAAA,CAAC,gBAAgB,QAAhB,EAAA;AAAA,IAAyB,KAAO,EAAA,aAAA;AAAA,IAC9B,QAAA;AAAA,GACH,CAAA,CAAA;AAEJ,EAAA;AAEA,MAAM,cAAc,MAAc;AAChC,EAAM,MAAA,KAAA,GAAQ,WAAW,eAAe,CAAA,CAAA;AACxC,EAAO,OAAA,KAAA,KAAU,OAAO,CAAI,GAAA,KAAA,CAAA;AAC9B;;;;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ReactNode, Ref } from "react";
|
|
2
|
+
import { UseComboBoxProps } from "./useComboBox";
|
|
3
|
+
import { PillInputProps } from "../pill-input";
|
|
4
|
+
export declare type ComboBoxProps<Item = string> = {
|
|
5
|
+
/**
|
|
6
|
+
* The options to display in the combo box.
|
|
7
|
+
*/
|
|
8
|
+
children?: ReactNode;
|
|
9
|
+
} & UseComboBoxProps<Item> & PillInputProps;
|
|
10
|
+
export declare const ComboBox: <Item = string>(props: {
|
|
11
|
+
/**
|
|
12
|
+
* The options to display in the combo box.
|
|
13
|
+
*/
|
|
14
|
+
children?: ReactNode;
|
|
15
|
+
} & import("../list-control/ListControlState").ListControlProps<Item> & Pick<Omit<import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref">, "defaultValue" | "value"> & PillInputProps & {
|
|
16
|
+
ref?: Ref<HTMLDivElement> | undefined;
|
|
17
|
+
}) => JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./ComboBox";
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef, SyntheticEvent } from "react";
|
|
2
|
+
import { ListControlProps } from "../list-control/ListControlState";
|
|
3
|
+
import { OptionValue } from "../list-control/ListControlContext";
|
|
4
|
+
export declare type UseComboBoxProps<Item> = ListControlProps<Item> & Pick<ComponentPropsWithoutRef<"input">, "value" | "defaultValue">;
|
|
5
|
+
export declare function useComboBox<Item>(props: UseComboBoxProps<Item>): {
|
|
6
|
+
select: (event: SyntheticEvent, option: OptionValue<Item>) => void;
|
|
7
|
+
valueState: string | number | readonly string[] | undefined;
|
|
8
|
+
setValueState: import("react").Dispatch<import("react").SetStateAction<string | number | readonly string[] | undefined>>;
|
|
9
|
+
multiselect: boolean;
|
|
10
|
+
openState: boolean;
|
|
11
|
+
setOpen: (newOpen: boolean, reason?: import("../list-control/ListControlState").OpenChangeReason | undefined, key?: string | undefined) => void;
|
|
12
|
+
openKey: import("react").MutableRefObject<string | undefined>;
|
|
13
|
+
activeState: OptionValue<Item> | undefined;
|
|
14
|
+
setActive: (option?: OptionValue<Item> | undefined) => void;
|
|
15
|
+
selectedState: Item[];
|
|
16
|
+
setSelectedState: import("react").Dispatch<import("react").SetStateAction<Item[]>>;
|
|
17
|
+
clear: (event: SyntheticEvent<Element, Event>) => void;
|
|
18
|
+
focusVisibleState: boolean;
|
|
19
|
+
setFocusVisibleState: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
20
|
+
focusedState: boolean;
|
|
21
|
+
setFocusedState: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
22
|
+
listRef: import("react").RefObject<HTMLDivElement>;
|
|
23
|
+
options: HTMLElement[];
|
|
24
|
+
register: (optionValue: OptionValue<Item>, element: HTMLElement) => () => void;
|
|
25
|
+
getOptionAtIndex: (index: number) => OptionValue<Item>;
|
|
26
|
+
getIndexOfOption: (option: OptionValue<Item>) => number;
|
|
27
|
+
getOptionsMatching: (predicate: (option: OptionValue<Item>) => boolean) => OptionValue<Item>[];
|
|
28
|
+
getOptionFromSearch: (search: string, startFrom?: OptionValue<Item> | undefined) => OptionValue<Item> | undefined;
|
|
29
|
+
valueToString: (item: Item) => string;
|
|
30
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ReactNode, ComponentPropsWithoutRef } from "react";
|
|
2
2
|
import { ValidationStatus } from "../status-indicator";
|
|
3
|
-
interface
|
|
3
|
+
export interface DialogHeaderProps extends ComponentPropsWithoutRef<"div"> {
|
|
4
4
|
/**
|
|
5
5
|
* The status of the Dialog
|
|
6
6
|
*/
|
|
@@ -16,7 +16,5 @@ interface DialogTitleProps extends ComponentPropsWithoutRef<"div"> {
|
|
|
16
16
|
* Displays the preheader just above the header
|
|
17
17
|
**/
|
|
18
18
|
preheader?: ReactNode;
|
|
19
|
-
className?: string;
|
|
20
19
|
}
|
|
21
|
-
export declare const DialogHeader: ({ className, header, preheader, disableAccent, status: statusProp, ...rest }:
|
|
22
|
-
export {};
|
|
20
|
+
export declare const DialogHeader: ({ className, header, preheader, disableAccent, status: statusProp, ...rest }: DialogHeaderProps) => JSX.Element;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef, ReactNode, Ref } from "react";
|
|
2
|
+
import { ListControlProps } from "../list-control/ListControlState";
|
|
3
|
+
import { ValidationStatus } from "../status-indicator";
|
|
4
|
+
export declare type DropdownProps<Item = string> = {
|
|
5
|
+
/**
|
|
6
|
+
* If `true`, the dropdown will be disabled.
|
|
7
|
+
*/
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* If `true`, the dropdown will be read-only.
|
|
11
|
+
*/
|
|
12
|
+
readOnly?: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* The options to display in the dropdown.
|
|
15
|
+
*/
|
|
16
|
+
children?: ReactNode;
|
|
17
|
+
/**
|
|
18
|
+
* The marker to use in an empty read only dropdown.
|
|
19
|
+
* Use `''` to disable this feature. Defaults to '—'.
|
|
20
|
+
*/
|
|
21
|
+
emptyReadOnlyMarker?: string;
|
|
22
|
+
/**
|
|
23
|
+
* If `true`, the dropdown will be multiselect.
|
|
24
|
+
*/
|
|
25
|
+
multiselect?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* The text shown when the dropdown has no value.
|
|
28
|
+
*/
|
|
29
|
+
placeholder?: string;
|
|
30
|
+
/**
|
|
31
|
+
* If `true`, the dropdown will be required.
|
|
32
|
+
*/
|
|
33
|
+
required?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Start adornment component
|
|
36
|
+
*/
|
|
37
|
+
startAdornment?: ReactNode;
|
|
38
|
+
/**
|
|
39
|
+
* Styling variant. Defaults to "primary".
|
|
40
|
+
*/
|
|
41
|
+
variant?: "primary" | "secondary";
|
|
42
|
+
/**
|
|
43
|
+
* The content of the dropdown shown in the button. The component will be controlled if this prop is provided.
|
|
44
|
+
*/
|
|
45
|
+
value?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Validation status, one of "error" | "warning" | "success".
|
|
48
|
+
*/
|
|
49
|
+
validationStatus?: Exclude<ValidationStatus, "info">;
|
|
50
|
+
} & Omit<ComponentPropsWithoutRef<"button">, "value" | "defaultValue"> & ListControlProps<Item>;
|
|
51
|
+
export declare const Dropdown: <Item = string>(props: {
|
|
52
|
+
/**
|
|
53
|
+
* If `true`, the dropdown will be disabled.
|
|
54
|
+
*/
|
|
55
|
+
disabled?: boolean | undefined;
|
|
56
|
+
/**
|
|
57
|
+
* If `true`, the dropdown will be read-only.
|
|
58
|
+
*/
|
|
59
|
+
readOnly?: boolean | undefined;
|
|
60
|
+
/**
|
|
61
|
+
* The options to display in the dropdown.
|
|
62
|
+
*/
|
|
63
|
+
children?: ReactNode;
|
|
64
|
+
/**
|
|
65
|
+
* The marker to use in an empty read only dropdown.
|
|
66
|
+
* Use `''` to disable this feature. Defaults to '—'.
|
|
67
|
+
*/
|
|
68
|
+
emptyReadOnlyMarker?: string | undefined;
|
|
69
|
+
/**
|
|
70
|
+
* If `true`, the dropdown will be multiselect.
|
|
71
|
+
*/
|
|
72
|
+
multiselect?: boolean | undefined;
|
|
73
|
+
/**
|
|
74
|
+
* The text shown when the dropdown has no value.
|
|
75
|
+
*/
|
|
76
|
+
placeholder?: string | undefined;
|
|
77
|
+
/**
|
|
78
|
+
* If `true`, the dropdown will be required.
|
|
79
|
+
*/
|
|
80
|
+
required?: boolean | undefined;
|
|
81
|
+
/**
|
|
82
|
+
* Start adornment component
|
|
83
|
+
*/
|
|
84
|
+
startAdornment?: ReactNode;
|
|
85
|
+
/**
|
|
86
|
+
* Styling variant. Defaults to "primary".
|
|
87
|
+
*/
|
|
88
|
+
variant?: "primary" | "secondary" | undefined;
|
|
89
|
+
/**
|
|
90
|
+
* The content of the dropdown shown in the button. The component will be controlled if this prop is provided.
|
|
91
|
+
*/
|
|
92
|
+
value?: string | undefined;
|
|
93
|
+
/**
|
|
94
|
+
* Validation status, one of "error" | "warning" | "success".
|
|
95
|
+
*/
|
|
96
|
+
validationStatus?: "error" | "warning" | "success" | undefined;
|
|
97
|
+
} & Omit<Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref">, "defaultValue" | "value"> & ListControlProps<Item> & {
|
|
98
|
+
ref?: Ref<HTMLButtonElement> | undefined;
|
|
99
|
+
}) => JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Dropdown";
|
package/dist-types/index.d.ts
CHANGED
|
@@ -9,8 +9,10 @@ export * from "./breakpoints";
|
|
|
9
9
|
export * from "./button";
|
|
10
10
|
export * from "./card";
|
|
11
11
|
export * from "./checkbox";
|
|
12
|
+
export * from "./combo-box";
|
|
12
13
|
export * from "./dialog";
|
|
13
14
|
export * from "./drawer";
|
|
15
|
+
export * from "./dropdown";
|
|
14
16
|
export * from "./file-drop-zone";
|
|
15
17
|
export * from "./flex-item";
|
|
16
18
|
export * from "./flex-layout";
|
|
@@ -22,8 +24,10 @@ export * from "./grid-layout";
|
|
|
22
24
|
export * from "./input";
|
|
23
25
|
export * from "./link";
|
|
24
26
|
export * from "./link-card";
|
|
27
|
+
export { useListControlContext } from "./list-control";
|
|
25
28
|
export * from "./multiline-input";
|
|
26
29
|
export * from "./navigation-item";
|
|
30
|
+
export * from "./option";
|
|
27
31
|
export * from "./pagination";
|
|
28
32
|
export * from "./panel";
|
|
29
33
|
export * from "./pill";
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { SyntheticEvent } from "react";
|
|
2
|
+
export interface OptionValue<Item> {
|
|
3
|
+
id: string;
|
|
4
|
+
disabled: boolean;
|
|
5
|
+
value: Item;
|
|
6
|
+
}
|
|
7
|
+
export declare type OpenChangeReason = "input" | "manual";
|
|
8
|
+
export interface ListControlContextValue<Item> {
|
|
9
|
+
openState: boolean;
|
|
10
|
+
setOpen: (newOpen: boolean, openChangeReason?: OpenChangeReason) => void;
|
|
11
|
+
register: (optionValue: OptionValue<Item>, element: HTMLElement) => () => void;
|
|
12
|
+
selectedState: unknown[];
|
|
13
|
+
select: (event: SyntheticEvent, option: OptionValue<Item>) => void;
|
|
14
|
+
activeState?: OptionValue<Item>;
|
|
15
|
+
setActive: (option: OptionValue<Item>) => void;
|
|
16
|
+
multiselect: boolean;
|
|
17
|
+
focusVisibleState: boolean;
|
|
18
|
+
valueToString: (item: Item) => string;
|
|
19
|
+
}
|
|
20
|
+
export declare const ListControlContext: import("react").Context<ListControlContextValue<any>>;
|
|
21
|
+
export declare function useListControlContext<Item>(): ListControlContextValue<Item>;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { SyntheticEvent } from "react";
|
|
2
|
+
import { OptionValue } from "./ListControlContext";
|
|
3
|
+
export declare type OpenChangeReason = "input" | "manual";
|
|
4
|
+
export declare type ListControlProps<Item> = {
|
|
5
|
+
/**
|
|
6
|
+
* If true, the control will be disabled.
|
|
7
|
+
*/
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* If true, the control will be read-only.
|
|
11
|
+
*/
|
|
12
|
+
readOnly?: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* If true, the list will be open by default.
|
|
15
|
+
*/
|
|
16
|
+
defaultOpen?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* If true, the list will be open. Useful for controlling the component.
|
|
19
|
+
*/
|
|
20
|
+
open?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Callback fired when the open state changes.
|
|
23
|
+
*/
|
|
24
|
+
onOpenChange?: (newOpen: boolean, reason?: OpenChangeReason) => void;
|
|
25
|
+
/**
|
|
26
|
+
* The default selected options. If this is provided `defaultValue` should be provided as well.
|
|
27
|
+
*/
|
|
28
|
+
defaultSelected?: Item[];
|
|
29
|
+
/**
|
|
30
|
+
* The selected options. The component will be controlled if this prop is provided.
|
|
31
|
+
*/
|
|
32
|
+
selected?: Item[];
|
|
33
|
+
/**
|
|
34
|
+
* Callback fired when the selected options change.
|
|
35
|
+
*/
|
|
36
|
+
onSelectionChange?: (event: SyntheticEvent, newSelected: Item[]) => void;
|
|
37
|
+
/**
|
|
38
|
+
* If true, multiple options can be selected.
|
|
39
|
+
*/
|
|
40
|
+
multiselect?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Callback used to convert an option's `value` to a string. This is needed when the value is different to the display value or the value is not a string.
|
|
43
|
+
*/
|
|
44
|
+
valueToString?: (item: Item) => string;
|
|
45
|
+
};
|
|
46
|
+
export declare function defaultValueToString<Item>(item: Item): string;
|
|
47
|
+
export declare function useListControl<Item>(props: ListControlProps<Item>): {
|
|
48
|
+
multiselect: boolean;
|
|
49
|
+
openState: boolean;
|
|
50
|
+
setOpen: (newOpen: boolean, reason?: OpenChangeReason | undefined, key?: string | undefined) => void;
|
|
51
|
+
openKey: import("react").MutableRefObject<string | undefined>;
|
|
52
|
+
activeState: OptionValue<Item> | undefined;
|
|
53
|
+
setActive: (option?: OptionValue<Item> | undefined) => void;
|
|
54
|
+
selectedState: Item[];
|
|
55
|
+
setSelectedState: import("react").Dispatch<import("react").SetStateAction<Item[]>>;
|
|
56
|
+
select: (event: SyntheticEvent, option: OptionValue<Item>) => void;
|
|
57
|
+
clear: (event: SyntheticEvent) => void;
|
|
58
|
+
focusVisibleState: boolean;
|
|
59
|
+
setFocusVisibleState: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
60
|
+
focusedState: boolean;
|
|
61
|
+
setFocusedState: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
62
|
+
listRef: import("react").RefObject<HTMLDivElement>;
|
|
63
|
+
options: HTMLElement[];
|
|
64
|
+
register: (optionValue: OptionValue<Item>, element: HTMLElement) => () => void;
|
|
65
|
+
getOptionAtIndex: (index: number) => OptionValue<Item>;
|
|
66
|
+
getIndexOfOption: (option: OptionValue<Item>) => number;
|
|
67
|
+
getOptionsMatching: (predicate: (option: OptionValue<Item>) => boolean) => OptionValue<Item>[];
|
|
68
|
+
getOptionFromSearch: (search: string, startFrom?: OptionValue<Item> | undefined) => OptionValue<Item> | undefined;
|
|
69
|
+
valueToString: (item: Item) => string;
|
|
70
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useListControlContext } from "./ListControlContext";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef, ReactNode } from "react";
|
|
2
|
+
export interface OptionProps extends ComponentPropsWithoutRef<"div"> {
|
|
3
|
+
/**
|
|
4
|
+
* If `true`, the option will be disabled.
|
|
5
|
+
*/
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* The value of the option.
|
|
9
|
+
*/
|
|
10
|
+
value: unknown;
|
|
11
|
+
/**
|
|
12
|
+
* The content of the option.
|
|
13
|
+
*/
|
|
14
|
+
children?: ReactNode;
|
|
15
|
+
}
|
|
16
|
+
export declare const Option: import("react").ForwardRefExoticComponent<OptionProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef, ReactNode } from "react";
|
|
2
|
+
export interface OptionGroupProps extends ComponentPropsWithoutRef<"div"> {
|
|
3
|
+
/**
|
|
4
|
+
* The label of the option group.
|
|
5
|
+
*/
|
|
6
|
+
label?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Options to be rendered inside the option group.
|
|
9
|
+
*/
|
|
10
|
+
children?: ReactNode;
|
|
11
|
+
}
|
|
12
|
+
export declare const OptionGroup: import("react").ForwardRefExoticComponent<OptionGroupProps & import("react").RefAttributes<HTMLDivElement>>;
|