@smwb/ui-react 2.7.0 → 2.8.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/README.md +27 -0
- package/dist/assets/styles/less/components/avatar/avatar.entry.css +1 -1
- package/dist/assets/styles/less/components/card/card.entry.css +1 -1
- package/dist/assets/styles/less/components/checkbox/checkbox.entry.css +1 -1
- package/dist/assets/styles/less/components/chip/chip.entry.css +1 -1
- package/dist/assets/styles/less/components/menu/menu.entry.css +1 -1
- package/dist/assets/styles/less/components/personChip/personChip.entry.css +1 -1
- package/dist/assets/styles/less/components/radioButton/radioButton.entry.css +1 -1
- package/dist/assets/styles/less/components/rating/rating.entry.css +1 -1
- package/dist/assets/styles/less/components/selectField/selectField.entry.css +1 -1
- package/dist/assets/styles/less/components/table/table.entry.css +1 -1
- package/dist/assets/styles/less/components/thumbCard/thumbCard.entry.css +1 -1
- package/dist/assets/styles/less/components/toggle/toggle.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 -1
- package/dist/components/base/icon/icon.d.ts +6 -2
- package/dist/components/base/icon/icon.js +49 -37
- package/dist/components/base/icon/icon.js.map +1 -1
- package/dist/components/base/ripple/ripple.d.ts +3 -0
- package/dist/components/base/ripple/ripple.js +38 -23
- package/dist/components/base/ripple/ripple.js.map +1 -1
- package/dist/components/dataDisplay/avatar/avatar.d.ts +4 -0
- package/dist/components/dataDisplay/avatar/avatar.js +50 -37
- package/dist/components/dataDisplay/avatar/avatar.js.map +1 -1
- package/dist/components/dataDisplay/badge/badge.js +37 -28
- package/dist/components/dataDisplay/badge/badge.js.map +1 -1
- package/dist/components/dataDisplay/card/card.d.ts +30 -2
- package/dist/components/dataDisplay/card/card.js +50 -23
- package/dist/components/dataDisplay/card/card.js.map +1 -1
- package/dist/components/dataDisplay/carousel/carousel.js +70 -70
- package/dist/components/dataDisplay/carousel/carousel.js.map +1 -1
- package/dist/components/dataDisplay/chart/chart.d.ts +2 -0
- package/dist/components/dataDisplay/chart/chart.js +66 -53
- package/dist/components/dataDisplay/chart/chart.js.map +1 -1
- package/dist/components/dataDisplay/chat/chatIconButton.d.ts +1 -1
- package/dist/components/dataDisplay/chat/chatIconButton.js +30 -26
- package/dist/components/dataDisplay/chat/chatIconButton.js.map +1 -1
- package/dist/components/dataDisplay/chat/chatLayout.d.ts +3 -1
- package/dist/components/dataDisplay/chat/chatLayout.js +56 -55
- package/dist/components/dataDisplay/chat/chatLayout.js.map +1 -1
- package/dist/components/dataDisplay/chat/chatOverlayLayout.d.ts +3 -1
- package/dist/components/dataDisplay/chip/chip.d.ts +31 -0
- package/dist/components/dataDisplay/chip/chip.js +110 -83
- package/dist/components/dataDisplay/chip/chip.js.map +1 -1
- package/dist/components/dataDisplay/chipGroup/chipGroup.js +34 -30
- package/dist/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
- package/dist/components/dataDisplay/descriptionList/descriptionList.d.ts +11 -3
- package/dist/components/dataDisplay/descriptionList/descriptionList.js.map +1 -1
- package/dist/components/dataDisplay/expansionPanel/expansionPanel.js +143 -98
- package/dist/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
- package/dist/components/dataDisplay/kanban/kanban.d.ts +6 -0
- package/dist/components/dataDisplay/kanban/kanban.js +46 -35
- package/dist/components/dataDisplay/kanban/kanban.js.map +1 -1
- package/dist/components/dataDisplay/lazyImage/lazyImage.js +31 -30
- package/dist/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
- package/dist/components/dataDisplay/list/list.d.ts +2 -0
- package/dist/components/dataDisplay/list/list.js +15 -14
- package/dist/components/dataDisplay/list/list.js.map +1 -1
- package/dist/components/dataDisplay/meter/meter.d.ts +2 -0
- package/dist/components/dataDisplay/meter/meter.js +24 -23
- package/dist/components/dataDisplay/meter/meter.js.map +1 -1
- package/dist/components/dataDisplay/personChip/personChip.d.ts +2 -0
- package/dist/components/dataDisplay/personChip/personChip.js +39 -27
- package/dist/components/dataDisplay/personChip/personChip.js.map +1 -1
- package/dist/components/dataDisplay/stat/stat.d.ts +2 -0
- package/dist/components/dataDisplay/stat/stat.js +25 -13
- package/dist/components/dataDisplay/stat/stat.js.map +1 -1
- package/dist/components/dataDisplay/table/table.d.ts +16 -1
- package/dist/components/dataDisplay/table/table.js +40 -36
- package/dist/components/dataDisplay/table/table.js.map +1 -1
- package/dist/components/dataDisplay/table/tableBody.js +10 -4
- package/dist/components/dataDisplay/table/tableBody.js.map +1 -1
- package/dist/components/dataDisplay/table/tableCell.d.ts +10 -2
- package/dist/components/dataDisplay/table/tableCell.js +20 -13
- package/dist/components/dataDisplay/table/tableCell.js.map +1 -1
- package/dist/components/dataDisplay/table/tableColumns.d.ts +83 -0
- package/dist/components/dataDisplay/table/tableColumns.js +112 -0
- package/dist/components/dataDisplay/table/tableColumns.js.map +1 -0
- package/dist/components/dataDisplay/table/tableHead.js +9 -3
- package/dist/components/dataDisplay/table/tableHead.js.map +1 -1
- package/dist/components/dataDisplay/table/tableHeadCell.d.ts +24 -3
- package/dist/components/dataDisplay/table/tableHeadCell.js +60 -65
- package/dist/components/dataDisplay/table/tableHeadCell.js.map +1 -1
- package/dist/components/dataDisplay/table/tableRow.d.ts +3 -1
- package/dist/components/dataDisplay/table/tableRow.js +28 -16
- package/dist/components/dataDisplay/table/tableRow.js.map +1 -1
- package/dist/components/dataDisplay/thumbCard/thumbCard.d.ts +44 -3
- package/dist/components/dataDisplay/thumbCard/thumbCard.js +79 -59
- package/dist/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
- package/dist/components/dataDisplay/treeView/treeView.d.ts +2 -0
- package/dist/components/dataDisplay/treeView/treeView.js +24 -23
- package/dist/components/dataDisplay/treeView/treeView.js.map +1 -1
- package/dist/components/feedBack/emptyState/emptyState.d.ts +2 -0
- package/dist/components/feedBack/emptyState/emptyState.js +22 -12
- package/dist/components/feedBack/emptyState/emptyState.js.map +1 -1
- package/dist/components/feedBack/message/message.d.ts +2 -0
- package/dist/components/feedBack/message/message.js +30 -19
- package/dist/components/feedBack/message/message.js.map +1 -1
- package/dist/components/feedBack/modal/modal.js +40 -40
- package/dist/components/feedBack/modal/modal.js.map +1 -1
- package/dist/components/feedBack/skeleton/skeleton.d.ts +10 -2
- package/dist/components/feedBack/skeleton/skeleton.js +37 -34
- package/dist/components/feedBack/skeleton/skeleton.js.map +1 -1
- package/dist/components/feedBack/snackbar/snackbar.js +104 -103
- package/dist/components/feedBack/snackbar/snackbar.js.map +1 -1
- package/dist/components/feedBack/tooltip/tooltip.d.ts +9 -1
- package/dist/components/feedBack/tooltip/tooltip.js +67 -47
- package/dist/components/feedBack/tooltip/tooltip.js.map +1 -1
- package/dist/components/inputs/button/button.d.ts +2 -0
- package/dist/components/inputs/button/button.js +62 -58
- package/dist/components/inputs/button/button.js.map +1 -1
- package/dist/components/inputs/buttonGroups/buttonGroup.d.ts +2 -0
- package/dist/components/inputs/buttonGroups/buttonGroup.js +40 -36
- package/dist/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
- package/dist/components/inputs/checkbox/checkbox.d.ts +10 -0
- package/dist/components/inputs/checkbox/checkbox.js +84 -59
- package/dist/components/inputs/checkbox/checkbox.js.map +1 -1
- package/dist/components/inputs/datePicker/datePicker.js +170 -164
- package/dist/components/inputs/datePicker/datePicker.js.map +1 -1
- package/dist/components/inputs/datePicker/datePickerDay.d.ts +1 -1
- package/dist/components/inputs/datePicker/datePickerDay.js +52 -44
- package/dist/components/inputs/datePicker/datePickerDay.js.map +1 -1
- package/dist/components/inputs/datePicker/datePickerIconButton.d.ts +1 -1
- package/dist/components/inputs/datePicker/datePickerIconButton.js +32 -28
- package/dist/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
- package/dist/components/inputs/dateTimePicker/dateTimePicker.js +160 -154
- package/dist/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
- package/dist/components/inputs/floatingButton/floatingButton.js +32 -30
- package/dist/components/inputs/floatingButton/floatingButton.js.map +1 -1
- package/dist/components/inputs/radioButton/radioButton.d.ts +9 -0
- package/dist/components/inputs/radioButton/radioButton.js +77 -58
- package/dist/components/inputs/radioButton/radioButton.js.map +1 -1
- package/dist/components/inputs/rating/rating.d.ts +8 -0
- package/dist/components/inputs/rating/rating.js +85 -70
- package/dist/components/inputs/rating/rating.js.map +1 -1
- package/dist/components/inputs/selectField/dropdownMenu.d.ts +20 -1
- package/dist/components/inputs/selectField/dropdownMenu.js +266 -113
- package/dist/components/inputs/selectField/dropdownMenu.js.map +1 -1
- package/dist/components/inputs/selectField/optionNavigation.d.ts +17 -0
- package/dist/components/inputs/selectField/optionNavigation.js +38 -0
- package/dist/components/inputs/selectField/optionNavigation.js.map +1 -0
- package/dist/components/inputs/selectField/selectField.d.ts +31 -1
- package/dist/components/inputs/selectField/selectField.js +358 -218
- package/dist/components/inputs/selectField/selectField.js.map +1 -1
- package/dist/components/inputs/slider/slider.d.ts +22 -1
- package/dist/components/inputs/slider/slider.js +330 -261
- package/dist/components/inputs/slider/slider.js.map +1 -1
- package/dist/components/inputs/textField/textField.d.ts +7 -0
- package/dist/components/inputs/textField/textField.js +118 -100
- package/dist/components/inputs/textField/textField.js.map +1 -1
- package/dist/components/inputs/textField/textFieldWrapper.d.ts +15 -1
- package/dist/components/inputs/textField/textFieldWrapper.js +45 -34
- package/dist/components/inputs/textField/textFieldWrapper.js.map +1 -1
- package/dist/components/inputs/timePicker/timePicker.js +91 -85
- package/dist/components/inputs/timePicker/timePicker.js.map +1 -1
- package/dist/components/inputs/toggle/toggle.d.ts +4 -0
- package/dist/components/inputs/toggle/toggle.js +80 -61
- package/dist/components/inputs/toggle/toggle.js.map +1 -1
- package/dist/components/inputs/valueSlider/valueSlider.d.ts +12 -0
- package/dist/components/inputs/valueSlider/valueSlider.js +23 -22
- package/dist/components/inputs/valueSlider/valueSlider.js.map +1 -1
- package/dist/components/layout/appLayout/appLayout.d.ts +2 -0
- package/dist/components/layout/appLayout/appLayout.js +25 -24
- package/dist/components/layout/appLayout/appLayout.js.map +1 -1
- package/dist/components/layout/divider/divider.d.ts +2 -0
- package/dist/components/layout/divider/divider.js +23 -22
- package/dist/components/layout/divider/divider.js.map +1 -1
- package/dist/components/layout/floatingWindow/floatingWindow.d.ts +2 -0
- package/dist/components/layout/floatingWindow/floatingWindow.js +145 -139
- package/dist/components/layout/floatingWindow/floatingWindow.js.map +1 -1
- package/dist/components/layout/grid/grid.d.ts +12 -1
- package/dist/components/layout/grid/grid.js +51 -36
- package/dist/components/layout/grid/grid.js.map +1 -1
- package/dist/components/layout/page/page.d.ts +2 -0
- package/dist/components/layout/page/page.js +16 -8
- package/dist/components/layout/page/page.js.map +1 -1
- package/dist/components/layout/pageHeader/pageHeader.d.ts +2 -0
- package/dist/components/layout/pageHeader/pageHeader.js +22 -13
- package/dist/components/layout/pageHeader/pageHeader.js.map +1 -1
- package/dist/components/layout/sectionHeader/sectionHeader.d.ts +2 -0
- package/dist/components/layout/sectionHeader/sectionHeader.js +37 -27
- package/dist/components/layout/sectionHeader/sectionHeader.js.map +1 -1
- package/dist/components/layout/sheet/sheet.d.ts +2 -0
- package/dist/components/layout/sheet/sheet.js +80 -79
- package/dist/components/layout/sheet/sheet.js.map +1 -1
- package/dist/components/layout/stack/stack.d.ts +2 -0
- package/dist/components/layout/stack/stack.js +29 -17
- package/dist/components/layout/stack/stack.js.map +1 -1
- package/dist/components/navigation/appBar/appBar.d.ts +2 -0
- package/dist/components/navigation/appBar/appBar.js +24 -23
- package/dist/components/navigation/appBar/appBar.js.map +1 -1
- package/dist/components/navigation/bottomBar/bottomBar.js +81 -77
- package/dist/components/navigation/bottomBar/bottomBar.js.map +1 -1
- package/dist/components/navigation/breadcrumbs/breadcrumbs.d.ts +2 -0
- package/dist/components/navigation/breadcrumbs/breadcrumbs.js +29 -27
- package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
- package/dist/components/navigation/menu/menu.d.ts +12 -0
- package/dist/components/navigation/menu/menu.js.map +1 -1
- package/dist/components/navigation/menu/menuContext.d.ts +2 -0
- package/dist/components/navigation/menu/menuContext.js.map +1 -1
- package/dist/components/navigation/menu/menuFloating.js +42 -30
- package/dist/components/navigation/menu/menuFloating.js.map +1 -1
- package/dist/components/navigation/menu/menuItem.d.ts +4 -0
- package/dist/components/navigation/menu/menuItem.js +60 -48
- package/dist/components/navigation/menu/menuItem.js.map +1 -1
- package/dist/components/navigation/menu/menuList.d.ts +5 -1
- package/dist/components/navigation/menu/menuList.js +30 -19
- package/dist/components/navigation/menu/menuList.js.map +1 -1
- package/dist/components/navigation/menu/menuSubmenu.js +53 -40
- package/dist/components/navigation/menu/menuSubmenu.js.map +1 -1
- package/dist/components/navigation/pagination/pagination.d.ts +2 -0
- package/dist/components/navigation/pagination/pagination.js +51 -49
- package/dist/components/navigation/pagination/pagination.js.map +1 -1
- package/dist/components/navigation/sidebar/sidebar.js +39 -38
- package/dist/components/navigation/sidebar/sidebar.js.map +1 -1
- package/dist/components/navigation/stepper/stepper.d.ts +2 -0
- package/dist/components/navigation/stepper/stepper.js +37 -28
- package/dist/components/navigation/stepper/stepper.js.map +1 -1
- package/dist/components/navigation/tabs/tab/tab.js +42 -40
- package/dist/components/navigation/tabs/tab/tab.js.map +1 -1
- package/dist/components/navigation/tabs/tabs.d.ts +6 -0
- package/dist/components/navigation/tabs/tabs.js +83 -86
- package/dist/components/navigation/tabs/tabs.js.map +1 -1
- package/dist/connects/rt/table/headerCellRenderer.d.ts +4 -1
- package/dist/connects/rt/table/headerCellRenderer.js +45 -15
- package/dist/connects/rt/table/headerCellRenderer.js.map +1 -1
- package/dist/connects/rt/table/table.d.ts +15 -1
- package/dist/connects/rt/table/table.js +125 -131
- package/dist/connects/rt/table/table.js.map +1 -1
- package/dist/headless/components/base/icon/icon.js +49 -37
- package/dist/headless/components/base/icon/icon.js.map +1 -1
- package/dist/headless/components/base/ripple/ripple.js +42 -27
- package/dist/headless/components/base/ripple/ripple.js.map +1 -1
- package/dist/headless/components/dataDisplay/avatar/avatar.js +51 -38
- package/dist/headless/components/dataDisplay/avatar/avatar.js.map +1 -1
- package/dist/headless/components/dataDisplay/badge/badge.js +37 -28
- package/dist/headless/components/dataDisplay/badge/badge.js.map +1 -1
- package/dist/headless/components/dataDisplay/card/card.js +50 -23
- package/dist/headless/components/dataDisplay/card/card.js.map +1 -1
- package/dist/headless/components/dataDisplay/carousel/carousel.js +55 -55
- package/dist/headless/components/dataDisplay/carousel/carousel.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chatIconButton.js +30 -26
- package/dist/headless/components/dataDisplay/chat/chatIconButton.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chatLayout.js +56 -55
- package/dist/headless/components/dataDisplay/chat/chatLayout.js.map +1 -1
- package/dist/headless/components/dataDisplay/chip/chip.js +108 -81
- package/dist/headless/components/dataDisplay/chip/chip.js.map +1 -1
- package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js +35 -31
- package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
- package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js.map +1 -1
- package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js +143 -98
- package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
- package/dist/headless/components/dataDisplay/kanban/kanban.js +45 -34
- package/dist/headless/components/dataDisplay/kanban/kanban.js.map +1 -1
- package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js +30 -29
- package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
- package/dist/headless/components/dataDisplay/list/list.js +15 -14
- package/dist/headless/components/dataDisplay/list/list.js.map +1 -1
- package/dist/headless/components/dataDisplay/meter/meter.js +19 -18
- package/dist/headless/components/dataDisplay/meter/meter.js.map +1 -1
- package/dist/headless/components/dataDisplay/personChip/personChip.js +39 -27
- package/dist/headless/components/dataDisplay/personChip/personChip.js.map +1 -1
- package/dist/headless/components/dataDisplay/stat/stat.js +27 -15
- package/dist/headless/components/dataDisplay/stat/stat.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/table.js +40 -36
- package/dist/headless/components/dataDisplay/table/table.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableBody.js +10 -4
- package/dist/headless/components/dataDisplay/table/tableBody.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableCell.js +20 -13
- package/dist/headless/components/dataDisplay/table/tableCell.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableColumns.js +112 -0
- package/dist/headless/components/dataDisplay/table/tableColumns.js.map +1 -0
- package/dist/headless/components/dataDisplay/table/tableHead.js +9 -3
- package/dist/headless/components/dataDisplay/table/tableHead.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableHeadCell.js +60 -65
- package/dist/headless/components/dataDisplay/table/tableHeadCell.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableRow.js +28 -16
- package/dist/headless/components/dataDisplay/table/tableRow.js.map +1 -1
- package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js +78 -58
- package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
- package/dist/headless/components/dataDisplay/treeView/treeView.js +24 -23
- package/dist/headless/components/dataDisplay/treeView/treeView.js.map +1 -1
- package/dist/headless/components/feedBack/emptyState/emptyState.js +21 -11
- package/dist/headless/components/feedBack/emptyState/emptyState.js.map +1 -1
- package/dist/headless/components/feedBack/message/message.js +31 -20
- package/dist/headless/components/feedBack/message/message.js.map +1 -1
- package/dist/headless/components/feedBack/modal/modal.js +44 -44
- package/dist/headless/components/feedBack/modal/modal.js.map +1 -1
- package/dist/headless/components/feedBack/skeleton/skeleton.js +38 -35
- package/dist/headless/components/feedBack/skeleton/skeleton.js.map +1 -1
- package/dist/headless/components/feedBack/snackbar/snackbar.js +108 -107
- package/dist/headless/components/feedBack/snackbar/snackbar.js.map +1 -1
- package/dist/headless/components/feedBack/tooltip/tooltip.js +67 -47
- package/dist/headless/components/feedBack/tooltip/tooltip.js.map +1 -1
- package/dist/headless/components/inputs/button/button.js +62 -58
- package/dist/headless/components/inputs/button/button.js.map +1 -1
- package/dist/headless/components/inputs/buttonGroups/buttonGroup.js +40 -36
- package/dist/headless/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
- package/dist/headless/components/inputs/checkbox/checkbox.js +85 -60
- package/dist/headless/components/inputs/checkbox/checkbox.js.map +1 -1
- package/dist/headless/components/inputs/datePicker/datePicker.js +170 -164
- package/dist/headless/components/inputs/datePicker/datePicker.js.map +1 -1
- package/dist/headless/components/inputs/datePicker/datePickerDay.js +52 -44
- package/dist/headless/components/inputs/datePicker/datePickerDay.js.map +1 -1
- package/dist/headless/components/inputs/datePicker/datePickerIconButton.js +32 -28
- package/dist/headless/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
- package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js +160 -154
- package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
- package/dist/headless/components/inputs/floatingButton/floatingButton.js +32 -30
- package/dist/headless/components/inputs/floatingButton/floatingButton.js.map +1 -1
- package/dist/headless/components/inputs/radioButton/radioButton.js +77 -58
- package/dist/headless/components/inputs/radioButton/radioButton.js.map +1 -1
- package/dist/headless/components/inputs/rating/rating.js +85 -70
- package/dist/headless/components/inputs/rating/rating.js.map +1 -1
- package/dist/headless/components/inputs/selectField/dropdownMenu.js +266 -113
- package/dist/headless/components/inputs/selectField/dropdownMenu.js.map +1 -1
- package/dist/headless/components/inputs/selectField/optionNavigation.js +38 -0
- package/dist/headless/components/inputs/selectField/optionNavigation.js.map +1 -0
- package/dist/headless/components/inputs/selectField/selectField.js +358 -218
- package/dist/headless/components/inputs/selectField/selectField.js.map +1 -1
- package/dist/headless/components/inputs/slider/slider.js +330 -261
- package/dist/headless/components/inputs/slider/slider.js.map +1 -1
- package/dist/headless/components/inputs/textField/textField.js +118 -100
- package/dist/headless/components/inputs/textField/textField.js.map +1 -1
- package/dist/headless/components/inputs/textField/textFieldWrapper.js +45 -34
- package/dist/headless/components/inputs/textField/textFieldWrapper.js.map +1 -1
- package/dist/headless/components/inputs/timePicker/timePicker.js +91 -85
- package/dist/headless/components/inputs/timePicker/timePicker.js.map +1 -1
- package/dist/headless/components/inputs/toggle/toggle.js +79 -60
- package/dist/headless/components/inputs/toggle/toggle.js.map +1 -1
- package/dist/headless/components/inputs/valueSlider/valueSlider.js +25 -24
- package/dist/headless/components/inputs/valueSlider/valueSlider.js.map +1 -1
- package/dist/headless/components/layout/appLayout/appLayout.js +27 -26
- package/dist/headless/components/layout/appLayout/appLayout.js.map +1 -1
- package/dist/headless/components/layout/divider/divider.js +18 -17
- package/dist/headless/components/layout/divider/divider.js.map +1 -1
- package/dist/headless/components/layout/floatingWindow/floatingWindow.js +145 -139
- package/dist/headless/components/layout/floatingWindow/floatingWindow.js.map +1 -1
- package/dist/headless/components/layout/grid/grid.js +48 -33
- package/dist/headless/components/layout/grid/grid.js.map +1 -1
- package/dist/headless/components/layout/page/page.js +15 -7
- package/dist/headless/components/layout/page/page.js.map +1 -1
- package/dist/headless/components/layout/pageHeader/pageHeader.js +20 -11
- package/dist/headless/components/layout/pageHeader/pageHeader.js.map +1 -1
- package/dist/headless/components/layout/sectionHeader/sectionHeader.js +36 -26
- package/dist/headless/components/layout/sectionHeader/sectionHeader.js.map +1 -1
- package/dist/headless/components/layout/sheet/sheet.js +80 -79
- package/dist/headless/components/layout/sheet/sheet.js.map +1 -1
- package/dist/headless/components/layout/stack/stack.js +29 -17
- package/dist/headless/components/layout/stack/stack.js.map +1 -1
- package/dist/headless/components/navigation/appBar/appBar.js +15 -14
- package/dist/headless/components/navigation/appBar/appBar.js.map +1 -1
- package/dist/headless/components/navigation/bottomBar/bottomBar.js +81 -77
- package/dist/headless/components/navigation/bottomBar/bottomBar.js.map +1 -1
- package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js +32 -30
- package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
- package/dist/headless/components/navigation/menu/menu.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuContext.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuFloating.js +42 -30
- package/dist/headless/components/navigation/menu/menuFloating.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuItem.js +60 -48
- package/dist/headless/components/navigation/menu/menuItem.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuList.js +30 -19
- package/dist/headless/components/navigation/menu/menuList.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuSubmenu.js +53 -40
- package/dist/headless/components/navigation/menu/menuSubmenu.js.map +1 -1
- package/dist/headless/components/navigation/pagination/pagination.js +51 -49
- package/dist/headless/components/navigation/pagination/pagination.js.map +1 -1
- package/dist/headless/components/navigation/sidebar/sidebar.js +29 -28
- package/dist/headless/components/navigation/sidebar/sidebar.js.map +1 -1
- package/dist/headless/components/navigation/stepper/stepper.js +42 -33
- package/dist/headless/components/navigation/stepper/stepper.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tab/tab.js +41 -39
- package/dist/headless/components/navigation/tabs/tab/tab.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tabs.js +95 -98
- package/dist/headless/components/navigation/tabs/tabs.js.map +1 -1
- package/dist/headless/hooks/useDismissOnEscape.js +16 -0
- package/dist/headless/hooks/useDismissOnEscape.js.map +1 -0
- package/dist/headless/hooks/useFocusTrap.js +1 -0
- package/dist/headless/hooks/useFocusTrap.js.map +1 -1
- package/dist/headless/hooks/useHelperText.js +13 -0
- package/dist/headless/hooks/useHelperText.js.map +1 -0
- package/dist/headless/utils/controlProps.js +14 -0
- package/dist/headless/utils/controlProps.js.map +1 -0
- package/dist/headless/utils/overlayLayer.js +14 -7
- package/dist/headless/utils/overlayLayer.js.map +1 -1
- package/dist/headless/utils/ownClick.js +40 -0
- package/dist/headless/utils/ownClick.js.map +1 -0
- package/dist/headless/utils/readOnlyToggle.js +14 -0
- package/dist/headless/utils/readOnlyToggle.js.map +1 -0
- package/dist/hooks/useDismissOnEscape.d.ts +11 -0
- package/dist/hooks/useDismissOnEscape.js +16 -0
- package/dist/hooks/useDismissOnEscape.js.map +1 -0
- package/dist/hooks/useFocusTrap.d.ts +2 -0
- package/dist/hooks/useFocusTrap.js +1 -0
- package/dist/hooks/useFocusTrap.js.map +1 -1
- package/dist/hooks/useHelperText.d.ts +21 -0
- package/dist/hooks/useHelperText.js +13 -0
- package/dist/hooks/useHelperText.js.map +1 -0
- package/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/utils/controlProps.d.ts +16 -0
- package/dist/utils/controlProps.js +14 -0
- package/dist/utils/controlProps.js.map +1 -0
- package/dist/utils/overlayLayer.d.ts +15 -3
- package/dist/utils/overlayLayer.js +14 -7
- package/dist/utils/overlayLayer.js.map +1 -1
- package/dist/utils/ownClick.d.ts +16 -0
- package/dist/utils/ownClick.js +40 -0
- package/dist/utils/ownClick.js.map +1 -0
- package/dist/utils/readOnlyToggle.d.ts +15 -0
- package/dist/utils/readOnlyToggle.js +14 -0
- package/dist/utils/readOnlyToggle.js.map +1 -0
- package/package.json +2 -2
|
@@ -1,43 +1,45 @@
|
|
|
1
|
-
import { jsxs as
|
|
1
|
+
import { jsxs as d, jsx as x } from "react/jsx-runtime";
|
|
2
2
|
import '../../../assets/styles/less/components/floatingButton/floatingButton.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
|
|
3
3
|
/* empty css */
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import { Ripple as
|
|
7
|
-
const
|
|
8
|
-
children:
|
|
9
|
-
className:
|
|
10
|
-
onMouseDown:
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
4
|
+
import s from "react";
|
|
5
|
+
import $ from "clsx";
|
|
6
|
+
import { Ripple as g } from "../../base/ripple/ripple.js";
|
|
7
|
+
const _ = s.forwardRef(function({
|
|
8
|
+
children: c,
|
|
9
|
+
className: l,
|
|
10
|
+
onMouseDown: m,
|
|
11
|
+
// The button sets this on its root too; its own handler calls the caller's first.
|
|
12
|
+
onPointerDown: f,
|
|
13
|
+
variant: r = "default",
|
|
14
|
+
size: e = "medium",
|
|
15
|
+
color: u = "primary",
|
|
16
|
+
type: b = "button",
|
|
17
|
+
...n
|
|
18
|
+
}, o) {
|
|
19
|
+
const i = s.useRef(null), R = (t) => {
|
|
20
|
+
m == null || m(t);
|
|
21
|
+
}, p = (t) => {
|
|
22
|
+
var a;
|
|
23
|
+
f == null || f(t), (a = i.current) == null || a.onRipple(t);
|
|
22
24
|
};
|
|
23
|
-
return /* @__PURE__ */
|
|
25
|
+
return /* @__PURE__ */ d(
|
|
24
26
|
"button",
|
|
25
27
|
{
|
|
26
|
-
ref:
|
|
27
|
-
type:
|
|
28
|
-
className:
|
|
29
|
-
onMouseDown:
|
|
30
|
-
onPointerDown:
|
|
31
|
-
...
|
|
28
|
+
ref: o,
|
|
29
|
+
type: b,
|
|
30
|
+
className: $("smwb-fab", `smwb-${r}`, `smwb-${e}`, `smwb-fab_color-${u}`, l),
|
|
31
|
+
onMouseDown: R,
|
|
32
|
+
onPointerDown: p,
|
|
33
|
+
...n,
|
|
32
34
|
children: [
|
|
33
|
-
|
|
34
|
-
/* @__PURE__ */
|
|
35
|
+
c,
|
|
36
|
+
/* @__PURE__ */ x(g, { actionRef: i })
|
|
35
37
|
]
|
|
36
38
|
}
|
|
37
39
|
);
|
|
38
40
|
});
|
|
39
41
|
export {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
+
_ as FloatingButton,
|
|
43
|
+
_ as default
|
|
42
44
|
};
|
|
43
45
|
//# sourceMappingURL=floatingButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floatingButton.js","sources":["../../../../src/components/inputs/floatingButton/floatingButton.tsx"],"sourcesContent":["import React, { ButtonHTMLAttributes } from \"react\";\nimport cn from \"clsx\";\nimport { Ripple, RippleActionsRef } from \"../../base/ripple/ripple\";\n\nexport type FloatingButtonColor = \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport interface FloatingButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n className?: string;\n variant?: \"extended\" | \"default\";\n size?: \"small\" | \"medium\" | \"large\";\n /** Semantic color. Resolves through the shared `--smui-*Color*` tokens. */\n color?: FloatingButtonColor;\n}\n\nexport const FloatingButton = React.forwardRef<HTMLButtonElement, FloatingButtonProps>(function FloatingButton(\n {\n children,\n className,\n onMouseDown: onMouseDownProp,\n variant = \"default\",\n size = \"medium\",\n color = \"primary\",\n type = \"button\",\n ...rest\n },\n ref\n) {\n const rippleRef = React.useRef<RippleActionsRef>(null);\n\n const onMouseDown = (event: React.MouseEvent<HTMLButtonElement>) => {\n onMouseDownProp?.(event);\n };\n\n // Ripple on pointerdown so it fires for touch and pen, not just mouse.\n const onPointerDown = (event: React.PointerEvent<HTMLButtonElement>) => {\n rippleRef.current?.onRipple(event);\n };\n\n return (\n <button\n ref={ref}\n type={type}\n className={cn(\"smwb-fab\", `smwb-${variant}`, `smwb-${size}`, `smwb-fab_color-${color}`, className)}\n onMouseDown={onMouseDown}\n onPointerDown={onPointerDown}\n {...rest}\n >\n {children}\n <Ripple actionRef={rippleRef} />\n </button>\n );\n});\n\nexport default FloatingButton;\n"],"names":["FloatingButton","React","children","className","onMouseDownProp","variant","size","color","type","rest","ref","rippleRef","onMouseDown","event","onPointerDown","_a","jsxs","cn","jsx","Ripple"],"mappings":";;;;;;AAgBO,MAAMA,IAAiBC,EAAM,WAAmD,SACrF;AAAA,EACE,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,aAAaC;AAAA,
|
|
1
|
+
{"version":3,"file":"floatingButton.js","sources":["../../../../src/components/inputs/floatingButton/floatingButton.tsx"],"sourcesContent":["import React, { ButtonHTMLAttributes } from \"react\";\nimport cn from \"clsx\";\nimport { Ripple, RippleActionsRef } from \"../../base/ripple/ripple\";\n\nexport type FloatingButtonColor = \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport interface FloatingButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n className?: string;\n variant?: \"extended\" | \"default\";\n size?: \"small\" | \"medium\" | \"large\";\n /** Semantic color. Resolves through the shared `--smui-*Color*` tokens. */\n color?: FloatingButtonColor;\n}\n\nexport const FloatingButton = React.forwardRef<HTMLButtonElement, FloatingButtonProps>(function FloatingButton(\n {\n children,\n className,\n onMouseDown: onMouseDownProp,\n // The button sets this on its root too; its own handler calls the caller's first.\n onPointerDown: onPointerDownProp,\n variant = \"default\",\n size = \"medium\",\n color = \"primary\",\n type = \"button\",\n ...rest\n },\n ref\n) {\n const rippleRef = React.useRef<RippleActionsRef>(null);\n\n const onMouseDown = (event: React.MouseEvent<HTMLButtonElement>) => {\n onMouseDownProp?.(event);\n };\n\n // Ripple on pointerdown so it fires for touch and pen, not just mouse.\n const onPointerDown = (event: React.PointerEvent<HTMLButtonElement>) => {\n onPointerDownProp?.(event);\n rippleRef.current?.onRipple(event);\n };\n\n return (\n <button\n ref={ref}\n type={type}\n className={cn(\"smwb-fab\", `smwb-${variant}`, `smwb-${size}`, `smwb-fab_color-${color}`, className)}\n onMouseDown={onMouseDown}\n onPointerDown={onPointerDown}\n {...rest}\n >\n {children}\n <Ripple actionRef={rippleRef} />\n </button>\n );\n});\n\nexport default FloatingButton;\n"],"names":["FloatingButton","React","children","className","onMouseDownProp","onPointerDownProp","variant","size","color","type","rest","ref","rippleRef","onMouseDown","event","onPointerDown","_a","jsxs","cn","jsx","Ripple"],"mappings":";;;;;;AAgBO,MAAMA,IAAiBC,EAAM,WAAmD,SACrF;AAAA,EACE,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,aAAaC;AAAA;AAAA,EAEb,eAAeC;AAAA,EACf,SAAAC,IAAU;AAAA,EACV,MAAAC,IAAO;AAAA,EACP,OAAAC,IAAQ;AAAA,EACR,MAAAC,IAAO;AAAA,EACP,GAAGC;AACL,GACAC,GACA;AACA,QAAMC,IAAYX,EAAM,OAAyB,IAAI,GAE/CY,IAAc,CAACC,MAA+C;AAClE,IAAAV,KAAA,QAAAA,EAAkBU;AAAA,EACpB,GAGMC,IAAgB,CAACD,MAAiD;;AACtE,IAAAT,KAAA,QAAAA,EAAoBS,KACpBE,IAAAJ,EAAU,YAAV,QAAAI,EAAmB,SAASF;AAAA,EAC9B;AAEA,SACE,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAN;AAAA,MACA,MAAAF;AAAA,MACA,WAAWS,EAAG,YAAY,QAAQZ,CAAO,IAAI,QAAQC,CAAI,IAAI,kBAAkBC,CAAK,IAAIL,CAAS;AAAA,MACjG,aAAAU;AAAA,MACA,eAAAE;AAAA,MACC,GAAGL;AAAA,MAEH,UAAA;AAAA,QAAAR;AAAA,QACD,gBAAAiB,EAACC,GAAA,EAAO,WAAWR,EAAA,CAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGpC,CAAC;"}
|
|
@@ -3,6 +3,13 @@ import type { SelectionControlColor, SelectionControlSize } from "../checkbox/ch
|
|
|
3
3
|
export interface RadioButtonProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "onChange" | "size"> {
|
|
4
4
|
label?: string;
|
|
5
5
|
disabled?: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Keeps the radio as it is: clicks on it or its label, Space and the arrow keys of its group do not check it, and
|
|
8
|
+
* `onChange` is not called. It stays focusable.
|
|
9
|
+
*
|
|
10
|
+
* The input does not tell assistive technology it is read-only: ARIA has no read-only state for a single radio,
|
|
11
|
+
* only for its group. Put `role="radiogroup"`, a name and `aria-readonly="true"` on the element around the radios.
|
|
12
|
+
*/
|
|
6
13
|
readOnly?: boolean;
|
|
7
14
|
required?: boolean;
|
|
8
15
|
name?: string;
|
|
@@ -14,6 +21,8 @@ export interface RadioButtonProps extends Omit<InputHTMLAttributes<HTMLInputElem
|
|
|
14
21
|
error?: boolean;
|
|
15
22
|
/** Unified handler: `(event, value, data)` where `value` is the radio's value (or checked state). */
|
|
16
23
|
onChange?: (event: React.ChangeEvent<HTMLInputElement>, value: string | number | readonly string[] | boolean | undefined, data: RadioButtonProps) => void;
|
|
24
|
+
/** Test id of the `<input>`; `radio` unless given. */
|
|
25
|
+
"data-testid"?: string;
|
|
17
26
|
}
|
|
18
27
|
export declare const RadioButton: React.ForwardRefExoticComponent<RadioButtonProps & React.RefAttributes<HTMLInputElement>>;
|
|
19
28
|
export default RadioButton;
|
|
@@ -1,70 +1,89 @@
|
|
|
1
|
-
import { jsx as
|
|
1
|
+
import { jsx as d, jsxs as h } from "react/jsx-runtime";
|
|
2
2
|
import '../../../assets/styles/less/components/radioButton/radioButton.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
|
|
3
3
|
/* empty css */
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
4
|
+
import B from "react";
|
|
5
|
+
import s from "clsx";
|
|
6
|
+
import { useHelperText as C } from "../../../hooks/useHelperText.js";
|
|
7
|
+
import { useId as R } from "../../../hooks/useId.js";
|
|
8
|
+
import { cancelToggle as I, forgetCancelledToggle as j } from "../../../utils/readOnlyToggle.js";
|
|
9
|
+
import { TextFieldWrapper as q } from "../textField/textFieldWrapper.js";
|
|
10
|
+
const G = B.forwardRef(function(e, u) {
|
|
9
11
|
const {
|
|
10
|
-
label:
|
|
11
|
-
disabled:
|
|
12
|
-
readOnly:
|
|
13
|
-
required:
|
|
14
|
-
name:
|
|
15
|
-
id:
|
|
16
|
-
size:
|
|
17
|
-
color:
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
12
|
+
label: t,
|
|
13
|
+
disabled: i,
|
|
14
|
+
readOnly: r,
|
|
15
|
+
required: o,
|
|
16
|
+
name: w,
|
|
17
|
+
id: _,
|
|
18
|
+
size: g = "medium",
|
|
19
|
+
color: x = "primary",
|
|
20
|
+
"data-testid": y = "radio",
|
|
21
|
+
helperText: c,
|
|
22
|
+
error: m,
|
|
23
|
+
onChange: l,
|
|
24
|
+
className: N,
|
|
25
|
+
"aria-describedby": k,
|
|
26
|
+
...p
|
|
27
|
+
} = e, n = R(_), b = C(c, { describedBy: k }), T = (a) => {
|
|
28
|
+
if (r) {
|
|
29
|
+
j(a, e.checked);
|
|
26
30
|
return;
|
|
27
31
|
}
|
|
28
|
-
|
|
32
|
+
l == null || l(a, e.value !== void 0 ? e.value : a.target.checked, e);
|
|
33
|
+
}, v = (a) => {
|
|
34
|
+
var f;
|
|
35
|
+
(f = e.onClick) == null || f.call(e, a), r && I(a, e.checked);
|
|
29
36
|
};
|
|
30
|
-
return /* @__PURE__ */
|
|
31
|
-
|
|
37
|
+
return /* @__PURE__ */ d(
|
|
38
|
+
q,
|
|
32
39
|
{
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
children:
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
40
|
+
helperText: c,
|
|
41
|
+
helperTextId: b.id,
|
|
42
|
+
disabled: i,
|
|
43
|
+
error: m,
|
|
44
|
+
className: "smwb-text-field-checkbox",
|
|
45
|
+
children: /* @__PURE__ */ h(
|
|
46
|
+
"label",
|
|
47
|
+
{
|
|
48
|
+
htmlFor: n,
|
|
49
|
+
className: s("smwb-radio", `smwb-radio_size-${g}`, `smwb-radio_color-${x}`, {
|
|
50
|
+
"smwb-disabled": i,
|
|
51
|
+
"smwb-readonly": r
|
|
52
|
+
}),
|
|
53
|
+
children: [
|
|
54
|
+
/* @__PURE__ */ h("span", { className: "smwb-radio__wrapper", children: [
|
|
55
|
+
/* @__PURE__ */ d(
|
|
56
|
+
"input",
|
|
57
|
+
{
|
|
58
|
+
id: n,
|
|
59
|
+
name: w,
|
|
60
|
+
disabled: i,
|
|
61
|
+
readOnly: r,
|
|
62
|
+
required: o,
|
|
63
|
+
"aria-invalid": m || void 0,
|
|
64
|
+
"aria-required": o || void 0,
|
|
65
|
+
"aria-describedby": b.describedBy,
|
|
66
|
+
className: s("smwb-radio__input", N),
|
|
67
|
+
type: "radio",
|
|
68
|
+
"data-testid": y,
|
|
69
|
+
ref: u,
|
|
70
|
+
...p,
|
|
71
|
+
onChange: T,
|
|
72
|
+
onClick: v
|
|
73
|
+
}
|
|
74
|
+
),
|
|
75
|
+
/* @__PURE__ */ d("span", { className: s("smwb-radio__btn", { "smwb-disabled": i }) }),
|
|
76
|
+
/* @__PURE__ */ d("span", { className: s("smwb-radio__bg", { "smwb-disabled": i }) })
|
|
77
|
+
] }),
|
|
78
|
+
t && /* @__PURE__ */ d("span", { className: "smwb-radio__label", children: t })
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
)
|
|
63
82
|
}
|
|
64
|
-
)
|
|
83
|
+
);
|
|
65
84
|
});
|
|
66
85
|
export {
|
|
67
|
-
|
|
68
|
-
|
|
86
|
+
G as RadioButton,
|
|
87
|
+
G as default
|
|
69
88
|
};
|
|
70
89
|
//# 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.
|
|
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 { useHelperText } from \"../../../hooks/useHelperText\";\nimport { useId } from \"../../../hooks/useId\";\nimport { cancelToggle, forgetCancelledToggle } from \"../../../utils/readOnlyToggle\";\nimport type { SelectionControlColor, SelectionControlSize } from \"../checkbox/checkbox\";\n\nexport interface RadioButtonProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"size\"> {\n label?: string;\n disabled?: boolean;\n /**\n * Keeps the radio as it is: clicks on it or its label, Space and the arrow keys of its group do not check it, and\n * `onChange` is not called. It stays focusable.\n *\n * The input does not tell assistive technology it is read-only: ARIA has no read-only state for a single radio,\n * only for its group. Put `role=\"radiogroup\"`, a name and `aria-readonly=\"true\"` on the element around the radios.\n */\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 /** Test id of the `<input>`; `radio` unless given. */\n \"data-testid\"?: string;\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 \"data-testid\": dataTestId = \"radio\",\n helperText,\n error,\n onChange,\n className,\n \"aria-describedby\": ariaDescribedBy,\n ...args\n } = props;\n const id = useId(idProp);\n const helper = useHelperText(helperText, { describedBy: ariaDescribedBy });\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (readOnly) {\n forgetCancelledToggle(e, props.checked);\n return;\n }\n onChange?.(e, props.value !== undefined ? props.value : e.target.checked, props);\n };\n\n const handleClick = (e: React.MouseEvent<HTMLInputElement>) => {\n props.onClick?.(e);\n if (readOnly) cancelToggle(e, props.checked);\n };\n\n return (\n <TextFieldWrapper\n helperText={helperText}\n helperTextId={helper.id}\n disabled={disabled}\n error={error}\n className=\"smwb-text-field-checkbox\"\n >\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 aria-describedby={helper.describedBy}\n className={cn(\"smwb-radio__input\", className)}\n type=\"radio\"\n data-testid={dataTestId}\n ref={ref}\n {...args}\n onChange={handleChange}\n onClick={handleClick}\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","dataTestId","helperText","error","onChange","className","ariaDescribedBy","args","id","useId","helper","useHelperText","handleChange","e","forgetCancelledToggle","handleClick","_a","cancelToggle","jsx","TextFieldWrapper","jsxs","cn"],"mappings":";;;;;;;;;AAuCO,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,eAAeC,IAAa;AAAA,IAC5B,YAAAC;AAAA,IACA,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,oBAAoBC;AAAA,IACpB,GAAGC;AAAA,EAAA,IACDhB,GACEiB,IAAKC,EAAMX,CAAM,GACjBY,IAASC,EAAcT,GAAY,EAAE,aAAaI,GAAiB,GAEnEM,IAAe,CAACC,MAA2C;AAC/D,QAAIlB,GAAU;AACZ,MAAAmB,EAAsBD,GAAGtB,EAAM,OAAO;AACtC;AAAA,IACF;AACA,IAAAa,KAAA,QAAAA,EAAWS,GAAGtB,EAAM,UAAU,SAAYA,EAAM,QAAQsB,EAAE,OAAO,SAAStB;AAAA,EAC5E,GAEMwB,IAAc,CAACF,MAA0C;;AAC7D,KAAAG,IAAAzB,EAAM,YAAN,QAAAyB,EAAA,KAAAzB,GAAgBsB,IACZlB,KAAUsB,EAAaJ,GAAGtB,EAAM,OAAO;AAAA,EAC7C;AAEA,SACE,gBAAA2B;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,YAAAjB;AAAA,MACA,cAAcQ,EAAO;AAAA,MACrB,UAAAhB;AAAA,MACA,OAAAS;AAAA,MACA,WAAU;AAAA,MAEV,UAAA,gBAAAiB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAASZ;AAAA,UACT,WAAWa,EAAG,cAAc,mBAAmBtB,CAAI,IAAI,oBAAoBC,CAAK,IAAI;AAAA,YAClF,iBAAiBN;AAAA,YACjB,iBAAiBC;AAAA,UAAA,CAClB;AAAA,UAED,UAAA;AAAA,YAAA,gBAAAyB,EAAC,QAAA,EAAK,WAAU,uBACd,UAAA;AAAA,cAAA,gBAAAF;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,IAAAV;AAAA,kBACA,MAAAX;AAAA,kBACA,UAAAH;AAAA,kBACA,UAAAC;AAAA,kBACA,UAAAC;AAAA,kBACA,gBAAcO,KAAS;AAAA,kBACvB,iBAAeP,KAAY;AAAA,kBAC3B,oBAAkBc,EAAO;AAAA,kBACzB,WAAWW,EAAG,qBAAqBhB,CAAS;AAAA,kBAC5C,MAAK;AAAA,kBACL,eAAaJ;AAAA,kBACb,KAAAT;AAAA,kBACC,GAAGe;AAAA,kBACJ,UAAUK;AAAA,kBACV,SAASG;AAAA,gBAAA;AAAA,cAAA;AAAA,cAEX,gBAAAG,EAAC,UAAK,WAAWG,EAAG,mBAAmB,EAAE,iBAAiB3B,EAAA,CAAU,GAAG;AAAA,cACvE,gBAAAwB,EAAC,UAAK,WAAWG,EAAG,kBAAkB,EAAE,iBAAiB3B,EAAA,CAAU,EAAA,CAAG;AAAA,YAAA,GACxE;AAAA,YACCD,KAAS,gBAAAyB,EAAC,QAAA,EAAK,WAAU,qBAAqB,UAAAzB,EAAA,CAAM;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACvD;AAAA,EAAA;AAGN,CAAC;"}
|
|
@@ -24,7 +24,15 @@ export interface RatingProps {
|
|
|
24
24
|
error?: boolean;
|
|
25
25
|
/** Supporting text shown below the control. */
|
|
26
26
|
helperText?: ReactNode;
|
|
27
|
+
/** Id of the control: the slider, or the image of a read-only rating. */
|
|
27
28
|
id?: string;
|
|
29
|
+
/**
|
|
30
|
+
* What is rated: the accessible name of the slider, "Rating" by default. A read-only rating is an image named by
|
|
31
|
+
* its value ("3 of 5"), after this label.
|
|
32
|
+
*/
|
|
33
|
+
"aria-label"?: string;
|
|
34
|
+
/** Ids of more elements that describe the control, after its helper text. */
|
|
35
|
+
"aria-describedby"?: string;
|
|
28
36
|
onChange?: (value: number) => void;
|
|
29
37
|
}
|
|
30
38
|
export declare const Rating: import("react").ForwardRefExoticComponent<RatingProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
@@ -1,86 +1,101 @@
|
|
|
1
|
-
import { jsxs as
|
|
1
|
+
import { jsxs as H, jsx as s } from "react/jsx-runtime";
|
|
2
2
|
import '../../../assets/styles/less/components/rating/rating.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
|
|
3
3
|
/* empty css */
|
|
4
|
-
import { forwardRef as
|
|
5
|
-
import
|
|
6
|
-
import { Icon as
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
4
|
+
import { forwardRef as Q, useState as B } from "react";
|
|
5
|
+
import j from "clsx";
|
|
6
|
+
import { Icon as E } from "../../base/icon/icon.js";
|
|
7
|
+
import { useHelperText as V, hasHelperText as W } from "../../../hooks/useHelperText.js";
|
|
8
|
+
const at = Q(function({
|
|
9
|
+
className: K,
|
|
10
|
+
value: u,
|
|
11
|
+
defaultValue: S = 0,
|
|
12
|
+
max: n = 5,
|
|
13
|
+
precision: m = 1,
|
|
14
|
+
readOnly: i = !1,
|
|
15
|
+
disabled: w = !1,
|
|
16
|
+
size: d = 28,
|
|
17
|
+
icon: _,
|
|
18
|
+
emptyIcon: p,
|
|
19
|
+
name: k,
|
|
20
|
+
color: D = "primary",
|
|
21
|
+
error: M,
|
|
22
|
+
helperText: b,
|
|
23
|
+
id: T,
|
|
24
|
+
"aria-label": g,
|
|
25
|
+
"aria-describedby": x,
|
|
26
|
+
onChange: e
|
|
27
|
+
}, F) {
|
|
28
|
+
const R = u !== void 0, [L, N] = B(S), [v, h] = B(null), l = u !== void 0 ? u : L, U = v != null ? v : l, a = !i && !w, $ = (t, r) => {
|
|
29
|
+
if (m === 1)
|
|
27
30
|
return r + 1;
|
|
28
|
-
const { left:
|
|
29
|
-
return r + (
|
|
30
|
-
},
|
|
31
|
-
if (!
|
|
31
|
+
const { left: o, width: c } = t.currentTarget.getBoundingClientRect(), P = t.clientX - o < c / 2;
|
|
32
|
+
return r + (P ? 0.5 : 1);
|
|
33
|
+
}, X = (t, r) => {
|
|
34
|
+
if (!a)
|
|
32
35
|
return;
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
},
|
|
36
|
-
const r = Math.max(0, Math.min(
|
|
37
|
-
|
|
38
|
-
},
|
|
39
|
-
|
|
40
|
-
};
|
|
41
|
-
return /* @__PURE__ */
|
|
36
|
+
const o = $(t, r);
|
|
37
|
+
R || N(o), e == null || e(o);
|
|
38
|
+
}, q = _ != null ? _ : /* @__PURE__ */ s(E, { name: "star", fill: 1, size: d }), G = p != null ? p : /* @__PURE__ */ s(E, { name: "star", size: d }), f = (t) => {
|
|
39
|
+
const r = Math.max(0, Math.min(n, t));
|
|
40
|
+
R || N(r), e == null || e(r);
|
|
41
|
+
}, I = (t) => {
|
|
42
|
+
a && (t.key === "ArrowRight" || t.key === "ArrowUp" ? (t.preventDefault(), f(l + m)) : t.key === "ArrowLeft" || t.key === "ArrowDown" ? (t.preventDefault(), f(l - m)) : t.key === "Home" ? (t.preventDefault(), f(0)) : t.key === "End" && (t.preventDefault(), f(n)));
|
|
43
|
+
}, A = V(b, { describedBy: x }), y = `${l} of ${n}`, J = i ? g ? `${g} ${y}` : y : g || "Rating";
|
|
44
|
+
return /* @__PURE__ */ H(
|
|
42
45
|
"span",
|
|
43
46
|
{
|
|
44
|
-
|
|
45
|
-
id: E,
|
|
46
|
-
className: $(
|
|
47
|
+
className: j(
|
|
47
48
|
"smwb-rating",
|
|
48
|
-
{ "smwb-rating_readonly":
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
{ "smwb-rating_readonly": i, "smwb-rating_disabled": w, "smwb-rating_error": M },
|
|
50
|
+
D !== "primary" && `smwb-rating_color-${D}`,
|
|
51
|
+
K
|
|
51
52
|
),
|
|
52
|
-
"data-testid": "rating",
|
|
53
|
-
role: "img",
|
|
54
|
-
"aria-label": `${n} of ${o}`,
|
|
55
|
-
tabIndex: l ? 0 : void 0,
|
|
56
|
-
onKeyDown: l ? q : void 0,
|
|
57
53
|
children: [
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
54
|
+
/* @__PURE__ */ s(
|
|
55
|
+
"span",
|
|
56
|
+
{
|
|
57
|
+
ref: F,
|
|
58
|
+
id: T,
|
|
59
|
+
className: "smwb-rating__control",
|
|
60
|
+
"data-testid": "rating",
|
|
61
|
+
role: i ? "img" : "slider",
|
|
62
|
+
"aria-label": J,
|
|
63
|
+
"aria-valuemin": i ? void 0 : 0,
|
|
64
|
+
"aria-valuemax": i ? void 0 : n,
|
|
65
|
+
"aria-valuenow": i ? void 0 : l,
|
|
66
|
+
"aria-valuetext": i ? void 0 : y,
|
|
67
|
+
"aria-disabled": !i && w ? !0 : void 0,
|
|
68
|
+
"aria-describedby": A.describedBy,
|
|
69
|
+
tabIndex: a ? 0 : void 0,
|
|
70
|
+
onKeyDown: a ? I : void 0,
|
|
71
|
+
children: Array.from({ length: n }, (t, r) => {
|
|
72
|
+
const o = Math.max(0, Math.min(1, U - r));
|
|
73
|
+
return /* @__PURE__ */ H(
|
|
74
|
+
"span",
|
|
75
|
+
{
|
|
76
|
+
className: "smwb-rating__item",
|
|
77
|
+
style: { width: d, height: d, cursor: a ? "pointer" : "default" },
|
|
78
|
+
onClick: (c) => X(c, r),
|
|
79
|
+
onMouseMove: a && m === 0.5 ? (c) => h($(c, r)) : a ? () => h(r + 1) : void 0,
|
|
80
|
+
onMouseLeave: () => h(null),
|
|
81
|
+
children: [
|
|
82
|
+
/* @__PURE__ */ s("span", { className: "smwb-rating__icon smwb-rating__icon_empty", children: G }),
|
|
83
|
+
/* @__PURE__ */ s("span", { className: "smwb-rating__icon smwb-rating__icon_filled", style: { width: `${o * 100}%` }, children: q })
|
|
84
|
+
]
|
|
85
|
+
},
|
|
86
|
+
r
|
|
87
|
+
);
|
|
88
|
+
})
|
|
89
|
+
}
|
|
90
|
+
),
|
|
91
|
+
k ? /* @__PURE__ */ s("input", { type: "hidden", name: k, value: l, readOnly: !0 }) : null,
|
|
92
|
+
W(b) ? /* @__PURE__ */ s("span", { id: A.id, className: j("smwb-rating__helper", M && "smwb-rating__helper_error"), children: b }) : null
|
|
78
93
|
]
|
|
79
94
|
}
|
|
80
95
|
);
|
|
81
96
|
});
|
|
82
97
|
export {
|
|
83
|
-
|
|
84
|
-
|
|
98
|
+
at as Rating,
|
|
99
|
+
at as default
|
|
85
100
|
};
|
|
86
101
|
//# 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":"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"}
|
|
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\";\nimport { hasHelperText, useHelperText } from \"../../../hooks/useHelperText\";\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 of the control: the slider, or the image of a read-only rating. */\n id?: string;\n /**\n * What is rated: the accessible name of the slider, \"Rating\" by default. A read-only rating is an image named by\n * its value (\"3 of 5\"), after this label.\n */\n \"aria-label\"?: string;\n /** Ids of more elements that describe the control, after its helper text. */\n \"aria-describedby\"?: 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 \"aria-label\": ariaLabel,\n \"aria-describedby\": ariaDescribedBy,\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 const helper = useHelperText(helperText, { describedBy: ariaDescribedBy });\n const valueText = `${current} of ${max}`;\n // The slider is named by what is rated. An image has no value, so its name\n // carries the value too.\n const label = readOnly ? (ariaLabel ? `${ariaLabel} ${valueText}` : valueText) : ariaLabel || \"Rating\";\n\n // The control is a slider, or an image named by its value when the rating is\n // read-only. The helper text stays outside it: the children of a slider or an\n // image are presentational, so assistive technology would never read it.\n return (\n <span\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 >\n <span\n ref={ref}\n id={id}\n className=\"smwb-rating__control\"\n data-testid=\"rating\"\n role={readOnly ? \"img\" : \"slider\"}\n aria-label={label}\n aria-valuemin={readOnly ? undefined : 0}\n aria-valuemax={readOnly ? undefined : max}\n aria-valuenow={readOnly ? undefined : current}\n aria-valuetext={readOnly ? undefined : valueText}\n aria-disabled={!readOnly && disabled ? true : undefined}\n aria-describedby={helper.describedBy}\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 // Always clears the preview, so a rating that turns read-only while\n // hovered does not keep it.\n onMouseLeave={() => setHover(null)}\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 </span>\n {name ? <input type=\"hidden\" name={name} value={current} readOnly /> : null}\n {hasHelperText(helperText) ? (\n <span id={helper.id} className={cn(\"smwb-rating__helper\", error && \"smwb-rating__helper_error\")}>\n {helperText}\n </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","ariaLabel","ariaDescribedBy","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","helper","useHelperText","valueText","label","jsxs","cn","_","index","fillRatio","hasHelperText"],"mappings":"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"}
|
|
@@ -36,5 +36,24 @@ export interface DropdownItemProps<T extends HTMLElement = HTMLElement> {
|
|
|
36
36
|
virtualized?: boolean;
|
|
37
37
|
/** Row height (px) used when `virtualized`. */
|
|
38
38
|
itemHeight?: number;
|
|
39
|
+
/** Id of the listbox; the options' ids follow from it (`dropdownOptionId`). */
|
|
40
|
+
listboxId?: string;
|
|
41
|
+
/** Ids of the elements that name the listbox and the search box in the menu. */
|
|
42
|
+
labelledBy?: string;
|
|
43
|
+
/** Names the listbox and the search box in the menu when no element does. */
|
|
44
|
+
label?: string;
|
|
45
|
+
/** Several options can be selected (`aria-multiselectable`). */
|
|
46
|
+
multiple?: boolean;
|
|
47
|
+
/** Index of the active option, counting `items` and then the create option; -1 for none. */
|
|
48
|
+
activeIndex?: number;
|
|
49
|
+
/** Marks the active option and keeps it in view: the keyboard moved to it. */
|
|
50
|
+
showActive?: boolean;
|
|
51
|
+
/** Attributes and handlers of the search box in the menu, which the field makes a combobox. */
|
|
52
|
+
searchInputProps?: React.InputHTMLAttributes<HTMLInputElement>;
|
|
53
|
+
searchInputRef?: React.Ref<HTMLInputElement>;
|
|
54
|
+
/** The menu's root element. */
|
|
55
|
+
menuRef?: React.Ref<HTMLDivElement>;
|
|
39
56
|
}
|
|
40
|
-
|
|
57
|
+
/** Id of the option at `index` in the listbox `listboxId`. */
|
|
58
|
+
export declare function dropdownOptionId(listboxId: string, index: number): string;
|
|
59
|
+
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, listboxId, labelledBy, label, multiple, activeIndex, showActive, searchInputProps, searchInputRef, menuRef, }: DropdownItemProps<T>): React.ReactPortal | null;
|