@chayns-components/core 5.3.10 → 5.3.11-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +12 -0
- package/lib/cjs/components/accordion/Accordion.js +107 -12
- package/lib/cjs/components/accordion/Accordion.js.map +1 -1
- package/lib/cjs/components/accordion/Accordion.styles.js +23 -3
- package/lib/cjs/components/accordion/Accordion.styles.js.map +1 -1
- package/lib/cjs/components/accordion/accordion-body/AccordionBody.styles.js +3 -1
- package/lib/cjs/components/accordion/accordion-body/AccordionBody.styles.js.map +1 -1
- package/lib/cjs/components/accordion/accordion-group/AccordionGroup.js +36 -19
- package/lib/cjs/components/accordion/accordion-group/AccordionGroup.js.map +1 -1
- package/lib/cjs/components/accordion/accordion-head/AccordionHead.js +6 -3
- package/lib/cjs/components/accordion/accordion-head/AccordionHead.js.map +1 -1
- package/lib/cjs/components/accordion/accordion-head/AccordionHead.styles.js +14 -0
- package/lib/cjs/components/accordion/accordion-head/AccordionHead.styles.js.map +1 -1
- package/lib/cjs/components/amount-control/AmountControl.js +31 -17
- package/lib/cjs/components/amount-control/AmountControl.js.map +1 -1
- package/lib/cjs/components/amount-control/AmountControl.styles.js +18 -2
- package/lib/cjs/components/amount-control/AmountControl.styles.js.map +1 -1
- package/lib/cjs/components/button/Button.js +5 -1
- package/lib/cjs/components/button/Button.js.map +1 -1
- package/lib/cjs/components/button/Button.styles.js +17 -0
- package/lib/cjs/components/button/Button.styles.js.map +1 -1
- package/lib/cjs/components/button/Button.types.js.map +1 -1
- package/lib/cjs/components/checkbox/Checkbox.js +5 -1
- package/lib/cjs/components/checkbox/Checkbox.js.map +1 -1
- package/lib/cjs/components/checkbox/Checkbox.styles.js +29 -2
- package/lib/cjs/components/checkbox/Checkbox.styles.js.map +1 -1
- package/lib/cjs/components/color-scheme-provider/ColorSchemeProvider.js +7 -2
- package/lib/cjs/components/color-scheme-provider/ColorSchemeProvider.js.map +1 -1
- package/lib/cjs/components/color-scheme-provider/ColorSchemeProvider.styles.js +8 -2
- package/lib/cjs/components/color-scheme-provider/ColorSchemeProvider.styles.js.map +1 -1
- package/lib/cjs/components/combobox/ComboBox.js +52 -5
- package/lib/cjs/components/combobox/ComboBox.js.map +1 -1
- package/lib/cjs/components/combobox/ComboBox.styles.js +11 -0
- package/lib/cjs/components/combobox/ComboBox.styles.js.map +1 -1
- package/lib/cjs/components/combobox/ComboBox.types.js.map +1 -1
- package/lib/cjs/components/context-menu/ContextMenu.js +100 -6
- package/lib/cjs/components/context-menu/ContextMenu.js.map +1 -1
- package/lib/cjs/components/context-menu/ContextMenu.styles.js +38 -0
- package/lib/cjs/components/context-menu/ContextMenu.styles.js.map +1 -1
- package/lib/cjs/components/context-menu/ContextMenu.types.js.map +1 -1
- package/lib/cjs/components/file-input/FileInput.js +4 -2
- package/lib/cjs/components/file-input/FileInput.js.map +1 -1
- package/lib/cjs/components/file-list/file-item/FileItem.js +23 -2
- package/lib/cjs/components/file-list/file-item/FileItem.js.map +1 -1
- package/lib/cjs/components/file-list/file-item/FileItem.styles.js +19 -1
- package/lib/cjs/components/file-list/file-item/FileItem.styles.js.map +1 -1
- package/lib/cjs/components/file-select/FileSelect.js +27 -4
- package/lib/cjs/components/file-select/FileSelect.js.map +1 -1
- package/lib/cjs/components/file-select/FileSelect.styles.js +10 -0
- package/lib/cjs/components/file-select/FileSelect.styles.js.map +1 -1
- package/lib/cjs/components/filter/Filter.js +51 -16
- package/lib/cjs/components/filter/Filter.js.map +1 -1
- package/lib/cjs/components/filter/Filter.styles.js +9 -0
- package/lib/cjs/components/filter/Filter.styles.js.map +1 -1
- package/lib/cjs/components/filter/filter-content/FilterContent.js +14 -5
- package/lib/cjs/components/filter/filter-content/FilterContent.js.map +1 -1
- package/lib/cjs/components/filter/filter-content/FilterContent.types.js.map +1 -1
- package/lib/cjs/components/filter-buttons/FilterButtons.js +69 -4
- package/lib/cjs/components/filter-buttons/FilterButtons.js.map +1 -1
- package/lib/cjs/components/filter-buttons/filter-button/FilterButton.js +40 -2
- package/lib/cjs/components/filter-buttons/filter-button/FilterButton.js.map +1 -1
- package/lib/cjs/components/filter-buttons/filter-button/FilterButton.styles.js +11 -0
- package/lib/cjs/components/filter-buttons/filter-button/FilterButton.styles.js.map +1 -1
- package/lib/cjs/components/grid-image/GridImage.js +20 -2
- package/lib/cjs/components/grid-image/GridImage.js.map +1 -1
- package/lib/cjs/components/grid-image/GridImage.styles.js +11 -2
- package/lib/cjs/components/grid-image/GridImage.styles.js.map +1 -1
- package/lib/cjs/components/grouped-image/GroupedImage.js +23 -4
- package/lib/cjs/components/grouped-image/GroupedImage.js.map +1 -1
- package/lib/cjs/components/grouped-image/GroupedImage.styles.js +9 -0
- package/lib/cjs/components/grouped-image/GroupedImage.styles.js.map +1 -1
- package/lib/cjs/components/highlight-slider/HighlightSlider.js +10 -3
- package/lib/cjs/components/highlight-slider/HighlightSlider.js.map +1 -1
- package/lib/cjs/components/highlight-slider/highlight-slider-item/HighlightSliderItem.js +21 -4
- package/lib/cjs/components/highlight-slider/highlight-slider-item/HighlightSliderItem.js.map +1 -1
- package/lib/cjs/components/highlight-slider/highlight-slider-item/HighlightSliderItem.styles.js +11 -2
- package/lib/cjs/components/highlight-slider/highlight-slider-item/HighlightSliderItem.styles.js.map +1 -1
- package/lib/cjs/components/icon/Icon.js +24 -5
- package/lib/cjs/components/icon/Icon.js.map +1 -1
- package/lib/cjs/components/icon/Icon.styles.js +23 -0
- package/lib/cjs/components/icon/Icon.styles.js.map +1 -1
- package/lib/cjs/components/input/Input.js +29 -8
- package/lib/cjs/components/input/Input.js.map +1 -1
- package/lib/cjs/components/input/Input.styles.js +33 -3
- package/lib/cjs/components/input/Input.styles.js.map +1 -1
- package/lib/cjs/components/list/List.js +124 -37
- package/lib/cjs/components/list/List.js.map +1 -1
- package/lib/cjs/components/list/List.utils.js +107 -1
- package/lib/cjs/components/list/List.utils.js.map +1 -1
- package/lib/cjs/components/list/list-item/ListItem.js +82 -3
- package/lib/cjs/components/list/list-item/ListItem.js.map +1 -1
- package/lib/cjs/components/list/list-item/ListItem.styles.js +9 -0
- package/lib/cjs/components/list/list-item/ListItem.styles.js.map +1 -1
- package/lib/cjs/components/list/list-item/list-item-head/ListItemHead.js +40 -5
- package/lib/cjs/components/list/list-item/list-item-head/ListItemHead.js.map +1 -1
- package/lib/cjs/components/list/list-item/list-item-head/ListItemHead.styles.js +5 -1
- package/lib/cjs/components/list/list-item/list-item-head/ListItemHead.styles.js.map +1 -1
- package/lib/cjs/components/list/list-item/list-item-head/list-item-right-element/ListItemRightElement.js +32 -1
- package/lib/cjs/components/list/list-item/list-item-head/list-item-right-element/ListItemRightElement.js.map +1 -1
- package/lib/cjs/components/list/list-item/list-item-head/list-item-subtitle/ListItemSubtitle.js +32 -1
- package/lib/cjs/components/list/list-item/list-item-head/list-item-subtitle/ListItemSubtitle.js.map +1 -1
- package/lib/cjs/components/list/list-item/list-item-head/list-item-title/ListItemTitle.js +30 -1
- package/lib/cjs/components/list/list-item/list-item-head/list-item-title/ListItemTitle.js.map +1 -1
- package/lib/cjs/components/list/list-item/useListItemFocus.js +47 -0
- package/lib/cjs/components/list/list-item/useListItemFocus.js.map +1 -0
- package/lib/cjs/components/mention-finder/MentionFinder.js +31 -2
- package/lib/cjs/components/mention-finder/MentionFinder.js.map +1 -1
- package/lib/cjs/components/mention-finder/mention-finder-item/MentionFinderItem.styles.js.map +1 -1
- package/lib/cjs/components/multi-action-button/MultiActionButton.js +36 -3
- package/lib/cjs/components/multi-action-button/MultiActionButton.js.map +1 -1
- package/lib/cjs/components/multi-action-button/MultiActionButton.types.js.map +1 -1
- package/lib/cjs/components/multi-action-button/action-button/ActionButton.js +7 -1
- package/lib/cjs/components/multi-action-button/action-button/ActionButton.js.map +1 -1
- package/lib/cjs/components/multi-action-button/action-button/ActionButton.styles.js +12 -0
- package/lib/cjs/components/multi-action-button/action-button/ActionButton.styles.js.map +1 -1
- package/lib/cjs/components/number-input/NumberInput.js +13 -10
- package/lib/cjs/components/number-input/NumberInput.js.map +1 -1
- package/lib/cjs/components/page-provider/PageProvider.js +4 -2
- package/lib/cjs/components/page-provider/PageProvider.js.map +1 -1
- package/lib/cjs/components/popup/Popup.js +8 -1
- package/lib/cjs/components/popup/Popup.js.map +1 -1
- package/lib/cjs/components/radio-button/RadioButton.js +29 -15
- package/lib/cjs/components/radio-button/RadioButton.js.map +1 -1
- package/lib/cjs/components/radio-button/RadioButton.styles.js +19 -8
- package/lib/cjs/components/radio-button/RadioButton.styles.js.map +1 -1
- package/lib/cjs/components/radio-button/radio-button-group/RadioButtonGroup.js +7 -4
- package/lib/cjs/components/radio-button/radio-button-group/RadioButtonGroup.js.map +1 -1
- package/lib/cjs/components/search-box/SearchBox.js +5 -2
- package/lib/cjs/components/search-box/SearchBox.js.map +1 -1
- package/lib/cjs/components/search-input/SearchInput.js +40 -41
- package/lib/cjs/components/search-input/SearchInput.js.map +1 -1
- package/lib/cjs/components/search-input/SearchInput.styles.js +25 -2
- package/lib/cjs/components/search-input/SearchInput.styles.js.map +1 -1
- package/lib/cjs/components/select-button/SelectButton.js +4 -2
- package/lib/cjs/components/select-button/SelectButton.js.map +1 -1
- package/lib/cjs/components/setup-wizard/SetupWizard.js +7 -4
- package/lib/cjs/components/setup-wizard/SetupWizard.js.map +1 -1
- package/lib/cjs/components/setup-wizard/setup-wizard-item/SetupWizardItem.js +5 -3
- package/lib/cjs/components/setup-wizard/setup-wizard-item/SetupWizardItem.js.map +1 -1
- package/lib/cjs/components/sharing-bar/SharingBar.js +31 -6
- package/lib/cjs/components/sharing-bar/SharingBar.js.map +1 -1
- package/lib/cjs/components/sharing-bar/SharingBar.styles.js +5 -0
- package/lib/cjs/components/sharing-bar/SharingBar.styles.js.map +1 -1
- package/lib/cjs/components/sharing-button/SharingButton.js +4 -2
- package/lib/cjs/components/sharing-button/SharingButton.js.map +1 -1
- package/lib/cjs/components/sharing-context-menu/SharingContextMenu.js +3 -1
- package/lib/cjs/components/sharing-context-menu/SharingContextMenu.js.map +1 -1
- package/lib/cjs/components/signature/Signature.js +6 -3
- package/lib/cjs/components/signature/Signature.js.map +1 -1
- package/lib/cjs/components/slider/Slider.js +30 -7
- package/lib/cjs/components/slider/Slider.js.map +1 -1
- package/lib/cjs/components/slider/Slider.styles.js +9 -2
- package/lib/cjs/components/slider/Slider.styles.js.map +1 -1
- package/lib/cjs/components/slider-button/SliderButton.js +63 -6
- package/lib/cjs/components/slider-button/SliderButton.js.map +1 -1
- package/lib/cjs/components/slider-button/SliderButton.styles.js +19 -2
- package/lib/cjs/components/slider-button/SliderButton.styles.js.map +1 -1
- package/lib/cjs/components/slider-button/SliderButton.types.js +6 -0
- package/lib/cjs/components/slider-button/SliderButton.types.js.map +1 -0
- package/lib/cjs/components/slider-button/useSliderButtonPopupKeyboard.js +66 -0
- package/lib/cjs/components/slider-button/useSliderButtonPopupKeyboard.js.map +1 -0
- package/lib/cjs/components/slider-button/useSliderButtonThumbKeyboard.js +47 -0
- package/lib/cjs/components/slider-button/useSliderButtonThumbKeyboard.js.map +1 -0
- package/lib/cjs/components/tag-input/TagInput.js +91 -36
- package/lib/cjs/components/tag-input/TagInput.js.map +1 -1
- package/lib/cjs/components/tag-input/TagInput.styles.js +31 -3
- package/lib/cjs/components/tag-input/TagInput.styles.js.map +1 -1
- package/lib/cjs/components/text-area/TextArea.js +17 -8
- package/lib/cjs/components/text-area/TextArea.js.map +1 -1
- package/lib/cjs/components/text-area/TextArea.styles.js +15 -1
- package/lib/cjs/components/text-area/TextArea.styles.js.map +1 -1
- package/lib/cjs/components/truncation/Truncation.js +17 -3
- package/lib/cjs/components/truncation/Truncation.js.map +1 -1
- package/lib/cjs/components/truncation/Truncation.styles.js +19 -1
- package/lib/cjs/components/truncation/Truncation.styles.js.map +1 -1
- package/lib/cjs/hooks/useKeyboardFocusHighlighting.js +68 -0
- package/lib/cjs/hooks/useKeyboardFocusHighlighting.js.map +1 -0
- package/lib/cjs/utils/file.js.map +1 -1
- package/lib/cjs/utils/keyboardFocusHighlighting.styles.js +30 -0
- package/lib/cjs/utils/keyboardFocusHighlighting.styles.js.map +1 -0
- package/lib/esm/components/accordion/Accordion.js +105 -12
- package/lib/esm/components/accordion/Accordion.js.map +1 -1
- package/lib/esm/components/accordion/Accordion.styles.js +23 -3
- package/lib/esm/components/accordion/Accordion.styles.js.map +1 -1
- package/lib/esm/components/accordion/accordion-body/AccordionBody.styles.js +3 -1
- package/lib/esm/components/accordion/accordion-body/AccordionBody.styles.js.map +1 -1
- package/lib/esm/components/accordion/accordion-group/AccordionGroup.js +33 -19
- package/lib/esm/components/accordion/accordion-group/AccordionGroup.js.map +1 -1
- package/lib/esm/components/accordion/accordion-head/AccordionHead.js +6 -3
- package/lib/esm/components/accordion/accordion-head/AccordionHead.js.map +1 -1
- package/lib/esm/components/accordion/accordion-head/AccordionHead.styles.js +14 -0
- package/lib/esm/components/accordion/accordion-head/AccordionHead.styles.js.map +1 -1
- package/lib/esm/components/amount-control/AmountControl.js +30 -16
- package/lib/esm/components/amount-control/AmountControl.js.map +1 -1
- package/lib/esm/components/amount-control/AmountControl.styles.js +18 -2
- package/lib/esm/components/amount-control/AmountControl.styles.js.map +1 -1
- package/lib/esm/components/button/Button.js +5 -1
- package/lib/esm/components/button/Button.js.map +1 -1
- package/lib/esm/components/button/Button.styles.js +17 -0
- package/lib/esm/components/button/Button.styles.js.map +1 -1
- package/lib/esm/components/button/Button.types.js.map +1 -1
- package/lib/esm/components/checkbox/Checkbox.js +5 -1
- package/lib/esm/components/checkbox/Checkbox.js.map +1 -1
- package/lib/esm/components/checkbox/Checkbox.styles.js +29 -2
- package/lib/esm/components/checkbox/Checkbox.styles.js.map +1 -1
- package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.js +7 -2
- package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.js.map +1 -1
- package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.styles.js +8 -2
- package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.styles.js.map +1 -1
- package/lib/esm/components/combobox/ComboBox.js +50 -5
- package/lib/esm/components/combobox/ComboBox.js.map +1 -1
- package/lib/esm/components/combobox/ComboBox.styles.js +11 -0
- package/lib/esm/components/combobox/ComboBox.styles.js.map +1 -1
- package/lib/esm/components/combobox/ComboBox.types.js.map +1 -1
- package/lib/esm/components/context-menu/ContextMenu.js +99 -5
- package/lib/esm/components/context-menu/ContextMenu.js.map +1 -1
- package/lib/esm/components/context-menu/ContextMenu.styles.js +38 -0
- package/lib/esm/components/context-menu/ContextMenu.styles.js.map +1 -1
- package/lib/esm/components/context-menu/ContextMenu.types.js.map +1 -1
- package/lib/esm/components/file-input/FileInput.js +4 -2
- package/lib/esm/components/file-input/FileInput.js.map +1 -1
- package/lib/esm/components/file-list/file-item/FileItem.js +24 -3
- package/lib/esm/components/file-list/file-item/FileItem.js.map +1 -1
- package/lib/esm/components/file-list/file-item/FileItem.styles.js +18 -0
- package/lib/esm/components/file-list/file-item/FileItem.styles.js.map +1 -1
- package/lib/esm/components/file-select/FileSelect.js +27 -4
- package/lib/esm/components/file-select/FileSelect.js.map +1 -1
- package/lib/esm/components/file-select/FileSelect.styles.js +10 -0
- package/lib/esm/components/file-select/FileSelect.styles.js.map +1 -1
- package/lib/esm/components/filter/Filter.js +52 -16
- package/lib/esm/components/filter/Filter.js.map +1 -1
- package/lib/esm/components/filter/Filter.styles.js +9 -0
- package/lib/esm/components/filter/Filter.styles.js.map +1 -1
- package/lib/esm/components/filter/filter-content/FilterContent.js +15 -5
- package/lib/esm/components/filter/filter-content/FilterContent.js.map +1 -1
- package/lib/esm/components/filter/filter-content/FilterContent.types.js.map +1 -1
- package/lib/esm/components/filter-buttons/FilterButtons.js +69 -5
- package/lib/esm/components/filter-buttons/FilterButtons.js.map +1 -1
- package/lib/esm/components/filter-buttons/filter-button/FilterButton.js +40 -2
- package/lib/esm/components/filter-buttons/filter-button/FilterButton.js.map +1 -1
- package/lib/esm/components/filter-buttons/filter-button/FilterButton.styles.js +11 -0
- package/lib/esm/components/filter-buttons/filter-button/FilterButton.styles.js.map +1 -1
- package/lib/esm/components/grid-image/GridImage.js +20 -2
- package/lib/esm/components/grid-image/GridImage.js.map +1 -1
- package/lib/esm/components/grid-image/GridImage.styles.js +10 -1
- package/lib/esm/components/grid-image/GridImage.styles.js.map +1 -1
- package/lib/esm/components/grouped-image/GroupedImage.js +22 -4
- package/lib/esm/components/grouped-image/GroupedImage.js.map +1 -1
- package/lib/esm/components/grouped-image/GroupedImage.styles.js +9 -0
- package/lib/esm/components/grouped-image/GroupedImage.styles.js.map +1 -1
- package/lib/esm/components/highlight-slider/HighlightSlider.js +10 -3
- package/lib/esm/components/highlight-slider/HighlightSlider.js.map +1 -1
- package/lib/esm/components/highlight-slider/highlight-slider-item/HighlightSliderItem.js +20 -3
- package/lib/esm/components/highlight-slider/highlight-slider-item/HighlightSliderItem.js.map +1 -1
- package/lib/esm/components/highlight-slider/highlight-slider-item/HighlightSliderItem.styles.js +10 -1
- package/lib/esm/components/highlight-slider/highlight-slider-item/HighlightSliderItem.styles.js.map +1 -1
- package/lib/esm/components/icon/Icon.js +26 -7
- package/lib/esm/components/icon/Icon.js.map +1 -1
- package/lib/esm/components/icon/Icon.styles.js +23 -0
- package/lib/esm/components/icon/Icon.styles.js.map +1 -1
- package/lib/esm/components/input/Input.js +24 -4
- package/lib/esm/components/input/Input.js.map +1 -1
- package/lib/esm/components/input/Input.styles.js +33 -3
- package/lib/esm/components/input/Input.styles.js.map +1 -1
- package/lib/esm/components/list/List.js +123 -37
- package/lib/esm/components/list/List.js.map +1 -1
- package/lib/esm/components/list/List.utils.js +99 -0
- package/lib/esm/components/list/List.utils.js.map +1 -1
- package/lib/esm/components/list/list-item/ListItem.js +83 -4
- package/lib/esm/components/list/list-item/ListItem.js.map +1 -1
- package/lib/esm/components/list/list-item/ListItem.styles.js +9 -0
- package/lib/esm/components/list/list-item/ListItem.styles.js.map +1 -1
- package/lib/esm/components/list/list-item/list-item-head/ListItemHead.js +41 -6
- package/lib/esm/components/list/list-item/list-item-head/ListItemHead.js.map +1 -1
- package/lib/esm/components/list/list-item/list-item-head/ListItemHead.styles.js +4 -0
- package/lib/esm/components/list/list-item/list-item-head/ListItemHead.styles.js.map +1 -1
- package/lib/esm/components/list/list-item/list-item-head/list-item-right-element/ListItemRightElement.js +33 -2
- package/lib/esm/components/list/list-item/list-item-head/list-item-right-element/ListItemRightElement.js.map +1 -1
- package/lib/esm/components/list/list-item/list-item-head/list-item-subtitle/ListItemSubtitle.js +33 -2
- package/lib/esm/components/list/list-item/list-item-head/list-item-subtitle/ListItemSubtitle.js.map +1 -1
- package/lib/esm/components/list/list-item/list-item-head/list-item-title/ListItemTitle.js +30 -1
- package/lib/esm/components/list/list-item/list-item-head/list-item-title/ListItemTitle.js.map +1 -1
- package/lib/esm/components/list/list-item/useListItemFocus.js +40 -0
- package/lib/esm/components/list/list-item/useListItemFocus.js.map +1 -0
- package/lib/esm/components/mention-finder/MentionFinder.js +30 -2
- package/lib/esm/components/mention-finder/MentionFinder.js.map +1 -1
- package/lib/esm/components/mention-finder/mention-finder-item/MentionFinderItem.styles.js.map +1 -1
- package/lib/esm/components/multi-action-button/MultiActionButton.js +36 -3
- package/lib/esm/components/multi-action-button/MultiActionButton.js.map +1 -1
- package/lib/esm/components/multi-action-button/MultiActionButton.types.js.map +1 -1
- package/lib/esm/components/multi-action-button/action-button/ActionButton.js +7 -1
- package/lib/esm/components/multi-action-button/action-button/ActionButton.js.map +1 -1
- package/lib/esm/components/multi-action-button/action-button/ActionButton.styles.js +12 -0
- package/lib/esm/components/multi-action-button/action-button/ActionButton.styles.js.map +1 -1
- package/lib/esm/components/number-input/NumberInput.js +13 -10
- package/lib/esm/components/number-input/NumberInput.js.map +1 -1
- package/lib/esm/components/page-provider/PageProvider.js +4 -2
- package/lib/esm/components/page-provider/PageProvider.js.map +1 -1
- package/lib/esm/components/popup/Popup.js +8 -1
- package/lib/esm/components/popup/Popup.js.map +1 -1
- package/lib/esm/components/radio-button/RadioButton.js +29 -15
- package/lib/esm/components/radio-button/RadioButton.js.map +1 -1
- package/lib/esm/components/radio-button/RadioButton.styles.js +19 -8
- package/lib/esm/components/radio-button/RadioButton.styles.js.map +1 -1
- package/lib/esm/components/radio-button/radio-button-group/RadioButtonGroup.js +7 -4
- package/lib/esm/components/radio-button/radio-button-group/RadioButtonGroup.js.map +1 -1
- package/lib/esm/components/search-box/SearchBox.js +5 -2
- package/lib/esm/components/search-box/SearchBox.js.map +1 -1
- package/lib/esm/components/search-input/SearchInput.js +41 -42
- package/lib/esm/components/search-input/SearchInput.js.map +1 -1
- package/lib/esm/components/search-input/SearchInput.styles.js +24 -1
- package/lib/esm/components/search-input/SearchInput.styles.js.map +1 -1
- package/lib/esm/components/select-button/SelectButton.js +4 -2
- package/lib/esm/components/select-button/SelectButton.js.map +1 -1
- package/lib/esm/components/setup-wizard/SetupWizard.js +7 -4
- package/lib/esm/components/setup-wizard/SetupWizard.js.map +1 -1
- package/lib/esm/components/setup-wizard/setup-wizard-item/SetupWizardItem.js +5 -3
- package/lib/esm/components/setup-wizard/setup-wizard-item/SetupWizardItem.js.map +1 -1
- package/lib/esm/components/sharing-bar/SharingBar.js +30 -5
- package/lib/esm/components/sharing-bar/SharingBar.js.map +1 -1
- package/lib/esm/components/sharing-bar/SharingBar.styles.js +5 -0
- package/lib/esm/components/sharing-bar/SharingBar.styles.js.map +1 -1
- package/lib/esm/components/sharing-button/SharingButton.js +4 -2
- package/lib/esm/components/sharing-button/SharingButton.js.map +1 -1
- package/lib/esm/components/sharing-context-menu/SharingContextMenu.js +3 -1
- package/lib/esm/components/sharing-context-menu/SharingContextMenu.js.map +1 -1
- package/lib/esm/components/signature/Signature.js +6 -3
- package/lib/esm/components/signature/Signature.js.map +1 -1
- package/lib/esm/components/slider/Slider.js +30 -7
- package/lib/esm/components/slider/Slider.js.map +1 -1
- package/lib/esm/components/slider/Slider.styles.js +8 -1
- package/lib/esm/components/slider/Slider.styles.js.map +1 -1
- package/lib/esm/components/slider-button/SliderButton.js +62 -6
- package/lib/esm/components/slider-button/SliderButton.js.map +1 -1
- package/lib/esm/components/slider-button/SliderButton.styles.js +18 -1
- package/lib/esm/components/slider-button/SliderButton.styles.js.map +1 -1
- package/lib/esm/components/slider-button/SliderButton.types.js +2 -0
- package/lib/esm/components/slider-button/SliderButton.types.js.map +1 -0
- package/lib/esm/components/slider-button/useSliderButtonPopupKeyboard.js +56 -0
- package/lib/esm/components/slider-button/useSliderButtonPopupKeyboard.js.map +1 -0
- package/lib/esm/components/slider-button/useSliderButtonThumbKeyboard.js +38 -0
- package/lib/esm/components/slider-button/useSliderButtonThumbKeyboard.js.map +1 -0
- package/lib/esm/components/tag-input/TagInput.js +85 -35
- package/lib/esm/components/tag-input/TagInput.js.map +1 -1
- package/lib/esm/components/tag-input/TagInput.styles.js +29 -1
- package/lib/esm/components/tag-input/TagInput.styles.js.map +1 -1
- package/lib/esm/components/text-area/TextArea.js +18 -9
- package/lib/esm/components/text-area/TextArea.js.map +1 -1
- package/lib/esm/components/text-area/TextArea.styles.js +14 -0
- package/lib/esm/components/text-area/TextArea.styles.js.map +1 -1
- package/lib/esm/components/truncation/Truncation.js +18 -4
- package/lib/esm/components/truncation/Truncation.js.map +1 -1
- package/lib/esm/components/truncation/Truncation.styles.js +18 -0
- package/lib/esm/components/truncation/Truncation.styles.js.map +1 -1
- package/lib/esm/hooks/useKeyboardFocusHighlighting.js +61 -0
- package/lib/esm/hooks/useKeyboardFocusHighlighting.js.map +1 -0
- package/lib/esm/utils/file.js.map +1 -1
- package/lib/esm/utils/keyboardFocusHighlighting.styles.js +25 -0
- package/lib/esm/utils/keyboardFocusHighlighting.styles.js.map +1 -0
- package/lib/types/components/accordion/Accordion.d.ts +5 -0
- package/lib/types/components/accordion/Accordion.styles.d.ts +8 -4
- package/lib/types/components/accordion/accordion-body/AccordionBody.styles.d.ts +2 -2
- package/lib/types/components/accordion/accordion-group/AccordionGroup.d.ts +7 -2
- package/lib/types/components/accordion/accordion-head/AccordionHead.d.ts +1 -0
- package/lib/types/components/accordion/accordion-head/AccordionHead.styles.d.ts +18 -18
- package/lib/types/components/amount-control/AmountControl.d.ts +5 -0
- package/lib/types/components/amount-control/AmountControl.styles.d.ts +8 -4
- package/lib/types/components/button/Button.styles.d.ts +8 -6
- package/lib/types/components/button/Button.types.d.ts +8 -0
- package/lib/types/components/checkbox/Checkbox.d.ts +4 -0
- package/lib/types/components/checkbox/Checkbox.styles.d.ts +5 -1
- package/lib/types/components/color-scheme-provider/ColorSchemeProvider.d.ts +5 -0
- package/lib/types/components/combobox/ComboBox.styles.d.ts +4 -2
- package/lib/types/components/combobox/ComboBox.types.d.ts +5 -0
- package/lib/types/components/context-menu/ContextMenu.styles.d.ts +4 -2
- package/lib/types/components/context-menu/ContextMenu.types.d.ts +6 -0
- package/lib/types/components/context-menu/context-menu-content/ContextMenuContent.styles.d.ts +2 -2
- package/lib/types/components/dropdown-body-wrapper/delayed-dropdown-content/DelayedDropdownContent.styles.d.ts +2 -2
- package/lib/types/components/expandable-content/ExpandableContent.styles.d.ts +2 -2
- package/lib/types/components/file-input/FileInput.d.ts +4 -0
- package/lib/types/components/file-input/FileInput.styles.d.ts +2 -2
- package/lib/types/components/file-list/file-item/FileItem.styles.d.ts +3 -0
- package/lib/types/components/file-select/FileSelect.d.ts +4 -0
- package/lib/types/components/file-select/FileSelect.styles.d.ts +6 -4
- package/lib/types/components/filter/Filter.d.ts +1 -0
- package/lib/types/components/filter/Filter.styles.d.ts +6 -4
- package/lib/types/components/filter/filter-content/FilterContent.types.d.ts +4 -0
- package/lib/types/components/filter-buttons/FilterButtons.d.ts +4 -0
- package/lib/types/components/filter-buttons/filter-button/FilterButton.d.ts +5 -0
- package/lib/types/components/filter-buttons/filter-button/FilterButton.styles.d.ts +12 -8
- package/lib/types/components/grid-image/GridImage.d.ts +4 -0
- package/lib/types/components/grid-image/GridImage.styles.d.ts +4 -2
- package/lib/types/components/grouped-image/GroupedImage.d.ts +4 -0
- package/lib/types/components/grouped-image/GroupedImage.styles.d.ts +8 -6
- package/lib/types/components/highlight-slider/HighlightSlider.d.ts +4 -0
- package/lib/types/components/highlight-slider/highlight-slider-item/HighlightSliderItem.d.ts +3 -0
- package/lib/types/components/highlight-slider/highlight-slider-item/HighlightSliderItem.styles.d.ts +9 -5
- package/lib/types/components/icon/Icon.d.ts +4 -0
- package/lib/types/components/icon/Icon.styles.d.ts +1 -0
- package/lib/types/components/input/Input.d.ts +4 -0
- package/lib/types/components/input/Input.styles.d.ts +17 -9
- package/lib/types/components/list/List.d.ts +11 -0
- package/lib/types/components/list/List.utils.d.ts +16 -1
- package/lib/types/components/list/list-item/ListItem.styles.d.ts +64 -64
- package/lib/types/components/list/list-item/list-item-body/ListItemBody.styles.d.ts +2 -2
- package/lib/types/components/list/list-item/list-item-head/ListItemHead.d.ts +1 -0
- package/lib/types/components/list/list-item/list-item-head/ListItemHead.styles.d.ts +195 -194
- package/lib/types/components/list/list-item/list-item-head/list-item-right-element/ListItemRightElement.d.ts +1 -0
- package/lib/types/components/list/list-item/list-item-head/list-item-subtitle/ListItemSubtitle.d.ts +1 -0
- package/lib/types/components/list/list-item/list-item-head/list-item-title/ListItemTitle.d.ts +1 -0
- package/lib/types/components/list/list-item/useListItemFocus.d.ts +13 -0
- package/lib/types/components/masonry/masonry-item/MasonryItem.styles.d.ts +2 -2
- package/lib/types/components/mention-finder/MentionFinder.styles.d.ts +4 -4
- package/lib/types/components/multi-action-button/MultiActionButton.styles.d.ts +2 -2
- package/lib/types/components/multi-action-button/MultiActionButton.types.d.ts +7 -0
- package/lib/types/components/multi-action-button/action-button/ActionButton.d.ts +4 -1
- package/lib/types/components/multi-action-button/action-button/ActionButton.styles.d.ts +4 -2
- package/lib/types/components/number-input/NumberInput.d.ts +4 -0
- package/lib/types/components/popup/popup-content-wrapper/PopupContentWrapper.styles.d.ts +2 -2
- package/lib/types/components/progress-bar/ProgressBar.styles.d.ts +6 -6
- package/lib/types/components/radio-button/RadioButton.d.ts +4 -0
- package/lib/types/components/radio-button/RadioButton.styles.d.ts +15 -9
- package/lib/types/components/radio-button/radio-button-group/RadioButtonGroup.d.ts +5 -0
- package/lib/types/components/search-box/SearchBox.d.ts +4 -0
- package/lib/types/components/search-box/SearchBox.styles.d.ts +2 -2
- package/lib/types/components/search-input/SearchInput.d.ts +4 -0
- package/lib/types/components/search-input/SearchInput.styles.d.ts +17 -9
- package/lib/types/components/select-button/SelectButton.d.ts +4 -0
- package/lib/types/components/setup-wizard/SetupWizard.d.ts +5 -0
- package/lib/types/components/sharing-bar/SharingBar.d.ts +4 -0
- package/lib/types/components/sharing-button/SharingButton.d.ts +1 -1
- package/lib/types/components/sharing-context-menu/SharingContextMenu.d.ts +10 -2
- package/lib/types/components/signature/Signature.d.ts +4 -0
- package/lib/types/components/skeleton/base-skeleton/BaseSkeleton.styles.d.ts +4 -4
- package/lib/types/components/slider/Slider.d.ts +8 -0
- package/lib/types/components/slider/Slider.styles.d.ts +18 -14
- package/lib/types/components/slider-button/SliderButton.d.ts +1 -28
- package/lib/types/components/slider-button/SliderButton.styles.d.ts +6 -4
- package/lib/types/components/slider-button/SliderButton.types.d.ts +32 -0
- package/lib/types/components/slider-button/useSliderButtonPopupKeyboard.d.ts +17 -0
- package/lib/types/components/slider-button/useSliderButtonThumbKeyboard.d.ts +13 -0
- package/lib/types/components/tag-input/TagInput.d.ts +4 -0
- package/lib/types/components/tag-input/TagInput.styles.d.ts +12 -2
- package/lib/types/components/text-area/TextArea.d.ts +4 -0
- package/lib/types/components/text-area/TextArea.styles.d.ts +1 -0
- package/lib/types/components/truncation/Truncation.d.ts +4 -0
- package/lib/types/components/truncation/Truncation.styles.d.ts +7 -2
- package/lib/types/hooks/useKeyboardFocusHighlighting.d.ts +5 -0
- package/lib/types/utils/file.d.ts +1 -1
- package/lib/types/utils/keyboardFocusHighlighting.styles.d.ts +9 -0
- package/package.json +2 -2
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import React, { isValidElement, useMemo } from 'react';
|
|
1
|
+
import React, { isValidElement, useEffect, useMemo, useRef } from 'react';
|
|
2
2
|
import { StyledListItemRightElement } from './ListItemRightElement.styles';
|
|
3
3
|
import { getElementClickEvent } from '../../../../../utils/accordion';
|
|
4
4
|
const ListItemRightElement = ({
|
|
5
|
-
rightElements
|
|
5
|
+
rightElements,
|
|
6
|
+
shouldAllowFocus = true
|
|
6
7
|
}) => {
|
|
8
|
+
const rightElementRef = useRef(null);
|
|
7
9
|
const handlePreventClick = event => {
|
|
8
10
|
event.stopPropagation();
|
|
9
11
|
event.preventDefault();
|
|
@@ -23,10 +25,39 @@ const ListItemRightElement = ({
|
|
|
23
25
|
}
|
|
24
26
|
return false;
|
|
25
27
|
}, [centerElement]);
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
const rightElement = rightElementRef.current;
|
|
30
|
+
if (!rightElement) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const focusableElements = Array.from(rightElement.querySelectorAll('a[href], button, input, select, textarea, [tabindex], [contenteditable="true"]'));
|
|
34
|
+
focusableElements.forEach(element => {
|
|
35
|
+
const currentElement = element;
|
|
36
|
+
const datasetKey = 'listItemRightElementOriginalTabIndex';
|
|
37
|
+
if (shouldAllowFocus) {
|
|
38
|
+
const originalTabIndex = currentElement.dataset[datasetKey];
|
|
39
|
+
if (typeof originalTabIndex === 'string') {
|
|
40
|
+
if (originalTabIndex === '') {
|
|
41
|
+
currentElement.removeAttribute('tabindex');
|
|
42
|
+
} else {
|
|
43
|
+
currentElement.setAttribute('tabindex', originalTabIndex);
|
|
44
|
+
}
|
|
45
|
+
delete currentElement.dataset[datasetKey];
|
|
46
|
+
}
|
|
47
|
+
} else {
|
|
48
|
+
if (typeof currentElement.dataset[datasetKey] !== 'string') {
|
|
49
|
+
currentElement.dataset[datasetKey] = currentElement.getAttribute('tabindex') ?? '';
|
|
50
|
+
}
|
|
51
|
+
currentElement.setAttribute('tabindex', '-1');
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}, [centerElement, shouldAllowFocus]);
|
|
26
55
|
if (!centerElement) {
|
|
27
56
|
return null;
|
|
28
57
|
}
|
|
29
58
|
return /*#__PURE__*/React.createElement(StyledListItemRightElement, {
|
|
59
|
+
ref: rightElementRef,
|
|
60
|
+
"data-right-element": "true",
|
|
30
61
|
onClick: shouldPreventRightElementClick ? handlePreventClick : undefined
|
|
31
62
|
}, centerElement);
|
|
32
63
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListItemRightElement.js","names":["React","isValidElement","useMemo","StyledListItemRightElement","getElementClickEvent","ListItemRightElement","rightElements","handlePreventClick","event","stopPropagation","preventDefault","centerElement","center","undefined","shouldPreventRightElementClick","createElement","onClick","displayName"],"sources":["../../../../../../../src/components/list/list-item/list-item-head/list-item-right-element/ListItemRightElement.tsx"],"sourcesContent":["import React, { FC, isValidElement, useMemo } from 'react';\nimport type { IListItemRightElement, IListItemRightElements } from '../../../../../types/list';\nimport { StyledListItemRightElement } from './ListItemRightElement.styles';\nimport { getElementClickEvent } from '../../../../../utils/accordion';\n\ntype ListItemRightElementProps = {\n rightElements?: IListItemRightElements;\n};\n\nconst ListItemRightElement: FC<ListItemRightElementProps> = ({
|
|
1
|
+
{"version":3,"file":"ListItemRightElement.js","names":["React","isValidElement","useEffect","useMemo","useRef","StyledListItemRightElement","getElementClickEvent","ListItemRightElement","rightElements","shouldAllowFocus","rightElementRef","handlePreventClick","event","stopPropagation","preventDefault","centerElement","center","undefined","shouldPreventRightElementClick","rightElement","current","focusableElements","Array","from","querySelectorAll","forEach","element","currentElement","datasetKey","originalTabIndex","dataset","removeAttribute","setAttribute","getAttribute","createElement","ref","onClick","displayName"],"sources":["../../../../../../../src/components/list/list-item/list-item-head/list-item-right-element/ListItemRightElement.tsx"],"sourcesContent":["import React, { FC, isValidElement, useEffect, useMemo, useRef } from 'react';\nimport type { IListItemRightElement, IListItemRightElements } from '../../../../../types/list';\nimport { StyledListItemRightElement } from './ListItemRightElement.styles';\nimport { getElementClickEvent } from '../../../../../utils/accordion';\n\ntype ListItemRightElementProps = {\n rightElements?: IListItemRightElements;\n shouldAllowFocus?: boolean;\n};\n\nconst ListItemRightElement: FC<ListItemRightElementProps> = ({\n rightElements,\n shouldAllowFocus = true,\n}) => {\n const rightElementRef = useRef<HTMLDivElement>(null);\n\n const handlePreventClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n event.preventDefault();\n };\n\n const centerElement = useMemo(() => {\n if (typeof rightElements === 'string' || isValidElement(rightElements)) {\n return rightElements;\n }\n\n if (typeof rightElements === 'object' && rightElements && 'center' in rightElements) {\n return (rightElements as unknown as IListItemRightElement).center;\n }\n\n return undefined;\n }, [rightElements]);\n\n const shouldPreventRightElementClick = useMemo(() => {\n if (centerElement) {\n return getElementClickEvent(centerElement);\n }\n\n return false;\n }, [centerElement]);\n\n useEffect(() => {\n const rightElement = rightElementRef.current;\n\n if (!rightElement) {\n return;\n }\n\n const focusableElements = Array.from(\n rightElement.querySelectorAll<HTMLElement>(\n 'a[href], button, input, select, textarea, [tabindex], [contenteditable=\"true\"]',\n ),\n );\n\n focusableElements.forEach((element) => {\n const currentElement = element;\n const datasetKey = 'listItemRightElementOriginalTabIndex';\n\n if (shouldAllowFocus) {\n const originalTabIndex = currentElement.dataset[datasetKey];\n\n if (typeof originalTabIndex === 'string') {\n if (originalTabIndex === '') {\n currentElement.removeAttribute('tabindex');\n } else {\n currentElement.setAttribute('tabindex', originalTabIndex);\n }\n\n delete currentElement.dataset[datasetKey];\n }\n } else {\n if (typeof currentElement.dataset[datasetKey] !== 'string') {\n currentElement.dataset[datasetKey] =\n currentElement.getAttribute('tabindex') ?? '';\n }\n\n currentElement.setAttribute('tabindex', '-1');\n }\n });\n }, [centerElement, shouldAllowFocus]);\n\n if (!centerElement) {\n return null;\n }\n\n return (\n <StyledListItemRightElement\n ref={rightElementRef}\n data-right-element=\"true\"\n onClick={shouldPreventRightElementClick ? handlePreventClick : undefined}\n >\n {centerElement}\n </StyledListItemRightElement>\n );\n};\n\nListItemRightElement.displayName = 'ListItemRightElement';\n\nexport default ListItemRightElement;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAQC,cAAc,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,QAAQ,OAAO;AAE7E,SAASC,0BAA0B,QAAQ,+BAA+B;AAC1E,SAASC,oBAAoB,QAAQ,gCAAgC;AAOrE,MAAMC,oBAAmD,GAAGA,CAAC;EACzDC,aAAa;EACbC,gBAAgB,GAAG;AACvB,CAAC,KAAK;EACF,MAAMC,eAAe,GAAGN,MAAM,CAAiB,IAAI,CAAC;EAEpD,MAAMO,kBAAkB,GAAIC,KAAuB,IAAK;IACpDA,KAAK,CAACC,eAAe,CAAC,CAAC;IACvBD,KAAK,CAACE,cAAc,CAAC,CAAC;EAC1B,CAAC;EAED,MAAMC,aAAa,GAAGZ,OAAO,CAAC,MAAM;IAChC,IAAI,OAAOK,aAAa,KAAK,QAAQ,iBAAIP,cAAc,CAACO,aAAa,CAAC,EAAE;MACpE,OAAOA,aAAa;IACxB;IAEA,IAAI,OAAOA,aAAa,KAAK,QAAQ,IAAIA,aAAa,IAAI,QAAQ,IAAIA,aAAa,EAAE;MACjF,OAAQA,aAAa,CAAsCQ,MAAM;IACrE;IAEA,OAAOC,SAAS;EACpB,CAAC,EAAE,CAACT,aAAa,CAAC,CAAC;EAEnB,MAAMU,8BAA8B,GAAGf,OAAO,CAAC,MAAM;IACjD,IAAIY,aAAa,EAAE;MACf,OAAOT,oBAAoB,CAACS,aAAa,CAAC;IAC9C;IAEA,OAAO,KAAK;EAChB,CAAC,EAAE,CAACA,aAAa,CAAC,CAAC;EAEnBb,SAAS,CAAC,MAAM;IACZ,MAAMiB,YAAY,GAAGT,eAAe,CAACU,OAAO;IAE5C,IAAI,CAACD,YAAY,EAAE;MACf;IACJ;IAEA,MAAME,iBAAiB,GAAGC,KAAK,CAACC,IAAI,CAChCJ,YAAY,CAACK,gBAAgB,CACzB,gFACJ,CACJ,CAAC;IAEDH,iBAAiB,CAACI,OAAO,CAAEC,OAAO,IAAK;MACnC,MAAMC,cAAc,GAAGD,OAAO;MAC9B,MAAME,UAAU,GAAG,sCAAsC;MAEzD,IAAInB,gBAAgB,EAAE;QAClB,MAAMoB,gBAAgB,GAAGF,cAAc,CAACG,OAAO,CAACF,UAAU,CAAC;QAE3D,IAAI,OAAOC,gBAAgB,KAAK,QAAQ,EAAE;UACtC,IAAIA,gBAAgB,KAAK,EAAE,EAAE;YACzBF,cAAc,CAACI,eAAe,CAAC,UAAU,CAAC;UAC9C,CAAC,MAAM;YACHJ,cAAc,CAACK,YAAY,CAAC,UAAU,EAAEH,gBAAgB,CAAC;UAC7D;UAEA,OAAOF,cAAc,CAACG,OAAO,CAACF,UAAU,CAAC;QAC7C;MACJ,CAAC,MAAM;QACH,IAAI,OAAOD,cAAc,CAACG,OAAO,CAACF,UAAU,CAAC,KAAK,QAAQ,EAAE;UACxDD,cAAc,CAACG,OAAO,CAACF,UAAU,CAAC,GAC9BD,cAAc,CAACM,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE;QACrD;QAEAN,cAAc,CAACK,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;MACjD;IACJ,CAAC,CAAC;EACN,CAAC,EAAE,CAACjB,aAAa,EAAEN,gBAAgB,CAAC,CAAC;EAErC,IAAI,CAACM,aAAa,EAAE;IAChB,OAAO,IAAI;EACf;EAEA,oBACIf,KAAA,CAAAkC,aAAA,CAAC7B,0BAA0B;IACvB8B,GAAG,EAAEzB,eAAgB;IACrB,sBAAmB,MAAM;IACzB0B,OAAO,EAAElB,8BAA8B,GAAGP,kBAAkB,GAAGM;EAAU,GAExEF,aACuB,CAAC;AAErC,CAAC;AAEDR,oBAAoB,CAAC8B,WAAW,GAAG,sBAAsB;AAEzD,eAAe9B,oBAAoB","ignoreList":[]}
|
package/lib/esm/components/list/list-item/list-item-head/list-item-subtitle/ListItemSubtitle.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import React, { useMemo } from 'react';
|
|
1
|
+
import React, { useEffect, useMemo, useRef } from 'react';
|
|
2
2
|
import { StyledListItemHeadSubtitleText, StyledListItemSubtitle, StyledListItemBottomRightElement } from './ListItemSubtitle.styles';
|
|
3
3
|
import { getElementClickEvent } from '../../../../../utils/accordion';
|
|
4
4
|
const ListItemSubtitle = ({
|
|
5
5
|
rightElements,
|
|
6
6
|
subtitle,
|
|
7
|
-
isOpen
|
|
7
|
+
isOpen,
|
|
8
|
+
shouldAllowRightElementFocus = true
|
|
8
9
|
}) => {
|
|
10
|
+
const bottomElementRef = useRef(null);
|
|
9
11
|
const handlePreventClick = event => {
|
|
10
12
|
event.stopPropagation();
|
|
11
13
|
event.preventDefault();
|
|
@@ -22,9 +24,38 @@ const ListItemSubtitle = ({
|
|
|
22
24
|
}
|
|
23
25
|
return false;
|
|
24
26
|
}, [bottomElement]);
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
const bottomElementWrapper = bottomElementRef.current;
|
|
29
|
+
if (!bottomElementWrapper) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const focusableElements = Array.from(bottomElementWrapper.querySelectorAll('a[href], button, input, select, textarea, [tabindex], [contenteditable="true"]'));
|
|
33
|
+
focusableElements.forEach(element => {
|
|
34
|
+
const currentElement = element;
|
|
35
|
+
const datasetKey = 'listItemRightElementOriginalTabIndex';
|
|
36
|
+
if (shouldAllowRightElementFocus) {
|
|
37
|
+
const originalTabIndex = currentElement.dataset[datasetKey];
|
|
38
|
+
if (typeof originalTabIndex === 'string') {
|
|
39
|
+
if (originalTabIndex === '') {
|
|
40
|
+
currentElement.removeAttribute('tabindex');
|
|
41
|
+
} else {
|
|
42
|
+
currentElement.setAttribute('tabindex', originalTabIndex);
|
|
43
|
+
}
|
|
44
|
+
delete currentElement.dataset[datasetKey];
|
|
45
|
+
}
|
|
46
|
+
} else {
|
|
47
|
+
if (typeof currentElement.dataset[datasetKey] !== 'string') {
|
|
48
|
+
currentElement.dataset[datasetKey] = currentElement.getAttribute('tabindex') ?? '';
|
|
49
|
+
}
|
|
50
|
+
currentElement.setAttribute('tabindex', '-1');
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}, [bottomElement, shouldAllowRightElementFocus]);
|
|
25
54
|
return /*#__PURE__*/React.createElement(StyledListItemSubtitle, null, /*#__PURE__*/React.createElement(StyledListItemHeadSubtitleText, {
|
|
26
55
|
$isOpen: isOpen
|
|
27
56
|
}, subtitle), bottomElement && /*#__PURE__*/React.createElement(StyledListItemBottomRightElement, {
|
|
57
|
+
"data-right-element": "true",
|
|
58
|
+
ref: bottomElementRef,
|
|
28
59
|
onClick: shouldPreventRightElementClick ? handlePreventClick : undefined
|
|
29
60
|
}, bottomElement));
|
|
30
61
|
};
|
package/lib/esm/components/list/list-item/list-item-head/list-item-subtitle/ListItemSubtitle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListItemSubtitle.js","names":["React","useMemo","StyledListItemHeadSubtitleText","StyledListItemSubtitle","StyledListItemBottomRightElement","getElementClickEvent","ListItemSubtitle","rightElements","subtitle","isOpen","handlePreventClick","event","stopPropagation","preventDefault","bottomElement","bottom","undefined","shouldPreventRightElementClick","createElement","$isOpen","onClick","displayName"],"sources":["../../../../../../../src/components/list/list-item/list-item-head/list-item-subtitle/ListItemSubtitle.tsx"],"sourcesContent":["import React, { FC, ReactNode, useMemo } from 'react';\nimport type { IListItemRightElement, IListItemRightElements } from '../../../../../types/list';\nimport {\n StyledListItemHeadSubtitleText,\n StyledListItemSubtitle,\n StyledListItemBottomRightElement,\n} from './ListItemSubtitle.styles';\nimport { getElementClickEvent } from '../../../../../utils/accordion';\n\ntype ListItemSubtitleProps = {\n rightElements?: IListItemRightElements;\n subtitle?: ReactNode;\n isOpen: boolean;\n};\n\nconst ListItemSubtitle: FC<ListItemSubtitleProps> = ({
|
|
1
|
+
{"version":3,"file":"ListItemSubtitle.js","names":["React","useEffect","useMemo","useRef","StyledListItemHeadSubtitleText","StyledListItemSubtitle","StyledListItemBottomRightElement","getElementClickEvent","ListItemSubtitle","rightElements","subtitle","isOpen","shouldAllowRightElementFocus","bottomElementRef","handlePreventClick","event","stopPropagation","preventDefault","bottomElement","bottom","undefined","shouldPreventRightElementClick","bottomElementWrapper","current","focusableElements","Array","from","querySelectorAll","forEach","element","currentElement","datasetKey","originalTabIndex","dataset","removeAttribute","setAttribute","getAttribute","createElement","$isOpen","ref","onClick","displayName"],"sources":["../../../../../../../src/components/list/list-item/list-item-head/list-item-subtitle/ListItemSubtitle.tsx"],"sourcesContent":["import React, { FC, ReactNode, useEffect, useMemo, useRef } from 'react';\nimport type { IListItemRightElement, IListItemRightElements } from '../../../../../types/list';\nimport {\n StyledListItemHeadSubtitleText,\n StyledListItemSubtitle,\n StyledListItemBottomRightElement,\n} from './ListItemSubtitle.styles';\nimport { getElementClickEvent } from '../../../../../utils/accordion';\n\ntype ListItemSubtitleProps = {\n rightElements?: IListItemRightElements;\n subtitle?: ReactNode;\n isOpen: boolean;\n shouldAllowRightElementFocus?: boolean;\n};\n\nconst ListItemSubtitle: FC<ListItemSubtitleProps> = ({\n rightElements,\n subtitle,\n isOpen,\n shouldAllowRightElementFocus = true,\n}) => {\n const bottomElementRef = useRef<HTMLDivElement>(null);\n\n const handlePreventClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n event.preventDefault();\n };\n\n const bottomElement = useMemo(() => {\n if (typeof rightElements === 'object' && rightElements && 'bottom' in rightElements) {\n return (rightElements as unknown as IListItemRightElement).bottom;\n }\n\n return undefined;\n }, [rightElements]);\n\n const shouldPreventRightElementClick = useMemo(() => {\n if (bottomElement) {\n return getElementClickEvent(bottomElement);\n }\n\n return false;\n }, [bottomElement]);\n\n useEffect(() => {\n const bottomElementWrapper = bottomElementRef.current;\n\n if (!bottomElementWrapper) {\n return;\n }\n\n const focusableElements = Array.from(\n bottomElementWrapper.querySelectorAll<HTMLElement>(\n 'a[href], button, input, select, textarea, [tabindex], [contenteditable=\"true\"]',\n ),\n );\n\n focusableElements.forEach((element) => {\n const currentElement = element;\n const datasetKey = 'listItemRightElementOriginalTabIndex';\n\n if (shouldAllowRightElementFocus) {\n const originalTabIndex = currentElement.dataset[datasetKey];\n\n if (typeof originalTabIndex === 'string') {\n if (originalTabIndex === '') {\n currentElement.removeAttribute('tabindex');\n } else {\n currentElement.setAttribute('tabindex', originalTabIndex);\n }\n\n delete currentElement.dataset[datasetKey];\n }\n } else {\n if (typeof currentElement.dataset[datasetKey] !== 'string') {\n currentElement.dataset[datasetKey] =\n currentElement.getAttribute('tabindex') ?? '';\n }\n\n currentElement.setAttribute('tabindex', '-1');\n }\n });\n }, [bottomElement, shouldAllowRightElementFocus]);\n\n return (\n <StyledListItemSubtitle>\n <StyledListItemHeadSubtitleText $isOpen={isOpen}>\n {subtitle}\n </StyledListItemHeadSubtitleText>\n {bottomElement && (\n <StyledListItemBottomRightElement\n data-right-element=\"true\"\n ref={bottomElementRef}\n onClick={shouldPreventRightElementClick ? handlePreventClick : undefined}\n >\n {bottomElement}\n </StyledListItemBottomRightElement>\n )}\n </StyledListItemSubtitle>\n );\n};\n\nListItemSubtitle.displayName = 'ListItemSubtitle';\n\nexport default ListItemSubtitle;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -8,7 +8,8 @@ const ListItemTitle = ({
|
|
|
8
8
|
shouldShowMultilineTitle,
|
|
9
9
|
isOpen,
|
|
10
10
|
onResize,
|
|
11
|
-
onTitleWidthChange
|
|
11
|
+
onTitleWidthChange,
|
|
12
|
+
shouldAllowRightElementFocus = true
|
|
12
13
|
}) => {
|
|
13
14
|
const titleWrapperRef = useRef(null);
|
|
14
15
|
const wrapperRef = useRef(null);
|
|
@@ -52,6 +53,33 @@ const ListItemTitle = ({
|
|
|
52
53
|
}
|
|
53
54
|
return false;
|
|
54
55
|
}, [topElement]);
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
const topElementWrapper = topElementWrapperRef.current;
|
|
58
|
+
if (!topElementWrapper) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const focusableElements = Array.from(topElementWrapper.querySelectorAll('a[href], button, input, select, textarea, [tabindex], [contenteditable="true"]'));
|
|
62
|
+
focusableElements.forEach(element => {
|
|
63
|
+
const currentElement = element;
|
|
64
|
+
const datasetKey = 'listItemRightElementOriginalTabIndex';
|
|
65
|
+
if (shouldAllowRightElementFocus) {
|
|
66
|
+
const originalTabIndex = currentElement.dataset[datasetKey];
|
|
67
|
+
if (typeof originalTabIndex === 'string') {
|
|
68
|
+
if (originalTabIndex === '') {
|
|
69
|
+
currentElement.removeAttribute('tabindex');
|
|
70
|
+
} else {
|
|
71
|
+
currentElement.setAttribute('tabindex', originalTabIndex);
|
|
72
|
+
}
|
|
73
|
+
delete currentElement.dataset[datasetKey];
|
|
74
|
+
}
|
|
75
|
+
} else {
|
|
76
|
+
if (typeof currentElement.dataset[datasetKey] !== 'string') {
|
|
77
|
+
currentElement.dataset[datasetKey] = currentElement.getAttribute('tabindex') ?? '';
|
|
78
|
+
}
|
|
79
|
+
currentElement.setAttribute('tabindex', '-1');
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}, [shouldAllowRightElementFocus, topElement]);
|
|
55
83
|
return /*#__PURE__*/React.createElement(StyledListItemTitle, {
|
|
56
84
|
ref: wrapperRef
|
|
57
85
|
}, /*#__PURE__*/React.createElement(StyledListItemTitleLeftWrapper, null, /*#__PURE__*/React.createElement(StyledListItemHeadTitleText, {
|
|
@@ -61,6 +89,7 @@ const ListItemTitle = ({
|
|
|
61
89
|
}, title), /*#__PURE__*/React.createElement(StyledListItemHeadTitleElement, {
|
|
62
90
|
ref: elementWrapperRef
|
|
63
91
|
}, titleElement)), topElement && /*#__PURE__*/React.createElement(StyledListItemTopRightElement, {
|
|
92
|
+
"data-right-element": "true",
|
|
64
93
|
ref: topElementWrapperRef,
|
|
65
94
|
onClick: shouldPreventRightElementClick ? handlePreventClick : undefined
|
|
66
95
|
}, topElement));
|
package/lib/esm/components/list/list-item/list-item-head/list-item-title/ListItemTitle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListItemTitle.js","names":["React","useEffect","useMemo","useRef","StyledListItemHeadTitleElement","StyledListItemHeadTitleText","StyledListItemTitle","StyledListItemTitleLeftWrapper","StyledListItemTopRightElement","getElementClickEvent","ListItemTitle","rightElements","titleElement","title","shouldShowMultilineTitle","isOpen","onResize","onTitleWidthChange","titleWrapperRef","wrapperRef","elementWrapperRef","topElementWrapperRef","element","current","undefined","resizeObserver","ResizeObserver","observe","disconnect","fullWidth","clientWidth","rightElementWidth","topElementWidth","width","handlePreventClick","event","stopPropagation","preventDefault","topElement","top","shouldPreventRightElementClick","createElement","ref","$isEllipsis","$shouldShowMultilineTitle","onClick","displayName"],"sources":["../../../../../../../src/components/list/list-item/list-item-head/list-item-title/ListItemTitle.tsx"],"sourcesContent":["import React, { FC, ReactNode, useEffect, useMemo, useRef } from 'react';\nimport type { IListItemRightElement, IListItemRightElements } from '../../../../../types/list';\nimport {\n StyledListItemHeadTitleElement,\n StyledListItemHeadTitleText,\n StyledListItemTitle,\n StyledListItemTitleLeftWrapper,\n StyledListItemTopRightElement,\n} from './ListItemTitle.styles';\nimport { getElementClickEvent } from '../../../../../utils/accordion';\n\ntype ListItemTitleProps = {\n rightElements?: IListItemRightElements;\n title: ReactNode;\n titleElement?: ReactNode;\n shouldShowMultilineTitle: boolean;\n isOpen: boolean;\n onResize?: (entries: ResizeObserverEntry[]) => void;\n onTitleWidthChange: (width: number) => void;\n};\n\nconst ListItemTitle: FC<ListItemTitleProps> = ({\n rightElements,\n titleElement,\n title,\n shouldShowMultilineTitle,\n isOpen,\n onResize,\n onTitleWidthChange,\n}) => {\n const titleWrapperRef = useRef<HTMLDivElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const elementWrapperRef = useRef<HTMLDivElement>(null);\n const topElementWrapperRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const element = titleWrapperRef?.current;\n if (!element || typeof onResize !== 'function') return undefined;\n\n const resizeObserver = new ResizeObserver(onResize);\n resizeObserver.observe(element);\n\n return () => resizeObserver.disconnect();\n }, [onResize]);\n\n useEffect(() => {\n if (wrapperRef.current && elementWrapperRef.current) {\n const fullWidth = wrapperRef.current.clientWidth;\n const rightElementWidth = elementWrapperRef.current.clientWidth;\n const topElementWidth = topElementWrapperRef.current?.clientWidth;\n\n let width = fullWidth;\n\n if (rightElementWidth > 0) {\n width -= rightElementWidth + 8;\n }\n\n if (topElementWidth) {\n width -= topElementWidth + 12;\n }\n\n onTitleWidthChange(width);\n }\n }, [onTitleWidthChange]);\n\n const handlePreventClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n event.preventDefault();\n };\n\n const topElement = useMemo(() => {\n if (typeof rightElements === 'object' && rightElements && 'top' in rightElements) {\n return (rightElements as unknown as IListItemRightElement).top;\n }\n\n return undefined;\n }, [rightElements]);\n\n const shouldPreventRightElementClick = useMemo(() => {\n if (topElement) {\n return getElementClickEvent(topElement);\n }\n\n return false;\n }, [topElement]);\n\n return (\n <StyledListItemTitle ref={wrapperRef}>\n <StyledListItemTitleLeftWrapper>\n <StyledListItemHeadTitleText\n $isEllipsis={!isOpen}\n ref={titleWrapperRef}\n $shouldShowMultilineTitle={shouldShowMultilineTitle}\n >\n {title}\n </StyledListItemHeadTitleText>\n <StyledListItemHeadTitleElement ref={elementWrapperRef}>\n {titleElement}\n </StyledListItemHeadTitleElement>\n </StyledListItemTitleLeftWrapper>\n {topElement && (\n <StyledListItemTopRightElement\n ref={topElementWrapperRef}\n onClick={shouldPreventRightElementClick ? handlePreventClick : undefined}\n >\n {topElement}\n </StyledListItemTopRightElement>\n )}\n </StyledListItemTitle>\n );\n};\n\nListItemTitle.displayName = 'ListItemTitle';\n\nexport default ListItemTitle;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAmBC,SAAS,EAAEC,OAAO,EAAEC,MAAM,QAAQ,OAAO;AAExE,SACIC,8BAA8B,EAC9BC,2BAA2B,EAC3BC,mBAAmB,EACnBC,8BAA8B,EAC9BC,6BAA6B,QAC1B,wBAAwB;AAC/B,SAASC,oBAAoB,QAAQ,gCAAgC;
|
|
1
|
+
{"version":3,"file":"ListItemTitle.js","names":["React","useEffect","useMemo","useRef","StyledListItemHeadTitleElement","StyledListItemHeadTitleText","StyledListItemTitle","StyledListItemTitleLeftWrapper","StyledListItemTopRightElement","getElementClickEvent","ListItemTitle","rightElements","titleElement","title","shouldShowMultilineTitle","isOpen","onResize","onTitleWidthChange","shouldAllowRightElementFocus","titleWrapperRef","wrapperRef","elementWrapperRef","topElementWrapperRef","element","current","undefined","resizeObserver","ResizeObserver","observe","disconnect","fullWidth","clientWidth","rightElementWidth","topElementWidth","width","handlePreventClick","event","stopPropagation","preventDefault","topElement","top","shouldPreventRightElementClick","topElementWrapper","focusableElements","Array","from","querySelectorAll","forEach","currentElement","datasetKey","originalTabIndex","dataset","removeAttribute","setAttribute","getAttribute","createElement","ref","$isEllipsis","$shouldShowMultilineTitle","onClick","displayName"],"sources":["../../../../../../../src/components/list/list-item/list-item-head/list-item-title/ListItemTitle.tsx"],"sourcesContent":["import React, { FC, ReactNode, useEffect, useMemo, useRef } from 'react';\nimport type { IListItemRightElement, IListItemRightElements } from '../../../../../types/list';\nimport {\n StyledListItemHeadTitleElement,\n StyledListItemHeadTitleText,\n StyledListItemTitle,\n StyledListItemTitleLeftWrapper,\n StyledListItemTopRightElement,\n} from './ListItemTitle.styles';\nimport { getElementClickEvent } from '../../../../../utils/accordion';\n\ntype ListItemTitleProps = {\n rightElements?: IListItemRightElements;\n title: ReactNode;\n titleElement?: ReactNode;\n shouldShowMultilineTitle: boolean;\n isOpen: boolean;\n onResize?: (entries: ResizeObserverEntry[]) => void;\n onTitleWidthChange: (width: number) => void;\n shouldAllowRightElementFocus?: boolean;\n};\n\nconst ListItemTitle: FC<ListItemTitleProps> = ({\n rightElements,\n titleElement,\n title,\n shouldShowMultilineTitle,\n isOpen,\n onResize,\n onTitleWidthChange,\n shouldAllowRightElementFocus = true,\n}) => {\n const titleWrapperRef = useRef<HTMLDivElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const elementWrapperRef = useRef<HTMLDivElement>(null);\n const topElementWrapperRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const element = titleWrapperRef?.current;\n if (!element || typeof onResize !== 'function') return undefined;\n\n const resizeObserver = new ResizeObserver(onResize);\n resizeObserver.observe(element);\n\n return () => resizeObserver.disconnect();\n }, [onResize]);\n\n useEffect(() => {\n if (wrapperRef.current && elementWrapperRef.current) {\n const fullWidth = wrapperRef.current.clientWidth;\n const rightElementWidth = elementWrapperRef.current.clientWidth;\n const topElementWidth = topElementWrapperRef.current?.clientWidth;\n\n let width = fullWidth;\n\n if (rightElementWidth > 0) {\n width -= rightElementWidth + 8;\n }\n\n if (topElementWidth) {\n width -= topElementWidth + 12;\n }\n\n onTitleWidthChange(width);\n }\n }, [onTitleWidthChange]);\n\n const handlePreventClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n event.preventDefault();\n };\n\n const topElement = useMemo(() => {\n if (typeof rightElements === 'object' && rightElements && 'top' in rightElements) {\n return (rightElements as unknown as IListItemRightElement).top;\n }\n\n return undefined;\n }, [rightElements]);\n\n const shouldPreventRightElementClick = useMemo(() => {\n if (topElement) {\n return getElementClickEvent(topElement);\n }\n\n return false;\n }, [topElement]);\n\n useEffect(() => {\n const topElementWrapper = topElementWrapperRef.current;\n\n if (!topElementWrapper) {\n return;\n }\n\n const focusableElements = Array.from(\n topElementWrapper.querySelectorAll<HTMLElement>(\n 'a[href], button, input, select, textarea, [tabindex], [contenteditable=\"true\"]',\n ),\n );\n\n focusableElements.forEach((element) => {\n const currentElement = element;\n const datasetKey = 'listItemRightElementOriginalTabIndex';\n\n if (shouldAllowRightElementFocus) {\n const originalTabIndex = currentElement.dataset[datasetKey];\n\n if (typeof originalTabIndex === 'string') {\n if (originalTabIndex === '') {\n currentElement.removeAttribute('tabindex');\n } else {\n currentElement.setAttribute('tabindex', originalTabIndex);\n }\n\n delete currentElement.dataset[datasetKey];\n }\n } else {\n if (typeof currentElement.dataset[datasetKey] !== 'string') {\n currentElement.dataset[datasetKey] =\n currentElement.getAttribute('tabindex') ?? '';\n }\n\n currentElement.setAttribute('tabindex', '-1');\n }\n });\n }, [shouldAllowRightElementFocus, topElement]);\n\n return (\n <StyledListItemTitle ref={wrapperRef}>\n <StyledListItemTitleLeftWrapper>\n <StyledListItemHeadTitleText\n $isEllipsis={!isOpen}\n ref={titleWrapperRef}\n $shouldShowMultilineTitle={shouldShowMultilineTitle}\n >\n {title}\n </StyledListItemHeadTitleText>\n <StyledListItemHeadTitleElement ref={elementWrapperRef}>\n {titleElement}\n </StyledListItemHeadTitleElement>\n </StyledListItemTitleLeftWrapper>\n {topElement && (\n <StyledListItemTopRightElement\n data-right-element=\"true\"\n ref={topElementWrapperRef}\n onClick={shouldPreventRightElementClick ? handlePreventClick : undefined}\n >\n {topElement}\n </StyledListItemTopRightElement>\n )}\n </StyledListItemTitle>\n );\n};\n\nListItemTitle.displayName = 'ListItemTitle';\n\nexport default ListItemTitle;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAmBC,SAAS,EAAEC,OAAO,EAAEC,MAAM,QAAQ,OAAO;AAExE,SACIC,8BAA8B,EAC9BC,2BAA2B,EAC3BC,mBAAmB,EACnBC,8BAA8B,EAC9BC,6BAA6B,QAC1B,wBAAwB;AAC/B,SAASC,oBAAoB,QAAQ,gCAAgC;AAarE,MAAMC,aAAqC,GAAGA,CAAC;EAC3CC,aAAa;EACbC,YAAY;EACZC,KAAK;EACLC,wBAAwB;EACxBC,MAAM;EACNC,QAAQ;EACRC,kBAAkB;EAClBC,4BAA4B,GAAG;AACnC,CAAC,KAAK;EACF,MAAMC,eAAe,GAAGhB,MAAM,CAAiB,IAAI,CAAC;EACpD,MAAMiB,UAAU,GAAGjB,MAAM,CAAiB,IAAI,CAAC;EAC/C,MAAMkB,iBAAiB,GAAGlB,MAAM,CAAiB,IAAI,CAAC;EACtD,MAAMmB,oBAAoB,GAAGnB,MAAM,CAAiB,IAAI,CAAC;EAEzDF,SAAS,CAAC,MAAM;IACZ,MAAMsB,OAAO,GAAGJ,eAAe,EAAEK,OAAO;IACxC,IAAI,CAACD,OAAO,IAAI,OAAOP,QAAQ,KAAK,UAAU,EAAE,OAAOS,SAAS;IAEhE,MAAMC,cAAc,GAAG,IAAIC,cAAc,CAACX,QAAQ,CAAC;IACnDU,cAAc,CAACE,OAAO,CAACL,OAAO,CAAC;IAE/B,OAAO,MAAMG,cAAc,CAACG,UAAU,CAAC,CAAC;EAC5C,CAAC,EAAE,CAACb,QAAQ,CAAC,CAAC;EAEdf,SAAS,CAAC,MAAM;IACZ,IAAImB,UAAU,CAACI,OAAO,IAAIH,iBAAiB,CAACG,OAAO,EAAE;MACjD,MAAMM,SAAS,GAAGV,UAAU,CAACI,OAAO,CAACO,WAAW;MAChD,MAAMC,iBAAiB,GAAGX,iBAAiB,CAACG,OAAO,CAACO,WAAW;MAC/D,MAAME,eAAe,GAAGX,oBAAoB,CAACE,OAAO,EAAEO,WAAW;MAEjE,IAAIG,KAAK,GAAGJ,SAAS;MAErB,IAAIE,iBAAiB,GAAG,CAAC,EAAE;QACvBE,KAAK,IAAIF,iBAAiB,GAAG,CAAC;MAClC;MAEA,IAAIC,eAAe,EAAE;QACjBC,KAAK,IAAID,eAAe,GAAG,EAAE;MACjC;MAEAhB,kBAAkB,CAACiB,KAAK,CAAC;IAC7B;EACJ,CAAC,EAAE,CAACjB,kBAAkB,CAAC,CAAC;EAExB,MAAMkB,kBAAkB,GAAIC,KAAuB,IAAK;IACpDA,KAAK,CAACC,eAAe,CAAC,CAAC;IACvBD,KAAK,CAACE,cAAc,CAAC,CAAC;EAC1B,CAAC;EAED,MAAMC,UAAU,GAAGrC,OAAO,CAAC,MAAM;IAC7B,IAAI,OAAOS,aAAa,KAAK,QAAQ,IAAIA,aAAa,IAAI,KAAK,IAAIA,aAAa,EAAE;MAC9E,OAAQA,aAAa,CAAsC6B,GAAG;IAClE;IAEA,OAAOf,SAAS;EACpB,CAAC,EAAE,CAACd,aAAa,CAAC,CAAC;EAEnB,MAAM8B,8BAA8B,GAAGvC,OAAO,CAAC,MAAM;IACjD,IAAIqC,UAAU,EAAE;MACZ,OAAO9B,oBAAoB,CAAC8B,UAAU,CAAC;IAC3C;IAEA,OAAO,KAAK;EAChB,CAAC,EAAE,CAACA,UAAU,CAAC,CAAC;EAEhBtC,SAAS,CAAC,MAAM;IACZ,MAAMyC,iBAAiB,GAAGpB,oBAAoB,CAACE,OAAO;IAEtD,IAAI,CAACkB,iBAAiB,EAAE;MACpB;IACJ;IAEA,MAAMC,iBAAiB,GAAGC,KAAK,CAACC,IAAI,CAChCH,iBAAiB,CAACI,gBAAgB,CAC9B,gFACJ,CACJ,CAAC;IAEDH,iBAAiB,CAACI,OAAO,CAAExB,OAAO,IAAK;MACnC,MAAMyB,cAAc,GAAGzB,OAAO;MAC9B,MAAM0B,UAAU,GAAG,sCAAsC;MAEzD,IAAI/B,4BAA4B,EAAE;QAC9B,MAAMgC,gBAAgB,GAAGF,cAAc,CAACG,OAAO,CAACF,UAAU,CAAC;QAE3D,IAAI,OAAOC,gBAAgB,KAAK,QAAQ,EAAE;UACtC,IAAIA,gBAAgB,KAAK,EAAE,EAAE;YACzBF,cAAc,CAACI,eAAe,CAAC,UAAU,CAAC;UAC9C,CAAC,MAAM;YACHJ,cAAc,CAACK,YAAY,CAAC,UAAU,EAAEH,gBAAgB,CAAC;UAC7D;UAEA,OAAOF,cAAc,CAACG,OAAO,CAACF,UAAU,CAAC;QAC7C;MACJ,CAAC,MAAM;QACH,IAAI,OAAOD,cAAc,CAACG,OAAO,CAACF,UAAU,CAAC,KAAK,QAAQ,EAAE;UACxDD,cAAc,CAACG,OAAO,CAACF,UAAU,CAAC,GAC9BD,cAAc,CAACM,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE;QACrD;QAEAN,cAAc,CAACK,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;MACjD;IACJ,CAAC,CAAC;EACN,CAAC,EAAE,CAACnC,4BAA4B,EAAEqB,UAAU,CAAC,CAAC;EAE9C,oBACIvC,KAAA,CAAAuD,aAAA,CAACjD,mBAAmB;IAACkD,GAAG,EAAEpC;EAAW,gBACjCpB,KAAA,CAAAuD,aAAA,CAAChD,8BAA8B,qBAC3BP,KAAA,CAAAuD,aAAA,CAAClD,2BAA2B;IACxBoD,WAAW,EAAE,CAAC1C,MAAO;IACrByC,GAAG,EAAErC,eAAgB;IACrBuC,yBAAyB,EAAE5C;EAAyB,GAEnDD,KACwB,CAAC,eAC9Bb,KAAA,CAAAuD,aAAA,CAACnD,8BAA8B;IAACoD,GAAG,EAAEnC;EAAkB,GAClDT,YAC2B,CACJ,CAAC,EAChC2B,UAAU,iBACPvC,KAAA,CAAAuD,aAAA,CAAC/C,6BAA6B;IAC1B,sBAAmB,MAAM;IACzBgD,GAAG,EAAElC,oBAAqB;IAC1BqC,OAAO,EAAElB,8BAA8B,GAAGN,kBAAkB,GAAGV;EAAU,GAExEc,UAC0B,CAElB,CAAC;AAE9B,CAAC;AAED7B,aAAa,CAACkD,WAAW,GAAG,eAAe;AAE3C,eAAelD,aAAa","ignoreList":[]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { useCallback, useState } from 'react';
|
|
2
|
+
export const useListItemFocus = ({
|
|
3
|
+
uuid,
|
|
4
|
+
listGroupUuid,
|
|
5
|
+
isInKeyboardNavigationGroup,
|
|
6
|
+
updateActiveListItemUuid
|
|
7
|
+
}) => {
|
|
8
|
+
const [isFocusWithinListItem, setIsFocusWithinListItem] = useState(false);
|
|
9
|
+
const handleFocus = useCallback(event => {
|
|
10
|
+
setIsFocusWithinListItem(true);
|
|
11
|
+
if (event.currentTarget === event.target && isInKeyboardNavigationGroup && typeof updateActiveListItemUuid === 'function') {
|
|
12
|
+
updateActiveListItemUuid(uuid);
|
|
13
|
+
}
|
|
14
|
+
}, [isInKeyboardNavigationGroup, updateActiveListItemUuid, uuid]);
|
|
15
|
+
const handleBlur = useCallback(event => {
|
|
16
|
+
const nextFocusedElement = event.relatedTarget;
|
|
17
|
+
const currentListItemElement = event.currentTarget;
|
|
18
|
+
if (nextFocusedElement && currentListItemElement.contains(nextFocusedElement)) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
setIsFocusWithinListItem(false);
|
|
22
|
+
if (!isInKeyboardNavigationGroup || typeof updateActiveListItemUuid !== 'function' || typeof listGroupUuid !== 'string') {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (!nextFocusedElement) {
|
|
26
|
+
updateActiveListItemUuid(undefined);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const nextFocusedListItem = nextFocusedElement.closest(`[data-uuid^="${listGroupUuid}---"]`);
|
|
30
|
+
if (!nextFocusedListItem) {
|
|
31
|
+
updateActiveListItemUuid(undefined);
|
|
32
|
+
}
|
|
33
|
+
}, [isInKeyboardNavigationGroup, listGroupUuid, updateActiveListItemUuid]);
|
|
34
|
+
return {
|
|
35
|
+
isFocusWithinListItem,
|
|
36
|
+
handleFocus,
|
|
37
|
+
handleBlur
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=useListItemFocus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useListItemFocus.js","names":["useCallback","useState","useListItemFocus","uuid","listGroupUuid","isInKeyboardNavigationGroup","updateActiveListItemUuid","isFocusWithinListItem","setIsFocusWithinListItem","handleFocus","event","currentTarget","target","handleBlur","nextFocusedElement","relatedTarget","currentListItemElement","contains","undefined","nextFocusedListItem","closest"],"sources":["../../../../../src/components/list/list-item/useListItemFocus.ts"],"sourcesContent":["import { type FocusEvent, useCallback, useState } from 'react';\n\ntype UseListItemFocusParams = {\n uuid: string;\n listGroupUuid?: string;\n isInKeyboardNavigationGroup: boolean;\n updateActiveListItemUuid?: (uuid?: string) => void;\n};\n\nexport const useListItemFocus = ({\n uuid,\n listGroupUuid,\n isInKeyboardNavigationGroup,\n updateActiveListItemUuid,\n}: UseListItemFocusParams) => {\n const [isFocusWithinListItem, setIsFocusWithinListItem] = useState(false);\n\n const handleFocus = useCallback(\n (event: FocusEvent<HTMLDivElement>) => {\n setIsFocusWithinListItem(true);\n\n if (\n event.currentTarget === event.target &&\n isInKeyboardNavigationGroup &&\n typeof updateActiveListItemUuid === 'function'\n ) {\n updateActiveListItemUuid(uuid);\n }\n },\n [isInKeyboardNavigationGroup, updateActiveListItemUuid, uuid],\n );\n\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLDivElement>) => {\n const nextFocusedElement = event.relatedTarget as HTMLElement | null;\n const currentListItemElement = event.currentTarget as HTMLElement;\n\n if (nextFocusedElement && currentListItemElement.contains(nextFocusedElement)) {\n return;\n }\n\n setIsFocusWithinListItem(false);\n\n if (\n !isInKeyboardNavigationGroup ||\n typeof updateActiveListItemUuid !== 'function' ||\n typeof listGroupUuid !== 'string'\n ) {\n return;\n }\n\n if (!nextFocusedElement) {\n updateActiveListItemUuid(undefined);\n return;\n }\n\n const nextFocusedListItem = nextFocusedElement.closest<HTMLElement>(\n `[data-uuid^=\"${listGroupUuid}---\"]`,\n );\n\n if (!nextFocusedListItem) {\n updateActiveListItemUuid(undefined);\n }\n },\n [isInKeyboardNavigationGroup, listGroupUuid, updateActiveListItemUuid],\n );\n\n return {\n isFocusWithinListItem,\n handleFocus,\n handleBlur,\n };\n};\n"],"mappings":"AAAA,SAA0BA,WAAW,EAAEC,QAAQ,QAAQ,OAAO;AAS9D,OAAO,MAAMC,gBAAgB,GAAGA,CAAC;EAC7BC,IAAI;EACJC,aAAa;EACbC,2BAA2B;EAC3BC;AACoB,CAAC,KAAK;EAC1B,MAAM,CAACC,qBAAqB,EAAEC,wBAAwB,CAAC,GAAGP,QAAQ,CAAC,KAAK,CAAC;EAEzE,MAAMQ,WAAW,GAAGT,WAAW,CAC1BU,KAAiC,IAAK;IACnCF,wBAAwB,CAAC,IAAI,CAAC;IAE9B,IACIE,KAAK,CAACC,aAAa,KAAKD,KAAK,CAACE,MAAM,IACpCP,2BAA2B,IAC3B,OAAOC,wBAAwB,KAAK,UAAU,EAChD;MACEA,wBAAwB,CAACH,IAAI,CAAC;IAClC;EACJ,CAAC,EACD,CAACE,2BAA2B,EAAEC,wBAAwB,EAAEH,IAAI,CAChE,CAAC;EAED,MAAMU,UAAU,GAAGb,WAAW,CACzBU,KAAiC,IAAK;IACnC,MAAMI,kBAAkB,GAAGJ,KAAK,CAACK,aAAmC;IACpE,MAAMC,sBAAsB,GAAGN,KAAK,CAACC,aAA4B;IAEjE,IAAIG,kBAAkB,IAAIE,sBAAsB,CAACC,QAAQ,CAACH,kBAAkB,CAAC,EAAE;MAC3E;IACJ;IAEAN,wBAAwB,CAAC,KAAK,CAAC;IAE/B,IACI,CAACH,2BAA2B,IAC5B,OAAOC,wBAAwB,KAAK,UAAU,IAC9C,OAAOF,aAAa,KAAK,QAAQ,EACnC;MACE;IACJ;IAEA,IAAI,CAACU,kBAAkB,EAAE;MACrBR,wBAAwB,CAACY,SAAS,CAAC;MACnC;IACJ;IAEA,MAAMC,mBAAmB,GAAGL,kBAAkB,CAACM,OAAO,CAClD,gBAAgBhB,aAAa,OACjC,CAAC;IAED,IAAI,CAACe,mBAAmB,EAAE;MACtBb,wBAAwB,CAACY,SAAS,CAAC;IACvC;EACJ,CAAC,EACD,CAACb,2BAA2B,EAAED,aAAa,EAAEE,wBAAwB,CACzE,CAAC;EAED,OAAO;IACHC,qBAAqB;IACrBE,WAAW;IACXI;EACJ,CAAC;AACL,CAAC","ignoreList":[]}
|
|
@@ -5,6 +5,13 @@ import { MentionFinderPopupAlignment } from '../../constants/mentionFinder';
|
|
|
5
5
|
import MentionFinderItem from './mention-finder-item/MentionFinderItem';
|
|
6
6
|
import { StyledMentionFinder, StyledMentionFinderDragHandle, StyledMentionFinderDragHandleInner, StyledMentionFinderItemList, StyledMentionFinderOverlay, StyledMotionMentionFinderPopup } from './MentionFinder.styles';
|
|
7
7
|
const DRAG_CLOSE_THRESHOLD_IN_PX = 60;
|
|
8
|
+
const isTextInputElement = element => {
|
|
9
|
+
if (!element) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
const tagName = element.tagName.toLowerCase();
|
|
13
|
+
return tagName === 'input' && element.type !== 'button' || tagName === 'textarea' || element.isContentEditable;
|
|
14
|
+
};
|
|
8
15
|
const findTouchByIdentifier = (touchList, identifier) => {
|
|
9
16
|
if (identifier === null) {
|
|
10
17
|
return null;
|
|
@@ -31,6 +38,7 @@ const MentionFinder = ({
|
|
|
31
38
|
const [shouldShowPopup, setShouldShowPopup] = useState(true);
|
|
32
39
|
const popupRef = useRef(null);
|
|
33
40
|
const listRef = useRef(null);
|
|
41
|
+
const inputElementRef = useRef(null);
|
|
34
42
|
const dragStartYRef = useRef(null);
|
|
35
43
|
const hasTriggeredDragCloseRef = useRef(false);
|
|
36
44
|
const activePointerIdRef = useRef(null);
|
|
@@ -49,7 +57,12 @@ const MentionFinder = ({
|
|
|
49
57
|
info,
|
|
50
58
|
name
|
|
51
59
|
}) => id.toLowerCase().includes(searchString) || info?.replace('chayns', '').toLowerCase().includes(searchString) || name.toLowerCase().includes(searchString)) : members, [members, searchString]);
|
|
60
|
+
const shouldRenderPopup = shouldShowPopup && !!fullMatch && filteredMembers.length > 0;
|
|
52
61
|
const handleKeyDown = useCallback(event => {
|
|
62
|
+
const targetElement = event.target;
|
|
63
|
+
if (isTextInputElement(targetElement)) {
|
|
64
|
+
inputElementRef.current = targetElement;
|
|
65
|
+
}
|
|
53
66
|
if ((event.key === 'ArrowUp' || event.key === 'ArrowDown') && shouldRenderPopup) {
|
|
54
67
|
event.preventDefault();
|
|
55
68
|
const children = listRef.current?.children;
|
|
@@ -75,8 +88,15 @@ const MentionFinder = ({
|
|
|
75
88
|
member: activeMember
|
|
76
89
|
});
|
|
77
90
|
}
|
|
91
|
+
} else if (event.key === 'Escape' && shouldRenderPopup) {
|
|
92
|
+
event.preventDefault();
|
|
93
|
+
event.stopPropagation();
|
|
94
|
+
setShouldShowPopup(false);
|
|
95
|
+
window.requestAnimationFrame(() => {
|
|
96
|
+
inputElementRef.current?.focus();
|
|
97
|
+
});
|
|
78
98
|
}
|
|
79
|
-
}, [activeMember, filteredMembers, focusedIndex, fullMatch, onSelect]);
|
|
99
|
+
}, [activeMember, filteredMembers, focusedIndex, fullMatch, onSelect, shouldRenderPopup]);
|
|
80
100
|
const handleMemberClick = useCallback(member => {
|
|
81
101
|
if (fullMatch) {
|
|
82
102
|
onSelect({
|
|
@@ -111,6 +131,15 @@ const MentionFinder = ({
|
|
|
111
131
|
hasTriggeredDragCloseRef.current = false;
|
|
112
132
|
setShouldShowPopup(true);
|
|
113
133
|
}, [inputValue]);
|
|
134
|
+
useEffect(() => {
|
|
135
|
+
if (!shouldRenderPopup) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const activeElement = document.activeElement;
|
|
139
|
+
if (isTextInputElement(activeElement)) {
|
|
140
|
+
inputElementRef.current = activeElement;
|
|
141
|
+
}
|
|
142
|
+
}, [shouldRenderPopup]);
|
|
114
143
|
useEffect(() => {
|
|
115
144
|
if (shouldShowPopup) {
|
|
116
145
|
window.addEventListener('keydown', handleKeyDown, true);
|
|
@@ -281,7 +310,6 @@ const MentionFinder = ({
|
|
|
281
310
|
onTouchCancel: handleDragTouchCancel
|
|
282
311
|
}));
|
|
283
312
|
}, [enableDragHandle, popupAlignment, dragOffset, dragProgress, isDraggingHandle, handleDragPointerDown, handleDragPointerMove, handleDragPointerUp, handleDragPointerCancel, handleDragTouchStart, handleDragTouchMove, handleDragTouchEnd, handleDragTouchCancel]);
|
|
284
|
-
const shouldRenderPopup = shouldShowPopup && fullMatch && items.length > 0;
|
|
285
313
|
useEffect(() => {
|
|
286
314
|
if (!enableDragHandle || !shouldRenderPopup) {
|
|
287
315
|
setOverlayContainer(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MentionFinder.js","names":["AnimatePresence","React","useCallback","useEffect","useMemo","useRef","useState","createPortal","MentionFinderPopupAlignment","MentionFinderItem","StyledMentionFinder","StyledMentionFinderDragHandle","StyledMentionFinderDragHandleInner","StyledMentionFinderItemList","StyledMentionFinderOverlay","StyledMotionMentionFinderPopup","DRAG_CLOSE_THRESHOLD_IN_PX","findTouchByIdentifier","touchList","identifier","i","length","touch","item","MentionFinder","inputValue","members","onSelect","popupAlignment","enableDragHandle","dragCloseThresholdInPx","overlayContainerSelector","activeMember","setActiveMember","focusedIndex","setFocusedIndex","shouldShowPopup","setShouldShowPopup","popupRef","listRef","dragStartYRef","hasTriggeredDragCloseRef","activePointerIdRef","activeTouchIdRef","isDraggingHandle","setIsDraggingHandle","dragOffset","setDragOffset","dragProgress","setDragProgress","overlayContainer","setOverlayContainer","fullMatch","searchString","regExpMatchArray","match","toLowerCase","filteredMembers","filter","id","info","name","includes","replace","handleKeyDown","event","key","shouldRenderPopup","preventDefault","children","current","newIndex","prevElement","tabIndex","member","newElement","focus","stopPropagation","handleMemberClick","handleMemberHover","isActiveMemberShown","some","items","map","createElement","isActive","onClick","onHover","window","addEventListener","removeEventListener","closePopupViaDrag","handleOverlayClick","updateDragByClientY","clientY","closingDirectionMultiplier","Bottom","rawDelta","normalizedDelta","positiveDelta","Math","max","limitedDelta","min","handleDragPointerDown","pointerType","button","pointerId","currentTarget","setPointerCapture","handleDragPointerMove","hasClosed","releasePointerCapture","resetDragState","shouldClose","handleDragPointerUp","handleDragPointerCancel","handleDragTouchStart","touches","handleDragTouchMove","changedTouches","handleDragTouchEnd","handleDragTouchCancel","dragHandle","$alignment","$dragOffset","$dragProgress","$isDragging","onPointerDown","onPointerMove","onPointerUp","onPointerCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel","container","closest","document","body","overlayPortal","initial","animate","opacity","exit","Fragment","className","ref","height","y","$popupAlignment","transition","duration","Top","displayName"],"sources":["../../../../src/components/mention-finder/MentionFinder.tsx"],"sourcesContent":["import { AnimatePresence } from 'motion/react';\nimport React, {\n FC,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n PointerEvent,\n TouchList,\n TouchEvent,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { MentionFinderPopupAlignment } from '../../constants/mentionFinder';\nimport MentionFinderItem from './mention-finder-item/MentionFinderItem';\nimport {\n StyledMentionFinder,\n StyledMentionFinderDragHandle,\n StyledMentionFinderDragHandleInner,\n StyledMentionFinderItemList,\n StyledMentionFinderOverlay,\n StyledMotionMentionFinderPopup,\n} from './MentionFinder.styles';\n\nexport type MentionMember = {\n id: string;\n info?: string;\n imageUrl: string;\n name: string;\n shouldShowRoundImage?: boolean;\n};\n\nexport type MentionFinderProps = {\n /**\n * The text from the input field\n */\n inputValue: string;\n /**\n * Members that can be selected\n */\n members: MentionMember[];\n /**\n * Function to be executed when a member is selected\n */\n onSelect: ({ fullMatch, member }: { fullMatch: string; member: MentionMember }) => void;\n /**\n * Alignment of the popup\n */\n popupAlignment: MentionFinderPopupAlignment;\n /**\n * Enables the optional drag handle inside the popup\n */\n enableDragHandle?: boolean;\n /**\n * Threshold in pixels to drag to close the popup\n */\n dragCloseThresholdInPx?: number;\n /**\n * Selector for the container to render the overlay into (defaults to closest dialog, thread, page provider or tapp)\n */\n overlayContainerSelector?: string;\n};\n\nconst DRAG_CLOSE_THRESHOLD_IN_PX = 60;\n\nconst findTouchByIdentifier = (touchList: TouchList, identifier: number | null) => {\n if (identifier === null) {\n return null;\n }\n\n for (let i = 0; i < touchList.length; i += 1) {\n const touch = touchList.item(i);\n if (touch && touch.identifier === identifier) {\n return touch;\n }\n }\n\n return null;\n};\n\nconst MentionFinder: FC<MentionFinderProps> = ({\n inputValue,\n members,\n onSelect,\n popupAlignment,\n enableDragHandle = false,\n dragCloseThresholdInPx = DRAG_CLOSE_THRESHOLD_IN_PX,\n overlayContainerSelector,\n}) => {\n const [activeMember, setActiveMember] = useState(members[0]);\n const [focusedIndex, setFocusedIndex] = useState(0);\n const [shouldShowPopup, setShouldShowPopup] = useState(true);\n\n const popupRef = useRef<HTMLDivElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n const dragStartYRef = useRef<number | null>(null);\n const hasTriggeredDragCloseRef = useRef(false);\n const activePointerIdRef = useRef<number | null>(null);\n const activeTouchIdRef = useRef<number | null>(null);\n\n const [isDraggingHandle, setIsDraggingHandle] = useState(false);\n const [dragOffset, setDragOffset] = useState(0);\n const [dragProgress, setDragProgress] = useState(0);\n const [overlayContainer, setOverlayContainer] = useState<Element | null>(null);\n\n const [fullMatch, searchString] = useMemo(() => {\n // eslint-disable-next-line no-irregular-whitespace\n const regExpMatchArray = inputValue.match(/@(?!\\s)([^\\s]*)/);\n\n return [regExpMatchArray?.[0], regExpMatchArray?.[1]?.toLowerCase() ?? ''];\n }, [inputValue]);\n\n const filteredMembers = useMemo(\n () =>\n searchString !== ''\n ? members.filter(\n ({ id, info, name }) =>\n id.toLowerCase().includes(searchString) ||\n info?.replace('chayns', '').toLowerCase().includes(searchString) ||\n name.toLowerCase().includes(searchString),\n )\n : members,\n [members, searchString],\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if ((event.key === 'ArrowUp' || event.key === 'ArrowDown') && shouldRenderPopup) {\n event.preventDefault();\n\n const children = listRef.current?.children;\n\n if (children && children.length > 0) {\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex +\n (event.key === 'ArrowUp' ? -1 : 1) +\n children.length) %\n children.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = children[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const member = filteredMembers[newIndex];\n\n setActiveMember(member);\n\n const newElement = children[newIndex] as HTMLDivElement;\n newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (event.key === 'Enter' && shouldRenderPopup) {\n event.preventDefault();\n event.stopPropagation();\n\n if (fullMatch && activeMember) {\n onSelect({ fullMatch, member: activeMember });\n }\n }\n },\n [activeMember, filteredMembers, focusedIndex, fullMatch, onSelect],\n );\n\n const handleMemberClick = useCallback(\n (member: MentionMember) => {\n if (fullMatch) {\n onSelect({ fullMatch, member });\n }\n },\n [fullMatch, onSelect],\n );\n\n const handleMemberHover = useCallback((member: MentionMember) => {\n setActiveMember(member);\n }, []);\n\n useEffect(() => {\n if (filteredMembers.length > 0) {\n const isActiveMemberShown = filteredMembers.some(({ id }) => id === activeMember?.id);\n\n if (!isActiveMemberShown) {\n setActiveMember(filteredMembers[0]);\n }\n }\n }, [activeMember?.id, filteredMembers]);\n\n const items = useMemo(\n () =>\n filteredMembers.map((member) => (\n <MentionFinderItem\n isActive={member.id === activeMember?.id}\n key={member.id}\n member={member}\n onClick={handleMemberClick}\n onHover={handleMemberHover}\n />\n )),\n [activeMember, filteredMembers, handleMemberClick, handleMemberHover],\n );\n\n useEffect(() => {\n setDragOffset(0);\n setDragProgress(0);\n hasTriggeredDragCloseRef.current = false;\n setShouldShowPopup(true);\n }, [inputValue]);\n\n useEffect(() => {\n if (shouldShowPopup) {\n window.addEventListener('keydown', handleKeyDown, true);\n }\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown, true);\n };\n }, [handleKeyDown, shouldShowPopup]);\n\n const closePopupViaDrag = useCallback(() => {\n if (hasTriggeredDragCloseRef.current) {\n return;\n }\n hasTriggeredDragCloseRef.current = true;\n setDragOffset(0);\n setDragProgress(0);\n setShouldShowPopup(false);\n }, []);\n\n const handleOverlayClick = useCallback(() => {\n closePopupViaDrag();\n }, [closePopupViaDrag]);\n\n const updateDragByClientY = useCallback(\n (clientY: number) => {\n if (dragStartYRef.current === null) {\n return false;\n }\n\n const closingDirectionMultiplier =\n popupAlignment === MentionFinderPopupAlignment.Bottom ? -1 : 1;\n const rawDelta = clientY - dragStartYRef.current;\n const normalizedDelta = rawDelta * closingDirectionMultiplier;\n const positiveDelta = Math.max(0, normalizedDelta);\n const limitedDelta = Math.min(positiveDelta, dragCloseThresholdInPx);\n\n setDragOffset(limitedDelta * closingDirectionMultiplier);\n setDragProgress(Math.min(positiveDelta / dragCloseThresholdInPx, 1));\n\n if (positiveDelta >= dragCloseThresholdInPx) {\n dragStartYRef.current = null;\n setIsDraggingHandle(false);\n closePopupViaDrag();\n return true;\n }\n\n return false;\n },\n [closePopupViaDrag, dragCloseThresholdInPx, popupAlignment],\n );\n\n const handleDragPointerDown = useCallback((event: PointerEvent<HTMLDivElement>) => {\n if (event.pointerType === 'touch') {\n return;\n }\n if (event.pointerType === 'mouse' && event.button !== 0) {\n return;\n }\n if (dragStartYRef.current !== null) {\n return;\n }\n activePointerIdRef.current = event.pointerId;\n dragStartYRef.current = event.clientY;\n hasTriggeredDragCloseRef.current = false;\n setDragOffset(0);\n setDragProgress(0);\n setIsDraggingHandle(true);\n event.currentTarget.setPointerCapture(event.pointerId);\n event.stopPropagation();\n }, []);\n\n const handleDragPointerMove = useCallback(\n (event: PointerEvent<HTMLDivElement>) => {\n if (event.pointerType === 'touch' || activePointerIdRef.current !== event.pointerId) {\n return;\n }\n if (dragStartYRef.current === null) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n const hasClosed = updateDragByClientY(event.clientY);\n\n if (hasClosed) {\n event.currentTarget.releasePointerCapture(event.pointerId);\n activePointerIdRef.current = null;\n }\n },\n [updateDragByClientY],\n );\n\n const resetDragState = useCallback(\n (shouldClose = false) => {\n dragStartYRef.current = null;\n setIsDraggingHandle(false);\n if (shouldClose) {\n closePopupViaDrag();\n } else {\n setDragOffset(0);\n setDragProgress(0);\n }\n },\n [closePopupViaDrag],\n );\n\n const handleDragPointerUp = useCallback(\n (event: PointerEvent<HTMLDivElement>) => {\n if (event.pointerType === 'touch' || activePointerIdRef.current !== event.pointerId) {\n return;\n }\n event.stopPropagation();\n const shouldClose = dragProgress >= 1;\n resetDragState(shouldClose);\n event.currentTarget.releasePointerCapture(event.pointerId);\n activePointerIdRef.current = null;\n },\n [dragProgress, resetDragState],\n );\n\n const handleDragPointerCancel = useCallback(\n (event: PointerEvent<HTMLDivElement>) => {\n if (event.pointerType === 'touch' || activePointerIdRef.current !== event.pointerId) {\n return;\n }\n event.stopPropagation();\n resetDragState();\n event.currentTarget.releasePointerCapture(event.pointerId);\n activePointerIdRef.current = null;\n },\n [resetDragState],\n );\n\n const handleDragTouchStart = useCallback((event: TouchEvent<HTMLDivElement>) => {\n if (event.touches.length === 0 || dragStartYRef.current !== null) {\n return;\n }\n\n const touch = event.touches[0];\n\n if (!touch) return;\n\n activeTouchIdRef.current = touch.identifier;\n dragStartYRef.current = touch.clientY;\n hasTriggeredDragCloseRef.current = false;\n setDragOffset(0);\n setDragProgress(0);\n setIsDraggingHandle(true);\n event.preventDefault();\n event.stopPropagation();\n }, []);\n\n const handleDragTouchMove = useCallback(\n (event: TouchEvent<HTMLDivElement>) => {\n if (dragStartYRef.current === null || activeTouchIdRef.current === null) {\n return;\n }\n const touch =\n findTouchByIdentifier(event.changedTouches, activeTouchIdRef.current) ??\n findTouchByIdentifier(event.touches, activeTouchIdRef.current);\n\n if (!touch) return;\n\n event.preventDefault();\n event.stopPropagation();\n const hasClosed = updateDragByClientY(touch.clientY);\n if (hasClosed) {\n activeTouchIdRef.current = null;\n }\n },\n [updateDragByClientY],\n );\n\n const handleDragTouchEnd = useCallback(\n (event: TouchEvent<HTMLDivElement>) => {\n if (activeTouchIdRef.current === null) return;\n\n const touch = findTouchByIdentifier(event.changedTouches, activeTouchIdRef.current);\n\n if (!touch) return;\n\n event.preventDefault();\n event.stopPropagation();\n activeTouchIdRef.current = null;\n const shouldClose = dragProgress >= 1;\n resetDragState(shouldClose);\n },\n [dragProgress, resetDragState],\n );\n\n const handleDragTouchCancel = useCallback(\n (event: TouchEvent<HTMLDivElement>) => {\n if (activeTouchIdRef.current === null) return;\n\n const touch = findTouchByIdentifier(event.changedTouches, activeTouchIdRef.current);\n\n if (!touch) return;\n\n event.preventDefault();\n event.stopPropagation();\n activeTouchIdRef.current = null;\n resetDragState();\n },\n [resetDragState],\n );\n\n const dragHandle = useMemo(() => {\n if (!enableDragHandle) {\n return null;\n }\n\n return (\n <StyledMentionFinderDragHandle $alignment={popupAlignment}>\n <StyledMentionFinderDragHandleInner\n $alignment={popupAlignment}\n $dragOffset={dragOffset}\n $dragProgress={dragProgress}\n $isDragging={isDraggingHandle}\n onPointerDown={handleDragPointerDown}\n onPointerMove={handleDragPointerMove}\n onPointerUp={handleDragPointerUp}\n onPointerCancel={handleDragPointerCancel}\n onTouchStart={handleDragTouchStart}\n onTouchMove={handleDragTouchMove}\n onTouchEnd={handleDragTouchEnd}\n onTouchCancel={handleDragTouchCancel}\n />\n </StyledMentionFinderDragHandle>\n );\n }, [\n enableDragHandle,\n popupAlignment,\n dragOffset,\n dragProgress,\n isDraggingHandle,\n handleDragPointerDown,\n handleDragPointerMove,\n handleDragPointerUp,\n handleDragPointerCancel,\n handleDragTouchStart,\n handleDragTouchMove,\n handleDragTouchEnd,\n handleDragTouchCancel,\n ]);\n\n const shouldRenderPopup = shouldShowPopup && fullMatch && items.length > 0;\n\n useEffect(() => {\n if (!enableDragHandle || !shouldRenderPopup) {\n setOverlayContainer(null);\n return;\n }\n\n const container = popupRef.current?.closest(\n overlayContainerSelector ?? '.dialog-inner, .chayns-threads, .page-provider, .tapp',\n );\n\n if (container) {\n setOverlayContainer(container);\n return;\n }\n\n if (typeof document !== 'undefined') {\n setOverlayContainer(document.body);\n }\n }, [enableDragHandle, overlayContainerSelector, shouldRenderPopup]);\n\n const overlayPortal =\n overlayContainer && enableDragHandle\n ? createPortal(\n <AnimatePresence initial={false}>\n {shouldRenderPopup && (\n <StyledMentionFinderOverlay\n key=\"mention-finder-overlay\"\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0 }}\n onClick={handleOverlayClick}\n />\n )}\n </AnimatePresence>,\n overlayContainer,\n )\n : null;\n\n return (\n <>\n {overlayPortal}\n <StyledMentionFinder className=\"beta-chayns-mention-finder\">\n <AnimatePresence initial={false}>\n {shouldRenderPopup && (\n <StyledMotionMentionFinderPopup\n ref={popupRef}\n animate={{\n height: 'auto',\n opacity: 1,\n y: dragOffset,\n }}\n className=\"prevent-lose-focus\"\n exit={{ height: 0, opacity: 0 }}\n initial={{ height: 0, opacity: 0 }}\n $popupAlignment={popupAlignment}\n $isDragging={enableDragHandle}\n transition={{ duration: 0.15 }}\n tabIndex={0}\n >\n {enableDragHandle &&\n popupAlignment === MentionFinderPopupAlignment.Top &&\n dragHandle}\n <StyledMentionFinderItemList ref={listRef}>\n {items}\n </StyledMentionFinderItemList>\n {enableDragHandle &&\n popupAlignment === MentionFinderPopupAlignment.Bottom &&\n dragHandle}\n </StyledMotionMentionFinderPopup>\n )}\n </AnimatePresence>\n </StyledMentionFinder>\n </>\n );\n};\n\nMentionFinder.displayName = 'MentionFinder';\n\nexport default MentionFinder;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"MentionFinder.js","names":["AnimatePresence","React","useCallback","useEffect","useMemo","useRef","useState","createPortal","MentionFinderPopupAlignment","MentionFinderItem","StyledMentionFinder","StyledMentionFinderDragHandle","StyledMentionFinderDragHandleInner","StyledMentionFinderItemList","StyledMentionFinderOverlay","StyledMotionMentionFinderPopup","DRAG_CLOSE_THRESHOLD_IN_PX","isTextInputElement","element","tagName","toLowerCase","type","isContentEditable","findTouchByIdentifier","touchList","identifier","i","length","touch","item","MentionFinder","inputValue","members","onSelect","popupAlignment","enableDragHandle","dragCloseThresholdInPx","overlayContainerSelector","activeMember","setActiveMember","focusedIndex","setFocusedIndex","shouldShowPopup","setShouldShowPopup","popupRef","listRef","inputElementRef","dragStartYRef","hasTriggeredDragCloseRef","activePointerIdRef","activeTouchIdRef","isDraggingHandle","setIsDraggingHandle","dragOffset","setDragOffset","dragProgress","setDragProgress","overlayContainer","setOverlayContainer","fullMatch","searchString","regExpMatchArray","match","filteredMembers","filter","id","info","name","includes","replace","shouldRenderPopup","handleKeyDown","event","targetElement","target","current","key","preventDefault","children","newIndex","prevElement","tabIndex","member","newElement","focus","stopPropagation","window","requestAnimationFrame","handleMemberClick","handleMemberHover","isActiveMemberShown","some","items","map","createElement","isActive","onClick","onHover","activeElement","document","addEventListener","removeEventListener","closePopupViaDrag","handleOverlayClick","updateDragByClientY","clientY","closingDirectionMultiplier","Bottom","rawDelta","normalizedDelta","positiveDelta","Math","max","limitedDelta","min","handleDragPointerDown","pointerType","button","pointerId","currentTarget","setPointerCapture","handleDragPointerMove","hasClosed","releasePointerCapture","resetDragState","shouldClose","handleDragPointerUp","handleDragPointerCancel","handleDragTouchStart","touches","handleDragTouchMove","changedTouches","handleDragTouchEnd","handleDragTouchCancel","dragHandle","$alignment","$dragOffset","$dragProgress","$isDragging","onPointerDown","onPointerMove","onPointerUp","onPointerCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel","container","closest","body","overlayPortal","initial","animate","opacity","exit","Fragment","className","ref","height","y","$popupAlignment","transition","duration","Top","displayName"],"sources":["../../../../src/components/mention-finder/MentionFinder.tsx"],"sourcesContent":["import { AnimatePresence } from 'motion/react';\nimport React, {\n FC,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n PointerEvent,\n TouchList,\n TouchEvent,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { MentionFinderPopupAlignment } from '../../constants/mentionFinder';\nimport MentionFinderItem from './mention-finder-item/MentionFinderItem';\nimport {\n StyledMentionFinder,\n StyledMentionFinderDragHandle,\n StyledMentionFinderDragHandleInner,\n StyledMentionFinderItemList,\n StyledMentionFinderOverlay,\n StyledMotionMentionFinderPopup,\n} from './MentionFinder.styles';\n\nexport type MentionMember = {\n id: string;\n info?: string;\n imageUrl: string;\n name: string;\n shouldShowRoundImage?: boolean;\n};\n\nexport type MentionFinderProps = {\n /**\n * The text from the input field\n */\n inputValue: string;\n /**\n * Members that can be selected\n */\n members: MentionMember[];\n /**\n * Function to be executed when a member is selected\n */\n onSelect: ({ fullMatch, member }: { fullMatch: string; member: MentionMember }) => void;\n /**\n * Alignment of the popup\n */\n popupAlignment: MentionFinderPopupAlignment;\n /**\n * Enables the optional drag handle inside the popup\n */\n enableDragHandle?: boolean;\n /**\n * Threshold in pixels to drag to close the popup\n */\n dragCloseThresholdInPx?: number;\n /**\n * Selector for the container to render the overlay into (defaults to closest dialog, thread, page provider or tapp)\n */\n overlayContainerSelector?: string;\n};\n\nconst DRAG_CLOSE_THRESHOLD_IN_PX = 60;\n\nconst isTextInputElement = (\n element: HTMLElement | null,\n): element is HTMLInputElement | HTMLTextAreaElement => {\n if (!element) {\n return false;\n }\n\n const tagName = element.tagName.toLowerCase();\n\n return (\n (tagName === 'input' && (element as HTMLInputElement).type !== 'button') ||\n tagName === 'textarea' ||\n element.isContentEditable\n );\n};\n\nconst findTouchByIdentifier = (touchList: TouchList, identifier: number | null) => {\n if (identifier === null) {\n return null;\n }\n\n for (let i = 0; i < touchList.length; i += 1) {\n const touch = touchList.item(i);\n if (touch && touch.identifier === identifier) {\n return touch;\n }\n }\n\n return null;\n};\n\nconst MentionFinder: FC<MentionFinderProps> = ({\n inputValue,\n members,\n onSelect,\n popupAlignment,\n enableDragHandle = false,\n dragCloseThresholdInPx = DRAG_CLOSE_THRESHOLD_IN_PX,\n overlayContainerSelector,\n}) => {\n const [activeMember, setActiveMember] = useState(members[0]);\n const [focusedIndex, setFocusedIndex] = useState(0);\n const [shouldShowPopup, setShouldShowPopup] = useState(true);\n\n const popupRef = useRef<HTMLDivElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n const inputElementRef = useRef<HTMLElement | null>(null);\n const dragStartYRef = useRef<number | null>(null);\n const hasTriggeredDragCloseRef = useRef(false);\n const activePointerIdRef = useRef<number | null>(null);\n const activeTouchIdRef = useRef<number | null>(null);\n\n const [isDraggingHandle, setIsDraggingHandle] = useState(false);\n const [dragOffset, setDragOffset] = useState(0);\n const [dragProgress, setDragProgress] = useState(0);\n const [overlayContainer, setOverlayContainer] = useState<Element | null>(null);\n\n const [fullMatch, searchString] = useMemo(() => {\n // eslint-disable-next-line no-irregular-whitespace\n const regExpMatchArray = inputValue.match(/@(?!\\s)([^\\s]*)/);\n\n return [regExpMatchArray?.[0], regExpMatchArray?.[1]?.toLowerCase() ?? ''];\n }, [inputValue]);\n\n const filteredMembers = useMemo(\n () =>\n searchString !== ''\n ? members.filter(\n ({ id, info, name }) =>\n id.toLowerCase().includes(searchString) ||\n info?.replace('chayns', '').toLowerCase().includes(searchString) ||\n name.toLowerCase().includes(searchString),\n )\n : members,\n [members, searchString],\n );\n\n const shouldRenderPopup = shouldShowPopup && !!fullMatch && filteredMembers.length > 0;\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n const targetElement = event.target as HTMLElement | null;\n\n if (isTextInputElement(targetElement)) {\n inputElementRef.current = targetElement;\n }\n\n if ((event.key === 'ArrowUp' || event.key === 'ArrowDown') && shouldRenderPopup) {\n event.preventDefault();\n\n const children = listRef.current?.children;\n\n if (children && children.length > 0) {\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex +\n (event.key === 'ArrowUp' ? -1 : 1) +\n children.length) %\n children.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = children[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const member = filteredMembers[newIndex];\n\n setActiveMember(member);\n\n const newElement = children[newIndex] as HTMLDivElement;\n newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (event.key === 'Enter' && shouldRenderPopup) {\n event.preventDefault();\n event.stopPropagation();\n\n if (fullMatch && activeMember) {\n onSelect({ fullMatch, member: activeMember });\n }\n } else if (event.key === 'Escape' && shouldRenderPopup) {\n event.preventDefault();\n event.stopPropagation();\n setShouldShowPopup(false);\n\n window.requestAnimationFrame(() => {\n inputElementRef.current?.focus();\n });\n }\n },\n [activeMember, filteredMembers, focusedIndex, fullMatch, onSelect, shouldRenderPopup],\n );\n\n const handleMemberClick = useCallback(\n (member: MentionMember) => {\n if (fullMatch) {\n onSelect({ fullMatch, member });\n }\n },\n [fullMatch, onSelect],\n );\n\n const handleMemberHover = useCallback((member: MentionMember) => {\n setActiveMember(member);\n }, []);\n\n useEffect(() => {\n if (filteredMembers.length > 0) {\n const isActiveMemberShown = filteredMembers.some(({ id }) => id === activeMember?.id);\n\n if (!isActiveMemberShown) {\n setActiveMember(filteredMembers[0]);\n }\n }\n }, [activeMember?.id, filteredMembers]);\n\n const items = useMemo(\n () =>\n filteredMembers.map((member) => (\n <MentionFinderItem\n isActive={member.id === activeMember?.id}\n key={member.id}\n member={member}\n onClick={handleMemberClick}\n onHover={handleMemberHover}\n />\n )),\n [activeMember, filteredMembers, handleMemberClick, handleMemberHover],\n );\n\n useEffect(() => {\n setDragOffset(0);\n setDragProgress(0);\n hasTriggeredDragCloseRef.current = false;\n setShouldShowPopup(true);\n }, [inputValue]);\n\n useEffect(() => {\n if (!shouldRenderPopup) {\n return;\n }\n\n const activeElement = document.activeElement as HTMLElement | null;\n\n if (isTextInputElement(activeElement)) {\n inputElementRef.current = activeElement;\n }\n }, [shouldRenderPopup]);\n\n useEffect(() => {\n if (shouldShowPopup) {\n window.addEventListener('keydown', handleKeyDown, true);\n }\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown, true);\n };\n }, [handleKeyDown, shouldShowPopup]);\n\n const closePopupViaDrag = useCallback(() => {\n if (hasTriggeredDragCloseRef.current) {\n return;\n }\n hasTriggeredDragCloseRef.current = true;\n setDragOffset(0);\n setDragProgress(0);\n setShouldShowPopup(false);\n }, []);\n\n const handleOverlayClick = useCallback(() => {\n closePopupViaDrag();\n }, [closePopupViaDrag]);\n\n const updateDragByClientY = useCallback(\n (clientY: number) => {\n if (dragStartYRef.current === null) {\n return false;\n }\n\n const closingDirectionMultiplier =\n popupAlignment === MentionFinderPopupAlignment.Bottom ? -1 : 1;\n const rawDelta = clientY - dragStartYRef.current;\n const normalizedDelta = rawDelta * closingDirectionMultiplier;\n const positiveDelta = Math.max(0, normalizedDelta);\n const limitedDelta = Math.min(positiveDelta, dragCloseThresholdInPx);\n\n setDragOffset(limitedDelta * closingDirectionMultiplier);\n setDragProgress(Math.min(positiveDelta / dragCloseThresholdInPx, 1));\n\n if (positiveDelta >= dragCloseThresholdInPx) {\n dragStartYRef.current = null;\n setIsDraggingHandle(false);\n closePopupViaDrag();\n return true;\n }\n\n return false;\n },\n [closePopupViaDrag, dragCloseThresholdInPx, popupAlignment],\n );\n\n const handleDragPointerDown = useCallback((event: PointerEvent<HTMLDivElement>) => {\n if (event.pointerType === 'touch') {\n return;\n }\n if (event.pointerType === 'mouse' && event.button !== 0) {\n return;\n }\n if (dragStartYRef.current !== null) {\n return;\n }\n activePointerIdRef.current = event.pointerId;\n dragStartYRef.current = event.clientY;\n hasTriggeredDragCloseRef.current = false;\n setDragOffset(0);\n setDragProgress(0);\n setIsDraggingHandle(true);\n event.currentTarget.setPointerCapture(event.pointerId);\n event.stopPropagation();\n }, []);\n\n const handleDragPointerMove = useCallback(\n (event: PointerEvent<HTMLDivElement>) => {\n if (event.pointerType === 'touch' || activePointerIdRef.current !== event.pointerId) {\n return;\n }\n if (dragStartYRef.current === null) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n const hasClosed = updateDragByClientY(event.clientY);\n\n if (hasClosed) {\n event.currentTarget.releasePointerCapture(event.pointerId);\n activePointerIdRef.current = null;\n }\n },\n [updateDragByClientY],\n );\n\n const resetDragState = useCallback(\n (shouldClose = false) => {\n dragStartYRef.current = null;\n setIsDraggingHandle(false);\n if (shouldClose) {\n closePopupViaDrag();\n } else {\n setDragOffset(0);\n setDragProgress(0);\n }\n },\n [closePopupViaDrag],\n );\n\n const handleDragPointerUp = useCallback(\n (event: PointerEvent<HTMLDivElement>) => {\n if (event.pointerType === 'touch' || activePointerIdRef.current !== event.pointerId) {\n return;\n }\n event.stopPropagation();\n const shouldClose = dragProgress >= 1;\n resetDragState(shouldClose);\n event.currentTarget.releasePointerCapture(event.pointerId);\n activePointerIdRef.current = null;\n },\n [dragProgress, resetDragState],\n );\n\n const handleDragPointerCancel = useCallback(\n (event: PointerEvent<HTMLDivElement>) => {\n if (event.pointerType === 'touch' || activePointerIdRef.current !== event.pointerId) {\n return;\n }\n event.stopPropagation();\n resetDragState();\n event.currentTarget.releasePointerCapture(event.pointerId);\n activePointerIdRef.current = null;\n },\n [resetDragState],\n );\n\n const handleDragTouchStart = useCallback((event: TouchEvent<HTMLDivElement>) => {\n if (event.touches.length === 0 || dragStartYRef.current !== null) {\n return;\n }\n\n const touch = event.touches[0];\n\n if (!touch) return;\n\n activeTouchIdRef.current = touch.identifier;\n dragStartYRef.current = touch.clientY;\n hasTriggeredDragCloseRef.current = false;\n setDragOffset(0);\n setDragProgress(0);\n setIsDraggingHandle(true);\n event.preventDefault();\n event.stopPropagation();\n }, []);\n\n const handleDragTouchMove = useCallback(\n (event: TouchEvent<HTMLDivElement>) => {\n if (dragStartYRef.current === null || activeTouchIdRef.current === null) {\n return;\n }\n const touch =\n findTouchByIdentifier(event.changedTouches, activeTouchIdRef.current) ??\n findTouchByIdentifier(event.touches, activeTouchIdRef.current);\n\n if (!touch) return;\n\n event.preventDefault();\n event.stopPropagation();\n const hasClosed = updateDragByClientY(touch.clientY);\n if (hasClosed) {\n activeTouchIdRef.current = null;\n }\n },\n [updateDragByClientY],\n );\n\n const handleDragTouchEnd = useCallback(\n (event: TouchEvent<HTMLDivElement>) => {\n if (activeTouchIdRef.current === null) return;\n\n const touch = findTouchByIdentifier(event.changedTouches, activeTouchIdRef.current);\n\n if (!touch) return;\n\n event.preventDefault();\n event.stopPropagation();\n activeTouchIdRef.current = null;\n const shouldClose = dragProgress >= 1;\n resetDragState(shouldClose);\n },\n [dragProgress, resetDragState],\n );\n\n const handleDragTouchCancel = useCallback(\n (event: TouchEvent<HTMLDivElement>) => {\n if (activeTouchIdRef.current === null) return;\n\n const touch = findTouchByIdentifier(event.changedTouches, activeTouchIdRef.current);\n\n if (!touch) return;\n\n event.preventDefault();\n event.stopPropagation();\n activeTouchIdRef.current = null;\n resetDragState();\n },\n [resetDragState],\n );\n\n const dragHandle = useMemo(() => {\n if (!enableDragHandle) {\n return null;\n }\n\n return (\n <StyledMentionFinderDragHandle $alignment={popupAlignment}>\n <StyledMentionFinderDragHandleInner\n $alignment={popupAlignment}\n $dragOffset={dragOffset}\n $dragProgress={dragProgress}\n $isDragging={isDraggingHandle}\n onPointerDown={handleDragPointerDown}\n onPointerMove={handleDragPointerMove}\n onPointerUp={handleDragPointerUp}\n onPointerCancel={handleDragPointerCancel}\n onTouchStart={handleDragTouchStart}\n onTouchMove={handleDragTouchMove}\n onTouchEnd={handleDragTouchEnd}\n onTouchCancel={handleDragTouchCancel}\n />\n </StyledMentionFinderDragHandle>\n );\n }, [\n enableDragHandle,\n popupAlignment,\n dragOffset,\n dragProgress,\n isDraggingHandle,\n handleDragPointerDown,\n handleDragPointerMove,\n handleDragPointerUp,\n handleDragPointerCancel,\n handleDragTouchStart,\n handleDragTouchMove,\n handleDragTouchEnd,\n handleDragTouchCancel,\n ]);\n\n useEffect(() => {\n if (!enableDragHandle || !shouldRenderPopup) {\n setOverlayContainer(null);\n return;\n }\n\n const container = popupRef.current?.closest(\n overlayContainerSelector ?? '.dialog-inner, .chayns-threads, .page-provider, .tapp',\n );\n\n if (container) {\n setOverlayContainer(container);\n return;\n }\n\n if (typeof document !== 'undefined') {\n setOverlayContainer(document.body);\n }\n }, [enableDragHandle, overlayContainerSelector, shouldRenderPopup]);\n\n const overlayPortal =\n overlayContainer && enableDragHandle\n ? createPortal(\n <AnimatePresence initial={false}>\n {shouldRenderPopup && (\n <StyledMentionFinderOverlay\n key=\"mention-finder-overlay\"\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0 }}\n onClick={handleOverlayClick}\n />\n )}\n </AnimatePresence>,\n overlayContainer,\n )\n : null;\n\n return (\n <>\n {overlayPortal}\n <StyledMentionFinder className=\"beta-chayns-mention-finder\">\n <AnimatePresence initial={false}>\n {shouldRenderPopup && (\n <StyledMotionMentionFinderPopup\n ref={popupRef}\n animate={{\n height: 'auto',\n opacity: 1,\n y: dragOffset,\n }}\n className=\"prevent-lose-focus\"\n exit={{ height: 0, opacity: 0 }}\n initial={{ height: 0, opacity: 0 }}\n $popupAlignment={popupAlignment}\n $isDragging={enableDragHandle}\n transition={{ duration: 0.15 }}\n tabIndex={0}\n >\n {enableDragHandle &&\n popupAlignment === MentionFinderPopupAlignment.Top &&\n dragHandle}\n <StyledMentionFinderItemList ref={listRef}>\n {items}\n </StyledMentionFinderItemList>\n {enableDragHandle &&\n popupAlignment === MentionFinderPopupAlignment.Bottom &&\n dragHandle}\n </StyledMotionMentionFinderPopup>\n )}\n </AnimatePresence>\n </StyledMentionFinder>\n </>\n );\n};\n\nMentionFinder.displayName = 'MentionFinder';\n\nexport default MentionFinder;\n"],"mappings":"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","ignoreList":[]}
|
package/lib/esm/components/mention-finder/mention-finder-item/MentionFinderItem.styles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MentionFinderItem.styles.js","names":["styled","css","StyledMentionFinderItem","div","theme","$isActive","StyledMentionFinderItemImage","img","$shouldShowRoundImage","StyledMentionFinderItemContent","text","StyledMentionFinderItemContentName","StyledMentionFinderItemContentInfo"],"sources":["../../../../../src/components/mention-finder/mention-finder-item/MentionFinderItem.styles.ts"],"sourcesContent":["import styled, { css } from 'styled-components';\nimport type { WithTheme } from '../../color-scheme-provider/ColorSchemeProvider';\n\ntype StyledMentionFinderItemProps = WithTheme<{
|
|
1
|
+
{"version":3,"file":"MentionFinderItem.styles.js","names":["styled","css","StyledMentionFinderItem","div","theme","$isActive","StyledMentionFinderItemImage","img","$shouldShowRoundImage","StyledMentionFinderItemContent","text","StyledMentionFinderItemContentName","StyledMentionFinderItemContentInfo"],"sources":["../../../../../src/components/mention-finder/mention-finder-item/MentionFinderItem.styles.ts"],"sourcesContent":["import styled, { css } from 'styled-components';\nimport type { WithTheme } from '../../color-scheme-provider/ColorSchemeProvider';\n\ntype StyledMentionFinderItemProps = WithTheme<{\n $isActive: boolean;\n}>;\n\nexport const StyledMentionFinderItem = styled.div<StyledMentionFinderItemProps>`\n align-items: center;\n cursor: pointer;\n display: flex;\n padding: 10px 8px;\n\n &:not(:last-child) {\n border-bottom: 1px solid\n rgba(${({ theme }: StyledMentionFinderItemProps) => theme['text-rgb']}, 0.15);\n }\n\n ${({ $isActive, theme }) =>\n $isActive &&\n css`\n background-color: ${theme['102']} !important;\n `}\n`;\n\ntype StyledMentionFinderItemImageProps = WithTheme<{\n $shouldShowRoundImage?: boolean;\n}>;\n\nexport const StyledMentionFinderItemImage = styled.img<StyledMentionFinderItemImageProps>`\n background-color: rgba(\n ${({ theme }: StyledMentionFinderItemImageProps) => theme['text-rgb']},\n 0.1\n );\n border-radius: ${({ $shouldShowRoundImage }) => ($shouldShowRoundImage ? '50%' : 'initial')};\n box-shadow: 0 0 0 1px\n rgba(${({ theme }: StyledMentionFinderItemImageProps) => theme['009-rgb']}, 0.08) inset;\n flex: 0 0 auto;\n height: 40px;\n object-fit: cover;\n overflow: hidden;\n transition: border-radius 0.3s ease;\n width: 40px;\n`;\n\ntype StyledMentionFinderItemContentProps = WithTheme<unknown>;\n\nexport const StyledMentionFinderItemContent = styled.div`\n color: ${({ theme }: StyledMentionFinderItemContentProps) => theme.text};\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n justify-content: center;\n line-height: normal;\n margin-left: 10px;\n min-width: 0;\n`;\n\nexport const StyledMentionFinderItemContentName = styled.div``;\n\nexport const StyledMentionFinderItemContentInfo = styled.div`\n font-size: 85%;\n margin-top: 2px;\n opacity: 0.75;\n`;\n"],"mappings":"AAAA,OAAOA,MAAM,IAAIC,GAAG,QAAQ,mBAAmB;AAO/C,OAAO,MAAMC,uBAAuB,GAAGF,MAAM,CAACG,GAAiC;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,CAAC;EAAEC;AAAoC,CAAC,KAAKA,KAAK,CAAC,UAAU,CAAC;AACjF;AACA;AACA,MAAM,CAAC;EAAEC,SAAS;EAAED;AAAM,CAAC,KACnBC,SAAS,IACTJ,GAAG;AACX,gCAAgCG,KAAK,CAAC,KAAK,CAAC;AAC5C,SAAS;AACT,CAAC;AAMD,OAAO,MAAME,4BAA4B,GAAGN,MAAM,CAACO,GAAsC;AACzF;AACA,UAAU,CAAC;EAAEH;AAAyC,CAAC,KAAKA,KAAK,CAAC,UAAU,CAAC;AAC7E;AACA;AACA,qBAAqB,CAAC;EAAEI;AAAsB,CAAC,KAAMA,qBAAqB,GAAG,KAAK,GAAG,SAAU;AAC/F;AACA,eAAe,CAAC;EAAEJ;AAAyC,CAAC,KAAKA,KAAK,CAAC,SAAS,CAAC;AACjF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAID,OAAO,MAAMK,8BAA8B,GAAGT,MAAM,CAACG,GAAG;AACxD,aAAa,CAAC;EAAEC;AAA2C,CAAC,KAAKA,KAAK,CAACM,IAAI;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMC,kCAAkC,GAAGX,MAAM,CAACG,GAAG,EAAE;AAE9D,OAAO,MAAMS,kCAAkC,GAAGZ,MAAM,CAACG,GAAG;AAC5D;AACA;AACA;AACA,CAAC","ignoreList":[]}
|