@smwb/ui-react 2.6.2 → 2.7.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/AI_LESS_OVERRIDES.md +4 -2
- package/AI_THEMING.md +17 -1
- package/README.md +84 -35
- package/dist/assets/styles/less/components/accordion/accordion.entry.css +1 -1
- package/dist/assets/styles/less/components/avatar/avatar.entry.css +1 -1
- package/dist/assets/styles/less/components/chart/chart.entry.css +1 -0
- package/dist/assets/styles/less/components/chip/chip.entry.css +1 -1
- package/dist/assets/styles/less/components/descriptionList/descriptionList.entry.css +1 -0
- package/dist/assets/styles/less/components/emptyState/emptyState.entry.css +1 -0
- package/dist/assets/styles/less/components/kanban/kanban.entry.css +1 -0
- package/dist/assets/styles/less/components/meter/meter.entry.css +1 -0
- package/dist/assets/styles/less/components/modal/modal.entry.css +1 -1
- package/dist/assets/styles/less/components/overflowMenu/overflowMenu.entry.css +1 -1
- package/dist/assets/styles/less/components/personChip/personChip.entry.css +1 -0
- package/dist/assets/styles/less/components/progressIndicator/progressIndicator.entry.css +1 -1
- package/dist/assets/styles/less/components/sectionHeader/sectionHeader.entry.css +1 -0
- package/dist/assets/styles/less/components/selectField/selectField.entry.css +1 -1
- package/dist/assets/styles/less/components/stat/stat.entry.css +1 -0
- package/dist/assets/styles/less/components/stepper/stepper.entry.css +1 -1
- package/dist/assets/styles/less/components/table/table.entry.css +1 -1
- package/dist/assets/styles/less/components/tabs/tab/tab.entry.css +1 -1
- package/dist/assets/styles/less/components/tabs/tabs.entry.css +1 -1
- package/dist/assets/styles/less/components/textField/textField.entry.css +1 -1
- package/dist/assets/styles/less/components/timeline/timeline.entry.css +1 -0
- package/dist/assets/styles/less/components/tooltip/tooltip.entry.css +1 -1
- package/dist/assets/styles/less/components/typography/typography.entry.css +1 -1
- package/dist/assets/styles/less/connects/rt/table.entry.css +1 -0
- package/dist/assets/styles/less/tokens.entry.css +1 -0
- package/dist/chart.d.ts +2 -0
- package/dist/chart.js +8 -0
- package/dist/chart.js.map +1 -0
- package/dist/components/base/icon/icon.js +8 -7
- package/dist/components/base/icon/icon.js.map +1 -1
- package/dist/components/base/ripple/ripple.js +11 -10
- package/dist/components/base/ripple/ripple.js.map +1 -1
- package/dist/components/dataDisplay/accordion/accordion.d.ts +18 -1
- package/dist/components/dataDisplay/accordion/accordion.js +77 -54
- package/dist/components/dataDisplay/accordion/accordion.js.map +1 -1
- package/dist/components/dataDisplay/assetGrid/assetGrid.js +15 -14
- package/dist/components/dataDisplay/assetGrid/assetGrid.js.map +1 -1
- package/dist/components/dataDisplay/avatar/avatar.d.ts +4 -0
- package/dist/components/dataDisplay/avatar/avatar.js +45 -30
- package/dist/components/dataDisplay/avatar/avatar.js.map +1 -1
- package/dist/components/dataDisplay/badge/badge.js +11 -10
- package/dist/components/dataDisplay/badge/badge.js.map +1 -1
- package/dist/components/dataDisplay/card/card.js +16 -15
- package/dist/components/dataDisplay/card/card.js.map +1 -1
- package/dist/components/dataDisplay/carousel/carousel.js +23 -22
- package/dist/components/dataDisplay/carousel/carousel.js.map +1 -1
- package/dist/components/dataDisplay/chart/chart.d.ts +65 -0
- package/dist/components/dataDisplay/chart/chart.js +133 -0
- package/dist/components/dataDisplay/chart/chart.js.map +1 -0
- package/dist/components/dataDisplay/chart/chartTheme.d.ts +35 -0
- package/dist/components/dataDisplay/chart/chartTheme.js +74 -0
- package/dist/components/dataDisplay/chart/chartTheme.js.map +1 -0
- package/dist/components/dataDisplay/chart/index.d.ts +4 -0
- package/dist/components/dataDisplay/chat/chat.js +5 -4
- package/dist/components/dataDisplay/chat/chat.js.map +1 -1
- package/dist/components/dataDisplay/chip/chip.js +5 -4
- package/dist/components/dataDisplay/chip/chip.js.map +1 -1
- package/dist/components/dataDisplay/chipGroup/chipGroup.js +10 -9
- package/dist/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
- package/dist/components/dataDisplay/descriptionList/descriptionList.d.ts +37 -0
- package/dist/components/dataDisplay/descriptionList/descriptionList.js +43 -0
- package/dist/components/dataDisplay/descriptionList/descriptionList.js.map +1 -0
- package/dist/components/dataDisplay/descriptionList/index.d.ts +2 -0
- package/dist/components/dataDisplay/expansionPanel/expansionPanel.js +5 -4
- package/dist/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
- package/dist/components/dataDisplay/imagesList/imagesList.js +11 -10
- package/dist/components/dataDisplay/imagesList/imagesList.js.map +1 -1
- package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItem.js +31 -24
- package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItem.js.map +1 -1
- package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.d.ts +1 -1
- package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.js +16 -13
- package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.js.map +1 -1
- package/dist/components/dataDisplay/kanban/index.d.ts +2 -0
- package/dist/components/dataDisplay/kanban/kanban.d.ts +47 -0
- package/dist/components/dataDisplay/kanban/kanban.js +63 -0
- package/dist/components/dataDisplay/kanban/kanban.js.map +1 -0
- package/dist/components/dataDisplay/lazyImage/lazyImage.js +9 -8
- package/dist/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
- package/dist/components/dataDisplay/list/list.js +11 -10
- package/dist/components/dataDisplay/list/list.js.map +1 -1
- package/dist/components/dataDisplay/meter/index.d.ts +2 -0
- package/dist/components/dataDisplay/meter/meter.d.ts +33 -0
- package/dist/components/dataDisplay/meter/meter.js +62 -0
- package/dist/components/dataDisplay/meter/meter.js.map +1 -0
- package/dist/components/dataDisplay/personChip/index.d.ts +2 -0
- package/dist/components/dataDisplay/personChip/personChip.d.ts +31 -0
- package/dist/components/dataDisplay/personChip/personChip.js +61 -0
- package/dist/components/dataDisplay/personChip/personChip.js.map +1 -0
- package/dist/components/dataDisplay/stat/index.d.ts +2 -0
- package/dist/components/dataDisplay/stat/stat.d.ts +36 -0
- package/dist/components/dataDisplay/stat/stat.js +48 -0
- package/dist/components/dataDisplay/stat/stat.js.map +1 -0
- package/dist/components/dataDisplay/table/table.d.ts +7 -0
- package/dist/components/dataDisplay/table/table.js +21 -15
- package/dist/components/dataDisplay/table/table.js.map +1 -1
- package/dist/components/dataDisplay/table/tableCell.d.ts +3 -1
- package/dist/components/dataDisplay/table/tableCell.js +11 -2
- package/dist/components/dataDisplay/table/tableCell.js.map +1 -1
- package/dist/components/dataDisplay/table/tableHeadCell.d.ts +11 -1
- package/dist/components/dataDisplay/table/tableHeadCell.js +54 -24
- package/dist/components/dataDisplay/table/tableHeadCell.js.map +1 -1
- package/dist/components/dataDisplay/table/tablePagination/tablePagination.js +10 -9
- package/dist/components/dataDisplay/table/tablePagination/tablePagination.js.map +1 -1
- package/dist/components/dataDisplay/thumbCard/thumbCard.js +10 -9
- package/dist/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
- package/dist/components/dataDisplay/timeline/index.d.ts +2 -0
- package/dist/components/dataDisplay/timeline/timeline.d.ts +43 -0
- package/dist/components/dataDisplay/timeline/timeline.js +44 -0
- package/dist/components/dataDisplay/timeline/timeline.js.map +1 -0
- package/dist/components/dataDisplay/treeView/treeView.js +5 -4
- package/dist/components/dataDisplay/treeView/treeView.js.map +1 -1
- package/dist/components/dataDisplay/typography/typography.d.ts +4 -0
- package/dist/components/dataDisplay/typography/typography.js +41 -23
- package/dist/components/dataDisplay/typography/typography.js.map +1 -1
- package/dist/components/feedBack/confirmDialog/confirmDialog.js +14 -13
- package/dist/components/feedBack/confirmDialog/confirmDialog.js.map +1 -1
- package/dist/components/feedBack/emptyState/emptyState.d.ts +26 -0
- package/dist/components/feedBack/emptyState/emptyState.js +27 -0
- package/dist/components/feedBack/emptyState/emptyState.js.map +1 -0
- package/dist/components/feedBack/emptyState/index.d.ts +2 -0
- package/dist/components/feedBack/message/message.js +8 -7
- package/dist/components/feedBack/message/message.js.map +1 -1
- package/dist/components/feedBack/modal/modal.js +5 -4
- package/dist/components/feedBack/modal/modal.js.map +1 -1
- package/dist/components/feedBack/progressIndicator/progressIndicator.d.ts +14 -1
- package/dist/components/feedBack/progressIndicator/progressIndicator.js +72 -40
- package/dist/components/feedBack/progressIndicator/progressIndicator.js.map +1 -1
- package/dist/components/feedBack/saveAssetDialog/saveAssetDialog.js +31 -29
- package/dist/components/feedBack/saveAssetDialog/saveAssetDialog.js.map +1 -1
- package/dist/components/feedBack/skeleton/skeleton.js +17 -16
- package/dist/components/feedBack/skeleton/skeleton.js.map +1 -1
- package/dist/components/feedBack/snackbar/snackbar.js +6 -5
- package/dist/components/feedBack/snackbar/snackbar.js.map +1 -1
- package/dist/components/feedBack/tooltip/tooltip.js +57 -49
- package/dist/components/feedBack/tooltip/tooltip.js.map +1 -1
- package/dist/components/inputs/button/button.js +16 -15
- package/dist/components/inputs/button/button.js.map +1 -1
- package/dist/components/inputs/buttonGroups/buttonGroup.js +5 -4
- package/dist/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
- package/dist/components/inputs/checkbox/checkbox.js +10 -9
- package/dist/components/inputs/checkbox/checkbox.js.map +1 -1
- package/dist/components/inputs/datePicker/datePicker.js +123 -120
- package/dist/components/inputs/datePicker/datePicker.js.map +1 -1
- package/dist/components/inputs/dateTimePicker/dateTimePicker.js +121 -119
- package/dist/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
- package/dist/components/inputs/fileDrop/fileDrop.js +13 -12
- package/dist/components/inputs/fileDrop/fileDrop.js.map +1 -1
- package/dist/components/inputs/fileInput/fileInput.js +4 -3
- package/dist/components/inputs/fileInput/fileInput.js.map +1 -1
- package/dist/components/inputs/floatingButton/floatingButton.js +17 -16
- package/dist/components/inputs/floatingButton/floatingButton.js.map +1 -1
- package/dist/components/inputs/radioButton/radioButton.js +11 -10
- package/dist/components/inputs/radioButton/radioButton.js.map +1 -1
- package/dist/components/inputs/rating/rating.js +18 -17
- package/dist/components/inputs/rating/rating.js.map +1 -1
- package/dist/components/inputs/selectField/dropdownMenu.d.ts +1 -1
- package/dist/components/inputs/selectField/dropdownMenu.js +72 -69
- package/dist/components/inputs/selectField/dropdownMenu.js.map +1 -1
- package/dist/components/inputs/selectField/selectField.d.ts +2 -0
- package/dist/components/inputs/selectField/selectField.js +128 -117
- package/dist/components/inputs/selectField/selectField.js.map +1 -1
- package/dist/components/inputs/slider/slider.js +4 -3
- package/dist/components/inputs/slider/slider.js.map +1 -1
- package/dist/components/inputs/textField/textField.js +16 -15
- package/dist/components/inputs/textField/textField.js.map +1 -1
- package/dist/components/inputs/textField/utils.d.ts +1 -1
- package/dist/components/inputs/timePicker/timePicker.js +66 -63
- package/dist/components/inputs/timePicker/timePicker.js.map +1 -1
- package/dist/components/inputs/toggle/toggle.js +14 -13
- package/dist/components/inputs/toggle/toggle.js.map +1 -1
- package/dist/components/inputs/valueSlider/valueSlider.js +9 -8
- package/dist/components/inputs/valueSlider/valueSlider.js.map +1 -1
- package/dist/components/layout/appLayout/appLayout.js +20 -19
- package/dist/components/layout/appLayout/appLayout.js.map +1 -1
- package/dist/components/layout/divider/divider.js +9 -8
- package/dist/components/layout/divider/divider.js.map +1 -1
- package/dist/components/layout/floatingWindow/floatingWindow.js +4 -3
- package/dist/components/layout/floatingWindow/floatingWindow.js.map +1 -1
- package/dist/components/layout/grid/grid.js +17 -16
- package/dist/components/layout/grid/grid.js.map +1 -1
- package/dist/components/layout/page/page.js +9 -8
- package/dist/components/layout/page/page.js.map +1 -1
- package/dist/components/layout/pageHeader/pageHeader.js +10 -9
- package/dist/components/layout/pageHeader/pageHeader.js.map +1 -1
- package/dist/components/layout/screenDivider/screenDivider.js +19 -18
- package/dist/components/layout/screenDivider/screenDivider.js.map +1 -1
- package/dist/components/layout/sectionHeader/index.d.ts +2 -0
- package/dist/components/layout/sectionHeader/sectionHeader.d.ts +31 -0
- package/dist/components/layout/sectionHeader/sectionHeader.js +67 -0
- package/dist/components/layout/sectionHeader/sectionHeader.js.map +1 -0
- package/dist/components/layout/sheet/sheet.js +5 -4
- package/dist/components/layout/sheet/sheet.js.map +1 -1
- package/dist/components/layout/stack/stack.js +10 -9
- package/dist/components/layout/stack/stack.js.map +1 -1
- package/dist/components/navigation/appBar/appBar.js +18 -17
- package/dist/components/navigation/appBar/appBar.js.map +1 -1
- package/dist/components/navigation/bottomBar/bottomBar.js +5 -4
- package/dist/components/navigation/bottomBar/bottomBar.js.map +1 -1
- package/dist/components/navigation/breadcrumbs/breadcrumbs.js +5 -4
- package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
- package/dist/components/navigation/menu/menu.js +6 -5
- package/dist/components/navigation/menu/menu.js.map +1 -1
- package/dist/components/navigation/overflowMenu/overflowMenu.js +16 -15
- package/dist/components/navigation/overflowMenu/overflowMenu.js.map +1 -1
- package/dist/components/navigation/pagination/pagination.js +5 -4
- package/dist/components/navigation/pagination/pagination.js.map +1 -1
- package/dist/components/navigation/sidebar/sidebar.js +13 -12
- package/dist/components/navigation/sidebar/sidebar.js.map +1 -1
- package/dist/components/navigation/stepper/stepper.d.ts +10 -2
- package/dist/components/navigation/stepper/stepper.js +33 -30
- package/dist/components/navigation/stepper/stepper.js.map +1 -1
- package/dist/components/navigation/tabs/tab/tab.d.ts +2 -0
- package/dist/components/navigation/tabs/tab/tab.js +14 -13
- package/dist/components/navigation/tabs/tab/tab.js.map +1 -1
- package/dist/components/navigation/tabs/tabs.d.ts +12 -0
- package/dist/components/navigation/tabs/tabs.js +138 -83
- package/dist/components/navigation/tabs/tabs.js.map +1 -1
- package/dist/connects/rt/table/draggableHeader.d.ts +1 -1
- package/dist/connects/rt/table/draggableHeader.js.map +1 -0
- package/dist/connects/rt/table/headerCellRenderer.d.ts +6 -0
- package/dist/connects/rt/table/headerCellRenderer.js +21 -0
- package/dist/connects/rt/table/headerCellRenderer.js.map +1 -0
- package/dist/connects/rt/table/table.d.ts +2 -0
- package/dist/connects/rt/table/table.js +200 -0
- package/dist/connects/rt/table/table.js.map +1 -0
- package/dist/connects/rt/table/utils.js.map +1 -0
- package/dist/headless/components/dataDisplay/accordion/accordion.js +76 -54
- package/dist/headless/components/dataDisplay/accordion/accordion.js.map +1 -1
- package/dist/headless/components/dataDisplay/avatar/avatar.js +45 -31
- package/dist/headless/components/dataDisplay/avatar/avatar.js.map +1 -1
- package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js +41 -0
- package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js.map +1 -0
- package/dist/headless/components/dataDisplay/imagesList/imagesListItem/imagesListItem.js +29 -23
- package/dist/headless/components/dataDisplay/imagesList/imagesListItem/imagesListItem.js.map +1 -1
- package/dist/headless/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.js +16 -13
- package/dist/headless/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.js.map +1 -1
- package/dist/headless/components/dataDisplay/kanban/kanban.js +61 -0
- package/dist/headless/components/dataDisplay/kanban/kanban.js.map +1 -0
- package/dist/headless/components/dataDisplay/meter/meter.js +60 -0
- package/dist/headless/components/dataDisplay/meter/meter.js.map +1 -0
- package/dist/headless/components/dataDisplay/personChip/personChip.js +59 -0
- package/dist/headless/components/dataDisplay/personChip/personChip.js.map +1 -0
- package/dist/headless/components/dataDisplay/stat/stat.js +46 -0
- package/dist/headless/components/dataDisplay/stat/stat.js.map +1 -0
- package/dist/headless/components/dataDisplay/table/table.js +16 -11
- package/dist/headless/components/dataDisplay/table/table.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableCell.js +11 -2
- package/dist/headless/components/dataDisplay/table/tableCell.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableHeadCell.js +54 -24
- package/dist/headless/components/dataDisplay/table/tableHeadCell.js.map +1 -1
- package/dist/headless/components/dataDisplay/timeline/timeline.js +42 -0
- package/dist/headless/components/dataDisplay/timeline/timeline.js.map +1 -0
- package/dist/headless/components/dataDisplay/typography/typography.js +39 -22
- package/dist/headless/components/dataDisplay/typography/typography.js.map +1 -1
- package/dist/headless/components/feedBack/confirmDialog/confirmDialog.js +9 -9
- package/dist/headless/components/feedBack/confirmDialog/confirmDialog.js.map +1 -1
- package/dist/headless/components/feedBack/emptyState/emptyState.js +25 -0
- package/dist/headless/components/feedBack/emptyState/emptyState.js.map +1 -0
- package/dist/headless/components/feedBack/progressIndicator/progressIndicator.js +70 -39
- package/dist/headless/components/feedBack/progressIndicator/progressIndicator.js.map +1 -1
- package/dist/headless/components/feedBack/saveAssetDialog/saveAssetDialog.js +27 -26
- package/dist/headless/components/feedBack/saveAssetDialog/saveAssetDialog.js.map +1 -1
- package/dist/headless/components/feedBack/tooltip/tooltip.js +53 -46
- package/dist/headless/components/feedBack/tooltip/tooltip.js.map +1 -1
- package/dist/headless/components/inputs/datePicker/datePicker.js +112 -110
- package/dist/headless/components/inputs/datePicker/datePicker.js.map +1 -1
- package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js +121 -119
- package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
- package/dist/headless/components/inputs/selectField/dropdownMenu.js +72 -69
- package/dist/headless/components/inputs/selectField/dropdownMenu.js.map +1 -1
- package/dist/headless/components/inputs/selectField/selectField.js +109 -99
- package/dist/headless/components/inputs/selectField/selectField.js.map +1 -1
- package/dist/headless/components/inputs/timePicker/timePicker.js +65 -63
- package/dist/headless/components/inputs/timePicker/timePicker.js.map +1 -1
- package/dist/headless/components/layout/sectionHeader/sectionHeader.js +65 -0
- package/dist/headless/components/layout/sectionHeader/sectionHeader.js.map +1 -0
- package/dist/headless/components/navigation/stepper/stepper.js +31 -29
- package/dist/headless/components/navigation/stepper/stepper.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tab/tab.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tabs.js +129 -75
- package/dist/headless/components/navigation/tabs/tabs.js.map +1 -1
- package/dist/headless/hooks/useSafeLayoutEffect.js +4 -2
- package/dist/headless/hooks/useSafeLayoutEffect.js.map +1 -1
- package/dist/headless/icons/catalog.js +78 -1
- package/dist/headless/icons/catalog.js.map +1 -1
- package/dist/headless/icons/index.js +596 -574
- package/dist/headless/icons/index.js.map +1 -1
- package/dist/headless/icons/svg/accountTree.js +9 -0
- package/dist/headless/icons/svg/accountTree.js.map +1 -0
- package/dist/headless/icons/svg/callSplit.js +9 -0
- package/dist/headless/icons/svg/callSplit.js.map +1 -0
- package/dist/headless/icons/svg/deviceHub.js +8 -0
- package/dist/headless/icons/svg/deviceHub.js.map +1 -0
- package/dist/headless/icons/svg/editNote.js +9 -0
- package/dist/headless/icons/svg/editNote.js.map +1 -0
- package/dist/headless/icons/svg/filterList.js +9 -0
- package/dist/headless/icons/svg/filterList.js.map +1 -0
- package/dist/headless/icons/svg/forkRight.js +8 -0
- package/dist/headless/icons/svg/forkRight.js.map +1 -0
- package/dist/headless/icons/svg/groups.js +9 -0
- package/dist/headless/icons/svg/groups.js.map +1 -0
- package/dist/headless/icons/svg/hub.js +8 -0
- package/dist/headless/icons/svg/hub.js.map +1 -0
- package/dist/headless/icons/svg/index.js +598 -576
- package/dist/headless/icons/svg/index.js.map +1 -1
- package/dist/headless/icons/svg/lan.js +9 -0
- package/dist/headless/icons/svg/lan.js.map +1 -0
- package/dist/headless/icons/svg/personOff.js +9 -0
- package/dist/headless/icons/svg/personOff.js.map +1 -0
- package/dist/headless/icons/svg/schema.js +9 -0
- package/dist/headless/icons/svg/schema.js.map +1 -0
- package/dist/headless/index.js +209 -183
- package/dist/headless/index.js.map +1 -1
- package/dist/hooks/useSafeLayoutEffect.d.ts +7 -1
- package/dist/hooks/useSafeLayoutEffect.js +4 -2
- package/dist/hooks/useSafeLayoutEffect.js.map +1 -1
- package/dist/icons/catalog.d.ts +1 -1
- package/dist/icons/catalog.js +78 -1
- package/dist/icons/catalog.js.map +1 -1
- package/dist/icons/index.js +596 -574
- package/dist/icons/index.js.map +1 -1
- package/dist/icons/svg/accountTree.d.ts +4 -0
- package/dist/icons/svg/accountTree.js +9 -0
- package/dist/icons/svg/accountTree.js.map +1 -0
- package/dist/icons/svg/callSplit.d.ts +4 -0
- package/dist/icons/svg/callSplit.js +9 -0
- package/dist/icons/svg/callSplit.js.map +1 -0
- package/dist/icons/svg/deviceHub.d.ts +4 -0
- package/dist/icons/svg/deviceHub.js +8 -0
- package/dist/icons/svg/deviceHub.js.map +1 -0
- package/dist/icons/svg/editNote.d.ts +4 -0
- package/dist/icons/svg/editNote.js +9 -0
- package/dist/icons/svg/editNote.js.map +1 -0
- package/dist/icons/svg/filterList.d.ts +4 -0
- package/dist/icons/svg/filterList.js +9 -0
- package/dist/icons/svg/filterList.js.map +1 -0
- package/dist/icons/svg/forkRight.d.ts +4 -0
- package/dist/icons/svg/forkRight.js +8 -0
- package/dist/icons/svg/forkRight.js.map +1 -0
- package/dist/icons/svg/groups.d.ts +4 -0
- package/dist/icons/svg/groups.js +9 -0
- package/dist/icons/svg/groups.js.map +1 -0
- package/dist/icons/svg/hub.d.ts +4 -0
- package/dist/icons/svg/hub.js +8 -0
- package/dist/icons/svg/hub.js.map +1 -0
- package/dist/icons/svg/index.d.ts +11 -0
- package/dist/icons/svg/index.js +598 -576
- package/dist/icons/svg/index.js.map +1 -1
- package/dist/icons/svg/lan.d.ts +4 -0
- package/dist/icons/svg/lan.js +9 -0
- package/dist/icons/svg/lan.js.map +1 -0
- package/dist/icons/svg/personOff.d.ts +4 -0
- package/dist/icons/svg/personOff.js +9 -0
- package/dist/icons/svg/personOff.js.map +1 -0
- package/dist/icons/svg/schema.d.ts +4 -0
- package/dist/icons/svg/schema.js +9 -0
- package/dist/icons/svg/schema.js.map +1 -0
- package/dist/icons.cjs +1 -1
- package/dist/icons.cjs.map +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +16 -0
- package/dist/index.js +209 -183
- package/dist/index.js.map +1 -1
- package/package.json +18 -7
- package/dist/react-table/components/base/icon/icon.js +0 -60
- package/dist/react-table/components/base/icon/icon.js.map +0 -1
- package/dist/react-table/components/base/icon/iconProvider.js +0 -15
- package/dist/react-table/components/base/icon/iconProvider.js.map +0 -1
- package/dist/react-table/components/dataDisplay/table/table.js +0 -37
- package/dist/react-table/components/dataDisplay/table/table.js.map +0 -1
- package/dist/react-table/components/dataDisplay/table/tableBody.js +0 -7
- package/dist/react-table/components/dataDisplay/table/tableBody.js.map +0 -1
- package/dist/react-table/components/dataDisplay/table/tableCell.js +0 -7
- package/dist/react-table/components/dataDisplay/table/tableCell.js.map +0 -1
- package/dist/react-table/components/dataDisplay/table/tableHead.js +0 -7
- package/dist/react-table/components/dataDisplay/table/tableHead.js.map +0 -1
- package/dist/react-table/components/dataDisplay/table/tableHeadCell.js +0 -48
- package/dist/react-table/components/dataDisplay/table/tableHeadCell.js.map +0 -1
- package/dist/react-table/components/dataDisplay/table/tablePagination/tablePagination.js +0 -40
- package/dist/react-table/components/dataDisplay/table/tablePagination/tablePagination.js.map +0 -1
- package/dist/react-table/components/dataDisplay/table/tableRow.js +0 -20
- package/dist/react-table/components/dataDisplay/table/tableRow.js.map +0 -1
- package/dist/react-table/components/feedBack/message/message.js +0 -31
- package/dist/react-table/components/feedBack/message/message.js.map +0 -1
- package/dist/react-table/components/feedBack/progressIndicator/progressIndicator.js +0 -51
- package/dist/react-table/components/feedBack/progressIndicator/progressIndicator.js.map +0 -1
- package/dist/react-table/components/inputs/textField/textField.js +0 -125
- package/dist/react-table/components/inputs/textField/textField.js.map +0 -1
- package/dist/react-table/components/inputs/textField/textFieldAdornment.js +0 -25
- package/dist/react-table/components/inputs/textField/textFieldAdornment.js.map +0 -1
- package/dist/react-table/components/inputs/textField/textFieldWrapper.js +0 -50
- package/dist/react-table/components/inputs/textField/textFieldWrapper.js.map +0 -1
- package/dist/react-table/components/inputs/textField/utils.js +0 -11
- package/dist/react-table/components/inputs/textField/utils.js.map +0 -1
- package/dist/react-table/connects/rt/table/draggableHeader.js.map +0 -1
- package/dist/react-table/connects/rt/table/headerCellRenderer.js +0 -14
- package/dist/react-table/connects/rt/table/headerCellRenderer.js.map +0 -1
- package/dist/react-table/connects/rt/table/table.js +0 -180
- package/dist/react-table/connects/rt/table/table.js.map +0 -1
- package/dist/react-table/connects/rt/table/utils.js.map +0 -1
- package/dist/react-table/hooks/useForkRef.js +0 -13
- package/dist/react-table/hooks/useForkRef.js.map +0 -1
- package/dist/react-table/hooks/useSafeLayoutEffect.js +0 -6
- package/dist/react-table/hooks/useSafeLayoutEffect.js.map +0 -1
- package/dist/react-table/icons/config.js +0 -9
- package/dist/react-table/icons/config.js.map +0 -1
- package/dist/react-table/icons/registry.js +0 -12
- package/dist/react-table/icons/registry.js.map +0 -1
- package/dist/react-table/icons/store.js +0 -10
- package/dist/react-table/icons/store.js.map +0 -1
- package/dist/react-table/utils/setRef.js +0 -7
- package/dist/react-table/utils/setRef.js.map +0 -1
- package/dist/storybook/storyPlay.d.ts +0 -19
- /package/dist/{react-table/connects → connects}/rt/table/draggableHeader.js +0 -0
- /package/dist/{react-table/connects → connects}/rt/table/utils.js +0 -0
- /package/dist/{react-table/react-table.js → react-table.js} +0 -0
- /package/dist/{react-table/react-table.js.map → react-table.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdownMenu.js","sources":["../../../../../src/components/inputs/selectField/dropdownMenu.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { useVirtualList } from \"../../../hooks/useVirtualList\";\nimport { Menu, MenuDivider, MenuItem, MenuItemProps } from \"../../navigation/menu\";\nimport { TextField } from \"../textField\";\nimport ProgressIndicator from \"../../feedBack/progressIndicator/progressIndicator\";\nimport { createPortal } from \"react-dom\";\nimport { MenuFloatingProps } from \"../../navigation/menu/menuFloating\";\n\nexport interface DropdownItem {\n key?: string | number;\n text: string;\n value: string | number | undefined | null;\n helperText?: string;\n /** Disables selection of this option. */\n disabled?: boolean;\n /** Optional group label; consecutive items sharing it get a group header. */\n group?: string;\n}\n\nexport interface DropdownItemProps<T extends HTMLElement = HTMLElement> {\n menuMaxHeight?: number;\n menuMiddleware?: MenuFloatingProps[\"middleware\"];\n menuNoItemsMessage?: React.ReactNode;\n search?: boolean;\n onSearchInputChange?: (event: React.ChangeEvent<HTMLInputElement>, value: string | number | undefined) => void;\n items: DropdownItem[];\n searchValue?: string | number;\n isOpen: boolean;\n onClose: () => void;\n anchorElementRef: React.RefObject<T>;\n value?: undefined | null | string | number | (undefined | null | string | number)[];\n onItemClick: (event: React.SyntheticEvent, item: DropdownItem) => void;\n isLoading?: boolean;\n optionRenderer?: (args: MenuItemProps) => React.ReactNode;\n container?: HTMLElement;\n /** Renders a trailing \"create\" affordance (used by `creatable` SelectField). */\n createOption?: { text: React.ReactNode; onCreate: (event: React.SyntheticEvent) => void };\n /** Windows the option list for large datasets (fixed row height). */\n virtualized?: boolean;\n /** Row height (px) used when `virtualized`. */\n itemHeight?: number;\n}\n\nexport function DropdownMenu<T extends HTMLElement>({\n menuMaxHeight,\n menuMiddleware,\n search,\n onSearchInputChange,\n items,\n searchValue,\n isOpen,\n onClose,\n anchorElementRef,\n value,\n onItemClick,\n isLoading,\n optionRenderer,\n menuNoItemsMessage,\n container = document.body,\n createOption,\n virtualized,\n itemHeight = 40,\n}: DropdownItemProps<T>) {\n const valueArray = Array.isArray(value) ? value : [value];\n const hasGroups = items.some((i) => !!i.group);\n let lastGroup: string | undefined;\n\n const useVirtual = !!virtualized && !hasGroups && !isLoading && items.length > 0;\n const viewportHeight = menuMaxHeight || 240;\n const { startIndex, endIndex, totalHeight, offsetY, onScroll } = useVirtualList({\n itemCount: useVirtual ? items.length : 0,\n itemHeight,\n viewportHeight,\n });\n\n const renderItem = (el: DropdownItem) => {\n const node: React.ReactNode[] = [];\n if (hasGroups && el.group !== lastGroup) {\n lastGroup = el.group;\n node.push(\n <li key={`group-${el.group ?? \"ungrouped\"}`} className=\"smwb-select-field__group-label\" role=\"presentation\">\n {el.group}\n </li>\n );\n }\n node.push(\n <MenuItem\n key={el.key || el.value}\n value={el.value}\n disabled={el.disabled}\n selected={!!valueArray.find((v) => v === el.value)}\n onClick={(e: React.SyntheticEvent) => {\n if (!el.disabled) {\n onItemClick(e, el);\n }\n }}\n optionRenderer={optionRenderer}\n >\n {el.text}\n {el.helperText ? <span className=\"smwb-select-field__option__helper-text\">{el.helperText}</span> : null}\n </MenuItem>\n );\n return node;\n };\n const [menuMinWidth, setMenuMinWidth] = React.useState<number>();\n\n useEffect(() => {\n if (isOpen && anchorElementRef.current) {\n setMenuMinWidth(anchorElementRef.current.clientWidth);\n }\n }, [anchorElementRef, isOpen]);\n\n React.useEffect(() => {\n const onKeyDown = (event: KeyboardEvent) => {\n if (isOpen && event.key === \"Escape\") {\n onClose();\n }\n };\n\n document.addEventListener(\"keydown\", onKeyDown);\n\n return () => {\n document.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [isOpen, onClose]);\n\n return createPortal(\n <Menu\n isOpen={isOpen}\n onClose={onClose}\n anchorElement={anchorElementRef.current}\n middleware={menuMiddleware}\n data-smwb-overlay-layer=\"\"\n style={{\n minWidth: menuMinWidth,\n maxHeight: menuMaxHeight || undefined,\n overflowY: menuMaxHeight ? \"auto\" : undefined,\n }}\n >\n {search && (\n <>\n <li className=\"smwb-select-field__menu-search\">\n <TextField\n className=\"smwb-select-field__menu-search-input\"\n type=\"text\"\n placeholder=\"Найти...\"\n value={searchValue}\n onChange={(e, data) => onSearchInputChange?.(e, data.value)}\n fullWidth\n />\n </li>\n <MenuDivider />\n </>\n )}\n {isLoading ? (\n <div className=\"smwb-select-field__menu-loading\">\n <ProgressIndicator type=\"indeterminate\" variant=\"circular\" className=\"smwb-select-field__menu__loader\" />\n </div>\n ) : useVirtual ? (\n <li role=\"presentation\" className=\"smwb-select-field__virtual-viewport\">\n <div\n className=\"smwb-select-field__virtual-scroller\"\n style={{ maxHeight: viewportHeight, overflowY: \"auto\" }}\n onScroll={onScroll}\n >\n <div style={{ height: totalHeight, position: \"relative\" }}>\n <ul\n role=\"presentation\"\n className=\"smwb-select-field__virtual-list\"\n style={{ transform: `translateY(${offsetY}px)`, listStyle: \"none\", margin: 0, padding: 0 }}\n >\n {items.slice(startIndex, endIndex).map((el) => renderItem(el))}\n </ul>\n </div>\n </div>\n </li>\n ) : items.length ? (\n items.map((el) => renderItem(el))\n ) : !createOption ? (\n <li className=\"smwb-select-field__empty-items\">{menuNoItemsMessage || \"Опций не найдено.\"}</li>\n ) : null}\n {createOption ? (\n <MenuItem\n key=\"__create__\"\n value=\"__create__\"\n onClick={(e: React.SyntheticEvent) => createOption.onCreate(e)}\n className=\"smwb-select-field__create-option\"\n >\n {createOption.text}\n </MenuItem>\n ) : null}\n </Menu>,\n container\n );\n}\n"],"names":["DropdownMenu","menuMaxHeight","menuMiddleware","search","onSearchInputChange","items","searchValue","isOpen","onClose","anchorElementRef","value","onItemClick","isLoading","optionRenderer","menuNoItemsMessage","container","createOption","virtualized","itemHeight","valueArray","hasGroups","i","lastGroup","useVirtual","viewportHeight","startIndex","endIndex","totalHeight","offsetY","onScroll","useVirtualList","renderItem","el","node","jsx","_a","jsxs","MenuItem","v","e","menuMinWidth","setMenuMinWidth","React","useEffect","onKeyDown","event","createPortal","Menu","Fragment","TextField","data","MenuDivider","ProgressIndicator"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dropdownMenu.js","sources":["../../../../../src/components/inputs/selectField/dropdownMenu.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { useVirtualList } from \"../../../hooks/useVirtualList\";\nimport { useSafeLayoutEffect } from \"../../../hooks/useSafeLayoutEffect\";\nimport { Menu, MenuDivider, MenuItem, MenuItemProps } from \"../../navigation/menu\";\nimport { TextField } from \"../textField\";\nimport ProgressIndicator from \"../../feedBack/progressIndicator/progressIndicator\";\nimport { createPortal } from \"react-dom\";\nimport { MenuFloatingProps } from \"../../navigation/menu/menuFloating\";\n\nexport interface DropdownItem {\n key?: string | number;\n text: string;\n value: string | number | undefined | null;\n helperText?: string;\n /** Disables selection of this option. */\n disabled?: boolean;\n /** Optional group label; consecutive items sharing it get a group header. */\n group?: string;\n}\n\nexport interface DropdownItemProps<T extends HTMLElement = HTMLElement> {\n menuMaxHeight?: number;\n menuMiddleware?: MenuFloatingProps[\"middleware\"];\n menuNoItemsMessage?: React.ReactNode;\n search?: boolean;\n onSearchInputChange?: (event: React.ChangeEvent<HTMLInputElement>, value: string | number | undefined) => void;\n items: DropdownItem[];\n searchValue?: string | number;\n isOpen: boolean;\n onClose: () => void;\n anchorElementRef: React.RefObject<T>;\n value?: undefined | null | string | number | (undefined | null | string | number)[];\n onItemClick: (event: React.SyntheticEvent, item: DropdownItem) => void;\n isLoading?: boolean;\n optionRenderer?: (args: MenuItemProps) => React.ReactNode;\n container?: HTMLElement;\n /** Renders a trailing \"create\" affordance (used by `creatable` SelectField). */\n createOption?: { text: React.ReactNode; onCreate: (event: React.SyntheticEvent) => void };\n /** Windows the option list for large datasets (fixed row height). */\n virtualized?: boolean;\n /** Row height (px) used when `virtualized`. */\n itemHeight?: number;\n}\n\nexport function DropdownMenu<T extends HTMLElement>({\n menuMaxHeight,\n menuMiddleware,\n search,\n onSearchInputChange,\n items,\n searchValue,\n isOpen,\n onClose,\n anchorElementRef,\n value,\n onItemClick,\n isLoading,\n optionRenderer,\n menuNoItemsMessage,\n container,\n createOption,\n virtualized,\n itemHeight = 40,\n}: DropdownItemProps<T>) {\n const valueArray = Array.isArray(value) ? value : [value];\n const hasGroups = items.some((i) => !!i.group);\n let lastGroup: string | undefined;\n\n const useVirtual = !!virtualized && !hasGroups && !isLoading && items.length > 0;\n const viewportHeight = menuMaxHeight || 240;\n const { startIndex, endIndex, totalHeight, offsetY, onScroll } = useVirtualList({\n itemCount: useVirtual ? items.length : 0,\n itemHeight,\n viewportHeight,\n });\n\n const renderItem = (el: DropdownItem) => {\n const node: React.ReactNode[] = [];\n if (hasGroups && el.group !== lastGroup) {\n lastGroup = el.group;\n node.push(\n <li key={`group-${el.group ?? \"ungrouped\"}`} className=\"smwb-select-field__group-label\" role=\"presentation\">\n {el.group}\n </li>\n );\n }\n node.push(\n <MenuItem\n key={el.key || el.value}\n value={el.value}\n disabled={el.disabled}\n selected={!!valueArray.find((v) => v === el.value)}\n onClick={(e: React.SyntheticEvent) => {\n if (!el.disabled) {\n onItemClick(e, el);\n }\n }}\n optionRenderer={optionRenderer}\n >\n {el.text}\n {el.helperText ? <span className=\"smwb-select-field__option__helper-text\">{el.helperText}</span> : null}\n </MenuItem>\n );\n return node;\n };\n const [menuMinWidth, setMenuMinWidth] = React.useState<number>();\n // The menu is portalled: its target is resolved in the browser only. A server\n // render (no document) and the first client render emit nothing here, so the\n // select renders and hydrates on a server-rendered page.\n const [domRoot, setDomRoot] = useState<HTMLElement>();\n useSafeLayoutEffect(() => {\n setDomRoot(container ?? document.body);\n }, [container]);\n\n useEffect(() => {\n if (isOpen && anchorElementRef.current) {\n setMenuMinWidth(anchorElementRef.current.clientWidth);\n }\n }, [anchorElementRef, isOpen]);\n\n React.useEffect(() => {\n const onKeyDown = (event: KeyboardEvent) => {\n if (isOpen && event.key === \"Escape\") {\n onClose();\n }\n };\n\n document.addEventListener(\"keydown\", onKeyDown);\n\n return () => {\n document.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [isOpen, onClose]);\n\n if (!domRoot) {\n return null;\n }\n\n return createPortal(\n <Menu\n isOpen={isOpen}\n onClose={onClose}\n anchorElement={anchorElementRef.current}\n middleware={menuMiddleware}\n data-smwb-overlay-layer=\"\"\n style={{\n minWidth: menuMinWidth,\n maxHeight: menuMaxHeight || undefined,\n overflowY: menuMaxHeight ? \"auto\" : undefined,\n }}\n >\n {search && (\n <>\n <li className=\"smwb-select-field__menu-search\">\n <TextField\n className=\"smwb-select-field__menu-search-input\"\n type=\"text\"\n placeholder=\"Найти...\"\n value={searchValue}\n onChange={(e, data) => onSearchInputChange?.(e, data.value)}\n fullWidth\n />\n </li>\n <MenuDivider />\n </>\n )}\n {isLoading ? (\n <div className=\"smwb-select-field__menu-loading\">\n <ProgressIndicator type=\"indeterminate\" variant=\"circular\" className=\"smwb-select-field__menu__loader\" />\n </div>\n ) : useVirtual ? (\n <li role=\"presentation\" className=\"smwb-select-field__virtual-viewport\">\n <div\n className=\"smwb-select-field__virtual-scroller\"\n style={{ maxHeight: viewportHeight, overflowY: \"auto\" }}\n onScroll={onScroll}\n >\n <div style={{ height: totalHeight, position: \"relative\" }}>\n <ul\n role=\"presentation\"\n className=\"smwb-select-field__virtual-list\"\n style={{ transform: `translateY(${offsetY}px)`, listStyle: \"none\", margin: 0, padding: 0 }}\n >\n {items.slice(startIndex, endIndex).map((el) => renderItem(el))}\n </ul>\n </div>\n </div>\n </li>\n ) : items.length ? (\n items.map((el) => renderItem(el))\n ) : !createOption ? (\n <li className=\"smwb-select-field__empty-items\">{menuNoItemsMessage || \"Опций не найдено.\"}</li>\n ) : null}\n {createOption ? (\n <MenuItem\n key=\"__create__\"\n value=\"__create__\"\n onClick={(e: React.SyntheticEvent) => createOption.onCreate(e)}\n className=\"smwb-select-field__create-option\"\n >\n {createOption.text}\n </MenuItem>\n ) : null}\n </Menu>,\n domRoot\n );\n}\n"],"names":["DropdownMenu","menuMaxHeight","menuMiddleware","search","onSearchInputChange","items","searchValue","isOpen","onClose","anchorElementRef","value","onItemClick","isLoading","optionRenderer","menuNoItemsMessage","container","createOption","virtualized","itemHeight","valueArray","hasGroups","i","lastGroup","useVirtual","viewportHeight","startIndex","endIndex","totalHeight","offsetY","onScroll","useVirtualList","renderItem","el","node","jsx","_a","jsxs","MenuItem","v","e","menuMinWidth","setMenuMinWidth","React","domRoot","setDomRoot","useState","useSafeLayoutEffect","useEffect","onKeyDown","event","createPortal","Menu","Fragment","TextField","data","MenuDivider","ProgressIndicator"],"mappings":"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"}
|
|
@@ -1,71 +1,72 @@
|
|
|
1
|
-
import { jsx as a, jsxs as b, Fragment as
|
|
2
|
-
import { forwardRef as
|
|
3
|
-
import
|
|
4
|
-
import { useSafeLayoutEffect as
|
|
5
|
-
import { useForkRef as
|
|
6
|
-
import { DropdownMenu as
|
|
7
|
-
import { Chip as
|
|
8
|
-
import { Icon as
|
|
9
|
-
import { TextFieldWrapper as
|
|
10
|
-
const
|
|
11
|
-
function
|
|
1
|
+
import { jsx as a, jsxs as b, Fragment as Ne } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as Fe, useState as D, useRef as S, useMemo as Me, useEffect as U } from "react";
|
|
3
|
+
import C from "clsx";
|
|
4
|
+
import { useSafeLayoutEffect as Re } from "../../../hooks/useSafeLayoutEffect.js";
|
|
5
|
+
import { useForkRef as Ve } from "../../../hooks/useForkRef.js";
|
|
6
|
+
import { DropdownMenu as Ee } from "./dropdownMenu.js";
|
|
7
|
+
import { Chip as Le } from "../../dataDisplay/chip/chip.js";
|
|
8
|
+
import { Icon as G } from "../../base/icon/icon.js";
|
|
9
|
+
import { TextFieldWrapper as ke } from "../textField/textFieldWrapper.js";
|
|
10
|
+
const ze = (i) => /* @__PURE__ */ a(G, { name: "arrow_drop_down", ...i }), Pe = (i) => /* @__PURE__ */ a(G, { name: "close", size: 20, ...i });
|
|
11
|
+
function q(i) {
|
|
12
12
|
i.preventDefault(), i.stopPropagation();
|
|
13
13
|
}
|
|
14
|
-
const
|
|
14
|
+
const qe = Fe(function(L, J) {
|
|
15
15
|
const {
|
|
16
|
-
className:
|
|
16
|
+
className: k,
|
|
17
17
|
value: _,
|
|
18
|
-
defaultValue:
|
|
19
|
-
onChange:
|
|
18
|
+
defaultValue: z,
|
|
19
|
+
onChange: N,
|
|
20
20
|
disabled: f,
|
|
21
|
-
readOnly:
|
|
22
|
-
name:
|
|
21
|
+
readOnly: F,
|
|
22
|
+
name: Q,
|
|
23
23
|
multiple: P,
|
|
24
|
-
menuMaxHeight:
|
|
25
|
-
menuMiddleware:
|
|
26
|
-
menuNoItemsMessage:
|
|
27
|
-
menuContainer:
|
|
24
|
+
menuMaxHeight: X,
|
|
25
|
+
menuMiddleware: Y,
|
|
26
|
+
menuNoItemsMessage: Z,
|
|
27
|
+
menuContainer: ee,
|
|
28
28
|
search: c,
|
|
29
|
-
chips:
|
|
29
|
+
chips: se,
|
|
30
30
|
isFocused: K,
|
|
31
31
|
error: O,
|
|
32
32
|
items: r,
|
|
33
33
|
label: W,
|
|
34
34
|
variant: j = "outlined",
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
size: M = "medium",
|
|
36
|
+
fullWidth: le,
|
|
37
|
+
helperText: te,
|
|
37
38
|
onSearch: v,
|
|
38
39
|
resetSearch: y,
|
|
39
|
-
isLoading:
|
|
40
|
-
inline:
|
|
41
|
-
endAdornment:
|
|
42
|
-
hideSelectArrowIcon:
|
|
43
|
-
optionRenderer:
|
|
44
|
-
clearable:
|
|
45
|
-
creatable:
|
|
46
|
-
onCreate:
|
|
47
|
-
virtualized:
|
|
48
|
-
itemHeight:
|
|
49
|
-
"aria-label":
|
|
50
|
-
id:
|
|
51
|
-
...
|
|
52
|
-
} =
|
|
53
|
-
const e = _ != null ? _ :
|
|
40
|
+
isLoading: ne,
|
|
41
|
+
inline: H,
|
|
42
|
+
endAdornment: oe,
|
|
43
|
+
hideSelectArrowIcon: ae,
|
|
44
|
+
optionRenderer: re,
|
|
45
|
+
clearable: ie,
|
|
46
|
+
creatable: ce,
|
|
47
|
+
onCreate: R,
|
|
48
|
+
virtualized: ue,
|
|
49
|
+
itemHeight: de,
|
|
50
|
+
"aria-label": fe,
|
|
51
|
+
id: me,
|
|
52
|
+
...pe
|
|
53
|
+
} = L, [o, u] = D(!1), [we, he] = D(z), [m, p] = D(() => {
|
|
54
|
+
const e = _ != null ? _ : z;
|
|
54
55
|
if (Array.isArray(e))
|
|
55
56
|
return r.filter((t) => e.includes(t.value));
|
|
56
57
|
const s = e == null ? void 0 : r.find((t) => t.value === e);
|
|
57
58
|
return s ? [s] : [];
|
|
58
|
-
}), [n, x] = D(""), { current:
|
|
59
|
+
}), [n, x] = D(""), { current: be } = S(_ != null), h = S(null), _e = Ve(J, h), A = S(null), T = S(null), l = be ? _ : we, g = Me(() => K || o, [K, o]), ve = (e) => {
|
|
59
60
|
var s;
|
|
60
61
|
e.button === 0 && (e.preventDefault(), (s = h.current) == null || s.focus(), u(!o));
|
|
61
|
-
},
|
|
62
|
+
}, ye = () => {
|
|
62
63
|
var e;
|
|
63
64
|
u(!1), (e = h.current) == null || e.focus();
|
|
64
|
-
},
|
|
65
|
+
}, xe = () => {
|
|
65
66
|
var e;
|
|
66
|
-
c === !0 && ((e =
|
|
67
|
-
},
|
|
68
|
-
|
|
67
|
+
c === !0 && ((e = T.current) == null || e.focus());
|
|
68
|
+
}, Ae = (e) => {
|
|
69
|
+
F || [" ", "ArrowUp", "ArrowDown", "Enter"].includes(e.key) && (e.preventDefault(), u(!o));
|
|
69
70
|
};
|
|
70
71
|
U(() => {
|
|
71
72
|
(!g || c === "menu" && !o) && (x(""), y == null || y());
|
|
@@ -78,85 +79,94 @@ const $e = Ne(function(E, G) {
|
|
|
78
79
|
const e = r.find((s) => s.value === l);
|
|
79
80
|
p(e ? [e] : []);
|
|
80
81
|
}
|
|
81
|
-
}, [l, r]),
|
|
82
|
+
}, [l, r]), Re(() => {
|
|
82
83
|
A.current && (A.current.scrollLeft = A.current.scrollWidth);
|
|
83
84
|
}, [l]);
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
},
|
|
85
|
+
const V = (e, s) => {
|
|
86
|
+
N == null || N(e, { ...L, value: s, name: Q || void 0 }), he(s);
|
|
87
|
+
}, ge = (e, s) => {
|
|
87
88
|
var w;
|
|
88
89
|
let t, d;
|
|
89
90
|
if (P) {
|
|
90
91
|
const B = Array.isArray(l) ? l : [l].filter(Boolean);
|
|
91
92
|
t = B.slice(), d = m.slice();
|
|
92
|
-
const
|
|
93
|
-
|
|
93
|
+
const E = B.findIndex((Ce) => Ce === s.value);
|
|
94
|
+
E === -1 ? (t.push(s.value), d.push(s)) : (t.splice(E, 1), d.splice(E, 1));
|
|
94
95
|
} else
|
|
95
96
|
t = l === s.value ? "" : s.value, d = [s];
|
|
96
|
-
n && x(""), P || (u(!1), (w = h.current) == null || w.focus()), p(d),
|
|
97
|
-
},
|
|
97
|
+
n && x(""), P || (u(!1), (w = h.current) == null || w.focus()), p(d), V(e, t);
|
|
98
|
+
}, $ = (e) => {
|
|
98
99
|
x(e.target.value), v == null || v(e), o || u(!0);
|
|
99
|
-
},
|
|
100
|
+
}, Ie = (e) => (s) => {
|
|
100
101
|
if (Array.isArray(l)) {
|
|
101
102
|
const t = l.filter((w) => e !== w);
|
|
102
|
-
|
|
103
|
+
V(s, t);
|
|
103
104
|
const d = m.filter((w) => w.value !== e);
|
|
104
105
|
p(d);
|
|
105
106
|
}
|
|
106
|
-
},
|
|
107
|
-
|
|
107
|
+
}, De = (e) => {
|
|
108
|
+
V(e, []), p([]);
|
|
108
109
|
};
|
|
109
110
|
let I;
|
|
110
|
-
const
|
|
111
|
+
const Se = C("smwb-select-field", k, {
|
|
111
112
|
"smwb-select-field--filled": j === "filled" && W,
|
|
112
113
|
"smwb-select-field--disabled": f,
|
|
113
114
|
"smwb-select-field--search": c,
|
|
114
|
-
"smwb-select-field--inline":
|
|
115
|
+
"smwb-select-field--inline": H
|
|
115
116
|
});
|
|
116
|
-
return
|
|
117
|
+
return se ? I = m.map(({ key: e, value: s, text: t }) => /* @__PURE__ */ a(
|
|
118
|
+
Le,
|
|
119
|
+
{
|
|
120
|
+
label: t,
|
|
121
|
+
size: M === "small" ? "small" : "medium",
|
|
122
|
+
onDelete: Ie(s),
|
|
123
|
+
onDeleteMouseDown: q
|
|
124
|
+
},
|
|
125
|
+
e || s
|
|
126
|
+
)) : I = m.map((e) => e.text).join(", "), /* @__PURE__ */ b(Ne, { children: [
|
|
117
127
|
/* @__PURE__ */ a(
|
|
118
|
-
|
|
128
|
+
ke,
|
|
119
129
|
{
|
|
120
130
|
label: W,
|
|
121
|
-
helperText:
|
|
131
|
+
helperText: te,
|
|
122
132
|
variant: j,
|
|
123
133
|
disabled: f,
|
|
124
|
-
className:
|
|
134
|
+
className: C(k, M !== "medium" && `smwb-text-field_size-${M}`),
|
|
125
135
|
error: O,
|
|
126
|
-
fullWidth:
|
|
136
|
+
fullWidth: le,
|
|
127
137
|
isFilledState: !!m.length || !!n,
|
|
128
138
|
isFocused: g,
|
|
129
|
-
inline:
|
|
130
|
-
...
|
|
139
|
+
inline: H,
|
|
140
|
+
...pe,
|
|
131
141
|
children: /* @__PURE__ */ b(
|
|
132
142
|
"span",
|
|
133
143
|
{
|
|
134
|
-
ref:
|
|
135
|
-
id:
|
|
136
|
-
className:
|
|
144
|
+
ref: _e,
|
|
145
|
+
id: me,
|
|
146
|
+
className: Se,
|
|
137
147
|
tabIndex: f ? void 0 : 0,
|
|
138
148
|
role: "button",
|
|
139
149
|
"aria-haspopup": "listbox",
|
|
140
150
|
"aria-expanded": o,
|
|
141
151
|
"aria-disabled": f || void 0,
|
|
142
|
-
"aria-label":
|
|
143
|
-
onMouseDown: f ||
|
|
144
|
-
onFocus:
|
|
145
|
-
onKeyDown:
|
|
152
|
+
"aria-label": fe,
|
|
153
|
+
onMouseDown: f || F ? void 0 : ve,
|
|
154
|
+
onFocus: xe,
|
|
155
|
+
onKeyDown: Ae,
|
|
146
156
|
"data-testid": "select-field",
|
|
147
157
|
children: [
|
|
148
158
|
/* @__PURE__ */ b("span", { className: "smwb-select-field__search-wrapper", ref: A, children: [
|
|
149
159
|
I && /* @__PURE__ */ a("span", { className: "smwb-select-field__values", children: I }),
|
|
150
|
-
c && typeof c == "boolean" && !
|
|
160
|
+
c && typeof c == "boolean" && !F && /* @__PURE__ */ b("span", { className: "smwb-select-field__search", children: [
|
|
151
161
|
/* @__PURE__ */ a("span", { className: "smwb-select-field__search-text", children: n }),
|
|
152
162
|
/* @__PURE__ */ a(
|
|
153
163
|
"input",
|
|
154
164
|
{
|
|
155
165
|
className: "smwb-select-field__search-input",
|
|
156
|
-
ref:
|
|
166
|
+
ref: T,
|
|
157
167
|
type: "text",
|
|
158
168
|
value: n,
|
|
159
|
-
onChange:
|
|
169
|
+
onChange: $,
|
|
160
170
|
onMouseDown: (e) => {
|
|
161
171
|
e.stopPropagation(), u(!0);
|
|
162
172
|
},
|
|
@@ -169,21 +179,21 @@ const $e = Ne(function(E, G) {
|
|
|
169
179
|
] })
|
|
170
180
|
] }),
|
|
171
181
|
/* @__PURE__ */ b("span", { className: "smwb-select-field__actions", children: [
|
|
172
|
-
(Array.isArray(l) && l.length > 0 ||
|
|
182
|
+
(Array.isArray(l) && l.length > 0 || ie && m.length > 0) && !f && /* @__PURE__ */ a(
|
|
173
183
|
Pe,
|
|
174
184
|
{
|
|
175
|
-
onClick:
|
|
176
|
-
onMouseDown:
|
|
177
|
-
className:
|
|
185
|
+
onClick: De,
|
|
186
|
+
onMouseDown: q,
|
|
187
|
+
className: C("smwb-select-field__icon", "smwb-select-field__icon--close"),
|
|
178
188
|
"aria-label": "Clear selection",
|
|
179
189
|
role: "button"
|
|
180
190
|
}
|
|
181
191
|
),
|
|
182
|
-
|
|
183
|
-
!
|
|
184
|
-
|
|
192
|
+
oe,
|
|
193
|
+
!ae && /* @__PURE__ */ a(
|
|
194
|
+
ze,
|
|
185
195
|
{
|
|
186
|
-
className:
|
|
196
|
+
className: C("smwb-select-field__icon", "smwb-select-field__icon--arrow", {
|
|
187
197
|
"smwb-select-field__icon--opened": o,
|
|
188
198
|
"smwb-select-field__icon--focused": g,
|
|
189
199
|
"smwb-select-field__icon--error": O
|
|
@@ -197,29 +207,29 @@ const $e = Ne(function(E, G) {
|
|
|
197
207
|
}
|
|
198
208
|
),
|
|
199
209
|
/* @__PURE__ */ a(
|
|
200
|
-
|
|
210
|
+
Ee,
|
|
201
211
|
{
|
|
202
212
|
anchorElementRef: h,
|
|
203
|
-
menuMaxHeight:
|
|
204
|
-
menuMiddleware:
|
|
213
|
+
menuMaxHeight: X,
|
|
214
|
+
menuMiddleware: Y,
|
|
205
215
|
search: c === "menu",
|
|
206
|
-
onSearchInputChange:
|
|
207
|
-
optionRenderer:
|
|
216
|
+
onSearchInputChange: $,
|
|
217
|
+
optionRenderer: re,
|
|
208
218
|
items: v ? r : n ? r.filter((e) => e.text.search(new RegExp(n, "i")) !== -1) : r,
|
|
209
219
|
searchValue: n,
|
|
210
220
|
isOpen: o,
|
|
211
|
-
onClose:
|
|
212
|
-
onItemClick:
|
|
221
|
+
onClose: ye,
|
|
222
|
+
onItemClick: ge,
|
|
213
223
|
value: l,
|
|
214
|
-
isLoading:
|
|
215
|
-
menuNoItemsMessage:
|
|
216
|
-
container:
|
|
217
|
-
virtualized:
|
|
218
|
-
itemHeight:
|
|
219
|
-
createOption:
|
|
224
|
+
isLoading: ne,
|
|
225
|
+
menuNoItemsMessage: Z,
|
|
226
|
+
container: ee,
|
|
227
|
+
virtualized: ue,
|
|
228
|
+
itemHeight: de,
|
|
229
|
+
createOption: ce && n && !r.some((e) => e.text.toLowerCase() === String(n).toLowerCase()) ? {
|
|
220
230
|
text: `Создать "${n}"`,
|
|
221
231
|
onCreate: (e) => {
|
|
222
|
-
|
|
232
|
+
R == null || R(String(n), e), x(""), u(!1);
|
|
223
233
|
}
|
|
224
234
|
} : void 0
|
|
225
235
|
}
|
|
@@ -227,6 +237,6 @@ const $e = Ne(function(E, G) {
|
|
|
227
237
|
] });
|
|
228
238
|
});
|
|
229
239
|
export {
|
|
230
|
-
|
|
240
|
+
qe as SelectField
|
|
231
241
|
};
|
|
232
242
|
//# sourceMappingURL=selectField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectField.js","sources":["../../../../../src/components/inputs/selectField/selectField.tsx"],"sourcesContent":["import type { HTMLAttributes, SyntheticEvent } from \"react\";\nimport React, { useState, useRef, useEffect, useMemo, forwardRef } from \"react\";\nimport cn from \"clsx\";\nimport { useSafeLayoutEffect } from \"../../../hooks/useSafeLayoutEffect\";\nimport { useForkRef } from \"../../../hooks/useForkRef\";\nimport { DropdownMenu, DropdownItem, DropdownItemProps } from \"./dropdownMenu\";\nimport Chip from \"../../dataDisplay/chip/chip\";\nimport { TextFieldWrapper } from \"../textField\";\nimport Icon from \"../../base/icon/icon\";\nimport { MenuItemProps } from \"../../navigation/menu\";\n\nconst SelectArrowIcon = (props: HTMLAttributes<HTMLSpanElement>) => <Icon name=\"arrow_drop_down\" {...props} />;\n\nconst ClearIcon = (props: HTMLAttributes<HTMLSpanElement>) => <Icon name=\"close\" size={20} {...props} />;\n\nfunction stopEvent(event: React.SyntheticEvent) {\n event.preventDefault();\n event.stopPropagation();\n}\n\nexport type OnSelectChange = (e: SyntheticEvent, data: SelectFieldProps) => void;\n\nexport interface SelectFieldProps {\n className?: string;\n value?: null | string | number | (string | number | undefined | null)[];\n defaultValue?: null | string | number | (string | number)[];\n onChange?: OnSelectChange;\n disabled?: boolean;\n readOnly?: boolean;\n name?: string;\n multiple?: boolean;\n menuMaxHeight?: number;\n menuMiddleware?: DropdownItemProps[\"menuMiddleware\"];\n menuNoItemsMessage?: React.ReactNode;\n menuContainer?: HTMLElement;\n search?: true | false | \"menu\";\n chips?: boolean;\n isFocused?: boolean;\n error?: boolean;\n items: DropdownItem[];\n label?: string;\n variant?: \"outlined\" | \"filled\";\n fullWidth?: boolean;\n helperText?: React.ReactNode;\n onSearch?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n isLoading?: boolean;\n resetSearch?: () => void;\n inline?: boolean;\n endAdornment?: React.ReactNode;\n hideSelectArrowIcon?: boolean;\n optionRenderer?: (args: MenuItemProps) => React.ReactNode;\n /** Shows a clear button to reset the selection. */\n clearable?: boolean;\n /** Allows creating a new option from the current search text. */\n creatable?: boolean;\n /** Invoked with the typed text when the user creates a new option. */\n onCreate?: (inputValue: string, event: React.SyntheticEvent) => void;\n /** Windows long option lists for performance (fixed row height). */\n virtualized?: boolean;\n /** Row height (px) used when `virtualized`. */\n itemHeight?: number;\n /** Accessible label for the combobox control. */\n \"aria-label\"?: string;\n id?: string;\n}\n\nexport const SelectField = forwardRef<HTMLSpanElement, SelectFieldProps>(function SelectField(props, ref) {\n const {\n className,\n value: valueProp,\n defaultValue,\n onChange,\n disabled,\n readOnly,\n name,\n multiple,\n menuMaxHeight,\n menuMiddleware,\n menuNoItemsMessage,\n menuContainer,\n search,\n chips,\n isFocused: isFocusedProp,\n error,\n items,\n label,\n variant = \"outlined\",\n fullWidth,\n helperText,\n onSearch,\n resetSearch,\n isLoading,\n inline,\n endAdornment,\n hideSelectArrowIcon,\n optionRenderer,\n clearable,\n creatable,\n onCreate,\n virtualized,\n itemHeight,\n \"aria-label\": ariaLabel,\n id,\n ...rest\n } = props;\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [valueState, setValueState] = useState<typeof valueProp>(defaultValue);\n const [selectedItems, setSelectedItems] = useState<typeof items>(() => {\n // Seed from the effective initial value so an uncontrolled `defaultValue`\n // shows its selection (and floats the label) before any interaction.\n const initialValue = valueProp != null ? valueProp : defaultValue;\n\n if (Array.isArray(initialValue)) {\n return items.filter((item) => initialValue.includes(item.value));\n }\n\n const item = initialValue == null ? undefined : items.find((i) => i.value === initialValue);\n\n return item ? [item] : [];\n });\n const [searchValue, setSearchValue] = useState(\"\");\n const { current: isControlled } = useRef(valueProp != null);\n const anchorElementRef = useRef<HTMLSpanElement>(null);\n const forkedAnchorRef = useForkRef<HTMLSpanElement>(ref, anchorElementRef);\n const searchWrapperRef = useRef<HTMLSpanElement>(null);\n const searchInputRef = useRef<HTMLInputElement>(null);\n const value = isControlled ? valueProp : valueState;\n\n const isFocused = useMemo(() => isFocusedProp || isOpen, [isFocusedProp, isOpen]);\n\n const onMouseDown = (event: React.MouseEvent<HTMLDivElement>) => {\n // Только для левой клавиши мышки.\n if (event.button !== 0) {\n return;\n }\n event.preventDefault();\n anchorElementRef.current?.focus();\n setIsOpen(!isOpen);\n };\n\n const onClose = () => {\n setIsOpen(false);\n anchorElementRef.current?.focus();\n };\n\n const onFocus = () => {\n if (search === true) {\n searchInputRef.current?.focus();\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!readOnly) {\n const validKeys = [\" \", \"ArrowUp\", \"ArrowDown\", \"Enter\"];\n\n if (validKeys.includes(event.key)) {\n event.preventDefault();\n setIsOpen(!isOpen);\n }\n }\n };\n\n useEffect(() => {\n if (!isFocused || (search === \"menu\" && !isOpen)) {\n setSearchValue(\"\");\n resetSearch?.();\n }\n }, [isFocused, search, isOpen, resetSearch]);\n\n // Keep the displayed selection in sync with the effective value (controlled\n // `value` or uncontrolled `defaultValue`/internal state), so the label floats\n // whenever there is a value — including the initial default, without focus.\n useEffect(() => {\n if (Array.isArray(value)) {\n setSelectedItems(items.filter((item) => value.includes(item.value)));\n } else if (value == null || value === \"\") {\n setSelectedItems([]);\n } else {\n const item = items.find((item) => item.value === value);\n setSelectedItems(item ? [item] : []);\n }\n }, [value, items]);\n\n useSafeLayoutEffect(() => {\n if (searchWrapperRef.current) {\n searchWrapperRef.current.scrollLeft = searchWrapperRef.current.scrollWidth;\n }\n }, [value]);\n\n const updateValue = (event: React.SyntheticEvent, value: typeof valueProp) => {\n onChange?.(event, { ...props, value, name: name || undefined });\n setValueState(value);\n };\n\n const onItemClick = (event: React.SyntheticEvent, item: DropdownItem) => {\n let newValue: typeof valueProp;\n let newSelectedItem: typeof selectedItems;\n if (multiple) {\n const valueArray = Array.isArray(value) ? value : [value].filter(Boolean);\n newValue = valueArray.slice();\n newSelectedItem = selectedItems.slice();\n const itemIndex = valueArray.findIndex((el) => el === item.value);\n\n if (itemIndex === -1) {\n newValue.push(item.value);\n newSelectedItem.push(item);\n } else {\n newValue.splice(itemIndex, 1);\n newSelectedItem.splice(itemIndex, 1);\n }\n } else {\n newValue = value === item.value ? \"\" : item.value;\n newSelectedItem = [item];\n }\n\n if (searchValue) {\n setSearchValue(\"\");\n }\n\n if (!multiple) {\n setIsOpen(false);\n anchorElementRef.current?.focus();\n }\n setSelectedItems(newSelectedItem);\n updateValue(event, newValue);\n };\n\n const onSearchInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setSearchValue(event.target.value);\n onSearch?.(event);\n if (!isOpen) {\n setIsOpen(true);\n }\n };\n\n const onDeleteChip = (currentValue: typeof valueProp) => (event: React.SyntheticEvent) => {\n if (Array.isArray(value)) {\n const newValue = value.filter((value) => currentValue !== value);\n updateValue(event, newValue);\n const newSelectedItems = selectedItems.filter((el) => el.value !== currentValue);\n setSelectedItems(newSelectedItems);\n }\n };\n\n const onResetSelected = (event: React.MouseEvent) => {\n updateValue(event, []);\n setSelectedItems([]);\n };\n\n let displayValues: string | React.ReactNode[];\n\n const classes = cn(\"smwb-select-field\", className, {\n \"smwb-select-field--filled\": variant === \"filled\" && label,\n \"smwb-select-field--disabled\": disabled,\n \"smwb-select-field--search\": search,\n \"smwb-select-field--inline\": inline,\n });\n\n if (chips) {\n displayValues = selectedItems.map(({ key, value, text }) => (\n <Chip key={key || value} label={text} onDelete={onDeleteChip(value)} onDeleteMouseDown={stopEvent} />\n ));\n } else {\n displayValues = selectedItems.map((el) => el.text).join(\", \");\n }\n\n return (\n <>\n <TextFieldWrapper\n label={label}\n helperText={helperText}\n variant={variant}\n disabled={disabled}\n className={className}\n error={error}\n fullWidth={fullWidth}\n isFilledState={!!selectedItems.length || !!searchValue}\n isFocused={isFocused}\n inline={inline}\n {...rest}\n >\n <span\n ref={forkedAnchorRef}\n id={id}\n className={classes}\n tabIndex={disabled ? undefined : 0}\n role=\"button\"\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-disabled={disabled || undefined}\n aria-label={ariaLabel}\n onMouseDown={disabled || readOnly ? undefined : onMouseDown}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n data-testid=\"select-field\"\n >\n <span className=\"smwb-select-field__search-wrapper\" ref={searchWrapperRef}>\n {displayValues && <span className=\"smwb-select-field__values\">{displayValues}</span>}\n {search && typeof search === \"boolean\" && !readOnly && (\n <span className=\"smwb-select-field__search\">\n <span className=\"smwb-select-field__search-text\">{searchValue}</span>\n <input\n className=\"smwb-select-field__search-input\"\n ref={searchInputRef}\n type=\"text\"\n value={searchValue}\n onChange={onSearchInputChange}\n onMouseDown={(event: React.MouseEvent<HTMLInputElement>) => {\n event.stopPropagation();\n setIsOpen(true);\n }}\n onKeyDown={(event) => {\n event.stopPropagation();\n }}\n data-testid=\"search-input\"\n />\n </span>\n )}\n </span>\n <span className=\"smwb-select-field__actions\">\n {((Array.isArray(value) && value.length > 0) || (clearable && selectedItems.length > 0)) && !disabled && (\n <ClearIcon\n onClick={onResetSelected}\n onMouseDown={stopEvent}\n className={cn(\"smwb-select-field__icon\", \"smwb-select-field__icon--close\")}\n aria-label=\"Clear selection\"\n role=\"button\"\n />\n )}\n {endAdornment}\n {!hideSelectArrowIcon && (\n <SelectArrowIcon\n className={cn(\"smwb-select-field__icon\", \"smwb-select-field__icon--arrow\", {\n \"smwb-select-field__icon--opened\": isOpen,\n \"smwb-select-field__icon--focused\": isFocused,\n \"smwb-select-field__icon--error\": error,\n })}\n />\n )}\n </span>\n </span>\n </TextFieldWrapper>\n <DropdownMenu\n anchorElementRef={anchorElementRef}\n menuMaxHeight={menuMaxHeight}\n menuMiddleware={menuMiddleware}\n search={search === \"menu\"}\n onSearchInputChange={onSearchInputChange}\n optionRenderer={optionRenderer}\n items={\n onSearch\n ? items\n : searchValue\n ? items.filter((el) => el.text.search(new RegExp(searchValue, \"i\")) !== -1)\n : items\n }\n searchValue={searchValue}\n isOpen={isOpen}\n onClose={onClose}\n onItemClick={onItemClick}\n value={value}\n isLoading={isLoading}\n menuNoItemsMessage={menuNoItemsMessage}\n container={menuContainer}\n virtualized={virtualized}\n itemHeight={itemHeight}\n createOption={\n creatable && searchValue && !items.some((i) => i.text.toLowerCase() === String(searchValue).toLowerCase())\n ? {\n text: `Создать \"${searchValue}\"`,\n onCreate: (event: React.SyntheticEvent) => {\n onCreate?.(String(searchValue), event);\n setSearchValue(\"\");\n setIsOpen(false);\n },\n }\n : undefined\n }\n />\n </>\n );\n});\n\nexport default SelectField;\n"],"names":["SelectArrowIcon","props","jsx","Icon","ClearIcon","stopEvent","event","SelectField","forwardRef","ref","className","valueProp","defaultValue","onChange","disabled","readOnly","name","multiple","menuMaxHeight","menuMiddleware","menuNoItemsMessage","menuContainer","search","chips","isFocusedProp","error","items","label","variant","fullWidth","helperText","onSearch","resetSearch","isLoading","inline","endAdornment","hideSelectArrowIcon","optionRenderer","clearable","creatable","onCreate","virtualized","itemHeight","ariaLabel","id","rest","isOpen","setIsOpen","useState","valueState","setValueState","selectedItems","setSelectedItems","initialValue","item","i","searchValue","setSearchValue","isControlled","useRef","anchorElementRef","forkedAnchorRef","useForkRef","searchWrapperRef","searchInputRef","value","isFocused","useMemo","onMouseDown","_a","onClose","onFocus","onKeyDown","useEffect","useSafeLayoutEffect","updateValue","onItemClick","newValue","newSelectedItem","valueArray","itemIndex","el","onSearchInputChange","onDeleteChip","currentValue","newSelectedItems","onResetSelected","displayValues","classes","cn","key","text","Chip","jsxs","Fragment","TextFieldWrapper","DropdownMenu"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"selectField.js","sources":["../../../../../src/components/inputs/selectField/selectField.tsx"],"sourcesContent":["import type { HTMLAttributes, SyntheticEvent } from \"react\";\nimport React, { useState, useRef, useEffect, useMemo, forwardRef } from \"react\";\nimport cn from \"clsx\";\nimport { useSafeLayoutEffect } from \"../../../hooks/useSafeLayoutEffect\";\nimport { useForkRef } from \"../../../hooks/useForkRef\";\nimport { DropdownMenu, DropdownItem, DropdownItemProps } from \"./dropdownMenu\";\nimport Chip from \"../../dataDisplay/chip/chip\";\nimport { TextFieldWrapper } from \"../textField\";\nimport Icon from \"../../base/icon/icon\";\nimport { MenuItemProps } from \"../../navigation/menu\";\n\nconst SelectArrowIcon = (props: HTMLAttributes<HTMLSpanElement>) => <Icon name=\"arrow_drop_down\" {...props} />;\n\nconst ClearIcon = (props: HTMLAttributes<HTMLSpanElement>) => <Icon name=\"close\" size={20} {...props} />;\n\nfunction stopEvent(event: React.SyntheticEvent) {\n event.preventDefault();\n event.stopPropagation();\n}\n\nexport type OnSelectChange = (e: SyntheticEvent, data: SelectFieldProps) => void;\n\nexport interface SelectFieldProps {\n className?: string;\n value?: null | string | number | (string | number | undefined | null)[];\n defaultValue?: null | string | number | (string | number)[];\n onChange?: OnSelectChange;\n disabled?: boolean;\n readOnly?: boolean;\n name?: string;\n multiple?: boolean;\n menuMaxHeight?: number;\n menuMiddleware?: DropdownItemProps[\"menuMiddleware\"];\n menuNoItemsMessage?: React.ReactNode;\n menuContainer?: HTMLElement;\n search?: true | false | \"menu\";\n chips?: boolean;\n isFocused?: boolean;\n error?: boolean;\n items: DropdownItem[];\n label?: string;\n variant?: \"outlined\" | \"filled\";\n /** Height of the field, as for TextField: `small` (40px, for toolbars), `medium` (default) or `large`. */\n size?: \"small\" | \"medium\" | \"large\";\n fullWidth?: boolean;\n helperText?: React.ReactNode;\n onSearch?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n isLoading?: boolean;\n resetSearch?: () => void;\n inline?: boolean;\n endAdornment?: React.ReactNode;\n hideSelectArrowIcon?: boolean;\n optionRenderer?: (args: MenuItemProps) => React.ReactNode;\n /** Shows a clear button to reset the selection. */\n clearable?: boolean;\n /** Allows creating a new option from the current search text. */\n creatable?: boolean;\n /** Invoked with the typed text when the user creates a new option. */\n onCreate?: (inputValue: string, event: React.SyntheticEvent) => void;\n /** Windows long option lists for performance (fixed row height). */\n virtualized?: boolean;\n /** Row height (px) used when `virtualized`. */\n itemHeight?: number;\n /** Accessible label for the combobox control. */\n \"aria-label\"?: string;\n id?: string;\n}\n\nexport const SelectField = forwardRef<HTMLSpanElement, SelectFieldProps>(function SelectField(props, ref) {\n const {\n className,\n value: valueProp,\n defaultValue,\n onChange,\n disabled,\n readOnly,\n name,\n multiple,\n menuMaxHeight,\n menuMiddleware,\n menuNoItemsMessage,\n menuContainer,\n search,\n chips,\n isFocused: isFocusedProp,\n error,\n items,\n label,\n variant = \"outlined\",\n size = \"medium\",\n fullWidth,\n helperText,\n onSearch,\n resetSearch,\n isLoading,\n inline,\n endAdornment,\n hideSelectArrowIcon,\n optionRenderer,\n clearable,\n creatable,\n onCreate,\n virtualized,\n itemHeight,\n \"aria-label\": ariaLabel,\n id,\n ...rest\n } = props;\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [valueState, setValueState] = useState<typeof valueProp>(defaultValue);\n const [selectedItems, setSelectedItems] = useState<typeof items>(() => {\n // Seed from the effective initial value so an uncontrolled `defaultValue`\n // shows its selection (and floats the label) before any interaction.\n const initialValue = valueProp != null ? valueProp : defaultValue;\n\n if (Array.isArray(initialValue)) {\n return items.filter((item) => initialValue.includes(item.value));\n }\n\n const item = initialValue == null ? undefined : items.find((i) => i.value === initialValue);\n\n return item ? [item] : [];\n });\n const [searchValue, setSearchValue] = useState(\"\");\n const { current: isControlled } = useRef(valueProp != null);\n const anchorElementRef = useRef<HTMLSpanElement>(null);\n const forkedAnchorRef = useForkRef<HTMLSpanElement>(ref, anchorElementRef);\n const searchWrapperRef = useRef<HTMLSpanElement>(null);\n const searchInputRef = useRef<HTMLInputElement>(null);\n const value = isControlled ? valueProp : valueState;\n\n const isFocused = useMemo(() => isFocusedProp || isOpen, [isFocusedProp, isOpen]);\n\n const onMouseDown = (event: React.MouseEvent<HTMLDivElement>) => {\n // Только для левой клавиши мышки.\n if (event.button !== 0) {\n return;\n }\n event.preventDefault();\n anchorElementRef.current?.focus();\n setIsOpen(!isOpen);\n };\n\n const onClose = () => {\n setIsOpen(false);\n anchorElementRef.current?.focus();\n };\n\n const onFocus = () => {\n if (search === true) {\n searchInputRef.current?.focus();\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!readOnly) {\n const validKeys = [\" \", \"ArrowUp\", \"ArrowDown\", \"Enter\"];\n\n if (validKeys.includes(event.key)) {\n event.preventDefault();\n setIsOpen(!isOpen);\n }\n }\n };\n\n useEffect(() => {\n if (!isFocused || (search === \"menu\" && !isOpen)) {\n setSearchValue(\"\");\n resetSearch?.();\n }\n }, [isFocused, search, isOpen, resetSearch]);\n\n // Keep the displayed selection in sync with the effective value (controlled\n // `value` or uncontrolled `defaultValue`/internal state), so the label floats\n // whenever there is a value — including the initial default, without focus.\n useEffect(() => {\n if (Array.isArray(value)) {\n setSelectedItems(items.filter((item) => value.includes(item.value)));\n } else if (value == null || value === \"\") {\n setSelectedItems([]);\n } else {\n const item = items.find((item) => item.value === value);\n setSelectedItems(item ? [item] : []);\n }\n }, [value, items]);\n\n useSafeLayoutEffect(() => {\n if (searchWrapperRef.current) {\n searchWrapperRef.current.scrollLeft = searchWrapperRef.current.scrollWidth;\n }\n }, [value]);\n\n const updateValue = (event: React.SyntheticEvent, value: typeof valueProp) => {\n onChange?.(event, { ...props, value, name: name || undefined });\n setValueState(value);\n };\n\n const onItemClick = (event: React.SyntheticEvent, item: DropdownItem) => {\n let newValue: typeof valueProp;\n let newSelectedItem: typeof selectedItems;\n if (multiple) {\n const valueArray = Array.isArray(value) ? value : [value].filter(Boolean);\n newValue = valueArray.slice();\n newSelectedItem = selectedItems.slice();\n const itemIndex = valueArray.findIndex((el) => el === item.value);\n\n if (itemIndex === -1) {\n newValue.push(item.value);\n newSelectedItem.push(item);\n } else {\n newValue.splice(itemIndex, 1);\n newSelectedItem.splice(itemIndex, 1);\n }\n } else {\n newValue = value === item.value ? \"\" : item.value;\n newSelectedItem = [item];\n }\n\n if (searchValue) {\n setSearchValue(\"\");\n }\n\n if (!multiple) {\n setIsOpen(false);\n anchorElementRef.current?.focus();\n }\n setSelectedItems(newSelectedItem);\n updateValue(event, newValue);\n };\n\n const onSearchInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setSearchValue(event.target.value);\n onSearch?.(event);\n if (!isOpen) {\n setIsOpen(true);\n }\n };\n\n const onDeleteChip = (currentValue: typeof valueProp) => (event: React.SyntheticEvent) => {\n if (Array.isArray(value)) {\n const newValue = value.filter((value) => currentValue !== value);\n updateValue(event, newValue);\n const newSelectedItems = selectedItems.filter((el) => el.value !== currentValue);\n setSelectedItems(newSelectedItems);\n }\n };\n\n const onResetSelected = (event: React.MouseEvent) => {\n updateValue(event, []);\n setSelectedItems([]);\n };\n\n let displayValues: string | React.ReactNode[];\n\n const classes = cn(\"smwb-select-field\", className, {\n \"smwb-select-field--filled\": variant === \"filled\" && label,\n \"smwb-select-field--disabled\": disabled,\n \"smwb-select-field--search\": search,\n \"smwb-select-field--inline\": inline,\n });\n\n if (chips) {\n displayValues = selectedItems.map(({ key, value, text }) => (\n <Chip\n key={key || value}\n label={text}\n size={size === \"small\" ? \"small\" : \"medium\"}\n onDelete={onDeleteChip(value)}\n onDeleteMouseDown={stopEvent}\n />\n ));\n } else {\n displayValues = selectedItems.map((el) => el.text).join(\", \");\n }\n\n return (\n <>\n <TextFieldWrapper\n label={label}\n helperText={helperText}\n variant={variant}\n disabled={disabled}\n className={cn(className, size !== \"medium\" && `smwb-text-field_size-${size}`)}\n error={error}\n fullWidth={fullWidth}\n isFilledState={!!selectedItems.length || !!searchValue}\n isFocused={isFocused}\n inline={inline}\n {...rest}\n >\n <span\n ref={forkedAnchorRef}\n id={id}\n className={classes}\n tabIndex={disabled ? undefined : 0}\n role=\"button\"\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-disabled={disabled || undefined}\n aria-label={ariaLabel}\n onMouseDown={disabled || readOnly ? undefined : onMouseDown}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n data-testid=\"select-field\"\n >\n <span className=\"smwb-select-field__search-wrapper\" ref={searchWrapperRef}>\n {displayValues && <span className=\"smwb-select-field__values\">{displayValues}</span>}\n {search && typeof search === \"boolean\" && !readOnly && (\n <span className=\"smwb-select-field__search\">\n <span className=\"smwb-select-field__search-text\">{searchValue}</span>\n <input\n className=\"smwb-select-field__search-input\"\n ref={searchInputRef}\n type=\"text\"\n value={searchValue}\n onChange={onSearchInputChange}\n onMouseDown={(event: React.MouseEvent<HTMLInputElement>) => {\n event.stopPropagation();\n setIsOpen(true);\n }}\n onKeyDown={(event) => {\n event.stopPropagation();\n }}\n data-testid=\"search-input\"\n />\n </span>\n )}\n </span>\n <span className=\"smwb-select-field__actions\">\n {((Array.isArray(value) && value.length > 0) || (clearable && selectedItems.length > 0)) && !disabled && (\n <ClearIcon\n onClick={onResetSelected}\n onMouseDown={stopEvent}\n className={cn(\"smwb-select-field__icon\", \"smwb-select-field__icon--close\")}\n aria-label=\"Clear selection\"\n role=\"button\"\n />\n )}\n {endAdornment}\n {!hideSelectArrowIcon && (\n <SelectArrowIcon\n className={cn(\"smwb-select-field__icon\", \"smwb-select-field__icon--arrow\", {\n \"smwb-select-field__icon--opened\": isOpen,\n \"smwb-select-field__icon--focused\": isFocused,\n \"smwb-select-field__icon--error\": error,\n })}\n />\n )}\n </span>\n </span>\n </TextFieldWrapper>\n <DropdownMenu\n anchorElementRef={anchorElementRef}\n menuMaxHeight={menuMaxHeight}\n menuMiddleware={menuMiddleware}\n search={search === \"menu\"}\n onSearchInputChange={onSearchInputChange}\n optionRenderer={optionRenderer}\n items={\n onSearch\n ? items\n : searchValue\n ? items.filter((el) => el.text.search(new RegExp(searchValue, \"i\")) !== -1)\n : items\n }\n searchValue={searchValue}\n isOpen={isOpen}\n onClose={onClose}\n onItemClick={onItemClick}\n value={value}\n isLoading={isLoading}\n menuNoItemsMessage={menuNoItemsMessage}\n container={menuContainer}\n virtualized={virtualized}\n itemHeight={itemHeight}\n createOption={\n creatable && searchValue && !items.some((i) => i.text.toLowerCase() === String(searchValue).toLowerCase())\n ? {\n text: `Создать \"${searchValue}\"`,\n onCreate: (event: React.SyntheticEvent) => {\n onCreate?.(String(searchValue), event);\n setSearchValue(\"\");\n setIsOpen(false);\n },\n }\n : undefined\n }\n />\n </>\n );\n});\n\nexport default SelectField;\n"],"names":["SelectArrowIcon","props","jsx","Icon","ClearIcon","stopEvent","event","SelectField","forwardRef","ref","className","valueProp","defaultValue","onChange","disabled","readOnly","name","multiple","menuMaxHeight","menuMiddleware","menuNoItemsMessage","menuContainer","search","chips","isFocusedProp","error","items","label","variant","size","fullWidth","helperText","onSearch","resetSearch","isLoading","inline","endAdornment","hideSelectArrowIcon","optionRenderer","clearable","creatable","onCreate","virtualized","itemHeight","ariaLabel","id","rest","isOpen","setIsOpen","useState","valueState","setValueState","selectedItems","setSelectedItems","initialValue","item","i","searchValue","setSearchValue","isControlled","useRef","anchorElementRef","forkedAnchorRef","useForkRef","searchWrapperRef","searchInputRef","value","isFocused","useMemo","onMouseDown","_a","onClose","onFocus","onKeyDown","useEffect","useSafeLayoutEffect","updateValue","onItemClick","newValue","newSelectedItem","valueArray","itemIndex","el","onSearchInputChange","onDeleteChip","currentValue","newSelectedItems","onResetSelected","displayValues","classes","cn","key","text","Chip","jsxs","Fragment","TextFieldWrapper","DropdownMenu"],"mappings":"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"}
|