@ozen-ui/kit 0.56.0 → 0.58.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/AutocompleteNext/package.json +5 -0
- package/__inner__/cjs/components/Autocomplete/Autocomplete.d.ts +3 -0
- package/__inner__/cjs/components/Autocomplete/Autocomplete.js +7 -0
- package/__inner__/cjs/components/Autocomplete/helper.d.ts +2 -10
- package/__inner__/cjs/components/AutocompleteNext/Autocomplete.css +226 -0
- package/__inner__/cjs/components/AutocompleteNext/Autocomplete.d.ts +4 -0
- package/__inner__/cjs/components/AutocompleteNext/Autocomplete.js +216 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/AutocompleteDropdown.d.ts +2 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/AutocompleteDropdown.js +156 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownCheckIcon/AutocompleteDropdownCheckIcon.css +7 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownCheckIcon/AutocompleteDropdownCheckIcon.d.ts +6 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownCheckIcon/AutocompleteDropdownCheckIcon.js +18 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownCheckIcon/index.d.ts +1 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownCheckIcon/index.js +4 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownLoading/AutocompleteDropdownLoading.d.ts +6 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownLoading/AutocompleteDropdownLoading.js +23 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownLoading/index.d.ts +1 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownLoading/index.js +4 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownNoOptions/AutocompleteDropdownNoOptions.d.ts +6 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownNoOptions/AutocompleteDropdownNoOptions.js +17 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownNoOptions/index.d.ts +1 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownNoOptions/index.js +4 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/components/index.d.ts +3 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/components/index.js +6 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/constants.d.ts +3 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/constants.js +6 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/helpers.d.ts +17 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/helpers.js +36 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/index.d.ts +3 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/index.js +6 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/types.d.ts +45 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/types.js +2 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/utils/index.d.ts +2 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/utils/index.js +5 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/utils/useDataListNavigation.d.ts +20 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/utils/useDataListNavigation.js +71 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/utils/useScrollContainerToElement.d.ts +3 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteDropdown/utils/useScrollContainerToElement.js +15 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteInput/AutocompleteInput.d.ts +2 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteInput/AutocompleteInput.js +38 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteInput/components/AutocompleteInputMultiple.d.ts +2 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteInput/components/AutocompleteInputMultiple.js +112 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteInput/components/helpers.d.ts +5 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteInput/components/helpers.js +36 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteInput/components/index.d.ts +1 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteInput/components/index.js +4 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteInput/components/types.d.ts +17 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteInput/components/types.js +2 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteInput/helpers.d.ts +3 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteInput/index.d.ts +2 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteInput/index.js +5 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteInput/types.d.ts +26 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteInput/types.js +2 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteRenderRight/AutocompleteRenderRight.d.ts +8 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteRenderRight/AutocompleteRenderRight.js +28 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteRenderRight/index.d.ts +1 -0
- package/__inner__/cjs/components/AutocompleteNext/components/AutocompleteRenderRight/index.js +4 -0
- package/__inner__/cjs/components/AutocompleteNext/components/index.d.ts +3 -0
- package/__inner__/cjs/components/AutocompleteNext/components/index.js +6 -0
- package/__inner__/cjs/components/AutocompleteNext/constants.d.ts +10 -0
- package/__inner__/cjs/components/AutocompleteNext/constants.js +13 -0
- package/__inner__/cjs/components/AutocompleteNext/helpers.d.ts +152 -0
- package/__inner__/cjs/components/AutocompleteNext/helpers.js +18 -0
- package/__inner__/cjs/components/AutocompleteNext/index.d.ts +2 -0
- package/__inner__/cjs/components/AutocompleteNext/index.js +5 -0
- package/__inner__/cjs/components/AutocompleteNext/types.d.ts +133 -0
- package/__inner__/cjs/components/AutocompleteNext/types.js +2 -0
- package/__inner__/cjs/components/DataList/DataList.js +18 -25
- package/__inner__/cjs/components/DataList/constants.d.ts +1 -1
- package/__inner__/cjs/components/DataList/constants.js +1 -2
- package/__inner__/cjs/components/DataList/helpers.d.ts +3 -0
- package/__inner__/cjs/components/DataList/helpers.js +7 -0
- package/__inner__/cjs/components/DataList/{helpers → utils}/index.d.ts +0 -1
- package/__inner__/cjs/components/DataList/{helpers → utils}/index.js +0 -1
- package/__inner__/cjs/components/DatePicker/DatePicker.d.ts +2 -2
- package/__inner__/cjs/components/DatePicker/DatePicker.js +1 -1
- package/__inner__/cjs/components/Dialog/Dialog.d.ts +1 -2
- package/__inner__/cjs/components/Drawer/Drawer.d.ts +1 -2
- package/__inner__/cjs/components/FieldControl/FieldControl.css +4 -0
- package/__inner__/cjs/components/FieldInput/FieldInput.d.ts +1 -9
- package/__inner__/cjs/components/FieldInput/FieldInput.js +9 -4
- package/__inner__/cjs/components/FieldInput/constants.d.ts +1 -0
- package/__inner__/cjs/components/FieldInput/constants.js +4 -0
- package/__inner__/cjs/components/FieldInput/index.d.ts +1 -0
- package/__inner__/cjs/components/FieldInput/index.js +1 -0
- package/__inner__/cjs/components/FieldInput/types.d.ts +11 -0
- package/__inner__/cjs/components/FieldInput/types.js +2 -0
- package/__inner__/cjs/components/FieldLabel/FieldLabel.css +1 -0
- package/__inner__/cjs/components/Grid/Grid.css +4 -0
- package/__inner__/cjs/components/Input/Input.css +6 -9
- package/__inner__/cjs/components/Input/types.d.ts +2 -3
- package/__inner__/cjs/components/InputNumber/InputNumber.css +0 -5
- package/__inner__/cjs/components/Menu/Menu.js +2 -1
- package/__inner__/cjs/components/Modal/Modal.d.ts +1 -2
- package/__inner__/cjs/components/Modal/Modal.js +5 -6
- package/__inner__/cjs/components/Modal/constants.d.ts +0 -1
- package/__inner__/cjs/components/Modal/constants.js +1 -2
- package/__inner__/cjs/components/Modal/types.d.ts +0 -3
- package/__inner__/cjs/components/Popover/Popover.d.ts +1 -1
- package/__inner__/cjs/components/Popover/Popover.js +8 -3
- package/__inner__/cjs/components/Popover/constants.d.ts +1 -1
- package/__inner__/cjs/components/Popover/constants.js +1 -2
- package/__inner__/cjs/components/Popover/types.d.ts +2 -4
- package/__inner__/cjs/components/Portal/Portal.js +3 -3
- package/__inner__/cjs/components/Portal/constants.d.ts +2 -0
- package/__inner__/cjs/components/Portal/constants.js +3 -1
- package/__inner__/cjs/components/Portal/types.d.ts +3 -0
- package/__inner__/cjs/components/Snackbar/components/Snackbar/Snackbar.d.ts +1 -1
- package/__inner__/cjs/components/Tag/Tag.css +1 -0
- package/__inner__/cjs/components/TagNext/Tag.css +11 -4
- package/__inner__/cjs/components/TagNext/Tag.js +1 -1
- package/__inner__/cjs/components/TagNext/constants.d.ts +1 -1
- package/__inner__/cjs/components/TagNext/constants.js +2 -2
- package/__inner__/cjs/components/TagNext/types.d.ts +6 -3
- package/__inner__/cjs/components/Textarea/Textarea.css +0 -5
- package/__inner__/cjs/components/ThemeProvider/types.d.ts +2 -0
- package/__inner__/cjs/components/Tooltip/Tooltip.js +11 -11
- package/__inner__/cjs/components/Tooltip/constants.d.ts +1 -1
- package/__inner__/cjs/components/Tooltip/constants.js +1 -2
- package/__inner__/cjs/components/Tooltip/types.d.ts +1 -1
- package/__inner__/cjs/hooks/useElementSize/index.d.ts +1 -0
- package/__inner__/cjs/hooks/useElementSize/index.js +4 -0
- package/__inner__/cjs/hooks/useElementSize/useElementSize.d.ts +6 -0
- package/__inner__/cjs/hooks/useElementSize/useElementSize.js +11 -0
- package/__inner__/cjs/hooks/useResizeObserver/index.d.ts +1 -0
- package/__inner__/cjs/hooks/useResizeObserver/index.js +4 -0
- package/__inner__/cjs/hooks/useResizeObserver/useResizeObserver.d.ts +4 -0
- package/__inner__/cjs/hooks/useResizeObserver/useResizeObserver.js +50 -0
- package/__inner__/cjs/locale/locale.js +21 -0
- package/__inner__/cjs/utils/isNotNil.d.ts +1 -0
- package/__inner__/cjs/utils/isNotNil.js +7 -0
- package/__inner__/esm/components/Autocomplete/Autocomplete.d.ts +3 -0
- package/__inner__/esm/components/Autocomplete/Autocomplete.js +7 -0
- package/__inner__/esm/components/Autocomplete/helper.d.ts +2 -10
- package/__inner__/esm/components/AutocompleteNext/Autocomplete.css +226 -0
- package/__inner__/esm/components/AutocompleteNext/Autocomplete.d.ts +4 -0
- package/__inner__/esm/components/AutocompleteNext/Autocomplete.js +213 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/AutocompleteDropdown.d.ts +2 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/AutocompleteDropdown.js +153 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownCheckIcon/AutocompleteDropdownCheckIcon.css +7 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownCheckIcon/AutocompleteDropdownCheckIcon.d.ts +6 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownCheckIcon/AutocompleteDropdownCheckIcon.js +13 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownCheckIcon/index.d.ts +1 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownCheckIcon/index.js +1 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownLoading/AutocompleteDropdownLoading.d.ts +6 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownLoading/AutocompleteDropdownLoading.js +18 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownLoading/index.d.ts +1 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownLoading/index.js +1 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownNoOptions/AutocompleteDropdownNoOptions.d.ts +6 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownNoOptions/AutocompleteDropdownNoOptions.js +12 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownNoOptions/index.d.ts +1 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/components/AutocompleteDropdownNoOptions/index.js +1 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/components/index.d.ts +3 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/components/index.js +3 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/constants.d.ts +3 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/constants.js +3 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/helpers.d.ts +17 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/helpers.js +30 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/index.d.ts +3 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/index.js +3 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/types.d.ts +45 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/types.js +1 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/utils/index.d.ts +2 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/utils/index.js +2 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/utils/useDataListNavigation.d.ts +20 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/utils/useDataListNavigation.js +67 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/utils/useScrollContainerToElement.d.ts +3 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteDropdown/utils/useScrollContainerToElement.js +11 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteInput/AutocompleteInput.d.ts +2 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteInput/AutocompleteInput.js +35 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteInput/components/AutocompleteInputMultiple.d.ts +2 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteInput/components/AutocompleteInputMultiple.js +109 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteInput/components/helpers.d.ts +5 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteInput/components/helpers.js +29 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteInput/components/index.d.ts +1 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteInput/components/index.js +1 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteInput/components/types.d.ts +17 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteInput/components/types.js +1 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteInput/helpers.d.ts +3 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteInput/index.d.ts +2 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteInput/index.js +2 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteInput/types.d.ts +26 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteInput/types.js +1 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteRenderRight/AutocompleteRenderRight.d.ts +8 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteRenderRight/AutocompleteRenderRight.js +24 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteRenderRight/index.d.ts +1 -0
- package/__inner__/esm/components/AutocompleteNext/components/AutocompleteRenderRight/index.js +1 -0
- package/__inner__/esm/components/AutocompleteNext/components/index.d.ts +3 -0
- package/__inner__/esm/components/AutocompleteNext/components/index.js +3 -0
- package/__inner__/esm/components/AutocompleteNext/constants.d.ts +10 -0
- package/__inner__/esm/components/AutocompleteNext/constants.js +10 -0
- package/__inner__/esm/components/AutocompleteNext/helpers.d.ts +152 -0
- package/__inner__/esm/components/AutocompleteNext/helpers.js +9 -0
- package/__inner__/esm/components/AutocompleteNext/index.d.ts +2 -0
- package/__inner__/esm/components/AutocompleteNext/index.js +2 -0
- package/__inner__/esm/components/AutocompleteNext/types.d.ts +133 -0
- package/__inner__/esm/components/AutocompleteNext/types.js +1 -0
- package/__inner__/esm/components/DataList/DataList.js +17 -24
- package/__inner__/esm/components/DataList/constants.d.ts +1 -1
- package/__inner__/esm/components/DataList/constants.js +1 -2
- package/__inner__/esm/components/DataList/helpers.d.ts +3 -0
- package/__inner__/esm/components/DataList/helpers.js +2 -0
- package/__inner__/esm/components/DataList/{helpers → utils}/index.d.ts +0 -1
- package/__inner__/esm/components/DataList/{helpers → utils}/index.js +0 -1
- package/__inner__/esm/components/DatePicker/DatePicker.d.ts +2 -2
- package/__inner__/esm/components/DatePicker/DatePicker.js +1 -1
- package/__inner__/esm/components/Dialog/Dialog.d.ts +1 -2
- package/__inner__/esm/components/Drawer/Drawer.d.ts +1 -2
- package/__inner__/esm/components/FieldControl/FieldControl.css +4 -0
- package/__inner__/esm/components/FieldInput/FieldInput.d.ts +1 -9
- package/__inner__/esm/components/FieldInput/FieldInput.js +8 -3
- package/__inner__/esm/components/FieldInput/constants.d.ts +1 -0
- package/__inner__/esm/components/FieldInput/constants.js +1 -0
- package/__inner__/esm/components/FieldInput/index.d.ts +1 -0
- package/__inner__/esm/components/FieldInput/index.js +1 -0
- package/__inner__/esm/components/FieldInput/types.d.ts +11 -0
- package/__inner__/esm/components/FieldInput/types.js +1 -0
- package/__inner__/esm/components/FieldLabel/FieldLabel.css +1 -0
- package/__inner__/esm/components/Grid/Grid.css +4 -0
- package/__inner__/esm/components/Input/Input.css +6 -9
- package/__inner__/esm/components/Input/types.d.ts +2 -3
- package/__inner__/esm/components/InputNumber/InputNumber.css +0 -5
- package/__inner__/esm/components/Menu/Menu.js +2 -1
- package/__inner__/esm/components/Modal/Modal.d.ts +1 -2
- package/__inner__/esm/components/Modal/Modal.js +6 -7
- package/__inner__/esm/components/Modal/constants.d.ts +0 -1
- package/__inner__/esm/components/Modal/constants.js +0 -1
- package/__inner__/esm/components/Modal/types.d.ts +0 -3
- package/__inner__/esm/components/Popover/Popover.d.ts +1 -1
- package/__inner__/esm/components/Popover/Popover.js +9 -4
- package/__inner__/esm/components/Popover/constants.d.ts +1 -1
- package/__inner__/esm/components/Popover/constants.js +1 -2
- package/__inner__/esm/components/Popover/types.d.ts +2 -4
- package/__inner__/esm/components/Portal/Portal.js +4 -4
- package/__inner__/esm/components/Portal/constants.d.ts +2 -0
- package/__inner__/esm/components/Portal/constants.js +2 -0
- package/__inner__/esm/components/Portal/types.d.ts +3 -0
- package/__inner__/esm/components/Snackbar/components/Snackbar/Snackbar.d.ts +1 -1
- package/__inner__/esm/components/Tag/Tag.css +1 -0
- package/__inner__/esm/components/TagNext/Tag.css +11 -4
- package/__inner__/esm/components/TagNext/Tag.js +2 -2
- package/__inner__/esm/components/TagNext/constants.d.ts +1 -1
- package/__inner__/esm/components/TagNext/constants.js +1 -1
- package/__inner__/esm/components/TagNext/types.d.ts +6 -3
- package/__inner__/esm/components/Textarea/Textarea.css +0 -5
- package/__inner__/esm/components/ThemeProvider/types.d.ts +2 -0
- package/__inner__/esm/components/Tooltip/Tooltip.js +12 -12
- package/__inner__/esm/components/Tooltip/constants.d.ts +1 -1
- package/__inner__/esm/components/Tooltip/constants.js +1 -2
- package/__inner__/esm/components/Tooltip/types.d.ts +1 -1
- package/__inner__/esm/hooks/useElementSize/index.d.ts +1 -0
- package/__inner__/esm/hooks/useElementSize/index.js +1 -0
- package/__inner__/esm/hooks/useElementSize/useElementSize.d.ts +6 -0
- package/__inner__/esm/hooks/useElementSize/useElementSize.js +7 -0
- package/__inner__/esm/hooks/useResizeObserver/index.d.ts +1 -0
- package/__inner__/esm/hooks/useResizeObserver/index.js +1 -0
- package/__inner__/esm/hooks/useResizeObserver/useResizeObserver.d.ts +4 -0
- package/__inner__/esm/hooks/useResizeObserver/useResizeObserver.js +46 -0
- package/__inner__/esm/locale/locale.js +21 -0
- package/__inner__/esm/utils/isNotNil.d.ts +1 -0
- package/__inner__/esm/utils/isNotNil.js +3 -0
- package/package.json +6 -6
- package/useElementSize/package.json +5 -0
- package/useResizeObserver/package.json +5 -0
- package/__inner__/cjs/components/DataList/helpers/types.d.ts +0 -10
- package/__inner__/esm/components/DataList/helpers/types.d.ts +0 -10
- /package/__inner__/cjs/components/{DataList/helpers/types.js → AutocompleteNext/components/AutocompleteInput/helpers.js} +0 -0
- /package/__inner__/cjs/components/DataList/{helpers → utils}/lastSelectedValue.d.ts +0 -0
- /package/__inner__/cjs/components/DataList/{helpers → utils}/lastSelectedValue.js +0 -0
- /package/__inner__/cjs/components/DataList/{helpers → utils}/useDataListNavigation.d.ts +0 -0
- /package/__inner__/cjs/components/DataList/{helpers → utils}/useDataListNavigation.js +0 -0
- /package/__inner__/cjs/components/DataList/{helpers → utils}/useScrollContainerToElement.d.ts +0 -0
- /package/__inner__/cjs/components/DataList/{helpers → utils}/useScrollContainerToElement.js +0 -0
- /package/__inner__/esm/components/{DataList/helpers/types.js → AutocompleteNext/components/AutocompleteInput/helpers.js} +0 -0
- /package/__inner__/esm/components/DataList/{helpers → utils}/lastSelectedValue.d.ts +0 -0
- /package/__inner__/esm/components/DataList/{helpers → utils}/lastSelectedValue.js +0 -0
- /package/__inner__/esm/components/DataList/{helpers → utils}/useDataListNavigation.d.ts +0 -0
- /package/__inner__/esm/components/DataList/{helpers → utils}/useDataListNavigation.js +0 -0
- /package/__inner__/esm/components/DataList/{helpers → utils}/useScrollContainerToElement.d.ts +0 -0
- /package/__inner__/esm/components/DataList/{helpers → utils}/useScrollContainerToElement.js +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { __assign, __read, __rest, __spreadArray } from "tslib";
|
|
2
2
|
import './Autocomplete.css';
|
|
3
3
|
import React, { forwardRef, useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { deprecate } from '@ozen-ui/logger';
|
|
4
5
|
import { useControlled } from '../../hooks/useControlled';
|
|
5
6
|
import { useMultiRef } from '../../hooks/useMultiRef';
|
|
6
7
|
import { useMutableRef } from '../../hooks/useMutableRef';
|
|
@@ -19,6 +20,9 @@ function AutocompleteRender(inProps, ref) {
|
|
|
19
20
|
name: 'Autocomplete',
|
|
20
21
|
});
|
|
21
22
|
var _a = withDefaultGetters(props), _b = _a.disabled, disabled = _b === void 0 ? AUTOCOMPLETE_DEFAULT_DISABLED : _b, _c = _a.required, required = _c === void 0 ? AUTOCOMPLETE_DEFAULT_REQUIRED : _c, _d = _a.autoFocus, autoFocus = _d === void 0 ? AUTOCOMPLETE_DEFAULT_AUTOFOCUS : _d, _e = _a.fullWidth, fullWidth = _e === void 0 ? AUTOCOMPLETE_DEFAULT_FULLWIDTH : _e, _f = _a.size, size = _f === void 0 ? AUTOCOMPLETE_DEFAULT_SIZE : _f, _g = _a.allowCustomValue, allowCustomValue = _g === void 0 ? AUTOCOMPLETE_DEFAULT_ALLOW_CUSTOM_VALUE : _g, _h = _a.disableShowChevron, disableShowChevron = _h === void 0 ? AUTOCOMPLETE_DEFAULT_DISABLE_SHOW_CHEVRON : _h, _j = _a.disableClearButton, disableClearButton = _j === void 0 ? AUTOCOMPLETE_DEFAULT_DISABLE_CLEAR_BUTTON : _j, _k = _a.disableShowEmptyOptionsList, disableShowEmptyOptionsList = _k === void 0 ? AUTOCOMPLETE_DEFAULT_DISABLE_SHOW_EMPTY_OPTIONS_LIST : _k, _l = _a.disableCloseOnSelect, disableCloseOnSelect = _l === void 0 ? AUTOCOMPLETE_DEFAULT_DISABLE_CLOSE_ON_SELECT : _l, _m = _a.renderInput, renderInput = _m === void 0 ? function (props) { return React.createElement(Input, __assign({}, props, { ref: ref })); } : _m, searchFunctionProp = _a.searchFunction, renderOptionProp = _a.renderOption, inputValueProp = _a.inputValue, className = _a.className, valueProp = _a.value, options = _a.options, defaultValue = _a.defaultValue, error = _a.error, onChange = _a.onChange, onInputChange = _a.onInputChange, label = _a.label, placeholder = _a.placeholder, renderLeft = _a.renderLeft, renderRight = _a.renderRight, hint = _a.hint, getOptionKey = _a.getOptionKey, getOptionLabel = _a.getOptionLabel, getOptionDisabled = _a.getOptionDisabled, dataListProps = _a.dataListProps, onCloseProp = _a.onClose, onOpenProp = _a.onOpen, openProp = _a.open, defaultOpen = _a.defaultOpen, loading = _a.loading, inputProps = _a.inputProps, bodyProps = _a.bodyProps, onKeyDown = _a.onKeyDown, noOptionsText = _a.noOptionsText, clearText = _a.clearText, openText = _a.openText, loadingText = _a.loadingText, closeText = _a.closeText, other = __rest(_a, ["disabled", "required", "autoFocus", "fullWidth", "size", "allowCustomValue", "disableShowChevron", "disableClearButton", "disableShowEmptyOptionsList", "disableCloseOnSelect", "renderInput", "searchFunction", "renderOption", "inputValue", "className", "value", "options", "defaultValue", "error", "onChange", "onInputChange", "label", "placeholder", "renderLeft", "renderRight", "hint", "getOptionKey", "getOptionLabel", "getOptionDisabled", "dataListProps", "onClose", "onOpen", "open", "defaultOpen", "loading", "inputProps", "bodyProps", "onKeyDown", "noOptionsText", "clearText", "openText", "loadingText", "closeText"]);
|
|
23
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
24
|
+
deprecate('Компонент «Autocomplete» устарел. Для замены используйте компонент «AutocompleteNext».');
|
|
25
|
+
}
|
|
22
26
|
var anchorRef = useRef(null);
|
|
23
27
|
var lastInputValue = useRef('');
|
|
24
28
|
var inputBodyRef = useMultiRef([anchorRef, bodyProps === null || bodyProps === void 0 ? void 0 : bodyProps.ref]);
|
|
@@ -190,4 +194,7 @@ function AutocompleteRender(inProps, ref) {
|
|
|
190
194
|
!disableShowEmptyOptionsList && (React.createElement(AutocompleteNoOptions, { showNoOptions: showNoOptions, noOptionsText: noOptionsText })),
|
|
191
195
|
React.createElement(AutocompleteLoading, { showLoading: showLoading, loadingText: loadingText, size: size }))));
|
|
192
196
|
}
|
|
197
|
+
/**
|
|
198
|
+
* @deprecated Компонент устарел. Для замены используйте компонент AutocompleteNext
|
|
199
|
+
*/
|
|
193
200
|
export var Autocomplete = forwardRef(AutocompleteRender);
|
|
@@ -46,11 +46,7 @@ export declare function withDefaultGetters<OPTION>(props: AutocompleteProps<OPTI
|
|
|
46
46
|
hint?: string | null | undefined;
|
|
47
47
|
renderLeft?: string | number | import("react").FC<import("@ozen-ui/icons").IconProps> | import("react").ReactElement<import("@ozen-ui/icons").IconProps, string | import("react").JSXElementConstructor<any>> | (() => import("react").ReactElement<import("@ozen-ui/icons").IconProps, string | import("react").JSXElementConstructor<any>>) | undefined;
|
|
48
48
|
renderRight?: string | number | import("react").FC<import("@ozen-ui/icons").IconProps> | import("react").ReactElement<import("@ozen-ui/icons").IconProps, string | import("react").JSXElementConstructor<any>> | (() => import("react").ReactElement<import("@ozen-ui/icons").IconProps, string | import("react").JSXElementConstructor<any>>) | undefined;
|
|
49
|
-
inputProps?:
|
|
50
|
-
ref?: ((instance: HTMLInputElement | null) => void) | import("react").RefObject<HTMLInputElement> | null | undefined;
|
|
51
|
-
} & {
|
|
52
|
-
'data-testid'?: string | undefined;
|
|
53
|
-
}) | undefined;
|
|
49
|
+
inputProps?: import("../FieldInput").FieldInputProps | undefined;
|
|
54
50
|
bodyProps?: (Omit<import("react").DetailedHTMLProps<import("react").LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, "ref"> & {
|
|
55
51
|
ref?: ((instance: HTMLLabelElement | null) => void) | import("react").RefObject<HTMLLabelElement> | null | undefined;
|
|
56
52
|
}) | undefined;
|
|
@@ -117,11 +113,7 @@ export declare function withDefaultGetters<OPTION>(props: AutocompleteProps<OPTI
|
|
|
117
113
|
hint?: string | null | undefined;
|
|
118
114
|
renderLeft?: string | number | import("react").FC<import("@ozen-ui/icons").IconProps> | import("react").ReactElement<import("@ozen-ui/icons").IconProps, string | import("react").JSXElementConstructor<any>> | (() => import("react").ReactElement<import("@ozen-ui/icons").IconProps, string | import("react").JSXElementConstructor<any>>) | undefined;
|
|
119
115
|
renderRight?: string | number | import("react").FC<import("@ozen-ui/icons").IconProps> | import("react").ReactElement<import("@ozen-ui/icons").IconProps, string | import("react").JSXElementConstructor<any>> | (() => import("react").ReactElement<import("@ozen-ui/icons").IconProps, string | import("react").JSXElementConstructor<any>>) | undefined;
|
|
120
|
-
inputProps?:
|
|
121
|
-
ref?: ((instance: HTMLInputElement | null) => void) | import("react").RefObject<HTMLInputElement> | null | undefined;
|
|
122
|
-
} & {
|
|
123
|
-
'data-testid'?: string | undefined;
|
|
124
|
-
}) | undefined;
|
|
116
|
+
inputProps?: import("../FieldInput").FieldInputProps | undefined;
|
|
125
117
|
bodyProps?: (Omit<import("react").DetailedHTMLProps<import("react").LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, "ref"> & {
|
|
126
118
|
ref?: ((instance: HTMLLabelElement | null) => void) | import("react").RefObject<HTMLLabelElement> | null | undefined;
|
|
127
119
|
}) | undefined;
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
.AutocompleteNext {
|
|
2
|
+
--autocomplete-gutter-x: 0 var(--textfield-gutter-x);
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.AutocompleteNext_hasChevron.AutocompleteNext_size_2xs {
|
|
6
|
+
--autocomplete-gutter-x: 0 var(--control-padding-2xs) 0
|
|
7
|
+
var(--control-padding-xs);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.AutocompleteNext_hasChevron.AutocompleteNext_size_xs {
|
|
11
|
+
--autocomplete-gutter-x: 0 var(--control-padding-2xs) 0
|
|
12
|
+
var(--control-padding-xs);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.AutocompleteNext_hasChevron.AutocompleteNext_size_s {
|
|
16
|
+
--autocomplete-gutter-x: 0 var(--control-padding-2xs) 0
|
|
17
|
+
var(--control-padding-s);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.AutocompleteNext_hasChevron.AutocompleteNext_size_m {
|
|
21
|
+
--autocomplete-gutter-x: 0 var(--control-padding-2xs) 0
|
|
22
|
+
var(--control-padding-m);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.AutocompleteNext_hasChevron.AutocompleteNext_size_l {
|
|
26
|
+
--autocomplete-gutter-x: 0 var(--control-padding-2xs) 0
|
|
27
|
+
var(--control-padding-l);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.AutocompleteNext-RenderRight {
|
|
31
|
+
display: flex;
|
|
32
|
+
gap: var(--spacing-2xs);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.AutocompleteNext-ClearButton {
|
|
36
|
+
visibility: hidden;
|
|
37
|
+
transition: visibility var(--transition-default);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.AutocompleteNext-ClearButton_visibility {
|
|
41
|
+
visibility: visible;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.AutocompleteNext .Input-Body {
|
|
45
|
+
padding: var(--autocomplete-gutter-x);
|
|
46
|
+
align-items: flex-start;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.AutocompleteNext .FieldIcon {
|
|
50
|
+
block-size: var(--textfield-input-height);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.AutocompleteNext-Option {
|
|
54
|
+
cursor: pointer;
|
|
55
|
+
transition: background-color var(--transition-default);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.AutocompleteNext-Option:hover {
|
|
59
|
+
background-color: var(--color-background-main-hover);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.AutocompleteNext-Option:active {
|
|
63
|
+
background-color: var(--color-background-main-pressed);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.AutocompleteNext-Option_focused {
|
|
67
|
+
box-shadow: inset var(--shadow-outline-focused);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.AutocompleteNext-Option_disabled,
|
|
71
|
+
.AutocompleteNext-Option_disabled:hover,
|
|
72
|
+
.AutocompleteNext-Option_disabled:active {
|
|
73
|
+
cursor: not-allowed;
|
|
74
|
+
background-color: unset;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.AutocompleteNext-Option_disabled .ListItemText-TextPrimary,
|
|
78
|
+
.AutocompleteNext-Option_disabled .ListItemText-TextSecondary,
|
|
79
|
+
.AutocompleteNext-Option_disabled:hover .ListItemText-TextPrimary,
|
|
80
|
+
.AutocompleteNext-Option_disabled:hover .ListItemText-TextSecondary,
|
|
81
|
+
.AutocompleteNext-Option_disabled:active .ListItemText-TextPrimary,
|
|
82
|
+
.AutocompleteNext-Option_disabled:active .ListItemText-TextSecondary {
|
|
83
|
+
color: var(--color-content-tertiary);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.AutocompleteNext-Input_multiple {
|
|
87
|
+
display: flex;
|
|
88
|
+
flex-wrap: wrap;
|
|
89
|
+
overflow: hidden;
|
|
90
|
+
inline-size: 100%;
|
|
91
|
+
align-items: center;
|
|
92
|
+
box-sizing: border-box;
|
|
93
|
+
padding: var(--textfield-input-padding);
|
|
94
|
+
min-block-size: var(--textfield-input-height);
|
|
95
|
+
gap: var(--spacing-3xs);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.AutocompleteNext-Input_multiple input {
|
|
99
|
+
padding: 0;
|
|
100
|
+
border: none;
|
|
101
|
+
outline: none;
|
|
102
|
+
font: inherit;
|
|
103
|
+
background: none;
|
|
104
|
+
box-sizing: border-box;
|
|
105
|
+
color: var(--textfield-color);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.AutocompleteNext-Input_multiple input::placeholder {
|
|
109
|
+
opacity: 0;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.AutocompleteNext-Input_multiple * + input::placeholder, .AutocompleteNext-Input_multiple input:focus::placeholder {
|
|
113
|
+
opacity: 1;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.AutocompleteNext-Input_responsive {
|
|
117
|
+
flex-wrap: nowrap;
|
|
118
|
+
gap: unset;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.AutocompleteNext-Input_responsive .AutocompleteNext-Tag {
|
|
122
|
+
margin-inline-end: var(--spacing-3xs);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.AutocompleteNext-HelperInput {
|
|
126
|
+
inset-block-start: 0;
|
|
127
|
+
block-size: 0;
|
|
128
|
+
overflow: hidden;
|
|
129
|
+
position: absolute;
|
|
130
|
+
visibility: hidden;
|
|
131
|
+
white-space: nowrap;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.AutocompleteNext-Tag_hidden {
|
|
135
|
+
inset-block-start: 0;
|
|
136
|
+
block-size: 0;
|
|
137
|
+
visibility: hidden;
|
|
138
|
+
position: absolute;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.AutocompleteNext-Tag_disabled {
|
|
142
|
+
pointer-events: none;
|
|
143
|
+
opacity: 0.6;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.AutocompleteNext-ClearTag {
|
|
147
|
+
cursor: pointer;
|
|
148
|
+
display: inline-flex;
|
|
149
|
+
align-items: center;
|
|
150
|
+
block-size: inherit;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.AutocompleteNext-Dropdown {
|
|
154
|
+
--scroll-bar-size: 12px;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.AutocompleteNext-Dropdown::-webkit-scrollbar {
|
|
158
|
+
inline-size: var(--scroll-bar-size);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.AutocompleteNext-Dropdown::-webkit-scrollbar-thumb {
|
|
162
|
+
background-color: var(--color-background-secondary);
|
|
163
|
+
border-radius: calc(var(--scroll-bar-size) / 2);
|
|
164
|
+
border: calc(var(--scroll-bar-size) / 4) solid transparent;
|
|
165
|
+
background-clip: padding-box;
|
|
166
|
+
border-image: initial;
|
|
167
|
+
min-block-size: 24px;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.AutocompleteNext-Dropdown::-webkit-scrollbar-thumb:hover,
|
|
171
|
+
.AutocompleteNext-Dropdown::-webkit-scrollbar-thumb:active {
|
|
172
|
+
border: calc(var(--scroll-bar-size) / 4) solid transparent;
|
|
173
|
+
background-clip: padding-box;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.AutocompleteNext-Dropdown::-webkit-scrollbar-thumb:hover {
|
|
177
|
+
background-color: var(--color-background-secondary-hover);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.AutocompleteNext-Dropdown::-webkit-scrollbar-thumb:active {
|
|
181
|
+
background-color: var(--color-background-secondary-pressed);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.AutocompleteNext-Dropdown::-webkit-scrollbar-corner {
|
|
185
|
+
background: transparent;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.AutocompleteNext-Dropdown {
|
|
189
|
+
overflow: hidden auto;
|
|
190
|
+
max-block-size: 40vb;
|
|
191
|
+
}
|
|
192
|
+
.AutocompleteNext-Dropdown-animation-enter {
|
|
193
|
+
opacity: 0;
|
|
194
|
+
transform: translate(0, calc(var(--spacing-2xs) * -1));
|
|
195
|
+
pointer-events: none;
|
|
196
|
+
}
|
|
197
|
+
.AutocompleteNext-Dropdown-animation-enter-active {
|
|
198
|
+
opacity: 1;
|
|
199
|
+
transition:
|
|
200
|
+
opacity var(--transition-default),
|
|
201
|
+
transform var(--transition-default);
|
|
202
|
+
transform: translate(0);
|
|
203
|
+
pointer-events: none;
|
|
204
|
+
}
|
|
205
|
+
.AutocompleteNext-Dropdown-animation-enter-done {
|
|
206
|
+
opacity: 1;
|
|
207
|
+
transform: translate(0);
|
|
208
|
+
}
|
|
209
|
+
.AutocompleteNext-Dropdown-animation-exit {
|
|
210
|
+
opacity: 1;
|
|
211
|
+
transform: translate(0);
|
|
212
|
+
pointer-events: none;
|
|
213
|
+
}
|
|
214
|
+
.AutocompleteNext-Dropdown-animation-exit-active {
|
|
215
|
+
opacity: 0;
|
|
216
|
+
transition:
|
|
217
|
+
opacity var(--transition-default),
|
|
218
|
+
transform var(--transition-default);
|
|
219
|
+
transform: translate(0, calc(var(--spacing-2xs) * -1));
|
|
220
|
+
pointer-events: none;
|
|
221
|
+
}
|
|
222
|
+
.AutocompleteNext-Dropdown-animation-exit-done {
|
|
223
|
+
opacity: 0;
|
|
224
|
+
transform: translate(0, calc(var(--spacing-2xs) * -1));
|
|
225
|
+
pointer-events: none;
|
|
226
|
+
}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { __assign, __read, __rest, __spreadArray } from "tslib";
|
|
2
|
+
import './Autocomplete.css';
|
|
3
|
+
import React, { useEffect, forwardRef, useRef, useState } from 'react';
|
|
4
|
+
import { useControlled } from '../../hooks/useControlled';
|
|
5
|
+
import { useElementSize } from '../../hooks/useElementSize';
|
|
6
|
+
import { useMultiRef } from '../../hooks/useMultiRef';
|
|
7
|
+
import { useMutableRef } from '../../hooks/useMutableRef';
|
|
8
|
+
import { useThemeProps } from '../../hooks/useThemeProps';
|
|
9
|
+
import { cn } from '../../utils/classname';
|
|
10
|
+
import { isKeys } from '../../utils/isKeys';
|
|
11
|
+
import { AutocompleteDropdown, AutocompleteInput } from './components';
|
|
12
|
+
import { AUTOCOMPLETE_DEFAULT_SIZE, AUTOCOMPLETE_DEFAULT_DISABLED, AUTOCOMPLETE_DEFAULT_REQUIRED, AUTOCOMPLETE_DEFAULT_AUTOFOCUS, AUTOCOMPLETE_DEFAULT_FULLWIDTH, AUTOCOMPLETE_DEFAULT_ALLOW_CUSTOM_VALUE, AUTOCOMPLETE_DEFAULT_DISABLE_CLEAR_BUTTON, AUTOCOMPLETE_DEFAULT_DISABLE_SHOW_CHEVRON, AUTOCOMPLETE_DEFAULT_DISABLE_CLOSE_ON_SELECT, AUTOCOMPLETE_DEFAULT_DISABLE_SHOW_EMPTY_OPTIONS_LIST, } from './constants';
|
|
13
|
+
import { withDefaultGetters, isMultipleParams, isNotMultipleParams, } from './helpers';
|
|
14
|
+
export var cnAutocomplete = cn('AutocompleteNext');
|
|
15
|
+
function AutocompleteRender(inProps, ref) {
|
|
16
|
+
var props = useThemeProps({
|
|
17
|
+
props: inProps,
|
|
18
|
+
name: 'AutocompleteNext',
|
|
19
|
+
});
|
|
20
|
+
var _a = withDefaultGetters(props), _b = _a.disabled, disabled = _b === void 0 ? AUTOCOMPLETE_DEFAULT_DISABLED : _b, _c = _a.required, required = _c === void 0 ? AUTOCOMPLETE_DEFAULT_REQUIRED : _c, _d = _a.autoFocus, autoFocus = _d === void 0 ? AUTOCOMPLETE_DEFAULT_AUTOFOCUS : _d, _e = _a.fullWidth, fullWidth = _e === void 0 ? AUTOCOMPLETE_DEFAULT_FULLWIDTH : _e, _f = _a.size, size = _f === void 0 ? AUTOCOMPLETE_DEFAULT_SIZE : _f, _g = _a.allowCustomValue, allowCustomValue = _g === void 0 ? AUTOCOMPLETE_DEFAULT_ALLOW_CUSTOM_VALUE : _g, _h = _a.disableShowChevron, disableShowChevron = _h === void 0 ? AUTOCOMPLETE_DEFAULT_DISABLE_SHOW_CHEVRON : _h, _j = _a.disableClearButton, disableClearButton = _j === void 0 ? AUTOCOMPLETE_DEFAULT_DISABLE_CLEAR_BUTTON : _j, _k = _a.disableCloseOnSelect, disableCloseOnSelect = _k === void 0 ? AUTOCOMPLETE_DEFAULT_DISABLE_CLOSE_ON_SELECT : _k, _l = _a.disableShowEmptyOptionsList, disableShowEmptyOptionsList = _l === void 0 ? AUTOCOMPLETE_DEFAULT_DISABLE_SHOW_EMPTY_OPTIONS_LIST : _l, limitTags = _a.limitTags, renderInput = _a.renderInput, multiple = _a.multiple, searchFunctionProp = _a.searchFunction, inputValueProp = _a.inputValue, valueProp = _a.value, options = _a.options, defaultValue = _a.defaultValue, onInputChange = _a.onInputChange, getOptionKey = _a.getOptionKey, getOptionLabel = _a.getOptionLabel, getOptionDisabled = _a.getOptionDisabled, onCloseProp = _a.onClose, onOpenProp = _a.onOpen, openProp = _a.open, defaultOpen = _a.defaultOpen, loading = _a.loading, inputProps = _a.inputProps, bodyProps = _a.bodyProps, onKeyDown = _a.onKeyDown, noOptionsText = _a.noOptionsText, clearText = _a.clearText, openText = _a.openText, renderOption = _a.renderOption, loadingText = _a.loadingText, closeText = _a.closeText, listProps = _a.listProps, popoverProps = _a.popoverProps, onChangeProp = _a.onChange, other = __rest(_a, ["disabled", "required", "autoFocus", "fullWidth", "size", "allowCustomValue", "disableShowChevron", "disableClearButton", "disableCloseOnSelect", "disableShowEmptyOptionsList", "limitTags", "renderInput", "multiple", "searchFunction", "inputValue", "value", "options", "defaultValue", "onInputChange", "getOptionKey", "getOptionLabel", "getOptionDisabled", "onClose", "onOpen", "open", "defaultOpen", "loading", "inputProps", "bodyProps", "onKeyDown", "noOptionsText", "clearText", "openText", "renderOption", "loadingText", "closeText", "listProps", "popoverProps", "onChange"]);
|
|
21
|
+
var _m = useElementSize(), inputRef = _m.ref, height = _m.height;
|
|
22
|
+
var lastInputValue = useRef('');
|
|
23
|
+
var anchorRef = useRef(null);
|
|
24
|
+
var inputBodyRef = useMultiRef([anchorRef, bodyProps === null || bodyProps === void 0 ? void 0 : bodyProps.ref]);
|
|
25
|
+
var rootRef = useMultiRef([ref, inputRef]);
|
|
26
|
+
var _o = __read(useControlled({
|
|
27
|
+
value: inputValueProp,
|
|
28
|
+
defaultValue: '',
|
|
29
|
+
name: 'AutocompleteNext',
|
|
30
|
+
state: 'inputValue',
|
|
31
|
+
}), 2), inputValue = _o[0], setInputValue = _o[1];
|
|
32
|
+
var _p = __read(useControlled({
|
|
33
|
+
value: valueProp,
|
|
34
|
+
defaultValue: defaultValue,
|
|
35
|
+
name: 'AutocompleteNext',
|
|
36
|
+
state: 'value',
|
|
37
|
+
}), 2), valueState = _p[0], setValueState = _p[1];
|
|
38
|
+
var _q = __read(useControlled({
|
|
39
|
+
value: openProp,
|
|
40
|
+
defaultValue: defaultOpen,
|
|
41
|
+
name: 'AutocompleteNext',
|
|
42
|
+
state: 'open',
|
|
43
|
+
}), 2), open = _q[0], setOpen = _q[1];
|
|
44
|
+
var searchFunctionDefault = function (options, searchValue) {
|
|
45
|
+
return options === null || options === void 0 ? void 0 : options.filter(function (option) {
|
|
46
|
+
return getOptionLabel(option).toLowerCase().includes(searchValue.toLowerCase());
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
var savedOnInputChange = useMutableRef(onInputChange);
|
|
50
|
+
var savedGetOptionLabel = useMutableRef(getOptionLabel);
|
|
51
|
+
var _r = __read(useState(__spreadArray([], __read(options), false)), 2), filteredOptions = _r[0], setFilteredOptions = _r[1];
|
|
52
|
+
var searchFunction = searchFunctionProp || searchFunctionDefault;
|
|
53
|
+
var hasOptions = !!(filteredOptions === null || filteredOptions === void 0 ? void 0 : filteredOptions.length);
|
|
54
|
+
var _s = __read(useState(undefined), 2), search = _s[0], setSearch = _s[1];
|
|
55
|
+
var changeInputValue = function (e, value) {
|
|
56
|
+
var _a;
|
|
57
|
+
setInputValue(value);
|
|
58
|
+
(_a = savedOnInputChange.current) === null || _a === void 0 ? void 0 : _a.call(savedOnInputChange, e, value);
|
|
59
|
+
};
|
|
60
|
+
var callOnChange = function (e, option) {
|
|
61
|
+
var _a, _b, _c;
|
|
62
|
+
var inputValue = '';
|
|
63
|
+
var onChange = function (e, option) {
|
|
64
|
+
setValueState(option);
|
|
65
|
+
onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp(e, option);
|
|
66
|
+
};
|
|
67
|
+
var params = __assign(__assign({}, inProps), { onChange: onChange, value: valueState });
|
|
68
|
+
if (isNotMultipleParams(params)) {
|
|
69
|
+
inputValue = option ? getOptionLabel(option) : '';
|
|
70
|
+
(_a = params.onChange) === null || _a === void 0 ? void 0 : _a.call(params, e, option);
|
|
71
|
+
}
|
|
72
|
+
if (isMultipleParams(params)) {
|
|
73
|
+
if (option === null) {
|
|
74
|
+
(_b = params.onChange) === null || _b === void 0 ? void 0 : _b.call(params, e, null);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
var value = params.value || [];
|
|
78
|
+
var optionKey_1 = option && getOptionKey(option);
|
|
79
|
+
var optionIsSelected = value.find(function (item) { return getOptionKey(item) === optionKey_1; });
|
|
80
|
+
// eslint-disable-next-line no-nested-ternary
|
|
81
|
+
var res = optionIsSelected
|
|
82
|
+
? value.filter(function (option) { return getOptionKey(option) !== optionKey_1; })
|
|
83
|
+
: option
|
|
84
|
+
? __spreadArray(__spreadArray([], __read(value), false), [option], false) : value;
|
|
85
|
+
(_c = params.onChange) === null || _c === void 0 ? void 0 : _c.call(params, e, res);
|
|
86
|
+
}
|
|
87
|
+
setSearch(undefined);
|
|
88
|
+
}
|
|
89
|
+
changeInputValue(null, inputValue);
|
|
90
|
+
};
|
|
91
|
+
/** Эффект — фильтрация списка при изменении опций */
|
|
92
|
+
useEffect(function () {
|
|
93
|
+
if (!open)
|
|
94
|
+
return;
|
|
95
|
+
setFilteredOptions(search ? search(options) : __spreadArray([], __read(options), false));
|
|
96
|
+
}, [search, options, open, searchFunctionProp]);
|
|
97
|
+
/** Эффект — синхронизируем значение текстового поля со значением в списке */
|
|
98
|
+
useEffect(function () {
|
|
99
|
+
var _a;
|
|
100
|
+
if (allowCustomValue || multiple)
|
|
101
|
+
return;
|
|
102
|
+
var value = valueState || '';
|
|
103
|
+
var params = __assign(__assign({}, inProps), { value: value });
|
|
104
|
+
if (isNotMultipleParams(params)) {
|
|
105
|
+
lastInputValue.current = (_a = savedGetOptionLabel.current) === null || _a === void 0 ? void 0 : _a.call(savedGetOptionLabel, params.value);
|
|
106
|
+
if (lastInputValue.current !== inputValue)
|
|
107
|
+
changeInputValue(null, lastInputValue.current);
|
|
108
|
+
}
|
|
109
|
+
}, [valueState, allowCustomValue]);
|
|
110
|
+
/** Эффект — автофокусировка в текстовом поле */
|
|
111
|
+
useEffect(function () {
|
|
112
|
+
var _a;
|
|
113
|
+
if (autoFocus)
|
|
114
|
+
(_a = anchorRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
115
|
+
}, [autoFocus]);
|
|
116
|
+
/** Ждём выполнения анимации на закрытие и делаем сброс функции фильтрации */
|
|
117
|
+
var handleExited = function () {
|
|
118
|
+
var _a;
|
|
119
|
+
setSearch(undefined);
|
|
120
|
+
(_a = popoverProps === null || popoverProps === void 0 ? void 0 : popoverProps.onExited) === null || _a === void 0 ? void 0 : _a.call(popoverProps);
|
|
121
|
+
};
|
|
122
|
+
/** Закрытие */
|
|
123
|
+
var handleClose = function () {
|
|
124
|
+
setOpen(false);
|
|
125
|
+
onCloseProp === null || onCloseProp === void 0 ? void 0 : onCloseProp();
|
|
126
|
+
};
|
|
127
|
+
/** Открытие */
|
|
128
|
+
var handleOpen = function () {
|
|
129
|
+
setOpen(true);
|
|
130
|
+
onOpenProp === null || onOpenProp === void 0 ? void 0 : onOpenProp();
|
|
131
|
+
};
|
|
132
|
+
/** Переключатель открытия и закрытия */
|
|
133
|
+
var handleToggle = function () {
|
|
134
|
+
if (disabled)
|
|
135
|
+
return;
|
|
136
|
+
if (open)
|
|
137
|
+
handleClose();
|
|
138
|
+
else
|
|
139
|
+
handleOpen();
|
|
140
|
+
};
|
|
141
|
+
/** Очистка поля */
|
|
142
|
+
var handleClear = function (e) {
|
|
143
|
+
callOnChange(e, null);
|
|
144
|
+
setSearch(undefined);
|
|
145
|
+
};
|
|
146
|
+
/** Актуализация значения текстового поля после его покидания */
|
|
147
|
+
var handleBlur = function (e) {
|
|
148
|
+
var _a;
|
|
149
|
+
(_a = inputProps === null || inputProps === void 0 ? void 0 : inputProps.onBlur) === null || _a === void 0 ? void 0 : _a.call(inputProps, e);
|
|
150
|
+
if (allowCustomValue)
|
|
151
|
+
return;
|
|
152
|
+
if (inputValue !== lastInputValue.current) {
|
|
153
|
+
changeInputValue(null, lastInputValue.current);
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
/** Открытие списка по клику на текстовом поле */
|
|
157
|
+
var handleClickOnInput = function (e) {
|
|
158
|
+
var _a;
|
|
159
|
+
handleToggle();
|
|
160
|
+
(_a = inputProps === null || inputProps === void 0 ? void 0 : inputProps.onClick) === null || _a === void 0 ? void 0 : _a.call(inputProps, e);
|
|
161
|
+
};
|
|
162
|
+
/** Управление элементом контроля через клавиатуру */
|
|
163
|
+
var handleKeyDown = function (e) {
|
|
164
|
+
if (isKeys(e, ['ArrowDown', 'ArrowUp']) && !open) {
|
|
165
|
+
e.preventDefault();
|
|
166
|
+
handleToggle();
|
|
167
|
+
}
|
|
168
|
+
var params = __assign(__assign({}, inProps), { value: valueState });
|
|
169
|
+
if (isMultipleParams(params) && isKeys(e, ['Backspace']) && !inputValue) {
|
|
170
|
+
var value = params.value;
|
|
171
|
+
if (value)
|
|
172
|
+
callOnChange(e, value[value.length - 1] || null);
|
|
173
|
+
}
|
|
174
|
+
onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(e);
|
|
175
|
+
};
|
|
176
|
+
/** Событие ввода значения в текстовом поле */
|
|
177
|
+
var handleChangeInput = function (e) {
|
|
178
|
+
var value = e.target.value;
|
|
179
|
+
// Открываем список при вводе первого символа (при условии, что список еще не открыт)
|
|
180
|
+
if (value.length && !open)
|
|
181
|
+
handleOpen();
|
|
182
|
+
if (multiple)
|
|
183
|
+
changeInputValue(e, value);
|
|
184
|
+
if (value && !multiple)
|
|
185
|
+
changeInputValue(e, value);
|
|
186
|
+
if (!value && !multiple)
|
|
187
|
+
callOnChange(e, null);
|
|
188
|
+
// Задаем функцию фильтрации
|
|
189
|
+
setSearch(function () { return function (options) { return searchFunction(__spreadArray([], __read(options), false), value); }; });
|
|
190
|
+
};
|
|
191
|
+
/** Событие выбора значения из раскрывающегося списка */
|
|
192
|
+
var handleChangeDropdown = function (e, option) {
|
|
193
|
+
callOnChange(e, option);
|
|
194
|
+
// Закрываем список после выбора
|
|
195
|
+
if (!disableCloseOnSelect)
|
|
196
|
+
handleClose();
|
|
197
|
+
};
|
|
198
|
+
var autocompleteInputProps = __assign({ open: open, size: size, limitTags: limitTags, disabled: disabled, multiple: multiple, required: required, fullWidth: fullWidth, clearText: clearText, closeText: closeText, openText: openText, inputProps: __assign(__assign({}, inputProps), { onBlur: handleBlur, onClick: handleClickOnInput }), bodyProps: __assign(__assign({}, bodyProps), { ref: inputBodyRef }), renderInput: renderInput, getOptionKey: getOptionKey, getOptionLabel: getOptionLabel, getOptionDisabled: getOptionDisabled, value: inputValue, disableShowChevron: disableShowChevron, disableClearButton: disableClearButton, onClear: handleClear, onOpen: handleToggle, onRemoveTag: callOnChange, onKeyDown: handleKeyDown, onChange: handleChangeInput, selectedOptions: valueState }, other);
|
|
199
|
+
var update = useRef();
|
|
200
|
+
var setUpdate = function (func) {
|
|
201
|
+
if (func) {
|
|
202
|
+
update.current = func;
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
useEffect(function () {
|
|
206
|
+
var _a;
|
|
207
|
+
(_a = update.current) === null || _a === void 0 ? void 0 : _a.call(update);
|
|
208
|
+
}, [height]);
|
|
209
|
+
return (React.createElement(React.Fragment, null,
|
|
210
|
+
React.createElement(AutocompleteInput, __assign({}, autocompleteInputProps, { ref: rootRef })),
|
|
211
|
+
React.createElement(AutocompleteDropdown, { open: open, size: size, loading: loading, setUpdate: setUpdate, value: valueState, multiple: multiple, onClose: handleClose, listProps: listProps, anchorRef: anchorRef, hasOptions: hasOptions, options: filteredOptions, loadingText: loadingText, renderOption: renderOption, getOptionKey: getOptionKey, noOptionsText: noOptionsText, onChange: handleChangeDropdown, getOptionLabel: getOptionLabel, getOptionDisabled: getOptionDisabled, disableShowEmptyOptionsList: disableShowEmptyOptionsList, popoverProps: __assign(__assign({}, popoverProps), { onExited: handleExited }) })));
|
|
212
|
+
}
|
|
213
|
+
export var Autocomplete = forwardRef(AutocompleteRender);
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { __assign } from "tslib";
|
|
2
|
+
import React, { useEffect, useRef, useMemo, forwardRef } from 'react';
|
|
3
|
+
import { useEventListener } from '../../../../hooks/useEventListener';
|
|
4
|
+
import { useMultiRef } from '../../../../hooks/useMultiRef';
|
|
5
|
+
import { usePrevious } from '../../../../hooks/usePrevious';
|
|
6
|
+
import { getPaperSizeToFormElement } from '../../../../utils/getPaperSizeToFormElement';
|
|
7
|
+
import { isKey } from '../../../../utils/isKey';
|
|
8
|
+
import { isNotNil } from '../../../../utils/isNotNil';
|
|
9
|
+
import { scrollContainerToElement } from '../../../../utils/scrollContainerToElement';
|
|
10
|
+
import { List, ListItem, ListItemText } from '../../../List';
|
|
11
|
+
import { Paper } from '../../../Paper';
|
|
12
|
+
import { Popover } from '../../../Popover';
|
|
13
|
+
import { cnAutocomplete } from '../../index';
|
|
14
|
+
import { AutocompleteDropdownCheckIcon, AutocompleteDropdownLoading, AutocompleteDropdownNoOptions, } from './components';
|
|
15
|
+
import { AUTOCOMPLETE_DROPDOWN_DEFAULT_SIZE } from './constants';
|
|
16
|
+
import { isMultipleParams, isNotMultipleParams, normalizeOptions, } from './helpers';
|
|
17
|
+
import { useDataListNavigation } from './utils';
|
|
18
|
+
var AutocompleteDropdownRender = function (inProps, ref) {
|
|
19
|
+
var _a = inProps.size, size = _a === void 0 ? AUTOCOMPLETE_DROPDOWN_DEFAULT_SIZE : _a, open = inProps.open, loading = inProps.loading, onClose = inProps.onClose, options = inProps.options, onChange = inProps.onChange, anchorRef = inProps.anchorRef, className = inProps.className, listProps = inProps.listProps, hasOptions = inProps.hasOptions, loadingText = inProps.loadingText, popoverProps = inProps.popoverProps, getOptionKey = inProps.getOptionKey, noOptionsText = inProps.noOptionsText, getOptionLabel = inProps.getOptionLabel, getOptionDisabled = inProps.getOptionDisabled, disableShowEmptyOptionsList = inProps.disableShowEmptyOptionsList, setUpdate = inProps.setUpdate, renderOptionProp = inProps.renderOption;
|
|
20
|
+
var radius = getPaperSizeToFormElement(size);
|
|
21
|
+
var showNoOptions = !hasOptions && !loading && !disableShowEmptyOptionsList;
|
|
22
|
+
var showLoading = !hasOptions && !!loading;
|
|
23
|
+
var rootRef = useRef(null);
|
|
24
|
+
var listRef = useRef(null);
|
|
25
|
+
var _b = useMemo(function () { return normalizeOptions(options, getOptionKey, getOptionDisabled); }, [options, getOptionKey, getOptionDisabled]), entities = _b.entities, items = _b.idxs;
|
|
26
|
+
// Определяет последнюю выбранную опцию
|
|
27
|
+
var lastSelected = useMemo(function () {
|
|
28
|
+
var _a, _b;
|
|
29
|
+
if (isNotMultipleParams(inProps)) {
|
|
30
|
+
var value = inProps.value;
|
|
31
|
+
var key = value && getOptionKey(value);
|
|
32
|
+
return key && ((_a = entities.byKey[key]) === null || _a === void 0 ? void 0 : _a.idx);
|
|
33
|
+
}
|
|
34
|
+
if (isMultipleParams(inProps)) {
|
|
35
|
+
var value = inProps.value;
|
|
36
|
+
var lastValue = value === null || value === void 0 ? void 0 : value[value.length - 1];
|
|
37
|
+
var lastKey = lastValue && getOptionKey(lastValue);
|
|
38
|
+
return lastKey && ((_b = entities.byKey[lastKey]) === null || _b === void 0 ? void 0 : _b.idx);
|
|
39
|
+
}
|
|
40
|
+
return undefined;
|
|
41
|
+
}, [inProps, entities]);
|
|
42
|
+
// Навигация по списку
|
|
43
|
+
var _c = useDataListNavigation({
|
|
44
|
+
items: items,
|
|
45
|
+
active: open,
|
|
46
|
+
selected: lastSelected,
|
|
47
|
+
onSelect: function (event, idx) {
|
|
48
|
+
var _a;
|
|
49
|
+
var option = isNotNil(idx) ? (_a = entities.byIdx[idx]) === null || _a === void 0 ? void 0 : _a.option : undefined;
|
|
50
|
+
if (option)
|
|
51
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(event, option);
|
|
52
|
+
},
|
|
53
|
+
}), current = _c.current, focused = _c.focused, onKeyDown = _c.onKeyDown, onClick = _c.onClick;
|
|
54
|
+
var previousCurrent = usePrevious(current);
|
|
55
|
+
useEffect(function () {
|
|
56
|
+
var _a, _b;
|
|
57
|
+
var firstCurrent = !isNotNil(previousCurrent) && isNotNil(current) ? current : undefined;
|
|
58
|
+
var selected = focused !== null && focused !== void 0 ? focused : firstCurrent;
|
|
59
|
+
if (selected !== undefined) {
|
|
60
|
+
// Прокрутка списка
|
|
61
|
+
scrollContainerToElement({
|
|
62
|
+
container: rootRef.current,
|
|
63
|
+
element: (_b = (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.children) === null || _b === void 0 ? void 0 : _b[+selected],
|
|
64
|
+
behavior: isNotNil(focused) ? 'smooth' : 'instant',
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}, [focused, current]);
|
|
68
|
+
// Назначает элементу контроля событие управления списком с клавиатуры
|
|
69
|
+
useEventListener({
|
|
70
|
+
eventName: 'keydown',
|
|
71
|
+
element: anchorRef,
|
|
72
|
+
handler: function (event) { return onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event); },
|
|
73
|
+
});
|
|
74
|
+
// Закрывает список по нажатию на клавишу {Tab}
|
|
75
|
+
useEventListener({
|
|
76
|
+
active: open,
|
|
77
|
+
eventName: 'keydown',
|
|
78
|
+
element: anchorRef,
|
|
79
|
+
handler: function (event) {
|
|
80
|
+
if (isKey(event, 'Tab'))
|
|
81
|
+
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
var handleOnMouseDownList = function (e) {
|
|
85
|
+
var _a;
|
|
86
|
+
e.preventDefault();
|
|
87
|
+
(_a = listProps === null || listProps === void 0 ? void 0 : listProps.onMouseDown) === null || _a === void 0 ? void 0 : _a.call(listProps, e);
|
|
88
|
+
};
|
|
89
|
+
/** Отображение опций */
|
|
90
|
+
var renderOptionDefault = function (_a) {
|
|
91
|
+
var props = _a.props, option = _a.option, selected = _a.state.selected;
|
|
92
|
+
return (React.createElement(ListItem, __assign({}, props),
|
|
93
|
+
React.createElement(ListItemText, { primary: getOptionLabel(option) }),
|
|
94
|
+
React.createElement(AutocompleteDropdownCheckIcon, { selected: selected })));
|
|
95
|
+
};
|
|
96
|
+
var renderOption = renderOptionProp || renderOptionDefault;
|
|
97
|
+
// Представление раскрывающегося списка
|
|
98
|
+
var renderChildren = useMemo(function () {
|
|
99
|
+
return options.map(function (option, idx) {
|
|
100
|
+
var isSelected;
|
|
101
|
+
var key = getOptionKey === null || getOptionKey === void 0 ? void 0 : getOptionKey(option);
|
|
102
|
+
var isFocused = idx === focused;
|
|
103
|
+
var isDisabled = getOptionDisabled(option);
|
|
104
|
+
if (isNotMultipleParams(inProps)) {
|
|
105
|
+
var value = inProps.value;
|
|
106
|
+
if (value)
|
|
107
|
+
isSelected = getOptionKey(value) === key;
|
|
108
|
+
}
|
|
109
|
+
if (isMultipleParams(inProps) && Array.isArray(inProps.value)) {
|
|
110
|
+
var value = inProps.value;
|
|
111
|
+
isSelected = !!value.find(function (option) { return getOptionKey(option) === key; });
|
|
112
|
+
}
|
|
113
|
+
return renderOption({
|
|
114
|
+
option: option,
|
|
115
|
+
state: {
|
|
116
|
+
key: key,
|
|
117
|
+
focused: isFocused,
|
|
118
|
+
selected: isSelected,
|
|
119
|
+
disabled: isDisabled,
|
|
120
|
+
},
|
|
121
|
+
props: {
|
|
122
|
+
key: "".concat(idx, "_").concat(key),
|
|
123
|
+
role: 'option',
|
|
124
|
+
'aria-selected': isSelected,
|
|
125
|
+
'aria-disabled': isDisabled,
|
|
126
|
+
className: cnAutocomplete('Option', {
|
|
127
|
+
disabled: isDisabled,
|
|
128
|
+
selected: isSelected,
|
|
129
|
+
focused: isFocused,
|
|
130
|
+
}),
|
|
131
|
+
onClick: function (e) {
|
|
132
|
+
if (isDisabled)
|
|
133
|
+
return;
|
|
134
|
+
onClick === null || onClick === void 0 ? void 0 : onClick(e, idx);
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
}, [
|
|
140
|
+
options,
|
|
141
|
+
focused,
|
|
142
|
+
renderOption,
|
|
143
|
+
getOptionKey,
|
|
144
|
+
lastSelected,
|
|
145
|
+
getOptionDisabled,
|
|
146
|
+
]);
|
|
147
|
+
return (React.createElement(Popover, __assign({ offset: [0, 4], strategy: "absolute", placement: "bottom-start", setUpdate: setUpdate, as: Paper, transitionProps: { classNames: 'AutocompleteNext-Dropdown-animation' }, className: cnAutocomplete('Dropdown', [className]), equalAnchorWidth: true, disableReturnFocus: true, disableEnforceFocus: true }, popoverProps, { open: open, radius: radius, onClose: onClose, anchorRef: anchorRef, ref: useMultiRef([ref, popoverProps === null || popoverProps === void 0 ? void 0 : popoverProps.ref, rootRef]) }),
|
|
148
|
+
React.createElement(List, __assign({ size: size, role: "listbox" }, listProps, { onMouseDown: handleOnMouseDownList, ref: useMultiRef([listRef, listProps === null || listProps === void 0 ? void 0 : listProps.ref]) }),
|
|
149
|
+
renderChildren,
|
|
150
|
+
React.createElement(AutocompleteDropdownNoOptions, { showNoOptions: showNoOptions, noOptionsText: noOptionsText }),
|
|
151
|
+
React.createElement(AutocompleteDropdownLoading, { showLoading: showLoading, loadingText: loadingText, size: size }))));
|
|
152
|
+
};
|
|
153
|
+
export var AutocompleteDropdown = forwardRef(AutocompleteDropdownRender);
|