@mantine/core 9.2.2 → 9.3.1
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/cjs/components/Accordion/Accordion.cjs +0 -1
- package/cjs/components/Accordion/Accordion.cjs.map +1 -1
- package/cjs/components/Accordion/AccordionChevron.cjs +0 -1
- package/cjs/components/Accordion/AccordionChevron.cjs.map +1 -1
- package/cjs/components/Accordion/AccordionControl/AccordionControl.cjs +0 -1
- package/cjs/components/Accordion/AccordionControl/AccordionControl.cjs.map +1 -1
- package/cjs/components/Accordion/AccordionItem/AccordionItem.cjs +0 -1
- package/cjs/components/Accordion/AccordionItem/AccordionItem.cjs.map +1 -1
- package/cjs/components/Accordion/AccordionPanel/AccordionPanel.cjs +0 -1
- package/cjs/components/Accordion/AccordionPanel/AccordionPanel.cjs.map +1 -1
- package/cjs/components/ActionIcon/ActionIcon.cjs +0 -1
- package/cjs/components/ActionIcon/ActionIcon.cjs.map +1 -1
- package/cjs/components/ActionIcon/ActionIconGroup/ActionIconGroup.cjs +0 -1
- package/cjs/components/ActionIcon/ActionIconGroup/ActionIconGroup.cjs.map +1 -1
- package/cjs/components/ActionIcon/ActionIconGroupSection/ActionIconGroupSection.cjs +0 -1
- package/cjs/components/ActionIcon/ActionIconGroupSection/ActionIconGroupSection.cjs.map +1 -1
- package/cjs/components/Affix/Affix.cjs +0 -1
- package/cjs/components/Affix/Affix.cjs.map +1 -1
- package/cjs/components/Alert/Alert.cjs +0 -1
- package/cjs/components/Alert/Alert.cjs.map +1 -1
- package/cjs/components/AngleSlider/AngleSlider.cjs +0 -1
- package/cjs/components/AngleSlider/AngleSlider.cjs.map +1 -1
- package/cjs/components/AppShell/AppShell.cjs +0 -1
- package/cjs/components/AppShell/AppShell.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellMain/AppShellMain.cjs +0 -1
- package/cjs/components/AppShell/AppShellMain/AppShellMain.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellMediaStyles/AppShellMediaStyles.cjs +0 -1
- package/cjs/components/AppShell/AppShellMediaStyles/AppShellMediaStyles.cjs.map +1 -1
- package/cjs/components/AppShell/AppShellSection/AppShellSection.cjs +0 -1
- package/cjs/components/AppShell/AppShellSection/AppShellSection.cjs.map +1 -1
- package/cjs/components/AppShell/use-resizing/use-resizing.cjs +0 -1
- package/cjs/components/AppShell/use-resizing/use-resizing.cjs.map +1 -1
- package/cjs/components/AspectRatio/AspectRatio.cjs +0 -1
- package/cjs/components/AspectRatio/AspectRatio.cjs.map +1 -1
- package/cjs/components/Autocomplete/Autocomplete.cjs +2 -2
- package/cjs/components/Autocomplete/Autocomplete.cjs.map +1 -1
- package/cjs/components/Avatar/Avatar.cjs +0 -1
- package/cjs/components/Avatar/Avatar.cjs.map +1 -1
- package/cjs/components/Avatar/AvatarGroup/AvatarGroup.cjs +0 -1
- package/cjs/components/Avatar/AvatarGroup/AvatarGroup.cjs.map +1 -1
- package/cjs/components/Avatar/AvatarPlaceholderIcon.cjs +0 -1
- package/cjs/components/Avatar/AvatarPlaceholderIcon.cjs.map +1 -1
- package/cjs/components/BackgroundImage/BackgroundImage.cjs +0 -1
- package/cjs/components/BackgroundImage/BackgroundImage.cjs.map +1 -1
- package/cjs/components/Badge/Badge.cjs +0 -1
- package/cjs/components/Badge/Badge.cjs.map +1 -1
- package/cjs/components/Blockquote/Blockquote.cjs +4 -4
- package/cjs/components/Blockquote/Blockquote.cjs.map +1 -1
- package/cjs/components/Blockquote/Blockquote.module.cjs.map +1 -1
- package/cjs/components/Breadcrumbs/Breadcrumbs.cjs +0 -1
- package/cjs/components/Breadcrumbs/Breadcrumbs.cjs.map +1 -1
- package/cjs/components/Burger/Burger.cjs +0 -1
- package/cjs/components/Burger/Burger.cjs.map +1 -1
- package/cjs/components/Button/Button.cjs +0 -1
- package/cjs/components/Button/Button.cjs.map +1 -1
- package/cjs/components/Button/ButtonGroup/ButtonGroup.cjs +0 -1
- package/cjs/components/Button/ButtonGroup/ButtonGroup.cjs.map +1 -1
- package/cjs/components/Button/ButtonGroupSection/ButtonGroupSection.cjs +0 -1
- package/cjs/components/Button/ButtonGroupSection/ButtonGroupSection.cjs.map +1 -1
- package/cjs/components/Card/Card.cjs +0 -1
- package/cjs/components/Card/Card.cjs.map +1 -1
- package/cjs/components/Card/CardSection/CardSection.cjs +0 -1
- package/cjs/components/Card/CardSection/CardSection.cjs.map +1 -1
- package/cjs/components/Center/Center.cjs +0 -1
- package/cjs/components/Center/Center.cjs.map +1 -1
- package/cjs/components/Checkbox/CheckIcon.cjs +0 -1
- package/cjs/components/Checkbox/CheckIcon.cjs.map +1 -1
- package/cjs/components/Checkbox/Checkbox.cjs +0 -1
- package/cjs/components/Checkbox/Checkbox.cjs.map +1 -1
- package/cjs/components/Checkbox/CheckboxCard/CheckboxCard.cjs +0 -1
- package/cjs/components/Checkbox/CheckboxCard/CheckboxCard.cjs.map +1 -1
- package/cjs/components/Checkbox/CheckboxGroup/CheckboxGroup.cjs +0 -1
- package/cjs/components/Checkbox/CheckboxGroup/CheckboxGroup.cjs.map +1 -1
- package/cjs/components/Checkbox/CheckboxIndicator/CheckboxIndicator.cjs +0 -1
- package/cjs/components/Checkbox/CheckboxIndicator/CheckboxIndicator.cjs.map +1 -1
- package/cjs/components/Chip/Chip.cjs +0 -1
- package/cjs/components/Chip/Chip.cjs.map +1 -1
- package/cjs/components/Chip/ChipGroup/ChipGroup.cjs +0 -1
- package/cjs/components/Chip/ChipGroup/ChipGroup.cjs.map +1 -1
- package/cjs/components/CloseButton/CloseButton.cjs +0 -1
- package/cjs/components/CloseButton/CloseButton.cjs.map +1 -1
- package/cjs/components/Code/Code.cjs +0 -1
- package/cjs/components/Code/Code.cjs.map +1 -1
- package/cjs/components/Collapse/Collapse.cjs +2 -2
- package/cjs/components/Collapse/Collapse.cjs.map +1 -1
- package/cjs/components/ColorInput/ColorInput.cjs +0 -1
- package/cjs/components/ColorInput/ColorInput.cjs.map +1 -1
- package/cjs/components/ColorInput/EyeDropperIcon.cjs +0 -1
- package/cjs/components/ColorInput/EyeDropperIcon.cjs.map +1 -1
- package/cjs/components/ColorPicker/AlphaSlider/AlphaSlider.cjs +0 -1
- package/cjs/components/ColorPicker/AlphaSlider/AlphaSlider.cjs.map +1 -1
- package/cjs/components/ColorPicker/ColorPicker.cjs +0 -1
- package/cjs/components/ColorPicker/ColorPicker.cjs.map +1 -1
- package/cjs/components/ColorPicker/ColorPicker.context.cjs +0 -1
- package/cjs/components/ColorPicker/ColorPicker.context.cjs.map +1 -1
- package/cjs/components/ColorPicker/ColorSlider/ColorSlider.cjs +0 -1
- package/cjs/components/ColorPicker/ColorSlider/ColorSlider.cjs.map +1 -1
- package/cjs/components/ColorPicker/HueSlider/HueSlider.cjs +0 -1
- package/cjs/components/ColorPicker/HueSlider/HueSlider.cjs.map +1 -1
- package/cjs/components/ColorPicker/Saturation/Saturation.cjs +0 -1
- package/cjs/components/ColorPicker/Saturation/Saturation.cjs.map +1 -1
- package/cjs/components/ColorPicker/Swatches/Swatches.cjs +0 -1
- package/cjs/components/ColorPicker/Swatches/Swatches.cjs.map +1 -1
- package/cjs/components/ColorPicker/Thumb/Thumb.cjs +0 -1
- package/cjs/components/ColorPicker/Thumb/Thumb.cjs.map +1 -1
- package/cjs/components/ColorSwatch/ColorSwatch.cjs +0 -1
- package/cjs/components/ColorSwatch/ColorSwatch.cjs.map +1 -1
- package/cjs/components/Combobox/Combobox.cjs +26 -4
- package/cjs/components/Combobox/Combobox.cjs.map +1 -1
- package/cjs/components/Combobox/Combobox.context.cjs.map +1 -1
- package/cjs/components/Combobox/Combobox.module.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxChevron/ComboboxChevron.cjs +0 -1
- package/cjs/components/Combobox/ComboboxChevron/ComboboxChevron.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxClearButton/ComboboxClearButton.cjs +0 -1
- package/cjs/components/Combobox/ComboboxClearButton/ComboboxClearButton.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxDropdown/ComboboxDropdown.cjs +1 -1
- package/cjs/components/Combobox/ComboboxDropdown/ComboboxDropdown.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxDropdownTarget/ComboboxDropdownTarget.cjs +0 -1
- package/cjs/components/Combobox/ComboboxDropdownTarget/ComboboxDropdownTarget.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxEmpty/ComboboxEmpty.cjs +0 -1
- package/cjs/components/Combobox/ComboboxEmpty/ComboboxEmpty.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxEventsTarget/ComboboxEventsTarget.cjs +0 -1
- package/cjs/components/Combobox/ComboboxEventsTarget/ComboboxEventsTarget.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxFooter/ComboboxFooter.cjs +0 -1
- package/cjs/components/Combobox/ComboboxFooter/ComboboxFooter.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxGroup/ComboboxGroup.cjs +0 -1
- package/cjs/components/Combobox/ComboboxGroup/ComboboxGroup.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxHeader/ComboboxHeader.cjs +0 -1
- package/cjs/components/Combobox/ComboboxHeader/ComboboxHeader.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxHiddenInput/ComboboxHiddenInput.cjs +0 -1
- package/cjs/components/Combobox/ComboboxHiddenInput/ComboboxHiddenInput.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxOption/ComboboxOption.cjs +0 -1
- package/cjs/components/Combobox/ComboboxOption/ComboboxOption.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxOptions/ComboboxOptions.cjs +0 -1
- package/cjs/components/Combobox/ComboboxOptions/ComboboxOptions.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxSearch/ComboboxSearch.cjs +0 -1
- package/cjs/components/Combobox/ComboboxSearch/ComboboxSearch.cjs.map +1 -1
- package/cjs/components/Combobox/ComboboxTarget/ComboboxTarget.cjs +0 -1
- package/cjs/components/Combobox/ComboboxTarget/ComboboxTarget.cjs.map +1 -1
- package/cjs/components/Combobox/OptionsDropdown/OptionsDropdown.cjs +4 -2
- package/cjs/components/Combobox/OptionsDropdown/OptionsDropdown.cjs.map +1 -1
- package/cjs/components/Combobox/use-combobox/use-combobox.cjs +0 -1
- package/cjs/components/Combobox/use-combobox/use-combobox.cjs.map +1 -1
- package/cjs/components/Combobox/use-combobox/use-virtualized-combobox.cjs +0 -1
- package/cjs/components/Combobox/use-combobox/use-virtualized-combobox.cjs.map +1 -1
- package/cjs/components/Combobox/use-combobox-target-props/use-combobox-target-props.cjs +0 -1
- package/cjs/components/Combobox/use-combobox-target-props/use-combobox-target-props.cjs.map +1 -1
- package/cjs/components/Combobox/use-pills-reorder/use-pills-reorder.cjs +0 -1
- package/cjs/components/Combobox/use-pills-reorder/use-pills-reorder.cjs.map +1 -1
- package/cjs/components/Container/Container.cjs +0 -1
- package/cjs/components/Container/Container.cjs.map +1 -1
- package/cjs/components/CopyButton/CopyButton.cjs +0 -1
- package/cjs/components/CopyButton/CopyButton.cjs.map +1 -1
- package/cjs/components/Dialog/Dialog.cjs +0 -1
- package/cjs/components/Dialog/Dialog.cjs.map +1 -1
- package/cjs/components/Divider/Divider.cjs +0 -1
- package/cjs/components/Divider/Divider.cjs.map +1 -1
- package/cjs/components/Drawer/Drawer.cjs +0 -1
- package/cjs/components/Drawer/Drawer.cjs.map +1 -1
- package/cjs/components/Drawer/DrawerBody.cjs +0 -1
- package/cjs/components/Drawer/DrawerBody.cjs.map +1 -1
- package/cjs/components/Drawer/DrawerCloseButton.cjs +0 -1
- package/cjs/components/Drawer/DrawerCloseButton.cjs.map +1 -1
- package/cjs/components/Drawer/DrawerContent.cjs +0 -1
- package/cjs/components/Drawer/DrawerContent.cjs.map +1 -1
- package/cjs/components/Drawer/DrawerHeader.cjs +0 -1
- package/cjs/components/Drawer/DrawerHeader.cjs.map +1 -1
- package/cjs/components/Drawer/DrawerOverlay.cjs +0 -1
- package/cjs/components/Drawer/DrawerOverlay.cjs.map +1 -1
- package/cjs/components/Drawer/DrawerRoot.cjs +0 -1
- package/cjs/components/Drawer/DrawerRoot.cjs.map +1 -1
- package/cjs/components/Drawer/DrawerStack.cjs +0 -1
- package/cjs/components/Drawer/DrawerStack.cjs.map +1 -1
- package/cjs/components/Drawer/DrawerTitle.cjs +0 -1
- package/cjs/components/Drawer/DrawerTitle.cjs.map +1 -1
- package/cjs/components/Fieldset/Fieldset.cjs +0 -1
- package/cjs/components/Fieldset/Fieldset.cjs.map +1 -1
- package/cjs/components/FileInput/FileInput.cjs +0 -1
- package/cjs/components/FileInput/FileInput.cjs.map +1 -1
- package/cjs/components/Flex/Flex.cjs +0 -1
- package/cjs/components/Flex/Flex.cjs.map +1 -1
- package/cjs/components/FloatingIndicator/FloatingIndicator.cjs +0 -1
- package/cjs/components/FloatingIndicator/FloatingIndicator.cjs.map +1 -1
- package/cjs/components/FloatingIndicator/use-floating-indicator.cjs +0 -1
- package/cjs/components/FloatingIndicator/use-floating-indicator.cjs.map +1 -1
- package/cjs/components/FloatingWindow/FloatingWindow.cjs +0 -1
- package/cjs/components/FloatingWindow/FloatingWindow.cjs.map +1 -1
- package/cjs/components/FocusTrap/FocusTrap.cjs +0 -1
- package/cjs/components/FocusTrap/FocusTrap.cjs.map +1 -1
- package/cjs/components/Grid/Grid.cjs +0 -1
- package/cjs/components/Grid/Grid.cjs.map +1 -1
- package/cjs/components/Grid/GridCol/GridColVariables.cjs +0 -1
- package/cjs/components/Grid/GridCol/GridColVariables.cjs.map +1 -1
- package/cjs/components/Grid/GridVariables.cjs +0 -1
- package/cjs/components/Grid/GridVariables.cjs.map +1 -1
- package/cjs/components/Group/Group.cjs +0 -1
- package/cjs/components/Group/Group.cjs.map +1 -1
- package/cjs/components/Group/filter-falsy-children/filter-falsy-children.cjs +0 -1
- package/cjs/components/Group/filter-falsy-children/filter-falsy-children.cjs.map +1 -1
- package/cjs/components/Highlight/Highlight.cjs +0 -1
- package/cjs/components/Highlight/Highlight.cjs.map +1 -1
- package/cjs/components/HoverCard/HoverCard.cjs +0 -1
- package/cjs/components/HoverCard/HoverCard.cjs.map +1 -1
- package/cjs/components/HoverCard/HoverCardDropdown/HoverCardDropdown.cjs +0 -1
- package/cjs/components/HoverCard/HoverCardDropdown/HoverCardDropdown.cjs.map +1 -1
- package/cjs/components/HoverCard/HoverCardGroup/HoverCardGroup.cjs +0 -1
- package/cjs/components/HoverCard/HoverCardGroup/HoverCardGroup.cjs.map +1 -1
- package/cjs/components/HoverCard/HoverCardTarget/HoverCardTarget.cjs +0 -1
- package/cjs/components/HoverCard/HoverCardTarget/HoverCardTarget.cjs.map +1 -1
- package/cjs/components/HoverCard/use-hover-card.cjs +0 -1
- package/cjs/components/HoverCard/use-hover-card.cjs.map +1 -1
- package/cjs/components/Image/Image.cjs +0 -1
- package/cjs/components/Image/Image.cjs.map +1 -1
- package/cjs/components/Indicator/Indicator.cjs +0 -1
- package/cjs/components/Indicator/Indicator.cjs.map +1 -1
- package/cjs/components/Input/Input.cjs +11 -3
- package/cjs/components/Input/Input.cjs.map +1 -1
- package/cjs/components/Input/Input.context.cjs +0 -1
- package/cjs/components/Input/Input.context.cjs.map +1 -1
- package/cjs/components/Input/Input.module.cjs +1 -0
- package/cjs/components/Input/Input.module.cjs.map +1 -1
- package/cjs/components/Input/InputClearButton/InputClearButton.cjs +0 -1
- package/cjs/components/Input/InputClearButton/InputClearButton.cjs.map +1 -1
- package/cjs/components/Input/InputClearSection/InputClearSection.cjs +0 -1
- package/cjs/components/Input/InputClearSection/InputClearSection.cjs.map +1 -1
- package/cjs/components/Input/InputDescription/InputDescription.cjs +0 -1
- package/cjs/components/Input/InputDescription/InputDescription.cjs.map +1 -1
- package/cjs/components/Input/InputError/InputError.cjs +0 -1
- package/cjs/components/Input/InputError/InputError.cjs.map +1 -1
- package/cjs/components/Input/InputLabel/InputLabel.cjs +0 -1
- package/cjs/components/Input/InputLabel/InputLabel.cjs.map +1 -1
- package/cjs/components/Input/InputPlaceholder/InputPlaceholder.cjs +0 -1
- package/cjs/components/Input/InputPlaceholder/InputPlaceholder.cjs.map +1 -1
- package/cjs/components/Input/InputWrapper/InputWrapper.cjs +0 -1
- package/cjs/components/Input/InputWrapper/InputWrapper.cjs.map +1 -1
- package/cjs/components/Input/InputWrapper.context.cjs +0 -1
- package/cjs/components/Input/InputWrapper.context.cjs.map +1 -1
- package/cjs/components/InputBase/InputBase.cjs +0 -1
- package/cjs/components/InputBase/InputBase.cjs.map +1 -1
- package/cjs/components/JsonInput/JsonInput.cjs +0 -1
- package/cjs/components/JsonInput/JsonInput.cjs.map +1 -1
- package/cjs/components/Kbd/Kbd.cjs +0 -1
- package/cjs/components/Kbd/Kbd.cjs.map +1 -1
- package/cjs/components/List/List.cjs +0 -1
- package/cjs/components/List/List.cjs.map +1 -1
- package/cjs/components/List/ListItem/ListItem.cjs +0 -1
- package/cjs/components/List/ListItem/ListItem.cjs.map +1 -1
- package/cjs/components/Loader/Loader.cjs +0 -1
- package/cjs/components/Loader/Loader.cjs.map +1 -1
- package/cjs/components/LoadingOverlay/LoadingOverlay.cjs +0 -1
- package/cjs/components/LoadingOverlay/LoadingOverlay.cjs.map +1 -1
- package/cjs/components/Mark/Mark.cjs +0 -1
- package/cjs/components/Mark/Mark.cjs.map +1 -1
- package/cjs/components/Marquee/Marquee.cjs +0 -1
- package/cjs/components/Marquee/Marquee.cjs.map +1 -1
- package/cjs/components/MaskInput/MaskInput.cjs +0 -1
- package/cjs/components/MaskInput/MaskInput.cjs.map +1 -1
- package/cjs/components/MaskInput/use-mask-input-props.cjs +0 -1
- package/cjs/components/MaskInput/use-mask-input-props.cjs.map +1 -1
- package/cjs/components/Menu/Menu.cjs +37 -4
- package/cjs/components/Menu/Menu.cjs.map +1 -1
- package/cjs/components/Menu/Menu.context.cjs.map +1 -1
- package/cjs/components/Menu/Menu.module.cjs +2 -0
- package/cjs/components/Menu/Menu.module.cjs.map +1 -1
- package/cjs/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.cjs +30 -0
- package/cjs/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.cjs.map +1 -0
- package/cjs/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.context.cjs +7 -0
- package/cjs/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.context.cjs.map +1 -0
- package/cjs/components/Menu/MenuCheckboxItem/MenuCheckboxItem.cjs +52 -0
- package/cjs/components/Menu/MenuCheckboxItem/MenuCheckboxItem.cjs.map +1 -0
- package/cjs/components/Menu/MenuContextMenu/MenuContextMenu.cjs +28 -0
- package/cjs/components/Menu/MenuContextMenu/MenuContextMenu.cjs.map +1 -0
- package/cjs/components/Menu/MenuDivider/MenuDivider.cjs +0 -1
- package/cjs/components/Menu/MenuDivider/MenuDivider.cjs.map +1 -1
- package/cjs/components/Menu/MenuDropdown/MenuDropdown.cjs +9 -2
- package/cjs/components/Menu/MenuDropdown/MenuDropdown.cjs.map +1 -1
- package/cjs/components/Menu/MenuItem/MenuItem.cjs +18 -2
- package/cjs/components/Menu/MenuItem/MenuItem.cjs.map +1 -1
- package/cjs/components/Menu/MenuLabel/MenuLabel.cjs +0 -1
- package/cjs/components/Menu/MenuLabel/MenuLabel.cjs.map +1 -1
- package/cjs/components/Menu/MenuRadioGroup/MenuRadioGroup.cjs +27 -0
- package/cjs/components/Menu/MenuRadioGroup/MenuRadioGroup.cjs.map +1 -0
- package/cjs/components/Menu/MenuRadioGroup/MenuRadioGroup.context.cjs +7 -0
- package/cjs/components/Menu/MenuRadioGroup/MenuRadioGroup.context.cjs.map +1 -0
- package/cjs/components/Menu/MenuRadioItem/MenuRadioItem.cjs +46 -0
- package/cjs/components/Menu/MenuRadioItem/MenuRadioItem.cjs.map +1 -0
- package/cjs/components/Menu/MenuSearch/MenuSearch.cjs +115 -0
- package/cjs/components/Menu/MenuSearch/MenuSearch.cjs.map +1 -0
- package/cjs/components/Menu/MenuSelectableItem/MenuSelectableItem.cjs +114 -0
- package/cjs/components/Menu/MenuSelectableItem/MenuSelectableItem.cjs.map +1 -0
- package/cjs/components/Menu/MenuSub/MenuSub.cjs +16 -14
- package/cjs/components/Menu/MenuSub/MenuSub.cjs.map +1 -1
- package/cjs/components/Menu/MenuSub/MenuSub.context.cjs +0 -1
- package/cjs/components/Menu/MenuSub/MenuSub.context.cjs.map +1 -1
- package/cjs/components/Menu/MenuSubDropdown/MenuSubDropdown.cjs +13 -2
- package/cjs/components/Menu/MenuSubDropdown/MenuSubDropdown.cjs.map +1 -1
- package/cjs/components/Menu/MenuSubItem/MenuSubItem.cjs +18 -2
- package/cjs/components/Menu/MenuSubItem/MenuSubItem.cjs.map +1 -1
- package/cjs/components/Menu/MenuSubTarget/MenuSubTarget.cjs +0 -1
- package/cjs/components/Menu/MenuSubTarget/MenuSubTarget.cjs.map +1 -1
- package/cjs/components/Menu/MenuTarget/MenuTarget.cjs +0 -1
- package/cjs/components/Menu/MenuTarget/MenuTarget.cjs.map +1 -1
- package/cjs/components/Menu/use-menu-type-ahead.cjs +72 -0
- package/cjs/components/Menu/use-menu-type-ahead.cjs.map +1 -0
- package/cjs/components/Modal/Modal.cjs +0 -1
- package/cjs/components/Modal/Modal.cjs.map +1 -1
- package/cjs/components/Modal/ModalBody.cjs +0 -1
- package/cjs/components/Modal/ModalBody.cjs.map +1 -1
- package/cjs/components/Modal/ModalCloseButton.cjs +0 -1
- package/cjs/components/Modal/ModalCloseButton.cjs.map +1 -1
- package/cjs/components/Modal/ModalContent.cjs +0 -1
- package/cjs/components/Modal/ModalContent.cjs.map +1 -1
- package/cjs/components/Modal/ModalHeader.cjs +0 -1
- package/cjs/components/Modal/ModalHeader.cjs.map +1 -1
- package/cjs/components/Modal/ModalOverlay.cjs +0 -1
- package/cjs/components/Modal/ModalOverlay.cjs.map +1 -1
- package/cjs/components/Modal/ModalRoot.cjs +0 -1
- package/cjs/components/Modal/ModalRoot.cjs.map +1 -1
- package/cjs/components/Modal/ModalStack.cjs +0 -1
- package/cjs/components/Modal/ModalStack.cjs.map +1 -1
- package/cjs/components/Modal/ModalTitle.cjs +0 -1
- package/cjs/components/Modal/ModalTitle.cjs.map +1 -1
- package/cjs/components/Modal/use-modals-stack.cjs +0 -1
- package/cjs/components/Modal/use-modals-stack.cjs.map +1 -1
- package/cjs/components/ModalBase/ModalBase.cjs +0 -1
- package/cjs/components/ModalBase/ModalBase.cjs.map +1 -1
- package/cjs/components/ModalBase/ModalBaseOverlay.cjs +0 -1
- package/cjs/components/ModalBase/ModalBaseOverlay.cjs.map +1 -1
- package/cjs/components/ModalBase/NativeScrollArea.cjs +0 -1
- package/cjs/components/ModalBase/NativeScrollArea.cjs.map +1 -1
- package/cjs/components/ModalBase/use-lock-scroll.cjs +0 -1
- package/cjs/components/ModalBase/use-lock-scroll.cjs.map +1 -1
- package/cjs/components/ModalBase/use-modal-body-id.cjs +0 -1
- package/cjs/components/ModalBase/use-modal-body-id.cjs.map +1 -1
- package/cjs/components/ModalBase/use-modal-title-id.cjs +0 -1
- package/cjs/components/ModalBase/use-modal-title-id.cjs.map +1 -1
- package/cjs/components/ModalBase/use-modal.cjs +0 -1
- package/cjs/components/ModalBase/use-modal.cjs.map +1 -1
- package/cjs/components/MultiSelect/MultiSelect.cjs +2 -2
- package/cjs/components/MultiSelect/MultiSelect.cjs.map +1 -1
- package/cjs/components/NativeSelect/NativeSelect.cjs +0 -1
- package/cjs/components/NativeSelect/NativeSelect.cjs.map +1 -1
- package/cjs/components/NativeSelect/NativeSelectOption.cjs +0 -1
- package/cjs/components/NativeSelect/NativeSelectOption.cjs.map +1 -1
- package/cjs/components/NavLink/NavLink.cjs +0 -1
- package/cjs/components/NavLink/NavLink.cjs.map +1 -1
- package/cjs/components/Notification/Notification.cjs +0 -1
- package/cjs/components/Notification/Notification.cjs.map +1 -1
- package/cjs/components/NumberFormatter/NumberFormatter.cjs +0 -1
- package/cjs/components/NumberFormatter/NumberFormatter.cjs.map +1 -1
- package/cjs/components/NumberInput/NumberInputChevron.cjs +0 -1
- package/cjs/components/NumberInput/NumberInputChevron.cjs.map +1 -1
- package/cjs/components/OverflowList/OverflowList.cjs +68 -10
- package/cjs/components/OverflowList/OverflowList.cjs.map +1 -1
- package/cjs/components/OverflowList/use-dimensions.cjs +0 -1
- package/cjs/components/OverflowList/use-dimensions.cjs.map +1 -1
- package/cjs/components/Overlay/Overlay.cjs +0 -1
- package/cjs/components/Overlay/Overlay.cjs.map +1 -1
- package/cjs/components/Pagination/Pagination.cjs +14 -3
- package/cjs/components/Pagination/Pagination.cjs.map +1 -1
- package/cjs/components/Pagination/Pagination.context.cjs.map +1 -1
- package/cjs/components/Pagination/Pagination.icons.cjs +0 -1
- package/cjs/components/Pagination/Pagination.icons.cjs.map +1 -1
- package/cjs/components/Pagination/Pagination.module.cjs +3 -1
- package/cjs/components/Pagination/Pagination.module.cjs.map +1 -1
- package/cjs/components/Pagination/PaginationControl/PaginationControl.cjs +0 -1
- package/cjs/components/Pagination/PaginationControl/PaginationControl.cjs.map +1 -1
- package/cjs/components/Pagination/PaginationDots/PaginationDots.cjs +0 -1
- package/cjs/components/Pagination/PaginationDots/PaginationDots.cjs.map +1 -1
- package/cjs/components/Pagination/PaginationEdges/PaginationEdges.cjs +0 -1
- package/cjs/components/Pagination/PaginationEdges/PaginationEdges.cjs.map +1 -1
- package/cjs/components/Pagination/PaginationItems/PaginationItems.cjs +0 -1
- package/cjs/components/Pagination/PaginationItems/PaginationItems.cjs.map +1 -1
- package/cjs/components/Pagination/PaginationLabel/PaginationLabel.cjs +32 -0
- package/cjs/components/Pagination/PaginationLabel/PaginationLabel.cjs.map +1 -0
- package/cjs/components/Pagination/PaginationRoot/PaginationRoot.cjs +3 -2
- package/cjs/components/Pagination/PaginationRoot/PaginationRoot.cjs.map +1 -1
- package/cjs/components/Paper/Paper.cjs +0 -1
- package/cjs/components/Paper/Paper.cjs.map +1 -1
- package/cjs/components/PasswordInput/PasswordToggleIcon.cjs +0 -1
- package/cjs/components/PasswordInput/PasswordToggleIcon.cjs.map +1 -1
- package/cjs/components/Pill/Pill.cjs +0 -1
- package/cjs/components/Pill/Pill.cjs.map +1 -1
- package/cjs/components/Pill/PillGroup/PillGroup.cjs +0 -1
- package/cjs/components/Pill/PillGroup/PillGroup.cjs.map +1 -1
- package/cjs/components/PillsInput/PillsInput.cjs +0 -1
- package/cjs/components/PillsInput/PillsInput.cjs.map +1 -1
- package/cjs/components/PillsInput/PillsInput.context.cjs +0 -1
- package/cjs/components/PillsInput/PillsInput.context.cjs.map +1 -1
- package/cjs/components/PillsInput/PillsInputField/PillsInputField.cjs +0 -1
- package/cjs/components/PillsInput/PillsInputField/PillsInputField.cjs.map +1 -1
- package/cjs/components/PinInput/PinInput.cjs +0 -1
- package/cjs/components/PinInput/PinInput.cjs.map +1 -1
- package/cjs/components/Popover/Popover.cjs +5 -10
- package/cjs/components/Popover/Popover.cjs.map +1 -1
- package/cjs/components/Popover/PopoverContextMenu/PopoverContextMenu.cjs +28 -0
- package/cjs/components/Popover/PopoverContextMenu/PopoverContextMenu.cjs.map +1 -0
- package/cjs/components/Popover/PopoverDropdown/PopoverDropdown.cjs +8 -1
- package/cjs/components/Popover/PopoverDropdown/PopoverDropdown.cjs.map +1 -1
- package/cjs/components/Popover/use-popover.cjs +52 -20
- package/cjs/components/Popover/use-popover.cjs.map +1 -1
- package/cjs/components/Portal/OptionalPortal.cjs +0 -1
- package/cjs/components/Portal/OptionalPortal.cjs.map +1 -1
- package/cjs/components/Portal/Portal.cjs +0 -1
- package/cjs/components/Portal/Portal.cjs.map +1 -1
- package/cjs/components/Progress/Progress.cjs +0 -1
- package/cjs/components/Progress/Progress.cjs.map +1 -1
- package/cjs/components/Progress/ProgressLabel/ProgressLabel.cjs +0 -1
- package/cjs/components/Progress/ProgressLabel/ProgressLabel.cjs.map +1 -1
- package/cjs/components/Progress/ProgressRoot/ProgressRoot.cjs +0 -1
- package/cjs/components/Progress/ProgressRoot/ProgressRoot.cjs.map +1 -1
- package/cjs/components/Progress/ProgressSection/ProgressSection.cjs +0 -1
- package/cjs/components/Progress/ProgressSection/ProgressSection.cjs.map +1 -1
- package/cjs/components/Radio/Radio.cjs +1 -2
- package/cjs/components/Radio/Radio.cjs.map +1 -1
- package/cjs/components/Radio/RadioCard/RadioCard.cjs +0 -1
- package/cjs/components/Radio/RadioCard/RadioCard.cjs.map +1 -1
- package/cjs/components/Radio/RadioGroup/RadioGroup.cjs +0 -1
- package/cjs/components/Radio/RadioGroup/RadioGroup.cjs.map +1 -1
- package/cjs/components/Radio/RadioIcon.cjs +0 -1
- package/cjs/components/Radio/RadioIcon.cjs.map +1 -1
- package/cjs/components/Radio/RadioIndicator/RadioIndicator.cjs +2 -3
- package/cjs/components/Radio/RadioIndicator/RadioIndicator.cjs.map +1 -1
- package/cjs/components/Rating/Rating.cjs +0 -1
- package/cjs/components/Rating/Rating.cjs.map +1 -1
- package/cjs/components/Rating/RatingItem/RatingItem.cjs +0 -1
- package/cjs/components/Rating/RatingItem/RatingItem.cjs.map +1 -1
- package/cjs/components/Rating/StarSymbol/StarIcon.cjs +0 -1
- package/cjs/components/Rating/StarSymbol/StarIcon.cjs.map +1 -1
- package/cjs/components/Rating/StarSymbol/StarSymbol.cjs +0 -1
- package/cjs/components/Rating/StarSymbol/StarSymbol.cjs.map +1 -1
- package/cjs/components/RingProgress/Curve/Curve.cjs +0 -1
- package/cjs/components/RingProgress/Curve/Curve.cjs.map +1 -1
- package/cjs/components/RingProgress/RingProgress.cjs +0 -1
- package/cjs/components/RingProgress/RingProgress.cjs.map +1 -1
- package/cjs/components/RollingNumber/DigitColumn.cjs +0 -1
- package/cjs/components/RollingNumber/DigitColumn.cjs.map +1 -1
- package/cjs/components/RollingNumber/RollingNumber.cjs +0 -1
- package/cjs/components/RollingNumber/RollingNumber.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollArea.cjs +0 -1
- package/cjs/components/ScrollArea/ScrollArea.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaCorner/ScrollAreaCorner.cjs +0 -1
- package/cjs/components/ScrollArea/ScrollAreaCorner/ScrollAreaCorner.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaRoot/ScrollAreaRoot.cjs +0 -1
- package/cjs/components/ScrollArea/ScrollAreaRoot/ScrollAreaRoot.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbar.cjs +0 -1
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbar.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarAuto.cjs +0 -1
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarAuto.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarHover.cjs +0 -1
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarHover.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarScroll.cjs +0 -1
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarScroll.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarVisible.cjs +0 -1
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollAreaScrollbarVisible.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.cjs +0 -1
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/Scrollbar.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollbarX.cjs +0 -1
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollbarX.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollbarY.cjs +0 -1
- package/cjs/components/ScrollArea/ScrollAreaScrollbar/ScrollbarY.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaThumb/ScrollAreaThumb.cjs +0 -1
- package/cjs/components/ScrollArea/ScrollAreaThumb/ScrollAreaThumb.cjs.map +1 -1
- package/cjs/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.cjs +0 -1
- package/cjs/components/ScrollArea/ScrollAreaViewport/ScrollAreaViewport.cjs.map +1 -1
- package/cjs/components/ScrollArea/use-resize-observer.cjs +0 -1
- package/cjs/components/ScrollArea/use-resize-observer.cjs.map +1 -1
- package/cjs/components/Scroller/Scroller.cjs +0 -1
- package/cjs/components/Scroller/Scroller.cjs.map +1 -1
- package/cjs/components/SegmentedControl/SegmentedControl.cjs +0 -1
- package/cjs/components/SegmentedControl/SegmentedControl.cjs.map +1 -1
- package/cjs/components/SegmentedControl/SegmentedControl.module.cjs.map +1 -1
- package/cjs/components/Select/Select.cjs +2 -2
- package/cjs/components/Select/Select.cjs.map +1 -1
- package/cjs/components/SemiCircleProgress/SemiCircleProgress.cjs +0 -1
- package/cjs/components/SemiCircleProgress/SemiCircleProgress.cjs.map +1 -1
- package/cjs/components/SimpleGrid/SimpleGrid.cjs +0 -1
- package/cjs/components/SimpleGrid/SimpleGrid.cjs.map +1 -1
- package/cjs/components/SimpleGrid/SimpleGridVariables.cjs +0 -1
- package/cjs/components/SimpleGrid/SimpleGridVariables.cjs.map +1 -1
- package/cjs/components/Skeleton/Skeleton.cjs +0 -1
- package/cjs/components/Skeleton/Skeleton.cjs.map +1 -1
- package/cjs/components/Slider/Marks/Marks.cjs +0 -1
- package/cjs/components/Slider/Marks/Marks.cjs.map +1 -1
- package/cjs/components/Slider/RangeSlider/RangeSlider.cjs +0 -1
- package/cjs/components/Slider/RangeSlider/RangeSlider.cjs.map +1 -1
- package/cjs/components/Slider/Slider/Slider.cjs +0 -1
- package/cjs/components/Slider/Slider/Slider.cjs.map +1 -1
- package/cjs/components/Slider/SliderRoot/SliderRoot.cjs +0 -1
- package/cjs/components/Slider/SliderRoot/SliderRoot.cjs.map +1 -1
- package/cjs/components/Slider/Thumb/Thumb.cjs +0 -1
- package/cjs/components/Slider/Thumb/Thumb.cjs.map +1 -1
- package/cjs/components/Slider/Track/Track.cjs +0 -1
- package/cjs/components/Slider/Track/Track.cjs.map +1 -1
- package/cjs/components/Space/Space.cjs +0 -1
- package/cjs/components/Space/Space.cjs.map +1 -1
- package/cjs/components/Splitter/GripIcon.cjs +55 -0
- package/cjs/components/Splitter/GripIcon.cjs.map +1 -0
- package/cjs/components/Splitter/Splitter.cjs +111 -0
- package/cjs/components/Splitter/Splitter.cjs.map +1 -0
- package/cjs/components/Splitter/Splitter.context.cjs +8 -0
- package/cjs/components/Splitter/Splitter.context.cjs.map +1 -0
- package/cjs/components/Splitter/Splitter.module.cjs +12 -0
- package/cjs/components/Splitter/Splitter.module.cjs.map +1 -0
- package/cjs/components/Splitter/SplitterPane/SplitterPane.cjs +34 -0
- package/cjs/components/Splitter/SplitterPane/SplitterPane.cjs.map +1 -0
- package/cjs/components/Spoiler/Spoiler.cjs +0 -1
- package/cjs/components/Spoiler/Spoiler.cjs.map +1 -1
- package/cjs/components/Stack/Stack.cjs +0 -1
- package/cjs/components/Stack/Stack.cjs.map +1 -1
- package/cjs/components/Stepper/Stepper.cjs +0 -1
- package/cjs/components/Stepper/Stepper.cjs.map +1 -1
- package/cjs/components/Stepper/Stepper.module.cjs.map +1 -1
- package/cjs/components/Stepper/StepperStep/StepperStep.cjs +0 -1
- package/cjs/components/Stepper/StepperStep/StepperStep.cjs.map +1 -1
- package/cjs/components/Switch/Switch.cjs +0 -1
- package/cjs/components/Switch/Switch.cjs.map +1 -1
- package/cjs/components/Switch/SwitchGroup/SwitchGroup.cjs +0 -1
- package/cjs/components/Switch/SwitchGroup/SwitchGroup.cjs.map +1 -1
- package/cjs/components/Table/Table.cjs +0 -1
- package/cjs/components/Table/Table.cjs.map +1 -1
- package/cjs/components/Table/Table.components.cjs +0 -1
- package/cjs/components/Table/Table.components.cjs.map +1 -1
- package/cjs/components/Table/Table.module.cjs.map +1 -1
- package/cjs/components/Table/TableDataRenderer.cjs +0 -1
- package/cjs/components/Table/TableDataRenderer.cjs.map +1 -1
- package/cjs/components/Table/TableScrollContainer.cjs +0 -1
- package/cjs/components/Table/TableScrollContainer.cjs.map +1 -1
- package/cjs/components/TableOfContents/TableOfContents.cjs +0 -1
- package/cjs/components/TableOfContents/TableOfContents.cjs.map +1 -1
- package/cjs/components/Tabs/Tabs.cjs +0 -1
- package/cjs/components/Tabs/Tabs.cjs.map +1 -1
- package/cjs/components/Tabs/Tabs.module.cjs.map +1 -1
- package/cjs/components/Tabs/TabsList/TabsList.cjs +0 -1
- package/cjs/components/Tabs/TabsList/TabsList.cjs.map +1 -1
- package/cjs/components/Tabs/TabsPanel/TabsPanel.cjs +0 -1
- package/cjs/components/Tabs/TabsPanel/TabsPanel.cjs.map +1 -1
- package/cjs/components/Tabs/TabsTab/TabsTab.cjs +0 -1
- package/cjs/components/Tabs/TabsTab/TabsTab.cjs.map +1 -1
- package/cjs/components/TagsInput/TagsInput.cjs +2 -2
- package/cjs/components/TagsInput/TagsInput.cjs.map +1 -1
- package/cjs/components/Text/Text.cjs +4 -4
- package/cjs/components/Text/Text.cjs.map +1 -1
- package/cjs/components/Text/Text.module.cjs.map +1 -1
- package/cjs/components/TextInput/TextInput.cjs +0 -1
- package/cjs/components/TextInput/TextInput.cjs.map +1 -1
- package/cjs/components/Textarea/Textarea.cjs +3 -2
- package/cjs/components/Textarea/Textarea.cjs.map +1 -1
- package/cjs/components/ThemeIcon/ThemeIcon.cjs +0 -1
- package/cjs/components/ThemeIcon/ThemeIcon.cjs.map +1 -1
- package/cjs/components/Timeline/Timeline.cjs +0 -1
- package/cjs/components/Timeline/Timeline.cjs.map +1 -1
- package/cjs/components/Timeline/Timeline.module.cjs.map +1 -1
- package/cjs/components/Timeline/TimelineItem/TimelineItem.cjs +0 -1
- package/cjs/components/Timeline/TimelineItem/TimelineItem.cjs.map +1 -1
- package/cjs/components/Title/Title.cjs +0 -1
- package/cjs/components/Title/Title.cjs.map +1 -1
- package/cjs/components/Tooltip/Tooltip.cjs +7 -0
- package/cjs/components/Tooltip/Tooltip.cjs.map +1 -1
- package/cjs/components/Tooltip/TooltipFloating/TooltipFloating.cjs +0 -1
- package/cjs/components/Tooltip/TooltipFloating/TooltipFloating.cjs.map +1 -1
- package/cjs/components/Tooltip/TooltipFloating/use-floating-tooltip.cjs +0 -1
- package/cjs/components/Tooltip/TooltipFloating/use-floating-tooltip.cjs.map +1 -1
- package/cjs/components/Tooltip/TooltipGroup/TooltipGroup.cjs +0 -1
- package/cjs/components/Tooltip/TooltipGroup/TooltipGroup.cjs.map +1 -1
- package/cjs/components/Tooltip/use-tooltip.cjs +6 -3
- package/cjs/components/Tooltip/use-tooltip.cjs.map +1 -1
- package/cjs/components/Transition/Transition.cjs +0 -1
- package/cjs/components/Transition/Transition.cjs.map +1 -1
- package/cjs/components/Tree/FlatTreeNode.cjs +13 -5
- package/cjs/components/Tree/FlatTreeNode.cjs.map +1 -1
- package/cjs/components/Tree/Tree.cjs +0 -1
- package/cjs/components/Tree/Tree.cjs.map +1 -1
- package/cjs/components/Tree/Tree.module.cjs +3 -1
- package/cjs/components/Tree/Tree.module.cjs.map +1 -1
- package/cjs/components/Tree/TreeNode.cjs +14 -3
- package/cjs/components/Tree/TreeNode.cjs.map +1 -1
- package/cjs/components/Tree/flatten-tree-data/flatten-tree-data.cjs +9 -4
- package/cjs/components/Tree/flatten-tree-data/flatten-tree-data.cjs.map +1 -1
- package/cjs/components/Tree/use-tree-node-drag-drop.cjs +13 -5
- package/cjs/components/Tree/use-tree-node-drag-drop.cjs.map +1 -1
- package/cjs/components/Tree/use-tree.cjs +0 -1
- package/cjs/components/Tree/use-tree.cjs.map +1 -1
- package/cjs/components/TreeSelect/TreeSelect.cjs +0 -1
- package/cjs/components/TreeSelect/TreeSelect.cjs.map +1 -1
- package/cjs/components/TreeSelect/TreeSelectOption.cjs +0 -1
- package/cjs/components/TreeSelect/TreeSelectOption.cjs.map +1 -1
- package/cjs/components/Typography/Typography.cjs +0 -1
- package/cjs/components/Typography/Typography.cjs.map +1 -1
- package/cjs/components/Typography/Typography.module.cjs.map +1 -1
- package/cjs/components/UnstyledButton/UnstyledButton.cjs +0 -1
- package/cjs/components/UnstyledButton/UnstyledButton.cjs.map +1 -1
- package/cjs/components/UnstyledButton/UnstyledButton.module.cjs.map +1 -1
- package/cjs/components/VisuallyHidden/VisuallyHidden.cjs +0 -1
- package/cjs/components/VisuallyHidden/VisuallyHidden.cjs.map +1 -1
- package/cjs/core/Box/use-random-classname/use-random-classname.cjs +0 -1
- package/cjs/core/Box/use-random-classname/use-random-classname.cjs.map +1 -1
- package/cjs/core/DirectionProvider/DirectionProvider.cjs +0 -1
- package/cjs/core/DirectionProvider/DirectionProvider.cjs.map +1 -1
- package/cjs/core/InlineStyles/InlineStyles.cjs +0 -1
- package/cjs/core/InlineStyles/InlineStyles.cjs.map +1 -1
- package/cjs/core/MantineProvider/ColorSchemeScript/ColorSchemeScript.cjs +0 -1
- package/cjs/core/MantineProvider/ColorSchemeScript/ColorSchemeScript.cjs.map +1 -1
- package/cjs/core/MantineProvider/Mantine.context.cjs +0 -1
- package/cjs/core/MantineProvider/Mantine.context.cjs.map +1 -1
- package/cjs/core/MantineProvider/MantineClasses/MantineClasses.cjs +0 -1
- package/cjs/core/MantineProvider/MantineClasses/MantineClasses.cjs.map +1 -1
- package/cjs/core/MantineProvider/MantineCssVariables/MantineCssVariables.cjs +0 -1
- package/cjs/core/MantineProvider/MantineCssVariables/MantineCssVariables.cjs.map +1 -1
- package/cjs/core/MantineProvider/MantineProvider.cjs +0 -1
- package/cjs/core/MantineProvider/MantineProvider.cjs.map +1 -1
- package/cjs/core/MantineProvider/MantineThemeProvider/MantineThemeProvider.cjs +0 -1
- package/cjs/core/MantineProvider/MantineThemeProvider/MantineThemeProvider.cjs.map +1 -1
- package/cjs/core/MantineProvider/use-mantine-color-scheme/use-computed-color-scheme.cjs +0 -1
- package/cjs/core/MantineProvider/use-mantine-color-scheme/use-computed-color-scheme.cjs.map +1 -1
- package/cjs/core/MantineProvider/use-mantine-color-scheme/use-mantine-color-scheme.cjs +0 -1
- package/cjs/core/MantineProvider/use-mantine-color-scheme/use-mantine-color-scheme.cjs.map +1 -1
- package/cjs/core/MantineProvider/use-mantine-color-scheme/use-provider-color-scheme.cjs +0 -1
- package/cjs/core/MantineProvider/use-mantine-color-scheme/use-provider-color-scheme.cjs.map +1 -1
- package/cjs/core/MantineProvider/use-matches/use-matches.cjs +0 -1
- package/cjs/core/MantineProvider/use-matches/use-matches.cjs.map +1 -1
- package/cjs/core/MantineProvider/use-respect-reduce-motion/use-respect-reduce-motion.cjs +0 -1
- package/cjs/core/MantineProvider/use-respect-reduce-motion/use-respect-reduce-motion.cjs.map +1 -1
- package/cjs/core/factory/factory.cjs +0 -1
- package/cjs/core/factory/factory.cjs.map +1 -1
- package/cjs/core/factory/polymorphic-factory.cjs +0 -1
- package/cjs/core/factory/polymorphic-factory.cjs.map +1 -1
- package/cjs/core/utils/create-safe-context/create-safe-context.cjs +0 -1
- package/cjs/core/utils/create-safe-context/create-safe-context.cjs.map +1 -1
- package/cjs/core/utils/create-use-external-events/create-use-external-events.cjs +0 -1
- package/cjs/core/utils/create-use-external-events/create-use-external-events.cjs.map +1 -1
- package/cjs/core/utils/get-single-element-child/get-single-element-child.cjs +0 -1
- package/cjs/core/utils/get-single-element-child/get-single-element-child.cjs.map +1 -1
- package/cjs/core/utils/is-element/is-element.cjs +0 -1
- package/cjs/core/utils/is-element/is-element.cjs.map +1 -1
- package/cjs/core/utils/use-hovered/use-hovered.cjs +0 -1
- package/cjs/core/utils/use-hovered/use-hovered.cjs.map +1 -1
- package/cjs/index.cjs +25 -2
- package/cjs/utils/Floating/FloatingArrow/FloatingArrow.cjs +0 -1
- package/cjs/utils/Floating/FloatingArrow/FloatingArrow.cjs.map +1 -1
- package/cjs/utils/Floating/FloatingArrow/get-arrow-position-styles.cjs +59 -0
- package/cjs/utils/Floating/FloatingArrow/get-arrow-position-styles.cjs.map +1 -1
- package/cjs/utils/Floating/use-context-menu-handlers.cjs +85 -0
- package/cjs/utils/Floating/use-context-menu-handlers.cjs.map +1 -0
- package/cjs/utils/Floating/use-delayed-hover.cjs +0 -1
- package/cjs/utils/Floating/use-delayed-hover.cjs.map +1 -1
- package/cjs/utils/InlineInput/InlineInput.cjs +0 -1
- package/cjs/utils/InlineInput/InlineInput.cjs.map +1 -1
- package/cjs/utils/InputsGroupFieldset/InputsGroupFieldset.cjs +0 -1
- package/cjs/utils/InputsGroupFieldset/InputsGroupFieldset.cjs.map +1 -1
- package/esm/components/Autocomplete/Autocomplete.mjs +2 -1
- package/esm/components/Autocomplete/Autocomplete.mjs.map +1 -1
- package/esm/components/Blockquote/Blockquote.mjs +4 -3
- package/esm/components/Blockquote/Blockquote.mjs.map +1 -1
- package/esm/components/Blockquote/Blockquote.module.mjs.map +1 -1
- package/esm/components/Checkbox/CheckboxIndicator/CheckboxIndicator.mjs.map +1 -1
- package/esm/components/Collapse/Collapse.mjs +2 -1
- package/esm/components/Collapse/Collapse.mjs.map +1 -1
- package/esm/components/Combobox/Combobox.context.mjs.map +1 -1
- package/esm/components/Combobox/Combobox.mjs +26 -3
- package/esm/components/Combobox/Combobox.mjs.map +1 -1
- package/esm/components/Combobox/Combobox.module.mjs.map +1 -1
- package/esm/components/Combobox/ComboboxDropdown/ComboboxDropdown.mjs +1 -0
- package/esm/components/Combobox/ComboboxDropdown/ComboboxDropdown.mjs.map +1 -1
- package/esm/components/Combobox/OptionsDropdown/OptionsDropdown.mjs +4 -2
- package/esm/components/Combobox/OptionsDropdown/OptionsDropdown.mjs.map +1 -1
- package/esm/components/Dialog/Dialog.mjs.map +1 -1
- package/esm/components/Input/Input.mjs +11 -2
- package/esm/components/Input/Input.mjs.map +1 -1
- package/esm/components/Input/Input.module.mjs +1 -0
- package/esm/components/Input/Input.module.mjs.map +1 -1
- package/esm/components/Menu/Menu.context.mjs.map +1 -1
- package/esm/components/Menu/Menu.mjs +37 -3
- package/esm/components/Menu/Menu.mjs.map +1 -1
- package/esm/components/Menu/Menu.module.mjs +2 -0
- package/esm/components/Menu/Menu.module.mjs.map +1 -1
- package/esm/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.context.mjs +8 -0
- package/esm/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.context.mjs.map +1 -0
- package/esm/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.mjs +30 -0
- package/esm/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.mjs.map +1 -0
- package/esm/components/Menu/MenuCheckboxItem/MenuCheckboxItem.mjs +52 -0
- package/esm/components/Menu/MenuCheckboxItem/MenuCheckboxItem.mjs.map +1 -0
- package/esm/components/Menu/MenuContextMenu/MenuContextMenu.mjs +28 -0
- package/esm/components/Menu/MenuContextMenu/MenuContextMenu.mjs.map +1 -0
- package/esm/components/Menu/MenuDropdown/MenuDropdown.mjs +9 -1
- package/esm/components/Menu/MenuDropdown/MenuDropdown.mjs.map +1 -1
- package/esm/components/Menu/MenuItem/MenuItem.mjs +18 -1
- package/esm/components/Menu/MenuItem/MenuItem.mjs.map +1 -1
- package/esm/components/Menu/MenuRadioGroup/MenuRadioGroup.context.mjs +8 -0
- package/esm/components/Menu/MenuRadioGroup/MenuRadioGroup.context.mjs.map +1 -0
- package/esm/components/Menu/MenuRadioGroup/MenuRadioGroup.mjs +27 -0
- package/esm/components/Menu/MenuRadioGroup/MenuRadioGroup.mjs.map +1 -0
- package/esm/components/Menu/MenuRadioItem/MenuRadioItem.mjs +46 -0
- package/esm/components/Menu/MenuRadioItem/MenuRadioItem.mjs.map +1 -0
- package/esm/components/Menu/MenuSearch/MenuSearch.mjs +115 -0
- package/esm/components/Menu/MenuSearch/MenuSearch.mjs.map +1 -0
- package/esm/components/Menu/MenuSelectableItem/MenuSelectableItem.mjs +114 -0
- package/esm/components/Menu/MenuSelectableItem/MenuSelectableItem.mjs.map +1 -0
- package/esm/components/Menu/MenuSub/MenuSub.mjs +18 -15
- package/esm/components/Menu/MenuSub/MenuSub.mjs.map +1 -1
- package/esm/components/Menu/MenuSubDropdown/MenuSubDropdown.mjs +13 -1
- package/esm/components/Menu/MenuSubDropdown/MenuSubDropdown.mjs.map +1 -1
- package/esm/components/Menu/MenuSubItem/MenuSubItem.mjs +18 -1
- package/esm/components/Menu/MenuSubItem/MenuSubItem.mjs.map +1 -1
- package/esm/components/Menu/use-menu-type-ahead.mjs +72 -0
- package/esm/components/Menu/use-menu-type-ahead.mjs.map +1 -0
- package/esm/components/MultiSelect/MultiSelect.mjs +2 -1
- package/esm/components/MultiSelect/MultiSelect.mjs.map +1 -1
- package/esm/components/OverflowList/OverflowList.mjs +69 -10
- package/esm/components/OverflowList/OverflowList.mjs.map +1 -1
- package/esm/components/Pagination/Pagination.context.mjs.map +1 -1
- package/esm/components/Pagination/Pagination.mjs +15 -3
- package/esm/components/Pagination/Pagination.mjs.map +1 -1
- package/esm/components/Pagination/Pagination.module.mjs +3 -1
- package/esm/components/Pagination/Pagination.module.mjs.map +1 -1
- package/esm/components/Pagination/PaginationLabel/PaginationLabel.mjs +32 -0
- package/esm/components/Pagination/PaginationLabel/PaginationLabel.mjs.map +1 -0
- package/esm/components/Pagination/PaginationRoot/PaginationRoot.mjs +3 -1
- package/esm/components/Pagination/PaginationRoot/PaginationRoot.mjs.map +1 -1
- package/esm/components/Popover/Popover.mjs +5 -9
- package/esm/components/Popover/Popover.mjs.map +1 -1
- package/esm/components/Popover/PopoverContextMenu/PopoverContextMenu.mjs +28 -0
- package/esm/components/Popover/PopoverContextMenu/PopoverContextMenu.mjs.map +1 -0
- package/esm/components/Popover/PopoverDropdown/PopoverDropdown.mjs +8 -0
- package/esm/components/Popover/PopoverDropdown/PopoverDropdown.mjs.map +1 -1
- package/esm/components/Popover/use-popover.mjs +53 -20
- package/esm/components/Popover/use-popover.mjs.map +1 -1
- package/esm/components/Radio/Radio.mjs +1 -1
- package/esm/components/Radio/RadioIndicator/RadioIndicator.mjs +2 -2
- package/esm/components/Radio/RadioIndicator/RadioIndicator.mjs.map +1 -1
- package/esm/components/SegmentedControl/SegmentedControl.module.mjs.map +1 -1
- package/esm/components/Select/Select.mjs +2 -1
- package/esm/components/Select/Select.mjs.map +1 -1
- package/esm/components/Splitter/GripIcon.mjs +52 -0
- package/esm/components/Splitter/GripIcon.mjs.map +1 -0
- package/esm/components/Splitter/Splitter.context.mjs +8 -0
- package/esm/components/Splitter/Splitter.context.mjs.map +1 -0
- package/esm/components/Splitter/Splitter.mjs +111 -0
- package/esm/components/Splitter/Splitter.mjs.map +1 -0
- package/esm/components/Splitter/Splitter.module.mjs +12 -0
- package/esm/components/Splitter/Splitter.module.mjs.map +1 -0
- package/esm/components/Splitter/SplitterPane/SplitterPane.mjs +34 -0
- package/esm/components/Splitter/SplitterPane/SplitterPane.mjs.map +1 -0
- package/esm/components/Stepper/Stepper.module.mjs.map +1 -1
- package/esm/components/Table/Table.module.mjs.map +1 -1
- package/esm/components/Tabs/Tabs.module.mjs.map +1 -1
- package/esm/components/TagsInput/TagsInput.mjs +2 -1
- package/esm/components/TagsInput/TagsInput.mjs.map +1 -1
- package/esm/components/Text/Text.mjs +4 -3
- package/esm/components/Text/Text.mjs.map +1 -1
- package/esm/components/Text/Text.module.mjs.map +1 -1
- package/esm/components/Textarea/Textarea.mjs +3 -1
- package/esm/components/Textarea/Textarea.mjs.map +1 -1
- package/esm/components/Timeline/Timeline.module.mjs.map +1 -1
- package/esm/components/Tooltip/Tooltip.mjs +7 -0
- package/esm/components/Tooltip/Tooltip.mjs.map +1 -1
- package/esm/components/Tooltip/use-tooltip.mjs +8 -4
- package/esm/components/Tooltip/use-tooltip.mjs.map +1 -1
- package/esm/components/Tree/FlatTreeNode.mjs +14 -5
- package/esm/components/Tree/FlatTreeNode.mjs.map +1 -1
- package/esm/components/Tree/Tree.mjs.map +1 -1
- package/esm/components/Tree/Tree.module.mjs +3 -1
- package/esm/components/Tree/Tree.module.mjs.map +1 -1
- package/esm/components/Tree/TreeNode.mjs +14 -2
- package/esm/components/Tree/TreeNode.mjs.map +1 -1
- package/esm/components/Tree/flatten-tree-data/flatten-tree-data.mjs +9 -4
- package/esm/components/Tree/flatten-tree-data/flatten-tree-data.mjs.map +1 -1
- package/esm/components/Tree/use-tree-node-drag-drop.mjs +13 -4
- package/esm/components/Tree/use-tree-node-drag-drop.mjs.map +1 -1
- package/esm/components/Typography/Typography.module.mjs.map +1 -1
- package/esm/components/UnstyledButton/UnstyledButton.module.mjs.map +1 -1
- package/esm/index.mjs +14 -2
- package/esm/utils/Floating/FloatingArrow/get-arrow-position-styles.mjs +59 -1
- package/esm/utils/Floating/FloatingArrow/get-arrow-position-styles.mjs.map +1 -1
- package/esm/utils/Floating/use-context-menu-handlers.mjs +85 -0
- package/esm/utils/Floating/use-context-menu-handlers.mjs.map +1 -0
- package/lib/components/Blockquote/Blockquote.d.ts +3 -1
- package/lib/components/Checkbox/CheckboxIndicator/CheckboxIndicator.d.ts +1 -1
- package/lib/components/Collapse/Collapse.d.ts +1 -1
- package/lib/components/Combobox/Combobox.context.d.ts +1 -0
- package/lib/components/Combobox/Combobox.d.ts +2 -0
- package/lib/components/Combobox/Combobox.types.d.ts +2 -0
- package/lib/components/Combobox/OptionsDropdown/OptionsDropdown.d.ts +3 -1
- package/lib/components/Dialog/Dialog.d.ts +1 -1
- package/lib/components/Input/Input.d.ts +5 -1
- package/lib/components/MaskInput/use-mask-input-props.d.ts +3 -0
- package/lib/components/Menu/Menu.context.d.ts +5 -0
- package/lib/components/Menu/Menu.d.ts +41 -1
- package/lib/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.context.d.ts +5 -0
- package/lib/components/Menu/MenuCheckboxGroup/MenuCheckboxGroup.d.ts +14 -0
- package/lib/components/Menu/MenuCheckboxItem/MenuCheckboxItem.d.ts +37 -0
- package/lib/components/Menu/MenuContextMenu/MenuContextMenu.d.ts +12 -0
- package/lib/components/Menu/MenuItem/MenuItem.d.ts +1 -1
- package/lib/components/Menu/MenuRadioGroup/MenuRadioGroup.context.d.ts +5 -0
- package/lib/components/Menu/MenuRadioGroup/MenuRadioGroup.d.ts +14 -0
- package/lib/components/Menu/MenuRadioItem/MenuRadioItem.d.ts +35 -0
- package/lib/components/Menu/MenuSearch/MenuSearch.d.ts +19 -0
- package/lib/components/Menu/MenuSelectableItem/MenuSelectableItem.d.ts +20 -0
- package/lib/components/Menu/MenuSub/MenuSub.d.ts +2 -0
- package/lib/components/Menu/MenuSubItem/MenuSubItem.d.ts +1 -1
- package/lib/components/Menu/index.d.ts +13 -1
- package/lib/components/Menu/use-menu-type-ahead.d.ts +7 -0
- package/lib/components/OverflowList/OverflowList.d.ts +7 -2
- package/lib/components/Pagination/Pagination.context.d.ts +1 -0
- package/lib/components/Pagination/Pagination.d.ts +8 -0
- package/lib/components/Pagination/PaginationLabel/PaginationLabel.d.ts +22 -0
- package/lib/components/Pagination/PaginationRoot/PaginationRoot.d.ts +3 -1
- package/lib/components/Pagination/index.d.ts +3 -1
- package/lib/components/Popover/Popover.d.ts +6 -1
- package/lib/components/Popover/PopoverContextMenu/PopoverContextMenu.d.ts +12 -0
- package/lib/components/Popover/index.d.ts +3 -1
- package/lib/components/Popover/use-popover.d.ts +1 -3
- package/lib/components/Radio/RadioIndicator/RadioIndicator.d.ts +1 -1
- package/lib/components/Splitter/GripIcon.d.ts +3 -0
- package/lib/components/Splitter/Splitter.context.d.ts +9 -0
- package/lib/components/Splitter/Splitter.d.ts +57 -0
- package/lib/components/Splitter/SplitterPane/SplitterPane.d.ts +30 -0
- package/lib/components/Splitter/index.d.ts +18 -0
- package/lib/components/Text/Text.d.ts +3 -1
- package/lib/components/Textarea/Textarea.d.ts +4 -0
- package/lib/components/Tree/FlatTreeNode.d.ts +5 -1
- package/lib/components/Tree/Tree.d.ts +2 -0
- package/lib/components/Tree/flatten-tree-data/flatten-tree-data.d.ts +10 -0
- package/lib/components/Tree/index.d.ts +1 -1
- package/lib/components/Tree/use-tree-node-drag-drop.d.ts +2 -1
- package/lib/components/index.d.ts +1 -0
- package/lib/utils/Floating/FloatingArrow/get-arrow-position-styles.d.ts +4 -0
- package/lib/utils/Floating/index.d.ts +1 -0
- package/lib/utils/Floating/types.d.ts +1 -1
- package/lib/utils/Floating/use-context-menu-handlers.d.ts +25 -0
- package/package.json +2 -2
- package/styles/Blockquote.css +1 -0
- package/styles/Blockquote.layer.css +1 -0
- package/styles/Combobox.css +8 -0
- package/styles/Combobox.layer.css +8 -0
- package/styles/Input.css +25 -4
- package/styles/Input.layer.css +25 -4
- package/styles/Menu.css +41 -2
- package/styles/Menu.layer.css +41 -2
- package/styles/Pagination.css +33 -0
- package/styles/Pagination.layer.css +33 -0
- package/styles/SegmentedControl.css +4 -1
- package/styles/SegmentedControl.layer.css +4 -1
- package/styles/Splitter.css +76 -0
- package/styles/Splitter.layer.css +77 -0
- package/styles/Stepper.css +1 -5
- package/styles/Stepper.layer.css +1 -5
- package/styles/Table.css +1 -5
- package/styles/Table.layer.css +1 -5
- package/styles/Tabs.css +13 -28
- package/styles/Tabs.layer.css +13 -28
- package/styles/Text.css +3 -2
- package/styles/Text.layer.css +3 -2
- package/styles/Timeline.css +14 -42
- package/styles/Timeline.layer.css +14 -42
- package/styles/Tree.css +55 -11
- package/styles/Tree.layer.css +55 -11
- package/styles/Typography.css +1 -1
- package/styles/Typography.layer.css +1 -1
- package/styles/UnstyledButton.css +1 -5
- package/styles/UnstyledButton.layer.css +1 -5
- package/styles.css +278 -106
- package/styles.layer.css +278 -106
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSelect.mjs","names":["useId"],"sources":["../../../src/components/MultiSelect/MultiSelect.tsx"],"sourcesContent":["import { Fragment, useEffect, useRef } from 'react';\nimport { useId, useUncontrolled } from '@mantine/hooks';\nimport {\n BoxProps,\n ElementProps,\n extractStyleProps,\n Factory,\n genericFactory,\n MantineColor,\n Primitive,\n StylesApiProps,\n useProps,\n useResolvedStylesApi,\n useStyles,\n} from '../../core';\nimport {\n Combobox,\n ComboboxItem,\n ComboboxLikeProps,\n ComboboxLikeRenderOptionInput,\n ComboboxLikeStylesNames,\n ComboboxRenderPillInput,\n getOptionsLockup,\n getParsedComboboxData,\n OptionsDropdown,\n OptionsFilter,\n useCombobox,\n usePillsReorder,\n} from '../Combobox';\nimport {\n __BaseInputProps,\n __InputStylesNames,\n ClearSectionMode,\n InputClearButtonProps,\n} from '../Input';\nimport { InputBase } from '../InputBase';\nimport { Pill } from '../Pill';\nimport { PillsInput } from '../PillsInput';\nimport { ScrollAreaProps } from '../ScrollArea';\nimport { filterPickedValues } from './filter-picked-values';\n\nconst clearSectionOffset: Record<string, number> = {\n xs: 41,\n sm: 50,\n md: 60,\n lg: 72,\n xl: 89,\n};\n\nexport type MultiSelectStylesNames =\n | __InputStylesNames\n | ComboboxLikeStylesNames\n | 'pill'\n | 'pillsList'\n | 'inputField';\n\nexport interface MultiSelectProps<Value extends Primitive = string>\n extends\n BoxProps,\n __BaseInputProps,\n ComboboxLikeProps<Value>,\n StylesApiProps<MultiSelectFactory>,\n ElementProps<'input', 'size' | 'value' | 'defaultValue' | 'onChange'> {\n /** Controlled component value */\n value?: Value[];\n\n /** Uncontrolled component default value */\n defaultValue?: Value[];\n\n /** Called when value changes */\n onChange?: (value: Value[]) => void;\n\n /** Called with `value` of the removed item */\n onRemove?: (value: Value) => void;\n\n /** Called when the clear button is clicked */\n onClear?: () => void;\n\n /** Called when user attemps to select more values than allowed */\n onMaxValues?: () => void;\n\n /** Controlled search value */\n searchValue?: string;\n\n /** Default search value */\n defaultSearchValue?: string;\n\n /** Called when search changes */\n onSearchChange?: (value: string) => void;\n\n /** Maximum number of values, no limit if not set */\n maxValues?: number;\n\n /** Allows searching through options by user input @default false */\n searchable?: boolean;\n\n /** Message displayed when no options match the search query (when searchable is enabled) or when the data array is empty. If not set, the dropdown will be hidden instead. */\n nothingFoundMessage?: React.ReactNode;\n\n /** If set, the check icon is displayed near the selected option label @default true */\n withCheckIcon?: boolean;\n\n /** If set, unchecked labels are aligned with checked ones @default false */\n withAlignedLabels?: boolean;\n\n /** Position of the checkmark icon shown next to selected options in the dropdown @default 'left' */\n checkIconPosition?: 'left' | 'right';\n\n /** When enabled, selected options are hidden from the dropdown list @default false */\n hidePickedOptions?: boolean;\n\n /** When enabled, displays a clear button to remove all selected values (hidden when component is empty, disabled, or read-only) @default false */\n clearable?: boolean;\n\n /** Determines how the clear button and rightSection are rendered @default 'both' */\n clearSectionMode?: ClearSectionMode;\n\n /** Props passed down to the clear button */\n clearButtonProps?: InputClearButtonProps;\n\n /** Props passed down to the hidden input */\n hiddenInputProps?: Omit<React.ComponentProps<'input'>, 'value'>;\n\n /** Divider used to separate values in the hidden input `value` attribute @default ',' */\n hiddenInputValuesDivider?: string;\n\n /** A function to render content of the option, replaces the default content of the option */\n renderOption?: (item: ComboboxLikeRenderOptionInput<ComboboxItem<Value>>) => React.ReactNode;\n\n /** A function to render content of the pill */\n renderPill?: (props: ComboboxRenderPillInput<Value>) => React.ReactNode;\n\n /** Props passed down to the underlying `ScrollArea` component in the dropdown */\n scrollAreaProps?: ScrollAreaProps;\n\n /** Controls color of the default chevron */\n chevronColor?: MantineColor;\n\n /** Clear search value when item is selected @default true */\n clearSearchOnChange?: boolean;\n\n /** Controls whether dropdown opens when the input receives focus @default true */\n openOnFocus?: boolean;\n\n /** If set, selected values can be reordered by dragging pills. Disabled when `disabled` or `readOnly` is set. @default false */\n withPillsReorder?: boolean;\n}\n\nexport type MultiSelectFactory = Factory<{\n props: MultiSelectProps;\n ref: HTMLInputElement;\n stylesNames: MultiSelectStylesNames;\n signature: <Value extends Primitive = string>(\n props: MultiSelectProps<Value>\n ) => React.JSX.Element;\n}>;\n\nconst defaultProps = {\n maxValues: Infinity,\n withCheckIcon: true,\n checkIconPosition: 'left',\n hiddenInputValuesDivider: ',',\n clearSearchOnChange: true,\n openOnFocus: true,\n size: 'sm',\n} satisfies Partial<MultiSelectProps>;\n\nexport const MultiSelect = genericFactory<MultiSelectFactory>((_props) => {\n const props = useProps(['Input', 'InputWrapper', 'MultiSelect'], defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n size,\n value,\n defaultValue,\n onChange,\n onKeyDown,\n variant,\n data,\n dropdownOpened,\n defaultDropdownOpened,\n onDropdownOpen,\n onDropdownClose,\n selectFirstOptionOnChange,\n selectFirstOptionOnDropdownOpen,\n onOptionSubmit,\n comboboxProps,\n filter,\n limit,\n withScrollArea,\n maxDropdownHeight,\n searchValue,\n defaultSearchValue,\n onSearchChange,\n readOnly,\n disabled,\n onFocus,\n onBlur,\n radius,\n rightSection,\n rightSectionWidth,\n rightSectionPointerEvents,\n rightSectionProps,\n leftSection,\n leftSectionWidth,\n leftSectionPointerEvents,\n leftSectionProps,\n inputContainer,\n inputWrapperOrder,\n withAsterisk,\n labelProps,\n descriptionProps,\n errorProps,\n wrapperProps,\n description,\n label,\n error,\n maxValues,\n searchable,\n nothingFoundMessage,\n withCheckIcon,\n withAlignedLabels,\n checkIconPosition,\n hidePickedOptions,\n withErrorStyles,\n name,\n form,\n id,\n clearable,\n clearSectionMode,\n clearButtonProps,\n hiddenInputProps,\n placeholder,\n hiddenInputValuesDivider,\n required,\n mod,\n renderOption,\n renderPill,\n onRemove,\n onClear,\n onMaxValues,\n scrollAreaProps,\n chevronColor,\n attributes,\n clearSearchOnChange,\n openOnFocus,\n loading,\n loadingPosition,\n withPillsReorder,\n ...others\n } = props;\n\n const _id = useId(id);\n const parsedData = getParsedComboboxData(data);\n const optionsLockup = getOptionsLockup(parsedData);\n const retainedSelectedOptions = useRef<Record<string, ComboboxItem<Primitive>>>({});\n\n const combobox = useCombobox({\n opened: dropdownOpened,\n defaultOpened: defaultDropdownOpened,\n onDropdownOpen: () => {\n onDropdownOpen?.();\n if (selectFirstOptionOnDropdownOpen) {\n combobox.selectFirstOption();\n }\n },\n onDropdownClose: () => {\n onDropdownClose?.();\n combobox.resetSelectedOption();\n },\n });\n\n const {\n styleProps,\n rest: { type, autoComplete, ...rest },\n } = extractStyleProps(others);\n\n const [_value, setValue] = useUncontrolled({\n value,\n defaultValue,\n finalValue: [],\n onChange,\n });\n\n const { getPillProps, getListProps, handleInputKeyDown } = usePillsReorder({\n value: _value,\n onChange: setValue,\n enabled: withPillsReorder && !disabled && !readOnly,\n });\n\n const [_searchValue, setSearchValue] = useUncontrolled({\n value: searchValue,\n defaultValue: defaultSearchValue,\n finalValue: '',\n onChange: onSearchChange,\n });\n\n const handleSearchChange = (value: string) => {\n setSearchValue(value);\n combobox.resetSelectedOption();\n };\n\n const getStyles = useStyles<MultiSelectFactory>({\n name: 'MultiSelect',\n classes: {} as any,\n props: props as any,\n classNames,\n styles,\n unstyled,\n attributes,\n });\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<MultiSelectFactory>({\n props,\n styles,\n classNames,\n });\n\n const handleInputKeydown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n onKeyDown?.(event);\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (event.key === ' ' && !searchable) {\n event.preventDefault();\n combobox.toggleDropdown();\n }\n\n if (event.key === 'Backspace' && _searchValue.length === 0 && _value.length > 0) {\n onRemove?.(_value[_value.length - 1]);\n setValue(_value.slice(0, _value.length - 1));\n }\n\n handleInputKeyDown(event);\n };\n\n const values = _value.map((item, index) => {\n const optionData = optionsLockup[`${item}`] || retainedSelectedOptions.current[`${item}`];\n const reorderProps = getPillProps(index);\n\n if (renderPill) {\n return (\n <Fragment key={`${item}-${index}`}>\n {renderPill({\n option: optionData,\n value: item,\n onRemove: () => {\n setValue(_value.filter((i) => item !== i));\n onRemove?.(item);\n },\n disabled,\n reorderProps,\n })}\n </Fragment>\n );\n }\n\n return (\n <Pill\n key={`${item}-${index}`}\n withRemoveButton={!readOnly && !optionsLockup[`${item}`]?.disabled}\n onRemove={() => {\n setValue(_value.filter((i) => item !== i));\n onRemove?.(item);\n }}\n unstyled={unstyled}\n disabled={disabled}\n {...getStyles('pill')}\n {...reorderProps}\n >\n {optionData?.label || item}\n </Pill>\n );\n });\n\n useEffect(() => {\n if (selectFirstOptionOnChange) {\n combobox.selectFirstOption();\n }\n }, [selectFirstOptionOnChange, _searchValue]);\n\n useEffect(() => {\n _value.forEach((val) => {\n if (`${val}` in optionsLockup) {\n retainedSelectedOptions.current[`${val}`] = optionsLockup[`${val}`];\n }\n });\n }, [optionsLockup, _value]);\n\n const clearButton = (\n <Combobox.ClearButton\n {...clearButtonProps}\n onClear={() => {\n onClear?.();\n setValue([]);\n handleSearchChange('');\n }}\n />\n );\n\n const filteredData = filterPickedValues({ data: parsedData, value: _value });\n const _clearable = clearable && _value.length > 0 && !disabled && !readOnly;\n const pillsListStyle = _clearable\n ? { paddingInlineEnd: clearSectionOffset[size] ?? clearSectionOffset.sm }\n : undefined;\n\n return (\n <>\n <Combobox\n store={combobox}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n size={size}\n readOnly={readOnly}\n __staticSelector=\"MultiSelect\"\n attributes={attributes}\n onOptionSubmit={(val) => {\n onOptionSubmit?.(val as any);\n if (clearSearchOnChange) {\n handleSearchChange('');\n }\n combobox.updateSelectedOptionIndex('selected');\n\n if (_value.includes(optionsLockup[`${val}`].value as any)) {\n setValue(_value.filter((v) => v !== optionsLockup[`${val}`].value));\n onRemove?.(optionsLockup[`${val}`].value as any);\n } else if (_value.length < maxValues) {\n setValue([..._value, optionsLockup[`${val}`].value] as any);\n } else {\n onMaxValues?.();\n }\n }}\n {...comboboxProps}\n >\n <Combobox.DropdownTarget>\n <PillsInput\n {...styleProps}\n __staticSelector=\"MultiSelect\"\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n size={size}\n className={className}\n style={style}\n variant={variant}\n disabled={disabled}\n radius={radius}\n __defaultRightSection={\n <Combobox.Chevron\n size={size}\n error={error}\n unstyled={unstyled}\n color={chevronColor}\n />\n }\n __clearSection={clearButton}\n __clearable={_clearable}\n __clearSectionMode={clearSectionMode}\n rightSection={rightSection}\n rightSectionPointerEvents={rightSectionPointerEvents || 'none'}\n rightSectionWidth={rightSectionWidth}\n rightSectionProps={rightSectionProps}\n leftSection={leftSection}\n leftSectionWidth={leftSectionWidth}\n leftSectionPointerEvents={leftSectionPointerEvents}\n leftSectionProps={leftSectionProps}\n loading={loading}\n loadingPosition={loadingPosition}\n inputContainer={inputContainer}\n inputWrapperOrder={inputWrapperOrder}\n withAsterisk={withAsterisk}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorProps={errorProps}\n wrapperProps={wrapperProps}\n description={description}\n label={label}\n error={error}\n withErrorStyles={withErrorStyles}\n __stylesApiProps={{\n ...props,\n rightSectionPointerEvents: rightSectionPointerEvents || 'none',\n multiline: true,\n }}\n pointer={!searchable}\n onClick={() => (searchable ? combobox.openDropdown() : combobox.toggleDropdown())}\n data-expanded={combobox.dropdownOpened || undefined}\n id={_id}\n required={required}\n mod={mod}\n attributes={attributes}\n >\n <Pill.Group\n attributes={attributes}\n disabled={disabled}\n unstyled={unstyled}\n {...getStyles('pillsList', { style: pillsListStyle })}\n {...getListProps()}\n >\n {values}\n <Combobox.EventsTarget autoComplete={autoComplete} withExpandedAttribute>\n <PillsInput.Field\n {...rest}\n id={_id}\n placeholder={placeholder}\n type={!searchable && !placeholder ? 'hidden' : 'visible'}\n {...getStyles('inputField')}\n unstyled={unstyled}\n onFocus={(event) => {\n onFocus?.(event);\n openOnFocus && searchable && combobox.openDropdown();\n }}\n onBlur={(event) => {\n onBlur?.(event);\n combobox.closeDropdown();\n handleSearchChange('');\n }}\n onKeyDown={handleInputKeydown}\n value={_searchValue}\n onChange={(event) => {\n handleSearchChange(event.currentTarget.value);\n searchable && combobox.openDropdown();\n selectFirstOptionOnChange && combobox.selectFirstOption();\n }}\n disabled={disabled}\n readOnly={readOnly || !searchable}\n pointer={!searchable}\n />\n </Combobox.EventsTarget>\n </Pill.Group>\n </PillsInput>\n </Combobox.DropdownTarget>\n\n <OptionsDropdown\n data={hidePickedOptions ? filteredData : parsedData}\n hidden={readOnly || disabled}\n filter={filter as OptionsFilter<Primitive> | undefined}\n search={_searchValue}\n limit={limit}\n hiddenWhenEmpty={!nothingFoundMessage}\n withScrollArea={withScrollArea}\n maxDropdownHeight={maxDropdownHeight}\n filterOptions={searchable}\n value={_value}\n checkIconPosition={checkIconPosition}\n withCheckIcon={withCheckIcon}\n withAlignedLabels={withAlignedLabels}\n nothingFoundMessage={nothingFoundMessage}\n unstyled={unstyled}\n labelId={label ? `${_id}-label` : undefined}\n aria-label={label ? undefined : others['aria-label']}\n renderOption={renderOption}\n scrollAreaProps={scrollAreaProps}\n />\n </Combobox>\n <Combobox.HiddenInput\n name={name}\n valuesDivider={hiddenInputValuesDivider}\n value={_value}\n form={form}\n disabled={disabled}\n {...hiddenInputProps}\n />\n </>\n );\n});\n\nMultiSelect.classes = { ...InputBase.classes, ...Combobox.classes };\nMultiSelect.displayName = '@mantine/core/MultiSelect';\n\nexport namespace MultiSelect {\n export type Props<Value extends Primitive = string> = MultiSelectProps<Value>;\n export type StylesNames = MultiSelectStylesNames;\n export type Factory = MultiSelectFactory;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAyCA,MAAM,qBAA6C;CACjD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AA8GA,MAAM,eAAe;CACnB,WAAW;CACX,eAAe;CACf,mBAAmB;CACnB,0BAA0B;CAC1B,qBAAqB;CACrB,aAAa;CACb,MAAM;AACR;AAEA,MAAa,cAAc,gBAAoC,WAAW;CACxE,MAAM,QAAQ,SAAS;EAAC;EAAS;EAAgB;CAAa,GAAG,cAAc,MAAM;CACrF,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,MACA,OACA,cACA,UACA,WACA,SACA,MACA,gBACA,uBACA,gBACA,iBACA,2BACA,iCACA,gBACA,eACA,QACA,OACA,gBACA,mBACA,aACA,oBACA,gBACA,UACA,UACA,SACA,QACA,QACA,cACA,mBACA,2BACA,mBACA,aACA,kBACA,0BACA,kBACA,gBACA,mBACA,cACA,YACA,kBACA,YACA,cACA,aACA,OACA,OACA,WACA,YACA,qBACA,eACA,mBACA,mBACA,mBACA,iBACA,MACA,MACA,IACA,WACA,kBACA,kBACA,kBACA,aACA,0BACA,UACA,KACA,cACA,YACA,UACA,SACA,aACA,iBACA,cACA,YACA,qBACA,aACA,SACA,iBACA,kBACA,GAAG,WACD;CAEJ,MAAM,MAAMA,QAAM,EAAE;CACpB,MAAM,aAAa,sBAAsB,IAAI;CAC7C,MAAM,gBAAgB,iBAAiB,UAAU;CACjD,MAAM,0BAA0B,OAAgD,CAAC,CAAC;CAElF,MAAM,WAAW,YAAY;EAC3B,QAAQ;EACR,eAAe;EACf,sBAAsB;GACpB,iBAAiB;GACjB,IAAI,iCACF,SAAS,kBAAkB;EAE/B;EACA,uBAAuB;GACrB,kBAAkB;GAClB,SAAS,oBAAoB;EAC/B;CACF,CAAC;CAED,MAAM,EACJ,YACA,MAAM,EAAE,MAAM,cAAc,GAAG,WAC7B,kBAAkB,MAAM;CAE5B,MAAM,CAAC,QAAQ,YAAY,gBAAgB;EACzC;EACA;EACA,YAAY,CAAC;EACb;CACF,CAAC;CAED,MAAM,EAAE,cAAc,cAAc,uBAAuB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"}
|
|
1
|
+
{"version":3,"file":"MultiSelect.mjs","names":["useId"],"sources":["../../../src/components/MultiSelect/MultiSelect.tsx"],"sourcesContent":["import { Fragment, useEffect, useRef } from 'react';\nimport { useId, useUncontrolled } from '@mantine/hooks';\nimport {\n BoxProps,\n ElementProps,\n extractStyleProps,\n Factory,\n genericFactory,\n MantineColor,\n Primitive,\n StylesApiProps,\n useProps,\n useResolvedStylesApi,\n useStyles,\n} from '../../core';\nimport {\n Combobox,\n ComboboxItem,\n ComboboxLikeProps,\n ComboboxLikeRenderOptionInput,\n ComboboxLikeStylesNames,\n ComboboxRenderPillInput,\n getOptionsLockup,\n getParsedComboboxData,\n OptionsDropdown,\n OptionsFilter,\n useCombobox,\n usePillsReorder,\n} from '../Combobox';\nimport {\n __BaseInputProps,\n __InputStylesNames,\n ClearSectionMode,\n InputClearButtonProps,\n} from '../Input';\nimport { InputBase } from '../InputBase';\nimport { Pill } from '../Pill';\nimport { PillsInput } from '../PillsInput';\nimport { ScrollAreaProps } from '../ScrollArea';\nimport { filterPickedValues } from './filter-picked-values';\n\nconst clearSectionOffset: Record<string, number> = {\n xs: 41,\n sm: 50,\n md: 60,\n lg: 72,\n xl: 89,\n};\n\nexport type MultiSelectStylesNames =\n | __InputStylesNames\n | ComboboxLikeStylesNames\n | 'pill'\n | 'pillsList'\n | 'inputField';\n\nexport interface MultiSelectProps<Value extends Primitive = string>\n extends\n BoxProps,\n __BaseInputProps,\n ComboboxLikeProps<Value>,\n StylesApiProps<MultiSelectFactory>,\n ElementProps<'input', 'size' | 'value' | 'defaultValue' | 'onChange'> {\n /** Controlled component value */\n value?: Value[];\n\n /** Uncontrolled component default value */\n defaultValue?: Value[];\n\n /** Called when value changes */\n onChange?: (value: Value[]) => void;\n\n /** Called with `value` of the removed item */\n onRemove?: (value: Value) => void;\n\n /** Called when the clear button is clicked */\n onClear?: () => void;\n\n /** Called when user attemps to select more values than allowed */\n onMaxValues?: () => void;\n\n /** Controlled search value */\n searchValue?: string;\n\n /** Default search value */\n defaultSearchValue?: string;\n\n /** Called when search changes */\n onSearchChange?: (value: string) => void;\n\n /** Maximum number of values, no limit if not set */\n maxValues?: number;\n\n /** Allows searching through options by user input @default false */\n searchable?: boolean;\n\n /** Message displayed when no options match the search query (when searchable is enabled) or when the data array is empty. If not set, the dropdown will be hidden instead. */\n nothingFoundMessage?: React.ReactNode;\n\n /** If set, the check icon is displayed near the selected option label @default true */\n withCheckIcon?: boolean;\n\n /** If set, unchecked labels are aligned with checked ones @default false */\n withAlignedLabels?: boolean;\n\n /** Position of the checkmark icon shown next to selected options in the dropdown @default 'left' */\n checkIconPosition?: 'left' | 'right';\n\n /** When enabled, selected options are hidden from the dropdown list @default false */\n hidePickedOptions?: boolean;\n\n /** When enabled, displays a clear button to remove all selected values (hidden when component is empty, disabled, or read-only) @default false */\n clearable?: boolean;\n\n /** Determines how the clear button and rightSection are rendered @default 'both' */\n clearSectionMode?: ClearSectionMode;\n\n /** Props passed down to the clear button */\n clearButtonProps?: InputClearButtonProps;\n\n /** Props passed down to the hidden input */\n hiddenInputProps?: Omit<React.ComponentProps<'input'>, 'value'>;\n\n /** Divider used to separate values in the hidden input `value` attribute @default ',' */\n hiddenInputValuesDivider?: string;\n\n /** A function to render content of the option, replaces the default content of the option */\n renderOption?: (item: ComboboxLikeRenderOptionInput<ComboboxItem<Value>>) => React.ReactNode;\n\n /** A function to render content of the pill */\n renderPill?: (props: ComboboxRenderPillInput<Value>) => React.ReactNode;\n\n /** Props passed down to the underlying `ScrollArea` component in the dropdown */\n scrollAreaProps?: ScrollAreaProps;\n\n /** Controls color of the default chevron */\n chevronColor?: MantineColor;\n\n /** Clear search value when item is selected @default true */\n clearSearchOnChange?: boolean;\n\n /** Controls whether dropdown opens when the input receives focus @default true */\n openOnFocus?: boolean;\n\n /** If set, selected values can be reordered by dragging pills. Disabled when `disabled` or `readOnly` is set. @default false */\n withPillsReorder?: boolean;\n}\n\nexport type MultiSelectFactory = Factory<{\n props: MultiSelectProps;\n ref: HTMLInputElement;\n stylesNames: MultiSelectStylesNames;\n signature: <Value extends Primitive = string>(\n props: MultiSelectProps<Value>\n ) => React.JSX.Element;\n}>;\n\nconst defaultProps = {\n maxValues: Infinity,\n withCheckIcon: true,\n checkIconPosition: 'left',\n hiddenInputValuesDivider: ',',\n clearSearchOnChange: true,\n openOnFocus: true,\n size: 'sm',\n} satisfies Partial<MultiSelectProps>;\n\nexport const MultiSelect = genericFactory<MultiSelectFactory>((_props) => {\n const props = useProps(['Input', 'InputWrapper', 'MultiSelect'], defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n size,\n value,\n defaultValue,\n onChange,\n onKeyDown,\n variant,\n data,\n dropdownOpened,\n defaultDropdownOpened,\n onDropdownOpen,\n onDropdownClose,\n selectFirstOptionOnChange,\n selectFirstOptionOnDropdownOpen,\n onOptionSubmit,\n comboboxProps,\n filter,\n limit,\n withScrollArea,\n maxDropdownHeight,\n floatingHeight,\n searchValue,\n defaultSearchValue,\n onSearchChange,\n readOnly,\n disabled,\n onFocus,\n onBlur,\n radius,\n rightSection,\n rightSectionWidth,\n rightSectionPointerEvents,\n rightSectionProps,\n leftSection,\n leftSectionWidth,\n leftSectionPointerEvents,\n leftSectionProps,\n inputContainer,\n inputWrapperOrder,\n withAsterisk,\n labelProps,\n descriptionProps,\n errorProps,\n wrapperProps,\n description,\n label,\n error,\n maxValues,\n searchable,\n nothingFoundMessage,\n withCheckIcon,\n withAlignedLabels,\n checkIconPosition,\n hidePickedOptions,\n withErrorStyles,\n name,\n form,\n id,\n clearable,\n clearSectionMode,\n clearButtonProps,\n hiddenInputProps,\n placeholder,\n hiddenInputValuesDivider,\n required,\n mod,\n renderOption,\n renderPill,\n onRemove,\n onClear,\n onMaxValues,\n scrollAreaProps,\n chevronColor,\n attributes,\n clearSearchOnChange,\n openOnFocus,\n loading,\n loadingPosition,\n withPillsReorder,\n ...others\n } = props;\n\n const _id = useId(id);\n const parsedData = getParsedComboboxData(data);\n const optionsLockup = getOptionsLockup(parsedData);\n const retainedSelectedOptions = useRef<Record<string, ComboboxItem<Primitive>>>({});\n\n const combobox = useCombobox({\n opened: dropdownOpened,\n defaultOpened: defaultDropdownOpened,\n onDropdownOpen: () => {\n onDropdownOpen?.();\n if (selectFirstOptionOnDropdownOpen) {\n combobox.selectFirstOption();\n }\n },\n onDropdownClose: () => {\n onDropdownClose?.();\n combobox.resetSelectedOption();\n },\n });\n\n const {\n styleProps,\n rest: { type, autoComplete, ...rest },\n } = extractStyleProps(others);\n\n const [_value, setValue] = useUncontrolled({\n value,\n defaultValue,\n finalValue: [],\n onChange,\n });\n\n const { getPillProps, getListProps, handleInputKeyDown } = usePillsReorder({\n value: _value,\n onChange: setValue,\n enabled: withPillsReorder && !disabled && !readOnly,\n });\n\n const [_searchValue, setSearchValue] = useUncontrolled({\n value: searchValue,\n defaultValue: defaultSearchValue,\n finalValue: '',\n onChange: onSearchChange,\n });\n\n const handleSearchChange = (value: string) => {\n setSearchValue(value);\n combobox.resetSelectedOption();\n };\n\n const getStyles = useStyles<MultiSelectFactory>({\n name: 'MultiSelect',\n classes: {} as any,\n props: props as any,\n classNames,\n styles,\n unstyled,\n attributes,\n });\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<MultiSelectFactory>({\n props,\n styles,\n classNames,\n });\n\n const handleInputKeydown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n onKeyDown?.(event);\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (event.key === ' ' && !searchable) {\n event.preventDefault();\n combobox.toggleDropdown();\n }\n\n if (event.key === 'Backspace' && _searchValue.length === 0 && _value.length > 0) {\n onRemove?.(_value[_value.length - 1]);\n setValue(_value.slice(0, _value.length - 1));\n }\n\n handleInputKeyDown(event);\n };\n\n const values = _value.map((item, index) => {\n const optionData = optionsLockup[`${item}`] || retainedSelectedOptions.current[`${item}`];\n const reorderProps = getPillProps(index);\n\n if (renderPill) {\n return (\n <Fragment key={`${item}-${index}`}>\n {renderPill({\n option: optionData,\n value: item,\n onRemove: () => {\n setValue(_value.filter((i) => item !== i));\n onRemove?.(item);\n },\n disabled,\n reorderProps,\n })}\n </Fragment>\n );\n }\n\n return (\n <Pill\n key={`${item}-${index}`}\n withRemoveButton={!readOnly && !optionsLockup[`${item}`]?.disabled}\n onRemove={() => {\n setValue(_value.filter((i) => item !== i));\n onRemove?.(item);\n }}\n unstyled={unstyled}\n disabled={disabled}\n {...getStyles('pill')}\n {...reorderProps}\n >\n {optionData?.label || item}\n </Pill>\n );\n });\n\n useEffect(() => {\n if (selectFirstOptionOnChange) {\n combobox.selectFirstOption();\n }\n }, [selectFirstOptionOnChange, _searchValue]);\n\n useEffect(() => {\n _value.forEach((val) => {\n if (`${val}` in optionsLockup) {\n retainedSelectedOptions.current[`${val}`] = optionsLockup[`${val}`];\n }\n });\n }, [optionsLockup, _value]);\n\n const clearButton = (\n <Combobox.ClearButton\n {...clearButtonProps}\n onClear={() => {\n onClear?.();\n setValue([]);\n handleSearchChange('');\n }}\n />\n );\n\n const filteredData = filterPickedValues({ data: parsedData, value: _value });\n const _clearable = clearable && _value.length > 0 && !disabled && !readOnly;\n const pillsListStyle = _clearable\n ? { paddingInlineEnd: clearSectionOffset[size] ?? clearSectionOffset.sm }\n : undefined;\n\n return (\n <>\n <Combobox\n store={combobox}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n size={size}\n readOnly={readOnly}\n __staticSelector=\"MultiSelect\"\n attributes={attributes}\n floatingHeight={floatingHeight}\n onOptionSubmit={(val) => {\n onOptionSubmit?.(val as any);\n if (clearSearchOnChange) {\n handleSearchChange('');\n }\n combobox.updateSelectedOptionIndex('selected');\n\n if (_value.includes(optionsLockup[`${val}`].value as any)) {\n setValue(_value.filter((v) => v !== optionsLockup[`${val}`].value));\n onRemove?.(optionsLockup[`${val}`].value as any);\n } else if (_value.length < maxValues) {\n setValue([..._value, optionsLockup[`${val}`].value] as any);\n } else {\n onMaxValues?.();\n }\n }}\n {...comboboxProps}\n >\n <Combobox.DropdownTarget>\n <PillsInput\n {...styleProps}\n __staticSelector=\"MultiSelect\"\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n size={size}\n className={className}\n style={style}\n variant={variant}\n disabled={disabled}\n radius={radius}\n __defaultRightSection={\n <Combobox.Chevron\n size={size}\n error={error}\n unstyled={unstyled}\n color={chevronColor}\n />\n }\n __clearSection={clearButton}\n __clearable={_clearable}\n __clearSectionMode={clearSectionMode}\n rightSection={rightSection}\n rightSectionPointerEvents={rightSectionPointerEvents || 'none'}\n rightSectionWidth={rightSectionWidth}\n rightSectionProps={rightSectionProps}\n leftSection={leftSection}\n leftSectionWidth={leftSectionWidth}\n leftSectionPointerEvents={leftSectionPointerEvents}\n leftSectionProps={leftSectionProps}\n loading={loading}\n loadingPosition={loadingPosition}\n inputContainer={inputContainer}\n inputWrapperOrder={inputWrapperOrder}\n withAsterisk={withAsterisk}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorProps={errorProps}\n wrapperProps={wrapperProps}\n description={description}\n label={label}\n error={error}\n withErrorStyles={withErrorStyles}\n __stylesApiProps={{\n ...props,\n rightSectionPointerEvents: rightSectionPointerEvents || 'none',\n multiline: true,\n }}\n pointer={!searchable}\n onClick={() => (searchable ? combobox.openDropdown() : combobox.toggleDropdown())}\n data-expanded={combobox.dropdownOpened || undefined}\n id={_id}\n required={required}\n mod={mod}\n attributes={attributes}\n >\n <Pill.Group\n attributes={attributes}\n disabled={disabled}\n unstyled={unstyled}\n {...getStyles('pillsList', { style: pillsListStyle })}\n {...getListProps()}\n >\n {values}\n <Combobox.EventsTarget autoComplete={autoComplete} withExpandedAttribute>\n <PillsInput.Field\n {...rest}\n id={_id}\n placeholder={placeholder}\n type={!searchable && !placeholder ? 'hidden' : 'visible'}\n {...getStyles('inputField')}\n unstyled={unstyled}\n onFocus={(event) => {\n onFocus?.(event);\n openOnFocus && searchable && combobox.openDropdown();\n }}\n onBlur={(event) => {\n onBlur?.(event);\n combobox.closeDropdown();\n handleSearchChange('');\n }}\n onKeyDown={handleInputKeydown}\n value={_searchValue}\n onChange={(event) => {\n handleSearchChange(event.currentTarget.value);\n searchable && combobox.openDropdown();\n selectFirstOptionOnChange && combobox.selectFirstOption();\n }}\n disabled={disabled}\n readOnly={readOnly || !searchable}\n pointer={!searchable}\n />\n </Combobox.EventsTarget>\n </Pill.Group>\n </PillsInput>\n </Combobox.DropdownTarget>\n\n <OptionsDropdown\n data={hidePickedOptions ? filteredData : parsedData}\n hidden={readOnly || disabled}\n filter={filter as OptionsFilter<Primitive> | undefined}\n search={_searchValue}\n limit={limit}\n hiddenWhenEmpty={!nothingFoundMessage}\n withScrollArea={withScrollArea}\n maxDropdownHeight={maxDropdownHeight}\n filterOptions={searchable}\n value={_value}\n checkIconPosition={checkIconPosition}\n withCheckIcon={withCheckIcon}\n withAlignedLabels={withAlignedLabels}\n nothingFoundMessage={nothingFoundMessage}\n unstyled={unstyled}\n labelId={label ? `${_id}-label` : undefined}\n aria-label={label ? undefined : others['aria-label']}\n renderOption={renderOption}\n scrollAreaProps={scrollAreaProps}\n />\n </Combobox>\n <Combobox.HiddenInput\n name={name}\n valuesDivider={hiddenInputValuesDivider}\n value={_value}\n form={form}\n disabled={disabled}\n {...hiddenInputProps}\n />\n </>\n );\n});\n\nMultiSelect.classes = { ...InputBase.classes, ...Combobox.classes };\nMultiSelect.displayName = '@mantine/core/MultiSelect';\n\nexport namespace MultiSelect {\n export type Props<Value extends Primitive = string> = MultiSelectProps<Value>;\n export type StylesNames = MultiSelectStylesNames;\n export type Factory = MultiSelectFactory;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAyCA,MAAM,qBAA6C;CACjD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AA8GA,MAAM,eAAe;CACnB,WAAW;CACX,eAAe;CACf,mBAAmB;CACnB,0BAA0B;CAC1B,qBAAqB;CACrB,aAAa;CACb,MAAM;AACR;AAEA,MAAa,cAAc,gBAAoC,WAAW;CACxE,MAAM,QAAQ,SAAS;EAAC;EAAS;EAAgB;CAAa,GAAG,cAAc,MAAM;CACrF,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,MACA,OACA,cACA,UACA,WACA,SACA,MACA,gBACA,uBACA,gBACA,iBACA,2BACA,iCACA,gBACA,eACA,QACA,OACA,gBACA,mBACA,gBACA,aACA,oBACA,gBACA,UACA,UACA,SACA,QACA,QACA,cACA,mBACA,2BACA,mBACA,aACA,kBACA,0BACA,kBACA,gBACA,mBACA,cACA,YACA,kBACA,YACA,cACA,aACA,OACA,OACA,WACA,YACA,qBACA,eACA,mBACA,mBACA,mBACA,iBACA,MACA,MACA,IACA,WACA,kBACA,kBACA,kBACA,aACA,0BACA,UACA,KACA,cACA,YACA,UACA,SACA,aACA,iBACA,cACA,YACA,qBACA,aACA,SACA,iBACA,kBACA,GAAG,WACD;CAEJ,MAAM,MAAMA,QAAM,EAAE;CACpB,MAAM,aAAa,sBAAsB,IAAI;CAC7C,MAAM,gBAAgB,iBAAiB,UAAU;CACjD,MAAM,0BAA0B,OAAgD,CAAC,CAAC;CAElF,MAAM,WAAW,YAAY;EAC3B,QAAQ;EACR,eAAe;EACf,sBAAsB;GACpB,iBAAiB;GACjB,IAAI,iCACF,SAAS,kBAAkB;EAE/B;EACA,uBAAuB;GACrB,kBAAkB;GAClB,SAAS,oBAAoB;EAC/B;CACF,CAAC;CAED,MAAM,EACJ,YACA,MAAM,EAAE,MAAM,cAAc,GAAG,WAC7B,kBAAkB,MAAM;CAE5B,MAAM,CAAC,QAAQ,YAAY,gBAAgB;EACzC;EACA;EACA,YAAY,CAAC;EACb;CACF,CAAC;CAED,MAAM,EAAE,cAAc,cAAc,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"}
|
|
@@ -8,7 +8,7 @@ import { Box } from "../../core/Box/Box.mjs";
|
|
|
8
8
|
import { getRowPositionsData } from "./get-row-position-data.mjs";
|
|
9
9
|
import { useDimensions } from "./use-dimensions.mjs";
|
|
10
10
|
import OverflowList_module_default from "./OverflowList.module.mjs";
|
|
11
|
-
import { cloneElement, useRef, useState } from "react";
|
|
11
|
+
import { cloneElement, useMemo, useRef, useState } from "react";
|
|
12
12
|
import { useIsomorphicEffect, useMergedRef } from "@mantine/hooks";
|
|
13
13
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
14
14
|
//#region packages/@mantine/core/src/components/OverflowList/OverflowList.tsx
|
|
@@ -17,9 +17,15 @@ const defaultProps = {
|
|
|
17
17
|
maxVisibleItems: Infinity
|
|
18
18
|
};
|
|
19
19
|
const varsResolver = createVarsResolver((_, { gap }) => ({ root: { "--ol-gap": getSpacing(gap) } }));
|
|
20
|
+
function getDataSignature(data, getItemKey) {
|
|
21
|
+
return data.map((item, index) => {
|
|
22
|
+
if (getItemKey) return getItemKey(item, index);
|
|
23
|
+
return item !== null && (typeof item === "object" || typeof item === "function") ? index : String(item);
|
|
24
|
+
}).join("\0");
|
|
25
|
+
}
|
|
20
26
|
const OverflowList = genericFactory((_props) => {
|
|
21
27
|
const props = useProps("OverflowList", defaultProps, _props);
|
|
22
|
-
const { classNames, className, style, styles, unstyled, vars, attributes, data, renderOverflow, renderItem, maxRows, maxVisibleItems, ref, ...others } = props;
|
|
28
|
+
const { classNames, className, style, styles, unstyled, vars, attributes, data, renderOverflow, renderItem, maxRows, maxVisibleItems, collapseFrom, getItemKey, ref, ...others } = props;
|
|
23
29
|
const getStyles = useStyles({
|
|
24
30
|
name: "OverflowList",
|
|
25
31
|
classes: OverflowList_module_default,
|
|
@@ -39,7 +45,10 @@ const OverflowList = genericFactory((_props) => {
|
|
|
39
45
|
const containerRef = useRef(null);
|
|
40
46
|
const rootRef = useMergedRef(containerRef, ref);
|
|
41
47
|
const finalVisibleCount = visibleCount - subtractCount;
|
|
42
|
-
const
|
|
48
|
+
const showOverflow = data.length - finalVisibleCount > 0 && phase !== "measuring";
|
|
49
|
+
const isCollapseStart = collapseFrom === "start";
|
|
50
|
+
const overflowItems = isCollapseStart ? data.slice(0, data.length - finalVisibleCount) : data.slice(finalVisibleCount);
|
|
51
|
+
const overflowElement = showOverflow ? renderOverflow?.(overflowItems) : null;
|
|
43
52
|
const _overflowRef = useRef(null);
|
|
44
53
|
const overflowRef = useMergedRef(_overflowRef, overflowElement?.ref);
|
|
45
54
|
const dimensions = useDimensions(containerRef);
|
|
@@ -47,7 +56,11 @@ const OverflowList = genericFactory((_props) => {
|
|
|
47
56
|
setPhase("measuring");
|
|
48
57
|
setVisibleCount(data.length);
|
|
49
58
|
setSubtractCount(0);
|
|
50
|
-
}, [
|
|
59
|
+
}, [
|
|
60
|
+
useMemo(() => getDataSignature(data, getItemKey), [data, getItemKey]),
|
|
61
|
+
maxRows,
|
|
62
|
+
collapseFrom
|
|
63
|
+
]);
|
|
51
64
|
useIsomorphicEffect(() => {
|
|
52
65
|
if (phase === "measuring") {
|
|
53
66
|
countVisibleItems();
|
|
@@ -65,12 +78,41 @@ const OverflowList = genericFactory((_props) => {
|
|
|
65
78
|
setSubtractCount(0);
|
|
66
79
|
}
|
|
67
80
|
}, [dimensions]);
|
|
81
|
+
const fitsInRows = (itemWidths, containerWidth, columnGap, startIndex = 0) => {
|
|
82
|
+
let rows = 1;
|
|
83
|
+
let rowWidth = 0;
|
|
84
|
+
for (let i = startIndex; i < itemWidths.length; i += 1) {
|
|
85
|
+
const width = itemWidths[i];
|
|
86
|
+
const needed = rowWidth > 0 ? width + columnGap : width;
|
|
87
|
+
if (rowWidth + needed > containerWidth && rowWidth > 0) {
|
|
88
|
+
rows++;
|
|
89
|
+
if (rows > maxRows) return false;
|
|
90
|
+
rowWidth = width;
|
|
91
|
+
} else rowWidth += needed;
|
|
92
|
+
}
|
|
93
|
+
return true;
|
|
94
|
+
};
|
|
68
95
|
const countVisibleItems = () => {
|
|
69
96
|
const rowData = getRowPositionsData(containerRef, _overflowRef);
|
|
70
97
|
if (!rowData) return;
|
|
98
|
+
const container = containerRef.current;
|
|
99
|
+
if (!container) return;
|
|
100
|
+
if (isCollapseStart) {
|
|
101
|
+
const containerWidth = container.getBoundingClientRect().width;
|
|
102
|
+
const columnGap = parseFloat(getComputedStyle(container).columnGap) || 0;
|
|
103
|
+
const widths = rowData.children.map((child) => child.getBoundingClientRect().width);
|
|
104
|
+
let count = 0;
|
|
105
|
+
for (let i = widths.length - 1; i >= 0; i--) {
|
|
106
|
+
if (!fitsInRows(widths, containerWidth, columnGap, i)) break;
|
|
107
|
+
count = widths.length - i;
|
|
108
|
+
}
|
|
109
|
+
count = Math.min(count, maxVisibleItems);
|
|
110
|
+
setVisibleCount(count);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
71
113
|
if (data.length === 1) {
|
|
72
114
|
const itemRef = rowData.itemsSizesMap[rowData.rowPositions[0]].elements.values().next().value;
|
|
73
|
-
const containerWidth =
|
|
115
|
+
const containerWidth = container.getBoundingClientRect().width;
|
|
74
116
|
if ((itemRef?.getBoundingClientRect().width ?? 0) > containerWidth) setVisibleCount(0);
|
|
75
117
|
else setVisibleCount(1);
|
|
76
118
|
return;
|
|
@@ -86,6 +128,17 @@ const OverflowList = genericFactory((_props) => {
|
|
|
86
128
|
const rowData = getRowPositionsData(containerRef, _overflowRef);
|
|
87
129
|
if (!rowData) return false;
|
|
88
130
|
const { rowPositions, itemsSizesMap } = rowData;
|
|
131
|
+
if (isCollapseStart) {
|
|
132
|
+
const container = containerRef.current;
|
|
133
|
+
if (!container) return false;
|
|
134
|
+
const containerWidth = container.getBoundingClientRect().width;
|
|
135
|
+
const columnGap = parseFloat(getComputedStyle(container).columnGap) || 0;
|
|
136
|
+
if (!fitsInRows([_overflowRef.current.getBoundingClientRect().width, ...rowData.children.map((child) => child.getBoundingClientRect().width)], containerWidth, columnGap)) {
|
|
137
|
+
setSubtractCount((c) => c + 1);
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
89
142
|
const overflowRect = _overflowRef.current.getBoundingClientRect();
|
|
90
143
|
if (overflowRect.top + overflowRect.height / 2 > itemsSizesMap[rowPositions[rowPositions.length - 1]].bottom) {
|
|
91
144
|
setSubtractCount((c) => c + 1);
|
|
@@ -95,15 +148,21 @@ const OverflowList = genericFactory((_props) => {
|
|
|
95
148
|
};
|
|
96
149
|
const clonedOverflowElement = overflowElement ? cloneElement(overflowElement, { ref: overflowRef }) : null;
|
|
97
150
|
let finalItems = data;
|
|
98
|
-
if (maxVisibleItems) finalItems = finalItems.slice(0, maxVisibleItems);
|
|
151
|
+
if (maxVisibleItems) finalItems = isCollapseStart ? finalItems.slice(-maxVisibleItems) : finalItems.slice(0, maxVisibleItems);
|
|
152
|
+
const indexOffset = isCollapseStart ? data.length - finalItems.length : 0;
|
|
99
153
|
return /* @__PURE__ */ jsxs(Box, {
|
|
100
154
|
ref: rootRef,
|
|
101
155
|
...getStyles("root"),
|
|
102
156
|
...others,
|
|
103
|
-
children: [
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
157
|
+
children: [
|
|
158
|
+
isCollapseStart && clonedOverflowElement,
|
|
159
|
+
finalItems.map((item, index) => {
|
|
160
|
+
if (!(phase === "measuring" || (isCollapseStart ? index >= finalItems.length - finalVisibleCount : index < finalVisibleCount))) return null;
|
|
161
|
+
const dataIndex = indexOffset + index;
|
|
162
|
+
return /* @__PURE__ */ jsx(Fragment$1, { children: renderItem(item, dataIndex) }, dataIndex);
|
|
163
|
+
}),
|
|
164
|
+
!isCollapseStart && clonedOverflowElement
|
|
165
|
+
]
|
|
107
166
|
});
|
|
108
167
|
});
|
|
109
168
|
OverflowList.displayName = "@mantine/core/OverflowList";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverflowList.mjs","names":["Fragment","classes"],"sources":["../../../src/components/OverflowList/OverflowList.tsx"],"sourcesContent":["// Originally based on https://github.com/Eliav2/react-responsive-overflow-list (MIT License)\n// Contains the modified version adapted for Mantine\nimport { cloneElement, Ref, useRef, useState } from 'react';\nimport { Fragment } from 'react/jsx-runtime';\nimport { useIsomorphicEffect, useMergedRef } from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n Factory,\n genericFactory,\n getSpacing,\n MantineSpacing,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport { getRowPositionsData } from './get-row-position-data';\nimport { useDimensions } from './use-dimensions';\nimport classes from './OverflowList.module.css';\n\nexport type OverflowListStylesNames = 'root';\nexport type OverflowListCssVariables = {\n root: '--ol-gap';\n};\n\nexport interface OverflowListProps<T = any>\n extends BoxProps, StylesApiProps<OverflowListFactory>, ElementProps<'div', 'children'> {\n /** Array of items to display */\n data: T[];\n\n /** Function to render item */\n renderItem: (item: T, index: number) => React.ReactNode;\n\n /** Function to render hidden items */\n renderOverflow: (items: T[]) => React.ReactNode;\n\n /** Number of rows to display @default 1 */\n maxRows?: number;\n\n /** Maximum number of visible items @default Infinity */\n maxVisibleItems?: number;\n\n /** Key of `theme.spacing` or any valid CSS value for `gap`, numbers are converted to rem @default 'xs' */\n gap?: MantineSpacing;\n\n ref?: Ref<HTMLDivElement>;\n}\n\nexport type OverflowListFactory = Factory<{\n props: OverflowListProps<any>;\n ref: HTMLDivElement;\n stylesNames: OverflowListStylesNames;\n vars: OverflowListCssVariables;\n signature: <T = any>(props: OverflowListProps<T>) => React.JSX.Element;\n}>;\n\nconst defaultProps = {\n maxRows: 1,\n maxVisibleItems: Infinity,\n} satisfies Partial<OverflowListProps<any>>;\n\nconst varsResolver = createVarsResolver<OverflowListFactory>((_, { gap }) => ({\n root: {\n '--ol-gap': getSpacing(gap),\n },\n}));\n\nexport const OverflowList = genericFactory<OverflowListFactory>((_props) => {\n const props = useProps('OverflowList', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n attributes,\n data,\n renderOverflow,\n renderItem,\n maxRows,\n maxVisibleItems,\n ref,\n ...others\n } = props;\n\n const getStyles = useStyles<OverflowListFactory>({\n name: 'OverflowList',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const [visibleCount, setVisibleCount] = useState(data.length);\n const [subtractCount, setSubtractCount] = useState(0);\n const [phase, setPhase] = useState<'normal' | 'measuring' | 'measuring-overflow-indicator'>(\n 'normal'\n );\n\n const containerRef = useRef<HTMLElement>(null);\n const rootRef = useMergedRef(containerRef, ref);\n const finalVisibleCount = visibleCount - subtractCount;\n const overflowCount = data.length - finalVisibleCount;\n const showOverflow = overflowCount > 0 && phase !== 'measuring';\n const overflowElement = showOverflow ? renderOverflow?.(data.slice(finalVisibleCount)) : null;\n\n const _overflowRef = useRef<HTMLElement>(null);\n const overflowRef = useMergedRef(_overflowRef, (overflowElement as any)?.ref);\n const dimensions = useDimensions(containerRef);\n\n useIsomorphicEffect(() => {\n setPhase('measuring');\n setVisibleCount(data.length);\n setSubtractCount(0);\n }, [data.length, maxRows]);\n\n useIsomorphicEffect(() => {\n if (phase === 'measuring') {\n countVisibleItems();\n setPhase('measuring-overflow-indicator');\n }\n }, [phase]);\n\n useIsomorphicEffect(() => {\n if (phase === 'measuring-overflow-indicator') {\n const updateWasNeeded = updateOverflowIndicator();\n if (!updateWasNeeded) {\n setPhase('normal');\n }\n }\n }, [phase, subtractCount]);\n\n useIsomorphicEffect(() => {\n if (phase === 'normal') {\n setPhase('measuring');\n setSubtractCount(0);\n }\n }, [dimensions]);\n\n const countVisibleItems = () => {\n const rowData = getRowPositionsData(containerRef, _overflowRef);\n if (!rowData) {\n return;\n }\n\n if (data.length === 1) {\n const itemRef = rowData.itemsSizesMap[rowData.rowPositions[0]].elements.values().next().value;\n const containerWidth = containerRef.current?.getBoundingClientRect().width ?? 0;\n const itemWidth = itemRef?.getBoundingClientRect().width ?? 0;\n\n if (itemWidth > containerWidth) {\n setVisibleCount(0);\n } else {\n setVisibleCount(1);\n }\n\n return;\n }\n\n const visibleRowPositions = rowData.rowPositions.slice(0, maxRows);\n\n let fittingCount = visibleRowPositions.reduce((acc, position) => {\n return acc + rowData.itemsSizesMap[position].elements.size;\n }, 0);\n\n fittingCount = Math.min(fittingCount, maxVisibleItems);\n setVisibleCount(fittingCount);\n };\n\n const updateOverflowIndicator = () => {\n if (!_overflowRef.current) {\n return false;\n }\n const rowData = getRowPositionsData(containerRef, _overflowRef);\n if (!rowData) {\n return false;\n }\n\n const { rowPositions, itemsSizesMap } = rowData;\n\n const overflowRect = _overflowRef.current.getBoundingClientRect();\n const overflowMiddleY = overflowRect.top + overflowRect.height / 2;\n const lastRowTop = rowPositions[rowPositions.length - 1];\n const lastRow = itemsSizesMap[lastRowTop];\n\n if (overflowMiddleY > lastRow.bottom) {\n setSubtractCount((c) => c + 1);\n return true;\n }\n\n return false;\n };\n\n const clonedOverflowElement = overflowElement\n ? cloneElement(overflowElement as React.ReactElement<any>, { ref: overflowRef })\n : null;\n\n let finalItems = data;\n if (maxVisibleItems) {\n finalItems = finalItems.slice(0, maxVisibleItems);\n }\n\n return (\n <Box ref={rootRef} {...getStyles('root')} {...others}>\n {finalItems.map((item, index) => {\n const isVisible = phase === 'measuring' || index < finalVisibleCount;\n if (!isVisible) {\n return null;\n }\n const itemComponent = renderItem(item, index);\n\n return <Fragment key={index}>{itemComponent}</Fragment>;\n })}\n\n {clonedOverflowElement}\n </Box>\n );\n});\n\nOverflowList.displayName = '@mantine/core/OverflowList';\nOverflowList.classes = classes;\nOverflowList.varsResolver = varsResolver;\n\nexport namespace OverflowList {\n export type Props = OverflowListProps;\n export type Factory = OverflowListFactory;\n export type StylesNames = OverflowListStylesNames;\n export type CssVariables = OverflowListCssVariables;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OverflowList.mjs","names":["Fragment","classes"],"sources":["../../../src/components/OverflowList/OverflowList.tsx"],"sourcesContent":["// Originally based on https://github.com/Eliav2/react-responsive-overflow-list (MIT License)\n// Contains the modified version adapted for Mantine\nimport { cloneElement, useMemo, useRef, useState } from 'react';\nimport { Fragment } from 'react/jsx-runtime';\nimport { useIsomorphicEffect, useMergedRef } from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n Factory,\n genericFactory,\n getSpacing,\n MantineSpacing,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../core';\nimport { getRowPositionsData } from './get-row-position-data';\nimport { useDimensions } from './use-dimensions';\nimport classes from './OverflowList.module.css';\n\nexport type OverflowListStylesNames = 'root';\nexport type OverflowListCssVariables = {\n root: '--ol-gap';\n};\n\nexport interface OverflowListProps<T = any>\n extends BoxProps, StylesApiProps<OverflowListFactory>, ElementProps<'div', 'children'> {\n /** Array of items to display */\n data: T[];\n\n /** Function to render item */\n renderItem: (item: T, index: number) => React.ReactNode;\n\n /** Function to render hidden items */\n renderOverflow: (items: T[]) => React.ReactNode;\n\n /** Number of rows to display @default 1 */\n maxRows?: number;\n\n /** Maximum number of visible items @default Infinity */\n maxVisibleItems?: number;\n\n /** Key of `theme.spacing` or any valid CSS value for `gap`, numbers are converted to rem @default 'xs' */\n gap?: MantineSpacing;\n\n /** Direction from which items are collapsed when they overflow, `'end'` collapses last items, `'start'` collapses first items @default 'end' */\n collapseFrom?: 'start' | 'end';\n\n /** A function to resolve a unique key for each item. Used to detect when the contents of `data`\n * change (for example when items are reordered while the length stays the same) so the\n * visible/overflow split can be recomputed. Required to detect reordering when `data` contains\n * objects; for primitive items (strings, numbers) the item value is used by default. */\n getItemKey?: (item: T, index: number) => React.Key;\n}\n\nexport type OverflowListFactory = Factory<{\n props: OverflowListProps<any>;\n ref: HTMLDivElement;\n stylesNames: OverflowListStylesNames;\n vars: OverflowListCssVariables;\n signature: <T = any>(props: OverflowListProps<T>) => React.JSX.Element;\n}>;\n\nconst defaultProps = {\n maxRows: 1,\n maxVisibleItems: Infinity,\n} satisfies Partial<OverflowListProps<any>>;\n\nconst varsResolver = createVarsResolver<OverflowListFactory>((_, { gap }) => ({\n root: {\n '--ol-gap': getSpacing(gap),\n },\n}));\n\nfunction getDataSignature<T>(\n data: T[],\n getItemKey: ((item: T, index: number) => React.Key) | undefined\n): string {\n return data\n .map((item, index) => {\n if (getItemKey) {\n return getItemKey(item, index);\n }\n return item !== null && (typeof item === 'object' || typeof item === 'function')\n ? index\n : String(item);\n })\n .join('\\u0000');\n}\n\nexport const OverflowList = genericFactory<OverflowListFactory>((_props) => {\n const props = useProps('OverflowList', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n attributes,\n data,\n renderOverflow,\n renderItem,\n maxRows,\n maxVisibleItems,\n collapseFrom,\n getItemKey,\n ref,\n ...others\n } = props;\n\n const getStyles = useStyles<OverflowListFactory>({\n name: 'OverflowList',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const [visibleCount, setVisibleCount] = useState(data.length);\n const [subtractCount, setSubtractCount] = useState(0);\n const [phase, setPhase] = useState<'normal' | 'measuring' | 'measuring-overflow-indicator'>(\n 'normal'\n );\n\n const containerRef = useRef<HTMLElement>(null);\n const rootRef = useMergedRef(containerRef, ref);\n const finalVisibleCount = visibleCount - subtractCount;\n const overflowCount = data.length - finalVisibleCount;\n const showOverflow = overflowCount > 0 && phase !== 'measuring';\n const isCollapseStart = collapseFrom === 'start';\n const overflowItems = isCollapseStart\n ? data.slice(0, data.length - finalVisibleCount)\n : data.slice(finalVisibleCount);\n const overflowElement = showOverflow ? renderOverflow?.(overflowItems) : null;\n\n const _overflowRef = useRef<HTMLElement>(null);\n const overflowRef = useMergedRef(_overflowRef, (overflowElement as any)?.ref);\n const dimensions = useDimensions(containerRef);\n const dataKey = useMemo(() => getDataSignature(data, getItemKey), [data, getItemKey]);\n\n useIsomorphicEffect(() => {\n setPhase('measuring');\n setVisibleCount(data.length);\n setSubtractCount(0);\n }, [dataKey, maxRows, collapseFrom]);\n\n useIsomorphicEffect(() => {\n if (phase === 'measuring') {\n countVisibleItems();\n setPhase('measuring-overflow-indicator');\n }\n }, [phase]);\n\n useIsomorphicEffect(() => {\n if (phase === 'measuring-overflow-indicator') {\n const updateWasNeeded = updateOverflowIndicator();\n if (!updateWasNeeded) {\n setPhase('normal');\n }\n }\n }, [phase, subtractCount]);\n\n useIsomorphicEffect(() => {\n if (phase === 'normal') {\n setPhase('measuring');\n setSubtractCount(0);\n }\n }, [dimensions]);\n\n const fitsInRows = (\n itemWidths: number[],\n containerWidth: number,\n columnGap: number,\n startIndex = 0\n ) => {\n let rows = 1;\n let rowWidth = 0;\n\n for (let i = startIndex; i < itemWidths.length; i += 1) {\n const width = itemWidths[i];\n const needed = rowWidth > 0 ? width + columnGap : width;\n\n if (rowWidth + needed > containerWidth && rowWidth > 0) {\n rows++;\n if (rows > maxRows!) {\n return false;\n }\n rowWidth = width;\n } else {\n rowWidth += needed;\n }\n }\n\n return true;\n };\n\n const countVisibleItems = () => {\n const rowData = getRowPositionsData(containerRef, _overflowRef);\n if (!rowData) {\n return;\n }\n\n const container = containerRef.current;\n if (!container) {\n return;\n }\n\n if (isCollapseStart) {\n const containerWidth = container.getBoundingClientRect().width;\n const columnGap = parseFloat(getComputedStyle(container).columnGap) || 0;\n const children = rowData.children;\n const widths = children.map((child) => child.getBoundingClientRect().width);\n\n let count = 0;\n for (let i = widths.length - 1; i >= 0; i--) {\n if (!fitsInRows(widths, containerWidth, columnGap, i)) {\n break;\n }\n count = widths.length - i;\n }\n\n count = Math.min(count, maxVisibleItems!);\n setVisibleCount(count);\n return;\n }\n\n if (data.length === 1) {\n const itemRef = rowData.itemsSizesMap[rowData.rowPositions[0]].elements.values().next().value;\n const containerWidth = container.getBoundingClientRect().width;\n const itemWidth = itemRef?.getBoundingClientRect().width ?? 0;\n\n if (itemWidth > containerWidth) {\n setVisibleCount(0);\n } else {\n setVisibleCount(1);\n }\n\n return;\n }\n\n const visibleRowPositions = rowData.rowPositions.slice(0, maxRows);\n\n let fittingCount = visibleRowPositions.reduce((acc, position) => {\n return acc + rowData.itemsSizesMap[position].elements.size;\n }, 0);\n\n fittingCount = Math.min(fittingCount, maxVisibleItems);\n setVisibleCount(fittingCount);\n };\n\n const updateOverflowIndicator = () => {\n if (!_overflowRef.current) {\n return false;\n }\n const rowData = getRowPositionsData(containerRef, _overflowRef);\n if (!rowData) {\n return false;\n }\n\n const { rowPositions, itemsSizesMap } = rowData;\n\n if (isCollapseStart) {\n const container = containerRef.current;\n if (!container) {\n return false;\n }\n const containerWidth = container.getBoundingClientRect().width;\n const columnGap = parseFloat(getComputedStyle(container).columnGap) || 0;\n const overflowWidth = _overflowRef.current.getBoundingClientRect().width;\n const children = rowData.children;\n const itemWidths = [\n overflowWidth,\n ...children.map((child) => child.getBoundingClientRect().width),\n ];\n\n if (!fitsInRows(itemWidths, containerWidth, columnGap)) {\n setSubtractCount((c) => c + 1);\n return true;\n }\n\n return false;\n }\n\n const overflowRect = _overflowRef.current.getBoundingClientRect();\n const overflowMiddleY = overflowRect.top + overflowRect.height / 2;\n const lastRowTop = rowPositions[rowPositions.length - 1];\n const lastRow = itemsSizesMap[lastRowTop];\n\n if (overflowMiddleY > lastRow.bottom) {\n setSubtractCount((c) => c + 1);\n return true;\n }\n\n return false;\n };\n\n const clonedOverflowElement = overflowElement\n ? cloneElement(overflowElement as React.ReactElement<any>, { ref: overflowRef })\n : null;\n\n let finalItems = data;\n if (maxVisibleItems) {\n finalItems = isCollapseStart\n ? finalItems.slice(-maxVisibleItems!)\n : finalItems.slice(0, maxVisibleItems);\n }\n\n const indexOffset = isCollapseStart ? data.length - finalItems.length : 0;\n\n return (\n <Box ref={rootRef} {...getStyles('root')} {...others}>\n {isCollapseStart && clonedOverflowElement}\n\n {finalItems.map((item, index) => {\n const isVisible =\n phase === 'measuring' ||\n (isCollapseStart\n ? index >= finalItems.length - finalVisibleCount\n : index < finalVisibleCount);\n if (!isVisible) {\n return null;\n }\n const dataIndex = indexOffset + index;\n const itemComponent = renderItem(item, dataIndex);\n\n return <Fragment key={dataIndex}>{itemComponent}</Fragment>;\n })}\n\n {!isCollapseStart && clonedOverflowElement}\n </Box>\n );\n});\n\nOverflowList.displayName = '@mantine/core/OverflowList';\nOverflowList.classes = classes;\nOverflowList.varsResolver = varsResolver;\n\nexport namespace OverflowList {\n export type Props = OverflowListProps;\n export type Factory = OverflowListFactory;\n export type StylesNames = OverflowListStylesNames;\n export type CssVariables = OverflowListCssVariables;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.context.mjs","names":[],"sources":["../../../src/components/Pagination/Pagination.context.ts"],"sourcesContent":["import { createSafeContext, GetStylesApi } from '../../core';\nimport type { PaginationRootFactory } from './PaginationRoot/PaginationRoot';\n\nexport interface PaginationContextValue {\n total: number;\n range: (number | 'dots')[];\n active: number;\n disabled: boolean | undefined;\n getItemProps?: (page: number) => Record<string, any>;\n onChange: (page: number) => void;\n onNext: () => void;\n onPrevious: () => void;\n onFirst: () => void;\n onLast: () => void;\n getStyles: GetStylesApi<PaginationRootFactory>;\n}\n\nexport const [PaginationProvider, usePaginationContext] = createSafeContext<PaginationContextValue>(\n 'Pagination.Root component was not found in tree'\n);\n"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Pagination.context.mjs","names":[],"sources":["../../../src/components/Pagination/Pagination.context.ts"],"sourcesContent":["import { createSafeContext, GetStylesApi } from '../../core';\nimport type { PaginationRootFactory } from './PaginationRoot/PaginationRoot';\n\nexport interface PaginationContextValue {\n total: number;\n range: (number | 'dots')[];\n active: number;\n disabled: boolean | undefined;\n layout?: 'default' | 'responsive';\n getItemProps?: (page: number) => Record<string, any>;\n onChange: (page: number) => void;\n onNext: () => void;\n onPrevious: () => void;\n onFirst: () => void;\n onLast: () => void;\n getStyles: GetStylesApi<PaginationRootFactory>;\n}\n\nexport const [PaginationProvider, usePaginationContext] = createSafeContext<PaginationContextValue>(\n 'Pagination.Root component was not found in tree'\n);\n"],"mappings":";;;AAkBA,MAAa,CAAC,oBAAoB,wBAAwB,kBACxD,iDACF"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useProps } from "../../core/MantineProvider/use-props/use-props.mjs";
|
|
3
3
|
import { factory } from "../../core/factory/factory.mjs";
|
|
4
|
+
import { Box } from "../../core/Box/Box.mjs";
|
|
4
5
|
import { Group } from "../Group/Group.mjs";
|
|
6
|
+
import { usePaginationContext } from "./Pagination.context.mjs";
|
|
5
7
|
import Pagination_module_default from "./Pagination.module.mjs";
|
|
6
8
|
import { PaginationControl } from "./PaginationControl/PaginationControl.mjs";
|
|
7
9
|
import { PaginationDots } from "./PaginationDots/PaginationDots.mjs";
|
|
8
10
|
import { PaginationFirst, PaginationLast, PaginationNext, PaginationPrevious } from "./PaginationEdges/PaginationEdges.mjs";
|
|
9
11
|
import { PaginationItems } from "./PaginationItems/PaginationItems.mjs";
|
|
12
|
+
import { PaginationLabel } from "./PaginationLabel/PaginationLabel.mjs";
|
|
10
13
|
import { PaginationRoot } from "./PaginationRoot/PaginationRoot.mjs";
|
|
11
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
14
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
12
15
|
//#region packages/@mantine/core/src/components/Pagination/Pagination.tsx
|
|
13
16
|
const defaultProps = {
|
|
14
17
|
withControls: true,
|
|
@@ -17,11 +20,19 @@ const defaultProps = {
|
|
|
17
20
|
boundaries: 1,
|
|
18
21
|
gap: 8
|
|
19
22
|
};
|
|
23
|
+
function PaginationItemsGroup({ children }) {
|
|
24
|
+
return /* @__PURE__ */ jsx(Box, {
|
|
25
|
+
...usePaginationContext().getStyles("items"),
|
|
26
|
+
children
|
|
27
|
+
});
|
|
28
|
+
}
|
|
20
29
|
const Pagination = factory((_props) => {
|
|
21
|
-
const { withEdges, withControls, getControlProps, nextIcon, previousIcon, lastIcon, firstIcon, dotsIcon, total, gap, hideWithOnePage, withPages, ...others } = useProps("Pagination", defaultProps, _props);
|
|
30
|
+
const { withEdges, withControls, getControlProps, nextIcon, previousIcon, lastIcon, firstIcon, dotsIcon, total, gap, hideWithOnePage, withPages, layout, formatLabel, ...others } = useProps("Pagination", defaultProps, _props);
|
|
22
31
|
if (total <= 0 || hideWithOnePage && total === 1) return null;
|
|
32
|
+
const pagesContent = withPages ? layout === "responsive" ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(PaginationItemsGroup, { children: /* @__PURE__ */ jsx(PaginationItems, { dotsIcon }) }), /* @__PURE__ */ jsx(PaginationLabel, { formatLabel })] }) : /* @__PURE__ */ jsx(PaginationItems, { dotsIcon }) : null;
|
|
23
33
|
return /* @__PURE__ */ jsx(PaginationRoot, {
|
|
24
34
|
total,
|
|
35
|
+
layout,
|
|
25
36
|
...others,
|
|
26
37
|
children: /* @__PURE__ */ jsxs(Group, {
|
|
27
38
|
gap,
|
|
@@ -34,7 +45,7 @@ const Pagination = factory((_props) => {
|
|
|
34
45
|
icon: previousIcon,
|
|
35
46
|
...getControlProps?.("previous")
|
|
36
47
|
}),
|
|
37
|
-
|
|
48
|
+
pagesContent,
|
|
38
49
|
withControls && /* @__PURE__ */ jsx(PaginationNext, {
|
|
39
50
|
icon: nextIcon,
|
|
40
51
|
...getControlProps?.("next")
|
|
@@ -57,6 +68,7 @@ Pagination.Last = PaginationLast;
|
|
|
57
68
|
Pagination.Next = PaginationNext;
|
|
58
69
|
Pagination.Previous = PaginationPrevious;
|
|
59
70
|
Pagination.Items = PaginationItems;
|
|
71
|
+
Pagination.Label = PaginationLabel;
|
|
60
72
|
//#endregion
|
|
61
73
|
export { Pagination };
|
|
62
74
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.mjs","names":["classes"],"sources":["../../../src/components/Pagination/Pagination.tsx"],"sourcesContent":["import { factory, Factory, MantineSpacing, useProps } from '../../core';\nimport { Group } from '../Group/Group';\nimport { PaginationIcon } from './Pagination.icons';\nimport {\n PaginationControl,\n type PaginationControlProps,\n} from './PaginationControl/PaginationControl';\nimport { PaginationDots, type PaginationDotsProps } from './PaginationDots/PaginationDots';\nimport {\n PaginationFirst,\n PaginationLast,\n PaginationNext,\n PaginationPrevious,\n type PaginationEdgeProps,\n} from './PaginationEdges/PaginationEdges';\nimport { PaginationItems, type PaginationItemsProps } from './PaginationItems/PaginationItems';\nimport {\n PaginationRoot,\n PaginationRootCssVariables,\n PaginationRootProps,\n PaginationRootStylesNames,\n} from './PaginationRoot/PaginationRoot';\nimport classes from './Pagination.module.css';\nexport type PaginationStylesNames = PaginationRootStylesNames;\nexport type PaginationCssVariables = PaginationRootCssVariables;\n\nexport interface PaginationProps extends PaginationRootProps {\n /** If set, first/last controls are displayed @default false */\n withEdges?: boolean;\n\n /** If set, next/previous controls are displayed @default true */\n withControls?: boolean;\n\n /** Props passed down to next/previous/first/last controls */\n getControlProps?: (control: 'first' | 'previous' | 'last' | 'next') => Record<string, any>;\n\n /** Next control icon component */\n nextIcon?: PaginationIcon;\n\n /** Previous control icon component */\n previousIcon?: PaginationIcon;\n\n /** Last control icon component */\n lastIcon?: PaginationIcon;\n\n /** First control icon component */\n firstIcon?: PaginationIcon;\n\n /** Dots icon component */\n dotsIcon?: PaginationIcon;\n\n /** Key of `theme.spacing`, gap between controls @default 8 */\n gap?: MantineSpacing;\n\n /** If set, the pagination is hidden when only one page is available (`total={1}`) @default false */\n hideWithOnePage?: boolean;\n\n /** If set to `false`, page number buttons are hidden, only next/previous controls remain @default `true` */\n withPages?: boolean;\n}\n\nexport type PaginationFactory = Factory<{\n props: PaginationProps;\n ref: HTMLDivElement;\n stylesNames: PaginationStylesNames;\n vars: PaginationCssVariables;\n staticComponents: {\n Root: typeof PaginationRoot;\n Control: typeof PaginationControl;\n Dots: typeof PaginationDots;\n First: typeof PaginationFirst;\n Last: typeof PaginationLast;\n Next: typeof PaginationNext;\n Previous: typeof PaginationPrevious;\n Items: typeof PaginationItems;\n };\n}>;\n\nconst defaultProps = {\n withControls: true,\n withPages: true,\n siblings: 1,\n boundaries: 1,\n gap: 8,\n} satisfies Partial<PaginationProps>;\n\nexport const Pagination = factory<PaginationFactory>((_props) => {\n const props = useProps('Pagination', defaultProps, _props);\n const {\n withEdges,\n withControls,\n getControlProps,\n nextIcon,\n previousIcon,\n lastIcon,\n firstIcon,\n dotsIcon,\n total,\n gap,\n hideWithOnePage,\n withPages,\n ...others\n } = props;\n\n if (total <= 0 || (hideWithOnePage && total === 1)) {\n return null;\n }\n\n return (\n <PaginationRoot total={total} {...others}>\n <Group gap={gap}>\n {withEdges && <PaginationFirst icon={firstIcon} {...getControlProps?.('first')} />}\n {withControls && (\n <PaginationPrevious icon={previousIcon} {...getControlProps?.('previous')} />\n )}\n {
|
|
1
|
+
{"version":3,"file":"Pagination.mjs","names":["classes"],"sources":["../../../src/components/Pagination/Pagination.tsx"],"sourcesContent":["import { Box, factory, Factory, MantineSpacing, useProps } from '../../core';\nimport { Group } from '../Group/Group';\nimport { usePaginationContext } from './Pagination.context';\nimport { PaginationIcon } from './Pagination.icons';\nimport {\n PaginationControl,\n type PaginationControlProps,\n} from './PaginationControl/PaginationControl';\nimport { PaginationDots, type PaginationDotsProps } from './PaginationDots/PaginationDots';\nimport {\n PaginationFirst,\n PaginationLast,\n PaginationNext,\n PaginationPrevious,\n type PaginationEdgeProps,\n} from './PaginationEdges/PaginationEdges';\nimport { PaginationItems, type PaginationItemsProps } from './PaginationItems/PaginationItems';\nimport {\n PaginationFormatLabel,\n PaginationLabel,\n type PaginationLabelProps,\n} from './PaginationLabel/PaginationLabel';\nimport {\n PaginationRoot,\n PaginationRootCssVariables,\n PaginationRootProps,\n PaginationRootStylesNames,\n} from './PaginationRoot/PaginationRoot';\nimport classes from './Pagination.module.css';\nexport type PaginationStylesNames = PaginationRootStylesNames;\nexport type PaginationCssVariables = PaginationRootCssVariables;\n\nexport interface PaginationProps extends PaginationRootProps {\n /** If set, first/last controls are displayed @default false */\n withEdges?: boolean;\n\n /** If set, next/previous controls are displayed @default true */\n withControls?: boolean;\n\n /** Props passed down to next/previous/first/last controls */\n getControlProps?: (control: 'first' | 'previous' | 'last' | 'next') => Record<string, any>;\n\n /** Next control icon component */\n nextIcon?: PaginationIcon;\n\n /** Previous control icon component */\n previousIcon?: PaginationIcon;\n\n /** Last control icon component */\n lastIcon?: PaginationIcon;\n\n /** First control icon component */\n firstIcon?: PaginationIcon;\n\n /** Dots icon component */\n dotsIcon?: PaginationIcon;\n\n /** Key of `theme.spacing`, gap between controls @default 8 */\n gap?: MantineSpacing;\n\n /** If set, the pagination is hidden when only one page is available (`total={1}`) @default false */\n hideWithOnePage?: boolean;\n\n /** If set to `false`, page number buttons are hidden, only next/previous controls remain @default `true` */\n withPages?: boolean;\n\n /** Function to format the label text displayed in responsive mode */\n formatLabel?: PaginationFormatLabel;\n}\n\nexport type PaginationFactory = Factory<{\n props: PaginationProps;\n ref: HTMLDivElement;\n stylesNames: PaginationStylesNames;\n vars: PaginationCssVariables;\n staticComponents: {\n Root: typeof PaginationRoot;\n Control: typeof PaginationControl;\n Dots: typeof PaginationDots;\n First: typeof PaginationFirst;\n Last: typeof PaginationLast;\n Next: typeof PaginationNext;\n Previous: typeof PaginationPrevious;\n Items: typeof PaginationItems;\n Label: typeof PaginationLabel;\n };\n}>;\n\nconst defaultProps = {\n withControls: true,\n withPages: true,\n siblings: 1,\n boundaries: 1,\n gap: 8,\n} satisfies Partial<PaginationProps>;\n\ninterface PaginationItemsGroupProps {\n children: React.ReactNode;\n}\n\nfunction PaginationItemsGroup({ children }: PaginationItemsGroupProps) {\n const ctx = usePaginationContext();\n return <Box {...ctx.getStyles('items')}>{children}</Box>;\n}\n\nexport const Pagination = factory<PaginationFactory>((_props) => {\n const props = useProps('Pagination', defaultProps, _props);\n const {\n withEdges,\n withControls,\n getControlProps,\n nextIcon,\n previousIcon,\n lastIcon,\n firstIcon,\n dotsIcon,\n total,\n gap,\n hideWithOnePage,\n withPages,\n layout,\n formatLabel,\n ...others\n } = props;\n\n if (total <= 0 || (hideWithOnePage && total === 1)) {\n return null;\n }\n\n const isResponsive = layout === 'responsive';\n\n const pagesContent = withPages ? (\n isResponsive ? (\n <>\n <PaginationItemsGroup>\n <PaginationItems dotsIcon={dotsIcon} />\n </PaginationItemsGroup>\n <PaginationLabel formatLabel={formatLabel} />\n </>\n ) : (\n <PaginationItems dotsIcon={dotsIcon} />\n )\n ) : null;\n\n return (\n <PaginationRoot total={total} layout={layout} {...others}>\n <Group gap={gap}>\n {withEdges && <PaginationFirst icon={firstIcon} {...getControlProps?.('first')} />}\n {withControls && (\n <PaginationPrevious icon={previousIcon} {...getControlProps?.('previous')} />\n )}\n {pagesContent}\n {withControls && <PaginationNext icon={nextIcon} {...getControlProps?.('next')} />}\n {withEdges && <PaginationLast icon={lastIcon} {...getControlProps?.('last')} />}\n </Group>\n </PaginationRoot>\n );\n});\n\nPagination.classes = classes;\nPagination.displayName = '@mantine/core/Pagination';\nPagination.Root = PaginationRoot;\nPagination.Control = PaginationControl;\nPagination.Dots = PaginationDots;\nPagination.First = PaginationFirst;\nPagination.Last = PaginationLast;\nPagination.Next = PaginationNext;\nPagination.Previous = PaginationPrevious;\nPagination.Items = PaginationItems;\nPagination.Label = PaginationLabel;\n\nexport namespace Pagination {\n export type Props = PaginationProps;\n export type StylesNames = PaginationStylesNames;\n export type CssVariables = PaginationCssVariables;\n export type Factory = PaginationFactory;\n\n export namespace Root {\n export type Props = PaginationRootProps;\n }\n\n export namespace Control {\n export type Props = PaginationControlProps;\n }\n\n export namespace Dots {\n export type Props = PaginationDotsProps;\n }\n\n export namespace Edge {\n export type Props = PaginationEdgeProps;\n }\n\n export namespace Items {\n export type Props = PaginationItemsProps;\n }\n\n export namespace Label {\n export type Props = PaginationLabelProps;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAwFA,MAAM,eAAe;CACnB,cAAc;CACd,WAAW;CACX,UAAU;CACV,YAAY;CACZ,KAAK;AACP;AAMA,SAAS,qBAAqB,EAAE,YAAuC;CAErE,OAAO,oBAAC,KAAD;EAAK,GADA,qBACM,EAAE,UAAU,OAAO;EAAI;CAAc,CAAA;AACzD;AAEA,MAAa,aAAa,SAA4B,WAAW;CAE/D,MAAM,EACJ,WACA,cACA,iBACA,UACA,cACA,UACA,WACA,UACA,OACA,KACA,iBACA,WACA,QACA,aACA,GAAG,WAhBS,SAAS,cAAc,cAAc,MAiB3C;CAER,IAAI,SAAS,KAAM,mBAAmB,UAAU,GAC9C,OAAO;CAKT,MAAM,eAAe,YAFA,WAAW,eAI5B,qBAAA,UAAA,EAAA,UAAA,CACE,oBAAC,sBAAD,EAAA,UACE,oBAAC,iBAAD,EAA2B,SAAW,CAAA,EAClB,CAAA,GACtB,oBAAC,iBAAD,EAA8B,YAAc,CAAA,CAC5C,EAAA,CAAA,IAEF,oBAAC,iBAAD,EAA2B,SAAW,CAAA,IAEtC;CAEJ,OACE,oBAAC,gBAAD;EAAuB;EAAe;EAAQ,GAAI;YAChD,qBAAC,OAAD;GAAY;aAAZ;IACG,aAAa,oBAAC,iBAAD;KAAiB,MAAM;KAAW,GAAI,kBAAkB,OAAO;IAAI,CAAA;IAChF,gBACC,oBAAC,oBAAD;KAAoB,MAAM;KAAc,GAAI,kBAAkB,UAAU;IAAI,CAAA;IAE7E;IACA,gBAAgB,oBAAC,gBAAD;KAAgB,MAAM;KAAU,GAAI,kBAAkB,MAAM;IAAI,CAAA;IAChF,aAAa,oBAAC,gBAAD;KAAgB,MAAM;KAAU,GAAI,kBAAkB,MAAM;IAAI,CAAA;GACzE;;CACO,CAAA;AAEpB,CAAC;AAED,WAAW,UAAUA;AACrB,WAAW,cAAc;AACzB,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,WAAW;AACtB,WAAW,QAAQ;AACnB,WAAW,QAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.module.mjs","names":[],"sources":["../../../src/components/Pagination/Pagination.module.css"],"sourcesContent":[".root {\n --pagination-control-size-xs: 22px;\n --pagination-control-size-sm: 26px;\n --pagination-control-size-md: 32px;\n --pagination-control-size-lg: 38px;\n --pagination-control-size-xl: 44px;\n\n --pagination-control-size-input-xs: 30px;\n --pagination-control-size-input-sm: 36px;\n --pagination-control-size-input-md: 42px;\n --pagination-control-size-input-lg: 50px;\n --pagination-control-size-input-xl: 60px;\n\n --pagination-control-size: var(--pagination-control-size-md);\n --pagination-control-fz: var(--mantine-font-size-md);\n --pagination-active-bg: var(--mantine-primary-color-filled);\n}\n\n.control {\n display: flex;\n align-items: center;\n justify-content: center;\n border: 1px solid;\n cursor: pointer;\n color: var(--mantine-color-text);\n height: var(--pagination-control-size);\n min-width: var(--pagination-control-size);\n font-size: var(--pagination-control-fz);\n line-height: 1;\n border-radius: var(--pagination-control-radius, var(--mantine-radius-default));\n\n &:where([data-with-padding]) {\n padding: calc(var(--pagination-control-size) / 4);\n }\n\n &:where(:disabled, [data-disabled]) {\n cursor: not-allowed;\n opacity: 0.4;\n }\n\n @mixin where-light {\n border-color: var(--mantine-color-gray-4);\n background-color: var(--mantine-color-white);\n\n @mixin hover {\n &:where(:not(:disabled, [data-disabled])) {\n background-color: var(--mantine-color-gray-0);\n }\n }\n }\n\n @mixin where-dark {\n border-color: var(--mantine-color-dark-4);\n background-color: var(--mantine-color-dark-6);\n\n @mixin hover {\n &:where(:not(:disabled, [data-disabled])) {\n background-color: var(--mantine-color-dark-5);\n }\n }\n }\n\n &:where([data-active]) {\n background-color: var(--pagination-active-bg);\n border-color: var(--pagination-active-bg);\n color: var(--pagination-active-color, var(--mantine-color-white));\n\n @mixin hover {\n background-color: var(--pagination-active-bg);\n }\n }\n}\n\n.dots {\n height: var(--pagination-control-size);\n min-width: var(--pagination-control-size);\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: none;\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"Pagination.module.mjs","names":[],"sources":["../../../src/components/Pagination/Pagination.module.css"],"sourcesContent":[".root {\n --pagination-control-size-xs: 22px;\n --pagination-control-size-sm: 26px;\n --pagination-control-size-md: 32px;\n --pagination-control-size-lg: 38px;\n --pagination-control-size-xl: 44px;\n\n --pagination-control-size-input-xs: 30px;\n --pagination-control-size-input-sm: 36px;\n --pagination-control-size-input-md: 42px;\n --pagination-control-size-input-lg: 50px;\n --pagination-control-size-input-xl: 60px;\n\n --pagination-control-size: var(--pagination-control-size-md);\n --pagination-control-fz: var(--mantine-font-size-md);\n --pagination-active-bg: var(--mantine-primary-color-filled);\n\n &:where([data-layout='responsive']) {\n container-type: inline-size;\n }\n}\n\n.control {\n display: flex;\n align-items: center;\n justify-content: center;\n border: 1px solid;\n cursor: pointer;\n color: var(--mantine-color-text);\n height: var(--pagination-control-size);\n min-width: var(--pagination-control-size);\n font-size: var(--pagination-control-fz);\n line-height: 1;\n border-radius: var(--pagination-control-radius, var(--mantine-radius-default));\n\n &:where([data-with-padding]) {\n padding: calc(var(--pagination-control-size) / 4);\n }\n\n &:where(:disabled, [data-disabled]) {\n cursor: not-allowed;\n opacity: 0.4;\n }\n\n @mixin where-light {\n border-color: var(--mantine-color-gray-4);\n background-color: var(--mantine-color-white);\n\n @mixin hover {\n &:where(:not(:disabled, [data-disabled])) {\n background-color: var(--mantine-color-gray-0);\n }\n }\n }\n\n @mixin where-dark {\n border-color: var(--mantine-color-dark-4);\n background-color: var(--mantine-color-dark-6);\n\n @mixin hover {\n &:where(:not(:disabled, [data-disabled])) {\n background-color: var(--mantine-color-dark-5);\n }\n }\n }\n\n &:where([data-active]) {\n background-color: var(--pagination-active-bg);\n border-color: var(--pagination-active-bg);\n color: var(--pagination-active-color, var(--mantine-color-white));\n\n @mixin hover {\n background-color: var(--pagination-active-bg);\n }\n }\n}\n\n.dots {\n height: var(--pagination-control-size);\n min-width: var(--pagination-control-size);\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: none;\n}\n\n.items {\n display: flex;\n gap: inherit;\n align-items: center;\n\n @container (width <= 400px) {\n display: none;\n }\n}\n\n.label {\n display: none;\n align-items: center;\n justify-content: center;\n height: var(--pagination-control-size);\n font-size: var(--pagination-control-fz);\n white-space: nowrap;\n\n @container (width <= 400px) {\n display: flex;\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useProps } from "../../../core/MantineProvider/use-props/use-props.mjs";
|
|
3
|
+
import { factory } from "../../../core/factory/factory.mjs";
|
|
4
|
+
import { Box } from "../../../core/Box/Box.mjs";
|
|
5
|
+
import { usePaginationContext } from "../Pagination.context.mjs";
|
|
6
|
+
import Pagination_module_default from "../Pagination.module.mjs";
|
|
7
|
+
import { jsx } from "react/jsx-runtime";
|
|
8
|
+
//#region packages/@mantine/core/src/components/Pagination/PaginationLabel/PaginationLabel.tsx
|
|
9
|
+
const defaultProps = { formatLabel: ({ page, totalPages }) => `Page ${page} of ${totalPages}` };
|
|
10
|
+
const PaginationLabel = factory((_props) => {
|
|
11
|
+
const { classNames, className, style, styles, vars, formatLabel, ...others } = useProps("PaginationLabel", defaultProps, _props);
|
|
12
|
+
const ctx = usePaginationContext();
|
|
13
|
+
return /* @__PURE__ */ jsx(Box, {
|
|
14
|
+
...ctx.getStyles("label", {
|
|
15
|
+
className,
|
|
16
|
+
style,
|
|
17
|
+
styles,
|
|
18
|
+
classNames
|
|
19
|
+
}),
|
|
20
|
+
...others,
|
|
21
|
+
children: formatLabel({
|
|
22
|
+
page: ctx.active,
|
|
23
|
+
totalPages: ctx.total
|
|
24
|
+
})
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
PaginationLabel.classes = Pagination_module_default;
|
|
28
|
+
PaginationLabel.displayName = "@mantine/core/PaginationLabel";
|
|
29
|
+
//#endregion
|
|
30
|
+
export { PaginationLabel };
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=PaginationLabel.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PaginationLabel.mjs","names":["classes"],"sources":["../../../../src/components/Pagination/PaginationLabel/PaginationLabel.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n CompoundStylesApiProps,\n ElementProps,\n factory,\n Factory,\n useProps,\n} from '../../../core';\nimport { usePaginationContext } from '../Pagination.context';\nimport classes from '../Pagination.module.css';\n\nexport type PaginationFormatLabel = (input: { page: number; totalPages: number }) => string;\nexport type PaginationLabelStylesNames = 'label';\n\nexport interface PaginationLabelProps\n extends BoxProps, CompoundStylesApiProps<PaginationLabelFactory>, ElementProps<'div'> {\n /** Function to format the label text */\n formatLabel?: PaginationFormatLabel;\n}\n\nexport type PaginationLabelFactory = Factory<{\n props: PaginationLabelProps;\n ref: HTMLDivElement;\n stylesNames: PaginationLabelStylesNames;\n compound: true;\n}>;\n\nconst defaultProps = {\n formatLabel: ({ page, totalPages }) => `Page ${page} of ${totalPages}`,\n} satisfies Partial<PaginationLabelProps>;\n\nexport const PaginationLabel = factory<PaginationLabelFactory>((_props) => {\n const props = useProps('PaginationLabel', defaultProps, _props);\n const { classNames, className, style, styles, vars, formatLabel, ...others } = props;\n const ctx = usePaginationContext();\n\n return (\n <Box {...ctx.getStyles('label', { className, style, styles, classNames })} {...others}>\n {formatLabel({ page: ctx.active, totalPages: ctx.total })}\n </Box>\n );\n});\n\nPaginationLabel.classes = classes;\nPaginationLabel.displayName = '@mantine/core/PaginationLabel';\n"],"mappings":";;;;;;;;AA4BA,MAAM,eAAe,EACnB,cAAc,EAAE,MAAM,iBAAiB,QAAQ,KAAK,MAAM,aAC5D;AAEA,MAAa,kBAAkB,SAAiC,WAAW;CAEzE,MAAM,EAAE,YAAY,WAAW,OAAO,QAAQ,MAAM,aAAa,GAAG,WADtD,SAAS,mBAAmB,cAAc,MAC2B;CACnF,MAAM,MAAM,qBAAqB;CAEjC,OACE,oBAAC,KAAD;EAAK,GAAI,IAAI,UAAU,SAAS;GAAE;GAAW;GAAO;GAAQ;EAAW,CAAC;EAAG,GAAI;YAC5E,YAAY;GAAE,MAAM,IAAI;GAAQ,YAAY,IAAI;EAAM,CAAC;CACrD,CAAA;AAET,CAAC;AAED,gBAAgB,UAAUA;AAC1B,gBAAgB,cAAc"}
|
|
@@ -31,7 +31,7 @@ const varsResolver = createVarsResolver((theme, { size, radius, color, autoContr
|
|
|
31
31
|
} }));
|
|
32
32
|
const PaginationRoot = factory((_props) => {
|
|
33
33
|
const props = useProps("PaginationRoot", defaultProps, _props);
|
|
34
|
-
const { classNames, className, style, styles, unstyled, vars, total, value, defaultValue, onChange, disabled, siblings, boundaries, color, radius, onNextPage, onPreviousPage, onFirstPage, onLastPage, getItemProps, autoContrast, startValue, attributes, ...others } = props;
|
|
34
|
+
const { classNames, className, style, styles, unstyled, vars, total, value, defaultValue, onChange, disabled, siblings, boundaries, color, radius, onNextPage, onPreviousPage, onFirstPage, onLastPage, getItemProps, autoContrast, startValue, layout, mod, attributes, ...others } = props;
|
|
35
35
|
const getStyles = useStyles({
|
|
36
36
|
name: "Pagination",
|
|
37
37
|
classes: Pagination_module_default,
|
|
@@ -60,6 +60,7 @@ const PaginationRoot = factory((_props) => {
|
|
|
60
60
|
range,
|
|
61
61
|
active,
|
|
62
62
|
disabled,
|
|
63
|
+
layout,
|
|
63
64
|
getItemProps,
|
|
64
65
|
onChange: setPage,
|
|
65
66
|
onNext: createEventHandler(onNextPage, next),
|
|
@@ -70,6 +71,7 @@ const PaginationRoot = factory((_props) => {
|
|
|
70
71
|
},
|
|
71
72
|
children: /* @__PURE__ */ jsx(Box, {
|
|
72
73
|
...getStyles("root"),
|
|
74
|
+
mod: [{ layout }, mod],
|
|
73
75
|
...others
|
|
74
76
|
})
|
|
75
77
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaginationRoot.mjs","names":["classes"],"sources":["../../../../src/components/Pagination/PaginationRoot/PaginationRoot.tsx"],"sourcesContent":["import { usePagination } from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n createEventHandler,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getAutoContrastValue,\n getContrastColor,\n getFontSize,\n getRadius,\n getSize,\n getThemeColor,\n MantineColor,\n MantineRadius,\n MantineSize,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../../core';\nimport { PaginationProvider } from '../Pagination.context';\nimport classes from '../Pagination.module.css';\n\nexport type PaginationRootStylesNames = 'root' | 'control' | 'dots';\nexport type PaginationRootCssVariables = {\n root:\n | '--pagination-control-size'\n | '--pagination-control-radius'\n | '--pagination-control-fz'\n | '--pagination-active-bg'\n | '--pagination-active-color';\n};\n\nexport interface PaginationRootProps\n extends\n BoxProps,\n StylesApiProps<PaginationRootFactory>,\n ElementProps<'div', 'value' | 'onChange'> {\n /** `height` and `min-width` of controls @default 'md' */\n size?: MantineSize | `input-${MantineSize}` | (string & {}) | number;\n\n /** Total number of pages, must be an integer */\n total: number;\n\n /** Active page for controlled component, must be an integer in [1, total] interval */\n value?: number;\n\n /** Active page for uncontrolled component, must be an integer in [1, total] interval */\n defaultValue?: number;\n\n /** Called when page changes */\n onChange?: (value: number) => void;\n\n /** Disables all controls, applies disabled styles */\n disabled?: boolean;\n\n /** Number of siblings displayed on the left/right side of the selected page @default 1 */\n siblings?: number;\n\n /** Number of elements visible on the left/right edges @default 1 */\n boundaries?: number;\n\n /** Key of `theme.colors`, active item color @default theme.primaryColor */\n color?: MantineColor;\n\n /** Key of `theme.radius` or any valid CSS value to set `border-radius`, numbers are converted to rem @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** Called when next page control is clicked */\n onNextPage?: () => void;\n\n /** Called when previous page control is clicked */\n onPreviousPage?: () => void;\n\n /** Called when first page control is clicked */\n onFirstPage?: () => void;\n\n /** Called when last page control is clicked */\n onLastPage?: () => void;\n\n /** Additional props passed down to controls */\n getItemProps?: (page: number) => Record<string, any>;\n\n /** If set, adjusts text color based on the active page background color to ensure sufficient contrast */\n autoContrast?: boolean;\n\n /** Starting page number, defaults to 1 */\n startValue?: number;\n}\n\nexport type PaginationRootFactory = Factory<{\n props: PaginationRootProps;\n ref: HTMLDivElement;\n stylesNames: PaginationRootStylesNames;\n vars: PaginationRootCssVariables;\n}>;\n\nconst defaultProps = {\n siblings: 1,\n boundaries: 1,\n} satisfies Partial<PaginationRootProps>;\n\nconst varsResolver = createVarsResolver<PaginationRootFactory>(\n (theme, { size, radius, color, autoContrast }) => ({\n root: {\n '--pagination-control-radius': radius === undefined ? undefined : getRadius(radius),\n '--pagination-control-size': getSize(size, 'pagination-control-size'),\n '--pagination-control-fz': getFontSize(size),\n '--pagination-active-bg': color ? getThemeColor(color, theme) : undefined,\n '--pagination-active-color': getAutoContrastValue(autoContrast, theme)\n ? getContrastColor({ color, theme, autoContrast })\n : undefined,\n },\n })\n);\n\nexport const PaginationRoot = factory<PaginationRootFactory>((_props) => {\n const props = useProps('PaginationRoot', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n total,\n value,\n defaultValue,\n onChange,\n disabled,\n siblings,\n boundaries,\n color,\n radius,\n onNextPage,\n onPreviousPage,\n onFirstPage,\n onLastPage,\n getItemProps,\n autoContrast,\n startValue,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<PaginationRootFactory>({\n name: 'Pagination',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const { range, setPage, next, previous, active, first, last } = usePagination({\n page: value,\n initialPage: defaultValue,\n onChange,\n total,\n siblings,\n boundaries,\n startValue,\n });\n\n return (\n <PaginationProvider\n value={{\n total,\n range,\n active,\n disabled,\n getItemProps,\n onChange: setPage,\n onNext: createEventHandler(onNextPage, next),\n onPrevious: createEventHandler(onPreviousPage, previous),\n onFirst: createEventHandler(onFirstPage, first),\n onLast: createEventHandler(onLastPage, last),\n getStyles,\n }}\n >\n <Box {...getStyles('root')} {...others} />\n </PaginationProvider>\n );\n});\n\nPaginationRoot.classes = classes;\nPaginationRoot.varsResolver = varsResolver;\nPaginationRoot.displayName = '@mantine/core/PaginationRoot';\n"],"mappings":";;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"PaginationRoot.mjs","names":["classes"],"sources":["../../../../src/components/Pagination/PaginationRoot/PaginationRoot.tsx"],"sourcesContent":["import { usePagination } from '@mantine/hooks';\nimport {\n Box,\n BoxProps,\n createEventHandler,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getAutoContrastValue,\n getContrastColor,\n getFontSize,\n getRadius,\n getSize,\n getThemeColor,\n MantineColor,\n MantineRadius,\n MantineSize,\n StylesApiProps,\n useProps,\n useStyles,\n} from '../../../core';\nimport { PaginationProvider } from '../Pagination.context';\nimport classes from '../Pagination.module.css';\n\nexport type PaginationRootStylesNames = 'root' | 'control' | 'dots' | 'items' | 'label';\nexport type PaginationRootCssVariables = {\n root:\n | '--pagination-control-size'\n | '--pagination-control-radius'\n | '--pagination-control-fz'\n | '--pagination-active-bg'\n | '--pagination-active-color';\n};\n\nexport interface PaginationRootProps\n extends\n BoxProps,\n StylesApiProps<PaginationRootFactory>,\n ElementProps<'div', 'value' | 'onChange'> {\n /** `height` and `min-width` of controls @default 'md' */\n size?: MantineSize | `input-${MantineSize}` | (string & {}) | number;\n\n /** Total number of pages, must be an integer */\n total: number;\n\n /** Active page for controlled component, must be an integer in [1, total] interval */\n value?: number;\n\n /** Active page for uncontrolled component, must be an integer in [1, total] interval */\n defaultValue?: number;\n\n /** Called when page changes */\n onChange?: (value: number) => void;\n\n /** Disables all controls, applies disabled styles */\n disabled?: boolean;\n\n /** Number of siblings displayed on the left/right side of the selected page @default 1 */\n siblings?: number;\n\n /** Number of elements visible on the left/right edges @default 1 */\n boundaries?: number;\n\n /** Key of `theme.colors`, active item color @default theme.primaryColor */\n color?: MantineColor;\n\n /** Key of `theme.radius` or any valid CSS value to set `border-radius`, numbers are converted to rem @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** Called when next page control is clicked */\n onNextPage?: () => void;\n\n /** Called when previous page control is clicked */\n onPreviousPage?: () => void;\n\n /** Called when first page control is clicked */\n onFirstPage?: () => void;\n\n /** Called when last page control is clicked */\n onLastPage?: () => void;\n\n /** Additional props passed down to controls */\n getItemProps?: (page: number) => Record<string, any>;\n\n /** If set, adjusts text color based on the active page background color to ensure sufficient contrast */\n autoContrast?: boolean;\n\n /** Starting page number, defaults to 1 */\n startValue?: number;\n\n /** Determines how the pagination is displayed, `'responsive'` uses CSS container queries to switch between pages and a compact label @default 'default' */\n layout?: 'default' | 'responsive';\n}\n\nexport type PaginationRootFactory = Factory<{\n props: PaginationRootProps;\n ref: HTMLDivElement;\n stylesNames: PaginationRootStylesNames;\n vars: PaginationRootCssVariables;\n}>;\n\nconst defaultProps = {\n siblings: 1,\n boundaries: 1,\n} satisfies Partial<PaginationRootProps>;\n\nconst varsResolver = createVarsResolver<PaginationRootFactory>(\n (theme, { size, radius, color, autoContrast }) => ({\n root: {\n '--pagination-control-radius': radius === undefined ? undefined : getRadius(radius),\n '--pagination-control-size': getSize(size, 'pagination-control-size'),\n '--pagination-control-fz': getFontSize(size),\n '--pagination-active-bg': color ? getThemeColor(color, theme) : undefined,\n '--pagination-active-color': getAutoContrastValue(autoContrast, theme)\n ? getContrastColor({ color, theme, autoContrast })\n : undefined,\n },\n })\n);\n\nexport const PaginationRoot = factory<PaginationRootFactory>((_props) => {\n const props = useProps('PaginationRoot', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n total,\n value,\n defaultValue,\n onChange,\n disabled,\n siblings,\n boundaries,\n color,\n radius,\n onNextPage,\n onPreviousPage,\n onFirstPage,\n onLastPage,\n getItemProps,\n autoContrast,\n startValue,\n layout,\n mod,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<PaginationRootFactory>({\n name: 'Pagination',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const { range, setPage, next, previous, active, first, last } = usePagination({\n page: value,\n initialPage: defaultValue,\n onChange,\n total,\n siblings,\n boundaries,\n startValue,\n });\n\n return (\n <PaginationProvider\n value={{\n total,\n range,\n active,\n disabled,\n layout,\n getItemProps,\n onChange: setPage,\n onNext: createEventHandler(onNextPage, next),\n onPrevious: createEventHandler(onPreviousPage, previous),\n onFirst: createEventHandler(onFirstPage, first),\n onLast: createEventHandler(onLastPage, last),\n getStyles,\n }}\n >\n <Box {...getStyles('root')} mod={[{ layout }, mod]} {...others} />\n </PaginationProvider>\n );\n});\n\nPaginationRoot.classes = classes;\nPaginationRoot.varsResolver = varsResolver;\nPaginationRoot.displayName = '@mantine/core/PaginationRoot';\n"],"mappings":";;;;;;;;;;;;;;;;AAsGA,MAAM,eAAe;CACnB,UAAU;CACV,YAAY;AACd;AAEA,MAAM,eAAe,oBAClB,OAAO,EAAE,MAAM,QAAQ,OAAO,oBAAoB,EACjD,MAAM;CACJ,+BAA+B,WAAW,KAAA,IAAY,KAAA,IAAY,UAAU,MAAM;CAClF,6BAA6B,QAAQ,MAAM,yBAAyB;CACpE,2BAA2B,YAAY,IAAI;CAC3C,0BAA0B,QAAQ,cAAc,OAAO,KAAK,IAAI,KAAA;CAChE,6BAA6B,qBAAqB,cAAc,KAAK,IACjE,iBAAiB;EAAE;EAAO;EAAO;CAAa,CAAC,IAC/C,KAAA;AACN,EACF,EACF;AAEA,MAAa,iBAAiB,SAAgC,WAAW;CACvE,MAAM,QAAQ,SAAS,kBAAkB,cAAc,MAAM;CAC7D,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,OACA,OACA,cACA,UACA,UACA,UACA,YACA,OACA,QACA,YACA,gBACA,aACA,YACA,cACA,cACA,YACA,QACA,KACA,YACA,GAAG,WACD;CAEJ,MAAM,YAAY,UAAiC;EACjD,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,EAAE,OAAO,SAAS,MAAM,UAAU,QAAQ,OAAO,SAAS,cAAc;EAC5E,MAAM;EACN,aAAa;EACb;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,OACE,oBAAC,oBAAD;EACE,OAAO;GACL;GACA;GACA;GACA;GACA;GACA;GACA,UAAU;GACV,QAAQ,mBAAmB,YAAY,IAAI;GAC3C,YAAY,mBAAmB,gBAAgB,QAAQ;GACvD,SAAS,mBAAmB,aAAa,KAAK;GAC9C,QAAQ,mBAAmB,YAAY,IAAI;GAC3C;EACF;YAEA,oBAAC,KAAD;GAAK,GAAI,UAAU,MAAM;GAAG,KAAK,CAAC,EAAE,OAAO,GAAG,GAAG;GAAG,GAAI;EAAS,CAAA;CAC/C,CAAA;AAExB,CAAC;AAED,eAAe,UAAUA;AACzB,eAAe,eAAe;AAC9B,eAAe,cAAc"}
|
|
@@ -12,6 +12,7 @@ import { Overlay } from "../Overlay/Overlay.mjs";
|
|
|
12
12
|
import { OptionalPortal } from "../Portal/OptionalPortal.mjs";
|
|
13
13
|
import { Transition } from "../Transition/Transition.mjs";
|
|
14
14
|
import { PopoverContextProvider } from "./Popover.context.mjs";
|
|
15
|
+
import { PopoverContextMenu } from "./PopoverContextMenu/PopoverContextMenu.mjs";
|
|
15
16
|
import Popover_module_default from "./Popover.module.mjs";
|
|
16
17
|
import { PopoverDropdown } from "./PopoverDropdown/PopoverDropdown.mjs";
|
|
17
18
|
import { PopoverTarget } from "./PopoverTarget/PopoverTarget.mjs";
|
|
@@ -44,6 +45,7 @@ const defaultProps = {
|
|
|
44
45
|
returnFocus: false,
|
|
45
46
|
withOverlay: false,
|
|
46
47
|
hideDetached: true,
|
|
48
|
+
preventPositionChangeWhenVisible: true,
|
|
47
49
|
clickOutsideEvents: ["mousedown", "touchstart"],
|
|
48
50
|
zIndex: getDefaultZIndex("popover"),
|
|
49
51
|
__staticSelector: "Popover",
|
|
@@ -73,8 +75,6 @@ function Popover(_props) {
|
|
|
73
75
|
styles,
|
|
74
76
|
props
|
|
75
77
|
});
|
|
76
|
-
const [dropdownVisible, setDropdownVisible] = useState(opened ?? defaultOpened ?? false);
|
|
77
|
-
const positionRef = useRef(position);
|
|
78
78
|
const arrowRef = useRef(null);
|
|
79
79
|
const [targetNode, setTargetNode] = useState(null);
|
|
80
80
|
const [dropdownNode, setDropdownNode] = useState(null);
|
|
@@ -96,9 +96,6 @@ function Popover(_props) {
|
|
|
96
96
|
onClose,
|
|
97
97
|
onDismiss,
|
|
98
98
|
strategy: floatingStrategy,
|
|
99
|
-
dropdownVisible,
|
|
100
|
-
setDropdownVisible,
|
|
101
|
-
positionRef,
|
|
102
99
|
disabled,
|
|
103
100
|
preventPositionChangeWhenVisible,
|
|
104
101
|
keepMounted
|
|
@@ -120,13 +117,11 @@ function Popover(_props) {
|
|
|
120
117
|
const onExited = useCallback(() => {
|
|
121
118
|
transitionProps?.onExited?.();
|
|
122
119
|
onExitTransitionEnd?.();
|
|
123
|
-
|
|
124
|
-
if (!preventPositionChangeWhenVisible) positionRef.current = position;
|
|
120
|
+
popover.resetLockedPlacement();
|
|
125
121
|
}, [
|
|
126
122
|
transitionProps?.onExited,
|
|
127
123
|
onExitTransitionEnd,
|
|
128
|
-
|
|
129
|
-
position
|
|
124
|
+
popover.resetLockedPlacement
|
|
130
125
|
]);
|
|
131
126
|
const onEntered = useCallback(() => {
|
|
132
127
|
transitionProps?.onEntered?.();
|
|
@@ -202,6 +197,7 @@ function Popover(_props) {
|
|
|
202
197
|
}
|
|
203
198
|
Popover.Target = PopoverTarget;
|
|
204
199
|
Popover.Dropdown = PopoverDropdown;
|
|
200
|
+
Popover.ContextMenu = PopoverContextMenu;
|
|
205
201
|
Popover.varsResolver = varsResolver;
|
|
206
202
|
Popover.displayName = "@mantine/core/Popover";
|
|
207
203
|
Popover.extend = (input) => input;
|