@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,21 +1,22 @@
|
|
|
1
1
|
import { jsx as e, jsxs as c } from "react/jsx-runtime";
|
|
2
|
-
import '../../../assets/styles/less/components/radioButton/radioButton.entry.css';/* empty css
|
|
2
|
+
import '../../../assets/styles/less/components/radioButton/radioButton.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
|
|
3
|
+
/* empty css */
|
|
3
4
|
import x from "react";
|
|
4
5
|
import i from "clsx";
|
|
5
6
|
import { useId as g } from "../../../hooks/useId.js";
|
|
6
7
|
import { TextFieldWrapper as y } from "../textField/textFieldWrapper.js";
|
|
7
|
-
const
|
|
8
|
+
const $ = x.forwardRef(function(r, b) {
|
|
8
9
|
const {
|
|
9
10
|
label: m,
|
|
10
11
|
disabled: a,
|
|
11
12
|
readOnly: s,
|
|
12
|
-
required:
|
|
13
|
+
required: t,
|
|
13
14
|
name: p,
|
|
14
15
|
id: u,
|
|
15
16
|
size: w = "medium",
|
|
16
17
|
color: f = "primary",
|
|
17
18
|
helperText: _,
|
|
18
|
-
error:
|
|
19
|
+
error: l,
|
|
19
20
|
onChange: d,
|
|
20
21
|
className: h,
|
|
21
22
|
...N
|
|
@@ -26,7 +27,7 @@ const T = x.forwardRef(function(r, b) {
|
|
|
26
27
|
}
|
|
27
28
|
d == null || d(o, r.value !== void 0 ? r.value : o.target.checked, r);
|
|
28
29
|
};
|
|
29
|
-
return /* @__PURE__ */ e(y, { helperText: _, disabled: a, error:
|
|
30
|
+
return /* @__PURE__ */ e(y, { helperText: _, disabled: a, error: l, className: "smwb-text-field-checkbox", children: /* @__PURE__ */ c(
|
|
30
31
|
"label",
|
|
31
32
|
{
|
|
32
33
|
htmlFor: n,
|
|
@@ -43,9 +44,9 @@ const T = x.forwardRef(function(r, b) {
|
|
|
43
44
|
name: p,
|
|
44
45
|
disabled: a,
|
|
45
46
|
readOnly: s,
|
|
46
|
-
required:
|
|
47
|
-
"aria-invalid":
|
|
48
|
-
"aria-required":
|
|
47
|
+
required: t,
|
|
48
|
+
"aria-invalid": l || void 0,
|
|
49
|
+
"aria-required": t || void 0,
|
|
49
50
|
className: i("smwb-radio__input", h),
|
|
50
51
|
type: "radio",
|
|
51
52
|
"data-testid": "radio",
|
|
@@ -63,7 +64,7 @@ const T = x.forwardRef(function(r, b) {
|
|
|
63
64
|
) });
|
|
64
65
|
});
|
|
65
66
|
export {
|
|
66
|
-
|
|
67
|
-
|
|
67
|
+
$ as RadioButton,
|
|
68
|
+
$ as default
|
|
68
69
|
};
|
|
69
70
|
//# sourceMappingURL=radioButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radioButton.js","sources":["../../../../src/components/inputs/radioButton/radioButton.tsx"],"sourcesContent":["import React, { InputHTMLAttributes } from \"react\";\nimport cn from \"clsx\";\nimport { TextFieldWrapper } from \"../textField\";\nimport { useId } from \"../../../hooks/useId\";\nimport type { SelectionControlColor, SelectionControlSize } from \"../checkbox/checkbox\";\n\nexport interface RadioButtonProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"size\"> {\n label?: string;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n name?: string;\n id?: string;\n checked?: boolean;\n size?: SelectionControlSize;\n color?: SelectionControlColor;\n helperText?: React.ReactNode;\n error?: boolean;\n /** Unified handler: `(event, value, data)` where `value` is the radio's value (or checked state). */\n onChange?: (\n event: React.ChangeEvent<HTMLInputElement>,\n value: string | number | readonly string[] | boolean | undefined,\n data: RadioButtonProps\n ) => void;\n}\n\nexport const RadioButton = React.forwardRef<HTMLInputElement, RadioButtonProps>(function RadioButton(props, ref) {\n const {\n label,\n disabled,\n readOnly,\n required,\n name,\n id: idProp,\n size = \"medium\",\n color = \"primary\",\n helperText,\n error,\n onChange,\n className,\n ...args\n } = props;\n const id = useId(idProp);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (readOnly) {\n e.preventDefault();\n return;\n }\n onChange?.(e, props.value !== undefined ? props.value : e.target.checked, props);\n };\n\n return (\n <TextFieldWrapper helperText={helperText} disabled={disabled} error={error} className=\"smwb-text-field-checkbox\">\n <label\n htmlFor={id}\n className={cn(\"smwb-radio\", `smwb-radio_size-${size}`, `smwb-radio_color-${color}`, {\n \"smwb-disabled\": disabled,\n \"smwb-readonly\": readOnly,\n })}\n >\n <span className=\"smwb-radio__wrapper\">\n <input\n id={id}\n name={name}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n aria-invalid={error || undefined}\n aria-required={required || undefined}\n className={cn(\"smwb-radio__input\", className)}\n type=\"radio\"\n data-testid=\"radio\"\n ref={ref}\n {...args}\n onChange={handleChange}\n />\n <span className={cn(\"smwb-radio__btn\", { \"smwb-disabled\": disabled })} />\n <span className={cn(\"smwb-radio__bg\", { \"smwb-disabled\": disabled })} />\n </span>\n {label && <span className=\"smwb-radio__label\">{label}</span>}\n </label>\n </TextFieldWrapper>\n );\n});\n\nexport default RadioButton;\n"],"names":["RadioButton","React","props","ref","label","disabled","readOnly","required","name","idProp","size","color","helperText","error","onChange","className","args","id","useId","handleChange","e","TextFieldWrapper","jsxs","cn","jsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"radioButton.js","sources":["../../../../src/components/inputs/radioButton/radioButton.tsx"],"sourcesContent":["import React, { InputHTMLAttributes } from \"react\";\nimport cn from \"clsx\";\nimport { TextFieldWrapper } from \"../textField\";\nimport { useId } from \"../../../hooks/useId\";\nimport type { SelectionControlColor, SelectionControlSize } from \"../checkbox/checkbox\";\n\nexport interface RadioButtonProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"size\"> {\n label?: string;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n name?: string;\n id?: string;\n checked?: boolean;\n size?: SelectionControlSize;\n color?: SelectionControlColor;\n helperText?: React.ReactNode;\n error?: boolean;\n /** Unified handler: `(event, value, data)` where `value` is the radio's value (or checked state). */\n onChange?: (\n event: React.ChangeEvent<HTMLInputElement>,\n value: string | number | readonly string[] | boolean | undefined,\n data: RadioButtonProps\n ) => void;\n}\n\nexport const RadioButton = React.forwardRef<HTMLInputElement, RadioButtonProps>(function RadioButton(props, ref) {\n const {\n label,\n disabled,\n readOnly,\n required,\n name,\n id: idProp,\n size = \"medium\",\n color = \"primary\",\n helperText,\n error,\n onChange,\n className,\n ...args\n } = props;\n const id = useId(idProp);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (readOnly) {\n e.preventDefault();\n return;\n }\n onChange?.(e, props.value !== undefined ? props.value : e.target.checked, props);\n };\n\n return (\n <TextFieldWrapper helperText={helperText} disabled={disabled} error={error} className=\"smwb-text-field-checkbox\">\n <label\n htmlFor={id}\n className={cn(\"smwb-radio\", `smwb-radio_size-${size}`, `smwb-radio_color-${color}`, {\n \"smwb-disabled\": disabled,\n \"smwb-readonly\": readOnly,\n })}\n >\n <span className=\"smwb-radio__wrapper\">\n <input\n id={id}\n name={name}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n aria-invalid={error || undefined}\n aria-required={required || undefined}\n className={cn(\"smwb-radio__input\", className)}\n type=\"radio\"\n data-testid=\"radio\"\n ref={ref}\n {...args}\n onChange={handleChange}\n />\n <span className={cn(\"smwb-radio__btn\", { \"smwb-disabled\": disabled })} />\n <span className={cn(\"smwb-radio__bg\", { \"smwb-disabled\": disabled })} />\n </span>\n {label && <span className=\"smwb-radio__label\">{label}</span>}\n </label>\n </TextFieldWrapper>\n );\n});\n\nexport default RadioButton;\n"],"names":["RadioButton","React","props","ref","label","disabled","readOnly","required","name","idProp","size","color","helperText","error","onChange","className","args","id","useId","handleChange","e","TextFieldWrapper","jsxs","cn","jsx"],"mappings":";;;;;;;AA4BO,MAAMA,IAAcC,EAAM,WAA+C,SAAqBC,GAAOC,GAAK;AAC/G,QAAM;AAAA,IACJ,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,MAAAC;AAAA,IACA,IAAIC;AAAA,IACJ,MAAAC,IAAO;AAAA,IACP,OAAAC,IAAQ;AAAA,IACR,YAAAC;AAAA,IACA,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACDd,GACEe,IAAKC,EAAMT,CAAM,GAEjBU,IAAe,CAACC,MAA2C;AAC/D,QAAId,GAAU;AACZ,MAAAc,EAAE,eAAA;AACF;AAAA,IACF;AACA,IAAAN,KAAA,QAAAA,EAAWM,GAAGlB,EAAM,UAAU,SAAYA,EAAM,QAAQkB,EAAE,OAAO,SAASlB;AAAA,EAC5E;AAEA,2BACGmB,GAAA,EAAiB,YAAAT,GAAwB,UAAAP,GAAoB,OAAAQ,GAAc,WAAU,4BACpF,UAAA,gBAAAS;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAASL;AAAA,MACT,WAAWM,EAAG,cAAc,mBAAmBb,CAAI,IAAI,oBAAoBC,CAAK,IAAI;AAAA,QAClF,iBAAiBN;AAAA,QACjB,iBAAiBC;AAAA,MAAA,CAClB;AAAA,MAED,UAAA;AAAA,QAAA,gBAAAgB,EAAC,QAAA,EAAK,WAAU,uBACd,UAAA;AAAA,UAAA,gBAAAE;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,IAAAP;AAAA,cACA,MAAAT;AAAA,cACA,UAAAH;AAAA,cACA,UAAAC;AAAA,cACA,UAAAC;AAAA,cACA,gBAAcM,KAAS;AAAA,cACvB,iBAAeN,KAAY;AAAA,cAC3B,WAAWgB,EAAG,qBAAqBR,CAAS;AAAA,cAC5C,MAAK;AAAA,cACL,eAAY;AAAA,cACZ,KAAAZ;AAAA,cACC,GAAGa;AAAA,cACJ,UAAUG;AAAA,YAAA;AAAA,UAAA;AAAA,UAEZ,gBAAAK,EAAC,UAAK,WAAWD,EAAG,mBAAmB,EAAE,iBAAiBlB,EAAA,CAAU,GAAG;AAAA,UACvE,gBAAAmB,EAAC,UAAK,WAAWD,EAAG,kBAAkB,EAAE,iBAAiBlB,EAAA,CAAU,EAAA,CAAG;AAAA,QAAA,GACxE;AAAA,QACCD,KAAS,gBAAAoB,EAAC,QAAA,EAAK,WAAU,qBAAqB,UAAApB,EAAA,CAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEzD;AAEJ,CAAC;"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { jsxs as N, jsx as
|
|
2
|
-
import '../../../assets/styles/less/components/rating/rating.entry.css';/* empty css
|
|
1
|
+
import { jsxs as N, jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import '../../../assets/styles/less/components/rating/rating.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
|
|
3
|
+
/* empty css */
|
|
3
4
|
import { forwardRef as I, useState as v } from "react";
|
|
4
5
|
import $ from "clsx";
|
|
5
6
|
import { Icon as H } from "../../base/icon/icon.js";
|
|
6
|
-
const
|
|
7
|
+
const Z = I(function({
|
|
7
8
|
className: L,
|
|
8
9
|
value: d,
|
|
9
10
|
defaultValue: j = 0,
|
|
@@ -11,7 +12,7 @@ const Y = I(function({
|
|
|
11
12
|
precision: c = 1,
|
|
12
13
|
readOnly: g = !1,
|
|
13
14
|
disabled: y = !1,
|
|
14
|
-
size:
|
|
15
|
+
size: m = 28,
|
|
15
16
|
icon: u,
|
|
16
17
|
emptyIcon: w,
|
|
17
18
|
name: h,
|
|
@@ -24,18 +25,18 @@ const Y = I(function({
|
|
|
24
25
|
const M = d !== void 0, [S, R] = v(j), [p, b] = v(null), n = d !== void 0 ? d : S, B = p != null ? p : n, l = !g && !y, A = (t, r) => {
|
|
25
26
|
if (c === 1)
|
|
26
27
|
return r + 1;
|
|
27
|
-
const { left:
|
|
28
|
+
const { left: i, width: e } = t.currentTarget.getBoundingClientRect(), G = t.clientX - i < e / 2;
|
|
28
29
|
return r + (G ? 0.5 : 1);
|
|
29
30
|
}, F = (t, r) => {
|
|
30
31
|
if (!l)
|
|
31
32
|
return;
|
|
32
|
-
const
|
|
33
|
-
M || R(
|
|
34
|
-
}, U = u != null ? u : /* @__PURE__ */
|
|
33
|
+
const i = A(t, r);
|
|
34
|
+
M || R(i), s == null || s(i);
|
|
35
|
+
}, U = u != null ? u : /* @__PURE__ */ a(H, { name: "star", fill: 1, size: m }), X = w != null ? w : /* @__PURE__ */ a(H, { name: "star", size: m }), f = (t) => {
|
|
35
36
|
const r = Math.max(0, Math.min(o, t));
|
|
36
37
|
M || R(r), s == null || s(r);
|
|
37
38
|
}, q = (t) => {
|
|
38
|
-
l && (t.key === "ArrowRight" || t.key === "ArrowUp" ? (t.preventDefault(),
|
|
39
|
+
l && (t.key === "ArrowRight" || t.key === "ArrowUp" ? (t.preventDefault(), f(n + c)) : t.key === "ArrowLeft" || t.key === "ArrowDown" ? (t.preventDefault(), f(n - c)) : t.key === "Home" ? (t.preventDefault(), f(0)) : t.key === "End" && (t.preventDefault(), f(o)));
|
|
39
40
|
};
|
|
40
41
|
return /* @__PURE__ */ N(
|
|
41
42
|
"span",
|
|
@@ -55,31 +56,31 @@ const Y = I(function({
|
|
|
55
56
|
onKeyDown: l ? q : void 0,
|
|
56
57
|
children: [
|
|
57
58
|
Array.from({ length: o }, (t, r) => {
|
|
58
|
-
const
|
|
59
|
+
const i = Math.max(0, Math.min(1, B - r));
|
|
59
60
|
return /* @__PURE__ */ N(
|
|
60
61
|
"span",
|
|
61
62
|
{
|
|
62
63
|
className: "smwb-rating__item",
|
|
63
|
-
style: { width:
|
|
64
|
+
style: { width: m, height: m, cursor: l ? "pointer" : "default" },
|
|
64
65
|
onClick: (e) => F(e, r),
|
|
65
66
|
onMouseMove: l && c === 0.5 ? (e) => b(A(e, r)) : l ? () => b(r + 1) : void 0,
|
|
66
67
|
onMouseLeave: l ? () => b(null) : void 0,
|
|
67
68
|
children: [
|
|
68
|
-
/* @__PURE__ */
|
|
69
|
-
/* @__PURE__ */
|
|
69
|
+
/* @__PURE__ */ a("span", { className: "smwb-rating__icon smwb-rating__icon_empty", children: X }),
|
|
70
|
+
/* @__PURE__ */ a("span", { className: "smwb-rating__icon smwb-rating__icon_filled", style: { width: `${i * 100}%` }, children: U })
|
|
70
71
|
]
|
|
71
72
|
},
|
|
72
73
|
r
|
|
73
74
|
);
|
|
74
75
|
}),
|
|
75
|
-
h ? /* @__PURE__ */
|
|
76
|
-
_ != null && _ !== !1 ? /* @__PURE__ */
|
|
76
|
+
h ? /* @__PURE__ */ a("input", { type: "hidden", name: h, value: n, readOnly: !0 }) : null,
|
|
77
|
+
_ != null && _ !== !1 ? /* @__PURE__ */ a("span", { className: $("smwb-rating__helper", D && "smwb-rating__helper_error"), children: _ }) : null
|
|
77
78
|
]
|
|
78
79
|
}
|
|
79
80
|
);
|
|
80
81
|
});
|
|
81
82
|
export {
|
|
82
|
-
|
|
83
|
-
|
|
83
|
+
Z as Rating,
|
|
84
|
+
Z as default
|
|
84
85
|
};
|
|
85
86
|
//# sourceMappingURL=rating.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rating.js","sources":["../../../../src/components/inputs/rating/rating.tsx"],"sourcesContent":["import { forwardRef, KeyboardEvent, MouseEvent, ReactNode, useState } from \"react\";\nimport cn from \"clsx\";\nimport Icon from \"../../base/icon/icon\";\n\nexport type RatingColor = \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport interface RatingProps {\n className?: string;\n /** Controlled value. */\n value?: number;\n /** Uncontrolled initial value. */\n defaultValue?: number;\n /** Number of icons. */\n max?: number;\n /** Smallest selectable increment: 1 (whole) or 0.5 (half). */\n precision?: 1 | 0.5;\n readOnly?: boolean;\n disabled?: boolean;\n size?: number;\n /** Filled icon (Material Symbols name). */\n icon?: ReactNode;\n /** Empty icon (Material Symbols name). */\n emptyIcon?: ReactNode;\n name?: string;\n /** Color of the filled icons. */\n color?: RatingColor;\n /** Renders the control in an error state. */\n error?: boolean;\n /** Supporting text shown below the control. */\n helperText?: ReactNode;\n id?: string;\n onChange?: (value: number) => void;\n}\n\nexport const Rating = forwardRef<HTMLSpanElement, RatingProps>(function Rating(\n {\n className,\n value,\n defaultValue = 0,\n max = 5,\n precision = 1,\n readOnly = false,\n disabled = false,\n size = 28,\n icon,\n emptyIcon,\n name,\n color = \"primary\",\n error,\n helperText,\n id,\n onChange,\n },\n ref\n) {\n const isControlled = value !== undefined;\n const [internal, setInternal] = useState(defaultValue);\n const [hover, setHover] = useState<number | null>(null);\n\n const current = value !== undefined ? value : internal;\n const display = hover ?? current;\n\n const interactive = !readOnly && !disabled;\n\n const valueFromEvent = (event: MouseEvent<HTMLSpanElement>, starIndex: number): number => {\n if (precision === 1) {\n return starIndex + 1;\n }\n const { left, width } = event.currentTarget.getBoundingClientRect();\n const isLeftHalf = event.clientX - left < width / 2;\n return starIndex + (isLeftHalf ? 0.5 : 1);\n };\n\n const handleSelect = (event: MouseEvent<HTMLSpanElement>, starIndex: number) => {\n if (!interactive) {\n return;\n }\n const next = valueFromEvent(event, starIndex);\n if (!isControlled) {\n setInternal(next);\n }\n onChange?.(next);\n };\n\n const filledIcon = icon ?? <Icon name=\"star\" fill={1} size={size} />;\n const blankIcon = emptyIcon ?? <Icon name=\"star\" size={size} />;\n\n const commit = (next: number) => {\n const clamped = Math.max(0, Math.min(max, next));\n if (!isControlled) {\n setInternal(clamped);\n }\n onChange?.(clamped);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLSpanElement>) => {\n if (!interactive) {\n return;\n }\n if (event.key === \"ArrowRight\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n commit(current + precision);\n } else if (event.key === \"ArrowLeft\" || event.key === \"ArrowDown\") {\n event.preventDefault();\n commit(current - precision);\n } else if (event.key === \"Home\") {\n event.preventDefault();\n commit(0);\n } else if (event.key === \"End\") {\n event.preventDefault();\n commit(max);\n }\n };\n\n return (\n <span\n ref={ref}\n id={id}\n className={cn(\n \"smwb-rating\",\n { \"smwb-rating_readonly\": readOnly, \"smwb-rating_disabled\": disabled, \"smwb-rating_error\": error },\n color !== \"primary\" && `smwb-rating_color-${color}`,\n className\n )}\n data-testid=\"rating\"\n role=\"img\"\n aria-label={`${current} of ${max}`}\n tabIndex={interactive ? 0 : undefined}\n onKeyDown={interactive ? handleKeyDown : undefined}\n >\n {Array.from({ length: max }, (_, index) => {\n const fillRatio = Math.max(0, Math.min(1, display - index));\n return (\n <span\n key={index}\n className=\"smwb-rating__item\"\n style={{ width: size, height: size, cursor: interactive ? \"pointer\" : \"default\" }}\n onClick={(event) => handleSelect(event, index)}\n onMouseMove={\n interactive && precision === 0.5\n ? (event) => setHover(valueFromEvent(event, index))\n : interactive\n ? () => setHover(index + 1)\n : undefined\n }\n onMouseLeave={interactive ? () => setHover(null) : undefined}\n >\n <span className=\"smwb-rating__icon smwb-rating__icon_empty\">{blankIcon}</span>\n <span className=\"smwb-rating__icon smwb-rating__icon_filled\" style={{ width: `${fillRatio * 100}%` }}>\n {filledIcon}\n </span>\n </span>\n );\n })}\n {name ? <input type=\"hidden\" name={name} value={current} readOnly /> : null}\n {helperText != null && helperText !== false ? (\n <span className={cn(\"smwb-rating__helper\", error && \"smwb-rating__helper_error\")}>{helperText}</span>\n ) : null}\n </span>\n );\n});\n\nexport default Rating;\n"],"names":["Rating","forwardRef","className","value","defaultValue","max","precision","readOnly","disabled","size","icon","emptyIcon","name","color","error","helperText","id","onChange","ref","isControlled","internal","setInternal","useState","hover","setHover","current","display","interactive","valueFromEvent","event","starIndex","left","width","isLeftHalf","handleSelect","next","filledIcon","jsx","Icon","blankIcon","commit","clamped","handleKeyDown","jsxs","cn","_","index","fillRatio"],"mappings":"
|
|
1
|
+
{"version":3,"file":"rating.js","sources":["../../../../src/components/inputs/rating/rating.tsx"],"sourcesContent":["import { forwardRef, KeyboardEvent, MouseEvent, ReactNode, useState } from \"react\";\nimport cn from \"clsx\";\nimport Icon from \"../../base/icon/icon\";\n\nexport type RatingColor = \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport interface RatingProps {\n className?: string;\n /** Controlled value. */\n value?: number;\n /** Uncontrolled initial value. */\n defaultValue?: number;\n /** Number of icons. */\n max?: number;\n /** Smallest selectable increment: 1 (whole) or 0.5 (half). */\n precision?: 1 | 0.5;\n readOnly?: boolean;\n disabled?: boolean;\n size?: number;\n /** Filled icon (Material Symbols name). */\n icon?: ReactNode;\n /** Empty icon (Material Symbols name). */\n emptyIcon?: ReactNode;\n name?: string;\n /** Color of the filled icons. */\n color?: RatingColor;\n /** Renders the control in an error state. */\n error?: boolean;\n /** Supporting text shown below the control. */\n helperText?: ReactNode;\n id?: string;\n onChange?: (value: number) => void;\n}\n\nexport const Rating = forwardRef<HTMLSpanElement, RatingProps>(function Rating(\n {\n className,\n value,\n defaultValue = 0,\n max = 5,\n precision = 1,\n readOnly = false,\n disabled = false,\n size = 28,\n icon,\n emptyIcon,\n name,\n color = \"primary\",\n error,\n helperText,\n id,\n onChange,\n },\n ref\n) {\n const isControlled = value !== undefined;\n const [internal, setInternal] = useState(defaultValue);\n const [hover, setHover] = useState<number | null>(null);\n\n const current = value !== undefined ? value : internal;\n const display = hover ?? current;\n\n const interactive = !readOnly && !disabled;\n\n const valueFromEvent = (event: MouseEvent<HTMLSpanElement>, starIndex: number): number => {\n if (precision === 1) {\n return starIndex + 1;\n }\n const { left, width } = event.currentTarget.getBoundingClientRect();\n const isLeftHalf = event.clientX - left < width / 2;\n return starIndex + (isLeftHalf ? 0.5 : 1);\n };\n\n const handleSelect = (event: MouseEvent<HTMLSpanElement>, starIndex: number) => {\n if (!interactive) {\n return;\n }\n const next = valueFromEvent(event, starIndex);\n if (!isControlled) {\n setInternal(next);\n }\n onChange?.(next);\n };\n\n const filledIcon = icon ?? <Icon name=\"star\" fill={1} size={size} />;\n const blankIcon = emptyIcon ?? <Icon name=\"star\" size={size} />;\n\n const commit = (next: number) => {\n const clamped = Math.max(0, Math.min(max, next));\n if (!isControlled) {\n setInternal(clamped);\n }\n onChange?.(clamped);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLSpanElement>) => {\n if (!interactive) {\n return;\n }\n if (event.key === \"ArrowRight\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n commit(current + precision);\n } else if (event.key === \"ArrowLeft\" || event.key === \"ArrowDown\") {\n event.preventDefault();\n commit(current - precision);\n } else if (event.key === \"Home\") {\n event.preventDefault();\n commit(0);\n } else if (event.key === \"End\") {\n event.preventDefault();\n commit(max);\n }\n };\n\n return (\n <span\n ref={ref}\n id={id}\n className={cn(\n \"smwb-rating\",\n { \"smwb-rating_readonly\": readOnly, \"smwb-rating_disabled\": disabled, \"smwb-rating_error\": error },\n color !== \"primary\" && `smwb-rating_color-${color}`,\n className\n )}\n data-testid=\"rating\"\n role=\"img\"\n aria-label={`${current} of ${max}`}\n tabIndex={interactive ? 0 : undefined}\n onKeyDown={interactive ? handleKeyDown : undefined}\n >\n {Array.from({ length: max }, (_, index) => {\n const fillRatio = Math.max(0, Math.min(1, display - index));\n return (\n <span\n key={index}\n className=\"smwb-rating__item\"\n style={{ width: size, height: size, cursor: interactive ? \"pointer\" : \"default\" }}\n onClick={(event) => handleSelect(event, index)}\n onMouseMove={\n interactive && precision === 0.5\n ? (event) => setHover(valueFromEvent(event, index))\n : interactive\n ? () => setHover(index + 1)\n : undefined\n }\n onMouseLeave={interactive ? () => setHover(null) : undefined}\n >\n <span className=\"smwb-rating__icon smwb-rating__icon_empty\">{blankIcon}</span>\n <span className=\"smwb-rating__icon smwb-rating__icon_filled\" style={{ width: `${fillRatio * 100}%` }}>\n {filledIcon}\n </span>\n </span>\n );\n })}\n {name ? <input type=\"hidden\" name={name} value={current} readOnly /> : null}\n {helperText != null && helperText !== false ? (\n <span className={cn(\"smwb-rating__helper\", error && \"smwb-rating__helper_error\")}>{helperText}</span>\n ) : null}\n </span>\n );\n});\n\nexport default Rating;\n"],"names":["Rating","forwardRef","className","value","defaultValue","max","precision","readOnly","disabled","size","icon","emptyIcon","name","color","error","helperText","id","onChange","ref","isControlled","internal","setInternal","useState","hover","setHover","current","display","interactive","valueFromEvent","event","starIndex","left","width","isLeftHalf","handleSelect","next","filledIcon","jsx","Icon","blankIcon","commit","clamped","handleKeyDown","jsxs","cn","_","index","fillRatio"],"mappings":"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"}
|
|
@@ -37,4 +37,4 @@ export interface DropdownItemProps<T extends HTMLElement = HTMLElement> {
|
|
|
37
37
|
/** Row height (px) used when `virtualized`. */
|
|
38
38
|
itemHeight?: number;
|
|
39
39
|
}
|
|
40
|
-
export declare function DropdownMenu<T extends HTMLElement>({ menuMaxHeight, menuMiddleware, search, onSearchInputChange, items, searchValue, isOpen, onClose, anchorElementRef, value, onItemClick, isLoading, optionRenderer, menuNoItemsMessage, container, createOption, virtualized, itemHeight, }: DropdownItemProps<T>): React.ReactPortal;
|
|
40
|
+
export declare function DropdownMenu<T extends HTMLElement>({ menuMaxHeight, menuMiddleware, search, onSearchInputChange, items, searchValue, isOpen, onClose, anchorElementRef, value, onItemClick, isLoading, optionRenderer, menuNoItemsMessage, container, createOption, virtualized, itemHeight, }: DropdownItemProps<T>): React.ReactPortal | null;
|
|
@@ -1,54 +1,55 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import
|
|
3
|
-
import { useVirtualList as
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
import { jsxs as f, Fragment as K, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import x, { useState as S, useEffect as q } from "react";
|
|
3
|
+
import { useVirtualList as z } from "../../../hooks/useVirtualList.js";
|
|
4
|
+
import { useSafeLayoutEffect as B } from "../../../hooks/useSafeLayoutEffect.js";
|
|
5
|
+
import { ProgressIndicator as J } from "../../feedBack/progressIndicator/progressIndicator.js";
|
|
6
|
+
import { createPortal as Q } from "react-dom";
|
|
7
|
+
import { Menu as R } from "../../navigation/menu/menu.js";
|
|
8
|
+
import { TextField as U } from "../textField/textField.js";
|
|
9
|
+
import { MenuDivider as X } from "../../navigation/menu/menuDivider.js";
|
|
10
|
+
import { MenuItem as N } from "../../navigation/menu/menuItem.js";
|
|
11
|
+
function ae({
|
|
12
|
+
menuMaxHeight: d,
|
|
13
|
+
menuMiddleware: k,
|
|
14
|
+
search: M,
|
|
14
15
|
onSearchInputChange: n,
|
|
15
16
|
items: l,
|
|
16
|
-
searchValue:
|
|
17
|
-
isOpen:
|
|
18
|
-
onClose:
|
|
19
|
-
anchorElementRef:
|
|
17
|
+
searchValue: W,
|
|
18
|
+
isOpen: s,
|
|
19
|
+
onClose: m,
|
|
20
|
+
anchorElementRef: i,
|
|
20
21
|
value: c,
|
|
21
|
-
onItemClick:
|
|
22
|
+
onItemClick: D,
|
|
22
23
|
isLoading: p,
|
|
23
|
-
optionRenderer:
|
|
24
|
+
optionRenderer: E,
|
|
24
25
|
menuNoItemsMessage: Y,
|
|
25
|
-
container:
|
|
26
|
-
createOption:
|
|
27
|
-
virtualized:
|
|
28
|
-
itemHeight:
|
|
26
|
+
container: o,
|
|
27
|
+
createOption: a,
|
|
28
|
+
virtualized: A,
|
|
29
|
+
itemHeight: L = 40
|
|
29
30
|
}) {
|
|
30
31
|
const T = Array.isArray(c) ? c : [c], _ = l.some((e) => !!e.group);
|
|
31
|
-
let
|
|
32
|
-
const
|
|
33
|
-
itemCount:
|
|
34
|
-
itemHeight:
|
|
35
|
-
viewportHeight:
|
|
36
|
-
}),
|
|
37
|
-
var
|
|
32
|
+
let h;
|
|
33
|
+
const v = !!A && !_ && !p && l.length > 0, w = d || 240, { startIndex: j, endIndex: F, totalHeight: G, offsetY: H, onScroll: P } = z({
|
|
34
|
+
itemCount: v ? l.length : 0,
|
|
35
|
+
itemHeight: L,
|
|
36
|
+
viewportHeight: w
|
|
37
|
+
}), y = (e) => {
|
|
38
|
+
var g;
|
|
38
39
|
const r = [];
|
|
39
|
-
return _ && e.group !==
|
|
40
|
-
/* @__PURE__ */ t("li", { className: "smwb-select-field__group-label", role: "presentation", children: e.group }, `group-${(
|
|
40
|
+
return _ && e.group !== h && (h = e.group, r.push(
|
|
41
|
+
/* @__PURE__ */ t("li", { className: "smwb-select-field__group-label", role: "presentation", children: e.group }, `group-${(g = e.group) != null ? g : "ungrouped"}`)
|
|
41
42
|
)), r.push(
|
|
42
|
-
/* @__PURE__ */
|
|
43
|
-
|
|
43
|
+
/* @__PURE__ */ f(
|
|
44
|
+
N,
|
|
44
45
|
{
|
|
45
46
|
value: e.value,
|
|
46
47
|
disabled: e.disabled,
|
|
47
|
-
selected: !!T.find((
|
|
48
|
-
onClick: (
|
|
49
|
-
e.disabled ||
|
|
48
|
+
selected: !!T.find((u) => u === e.value),
|
|
49
|
+
onClick: (u) => {
|
|
50
|
+
e.disabled || D(u, e);
|
|
50
51
|
},
|
|
51
|
-
optionRenderer:
|
|
52
|
+
optionRenderer: E,
|
|
52
53
|
children: [
|
|
53
54
|
e.text,
|
|
54
55
|
e.helperText ? /* @__PURE__ */ t("span", { className: "smwb-select-field__option__helper-text", children: e.helperText }) : null
|
|
@@ -57,79 +58,81 @@ function re({
|
|
|
57
58
|
e.key || e.value
|
|
58
59
|
)
|
|
59
60
|
), r;
|
|
60
|
-
}, [
|
|
61
|
-
return
|
|
62
|
-
|
|
63
|
-
}, [
|
|
61
|
+
}, [V, $] = x.useState(), [b, I] = S();
|
|
62
|
+
return B(() => {
|
|
63
|
+
I(o != null ? o : document.body);
|
|
64
|
+
}, [o]), q(() => {
|
|
65
|
+
s && i.current && $(i.current.clientWidth);
|
|
66
|
+
}, [i, s]), x.useEffect(() => {
|
|
64
67
|
const e = (r) => {
|
|
65
|
-
|
|
68
|
+
s && r.key === "Escape" && m();
|
|
66
69
|
};
|
|
67
70
|
return document.addEventListener("keydown", e), () => {
|
|
68
71
|
document.removeEventListener("keydown", e);
|
|
69
72
|
};
|
|
70
|
-
}, [
|
|
71
|
-
/* @__PURE__ */
|
|
72
|
-
|
|
73
|
+
}, [s, m]), b ? Q(
|
|
74
|
+
/* @__PURE__ */ f(
|
|
75
|
+
R,
|
|
73
76
|
{
|
|
74
|
-
isOpen:
|
|
75
|
-
onClose:
|
|
76
|
-
anchorElement:
|
|
77
|
-
middleware:
|
|
77
|
+
isOpen: s,
|
|
78
|
+
onClose: m,
|
|
79
|
+
anchorElement: i.current,
|
|
80
|
+
middleware: k,
|
|
78
81
|
"data-smwb-overlay-layer": "",
|
|
79
82
|
style: {
|
|
80
|
-
minWidth:
|
|
81
|
-
maxHeight:
|
|
82
|
-
overflowY:
|
|
83
|
+
minWidth: V,
|
|
84
|
+
maxHeight: d || void 0,
|
|
85
|
+
overflowY: d ? "auto" : void 0
|
|
83
86
|
},
|
|
84
87
|
children: [
|
|
85
|
-
|
|
88
|
+
M && /* @__PURE__ */ f(K, { children: [
|
|
86
89
|
/* @__PURE__ */ t("li", { className: "smwb-select-field__menu-search", children: /* @__PURE__ */ t(
|
|
87
|
-
|
|
90
|
+
U,
|
|
88
91
|
{
|
|
89
92
|
className: "smwb-select-field__menu-search-input",
|
|
90
93
|
type: "text",
|
|
91
94
|
placeholder: "Найти...",
|
|
92
|
-
value:
|
|
95
|
+
value: W,
|
|
93
96
|
onChange: (e, r) => n == null ? void 0 : n(e, r.value),
|
|
94
97
|
fullWidth: !0
|
|
95
98
|
}
|
|
96
99
|
) }),
|
|
97
|
-
/* @__PURE__ */ t(
|
|
100
|
+
/* @__PURE__ */ t(X, {})
|
|
98
101
|
] }),
|
|
99
|
-
p ? /* @__PURE__ */ t("div", { className: "smwb-select-field__menu-loading", children: /* @__PURE__ */ t(
|
|
102
|
+
p ? /* @__PURE__ */ t("div", { className: "smwb-select-field__menu-loading", children: /* @__PURE__ */ t(J, { type: "indeterminate", variant: "circular", className: "smwb-select-field__menu__loader" }) }) : v ? /* @__PURE__ */ t("li", { role: "presentation", className: "smwb-select-field__virtual-viewport", children: /* @__PURE__ */ t(
|
|
100
103
|
"div",
|
|
101
104
|
{
|
|
102
105
|
className: "smwb-select-field__virtual-scroller",
|
|
103
|
-
style: { maxHeight:
|
|
104
|
-
onScroll:
|
|
106
|
+
style: { maxHeight: w, overflowY: "auto" },
|
|
107
|
+
onScroll: P,
|
|
105
108
|
children: /* @__PURE__ */ t("div", { style: { height: G, position: "relative" }, children: /* @__PURE__ */ t(
|
|
106
109
|
"ul",
|
|
107
110
|
{
|
|
108
111
|
role: "presentation",
|
|
109
112
|
className: "smwb-select-field__virtual-list",
|
|
110
113
|
style: { transform: `translateY(${H}px)`, listStyle: "none", margin: 0, padding: 0 },
|
|
111
|
-
children: l.slice(j, F).map((e) =>
|
|
114
|
+
children: l.slice(j, F).map((e) => y(e))
|
|
112
115
|
}
|
|
113
116
|
) })
|
|
114
117
|
}
|
|
115
|
-
) }) : l.length ? l.map((e) =>
|
|
116
|
-
|
|
117
|
-
|
|
118
|
+
) }) : l.length ? l.map((e) => y(e)) : a ? null : /* @__PURE__ */ t("li", { className: "smwb-select-field__empty-items", children: Y || "Опций не найдено." }),
|
|
119
|
+
a ? /* @__PURE__ */ t(
|
|
120
|
+
N,
|
|
118
121
|
{
|
|
119
122
|
value: "__create__",
|
|
120
|
-
onClick: (e) =>
|
|
123
|
+
onClick: (e) => a.onCreate(e),
|
|
121
124
|
className: "smwb-select-field__create-option",
|
|
122
|
-
children:
|
|
125
|
+
children: a.text
|
|
123
126
|
},
|
|
124
127
|
"__create__"
|
|
125
128
|
) : null
|
|
126
129
|
]
|
|
127
130
|
}
|
|
128
131
|
),
|
|
129
|
-
|
|
130
|
-
);
|
|
132
|
+
b
|
|
133
|
+
) : null;
|
|
131
134
|
}
|
|
132
135
|
export {
|
|
133
|
-
|
|
136
|
+
ae as DropdownMenu
|
|
134
137
|
};
|
|
135
138
|
//# sourceMappingURL=dropdownMenu.js.map
|
|
@@ -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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"}
|
|
@@ -23,6 +23,8 @@ export interface SelectFieldProps {
|
|
|
23
23
|
items: DropdownItem[];
|
|
24
24
|
label?: string;
|
|
25
25
|
variant?: "outlined" | "filled";
|
|
26
|
+
/** Height of the field, as for TextField: `small` (40px, for toolbars), `medium` (default) or `large`. */
|
|
27
|
+
size?: "small" | "medium" | "large";
|
|
26
28
|
fullWidth?: boolean;
|
|
27
29
|
helperText?: React.ReactNode;
|
|
28
30
|
onSearch?: (e: React.ChangeEvent<HTMLInputElement>) => void;
|