@smwb/ui-solid 0.12.1 → 0.13.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 +74 -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/dagView/dagView.entry.css +1 -0
- 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/components/base/animateHeight/animateHeight.js +41 -42
- package/dist/components/base/animateHeight/animateHeight.js.map +1 -1
- package/dist/components/base/icon/icon.d.ts +6 -2
- package/dist/components/base/icon/icon.js +41 -41
- 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 +46 -34
- 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 +37 -33
- package/dist/components/dataDisplay/avatar/avatar.js.map +1 -1
- package/dist/components/dataDisplay/card/card.d.ts +32 -1
- package/dist/components/dataDisplay/card/card.js +47 -34
- package/dist/components/dataDisplay/card/card.js.map +1 -1
- package/dist/components/dataDisplay/carousel/carousel.js +92 -88
- package/dist/components/dataDisplay/carousel/carousel.js.map +1 -1
- package/dist/components/dataDisplay/chart/chart.d.ts +2 -0
- package/dist/components/dataDisplay/chat/chatIconButton.js +23 -13
- package/dist/components/dataDisplay/chat/chatIconButton.js.map +1 -1
- package/dist/components/dataDisplay/chat/chatLayout.d.ts +2 -0
- package/dist/components/dataDisplay/chat/chatLayout.js +33 -29
- package/dist/components/dataDisplay/chat/chatLayout.js.map +1 -1
- package/dist/components/dataDisplay/chat/chatOverlayLayout.d.ts +2 -0
- package/dist/components/dataDisplay/chat/chatOverlayLayout.js +19 -17
- package/dist/components/dataDisplay/chat/chatOverlayLayout.js.map +1 -1
- package/dist/components/dataDisplay/chip/chip.d.ts +32 -0
- package/dist/components/dataDisplay/chip/chip.js +104 -63
- package/dist/components/dataDisplay/chip/chip.js.map +1 -1
- package/dist/components/dataDisplay/chipGroup/chipGroup.js +44 -39
- package/dist/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
- package/dist/components/dataDisplay/dagView/dagLayout.d.ts +74 -0
- package/dist/components/dataDisplay/dagView/dagLayout.js +284 -0
- package/dist/components/dataDisplay/dagView/dagLayout.js.map +1 -0
- package/dist/components/dataDisplay/dagView/dagView.d.ts +151 -0
- package/dist/components/dataDisplay/dagView/dagView.js +488 -0
- package/dist/components/dataDisplay/dagView/dagView.js.map +1 -0
- package/dist/components/dataDisplay/dagView/index.d.ts +4 -0
- package/dist/components/dataDisplay/dagView/panZoom.d.ts +75 -0
- package/dist/components/dataDisplay/dagView/panZoom.js +161 -0
- package/dist/components/dataDisplay/dagView/panZoom.js.map +1 -0
- package/dist/components/dataDisplay/descriptionList/descriptionList.d.ts +11 -3
- package/dist/components/dataDisplay/descriptionList/descriptionList.js +20 -24
- package/dist/components/dataDisplay/descriptionList/descriptionList.js.map +1 -1
- package/dist/components/dataDisplay/expansionPanel/expansionPanel.js +114 -81
- 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 +71 -61
- package/dist/components/dataDisplay/kanban/kanban.js.map +1 -1
- package/dist/components/dataDisplay/lazyImage/lazyImage.js +14 -12
- 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 +16 -12
- package/dist/components/dataDisplay/list/list.js.map +1 -1
- package/dist/components/dataDisplay/list/listItem.js +20 -18
- package/dist/components/dataDisplay/list/listItem.js.map +1 -1
- package/dist/components/dataDisplay/meter/meter.d.ts +2 -0
- package/dist/components/dataDisplay/meter/meter.js +15 -13
- 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 +12 -10
- 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 +41 -43
- package/dist/components/dataDisplay/stat/stat.js.map +1 -1
- package/dist/components/dataDisplay/table/table.d.ts +10 -1
- package/dist/components/dataDisplay/table/table.js +46 -22
- package/dist/components/dataDisplay/table/table.js.map +1 -1
- package/dist/components/dataDisplay/table/tableBody.js +25 -12
- 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 +15 -14
- package/dist/components/dataDisplay/table/tableCell.js.map +1 -1
- package/dist/components/dataDisplay/table/tableColumns.d.ts +146 -0
- package/dist/components/dataDisplay/table/tableColumns.js +254 -0
- package/dist/components/dataDisplay/table/tableColumns.js.map +1 -0
- package/dist/components/dataDisplay/table/tableEntities.d.ts +4 -0
- package/dist/components/dataDisplay/table/tableEntities.js +6 -0
- package/dist/components/dataDisplay/table/tableEntities.js.map +1 -0
- package/dist/components/dataDisplay/table/tableHead.js +29 -11
- package/dist/components/dataDisplay/table/tableHead.js.map +1 -1
- package/dist/components/dataDisplay/table/tableHeadCell.d.ts +23 -1
- package/dist/components/dataDisplay/table/tableHeadCell.js +51 -26
- package/dist/components/dataDisplay/table/tableHeadCell.js.map +1 -1
- package/dist/components/dataDisplay/table/tableHtmlText.d.ts +8 -0
- package/dist/components/dataDisplay/table/tableHtmlText.js +121 -0
- package/dist/components/dataDisplay/table/tableHtmlText.js.map +1 -0
- package/dist/components/dataDisplay/table/tableRow.d.ts +2 -0
- package/dist/components/dataDisplay/table/tableRow.js +28 -13
- 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 +86 -58
- 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 +4 -2
- package/dist/components/dataDisplay/treeView/treeView.js.map +1 -1
- package/dist/components/dataDisplay/typography/typography.js +22 -26
- package/dist/components/dataDisplay/typography/typography.js.map +1 -1
- package/dist/components/feedBack/emptyState/emptyState.d.ts +2 -0
- package/dist/components/feedBack/emptyState/emptyState.js +20 -16
- 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 +17 -13
- package/dist/components/feedBack/message/message.js.map +1 -1
- package/dist/components/feedBack/modal/modal.js +20 -16
- 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 +43 -35
- package/dist/components/feedBack/skeleton/skeleton.js.map +1 -1
- package/dist/components/feedBack/snackbar/snackbar.js +24 -20
- 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 +65 -41
- 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 +48 -20
- 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 +14 -10
- 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 +59 -36
- package/dist/components/inputs/checkbox/checkbox.js.map +1 -1
- package/dist/components/inputs/datePicker/datePicker.js +108 -97
- package/dist/components/inputs/datePicker/datePicker.js.map +1 -1
- package/dist/components/inputs/datePicker/datePickerActionLabel.js +19 -17
- package/dist/components/inputs/datePicker/datePickerActionLabel.js.map +1 -1
- package/dist/components/inputs/datePicker/datePickerDay.js +41 -25
- package/dist/components/inputs/datePicker/datePickerDay.js.map +1 -1
- package/dist/components/inputs/datePicker/datePickerIconButton.js +24 -14
- package/dist/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
- package/dist/components/inputs/dateTimePicker/dateTimePicker.js +90 -79
- package/dist/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
- package/dist/components/inputs/floatingButton/floatingButton.js +26 -16
- 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 +48 -34
- package/dist/components/inputs/radioButton/radioButton.js.map +1 -1
- package/dist/components/inputs/rating/rating.d.ts +9 -0
- package/dist/components/inputs/rating/rating.js +74 -53
- package/dist/components/inputs/rating/rating.js.map +1 -1
- package/dist/components/inputs/selectField/dropdownMenu.d.ts +21 -1
- package/dist/components/inputs/selectField/dropdownMenu.js +268 -143
- 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 +37 -0
- package/dist/components/inputs/selectField/optionNavigation.js.map +1 -0
- package/dist/components/inputs/selectField/selectField.d.ts +32 -1
- package/dist/components/inputs/selectField/selectField.js +297 -126
- package/dist/components/inputs/selectField/selectField.js.map +1 -1
- package/dist/components/inputs/slider/slider.d.ts +25 -3
- package/dist/components/inputs/slider/slider.js +320 -197
- package/dist/components/inputs/slider/slider.js.map +1 -1
- package/dist/components/inputs/textField/textField.d.ts +9 -1
- package/dist/components/inputs/textField/textField.js +104 -51
- package/dist/components/inputs/textField/textField.js.map +1 -1
- package/dist/components/inputs/textField/textFieldWrapper.d.ts +14 -0
- package/dist/components/inputs/textField/textFieldWrapper.js +52 -45
- package/dist/components/inputs/textField/textFieldWrapper.js.map +1 -1
- package/dist/components/inputs/timePicker/timePicker.js +73 -62
- 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 +43 -31
- 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 +32 -27
- 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 +32 -30
- 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 +22 -20
- 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 +171 -168
- package/dist/components/layout/floatingWindow/floatingWindow.js.map +1 -1
- package/dist/components/layout/grid/grid.d.ts +8 -0
- package/dist/components/layout/grid/grid.js +52 -44
- 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 +14 -12
- 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 +23 -21
- 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 +38 -36
- 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 +50 -48
- 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 +26 -24
- 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 +18 -16
- package/dist/components/navigation/appBar/appBar.js.map +1 -1
- package/dist/components/navigation/bottomBar/bottomBar.js +125 -120
- 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 +18 -14
- package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
- package/dist/components/navigation/menu/menu.d.ts +6 -0
- package/dist/components/navigation/menu/menu.js.map +1 -1
- package/dist/components/navigation/menu/menuComponent.js +12 -23
- package/dist/components/navigation/menu/menuComponent.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 +54 -46
- 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 +58 -33
- package/dist/components/navigation/menu/menuItem.js.map +1 -1
- package/dist/components/navigation/menu/menuList.d.ts +4 -0
- package/dist/components/navigation/menu/menuList.js +34 -16
- package/dist/components/navigation/menu/menuList.js.map +1 -1
- package/dist/components/navigation/menu/menuSubmenu.d.ts +8 -1
- package/dist/components/navigation/menu/menuSubmenu.js +58 -38
- 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 +28 -24
- package/dist/components/navigation/pagination/pagination.js.map +1 -1
- package/dist/components/navigation/sidebar/sidebar.js +27 -25
- 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 +46 -42
- package/dist/components/navigation/stepper/stepper.js.map +1 -1
- package/dist/components/navigation/tabs/tab/tab.js +46 -35
- package/dist/components/navigation/tabs/tab/tab.js.map +1 -1
- package/dist/components/navigation/tabs/tabs.d.ts +7 -0
- package/dist/components/navigation/tabs/tabs.js +90 -75
- package/dist/components/navigation/tabs/tabs.js.map +1 -1
- package/dist/components/navigation/tabs/tabsContext.d.ts +6 -4
- package/dist/components/navigation/tabs/tabsContext.js.map +1 -1
- package/dist/connects/rt/table/table.d.ts +16 -1
- package/dist/headless/components/base/animateHeight/animateHeight.js +41 -42
- package/dist/headless/components/base/animateHeight/animateHeight.js.map +1 -1
- package/dist/headless/components/base/icon/icon.js +40 -40
- package/dist/headless/components/base/icon/icon.js.map +1 -1
- package/dist/headless/components/base/ripple/ripple.js +46 -34
- package/dist/headless/components/base/ripple/ripple.js.map +1 -1
- package/dist/headless/components/dataDisplay/avatar/avatar.js +37 -33
- package/dist/headless/components/dataDisplay/avatar/avatar.js.map +1 -1
- package/dist/headless/components/dataDisplay/card/card.js +44 -31
- package/dist/headless/components/dataDisplay/card/card.js.map +1 -1
- package/dist/headless/components/dataDisplay/carousel/carousel.js +102 -98
- package/dist/headless/components/dataDisplay/carousel/carousel.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chatIconButton.js +23 -13
- package/dist/headless/components/dataDisplay/chat/chatIconButton.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chatLayout.js +33 -29
- package/dist/headless/components/dataDisplay/chat/chatLayout.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chatOverlayLayout.js +19 -17
- package/dist/headless/components/dataDisplay/chat/chatOverlayLayout.js.map +1 -1
- package/dist/headless/components/dataDisplay/chip/chip.js +104 -63
- package/dist/headless/components/dataDisplay/chip/chip.js.map +1 -1
- package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js +44 -39
- package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
- package/dist/headless/components/dataDisplay/dagView/dagLayout.js +284 -0
- package/dist/headless/components/dataDisplay/dagView/dagLayout.js.map +1 -0
- package/dist/headless/components/dataDisplay/dagView/dagView.js +486 -0
- package/dist/headless/components/dataDisplay/dagView/dagView.js.map +1 -0
- package/dist/headless/components/dataDisplay/dagView/panZoom.js +161 -0
- package/dist/headless/components/dataDisplay/dagView/panZoom.js.map +1 -0
- package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js +15 -19
- package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js.map +1 -1
- package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js +114 -81
- package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
- package/dist/headless/components/dataDisplay/kanban/kanban.js +71 -61
- package/dist/headless/components/dataDisplay/kanban/kanban.js.map +1 -1
- package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js +14 -12
- package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
- package/dist/headless/components/dataDisplay/list/list.js +16 -12
- package/dist/headless/components/dataDisplay/list/list.js.map +1 -1
- package/dist/headless/components/dataDisplay/list/listItem.js +20 -18
- package/dist/headless/components/dataDisplay/list/listItem.js.map +1 -1
- package/dist/headless/components/dataDisplay/meter/meter.js +14 -12
- package/dist/headless/components/dataDisplay/meter/meter.js.map +1 -1
- package/dist/headless/components/dataDisplay/personChip/personChip.js +12 -10
- package/dist/headless/components/dataDisplay/personChip/personChip.js.map +1 -1
- package/dist/headless/components/dataDisplay/stat/stat.js +43 -45
- package/dist/headless/components/dataDisplay/stat/stat.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/table.js +47 -23
- package/dist/headless/components/dataDisplay/table/table.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableBody.js +25 -12
- package/dist/headless/components/dataDisplay/table/tableBody.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableCell.js +15 -14
- package/dist/headless/components/dataDisplay/table/tableCell.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableColumns.js +254 -0
- package/dist/headless/components/dataDisplay/table/tableColumns.js.map +1 -0
- package/dist/headless/components/dataDisplay/table/tableEntities.js +6 -0
- package/dist/headless/components/dataDisplay/table/tableEntities.js.map +1 -0
- package/dist/headless/components/dataDisplay/table/tableHead.js +29 -11
- package/dist/headless/components/dataDisplay/table/tableHead.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableHeadCell.js +51 -26
- package/dist/headless/components/dataDisplay/table/tableHeadCell.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableHtmlText.js +121 -0
- package/dist/headless/components/dataDisplay/table/tableHtmlText.js.map +1 -0
- package/dist/headless/components/dataDisplay/table/tableRow.js +28 -13
- package/dist/headless/components/dataDisplay/table/tableRow.js.map +1 -1
- package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js +86 -58
- package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
- package/dist/headless/components/dataDisplay/treeView/treeView.js +4 -2
- package/dist/headless/components/dataDisplay/treeView/treeView.js.map +1 -1
- package/dist/headless/components/dataDisplay/typography/typography.js +21 -25
- package/dist/headless/components/dataDisplay/typography/typography.js.map +1 -1
- package/dist/headless/components/feedBack/emptyState/emptyState.js +9 -5
- package/dist/headless/components/feedBack/emptyState/emptyState.js.map +1 -1
- package/dist/headless/components/feedBack/message/message.js +17 -13
- package/dist/headless/components/feedBack/message/message.js.map +1 -1
- package/dist/headless/components/feedBack/modal/modal.js +20 -16
- package/dist/headless/components/feedBack/modal/modal.js.map +1 -1
- package/dist/headless/components/feedBack/skeleton/skeleton.js +43 -35
- package/dist/headless/components/feedBack/skeleton/skeleton.js.map +1 -1
- package/dist/headless/components/feedBack/snackbar/snackbar.js +30 -26
- package/dist/headless/components/feedBack/snackbar/snackbar.js.map +1 -1
- package/dist/headless/components/feedBack/tooltip/tooltip.js +63 -39
- package/dist/headless/components/feedBack/tooltip/tooltip.js.map +1 -1
- package/dist/headless/components/inputs/button/button.js +51 -23
- package/dist/headless/components/inputs/button/button.js.map +1 -1
- package/dist/headless/components/inputs/buttonGroups/buttonGroup.js +22 -18
- package/dist/headless/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
- package/dist/headless/components/inputs/checkbox/checkbox.js +59 -36
- package/dist/headless/components/inputs/checkbox/checkbox.js.map +1 -1
- package/dist/headless/components/inputs/datePicker/datePicker.js +106 -95
- package/dist/headless/components/inputs/datePicker/datePicker.js.map +1 -1
- package/dist/headless/components/inputs/datePicker/datePickerActionLabel.js +19 -17
- package/dist/headless/components/inputs/datePicker/datePickerActionLabel.js.map +1 -1
- package/dist/headless/components/inputs/datePicker/datePickerDay.js +41 -25
- package/dist/headless/components/inputs/datePicker/datePickerDay.js.map +1 -1
- package/dist/headless/components/inputs/datePicker/datePickerIconButton.js +24 -14
- package/dist/headless/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
- package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js +90 -79
- package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
- package/dist/headless/components/inputs/floatingButton/floatingButton.js +25 -15
- package/dist/headless/components/inputs/floatingButton/floatingButton.js.map +1 -1
- package/dist/headless/components/inputs/radioButton/radioButton.js +48 -34
- package/dist/headless/components/inputs/radioButton/radioButton.js.map +1 -1
- package/dist/headless/components/inputs/rating/rating.js +74 -53
- package/dist/headless/components/inputs/rating/rating.js.map +1 -1
- package/dist/headless/components/inputs/selectField/dropdownMenu.js +268 -143
- package/dist/headless/components/inputs/selectField/dropdownMenu.js.map +1 -1
- package/dist/headless/components/inputs/selectField/optionNavigation.js +37 -0
- package/dist/headless/components/inputs/selectField/optionNavigation.js.map +1 -0
- package/dist/headless/components/inputs/selectField/selectField.js +297 -126
- package/dist/headless/components/inputs/selectField/selectField.js.map +1 -1
- package/dist/headless/components/inputs/slider/slider.js +320 -197
- package/dist/headless/components/inputs/slider/slider.js.map +1 -1
- package/dist/headless/components/inputs/textField/textField.js +104 -51
- package/dist/headless/components/inputs/textField/textField.js.map +1 -1
- package/dist/headless/components/inputs/textField/textFieldWrapper.js +52 -45
- package/dist/headless/components/inputs/textField/textFieldWrapper.js.map +1 -1
- package/dist/headless/components/inputs/timePicker/timePicker.js +74 -63
- package/dist/headless/components/inputs/timePicker/timePicker.js.map +1 -1
- package/dist/headless/components/inputs/toggle/toggle.js +42 -30
- package/dist/headless/components/inputs/toggle/toggle.js.map +1 -1
- package/dist/headless/components/inputs/valueSlider/valueSlider.js +33 -28
- package/dist/headless/components/inputs/valueSlider/valueSlider.js.map +1 -1
- package/dist/headless/components/layout/appLayout/appLayout.js +29 -27
- package/dist/headless/components/layout/appLayout/appLayout.js.map +1 -1
- package/dist/headless/components/layout/divider/divider.js +19 -17
- package/dist/headless/components/layout/divider/divider.js.map +1 -1
- package/dist/headless/components/layout/floatingWindow/floatingWindow.js +185 -182
- package/dist/headless/components/layout/floatingWindow/floatingWindow.js.map +1 -1
- package/dist/headless/components/layout/grid/grid.js +54 -46
- package/dist/headless/components/layout/grid/grid.js.map +1 -1
- package/dist/headless/components/layout/page/page.js +12 -10
- package/dist/headless/components/layout/page/page.js.map +1 -1
- package/dist/headless/components/layout/pageHeader/pageHeader.js +22 -20
- package/dist/headless/components/layout/pageHeader/pageHeader.js.map +1 -1
- package/dist/headless/components/layout/sectionHeader/sectionHeader.js +39 -37
- package/dist/headless/components/layout/sectionHeader/sectionHeader.js.map +1 -1
- package/dist/headless/components/layout/sheet/sheet.js +50 -48
- package/dist/headless/components/layout/sheet/sheet.js.map +1 -1
- package/dist/headless/components/layout/stack/stack.js +23 -21
- package/dist/headless/components/layout/stack/stack.js.map +1 -1
- package/dist/headless/components/navigation/appBar/appBar.js +15 -13
- package/dist/headless/components/navigation/appBar/appBar.js.map +1 -1
- package/dist/headless/components/navigation/bottomBar/bottomBar.js +125 -120
- package/dist/headless/components/navigation/bottomBar/bottomBar.js.map +1 -1
- package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js +13 -9
- 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/menuComponent.js +12 -23
- package/dist/headless/components/navigation/menu/menuComponent.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuContext.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuFloating.js +54 -46
- package/dist/headless/components/navigation/menu/menuFloating.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuItem.js +58 -33
- package/dist/headless/components/navigation/menu/menuItem.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuList.js +34 -16
- package/dist/headless/components/navigation/menu/menuList.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuSubmenu.js +58 -38
- package/dist/headless/components/navigation/menu/menuSubmenu.js.map +1 -1
- package/dist/headless/components/navigation/pagination/pagination.js +23 -19
- package/dist/headless/components/navigation/pagination/pagination.js.map +1 -1
- package/dist/headless/components/navigation/sidebar/sidebar.js +14 -12
- package/dist/headless/components/navigation/sidebar/sidebar.js.map +1 -1
- package/dist/headless/components/navigation/stepper/stepper.js +38 -34
- package/dist/headless/components/navigation/stepper/stepper.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tab/tab.js +48 -37
- package/dist/headless/components/navigation/tabs/tab/tab.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tabs.js +91 -76
- package/dist/headless/components/navigation/tabs/tabs.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tabsContext.js.map +1 -1
- package/dist/headless/index.js +224 -220
- package/dist/headless/index.js.map +1 -1
- package/dist/headless/primitives/createDismissOnEscape.js +14 -0
- package/dist/headless/primitives/createDismissOnEscape.js.map +1 -0
- package/dist/headless/primitives/createFocusTrap.js +1 -0
- package/dist/headless/primitives/createFocusTrap.js.map +1 -1
- package/dist/headless/primitives/createHelperText.js +14 -0
- package/dist/headless/primitives/createHelperText.js.map +1 -0
- package/dist/headless/primitives/mergeStyle.js +9 -0
- package/dist/headless/primitives/mergeStyle.js.map +1 -0
- package/dist/headless/primitives/overlayLayer.js +14 -7
- package/dist/headless/primitives/overlayLayer.js.map +1 -1
- package/dist/headless/source/components/base/animateHeight/animateHeight.jsx +7 -11
- package/dist/headless/source/components/base/animateHeight/animateHeight.jsx.map +1 -1
- package/dist/headless/source/components/base/icon/icon.jsx +10 -12
- package/dist/headless/source/components/base/icon/icon.jsx.map +1 -1
- package/dist/headless/source/components/base/ripple/ripple.jsx +16 -4
- package/dist/headless/source/components/base/ripple/ripple.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/avatar/avatar.jsx +14 -7
- package/dist/headless/source/components/dataDisplay/avatar/avatar.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/card/card.jsx +31 -12
- package/dist/headless/source/components/dataDisplay/card/card.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/carousel/carousel.jsx +9 -3
- package/dist/headless/source/components/dataDisplay/carousel/carousel.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chart/chart.jsx +5 -4
- package/dist/headless/source/components/dataDisplay/chart/chart.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatIconButton.jsx +13 -3
- package/dist/headless/source/components/dataDisplay/chat/chatIconButton.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatLayout.jsx +6 -7
- package/dist/headless/source/components/dataDisplay/chat/chatLayout.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chat/chatOverlayLayout.jsx +5 -6
- package/dist/headless/source/components/dataDisplay/chat/chatOverlayLayout.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chip/chip.jsx +55 -19
- package/dist/headless/source/components/dataDisplay/chip/chip.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chipGroup/chipGroup.jsx +14 -11
- package/dist/headless/source/components/dataDisplay/chipGroup/chipGroup.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/dagView/dagLayout.js +383 -0
- package/dist/headless/source/components/dataDisplay/dagView/dagLayout.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/dagView/dagView.jsx +639 -0
- package/dist/headless/source/components/dataDisplay/dagView/dagView.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/dagView/index.js +10 -0
- package/dist/headless/source/components/dataDisplay/dagView/index.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/dagView/panZoom.js +247 -0
- package/dist/headless/source/components/dataDisplay/dagView/panZoom.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/descriptionList/descriptionList.jsx +4 -6
- package/dist/headless/source/components/dataDisplay/descriptionList/descriptionList.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/expansionPanel/expansionPanel.jsx +83 -9
- package/dist/headless/source/components/dataDisplay/expansionPanel/expansionPanel.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/kanban/kanban.jsx +20 -10
- package/dist/headless/source/components/dataDisplay/kanban/kanban.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/lazyImage/lazyImage.jsx +1 -1
- package/dist/headless/source/components/dataDisplay/lazyImage/lazyImage.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/list/list.jsx +3 -3
- package/dist/headless/source/components/dataDisplay/list/list.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/list/listItem.jsx +11 -10
- package/dist/headless/source/components/dataDisplay/list/listItem.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/meter/meter.jsx +3 -2
- package/dist/headless/source/components/dataDisplay/meter/meter.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/personChip/personChip.jsx +3 -2
- package/dist/headless/source/components/dataDisplay/personChip/personChip.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/stat/stat.jsx +7 -8
- package/dist/headless/source/components/dataDisplay/stat/stat.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/table/table.jsx +18 -1
- package/dist/headless/source/components/dataDisplay/table/table.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/table/tableBody.jsx +6 -1
- package/dist/headless/source/components/dataDisplay/table/tableBody.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/table/tableCell.jsx +13 -4
- package/dist/headless/source/components/dataDisplay/table/tableCell.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/table/tableColumns.jsx +311 -0
- package/dist/headless/source/components/dataDisplay/table/tableColumns.jsx.map +1 -0
- package/dist/headless/source/components/dataDisplay/table/tableEntities.js +7 -0
- package/dist/headless/source/components/dataDisplay/table/tableEntities.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/table/tableHead.jsx +14 -1
- package/dist/headless/source/components/dataDisplay/table/tableHead.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/table/tableHeadCell.jsx +51 -33
- package/dist/headless/source/components/dataDisplay/table/tableHeadCell.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/table/tableHtmlText.js +140 -0
- package/dist/headless/source/components/dataDisplay/table/tableHtmlText.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/table/tableRow.jsx +11 -5
- package/dist/headless/source/components/dataDisplay/table/tableRow.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/thumbCard/thumbCard.jsx +48 -19
- package/dist/headless/source/components/dataDisplay/thumbCard/thumbCard.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/treeView/treeView.jsx +9 -2
- package/dist/headless/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/typography/typography.jsx +2 -6
- package/dist/headless/source/components/dataDisplay/typography/typography.jsx.map +1 -1
- package/dist/headless/source/components/feedBack/emptyState/emptyState.jsx +12 -2
- package/dist/headless/source/components/feedBack/emptyState/emptyState.jsx.map +1 -1
- package/dist/headless/source/components/feedBack/message/message.jsx +5 -4
- package/dist/headless/source/components/feedBack/message/message.jsx.map +1 -1
- package/dist/headless/source/components/feedBack/modal/modal.jsx +5 -2
- package/dist/headless/source/components/feedBack/modal/modal.jsx.map +1 -1
- package/dist/headless/source/components/feedBack/skeleton/skeleton.jsx +12 -5
- package/dist/headless/source/components/feedBack/skeleton/skeleton.jsx.map +1 -1
- package/dist/headless/source/components/feedBack/snackbar/snackbar.jsx +3 -3
- package/dist/headless/source/components/feedBack/snackbar/snackbar.jsx.map +1 -1
- package/dist/headless/source/components/feedBack/tooltip/tooltip.jsx +52 -5
- package/dist/headless/source/components/feedBack/tooltip/tooltip.jsx.map +1 -1
- package/dist/headless/source/components/inputs/button/button.jsx +8 -3
- package/dist/headless/source/components/inputs/button/button.jsx.map +1 -1
- package/dist/headless/source/components/inputs/buttonGroups/buttonGroup.jsx +4 -3
- package/dist/headless/source/components/inputs/buttonGroups/buttonGroup.jsx.map +1 -1
- package/dist/headless/source/components/inputs/checkbox/checkbox.jsx +27 -4
- package/dist/headless/source/components/inputs/checkbox/checkbox.jsx.map +1 -1
- package/dist/headless/source/components/inputs/datePicker/datePicker.jsx +13 -0
- package/dist/headless/source/components/inputs/datePicker/datePicker.jsx.map +1 -1
- package/dist/headless/source/components/inputs/datePicker/datePickerActionLabel.jsx +4 -1
- package/dist/headless/source/components/inputs/datePicker/datePickerActionLabel.jsx.map +1 -1
- package/dist/headless/source/components/inputs/datePicker/datePickerDay.jsx +12 -12
- package/dist/headless/source/components/inputs/datePicker/datePickerDay.jsx.map +1 -1
- package/dist/headless/source/components/inputs/datePicker/datePickerIconButton.jsx +13 -3
- package/dist/headless/source/components/inputs/datePicker/datePickerIconButton.jsx.map +1 -1
- package/dist/headless/source/components/inputs/dateTimePicker/dateTimePicker.jsx +13 -0
- package/dist/headless/source/components/inputs/dateTimePicker/dateTimePicker.jsx.map +1 -1
- package/dist/headless/source/components/inputs/floatingButton/floatingButton.jsx +12 -1
- package/dist/headless/source/components/inputs/floatingButton/floatingButton.jsx.map +1 -1
- package/dist/headless/source/components/inputs/radioButton/radioButton.jsx +16 -4
- package/dist/headless/source/components/inputs/radioButton/radioButton.jsx.map +1 -1
- package/dist/headless/source/components/inputs/rating/rating.jsx +49 -20
- package/dist/headless/source/components/inputs/rating/rating.jsx.map +1 -1
- package/dist/headless/source/components/inputs/selectField/dropdownMenu.jsx +222 -61
- package/dist/headless/source/components/inputs/selectField/dropdownMenu.jsx.map +1 -1
- package/dist/headless/source/components/inputs/selectField/optionNavigation.js +51 -0
- package/dist/headless/source/components/inputs/selectField/optionNavigation.js.map +7 -0
- package/dist/headless/source/components/inputs/selectField/selectField.jsx +318 -92
- package/dist/headless/source/components/inputs/selectField/selectField.jsx.map +1 -1
- package/dist/headless/source/components/inputs/slider/slider.jsx +89 -18
- package/dist/headless/source/components/inputs/slider/slider.jsx.map +1 -1
- package/dist/headless/source/components/inputs/textField/textField.jsx +47 -9
- package/dist/headless/source/components/inputs/textField/textField.jsx.map +1 -1
- package/dist/headless/source/components/inputs/textField/textFieldWrapper.jsx +20 -6
- package/dist/headless/source/components/inputs/textField/textFieldWrapper.jsx.map +1 -1
- package/dist/headless/source/components/inputs/timePicker/timePicker.jsx +13 -0
- package/dist/headless/source/components/inputs/timePicker/timePicker.jsx.map +1 -1
- package/dist/headless/source/components/inputs/toggle/toggle.jsx +14 -2
- package/dist/headless/source/components/inputs/toggle/toggle.jsx.map +1 -1
- package/dist/headless/source/components/inputs/valueSlider/valueSlider.jsx +7 -2
- package/dist/headless/source/components/inputs/valueSlider/valueSlider.jsx.map +1 -1
- package/dist/headless/source/components/layout/appLayout/appLayout.jsx +8 -6
- package/dist/headless/source/components/layout/appLayout/appLayout.jsx.map +1 -1
- package/dist/headless/source/components/layout/divider/divider.jsx +6 -5
- package/dist/headless/source/components/layout/divider/divider.jsx.map +1 -1
- package/dist/headless/source/components/layout/floatingWindow/floatingWindow.jsx +17 -11
- package/dist/headless/source/components/layout/floatingWindow/floatingWindow.jsx.map +1 -1
- package/dist/headless/source/components/layout/grid/grid.jsx +20 -8
- package/dist/headless/source/components/layout/grid/grid.jsx.map +1 -1
- package/dist/headless/source/components/layout/page/page.jsx +10 -2
- package/dist/headless/source/components/layout/page/page.jsx.map +1 -1
- package/dist/headless/source/components/layout/pageHeader/pageHeader.jsx +3 -2
- package/dist/headless/source/components/layout/pageHeader/pageHeader.jsx.map +1 -1
- package/dist/headless/source/components/layout/sectionHeader/sectionHeader.jsx +5 -5
- package/dist/headless/source/components/layout/sectionHeader/sectionHeader.jsx.map +1 -1
- package/dist/headless/source/components/layout/sheet/sheet.jsx +6 -8
- package/dist/headless/source/components/layout/sheet/sheet.jsx.map +1 -1
- package/dist/headless/source/components/layout/stack/stack.jsx +15 -11
- package/dist/headless/source/components/layout/stack/stack.jsx.map +1 -1
- package/dist/headless/source/components/navigation/appBar/appBar.jsx +3 -2
- package/dist/headless/source/components/navigation/appBar/appBar.jsx.map +1 -1
- package/dist/headless/source/components/navigation/bottomBar/bottomBar.jsx +48 -40
- package/dist/headless/source/components/navigation/bottomBar/bottomBar.jsx.map +1 -1
- package/dist/headless/source/components/navigation/breadcrumbs/breadcrumbs.jsx +9 -2
- package/dist/headless/source/components/navigation/breadcrumbs/breadcrumbs.jsx.map +1 -1
- package/dist/headless/source/components/navigation/menu/menu.jsx.map +1 -1
- package/dist/headless/source/components/navigation/menu/menuComponent.jsx +3 -4
- package/dist/headless/source/components/navigation/menu/menuComponent.jsx.map +1 -1
- package/dist/headless/source/components/navigation/menu/menuContext.js.map +2 -2
- package/dist/headless/source/components/navigation/menu/menuFloating.jsx +26 -4
- package/dist/headless/source/components/navigation/menu/menuFloating.jsx.map +1 -1
- package/dist/headless/source/components/navigation/menu/menuItem.jsx +22 -2
- package/dist/headless/source/components/navigation/menu/menuItem.jsx.map +1 -1
- package/dist/headless/source/components/navigation/menu/menuList.jsx +19 -7
- package/dist/headless/source/components/navigation/menu/menuList.jsx.map +1 -1
- package/dist/headless/source/components/navigation/menu/menuSubmenu.jsx +36 -4
- package/dist/headless/source/components/navigation/menu/menuSubmenu.jsx.map +1 -1
- package/dist/headless/source/components/navigation/pagination/pagination.jsx +4 -3
- package/dist/headless/source/components/navigation/pagination/pagination.jsx.map +1 -1
- package/dist/headless/source/components/navigation/sidebar/sidebar.jsx +1 -1
- package/dist/headless/source/components/navigation/sidebar/sidebar.jsx.map +1 -1
- package/dist/headless/source/components/navigation/stepper/stepper.jsx +14 -9
- package/dist/headless/source/components/navigation/stepper/stepper.jsx.map +1 -1
- package/dist/headless/source/components/navigation/tabs/tab/tab.jsx +12 -16
- package/dist/headless/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
- package/dist/headless/source/components/navigation/tabs/tabs.jsx +34 -10
- package/dist/headless/source/components/navigation/tabs/tabs.jsx.map +1 -1
- package/dist/headless/source/components/navigation/tabs/tabsContext.js.map +2 -2
- package/dist/headless/source/connects/rt/table/table.jsx +7 -2
- package/dist/headless/source/connects/rt/table/table.jsx.map +1 -1
- package/dist/headless/source/index.js +3 -0
- package/dist/headless/source/index.js.map +2 -2
- package/dist/headless/source/primitives/createDismissOnEscape.js +17 -0
- package/dist/headless/source/primitives/createDismissOnEscape.js.map +7 -0
- package/dist/headless/source/primitives/createFocusTrap.js +1 -0
- package/dist/headless/source/primitives/createFocusTrap.js.map +2 -2
- package/dist/headless/source/primitives/createHelperText.js +16 -0
- package/dist/headless/source/primitives/createHelperText.js.map +7 -0
- package/dist/headless/source/primitives/mergeStyle.js +15 -0
- package/dist/headless/source/primitives/mergeStyle.js.map +7 -0
- package/dist/headless/source/primitives/overlayLayer.js +10 -2
- package/dist/headless/source/primitives/overlayLayer.js.map +2 -2
- package/dist/headless/source/utils/controlProps.js +22 -0
- package/dist/headless/source/utils/controlProps.js.map +7 -0
- package/dist/headless/source/utils/ownClick.js +41 -0
- package/dist/headless/source/utils/ownClick.js.map +7 -0
- package/dist/headless/utils/controlProps.js +20 -0
- package/dist/headless/utils/controlProps.js.map +1 -0
- package/dist/headless/utils/ownClick.js +39 -0
- package/dist/headless/utils/ownClick.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +224 -220
- package/dist/index.js.map +1 -1
- package/dist/primitives/createDismissOnEscape.d.ts +12 -0
- package/dist/primitives/createDismissOnEscape.js +14 -0
- package/dist/primitives/createDismissOnEscape.js.map +1 -0
- package/dist/primitives/createFocusTrap.d.ts +2 -0
- package/dist/primitives/createFocusTrap.js +1 -0
- package/dist/primitives/createFocusTrap.js.map +1 -1
- package/dist/primitives/createHelperText.d.ts +26 -0
- package/dist/primitives/createHelperText.js +14 -0
- package/dist/primitives/createHelperText.js.map +1 -0
- package/dist/primitives/mergeStyle.d.ts +19 -0
- package/dist/primitives/mergeStyle.js +9 -0
- package/dist/primitives/mergeStyle.js.map +1 -0
- package/dist/primitives/overlayLayer.d.ts +15 -3
- package/dist/primitives/overlayLayer.js +14 -7
- package/dist/primitives/overlayLayer.js.map +1 -1
- package/dist/source/components/base/animateHeight/animateHeight.jsx +7 -11
- package/dist/source/components/base/animateHeight/animateHeight.jsx.map +1 -1
- package/dist/source/components/base/icon/icon.jsx +10 -12
- package/dist/source/components/base/icon/icon.jsx.map +1 -1
- package/dist/source/components/base/ripple/ripple.jsx +16 -4
- package/dist/source/components/base/ripple/ripple.jsx.map +1 -1
- package/dist/source/components/dataDisplay/avatar/avatar.jsx +14 -7
- package/dist/source/components/dataDisplay/avatar/avatar.jsx.map +1 -1
- package/dist/source/components/dataDisplay/card/card.jsx +31 -12
- package/dist/source/components/dataDisplay/card/card.jsx.map +1 -1
- package/dist/source/components/dataDisplay/carousel/carousel.jsx +9 -3
- package/dist/source/components/dataDisplay/carousel/carousel.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chart/chart.jsx +5 -4
- package/dist/source/components/dataDisplay/chart/chart.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chat/chatIconButton.jsx +13 -3
- package/dist/source/components/dataDisplay/chat/chatIconButton.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chat/chatLayout.jsx +6 -7
- package/dist/source/components/dataDisplay/chat/chatLayout.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chat/chatOverlayLayout.jsx +5 -6
- package/dist/source/components/dataDisplay/chat/chatOverlayLayout.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chip/chip.jsx +55 -19
- package/dist/source/components/dataDisplay/chip/chip.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chipGroup/chipGroup.jsx +14 -11
- package/dist/source/components/dataDisplay/chipGroup/chipGroup.jsx.map +1 -1
- package/dist/source/components/dataDisplay/dagView/dagLayout.js +383 -0
- package/dist/source/components/dataDisplay/dagView/dagLayout.js.map +7 -0
- package/dist/source/components/dataDisplay/dagView/dagView.jsx +641 -0
- package/dist/source/components/dataDisplay/dagView/dagView.jsx.map +1 -0
- package/dist/source/components/dataDisplay/dagView/index.js +10 -0
- package/dist/source/components/dataDisplay/dagView/index.js.map +7 -0
- package/dist/source/components/dataDisplay/dagView/panZoom.js +247 -0
- package/dist/source/components/dataDisplay/dagView/panZoom.js.map +7 -0
- package/dist/source/components/dataDisplay/descriptionList/descriptionList.jsx +4 -6
- package/dist/source/components/dataDisplay/descriptionList/descriptionList.jsx.map +1 -1
- package/dist/source/components/dataDisplay/expansionPanel/expansionPanel.jsx +83 -9
- package/dist/source/components/dataDisplay/expansionPanel/expansionPanel.jsx.map +1 -1
- package/dist/source/components/dataDisplay/kanban/kanban.jsx +20 -10
- package/dist/source/components/dataDisplay/kanban/kanban.jsx.map +1 -1
- package/dist/source/components/dataDisplay/lazyImage/lazyImage.jsx +1 -1
- package/dist/source/components/dataDisplay/lazyImage/lazyImage.jsx.map +1 -1
- package/dist/source/components/dataDisplay/list/list.jsx +3 -3
- package/dist/source/components/dataDisplay/list/list.jsx.map +1 -1
- package/dist/source/components/dataDisplay/list/listItem.jsx +11 -10
- package/dist/source/components/dataDisplay/list/listItem.jsx.map +1 -1
- package/dist/source/components/dataDisplay/meter/meter.jsx +3 -2
- package/dist/source/components/dataDisplay/meter/meter.jsx.map +1 -1
- package/dist/source/components/dataDisplay/personChip/personChip.jsx +3 -2
- package/dist/source/components/dataDisplay/personChip/personChip.jsx.map +1 -1
- package/dist/source/components/dataDisplay/stat/stat.jsx +7 -8
- package/dist/source/components/dataDisplay/stat/stat.jsx.map +1 -1
- package/dist/source/components/dataDisplay/table/table.jsx +18 -1
- package/dist/source/components/dataDisplay/table/table.jsx.map +1 -1
- package/dist/source/components/dataDisplay/table/tableBody.jsx +6 -1
- package/dist/source/components/dataDisplay/table/tableBody.jsx.map +1 -1
- package/dist/source/components/dataDisplay/table/tableCell.jsx +13 -4
- package/dist/source/components/dataDisplay/table/tableCell.jsx.map +1 -1
- package/dist/source/components/dataDisplay/table/tableColumns.jsx +311 -0
- package/dist/source/components/dataDisplay/table/tableColumns.jsx.map +1 -0
- package/dist/source/components/dataDisplay/table/tableEntities.js +7 -0
- package/dist/source/components/dataDisplay/table/tableEntities.js.map +7 -0
- package/dist/source/components/dataDisplay/table/tableHead.jsx +14 -1
- package/dist/source/components/dataDisplay/table/tableHead.jsx.map +1 -1
- package/dist/source/components/dataDisplay/table/tableHeadCell.jsx +51 -33
- package/dist/source/components/dataDisplay/table/tableHeadCell.jsx.map +1 -1
- package/dist/source/components/dataDisplay/table/tableHtmlText.js +140 -0
- package/dist/source/components/dataDisplay/table/tableHtmlText.js.map +7 -0
- package/dist/source/components/dataDisplay/table/tableRow.jsx +11 -5
- package/dist/source/components/dataDisplay/table/tableRow.jsx.map +1 -1
- package/dist/source/components/dataDisplay/thumbCard/thumbCard.jsx +48 -19
- package/dist/source/components/dataDisplay/thumbCard/thumbCard.jsx.map +1 -1
- package/dist/source/components/dataDisplay/treeView/treeView.jsx +9 -2
- package/dist/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
- package/dist/source/components/dataDisplay/typography/typography.jsx +2 -6
- package/dist/source/components/dataDisplay/typography/typography.jsx.map +1 -1
- package/dist/source/components/feedBack/emptyState/emptyState.jsx +12 -2
- package/dist/source/components/feedBack/emptyState/emptyState.jsx.map +1 -1
- package/dist/source/components/feedBack/message/message.jsx +5 -4
- package/dist/source/components/feedBack/message/message.jsx.map +1 -1
- package/dist/source/components/feedBack/modal/modal.jsx +5 -2
- package/dist/source/components/feedBack/modal/modal.jsx.map +1 -1
- package/dist/source/components/feedBack/skeleton/skeleton.jsx +12 -5
- package/dist/source/components/feedBack/skeleton/skeleton.jsx.map +1 -1
- package/dist/source/components/feedBack/snackbar/snackbar.jsx +3 -3
- package/dist/source/components/feedBack/snackbar/snackbar.jsx.map +1 -1
- package/dist/source/components/feedBack/tooltip/tooltip.jsx +52 -5
- package/dist/source/components/feedBack/tooltip/tooltip.jsx.map +1 -1
- package/dist/source/components/inputs/button/button.jsx +8 -3
- package/dist/source/components/inputs/button/button.jsx.map +1 -1
- package/dist/source/components/inputs/buttonGroups/buttonGroup.jsx +4 -3
- package/dist/source/components/inputs/buttonGroups/buttonGroup.jsx.map +1 -1
- package/dist/source/components/inputs/checkbox/checkbox.jsx +27 -4
- package/dist/source/components/inputs/checkbox/checkbox.jsx.map +1 -1
- package/dist/source/components/inputs/datePicker/datePicker.jsx +13 -0
- package/dist/source/components/inputs/datePicker/datePicker.jsx.map +1 -1
- package/dist/source/components/inputs/datePicker/datePickerActionLabel.jsx +4 -1
- package/dist/source/components/inputs/datePicker/datePickerActionLabel.jsx.map +1 -1
- package/dist/source/components/inputs/datePicker/datePickerDay.jsx +12 -12
- package/dist/source/components/inputs/datePicker/datePickerDay.jsx.map +1 -1
- package/dist/source/components/inputs/datePicker/datePickerIconButton.jsx +13 -3
- package/dist/source/components/inputs/datePicker/datePickerIconButton.jsx.map +1 -1
- package/dist/source/components/inputs/dateTimePicker/dateTimePicker.jsx +13 -0
- package/dist/source/components/inputs/dateTimePicker/dateTimePicker.jsx.map +1 -1
- package/dist/source/components/inputs/floatingButton/floatingButton.jsx +12 -1
- package/dist/source/components/inputs/floatingButton/floatingButton.jsx.map +1 -1
- package/dist/source/components/inputs/radioButton/radioButton.jsx +16 -4
- package/dist/source/components/inputs/radioButton/radioButton.jsx.map +1 -1
- package/dist/source/components/inputs/rating/rating.jsx +49 -20
- package/dist/source/components/inputs/rating/rating.jsx.map +1 -1
- package/dist/source/components/inputs/selectField/dropdownMenu.jsx +222 -61
- package/dist/source/components/inputs/selectField/dropdownMenu.jsx.map +1 -1
- package/dist/source/components/inputs/selectField/optionNavigation.js +51 -0
- package/dist/source/components/inputs/selectField/optionNavigation.js.map +7 -0
- package/dist/source/components/inputs/selectField/selectField.jsx +318 -92
- package/dist/source/components/inputs/selectField/selectField.jsx.map +1 -1
- package/dist/source/components/inputs/slider/slider.jsx +89 -18
- package/dist/source/components/inputs/slider/slider.jsx.map +1 -1
- package/dist/source/components/inputs/textField/textField.jsx +47 -9
- package/dist/source/components/inputs/textField/textField.jsx.map +1 -1
- package/dist/source/components/inputs/textField/textFieldWrapper.jsx +20 -6
- package/dist/source/components/inputs/textField/textFieldWrapper.jsx.map +1 -1
- package/dist/source/components/inputs/timePicker/timePicker.jsx +13 -0
- package/dist/source/components/inputs/timePicker/timePicker.jsx.map +1 -1
- package/dist/source/components/inputs/toggle/toggle.jsx +14 -2
- package/dist/source/components/inputs/toggle/toggle.jsx.map +1 -1
- package/dist/source/components/inputs/valueSlider/valueSlider.jsx +7 -2
- package/dist/source/components/inputs/valueSlider/valueSlider.jsx.map +1 -1
- package/dist/source/components/layout/appLayout/appLayout.jsx +8 -6
- package/dist/source/components/layout/appLayout/appLayout.jsx.map +1 -1
- package/dist/source/components/layout/divider/divider.jsx +6 -5
- package/dist/source/components/layout/divider/divider.jsx.map +1 -1
- package/dist/source/components/layout/floatingWindow/floatingWindow.jsx +17 -11
- package/dist/source/components/layout/floatingWindow/floatingWindow.jsx.map +1 -1
- package/dist/source/components/layout/grid/grid.jsx +20 -8
- package/dist/source/components/layout/grid/grid.jsx.map +1 -1
- package/dist/source/components/layout/page/page.jsx +10 -2
- package/dist/source/components/layout/page/page.jsx.map +1 -1
- package/dist/source/components/layout/pageHeader/pageHeader.jsx +3 -2
- package/dist/source/components/layout/pageHeader/pageHeader.jsx.map +1 -1
- package/dist/source/components/layout/sectionHeader/sectionHeader.jsx +5 -5
- package/dist/source/components/layout/sectionHeader/sectionHeader.jsx.map +1 -1
- package/dist/source/components/layout/sheet/sheet.jsx +6 -8
- package/dist/source/components/layout/sheet/sheet.jsx.map +1 -1
- package/dist/source/components/layout/stack/stack.jsx +15 -11
- package/dist/source/components/layout/stack/stack.jsx.map +1 -1
- package/dist/source/components/navigation/appBar/appBar.jsx +3 -2
- package/dist/source/components/navigation/appBar/appBar.jsx.map +1 -1
- package/dist/source/components/navigation/bottomBar/bottomBar.jsx +48 -40
- package/dist/source/components/navigation/bottomBar/bottomBar.jsx.map +1 -1
- package/dist/source/components/navigation/breadcrumbs/breadcrumbs.jsx +9 -2
- package/dist/source/components/navigation/breadcrumbs/breadcrumbs.jsx.map +1 -1
- package/dist/source/components/navigation/menu/menu.jsx.map +1 -1
- package/dist/source/components/navigation/menu/menuComponent.jsx +3 -4
- package/dist/source/components/navigation/menu/menuComponent.jsx.map +1 -1
- package/dist/source/components/navigation/menu/menuContext.js.map +2 -2
- package/dist/source/components/navigation/menu/menuFloating.jsx +26 -4
- package/dist/source/components/navigation/menu/menuFloating.jsx.map +1 -1
- package/dist/source/components/navigation/menu/menuItem.jsx +22 -2
- package/dist/source/components/navigation/menu/menuItem.jsx.map +1 -1
- package/dist/source/components/navigation/menu/menuList.jsx +19 -7
- package/dist/source/components/navigation/menu/menuList.jsx.map +1 -1
- package/dist/source/components/navigation/menu/menuSubmenu.jsx +36 -4
- package/dist/source/components/navigation/menu/menuSubmenu.jsx.map +1 -1
- package/dist/source/components/navigation/pagination/pagination.jsx +4 -3
- package/dist/source/components/navigation/pagination/pagination.jsx.map +1 -1
- package/dist/source/components/navigation/sidebar/sidebar.jsx +1 -1
- package/dist/source/components/navigation/sidebar/sidebar.jsx.map +1 -1
- package/dist/source/components/navigation/stepper/stepper.jsx +14 -9
- package/dist/source/components/navigation/stepper/stepper.jsx.map +1 -1
- package/dist/source/components/navigation/tabs/tab/tab.jsx +12 -16
- package/dist/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
- package/dist/source/components/navigation/tabs/tabs.jsx +34 -10
- package/dist/source/components/navigation/tabs/tabs.jsx.map +1 -1
- package/dist/source/components/navigation/tabs/tabsContext.js.map +2 -2
- package/dist/source/connects/rt/table/table.jsx +7 -2
- package/dist/source/connects/rt/table/table.jsx.map +1 -1
- package/dist/source/index.js +3 -0
- package/dist/source/index.js.map +2 -2
- package/dist/source/primitives/createDismissOnEscape.js +17 -0
- package/dist/source/primitives/createDismissOnEscape.js.map +7 -0
- package/dist/source/primitives/createFocusTrap.js +1 -0
- package/dist/source/primitives/createFocusTrap.js.map +2 -2
- package/dist/source/primitives/createHelperText.js +16 -0
- package/dist/source/primitives/createHelperText.js.map +7 -0
- package/dist/source/primitives/mergeStyle.js +15 -0
- package/dist/source/primitives/mergeStyle.js.map +7 -0
- package/dist/source/primitives/overlayLayer.js +10 -2
- package/dist/source/primitives/overlayLayer.js.map +2 -2
- package/dist/source/utils/controlProps.js +22 -0
- package/dist/source/utils/controlProps.js.map +7 -0
- package/dist/source/utils/ownClick.js +41 -0
- package/dist/source/utils/ownClick.js.map +7 -0
- package/dist/utils/controlProps.d.ts +17 -0
- package/dist/utils/controlProps.js +20 -0
- package/dist/utils/controlProps.js.map +1 -0
- package/dist/utils/ownClick.d.ts +16 -0
- package/dist/utils/ownClick.js +39 -0
- package/dist/utils/ownClick.js.map +1 -0
- package/package.json +9 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/inputs/datePicker/datePickerActionLabel.tsx"],"sourcesContent":["import { type JSX, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { DatePickerIconButton } from \"./datePickerIconButton\";\nimport { Icon } from \"../../base/icon\";\n\nexport interface ActionLabelProps {\n label: string;\n onLeftIconClick?: (() => void) | undefined;\n onRightIconClick?: (() => void) | undefined;\n onLabelClick?: (() => void) | undefined;\n disabled?: boolean | undefined;\n active?: boolean | undefined;\n hiddenSwitches?: boolean | undefined;\n dataToggleId?: string | undefined;\n}\n\nexport function DatePickerActionLabel(props: ActionLabelProps): JSX.Element {\n const [local] = splitProps(props, [\n \"label\",\n \"onLeftIconClick\",\n \"onRightIconClick\",\n \"onLabelClick\",\n \"disabled\",\n \"active\",\n \"hiddenSwitches\",\n \"dataToggleId\",\n ]);\n\n const switchClasses = (): string =>\n cn(\"smwb-date-picker__switch\", {\n \"smwb-date-picker__switch--hidden\": local.hiddenSwitches,\n });\n\n return (\n <div class=\"smwb-date-picker__action\">\n <div class={switchClasses()}>\n <DatePickerIconButton size=\"small\" onClick={local.disabled ? undefined : local.onLeftIconClick}>\n <Icon name=\"keyboard_arrow_left\" weight={500} size={24} />\n </DatePickerIconButton>\n </div>\n <div\n class={cn(\"smwb-date-picker__action-label\", {\n \"smwb-date-picker__action-label--disabled\": local.disabled,\n \"smwb-date-picker__action-label--active\": local.active,\n })}\n data-testid={local.dataToggleId}\n onClick={
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/inputs/datePicker/datePickerActionLabel.tsx"],"sourcesContent":["import { type JSX, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { DatePickerIconButton } from \"./datePickerIconButton\";\nimport { Icon } from \"../../base/icon\";\n\nexport interface ActionLabelProps {\n label: string;\n onLeftIconClick?: (() => void) | undefined;\n onRightIconClick?: (() => void) | undefined;\n onLabelClick?: (() => void) | undefined;\n disabled?: boolean | undefined;\n active?: boolean | undefined;\n hiddenSwitches?: boolean | undefined;\n dataToggleId?: string | undefined;\n}\n\nexport function DatePickerActionLabel(props: ActionLabelProps): JSX.Element {\n const [local] = splitProps(props, [\n \"label\",\n \"onLeftIconClick\",\n \"onRightIconClick\",\n \"onLabelClick\",\n \"disabled\",\n \"active\",\n \"hiddenSwitches\",\n \"dataToggleId\",\n ]);\n\n const switchClasses = (): string =>\n cn(\"smwb-date-picker__switch\", {\n \"smwb-date-picker__switch--hidden\": local.hiddenSwitches,\n });\n\n // Solid binds event handlers once, so the label's handler is always attached\n // and checks `disabled` itself: the header disables one label while the other\n // one's view is open. (The icon buttons spread their props, which follow.)\n const onLabelClick = (): void => {\n if (!local.disabled) local.onLabelClick?.();\n };\n\n return (\n <div class=\"smwb-date-picker__action\">\n <div class={switchClasses()}>\n <DatePickerIconButton size=\"small\" onClick={local.disabled ? undefined : local.onLeftIconClick}>\n <Icon name=\"keyboard_arrow_left\" weight={500} size={24} />\n </DatePickerIconButton>\n </div>\n <div\n class={cn(\"smwb-date-picker__action-label\", {\n \"smwb-date-picker__action-label--disabled\": local.disabled,\n \"smwb-date-picker__action-label--active\": local.active,\n })}\n data-testid={local.dataToggleId}\n onClick={onLabelClick}\n >\n <span class=\"smwb-date-picker__action-text\">{local.label}</span>\n <Icon name=\"arrow_drop_down\" weight={500} size={20} />\n </div>\n <div class={switchClasses()}>\n <DatePickerIconButton size=\"small\" onClick={local.disabled ? undefined : local.onRightIconClick}>\n <Icon name=\"keyboard_arrow_right\" weight={500} size={24} />\n </DatePickerIconButton>\n </div>\n </div>\n );\n}\n\nexport default DatePickerActionLabel;\n"],"mappings":"AAAA,SAAmB,kBAAkB;AACrC,OAAO,QAAQ;AACf,SAAS,4BAA4B;AACrC,SAAS,YAAY;AAad,SAAS,sBAAsB,OAAsC;AAC1E,QAAM,CAAC,KAAK,IAAI,WAAW,OAAO;AAAA,IAChC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,gBAAgB,MACpB,GAAG,4BAA4B;AAAA,IAC7B,oCAAoC,MAAM;AAAA,EAC5C,CAAC;AAKH,QAAM,eAAe,MAAY;AAC/B,QAAI,CAAC,MAAM,SAAU,OAAM,eAAe;AAAA,EAC5C;AAEA,SACE,CAAC,IAAI,MAAM,2BAA2B;AAAA,MACpC,CAAC,IAAI,OAAO,cAAc,GAAG;AAAA,QAC3B,CAAC,qBAAqB,KAAK,QAAQ,SAAS,MAAM,WAAW,SAAY,MAAM,iBAAiB;AAAA,UAC9F,CAAC,KAAK,KAAK,sBAAsB,QAAQ,KAAK,MAAM,IAAI,EAAE;AAAA,QAC5D,EAFC,qBAEsB;AAAA,MACzB,EAJC,IAIK;AAAA,MACN,CAAC;AAAA,IACC,OAAO,GAAG,kCAAkC;AAAA,MAC1C,4CAA4C,MAAM;AAAA,MAClD,0CAA0C,MAAM;AAAA,IAClD,CAAC;AAAA,IACD,aAAa,MAAM;AAAA,IACnB,SAAS;AAAA,GACV;AAAA,QACC,CAAC,KAAK,MAAM,iCAAiC,MAAM,MAAM,EAAxD,KAA+D;AAAA,QAChE,CAAC,KAAK,KAAK,kBAAkB,QAAQ,KAAK,MAAM,IAAI,EAAE;AAAA,MACxD,EAVC,IAUK;AAAA,MACN,CAAC,IAAI,OAAO,cAAc,GAAG;AAAA,QAC3B,CAAC,qBAAqB,KAAK,QAAQ,SAAS,MAAM,WAAW,SAAY,MAAM,kBAAkB;AAAA,UAC/F,CAAC,KAAK,KAAK,uBAAuB,QAAQ,KAAK,MAAM,IAAI,EAAE;AAAA,QAC7D,EAFC,qBAEsB;AAAA,MACzB,EAJC,IAIK;AAAA,IACR,EAtBC;AAwBL;AAEA,IAAO,gCAAQ;","names":[],"file":"datePickerActionLabel.jsx"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { Show, splitProps } from "solid-js";
|
|
1
|
+
import { Show, mergeProps, splitProps } from "solid-js";
|
|
2
2
|
import cn from "clsx";
|
|
3
3
|
import { Ripple } from "../../base/ripple";
|
|
4
|
+
import { callHandler } from "../../../primitives/callHandler";
|
|
4
5
|
function DatePickerDay(props) {
|
|
5
|
-
const
|
|
6
|
+
const merged = mergeProps({ type: "button" }, props);
|
|
7
|
+
const [local, rest] = splitProps(merged, [
|
|
6
8
|
"class",
|
|
7
9
|
"children",
|
|
8
10
|
"onChange",
|
|
@@ -12,13 +14,18 @@ function DatePickerDay(props) {
|
|
|
12
14
|
"outside",
|
|
13
15
|
"disabled",
|
|
14
16
|
"inRange",
|
|
15
|
-
"day"
|
|
17
|
+
"day",
|
|
18
|
+
// The day sets these on its root too; its own handlers call the caller's first.
|
|
19
|
+
"onPointerDown",
|
|
20
|
+
"onClick"
|
|
16
21
|
]);
|
|
17
22
|
let rippleActions;
|
|
18
23
|
const onPointerDown = (event) => {
|
|
24
|
+
callHandler(local.onPointerDown, event);
|
|
19
25
|
if (!local.disabled) rippleActions?.onRipple(event);
|
|
20
26
|
};
|
|
21
|
-
const onClick = () => {
|
|
27
|
+
const onClick = (event) => {
|
|
28
|
+
callHandler(local.onClick, event);
|
|
22
29
|
if (!local.disabled) local.onChange?.(void 0, local.day);
|
|
23
30
|
};
|
|
24
31
|
const classes = () => cn("smwb-date-picker__day", local.class, {
|
|
@@ -29,14 +36,7 @@ function DatePickerDay(props) {
|
|
|
29
36
|
"smwb-date-picker__day--in-range": !local.disabled && local.inRange
|
|
30
37
|
});
|
|
31
38
|
return <Show when={!local.hidden} fallback={<span class="smwb-date-picker__day-hidden" />}>
|
|
32
|
-
<button
|
|
33
|
-
{...rest}
|
|
34
|
-
class={classes()}
|
|
35
|
-
type="button"
|
|
36
|
-
onPointerDown={onPointerDown}
|
|
37
|
-
onClick={onClick}
|
|
38
|
-
disabled={local.disabled}
|
|
39
|
-
>
|
|
39
|
+
<button {...rest} class={classes()} onPointerDown={onPointerDown} onClick={onClick} disabled={local.disabled}>
|
|
40
40
|
{local.children}
|
|
41
41
|
<Show when={!local.disabled}>
|
|
42
42
|
<Ripple actionRef={(actions) => rippleActions = actions} center />
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/inputs/datePicker/datePickerDay.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Ripple, type RippleActionsRef } from \"../../base/ripple\";\n\nexport interface DatePickerDayProps extends Omit<JSX.ButtonHTMLAttributes<HTMLButtonElement>, \"onChange\"> {\n active?: boolean | undefined;\n current?: boolean | undefined;\n hidden?: boolean | undefined;\n outside?: boolean | undefined;\n disabled?: boolean | undefined;\n inRange?: boolean | undefined;\n day: Date;\n onChange?: ((event?: Event, date?: Date) => void) | undefined;\n}\n\nexport function DatePickerDay(props: ParentProps<DatePickerDayProps>): JSX.Element {\n const [local, rest] = splitProps(
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/inputs/datePicker/datePickerDay.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Ripple, type RippleActionsRef } from \"../../base/ripple\";\nimport { callHandler } from \"../../../primitives/callHandler\";\n\nexport interface DatePickerDayProps extends Omit<JSX.ButtonHTMLAttributes<HTMLButtonElement>, \"onChange\"> {\n active?: boolean | undefined;\n current?: boolean | undefined;\n hidden?: boolean | undefined;\n outside?: boolean | undefined;\n disabled?: boolean | undefined;\n inRange?: boolean | undefined;\n day: Date;\n onChange?: ((event?: Event, date?: Date) => void) | undefined;\n}\n\nexport function DatePickerDay(props: ParentProps<DatePickerDayProps>): JSX.Element {\n // `type` is a default: the caller's wins.\n const merged = mergeProps({ type: \"button\" as const }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"children\",\n \"onChange\",\n \"active\",\n \"current\",\n \"hidden\",\n \"outside\",\n \"disabled\",\n \"inRange\",\n \"day\",\n // The day sets these on its root too; its own handlers call the caller's first.\n \"onPointerDown\",\n \"onClick\",\n ]);\n\n let rippleActions: RippleActionsRef | undefined;\n\n const onPointerDown: JSX.EventHandler<HTMLButtonElement, PointerEvent> = (event) => {\n callHandler(local.onPointerDown, event);\n if (!local.disabled) rippleActions?.onRipple(event);\n };\n\n const onClick: JSX.EventHandler<HTMLButtonElement, MouseEvent> = (event) => {\n callHandler(local.onClick, event);\n if (!local.disabled) local.onChange?.(undefined, local.day);\n };\n\n const classes = (): string =>\n cn(\"smwb-date-picker__day\", local.class, {\n \"smwb-date-picker__day--active\": !local.disabled && local.active,\n \"smwb-date-picker__day--current\": local.current && !local.active,\n \"smwb-date-picker__day--outside\": !local.disabled && local.outside,\n \"smwb-date-picker__day--disabled\": local.disabled,\n \"smwb-date-picker__day--in-range\": !local.disabled && local.inRange,\n });\n\n return (\n <Show when={!local.hidden} fallback={<span class=\"smwb-date-picker__day-hidden\" />}>\n <button {...rest} class={classes()} onPointerDown={onPointerDown} onClick={onClick} disabled={local.disabled}>\n {local.children}\n <Show when={!local.disabled}>\n <Ripple actionRef={(actions) => (rippleActions = actions)} center />\n </Show>\n </button>\n </Show>\n );\n}\n\nexport default DatePickerDay;\n"],"mappings":"AAAA,SAAqC,MAAM,YAAY,kBAAkB;AACzE,OAAO,QAAQ;AACf,SAAS,cAAqC;AAC9C,SAAS,mBAAmB;AAarB,SAAS,cAAc,OAAqD;AAEjF,QAAM,SAAS,WAAW,EAAE,MAAM,SAAkB,GAAG,KAAK;AAC5D,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,EACF,CAAC;AAED,MAAI;AAEJ,QAAM,gBAAmE,CAAC,UAAU;AAClF,gBAAY,MAAM,eAAe,KAAK;AACtC,QAAI,CAAC,MAAM,SAAU,gBAAe,SAAS,KAAK;AAAA,EACpD;AAEA,QAAM,UAA2D,CAAC,UAAU;AAC1E,gBAAY,MAAM,SAAS,KAAK;AAChC,QAAI,CAAC,MAAM,SAAU,OAAM,WAAW,QAAW,MAAM,GAAG;AAAA,EAC5D;AAEA,QAAM,UAAU,MACd,GAAG,yBAAyB,MAAM,OAAO;AAAA,IACvC,iCAAiC,CAAC,MAAM,YAAY,MAAM;AAAA,IAC1D,kCAAkC,MAAM,WAAW,CAAC,MAAM;AAAA,IAC1D,kCAAkC,CAAC,MAAM,YAAY,MAAM;AAAA,IAC3D,mCAAmC,MAAM;AAAA,IACzC,mCAAmC,CAAC,MAAM,YAAY,MAAM;AAAA,EAC9D,CAAC;AAEH,SACE,CAAC,KAAK,MAAM,CAAC,MAAM,QAAQ,UAAU,CAAC,KAAK,MAAM,+BAA+B,IAAI;AAAA,MAClF,CAAC,WAAW,MAAM,OAAO,QAAQ,GAAG,eAAe,eAAe,SAAS,SAAS,UAAU,MAAM,UAAU;AAAA,SAC3G,MAAM,SAAS;AAAA,QAChB,CAAC,KAAK,MAAM,CAAC,MAAM,UAAU;AAAA,UAC3B,CAAC,OAAO,WAAW,CAAC,YAAa,gBAAgB,SAAU,OAAO,EAAE;AAAA,QACtE,EAFC,KAEM;AAAA,MACT,EALC,OAKQ;AAAA,IACX,EAPC;AASL;AAEA,IAAO,wBAAQ;","names":[],"file":"datePickerDay.jsx"}
|
|
@@ -2,18 +2,28 @@ import { Show, mergeProps, splitProps } from "solid-js";
|
|
|
2
2
|
import cn from "clsx";
|
|
3
3
|
import { Ripple } from "../../base/ripple";
|
|
4
4
|
import { mergeRefs } from "../../../primitives/mergeRefs";
|
|
5
|
+
import { callHandler } from "../../../primitives/callHandler";
|
|
5
6
|
function DatePickerIconButton(props) {
|
|
6
|
-
const merged = mergeProps({ size: "medium" }, props);
|
|
7
|
-
const [local, rest] = splitProps(merged, [
|
|
7
|
+
const merged = mergeProps({ size: "medium", type: "button" }, props);
|
|
8
|
+
const [local, rest] = splitProps(merged, [
|
|
9
|
+
"class",
|
|
10
|
+
"children",
|
|
11
|
+
"disabled",
|
|
12
|
+
"size",
|
|
13
|
+
"edge",
|
|
14
|
+
"ref",
|
|
15
|
+
// The button sets this on its root too; its own handler calls the caller's first.
|
|
16
|
+
"onPointerDown"
|
|
17
|
+
]);
|
|
8
18
|
let rippleActions;
|
|
9
19
|
const onPointerDown = (event) => {
|
|
20
|
+
callHandler(local.onPointerDown, event);
|
|
10
21
|
if (!local.disabled) rippleActions?.onRipple(event);
|
|
11
22
|
};
|
|
12
23
|
return <button
|
|
13
24
|
{...rest}
|
|
14
25
|
ref={mergeRefs(local.ref)}
|
|
15
26
|
onPointerDown={onPointerDown}
|
|
16
|
-
type="button"
|
|
17
27
|
class={cn("smwb-date-picker__icon-button", local.class, {
|
|
18
28
|
"smwb-date-picker__icon-button--small": local.size === "small",
|
|
19
29
|
"smwb-date-picker__icon-button--edge-start": local.edge === "start",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/inputs/datePicker/datePickerIconButton.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Ripple, type RippleActionsRef } from \"../../base/ripple\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport type DataPickerIconButtonProps = JSX.ButtonHTMLAttributes<HTMLButtonElement> & {\n size?: \"medium\" | \"small\";\n edge?: \"start\" | \"end\";\n ref?: Ref<HTMLButtonElement>;\n};\n\nexport function DatePickerIconButton(props: ParentProps<DataPickerIconButtonProps>): JSX.Element {\n const merged = mergeProps({ size: \"medium\" as const }, props);\n const [local, rest] = splitProps(merged, [\"class\"
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/inputs/datePicker/datePickerIconButton.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Ripple, type RippleActionsRef } from \"../../base/ripple\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { callHandler } from \"../../../primitives/callHandler\";\n\nexport type DataPickerIconButtonProps = JSX.ButtonHTMLAttributes<HTMLButtonElement> & {\n size?: \"medium\" | \"small\";\n edge?: \"start\" | \"end\";\n ref?: Ref<HTMLButtonElement>;\n};\n\nexport function DatePickerIconButton(props: ParentProps<DataPickerIconButtonProps>): JSX.Element {\n // `type` is a default: the caller's wins.\n const merged = mergeProps({ size: \"medium\" as const, type: \"button\" as const }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"children\",\n \"disabled\",\n \"size\",\n \"edge\",\n \"ref\",\n // The button sets this on its root too; its own handler calls the caller's first.\n \"onPointerDown\",\n ]);\n let rippleActions: RippleActionsRef | undefined;\n\n const onPointerDown: JSX.EventHandler<HTMLButtonElement, PointerEvent> = (event) => {\n callHandler(local.onPointerDown, event);\n if (!local.disabled) rippleActions?.onRipple(event);\n };\n\n return (\n <button\n {...rest}\n ref={mergeRefs(local.ref)}\n onPointerDown={onPointerDown}\n class={cn(\"smwb-date-picker__icon-button\", local.class, {\n \"smwb-date-picker__icon-button--small\": local.size === \"small\",\n \"smwb-date-picker__icon-button--edge-start\": local.edge === \"start\",\n \"smwb-date-picker__icon-button--edge-end\": local.edge === \"end\",\n \"smwb-date-picker__icon-button--disabled\": local.disabled,\n })}\n disabled={local.disabled}\n >\n {local.children}\n <Show when={!local.disabled}>\n <Ripple actionRef={(actions) => (rippleActions = actions)} center />\n </Show>\n </button>\n );\n}\n\nexport default DatePickerIconButton;\n"],"mappings":"AAAA,SAAqC,MAAM,YAAY,kBAAkB;AACzE,OAAO,QAAQ;AACf,SAAS,cAAqC;AAC9C,SAAS,iBAA2B;AACpC,SAAS,mBAAmB;AAQrB,SAAS,qBAAqB,OAA4D;AAE/F,QAAM,SAAS,WAAW,EAAE,MAAM,UAAmB,MAAM,SAAkB,GAAG,KAAK;AACrF,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,EACF,CAAC;AACD,MAAI;AAEJ,QAAM,gBAAmE,CAAC,UAAU;AAClF,gBAAY,MAAM,eAAe,KAAK;AACtC,QAAI,CAAC,MAAM,SAAU,gBAAe,SAAS,KAAK;AAAA,EACpD;AAEA,SACE,CAAC;AAAA,QACK;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,eAAe;AAAA,IACf,OAAO,GAAG,iCAAiC,MAAM,OAAO;AAAA,MACtD,wCAAwC,MAAM,SAAS;AAAA,MACvD,6CAA6C,MAAM,SAAS;AAAA,MAC5D,2CAA2C,MAAM,SAAS;AAAA,MAC1D,2CAA2C,MAAM;AAAA,IACnD,CAAC;AAAA,IACD,UAAU,MAAM;AAAA,GACjB;AAAA,OACE,MAAM,SAAS;AAAA,MAChB,CAAC,KAAK,MAAM,CAAC,MAAM,UAAU;AAAA,QAC3B,CAAC,OAAO,WAAW,CAAC,YAAa,gBAAgB,SAAU,OAAO,EAAE;AAAA,MACtE,EAFC,KAEM;AAAA,IACT,EAhBC;AAkBL;AAEA,IAAO,+BAAQ;","names":[],"file":"datePickerIconButton.jsx"}
|
|
@@ -2,6 +2,7 @@ import { Show, createEffect, createMemo, createSignal, onCleanup, splitProps } f
|
|
|
2
2
|
import { Portal, isServer } from "solid-js/web";
|
|
3
3
|
import { buildFloatingMiddleware, resolvePlacement } from "../../../utils/floating";
|
|
4
4
|
import { createFloating } from "../../../primitives/createFloating";
|
|
5
|
+
import { isTopOverlayLayer } from "../../../primitives/overlayLayer";
|
|
5
6
|
import { ClickAwayListener } from "../../clickAwayListener";
|
|
6
7
|
import { DataPickerHeader } from "../datePicker/dataPickerHeader";
|
|
7
8
|
import { DataPickerDays } from "../datePicker/dataPickerDays";
|
|
@@ -121,6 +122,18 @@ function DateTimePicker(props) {
|
|
|
121
122
|
if (raf !== void 0) cancelAnimationFrame(raf);
|
|
122
123
|
if (timer !== void 0) clearTimeout(timer);
|
|
123
124
|
});
|
|
125
|
+
createEffect(() => {
|
|
126
|
+
if (!shouldOpen()) return;
|
|
127
|
+
const onKeyDown = (event) => {
|
|
128
|
+
const panel = popupEl;
|
|
129
|
+
if (event.key !== "Escape" || !panel || !isTopOverlayLayer(panel)) return;
|
|
130
|
+
setIsOpen(false);
|
|
131
|
+
const active = document.activeElement;
|
|
132
|
+
if (!active || active === document.body || panel.contains(active)) anchorEl?.focus();
|
|
133
|
+
};
|
|
134
|
+
document.addEventListener("keydown", onKeyDown);
|
|
135
|
+
onCleanup(() => document.removeEventListener("keydown", onKeyDown));
|
|
136
|
+
});
|
|
124
137
|
const view = () => {
|
|
125
138
|
switch (openView()) {
|
|
126
139
|
case OpenView.months:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/inputs/dateTimePicker/dateTimePicker.tsx"],"sourcesContent":["import { type JSX, Show, createEffect, createMemo, createSignal, onCleanup, splitProps } from \"solid-js\";\nimport { Portal, isServer } from \"solid-js/web\";\nimport { buildFloatingMiddleware, type Placement, resolvePlacement } from \"../../../utils/floating\";\nimport { createFloating } from \"../../../primitives/createFloating\";\nimport { ClickAwayListener } from \"../../clickAwayListener\";\nimport type { TextFieldProps } from \"../textField\";\nimport { DataPickerHeader } from \"../datePicker/dataPickerHeader\";\nimport { DataPickerDays } from \"../datePicker/dataPickerDays\";\nimport { DatePickerList } from \"../datePicker/datePickerList\";\nimport { type WeekStart, getMonths, getYears, isValidDate, setMonth, setYear } from \"../datePicker/dateUtils\";\nimport { OpenView } from \"../datePicker/openView\";\nimport { TimePickerColumns } from \"../timePicker/timePickerColumns\";\nimport { DEFAULT_TIME_FORMAT, isValidTimeDate, mergeDate, mergeTime } from \"../timePicker/timeUtils\";\nimport { DateTimePickerInput } from \"./dateTimePickerInput\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface DateTimePickerProps\n extends Omit<TextFieldProps, \"onBlur\" | \"onChange\" | \"value\" | \"defaultValue\" | \"ref\" | \"onToggle\"> {\n showDaysOutsideMonth?: boolean | undefined;\n disablePast?: boolean | undefined;\n disableFuture?: boolean | undefined;\n minDate?: Date | undefined;\n maxDate?: Date | undefined;\n isDateDisabled?: ((day: Date) => boolean) | undefined;\n weekStartsOn?: WeekStart | undefined;\n locale?: string | undefined;\n /** Input format with tokens dd, MM, yyyy, HH, mm, ss, e.g. \"dd/MM/yyyy HH:mm\". */\n format?: string | undefined;\n /** Time portion format when using the clock columns. Defaults to \"HH:mm\". */\n timeFormat?: string | undefined;\n placement?: Placement | undefined;\n disableCalendar?: boolean | undefined;\n label?: string | undefined;\n calendarAriaLabel?: string | undefined;\n value?: Date | string | undefined;\n calendarIcon?: JSX.Element;\n onChange?: ((event?: Event, value?: Date, data?: DateTimePickerProps) => void) | undefined;\n onBlur?: ((event?: FocusEvent, value?: Date, data?: DateTimePickerProps) => void) | undefined;\n ref?: Ref<HTMLInputElement>;\n}\n\nconst FADE_MS = 150;\n\nexport function DateTimePicker(props: DateTimePickerProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"value\",\n \"onChange\",\n \"showDaysOutsideMonth\",\n \"disablePast\",\n \"disableFuture\",\n \"weekStartsOn\",\n \"placement\",\n \"disabled\",\n \"disableCalendar\",\n \"calendarAriaLabel\",\n \"minDate\",\n \"maxDate\",\n \"isDateDisabled\",\n \"locale\",\n \"format\",\n \"timeFormat\",\n \"calendarIcon\",\n \"onBlur\",\n \"ref\",\n ]);\n\n const value = (): Date | undefined => (local.value === undefined ? undefined : new Date(local.value));\n\n const initialValue = value();\n const [viewValue, setViewValue] = createSignal<Date>(\n isValidDate(initialValue) || isValidTimeDate(initialValue) ? initialValue : new Date()\n );\n const [openView, setOpenView] = createSignal<OpenView>(OpenView.days);\n const [isOpen, setIsOpen] = createSignal(false);\n\n let anchorEl: HTMLElement | undefined;\n let popupEl: HTMLElement | undefined;\n\n const resolved = (): ReturnType<typeof resolvePlacement> => resolvePlacement(local.placement ?? \"bottom-start\");\n const floating = createFloating({\n placement: () => resolved().placement,\n middleware: () => buildFloatingMiddleware(resolved()),\n });\n\n createEffect(() => {\n if (local.disabled) return;\n const v = value();\n setViewValue(isValidDate(v) || isValidTimeDate(v) ? v : new Date());\n });\n\n const weekStartsOn = (): WeekStart => local.weekStartsOn ?? 1;\n\n const onViewValueChange = (next: Date): void => {\n setViewValue(next);\n };\n\n const onMonthLabelClick = (): void => {\n setOpenView(openView() === OpenView.months ? OpenView.days : OpenView.months);\n };\n\n const onYearLabelClick = (): void => {\n setOpenView(openView() === OpenView.years ? OpenView.days : OpenView.years);\n };\n\n const onMonthChange = (month: number): void => {\n setViewValue(setMonth(viewValue(), month));\n setOpenView(OpenView.days);\n };\n\n const onYearChange = (year: number): void => {\n setViewValue(setYear(viewValue(), year));\n setOpenView(OpenView.days);\n };\n\n const emitChange = (next: Date): void => {\n setViewValue(next);\n local.onChange?.(undefined, next, props);\n };\n\n const onDateChange = (_event?: Event, date?: Date): void => {\n if (!date) return;\n const v = value();\n const timeSource = isValidTimeDate(v) ? v : viewValue();\n emitChange(mergeDate(date, timeSource));\n };\n\n const onTimeChange = (timeDate: Date): void => {\n const v = value();\n const dateSource = isValidDate(v) ? v : viewValue();\n emitChange(mergeTime(dateSource, timeDate));\n };\n\n const onToggle = (): void => {\n if (!local.disabled) setIsOpen((prev) => !prev);\n };\n\n const onClickAway = (event: MouseEvent | TouchEvent): void => {\n const target = event.target as HTMLElement;\n if (popupEl?.contains(target) || anchorEl?.contains(target)) return;\n setIsOpen(false);\n };\n\n const resolvedTimeFormat = (): string => {\n if (local.timeFormat) return local.timeFormat;\n if (local.format?.includes(\"HH:mm:ss\")) return \"HH:mm:ss\";\n return DEFAULT_TIME_FORMAT;\n };\n\n const months = createMemo(() => getMonths(local.locale));\n const years = getYears(new Date().getFullYear(), 100);\n\n const shouldOpen = (): boolean => isOpen() && !local.disabled && !local.disableCalendar;\n const [mounted, setMounted] = createSignal(shouldOpen());\n const [shown, setShown] = createSignal(false);\n let raf: number | undefined;\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n createEffect(() => {\n if (shouldOpen()) {\n if (timer !== undefined) clearTimeout(timer);\n setMounted(true);\n raf = requestAnimationFrame(() => setShown(true));\n } else {\n setShown(false);\n if (mounted()) timer = setTimeout(() => setMounted(false), FADE_MS);\n }\n });\n onCleanup(() => {\n if (raf !== undefined) cancelAnimationFrame(raf);\n if (timer !== undefined) clearTimeout(timer);\n });\n\n const view = (): JSX.Element => {\n switch (openView()) {\n case OpenView.months:\n return <DatePickerList value={viewValue().getMonth()} items={months()} onChange={onMonthChange} />;\n case OpenView.years:\n return <DatePickerList value={viewValue().getFullYear()} items={years} onChange={onYearChange} />;\n default:\n return (\n <DataPickerDays\n viewValue={viewValue()}\n value={value()}\n showDaysOutsideMonth={local.showDaysOutsideMonth}\n onChange={onDateChange}\n disablePast={local.disablePast}\n disableFuture={local.disableFuture}\n weekStartsOn={weekStartsOn()}\n minDate={local.minDate}\n maxDate={local.maxDate}\n isDateDisabled={local.isDateDisabled}\n locale={local.locale}\n />\n );\n }\n };\n\n return (\n <>\n <DateTimePickerInput\n ref={mergeRefs(local.ref, floating.setReference, (el) => (anchorEl = el as HTMLElement))}\n value={local.value}\n onChange={local.onChange}\n onBlur={local.onBlur}\n onToggle={onToggle}\n disabled={local.disabled}\n disableCalendar={local.disableCalendar}\n format={local.format}\n calendarIcon={local.calendarIcon}\n {...rest}\n />\n <Show when={mounted()}>\n <Portal mount={(isServer ? undefined : document.body) as Node}>\n <ClickAwayListener onClickAway={onClickAway}>\n <div\n ref={mergeRefs(floating.setFloating, (el) => (popupEl = el as HTMLElement))}\n class=\"smwb-date-picker smwb-date-time-picker\"\n style={{\n ...floating.floatingStyles(),\n transition: `opacity ${FADE_MS}ms ease-in-out`,\n opacity: shown() ? 1 : 0,\n }}\n data-testid=\"date-time-picker\"\n data-smwb-overlay-layer\n role=\"dialog\"\n aria-modal=\"false\"\n aria-label={local.calendarAriaLabel ?? \"Choose date and time\"}\n >\n <div class=\"smwb-date-picker__inner smwb-date-time-picker__inner\">\n <DataPickerHeader\n viewValue={viewValue()}\n locale={local.locale}\n openView={openView()}\n onChange={onViewValueChange}\n onMonthLabelClick={onMonthLabelClick}\n onYearLabelClick={onYearLabelClick}\n />\n <div class=\"smwb-date-time-picker__content\">\n <div class=\"smwb-date-picker__body smwb-date-time-picker__body\">{view()}</div>\n <TimePickerColumns value={viewValue()} format={resolvedTimeFormat()} onChange={onTimeChange} />\n </div>\n </div>\n </div>\n </ClickAwayListener>\n </Portal>\n </Show>\n </>\n );\n}\n\nexport default DateTimePicker;\n"],"mappings":"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","names":[],"file":"dateTimePicker.jsx"}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/inputs/dateTimePicker/dateTimePicker.tsx"],"sourcesContent":["import { type JSX, Show, createEffect, createMemo, createSignal, onCleanup, splitProps } from \"solid-js\";\nimport { Portal, isServer } from \"solid-js/web\";\nimport { buildFloatingMiddleware, type Placement, resolvePlacement } from \"../../../utils/floating\";\nimport { createFloating } from \"../../../primitives/createFloating\";\nimport { isTopOverlayLayer } from \"../../../primitives/overlayLayer\";\nimport { ClickAwayListener } from \"../../clickAwayListener\";\nimport type { TextFieldProps } from \"../textField\";\nimport { DataPickerHeader } from \"../datePicker/dataPickerHeader\";\nimport { DataPickerDays } from \"../datePicker/dataPickerDays\";\nimport { DatePickerList } from \"../datePicker/datePickerList\";\nimport { type WeekStart, getMonths, getYears, isValidDate, setMonth, setYear } from \"../datePicker/dateUtils\";\nimport { OpenView } from \"../datePicker/openView\";\nimport { TimePickerColumns } from \"../timePicker/timePickerColumns\";\nimport { DEFAULT_TIME_FORMAT, isValidTimeDate, mergeDate, mergeTime } from \"../timePicker/timeUtils\";\nimport { DateTimePickerInput } from \"./dateTimePickerInput\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface DateTimePickerProps\n extends Omit<TextFieldProps, \"onBlur\" | \"onChange\" | \"value\" | \"defaultValue\" | \"ref\" | \"onToggle\"> {\n showDaysOutsideMonth?: boolean | undefined;\n disablePast?: boolean | undefined;\n disableFuture?: boolean | undefined;\n minDate?: Date | undefined;\n maxDate?: Date | undefined;\n isDateDisabled?: ((day: Date) => boolean) | undefined;\n weekStartsOn?: WeekStart | undefined;\n locale?: string | undefined;\n /** Input format with tokens dd, MM, yyyy, HH, mm, ss, e.g. \"dd/MM/yyyy HH:mm\". */\n format?: string | undefined;\n /** Time portion format when using the clock columns. Defaults to \"HH:mm\". */\n timeFormat?: string | undefined;\n placement?: Placement | undefined;\n disableCalendar?: boolean | undefined;\n label?: string | undefined;\n calendarAriaLabel?: string | undefined;\n value?: Date | string | undefined;\n calendarIcon?: JSX.Element;\n onChange?: ((event?: Event, value?: Date, data?: DateTimePickerProps) => void) | undefined;\n onBlur?: ((event?: FocusEvent, value?: Date, data?: DateTimePickerProps) => void) | undefined;\n ref?: Ref<HTMLInputElement>;\n}\n\nconst FADE_MS = 150;\n\nexport function DateTimePicker(props: DateTimePickerProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"value\",\n \"onChange\",\n \"showDaysOutsideMonth\",\n \"disablePast\",\n \"disableFuture\",\n \"weekStartsOn\",\n \"placement\",\n \"disabled\",\n \"disableCalendar\",\n \"calendarAriaLabel\",\n \"minDate\",\n \"maxDate\",\n \"isDateDisabled\",\n \"locale\",\n \"format\",\n \"timeFormat\",\n \"calendarIcon\",\n \"onBlur\",\n \"ref\",\n ]);\n\n const value = (): Date | undefined => (local.value === undefined ? undefined : new Date(local.value));\n\n const initialValue = value();\n const [viewValue, setViewValue] = createSignal<Date>(\n isValidDate(initialValue) || isValidTimeDate(initialValue) ? initialValue : new Date()\n );\n const [openView, setOpenView] = createSignal<OpenView>(OpenView.days);\n const [isOpen, setIsOpen] = createSignal(false);\n\n let anchorEl: HTMLElement | undefined;\n let popupEl: HTMLElement | undefined;\n\n const resolved = (): ReturnType<typeof resolvePlacement> => resolvePlacement(local.placement ?? \"bottom-start\");\n const floating = createFloating({\n placement: () => resolved().placement,\n middleware: () => buildFloatingMiddleware(resolved()),\n });\n\n createEffect(() => {\n if (local.disabled) return;\n const v = value();\n setViewValue(isValidDate(v) || isValidTimeDate(v) ? v : new Date());\n });\n\n const weekStartsOn = (): WeekStart => local.weekStartsOn ?? 1;\n\n const onViewValueChange = (next: Date): void => {\n setViewValue(next);\n };\n\n const onMonthLabelClick = (): void => {\n setOpenView(openView() === OpenView.months ? OpenView.days : OpenView.months);\n };\n\n const onYearLabelClick = (): void => {\n setOpenView(openView() === OpenView.years ? OpenView.days : OpenView.years);\n };\n\n const onMonthChange = (month: number): void => {\n setViewValue(setMonth(viewValue(), month));\n setOpenView(OpenView.days);\n };\n\n const onYearChange = (year: number): void => {\n setViewValue(setYear(viewValue(), year));\n setOpenView(OpenView.days);\n };\n\n const emitChange = (next: Date): void => {\n setViewValue(next);\n local.onChange?.(undefined, next, props);\n };\n\n const onDateChange = (_event?: Event, date?: Date): void => {\n if (!date) return;\n const v = value();\n const timeSource = isValidTimeDate(v) ? v : viewValue();\n emitChange(mergeDate(date, timeSource));\n };\n\n const onTimeChange = (timeDate: Date): void => {\n const v = value();\n const dateSource = isValidDate(v) ? v : viewValue();\n emitChange(mergeTime(dateSource, timeDate));\n };\n\n const onToggle = (): void => {\n if (!local.disabled) setIsOpen((prev) => !prev);\n };\n\n const onClickAway = (event: MouseEvent | TouchEvent): void => {\n const target = event.target as HTMLElement;\n if (popupEl?.contains(target) || anchorEl?.contains(target)) return;\n setIsOpen(false);\n };\n\n const resolvedTimeFormat = (): string => {\n if (local.timeFormat) return local.timeFormat;\n if (local.format?.includes(\"HH:mm:ss\")) return \"HH:mm:ss\";\n return DEFAULT_TIME_FORMAT;\n };\n\n const months = createMemo(() => getMonths(local.locale));\n const years = getYears(new Date().getFullYear(), 100);\n\n const shouldOpen = (): boolean => isOpen() && !local.disabled && !local.disableCalendar;\n const [mounted, setMounted] = createSignal(shouldOpen());\n const [shown, setShown] = createSignal(false);\n let raf: number | undefined;\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n createEffect(() => {\n if (shouldOpen()) {\n if (timer !== undefined) clearTimeout(timer);\n setMounted(true);\n raf = requestAnimationFrame(() => setShown(true));\n } else {\n setShown(false);\n if (mounted()) timer = setTimeout(() => setMounted(false), FADE_MS);\n }\n });\n onCleanup(() => {\n if (raf !== undefined) cancelAnimationFrame(raf);\n if (timer !== undefined) clearTimeout(timer);\n });\n\n // Escape closes the panel while it is the topmost overlay layer, so the next one\n // reaches a Modal or Sheet around the picker. Focus left in the panel (or on\n // <body> after a click there) goes back to the input rather than being lost.\n createEffect(() => {\n if (!shouldOpen()) return;\n const onKeyDown = (event: KeyboardEvent): void => {\n const panel = popupEl;\n if (event.key !== \"Escape\" || !panel || !isTopOverlayLayer(panel)) return;\n setIsOpen(false);\n const active = document.activeElement;\n if (!active || active === document.body || panel.contains(active)) anchorEl?.focus();\n };\n document.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => document.removeEventListener(\"keydown\", onKeyDown));\n });\n\n const view = (): JSX.Element => {\n switch (openView()) {\n case OpenView.months:\n return <DatePickerList value={viewValue().getMonth()} items={months()} onChange={onMonthChange} />;\n case OpenView.years:\n return <DatePickerList value={viewValue().getFullYear()} items={years} onChange={onYearChange} />;\n default:\n return (\n <DataPickerDays\n viewValue={viewValue()}\n value={value()}\n showDaysOutsideMonth={local.showDaysOutsideMonth}\n onChange={onDateChange}\n disablePast={local.disablePast}\n disableFuture={local.disableFuture}\n weekStartsOn={weekStartsOn()}\n minDate={local.minDate}\n maxDate={local.maxDate}\n isDateDisabled={local.isDateDisabled}\n locale={local.locale}\n />\n );\n }\n };\n\n return (\n <>\n <DateTimePickerInput\n ref={mergeRefs(local.ref, floating.setReference, (el) => (anchorEl = el as HTMLElement))}\n value={local.value}\n onChange={local.onChange}\n onBlur={local.onBlur}\n onToggle={onToggle}\n disabled={local.disabled}\n disableCalendar={local.disableCalendar}\n format={local.format}\n calendarIcon={local.calendarIcon}\n {...rest}\n />\n <Show when={mounted()}>\n <Portal mount={(isServer ? undefined : document.body) as Node}>\n <ClickAwayListener onClickAway={onClickAway}>\n <div\n ref={mergeRefs(floating.setFloating, (el) => (popupEl = el as HTMLElement))}\n class=\"smwb-date-picker smwb-date-time-picker\"\n style={{\n ...floating.floatingStyles(),\n transition: `opacity ${FADE_MS}ms ease-in-out`,\n opacity: shown() ? 1 : 0,\n }}\n data-testid=\"date-time-picker\"\n data-smwb-overlay-layer\n role=\"dialog\"\n aria-modal=\"false\"\n aria-label={local.calendarAriaLabel ?? \"Choose date and time\"}\n >\n <div class=\"smwb-date-picker__inner smwb-date-time-picker__inner\">\n <DataPickerHeader\n viewValue={viewValue()}\n locale={local.locale}\n openView={openView()}\n onChange={onViewValueChange}\n onMonthLabelClick={onMonthLabelClick}\n onYearLabelClick={onYearLabelClick}\n />\n <div class=\"smwb-date-time-picker__content\">\n <div class=\"smwb-date-picker__body smwb-date-time-picker__body\">{view()}</div>\n <TimePickerColumns value={viewValue()} format={resolvedTimeFormat()} onChange={onTimeChange} />\n </div>\n </div>\n </div>\n </ClickAwayListener>\n </Portal>\n </Show>\n </>\n );\n}\n\nexport default DateTimePicker;\n"],"mappings":"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","names":[],"file":"dateTimePicker.jsx"}
|
|
@@ -4,14 +4,25 @@ import { mergeProps, splitProps } from "solid-js";
|
|
|
4
4
|
import cn from "clsx";
|
|
5
5
|
import { Ripple } from "../../base/ripple";
|
|
6
6
|
import { mergeRefs } from "../../../primitives/mergeRefs";
|
|
7
|
+
import { callHandler } from "../../../primitives/callHandler";
|
|
7
8
|
function FloatingButton(props) {
|
|
8
9
|
const merged = mergeProps(
|
|
9
10
|
{ variant: "default", size: "medium", color: "primary", type: "button" },
|
|
10
11
|
props
|
|
11
12
|
);
|
|
12
|
-
const [local, rest] = splitProps(merged, [
|
|
13
|
+
const [local, rest] = splitProps(merged, [
|
|
14
|
+
"children",
|
|
15
|
+
"class",
|
|
16
|
+
"variant",
|
|
17
|
+
"size",
|
|
18
|
+
"color",
|
|
19
|
+
"ref",
|
|
20
|
+
// The button sets this on its root too; its own handler calls the caller's first.
|
|
21
|
+
"onPointerDown"
|
|
22
|
+
]);
|
|
13
23
|
let rippleActions;
|
|
14
24
|
const onPointerDown = (event) => {
|
|
25
|
+
callHandler(local.onPointerDown, event);
|
|
15
26
|
rippleActions?.onRipple(event);
|
|
16
27
|
};
|
|
17
28
|
return <button
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/inputs/floatingButton/floatingButton.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/floatingButton/floatingButton.entry.less\";\nimport { type JSX, type ParentProps, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Ripple, type RippleActionsRef } from \"../../base/ripple\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport type FloatingButtonColor = \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport interface FloatingButtonProps extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: \"extended\" | \"default\";\n size?: \"small\" | \"medium\" | \"large\";\n /** Semantic color. Resolves through the shared `--smui-*Color*` tokens. */\n color?: FloatingButtonColor;\n ref?: Ref<HTMLButtonElement>;\n}\n\nexport function FloatingButton(props: ParentProps<FloatingButtonProps>): JSX.Element {\n const merged = mergeProps(\n { variant: \"default\" as const, size: \"medium\" as const, color: \"primary\" as FloatingButtonColor, type: \"button\" as const },\n props\n );\n const [local, rest] = splitProps(merged, [\"children\"
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/inputs/floatingButton/floatingButton.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/floatingButton/floatingButton.entry.less\";\nimport { type JSX, type ParentProps, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Ripple, type RippleActionsRef } from \"../../base/ripple\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { callHandler } from \"../../../primitives/callHandler\";\n\nexport type FloatingButtonColor = \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport interface FloatingButtonProps extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: \"extended\" | \"default\";\n size?: \"small\" | \"medium\" | \"large\";\n /** Semantic color. Resolves through the shared `--smui-*Color*` tokens. */\n color?: FloatingButtonColor;\n ref?: Ref<HTMLButtonElement>;\n}\n\nexport function FloatingButton(props: ParentProps<FloatingButtonProps>): JSX.Element {\n const merged = mergeProps(\n { variant: \"default\" as const, size: \"medium\" as const, color: \"primary\" as FloatingButtonColor, type: \"button\" as const },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"children\",\n \"class\",\n \"variant\",\n \"size\",\n \"color\",\n \"ref\",\n // The button sets this on its root too; its own handler calls the caller's first.\n \"onPointerDown\",\n ]);\n\n let rippleActions: RippleActionsRef | undefined;\n\n const onPointerDown: JSX.EventHandler<HTMLButtonElement, PointerEvent> = (event) => {\n callHandler(local.onPointerDown, event);\n rippleActions?.onRipple(event);\n };\n\n return (\n <button\n {...rest}\n ref={mergeRefs(local.ref)}\n class={cn(\"smwb-fab\", `smwb-${local.variant}`, `smwb-${local.size}`, `smwb-fab_color-${local.color}`, local.class)}\n onPointerDown={onPointerDown}\n >\n {local.children}\n <Ripple actionRef={(actions) => (rippleActions = actions)} />\n </button>\n );\n}\n\nexport default FloatingButton;\n"],"mappings":"AAAA,OAAO;AACP,OAAO;AACP,SAAqC,YAAY,kBAAkB;AACnE,OAAO,QAAQ;AACf,SAAS,cAAqC;AAC9C,SAAS,iBAA2B;AACpC,SAAS,mBAAmB;AAYrB,SAAS,eAAe,OAAsD;AACnF,QAAM,SAAS;AAAA,IACb,EAAE,SAAS,WAAoB,MAAM,UAAmB,OAAO,WAAkC,MAAM,SAAkB;AAAA,IACzH;AAAA,EACF;AACA,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,EACF,CAAC;AAED,MAAI;AAEJ,QAAM,gBAAmE,CAAC,UAAU;AAClF,gBAAY,MAAM,eAAe,KAAK;AACtC,mBAAe,SAAS,KAAK;AAAA,EAC/B;AAEA,SACE,CAAC;AAAA,QACK;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,OAAO,GAAG,YAAY,QAAQ,MAAM,OAAO,IAAI,QAAQ,MAAM,IAAI,IAAI,kBAAkB,MAAM,KAAK,IAAI,MAAM,KAAK;AAAA,IACjH,eAAe;AAAA,GAChB;AAAA,OACE,MAAM,SAAS;AAAA,MAChB,CAAC,OAAO,WAAW,CAAC,YAAa,gBAAgB,SAAU,EAAE;AAAA,IAC/D,EARC;AAUL;AAEA,IAAO,yBAAQ;","names":[],"file":"floatingButton.jsx"}
|
|
@@ -3,14 +3,17 @@ import "@smwb/ui-styles/less/components/radioButton/radioButton.entry.less";
|
|
|
3
3
|
import { Show, mergeProps, splitProps } from "solid-js";
|
|
4
4
|
import cn from "clsx";
|
|
5
5
|
import { TextFieldWrapper } from "../textField/textFieldWrapper";
|
|
6
|
+
import { createHelperText } from "../../../primitives/createHelperText";
|
|
6
7
|
import { createId } from "../../../primitives/createId";
|
|
7
8
|
import { mergeRefs } from "../../../primitives/mergeRefs";
|
|
9
|
+
import { callHandler } from "../../../primitives/callHandler";
|
|
8
10
|
function RadioButton(props) {
|
|
9
11
|
const merged = mergeProps({ size: "medium", color: "primary" }, props);
|
|
10
12
|
const [local, args] = splitProps(merged, [
|
|
11
13
|
"label",
|
|
12
14
|
"disabled",
|
|
13
15
|
"readOnly",
|
|
16
|
+
"onClick",
|
|
14
17
|
"required",
|
|
15
18
|
"name",
|
|
16
19
|
"id",
|
|
@@ -20,19 +23,26 @@ function RadioButton(props) {
|
|
|
20
23
|
"error",
|
|
21
24
|
"onChange",
|
|
22
25
|
"class",
|
|
23
|
-
"
|
|
26
|
+
"aria-describedby",
|
|
27
|
+
"ref",
|
|
28
|
+
"data-testid"
|
|
24
29
|
]);
|
|
25
30
|
const id = createId(local.id);
|
|
31
|
+
const helper = createHelperText(() => local.helperText, { describedBy: () => local["aria-describedby"] });
|
|
32
|
+
const handleClick = (event) => {
|
|
33
|
+
callHandler(local.onClick, event);
|
|
34
|
+
if (local.readOnly) event.preventDefault();
|
|
35
|
+
};
|
|
26
36
|
const handleChange = (event) => {
|
|
27
37
|
if (local.readOnly) {
|
|
28
|
-
event.preventDefault();
|
|
29
38
|
return;
|
|
30
39
|
}
|
|
31
40
|
const value = props.value !== void 0 ? props.value : event.currentTarget.checked;
|
|
32
41
|
local.onChange?.(event, value, props);
|
|
33
42
|
};
|
|
34
43
|
return <TextFieldWrapper
|
|
35
|
-
helperText={
|
|
44
|
+
helperText={helper.text()}
|
|
45
|
+
helperTextId={helper.id}
|
|
36
46
|
disabled={local.disabled}
|
|
37
47
|
error={local.error}
|
|
38
48
|
class="smwb-text-field-checkbox"
|
|
@@ -53,12 +63,14 @@ function RadioButton(props) {
|
|
|
53
63
|
required={local.required}
|
|
54
64
|
aria-invalid={local.error || void 0}
|
|
55
65
|
aria-required={local.required || void 0}
|
|
66
|
+
aria-describedby={helper.describedBy()}
|
|
56
67
|
class={cn("smwb-radio__input", local.class)}
|
|
57
68
|
type="radio"
|
|
58
|
-
data-testid="radio"
|
|
69
|
+
data-testid={local["data-testid"] ?? "radio"}
|
|
59
70
|
ref={mergeRefs(local.ref)}
|
|
60
71
|
{...args}
|
|
61
72
|
onChange={handleChange}
|
|
73
|
+
onClick={handleClick}
|
|
62
74
|
/>
|
|
63
75
|
<span class={cn("smwb-radio__btn", { "smwb-disabled": local.disabled })} />
|
|
64
76
|
<span class={cn("smwb-radio__bg", { "smwb-disabled": local.disabled })} />
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/inputs/radioButton/radioButton.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/radioButton/radioButton.entry.less\";\nimport { type JSX, Show, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { TextFieldWrapper } from \"../textField/textFieldWrapper\";\nimport { createId } from \"../../../primitives/createId\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport type { SelectionChangeEvent, SelectionControlColor, SelectionControlSize } from \"../checkbox/checkbox\";\n\nexport interface RadioButtonProps extends Omit<JSX.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?: JSX.Element;\n error?: boolean;\n /** Unified handler: `(event, value, data)` where `value` is the radio's value (or checked state). */\n onChange?: (\n event: SelectionChangeEvent,\n value: string | number | string[] | boolean | undefined,\n data: RadioButtonProps\n ) => void;\n ref?: Ref<HTMLInputElement>;\n}\n\nexport function RadioButton(props: RadioButtonProps): JSX.Element {\n const merged = mergeProps({ size: \"medium\" as SelectionControlSize, color: \"primary\" as SelectionControlColor }, props);\n const [local, args] = splitProps(merged, [\n \"label\",\n \"disabled\",\n \"readOnly\",\n \"required\",\n \"name\",\n \"id\",\n \"size\",\n \"color\",\n \"helperText\",\n \"error\",\n \"onChange\",\n \"class\",\n \"ref\",\n ]);\n const id = createId(local.id);\n\n const
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/inputs/radioButton/radioButton.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/radioButton/radioButton.entry.less\";\nimport { type JSX, Show, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { TextFieldWrapper } from \"../textField/textFieldWrapper\";\nimport { createHelperText } from \"../../../primitives/createHelperText\";\nimport { createId } from \"../../../primitives/createId\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { callHandler } from \"../../../primitives/callHandler\";\nimport type { SelectionChangeEvent, SelectionControlColor, SelectionControlSize } from \"../checkbox/checkbox\";\n\nexport interface RadioButtonProps extends Omit<JSX.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?: JSX.Element;\n error?: boolean;\n /** Unified handler: `(event, value, data)` where `value` is the radio's value (or checked state). */\n onChange?: (\n event: SelectionChangeEvent,\n value: string | number | string[] | boolean | undefined,\n data: RadioButtonProps\n ) => void;\n /** Test id of the `<input>`; `radio` unless given. */\n \"data-testid\"?: string | undefined;\n ref?: Ref<HTMLInputElement>;\n}\n\nexport function RadioButton(props: RadioButtonProps): JSX.Element {\n const merged = mergeProps({ size: \"medium\" as SelectionControlSize, color: \"primary\" as SelectionControlColor }, props);\n const [local, args] = splitProps(merged, [\n \"label\",\n \"disabled\",\n \"readOnly\",\n \"onClick\",\n \"required\",\n \"name\",\n \"id\",\n \"size\",\n \"color\",\n \"helperText\",\n \"error\",\n \"onChange\",\n \"class\",\n \"aria-describedby\",\n \"ref\",\n \"data-testid\",\n ]);\n const id = createId(local.id);\n const helper = createHelperText(() => local.helperText, { describedBy: () => local[\"aria-describedby\"] });\n\n // `readonly` means nothing to a radio input: a click on it or on its label, Space, and the arrow\n // keys in its group still check it. Cancel the click; the browser then puts the previous state\n // back and re-checks the radio that was checked before.\n const handleClick: JSX.EventHandler<HTMLInputElement, MouseEvent> = (event) => {\n callHandler(local.onClick, event);\n if (local.readOnly) event.preventDefault();\n };\n\n const handleChange: JSX.EventHandler<HTMLInputElement, Event> = (event) => {\n if (local.readOnly) {\n return;\n }\n const value = props.value !== undefined ? (props.value as string | number | string[]) : event.currentTarget.checked;\n local.onChange?.(event, value, props);\n };\n\n return (\n <TextFieldWrapper\n helperText={helper.text()}\n helperTextId={helper.id}\n disabled={local.disabled}\n error={local.error}\n class=\"smwb-text-field-checkbox\"\n >\n <label\n for={id}\n class={cn(\"smwb-radio\", `smwb-radio_size-${local.size}`, `smwb-radio_color-${local.color}`, {\n \"smwb-disabled\": local.disabled,\n \"smwb-readonly\": local.readOnly,\n })}\n >\n <span class=\"smwb-radio__wrapper\">\n <input\n id={id}\n name={local.name}\n disabled={local.disabled}\n readonly={local.readOnly}\n required={local.required}\n aria-invalid={local.error || undefined}\n aria-required={local.required || undefined}\n aria-describedby={helper.describedBy()}\n class={cn(\"smwb-radio__input\", local.class)}\n type=\"radio\"\n data-testid={local[\"data-testid\"] ?? \"radio\"}\n ref={mergeRefs(local.ref)}\n {...args}\n onChange={handleChange}\n onClick={handleClick}\n />\n <span class={cn(\"smwb-radio__btn\", { \"smwb-disabled\": local.disabled })} />\n <span class={cn(\"smwb-radio__bg\", { \"smwb-disabled\": local.disabled })} />\n </span>\n <Show when={local.label}>\n <span class=\"smwb-radio__label\">{local.label}</span>\n </Show>\n </label>\n </TextFieldWrapper>\n );\n}\n\nexport default RadioButton;\n"],"mappings":"AAAA,OAAO;AACP,OAAO;AACP,SAAmB,MAAM,YAAY,kBAAkB;AACvD,OAAO,QAAQ;AACf,SAAS,wBAAwB;AACjC,SAAS,wBAAwB;AACjC,SAAS,gBAAgB;AACzB,SAAS,iBAA2B;AACpC,SAAS,mBAAmB;AAiCrB,SAAS,YAAY,OAAsC;AAChE,QAAM,SAAS,WAAW,EAAE,MAAM,UAAkC,OAAO,UAAmC,GAAG,KAAK;AACtH,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,KAAK,SAAS,MAAM,EAAE;AAC5B,QAAM,SAAS,iBAAiB,MAAM,MAAM,YAAY,EAAE,aAAa,MAAM,MAAM,kBAAkB,EAAE,CAAC;AAKxG,QAAM,cAA8D,CAAC,UAAU;AAC7E,gBAAY,MAAM,SAAS,KAAK;AAChC,QAAI,MAAM,SAAU,OAAM,eAAe;AAAA,EAC3C;AAEA,QAAM,eAA0D,CAAC,UAAU;AACzE,QAAI,MAAM,UAAU;AAClB;AAAA,IACF;AACA,UAAM,QAAQ,MAAM,UAAU,SAAa,MAAM,QAAuC,MAAM,cAAc;AAC5G,UAAM,WAAW,OAAO,OAAO,KAAK;AAAA,EACtC;AAEA,SACE,CAAC;AAAA,IACC,YAAY,OAAO,KAAK;AAAA,IACxB,cAAc,OAAO;AAAA,IACrB,UAAU,MAAM;AAAA,IAChB,OAAO,MAAM;AAAA,IACb,MAAM;AAAA,GACP;AAAA,MACC,CAAC;AAAA,IACC,KAAK;AAAA,IACL,OAAO,GAAG,cAAc,mBAAmB,MAAM,IAAI,IAAI,oBAAoB,MAAM,KAAK,IAAI;AAAA,MAC1F,iBAAiB,MAAM;AAAA,MACvB,iBAAiB,MAAM;AAAA,IACzB,CAAC;AAAA,GACF;AAAA,QACC,CAAC,KAAK,MAAM,sBAAsB;AAAA,UAChC,CAAC;AAAA,IACC,IAAI;AAAA,IACJ,MAAM,MAAM;AAAA,IACZ,UAAU,MAAM;AAAA,IAChB,UAAU,MAAM;AAAA,IAChB,UAAU,MAAM;AAAA,IAChB,cAAc,MAAM,SAAS;AAAA,IAC7B,eAAe,MAAM,YAAY;AAAA,IACjC,kBAAkB,OAAO,YAAY;AAAA,IACrC,OAAO,GAAG,qBAAqB,MAAM,KAAK;AAAA,IAC1C,KAAK;AAAA,IACL,aAAa,MAAM,aAAa,KAAK;AAAA,IACrC,KAAK,UAAU,MAAM,GAAG;AAAA,QACpB;AAAA,IACJ,UAAU;AAAA,IACV,SAAS;AAAA,EACX,EAAE;AAAA,UACF,CAAC,KAAK,OAAO,GAAG,mBAAmB,EAAE,iBAAiB,MAAM,SAAS,CAAC,GAAG,EAAE;AAAA,UAC3E,CAAC,KAAK,OAAO,GAAG,kBAAkB,EAAE,iBAAiB,MAAM,SAAS,CAAC,GAAG,EAAE;AAAA,QAC5E,EApBC,KAoBM;AAAA,QACP,CAAC,KAAK,MAAM,MAAM,OAAO;AAAA,UACvB,CAAC,KAAK,MAAM,qBAAqB,MAAM,MAAM,EAA5C,KAAmD;AAAA,QACtD,EAFC,KAEM;AAAA,MACT,EA/BC,MA+BO;AAAA,IACV,EAvCC;AAyCL;AAEA,IAAO,sBAAQ;","names":[],"file":"radioButton.jsx"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import "@smwb/ui-styles/less/tokens.entry.less";
|
|
2
2
|
import "@smwb/ui-styles/less/components/rating/rating.entry.less";
|
|
3
|
-
import { For, Show,
|
|
3
|
+
import { For, Show, createSignal, mergeProps, splitProps } from "solid-js";
|
|
4
4
|
import cn from "clsx";
|
|
5
5
|
import { Icon } from "../../base/icon";
|
|
6
6
|
import { createControllableState } from "../../../primitives/createControllableState";
|
|
7
|
+
import { createHelperText, hasHelperText } from "../../../primitives/createHelperText";
|
|
7
8
|
import { mergeRefs } from "../../../primitives/mergeRefs";
|
|
8
9
|
function Rating(props) {
|
|
9
10
|
const merged = mergeProps(
|
|
@@ -34,10 +35,12 @@ function Rating(props) {
|
|
|
34
35
|
"error",
|
|
35
36
|
"helperText",
|
|
36
37
|
"id",
|
|
38
|
+
"aria-label",
|
|
39
|
+
"aria-describedby",
|
|
37
40
|
"onChange",
|
|
38
41
|
"ref"
|
|
39
42
|
]);
|
|
40
|
-
const
|
|
43
|
+
const helper = createHelperText(() => local.helperText, { describedBy: () => local["aria-describedby"] });
|
|
41
44
|
const [current, setCurrent] = createControllableState({
|
|
42
45
|
value: () => local.value,
|
|
43
46
|
defaultValue: local.defaultValue,
|
|
@@ -77,45 +80,71 @@ function Rating(props) {
|
|
|
77
80
|
commit(local.max);
|
|
78
81
|
}
|
|
79
82
|
};
|
|
83
|
+
const onStarMouseMove = (event, starIndex) => {
|
|
84
|
+
if (!interactive()) return;
|
|
85
|
+
setHover(local.precision === 0.5 ? valueFromEvent(event, starIndex) : starIndex + 1);
|
|
86
|
+
};
|
|
80
87
|
const filledIcon = () => local.icon ?? <Icon name="star" fill={1} size={local.size} />;
|
|
81
88
|
const blankIcon = () => local.emptyIcon ?? <Icon name="star" size={local.size} />;
|
|
89
|
+
const valueText = () => `${current()} of ${local.max}`;
|
|
90
|
+
const label = () => {
|
|
91
|
+
const rated = local["aria-label"];
|
|
92
|
+
if (!local.readOnly) return rated || "Rating";
|
|
93
|
+
return rated ? `${rated} ${valueText()}` : valueText();
|
|
94
|
+
};
|
|
82
95
|
return <span
|
|
83
|
-
ref={mergeRefs(local.ref)}
|
|
84
|
-
id={local.id}
|
|
85
96
|
class={cn(
|
|
86
97
|
"smwb-rating",
|
|
87
98
|
{ "smwb-rating_readonly": local.readOnly, "smwb-rating_disabled": local.disabled, "smwb-rating_error": local.error },
|
|
88
99
|
local.color !== "primary" && `smwb-rating_color-${local.color}`,
|
|
89
100
|
local.class
|
|
90
101
|
)}
|
|
102
|
+
>
|
|
103
|
+
<span
|
|
104
|
+
ref={mergeRefs(local.ref)}
|
|
105
|
+
id={local.id}
|
|
106
|
+
class="smwb-rating__control"
|
|
91
107
|
data-testid="rating"
|
|
92
|
-
role="img"
|
|
93
|
-
aria-label={
|
|
108
|
+
role={local.readOnly ? "img" : "slider"}
|
|
109
|
+
aria-label={label()}
|
|
110
|
+
aria-valuemin={local.readOnly ? void 0 : 0}
|
|
111
|
+
aria-valuemax={local.readOnly ? void 0 : local.max}
|
|
112
|
+
aria-valuenow={local.readOnly ? void 0 : current()}
|
|
113
|
+
aria-valuetext={local.readOnly ? void 0 : valueText()}
|
|
114
|
+
aria-disabled={!local.readOnly && local.disabled ? true : void 0}
|
|
115
|
+
aria-describedby={helper.describedBy()}
|
|
94
116
|
tabindex={interactive() ? 0 : void 0}
|
|
95
|
-
onKeyDown={
|
|
117
|
+
onKeyDown={handleKeyDown}
|
|
96
118
|
>
|
|
97
|
-
|
|
98
|
-
|
|
119
|
+
<For each={Array.from({ length: local.max }, (_, index) => index)}>
|
|
120
|
+
{(index) => {
|
|
99
121
|
const fillRatio = () => Math.max(0, Math.min(1, display() - index));
|
|
100
122
|
return <span
|
|
101
123
|
class="smwb-rating__item"
|
|
102
|
-
style={{
|
|
124
|
+
style={{
|
|
125
|
+
width: `${local.size}px`,
|
|
126
|
+
height: `${local.size}px`,
|
|
127
|
+
cursor: interactive() ? "pointer" : "default"
|
|
128
|
+
}}
|
|
103
129
|
onClick={(event) => handleSelect(event, index)}
|
|
104
|
-
onMouseMove={
|
|
105
|
-
onMouseLeave={
|
|
130
|
+
onMouseMove={(event) => onStarMouseMove(event, index)}
|
|
131
|
+
onMouseLeave={() => setHover(null)}
|
|
106
132
|
>
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
133
|
+
<span class="smwb-rating__icon smwb-rating__icon_empty">{blankIcon()}</span>
|
|
134
|
+
<span class="smwb-rating__icon smwb-rating__icon_filled" style={{ width: `${fillRatio() * 100}%` }}>
|
|
135
|
+
{filledIcon()}
|
|
136
|
+
</span>
|
|
137
|
+
</span>;
|
|
112
138
|
}}
|
|
113
|
-
|
|
139
|
+
</For>
|
|
140
|
+
</span>
|
|
114
141
|
<Show when={local.name}>
|
|
115
142
|
<input type="hidden" name={local.name} value={current()} />
|
|
116
143
|
</Show>
|
|
117
|
-
<Show when={
|
|
118
|
-
<span class={cn("smwb-rating__helper", local.error && "smwb-rating__helper_error")}>
|
|
144
|
+
<Show when={hasHelperText(helper.text())}>
|
|
145
|
+
<span id={helper.id} class={cn("smwb-rating__helper", local.error && "smwb-rating__helper_error")}>
|
|
146
|
+
{helper.text()}
|
|
147
|
+
</span>
|
|
119
148
|
</Show>
|
|
120
149
|
</span>;
|
|
121
150
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/inputs/rating/rating.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/rating/rating.entry.less\";\nimport { type JSX, For, Show, children, createSignal, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport type RatingColor = \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport interface RatingProps {\n class?: 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. */\n icon?: JSX.Element;\n /** Empty icon. */\n emptyIcon?: JSX.Element;\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?: JSX.Element;\n id?: string;\n onChange?: (value: number) => void;\n ref?: Ref<HTMLSpanElement>;\n}\n\nexport function Rating(props: RatingProps): JSX.Element {\n const merged = mergeProps(\n {\n defaultValue: 0,\n max: 5,\n precision: 1 as 1 | 0.5,\n readOnly: false,\n disabled: false,\n size: 28,\n color: \"primary\" as RatingColor,\n },\n props\n );\n const [local] = splitProps(merged, [\n \"class\",\n \"value\",\n \"defaultValue\",\n \"max\",\n \"precision\",\n \"readOnly\",\n \"disabled\",\n \"size\",\n \"icon\",\n \"emptyIcon\",\n \"name\",\n \"color\",\n \"error\",\n \"helperText\",\n \"id\",\n \"onChange\",\n \"ref\",\n ]);\n // Read once: markup passed as a prop is created anew on every read, and\n // during hydration a copy the server never rendered has no DOM node.\n const helperText = children(() => local.helperText);\n\n const [current, setCurrent] = createControllableState<number>({\n value: () => local.value,\n defaultValue: local.defaultValue,\n onChange: (next) => local.onChange?.(next),\n });\n const [hover, setHover] = createSignal<number | null>(null);\n\n const display = (): number => hover() ?? current();\n const interactive = (): boolean => !local.readOnly && !local.disabled;\n\n const valueFromEvent = (event: MouseEvent & { currentTarget: HTMLSpanElement }, starIndex: number): number => {\n if (local.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 & { currentTarget: HTMLSpanElement }, starIndex: number): void => {\n if (!interactive()) return;\n setCurrent(valueFromEvent(event, starIndex));\n };\n\n const commit = (next: number): void => {\n setCurrent(Math.max(0, Math.min(local.max, next)));\n };\n\n const handleKeyDown: JSX.EventHandler<HTMLSpanElement, KeyboardEvent> = (event) => {\n if (!interactive()) return;\n if (event.key === \"ArrowRight\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n commit(current() + local.precision);\n } else if (event.key === \"ArrowLeft\" || event.key === \"ArrowDown\") {\n event.preventDefault();\n commit(current() - local.precision);\n } else if (event.key === \"Home\") {\n event.preventDefault();\n commit(0);\n } else if (event.key === \"End\") {\n event.preventDefault();\n commit(local.max);\n }\n };\n\n const filledIcon = (): JSX.Element => local.icon ?? <Icon name=\"star\" fill={1} size={local.size} />;\n const blankIcon = (): JSX.Element => local.emptyIcon ?? <Icon name=\"star\" size={local.size} />;\n\n return (\n <span\n ref={mergeRefs(local.ref)}\n id={local.id}\n class={cn(\n \"smwb-rating\",\n { \"smwb-rating_readonly\": local.readOnly, \"smwb-rating_disabled\": local.disabled, \"smwb-rating_error\": local.error },\n local.color !== \"primary\" && `smwb-rating_color-${local.color}`,\n local.class\n )}\n data-testid=\"rating\"\n role=\"img\"\n aria-label={`${current()} of ${local.max}`}\n tabindex={interactive() ? 0 : undefined}\n onKeyDown={interactive() ? handleKeyDown : undefined}\n >\n <For each={Array.from({ length: local.max }, (_, index) => index)}>\n {(index) => {\n const fillRatio = (): number => Math.max(0, Math.min(1, display() - index));\n return (\n <span\n class=\"smwb-rating__item\"\n style={{ width: `${local.size}px`, height: `${local.size}px`, cursor: interactive() ? \"pointer\" : \"default\" }}\n onClick={(event) => handleSelect(event, index)}\n onMouseMove={\n interactive()\n ? (event) => setHover(local.precision === 0.5 ? valueFromEvent(event, index) : index + 1)\n : undefined\n }\n onMouseLeave={interactive() ? () => setHover(null) : undefined}\n >\n <span class=\"smwb-rating__icon smwb-rating__icon_empty\">{blankIcon()}</span>\n <span class=\"smwb-rating__icon smwb-rating__icon_filled\" style={{ width: `${fillRatio() * 100}%` }}>\n {filledIcon()}\n </span>\n </span>\n );\n }}\n </For>\n <Show when={local.name}>\n <input type=\"hidden\" name={local.name} value={current()} />\n </Show>\n <Show when={helperText() != null && (helperText() as unknown) !== false}>\n <span class={cn(\"smwb-rating__helper\", local.error && \"smwb-rating__helper_error\")}>{helperText()}</span>\n </Show>\n </span>\n );\n}\n\nexport default Rating;\n"],"mappings":"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","names":[],"file":"rating.jsx"}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/inputs/rating/rating.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/rating/rating.entry.less\";\nimport { type JSX, For, Show, createSignal, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { createHelperText, hasHelperText } from \"../../../primitives/createHelperText\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport type RatingColor = \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport interface RatingProps {\n class?: 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. */\n icon?: JSX.Element;\n /** Empty icon. */\n emptyIcon?: JSX.Element;\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?: JSX.Element;\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 /** The control: the slider, or the image of a read-only rating. */\n ref?: Ref<HTMLSpanElement>;\n}\n\nexport function Rating(props: RatingProps): JSX.Element {\n const merged = mergeProps(\n {\n defaultValue: 0,\n max: 5,\n precision: 1 as 1 | 0.5,\n readOnly: false,\n disabled: false,\n size: 28,\n color: \"primary\" as RatingColor,\n },\n props\n );\n const [local] = splitProps(merged, [\n \"class\",\n \"value\",\n \"defaultValue\",\n \"max\",\n \"precision\",\n \"readOnly\",\n \"disabled\",\n \"size\",\n \"icon\",\n \"emptyIcon\",\n \"name\",\n \"color\",\n \"error\",\n \"helperText\",\n \"id\",\n \"aria-label\",\n \"aria-describedby\",\n \"onChange\",\n \"ref\",\n ]);\n // Reads the helper text once: markup passed as a prop is created anew on\n // every read, and during hydration a copy the server never rendered has no DOM\n // node. The rating draws any helper text it is given, so the read creates\n // nothing that is not drawn.\n const helper = createHelperText(() => local.helperText, { describedBy: () => local[\"aria-describedby\"] });\n\n const [current, setCurrent] = createControllableState<number>({\n value: () => local.value,\n defaultValue: local.defaultValue,\n onChange: (next) => local.onChange?.(next),\n });\n const [hover, setHover] = createSignal<number | null>(null);\n\n const display = (): number => hover() ?? current();\n const interactive = (): boolean => !local.readOnly && !local.disabled;\n\n const valueFromEvent = (event: MouseEvent & { currentTarget: HTMLSpanElement }, starIndex: number): number => {\n if (local.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 & { currentTarget: HTMLSpanElement }, starIndex: number): void => {\n if (!interactive()) return;\n setCurrent(valueFromEvent(event, starIndex));\n };\n\n const commit = (next: number): void => {\n setCurrent(Math.max(0, Math.min(local.max, next)));\n };\n\n const handleKeyDown: JSX.EventHandler<HTMLSpanElement, KeyboardEvent> = (event) => {\n if (!interactive()) return;\n if (event.key === \"ArrowRight\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n commit(current() + local.precision);\n } else if (event.key === \"ArrowLeft\" || event.key === \"ArrowDown\") {\n event.preventDefault();\n commit(current() - local.precision);\n } else if (event.key === \"Home\") {\n event.preventDefault();\n commit(0);\n } else if (event.key === \"End\") {\n event.preventDefault();\n commit(local.max);\n }\n };\n\n // Solid binds event handlers once, so they are always attached and check\n // `interactive()` themselves (handleKeyDown too): a rating can turn read-only,\n // or back, after it renders. Leaving always clears the preview, so a rating\n // that turns read-only while hovered does not keep it.\n const onStarMouseMove = (event: MouseEvent & { currentTarget: HTMLSpanElement }, starIndex: number): void => {\n if (!interactive()) return;\n setHover(local.precision === 0.5 ? valueFromEvent(event, starIndex) : starIndex + 1);\n };\n\n const filledIcon = (): JSX.Element => local.icon ?? <Icon name=\"star\" fill={1} size={local.size} />;\n const blankIcon = (): JSX.Element => local.emptyIcon ?? <Icon name=\"star\" size={local.size} />;\n\n const valueText = (): string => `${current()} of ${local.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 = (): string => {\n const rated = local[\"aria-label\"];\n if (!local.readOnly) return rated || \"Rating\";\n return rated ? `${rated} ${valueText()}` : valueText();\n };\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 class={cn(\n \"smwb-rating\",\n { \"smwb-rating_readonly\": local.readOnly, \"smwb-rating_disabled\": local.disabled, \"smwb-rating_error\": local.error },\n local.color !== \"primary\" && `smwb-rating_color-${local.color}`,\n local.class\n )}\n >\n <span\n ref={mergeRefs(local.ref)}\n id={local.id}\n class=\"smwb-rating__control\"\n data-testid=\"rating\"\n role={local.readOnly ? \"img\" : \"slider\"}\n aria-label={label()}\n aria-valuemin={local.readOnly ? undefined : 0}\n aria-valuemax={local.readOnly ? undefined : local.max}\n aria-valuenow={local.readOnly ? undefined : current()}\n aria-valuetext={local.readOnly ? undefined : valueText()}\n aria-disabled={!local.readOnly && local.disabled ? true : undefined}\n aria-describedby={helper.describedBy()}\n tabindex={interactive() ? 0 : undefined}\n onKeyDown={handleKeyDown}\n >\n <For each={Array.from({ length: local.max }, (_, index) => index)}>\n {(index) => {\n const fillRatio = (): number => Math.max(0, Math.min(1, display() - index));\n return (\n <span\n class=\"smwb-rating__item\"\n style={{\n width: `${local.size}px`,\n height: `${local.size}px`,\n cursor: interactive() ? \"pointer\" : \"default\",\n }}\n onClick={(event) => handleSelect(event, index)}\n onMouseMove={(event) => onStarMouseMove(event, index)}\n onMouseLeave={() => setHover(null)}\n >\n <span class=\"smwb-rating__icon smwb-rating__icon_empty\">{blankIcon()}</span>\n <span class=\"smwb-rating__icon smwb-rating__icon_filled\" style={{ width: `${fillRatio() * 100}%` }}>\n {filledIcon()}\n </span>\n </span>\n );\n }}\n </For>\n </span>\n <Show when={local.name}>\n <input type=\"hidden\" name={local.name} value={current()} />\n </Show>\n <Show when={hasHelperText(helper.text())}>\n <span id={helper.id} class={cn(\"smwb-rating__helper\", local.error && \"smwb-rating__helper_error\")}>\n {helper.text()}\n </span>\n </Show>\n </span>\n );\n}\n\nexport default Rating;\n"],"mappings":"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","names":[],"file":"rating.jsx"}
|