@smwb/ui-react 2.7.0 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AI_LESS_OVERRIDES.md +84 -21
- package/AI_THEMING.md +72 -28
- package/README.md +681 -0
- package/dist/assets/styles/less/components/appBar/appBar.entry.css +1 -1
- package/dist/assets/styles/less/components/avatar/avatar.entry.css +1 -1
- package/dist/assets/styles/less/components/button/button.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/commandPalette/commandPalette.entry.css +1 -0
- package/dist/assets/styles/less/components/composer/composer.entry.css +1 -0
- package/dist/assets/styles/less/components/dagView/dagView.entry.css +1 -0
- package/dist/assets/styles/less/components/diffStat/diffStat.entry.css +1 -0
- package/dist/assets/styles/less/components/kbd/kbd.entry.css +1 -0
- package/dist/assets/styles/less/components/list/list.entry.css +1 -1
- package/dist/assets/styles/less/components/menu/menu.entry.css +1 -1
- package/dist/assets/styles/less/components/personChip/personChip.entry.css +1 -1
- package/dist/assets/styles/less/components/qrCode/qrCode.entry.css +1 -0
- 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/sidebar/sidebar.entry.css +1 -1
- package/dist/assets/styles/less/components/statusDot/statusDot.entry.css +1 -0
- package/dist/assets/styles/less/components/swimlanes/swimlanes.entry.css +1 -0
- package/dist/assets/styles/less/components/tabGroups/tabGroups.entry.css +1 -0
- package/dist/assets/styles/less/components/table/table.entry.css +1 -1
- package/dist/assets/styles/less/components/tabs/tab/tab.entry.css +1 -1
- package/dist/assets/styles/less/components/tabs/tabPanel/tabPanel.entry.css +1 -0
- package/dist/assets/styles/less/components/tabs/tabs.entry.css +1 -1
- package/dist/assets/styles/less/components/textField/textField.entry.css +1 -1
- package/dist/assets/styles/less/components/thumbCard/thumbCard.entry.css +1 -1
- package/dist/assets/styles/less/components/toggle/toggle.entry.css +1 -1
- package/dist/assets/styles/less/components/treeView/treeView.entry.css +1 -1
- package/dist/assets/styles/less/components/typography/typography.entry.css +1 -1
- package/dist/assets/styles/less/connects/rt/table.entry.css +1 -1
- package/dist/assets/styles/less/tokens.entry.css +1 -1
- package/dist/components/base/icon/icon.d.ts +6 -2
- package/dist/components/base/icon/icon.js +49 -37
- package/dist/components/base/icon/icon.js.map +1 -1
- package/dist/components/base/ripple/ripple.d.ts +3 -0
- package/dist/components/base/ripple/ripple.js +38 -23
- package/dist/components/base/ripple/ripple.js.map +1 -1
- package/dist/components/dataDisplay/avatar/avatar.d.ts +4 -0
- package/dist/components/dataDisplay/avatar/avatar.js +50 -37
- package/dist/components/dataDisplay/avatar/avatar.js.map +1 -1
- package/dist/components/dataDisplay/badge/badge.js +37 -28
- package/dist/components/dataDisplay/badge/badge.js.map +1 -1
- package/dist/components/dataDisplay/card/card.d.ts +30 -2
- package/dist/components/dataDisplay/card/card.js +50 -23
- package/dist/components/dataDisplay/card/card.js.map +1 -1
- package/dist/components/dataDisplay/carousel/carousel.js +70 -70
- package/dist/components/dataDisplay/carousel/carousel.js.map +1 -1
- package/dist/components/dataDisplay/chart/chart.d.ts +2 -0
- package/dist/components/dataDisplay/chart/chart.js +66 -53
- package/dist/components/dataDisplay/chart/chart.js.map +1 -1
- package/dist/components/dataDisplay/chat/chat.d.ts +43 -1
- package/dist/components/dataDisplay/chat/chat.js +179 -150
- package/dist/components/dataDisplay/chat/chat.js.map +1 -1
- package/dist/components/dataDisplay/chat/chatComposer.d.ts +17 -0
- package/dist/components/dataDisplay/chat/chatComposer.js +31 -29
- package/dist/components/dataDisplay/chat/chatComposer.js.map +1 -1
- package/dist/components/dataDisplay/chat/chatIconButton.d.ts +1 -1
- package/dist/components/dataDisplay/chat/chatIconButton.js +30 -26
- package/dist/components/dataDisplay/chat/chatIconButton.js.map +1 -1
- package/dist/components/dataDisplay/chat/chatLayout.d.ts +3 -1
- package/dist/components/dataDisplay/chat/chatLayout.js +56 -55
- package/dist/components/dataDisplay/chat/chatLayout.js.map +1 -1
- package/dist/components/dataDisplay/chat/chatOverlayLayout.d.ts +3 -1
- package/dist/components/dataDisplay/chat/index.d.ts +1 -1
- package/dist/components/dataDisplay/chat/utils.d.ts +14 -0
- package/dist/components/dataDisplay/chat/utils.js.map +1 -1
- package/dist/components/dataDisplay/chip/chip.d.ts +31 -0
- package/dist/components/dataDisplay/chip/chip.js +110 -83
- package/dist/components/dataDisplay/chip/chip.js.map +1 -1
- package/dist/components/dataDisplay/chipGroup/chipGroup.js +34 -30
- package/dist/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
- package/dist/components/dataDisplay/dagView/dagLayout.d.ts +74 -0
- package/dist/components/dataDisplay/dagView/dagLayout.js +289 -0
- package/dist/components/dataDisplay/dagView/dagLayout.js.map +1 -0
- package/dist/components/dataDisplay/dagView/dagView.d.ts +157 -0
- package/dist/components/dataDisplay/dagView/dagView.js +543 -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 +171 -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.map +1 -1
- package/dist/components/dataDisplay/diffStat/diffStat.d.ts +54 -0
- package/dist/components/dataDisplay/diffStat/diffStat.js +63 -0
- package/dist/components/dataDisplay/diffStat/diffStat.js.map +1 -0
- package/dist/components/dataDisplay/diffStat/index.d.ts +2 -0
- package/dist/components/dataDisplay/expansionPanel/expansionPanel.js +143 -98
- package/dist/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
- package/dist/components/dataDisplay/kanban/kanban.d.ts +6 -0
- package/dist/components/dataDisplay/kanban/kanban.js +46 -35
- package/dist/components/dataDisplay/kanban/kanban.js.map +1 -1
- package/dist/components/dataDisplay/kbd/index.d.ts +4 -0
- package/dist/components/dataDisplay/kbd/kbd.d.ts +40 -0
- package/dist/components/dataDisplay/kbd/kbd.js +27 -0
- package/dist/components/dataDisplay/kbd/kbd.js.map +1 -0
- package/dist/components/dataDisplay/kbd/kbdKeys.d.ts +18 -0
- package/dist/components/dataDisplay/kbd/kbdKeys.js +72 -0
- package/dist/components/dataDisplay/kbd/kbdKeys.js.map +1 -0
- package/dist/components/dataDisplay/lazyImage/lazyImage.js +31 -30
- package/dist/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
- package/dist/components/dataDisplay/list/list.d.ts +2 -0
- package/dist/components/dataDisplay/list/list.js +15 -14
- package/dist/components/dataDisplay/list/list.js.map +1 -1
- package/dist/components/dataDisplay/list/listItem.d.ts +34 -0
- package/dist/components/dataDisplay/list/listItem.js +47 -24
- 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 +24 -23
- package/dist/components/dataDisplay/meter/meter.js.map +1 -1
- package/dist/components/dataDisplay/personChip/personChip.d.ts +2 -0
- package/dist/components/dataDisplay/personChip/personChip.js +39 -27
- package/dist/components/dataDisplay/personChip/personChip.js.map +1 -1
- package/dist/components/dataDisplay/qrCode/index.d.ts +2 -0
- package/dist/components/dataDisplay/qrCode/qrCode.d.ts +28 -0
- package/dist/components/dataDisplay/qrCode/qrCode.js +78 -0
- package/dist/components/dataDisplay/qrCode/qrCode.js.map +1 -0
- package/dist/components/dataDisplay/qrCode/qrCodePath.d.ts +7 -0
- package/dist/components/dataDisplay/qrCode/qrCodePath.js +20 -0
- package/dist/components/dataDisplay/qrCode/qrCodePath.js.map +1 -0
- package/dist/components/dataDisplay/stat/stat.d.ts +2 -0
- package/dist/components/dataDisplay/stat/stat.js +25 -13
- package/dist/components/dataDisplay/stat/stat.js.map +1 -1
- package/dist/components/dataDisplay/statusDot/index.d.ts +2 -0
- package/dist/components/dataDisplay/statusDot/statusDot.d.ts +35 -0
- package/dist/components/dataDisplay/statusDot/statusDot.js +30 -0
- package/dist/components/dataDisplay/statusDot/statusDot.js.map +1 -0
- package/dist/components/dataDisplay/swimlanes/index.d.ts +2 -0
- package/dist/components/dataDisplay/swimlanes/swimlanes.d.ts +53 -0
- package/dist/components/dataDisplay/swimlanes/swimlanes.js +357 -0
- package/dist/components/dataDisplay/swimlanes/swimlanes.js.map +1 -0
- package/dist/components/dataDisplay/table/table.d.ts +16 -1
- package/dist/components/dataDisplay/table/table.js +40 -36
- package/dist/components/dataDisplay/table/table.js.map +1 -1
- package/dist/components/dataDisplay/table/tableBody.js +10 -4
- package/dist/components/dataDisplay/table/tableBody.js.map +1 -1
- package/dist/components/dataDisplay/table/tableCell.d.ts +10 -2
- package/dist/components/dataDisplay/table/tableCell.js +20 -13
- package/dist/components/dataDisplay/table/tableCell.js.map +1 -1
- package/dist/components/dataDisplay/table/tableColumns.d.ts +83 -0
- package/dist/components/dataDisplay/table/tableColumns.js +112 -0
- package/dist/components/dataDisplay/table/tableColumns.js.map +1 -0
- package/dist/components/dataDisplay/table/tableHead.js +9 -3
- package/dist/components/dataDisplay/table/tableHead.js.map +1 -1
- package/dist/components/dataDisplay/table/tableHeadCell.d.ts +24 -3
- package/dist/components/dataDisplay/table/tableHeadCell.js +60 -65
- package/dist/components/dataDisplay/table/tableHeadCell.js.map +1 -1
- package/dist/components/dataDisplay/table/tableRow.d.ts +3 -1
- package/dist/components/dataDisplay/table/tableRow.js +28 -16
- package/dist/components/dataDisplay/table/tableRow.js.map +1 -1
- package/dist/components/dataDisplay/thumbCard/thumbCard.d.ts +44 -3
- package/dist/components/dataDisplay/thumbCard/thumbCard.js +79 -59
- package/dist/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
- package/dist/components/dataDisplay/treeView/treeView.d.ts +19 -1
- package/dist/components/dataDisplay/treeView/treeView.js +113 -91
- package/dist/components/dataDisplay/treeView/treeView.js.map +1 -1
- package/dist/components/feedBack/emptyState/emptyState.d.ts +2 -0
- package/dist/components/feedBack/emptyState/emptyState.js +22 -12
- package/dist/components/feedBack/emptyState/emptyState.js.map +1 -1
- package/dist/components/feedBack/message/message.d.ts +2 -0
- package/dist/components/feedBack/message/message.js +30 -19
- package/dist/components/feedBack/message/message.js.map +1 -1
- package/dist/components/feedBack/modal/modal.js +84 -63
- package/dist/components/feedBack/modal/modal.js.map +1 -1
- package/dist/components/feedBack/skeleton/skeleton.d.ts +10 -2
- package/dist/components/feedBack/skeleton/skeleton.js +37 -34
- package/dist/components/feedBack/skeleton/skeleton.js.map +1 -1
- package/dist/components/feedBack/snackbar/snackbar.js +104 -103
- package/dist/components/feedBack/snackbar/snackbar.js.map +1 -1
- package/dist/components/feedBack/tooltip/tooltip.d.ts +9 -1
- package/dist/components/feedBack/tooltip/tooltip.js +67 -47
- package/dist/components/feedBack/tooltip/tooltip.js.map +1 -1
- package/dist/components/inputs/button/button.d.ts +15 -1
- package/dist/components/inputs/button/button.js +73 -63
- package/dist/components/inputs/button/button.js.map +1 -1
- package/dist/components/inputs/buttonGroups/buttonGroup.d.ts +2 -0
- package/dist/components/inputs/buttonGroups/buttonGroup.js +40 -36
- package/dist/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
- package/dist/components/inputs/checkbox/checkbox.d.ts +10 -0
- package/dist/components/inputs/checkbox/checkbox.js +84 -59
- package/dist/components/inputs/checkbox/checkbox.js.map +1 -1
- package/dist/components/inputs/composer/composer.d.ts +149 -0
- package/dist/components/inputs/composer/composer.js +219 -0
- package/dist/components/inputs/composer/composer.js.map +1 -0
- package/dist/components/inputs/composer/composerFiles.d.ts +26 -0
- package/dist/components/inputs/composer/composerFiles.js +19 -0
- package/dist/components/inputs/composer/composerFiles.js.map +1 -0
- package/dist/components/inputs/composer/composerKeys.d.ts +29 -0
- package/dist/components/inputs/composer/composerKeys.js +7 -0
- package/dist/components/inputs/composer/composerKeys.js.map +1 -0
- package/dist/components/inputs/composer/index.d.ts +3 -0
- package/dist/components/inputs/datePicker/datePicker.js +170 -164
- package/dist/components/inputs/datePicker/datePicker.js.map +1 -1
- package/dist/components/inputs/datePicker/datePickerDay.d.ts +1 -1
- package/dist/components/inputs/datePicker/datePickerDay.js +52 -44
- package/dist/components/inputs/datePicker/datePickerDay.js.map +1 -1
- package/dist/components/inputs/datePicker/datePickerIconButton.d.ts +1 -1
- package/dist/components/inputs/datePicker/datePickerIconButton.js +32 -28
- package/dist/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
- package/dist/components/inputs/dateTimePicker/dateTimePicker.js +160 -154
- package/dist/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
- package/dist/components/inputs/floatingButton/floatingButton.js +32 -30
- package/dist/components/inputs/floatingButton/floatingButton.js.map +1 -1
- package/dist/components/inputs/radioButton/radioButton.d.ts +9 -0
- package/dist/components/inputs/radioButton/radioButton.js +77 -58
- package/dist/components/inputs/radioButton/radioButton.js.map +1 -1
- package/dist/components/inputs/rating/rating.d.ts +8 -0
- package/dist/components/inputs/rating/rating.js +85 -70
- package/dist/components/inputs/rating/rating.js.map +1 -1
- package/dist/components/inputs/selectField/dropdownMenu.d.ts +20 -1
- package/dist/components/inputs/selectField/dropdownMenu.js +266 -113
- package/dist/components/inputs/selectField/dropdownMenu.js.map +1 -1
- package/dist/components/inputs/selectField/optionNavigation.d.ts +17 -0
- package/dist/components/inputs/selectField/optionNavigation.js +38 -0
- package/dist/components/inputs/selectField/optionNavigation.js.map +1 -0
- package/dist/components/inputs/selectField/selectField.d.ts +31 -1
- package/dist/components/inputs/selectField/selectField.js +358 -218
- package/dist/components/inputs/selectField/selectField.js.map +1 -1
- package/dist/components/inputs/slider/slider.d.ts +22 -1
- package/dist/components/inputs/slider/slider.js +330 -261
- package/dist/components/inputs/slider/slider.js.map +1 -1
- package/dist/components/inputs/textField/textField.d.ts +7 -0
- package/dist/components/inputs/textField/textField.js +118 -100
- package/dist/components/inputs/textField/textField.js.map +1 -1
- package/dist/components/inputs/textField/textFieldWrapper.d.ts +15 -1
- package/dist/components/inputs/textField/textFieldWrapper.js +45 -34
- package/dist/components/inputs/textField/textFieldWrapper.js.map +1 -1
- package/dist/components/inputs/timePicker/timePicker.js +91 -85
- package/dist/components/inputs/timePicker/timePicker.js.map +1 -1
- package/dist/components/inputs/toggle/toggle.d.ts +4 -0
- package/dist/components/inputs/toggle/toggle.js +80 -61
- package/dist/components/inputs/toggle/toggle.js.map +1 -1
- package/dist/components/inputs/valueSlider/valueSlider.d.ts +12 -0
- package/dist/components/inputs/valueSlider/valueSlider.js +23 -22
- package/dist/components/inputs/valueSlider/valueSlider.js.map +1 -1
- package/dist/components/layout/appLayout/appLayout.d.ts +2 -0
- package/dist/components/layout/appLayout/appLayout.js +25 -24
- package/dist/components/layout/appLayout/appLayout.js.map +1 -1
- package/dist/components/layout/divider/divider.d.ts +2 -0
- package/dist/components/layout/divider/divider.js +23 -22
- package/dist/components/layout/divider/divider.js.map +1 -1
- package/dist/components/layout/floatingWindow/floatingWindow.d.ts +2 -0
- package/dist/components/layout/floatingWindow/floatingWindow.js +145 -139
- package/dist/components/layout/floatingWindow/floatingWindow.js.map +1 -1
- package/dist/components/layout/grid/grid.d.ts +12 -1
- package/dist/components/layout/grid/grid.js +51 -36
- package/dist/components/layout/grid/grid.js.map +1 -1
- package/dist/components/layout/page/page.d.ts +2 -0
- package/dist/components/layout/page/page.js +16 -8
- package/dist/components/layout/page/page.js.map +1 -1
- package/dist/components/layout/pageHeader/pageHeader.d.ts +2 -0
- package/dist/components/layout/pageHeader/pageHeader.js +22 -13
- package/dist/components/layout/pageHeader/pageHeader.js.map +1 -1
- package/dist/components/layout/sectionHeader/sectionHeader.d.ts +2 -0
- package/dist/components/layout/sectionHeader/sectionHeader.js +37 -27
- package/dist/components/layout/sectionHeader/sectionHeader.js.map +1 -1
- package/dist/components/layout/sheet/sheet.d.ts +14 -0
- package/dist/components/layout/sheet/sheet.js +148 -132
- package/dist/components/layout/sheet/sheet.js.map +1 -1
- package/dist/components/layout/stack/stack.d.ts +2 -0
- package/dist/components/layout/stack/stack.js +29 -17
- package/dist/components/layout/stack/stack.js.map +1 -1
- package/dist/components/layout/tabGroups/index.d.ts +4 -0
- package/dist/components/layout/tabGroups/tabGroups.d.ts +94 -0
- package/dist/components/layout/tabGroups/tabGroups.js +783 -0
- package/dist/components/layout/tabGroups/tabGroups.js.map +1 -0
- package/dist/components/layout/tabGroups/tabGroupsFocus.d.ts +55 -0
- package/dist/components/layout/tabGroups/tabGroupsFocus.js +199 -0
- package/dist/components/layout/tabGroups/tabGroupsFocus.js.map +1 -0
- package/dist/components/layout/tabGroups/tabGroupsLayout.d.ts +250 -0
- package/dist/components/layout/tabGroups/tabGroupsLayout.js +497 -0
- package/dist/components/layout/tabGroups/tabGroupsLayout.js.map +1 -0
- package/dist/components/navigation/appBar/appBar.d.ts +24 -0
- package/dist/components/navigation/appBar/appBar.js +39 -33
- package/dist/components/navigation/appBar/appBar.js.map +1 -1
- package/dist/components/navigation/bottomBar/bottomBar.js +81 -77
- package/dist/components/navigation/bottomBar/bottomBar.js.map +1 -1
- package/dist/components/navigation/breadcrumbs/breadcrumbs.d.ts +2 -0
- package/dist/components/navigation/breadcrumbs/breadcrumbs.js +29 -27
- package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
- package/dist/components/navigation/commandPalette/commandPalette.d.ts +111 -0
- package/dist/components/navigation/commandPalette/commandPalette.js +337 -0
- package/dist/components/navigation/commandPalette/commandPalette.js.map +1 -0
- package/dist/components/navigation/commandPalette/commandPaletteFilter.d.ts +11 -0
- package/dist/components/navigation/commandPalette/commandPaletteFilter.js +16 -0
- package/dist/components/navigation/commandPalette/commandPaletteFilter.js.map +1 -0
- package/dist/components/navigation/commandPalette/commandPaletteNavigation.d.ts +13 -0
- package/dist/components/navigation/commandPalette/commandPaletteNavigation.js +38 -0
- package/dist/components/navigation/commandPalette/commandPaletteNavigation.js.map +1 -0
- package/dist/components/navigation/commandPalette/commandPaletteTypes.d.ts +39 -0
- package/dist/components/navigation/commandPalette/index.d.ts +4 -0
- package/dist/components/navigation/menu/menu.d.ts +12 -0
- package/dist/components/navigation/menu/menu.js.map +1 -1
- package/dist/components/navigation/menu/menuContext.d.ts +2 -0
- package/dist/components/navigation/menu/menuContext.js.map +1 -1
- package/dist/components/navigation/menu/menuFloating.js +42 -30
- package/dist/components/navigation/menu/menuFloating.js.map +1 -1
- package/dist/components/navigation/menu/menuItem.d.ts +4 -0
- package/dist/components/navigation/menu/menuItem.js +60 -48
- package/dist/components/navigation/menu/menuItem.js.map +1 -1
- package/dist/components/navigation/menu/menuList.d.ts +5 -1
- package/dist/components/navigation/menu/menuList.js +30 -19
- package/dist/components/navigation/menu/menuList.js.map +1 -1
- package/dist/components/navigation/menu/menuSubmenu.js +53 -40
- package/dist/components/navigation/menu/menuSubmenu.js.map +1 -1
- package/dist/components/navigation/pagination/pagination.d.ts +2 -0
- package/dist/components/navigation/pagination/pagination.js +51 -49
- package/dist/components/navigation/pagination/pagination.js.map +1 -1
- package/dist/components/navigation/sidebar/sidebar.d.ts +10 -0
- package/dist/components/navigation/sidebar/sidebar.js +65 -62
- package/dist/components/navigation/sidebar/sidebar.js.map +1 -1
- package/dist/components/navigation/stepper/stepper.d.ts +2 -0
- package/dist/components/navigation/stepper/stepper.js +37 -28
- package/dist/components/navigation/stepper/stepper.js.map +1 -1
- package/dist/components/navigation/tabs/index.d.ts +3 -1
- package/dist/components/navigation/tabs/tab/tab.d.ts +88 -1
- package/dist/components/navigation/tabs/tab/tab.js +116 -35
- package/dist/components/navigation/tabs/tab/tab.js.map +1 -1
- package/dist/components/navigation/tabs/tabPanel/tabPanel.d.ts +19 -0
- package/dist/components/navigation/tabs/tabPanel/tabPanel.js +27 -0
- package/dist/components/navigation/tabs/tabPanel/tabPanel.js.map +1 -0
- package/dist/components/navigation/tabs/tabs.d.ts +80 -4
- package/dist/components/navigation/tabs/tabs.js +369 -148
- package/dist/components/navigation/tabs/tabs.js.map +1 -1
- package/dist/components/navigation/tabs/tabs.utils.d.ts +20 -0
- package/dist/components/navigation/tabs/tabs.utils.js +11 -0
- package/dist/components/navigation/tabs/tabs.utils.js.map +1 -0
- package/dist/components/navigation/tabs/tabsContext.d.ts +11 -0
- package/dist/components/navigation/tabs/tabsContext.js +6 -0
- package/dist/components/navigation/tabs/tabsContext.js.map +1 -0
- package/dist/connects/rt/table/headerCellRenderer.d.ts +4 -1
- package/dist/connects/rt/table/headerCellRenderer.js +45 -15
- package/dist/connects/rt/table/headerCellRenderer.js.map +1 -1
- package/dist/connects/rt/table/table.d.ts +15 -1
- package/dist/connects/rt/table/table.js +125 -131
- package/dist/connects/rt/table/table.js.map +1 -1
- package/dist/headless/components/base/icon/icon.js +49 -37
- package/dist/headless/components/base/icon/icon.js.map +1 -1
- package/dist/headless/components/base/ripple/ripple.js +42 -27
- package/dist/headless/components/base/ripple/ripple.js.map +1 -1
- package/dist/headless/components/dataDisplay/avatar/avatar.js +51 -38
- package/dist/headless/components/dataDisplay/avatar/avatar.js.map +1 -1
- package/dist/headless/components/dataDisplay/badge/badge.js +37 -28
- package/dist/headless/components/dataDisplay/badge/badge.js.map +1 -1
- package/dist/headless/components/dataDisplay/card/card.js +50 -23
- package/dist/headless/components/dataDisplay/card/card.js.map +1 -1
- package/dist/headless/components/dataDisplay/carousel/carousel.js +55 -55
- package/dist/headless/components/dataDisplay/carousel/carousel.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chat.js +179 -150
- package/dist/headless/components/dataDisplay/chat/chat.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chatComposer.js +31 -29
- package/dist/headless/components/dataDisplay/chat/chatComposer.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chatIconButton.js +30 -26
- package/dist/headless/components/dataDisplay/chat/chatIconButton.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/chatLayout.js +56 -55
- package/dist/headless/components/dataDisplay/chat/chatLayout.js.map +1 -1
- package/dist/headless/components/dataDisplay/chat/utils.js.map +1 -1
- package/dist/headless/components/dataDisplay/chip/chip.js +108 -81
- package/dist/headless/components/dataDisplay/chip/chip.js.map +1 -1
- package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js +35 -31
- package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
- package/dist/headless/components/dataDisplay/dagView/dagLayout.js +289 -0
- package/dist/headless/components/dataDisplay/dagView/dagLayout.js.map +1 -0
- package/dist/headless/components/dataDisplay/dagView/dagView.js +541 -0
- package/dist/headless/components/dataDisplay/dagView/dagView.js.map +1 -0
- package/dist/headless/components/dataDisplay/dagView/panZoom.js +171 -0
- package/dist/headless/components/dataDisplay/dagView/panZoom.js.map +1 -0
- package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js.map +1 -1
- package/dist/headless/components/dataDisplay/diffStat/diffStat.js +61 -0
- package/dist/headless/components/dataDisplay/diffStat/diffStat.js.map +1 -0
- package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js +143 -98
- package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
- package/dist/headless/components/dataDisplay/kanban/kanban.js +45 -34
- package/dist/headless/components/dataDisplay/kanban/kanban.js.map +1 -1
- package/dist/headless/components/dataDisplay/kbd/kbd.js +25 -0
- package/dist/headless/components/dataDisplay/kbd/kbd.js.map +1 -0
- package/dist/headless/components/dataDisplay/kbd/kbdKeys.js +72 -0
- package/dist/headless/components/dataDisplay/kbd/kbdKeys.js.map +1 -0
- package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js +30 -29
- package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
- package/dist/headless/components/dataDisplay/list/list.js +15 -14
- package/dist/headless/components/dataDisplay/list/list.js.map +1 -1
- package/dist/headless/components/dataDisplay/list/listItem.js +47 -24
- package/dist/headless/components/dataDisplay/list/listItem.js.map +1 -1
- package/dist/headless/components/dataDisplay/meter/meter.js +19 -18
- package/dist/headless/components/dataDisplay/meter/meter.js.map +1 -1
- package/dist/headless/components/dataDisplay/personChip/personChip.js +39 -27
- package/dist/headless/components/dataDisplay/personChip/personChip.js.map +1 -1
- package/dist/headless/components/dataDisplay/qrCode/qrCode.js +76 -0
- package/dist/headless/components/dataDisplay/qrCode/qrCode.js.map +1 -0
- package/dist/headless/components/dataDisplay/qrCode/qrCodePath.js +20 -0
- package/dist/headless/components/dataDisplay/qrCode/qrCodePath.js.map +1 -0
- package/dist/headless/components/dataDisplay/stat/stat.js +27 -15
- package/dist/headless/components/dataDisplay/stat/stat.js.map +1 -1
- package/dist/headless/components/dataDisplay/statusDot/statusDot.js +28 -0
- package/dist/headless/components/dataDisplay/statusDot/statusDot.js.map +1 -0
- package/dist/headless/components/dataDisplay/swimlanes/swimlanes.js +355 -0
- package/dist/headless/components/dataDisplay/swimlanes/swimlanes.js.map +1 -0
- package/dist/headless/components/dataDisplay/table/table.js +40 -36
- package/dist/headless/components/dataDisplay/table/table.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableBody.js +10 -4
- package/dist/headless/components/dataDisplay/table/tableBody.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableCell.js +20 -13
- package/dist/headless/components/dataDisplay/table/tableCell.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableColumns.js +112 -0
- package/dist/headless/components/dataDisplay/table/tableColumns.js.map +1 -0
- package/dist/headless/components/dataDisplay/table/tableHead.js +9 -3
- package/dist/headless/components/dataDisplay/table/tableHead.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableHeadCell.js +60 -65
- package/dist/headless/components/dataDisplay/table/tableHeadCell.js.map +1 -1
- package/dist/headless/components/dataDisplay/table/tableRow.js +28 -16
- package/dist/headless/components/dataDisplay/table/tableRow.js.map +1 -1
- package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js +78 -58
- package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
- package/dist/headless/components/dataDisplay/treeView/treeView.js +113 -91
- package/dist/headless/components/dataDisplay/treeView/treeView.js.map +1 -1
- package/dist/headless/components/feedBack/emptyState/emptyState.js +21 -11
- package/dist/headless/components/feedBack/emptyState/emptyState.js.map +1 -1
- package/dist/headless/components/feedBack/message/message.js +31 -20
- package/dist/headless/components/feedBack/message/message.js.map +1 -1
- package/dist/headless/components/feedBack/modal/modal.js +84 -63
- package/dist/headless/components/feedBack/modal/modal.js.map +1 -1
- package/dist/headless/components/feedBack/skeleton/skeleton.js +38 -35
- package/dist/headless/components/feedBack/skeleton/skeleton.js.map +1 -1
- package/dist/headless/components/feedBack/snackbar/snackbar.js +108 -107
- package/dist/headless/components/feedBack/snackbar/snackbar.js.map +1 -1
- package/dist/headless/components/feedBack/tooltip/tooltip.js +67 -47
- package/dist/headless/components/feedBack/tooltip/tooltip.js.map +1 -1
- package/dist/headless/components/inputs/button/button.js +73 -63
- package/dist/headless/components/inputs/button/button.js.map +1 -1
- package/dist/headless/components/inputs/buttonGroups/buttonGroup.js +40 -36
- package/dist/headless/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
- package/dist/headless/components/inputs/checkbox/checkbox.js +85 -60
- package/dist/headless/components/inputs/checkbox/checkbox.js.map +1 -1
- package/dist/headless/components/inputs/composer/composer.js +217 -0
- package/dist/headless/components/inputs/composer/composer.js.map +1 -0
- package/dist/headless/components/inputs/composer/composerFiles.js +19 -0
- package/dist/headless/components/inputs/composer/composerFiles.js.map +1 -0
- package/dist/headless/components/inputs/composer/composerKeys.js +7 -0
- package/dist/headless/components/inputs/composer/composerKeys.js.map +1 -0
- package/dist/headless/components/inputs/datePicker/datePicker.js +170 -164
- package/dist/headless/components/inputs/datePicker/datePicker.js.map +1 -1
- package/dist/headless/components/inputs/datePicker/datePickerDay.js +52 -44
- package/dist/headless/components/inputs/datePicker/datePickerDay.js.map +1 -1
- package/dist/headless/components/inputs/datePicker/datePickerIconButton.js +32 -28
- package/dist/headless/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
- package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js +160 -154
- package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
- package/dist/headless/components/inputs/floatingButton/floatingButton.js +32 -30
- package/dist/headless/components/inputs/floatingButton/floatingButton.js.map +1 -1
- package/dist/headless/components/inputs/radioButton/radioButton.js +77 -58
- package/dist/headless/components/inputs/radioButton/radioButton.js.map +1 -1
- package/dist/headless/components/inputs/rating/rating.js +85 -70
- package/dist/headless/components/inputs/rating/rating.js.map +1 -1
- package/dist/headless/components/inputs/selectField/dropdownMenu.js +266 -113
- package/dist/headless/components/inputs/selectField/dropdownMenu.js.map +1 -1
- package/dist/headless/components/inputs/selectField/optionNavigation.js +38 -0
- package/dist/headless/components/inputs/selectField/optionNavigation.js.map +1 -0
- package/dist/headless/components/inputs/selectField/selectField.js +358 -218
- package/dist/headless/components/inputs/selectField/selectField.js.map +1 -1
- package/dist/headless/components/inputs/slider/slider.js +330 -261
- package/dist/headless/components/inputs/slider/slider.js.map +1 -1
- package/dist/headless/components/inputs/textField/textField.js +118 -100
- package/dist/headless/components/inputs/textField/textField.js.map +1 -1
- package/dist/headless/components/inputs/textField/textFieldWrapper.js +45 -34
- package/dist/headless/components/inputs/textField/textFieldWrapper.js.map +1 -1
- package/dist/headless/components/inputs/timePicker/timePicker.js +91 -85
- package/dist/headless/components/inputs/timePicker/timePicker.js.map +1 -1
- package/dist/headless/components/inputs/toggle/toggle.js +79 -60
- package/dist/headless/components/inputs/toggle/toggle.js.map +1 -1
- package/dist/headless/components/inputs/valueSlider/valueSlider.js +25 -24
- package/dist/headless/components/inputs/valueSlider/valueSlider.js.map +1 -1
- package/dist/headless/components/layout/appLayout/appLayout.js +27 -26
- package/dist/headless/components/layout/appLayout/appLayout.js.map +1 -1
- package/dist/headless/components/layout/divider/divider.js +18 -17
- package/dist/headless/components/layout/divider/divider.js.map +1 -1
- package/dist/headless/components/layout/floatingWindow/floatingWindow.js +145 -139
- package/dist/headless/components/layout/floatingWindow/floatingWindow.js.map +1 -1
- package/dist/headless/components/layout/grid/grid.js +48 -33
- package/dist/headless/components/layout/grid/grid.js.map +1 -1
- package/dist/headless/components/layout/page/page.js +15 -7
- package/dist/headless/components/layout/page/page.js.map +1 -1
- package/dist/headless/components/layout/pageHeader/pageHeader.js +20 -11
- package/dist/headless/components/layout/pageHeader/pageHeader.js.map +1 -1
- package/dist/headless/components/layout/sectionHeader/sectionHeader.js +36 -26
- package/dist/headless/components/layout/sectionHeader/sectionHeader.js.map +1 -1
- package/dist/headless/components/layout/sheet/sheet.js +156 -140
- package/dist/headless/components/layout/sheet/sheet.js.map +1 -1
- package/dist/headless/components/layout/stack/stack.js +29 -17
- package/dist/headless/components/layout/stack/stack.js.map +1 -1
- package/dist/headless/components/layout/tabGroups/tabGroups.js +781 -0
- package/dist/headless/components/layout/tabGroups/tabGroups.js.map +1 -0
- package/dist/headless/components/layout/tabGroups/tabGroupsFocus.js +199 -0
- package/dist/headless/components/layout/tabGroups/tabGroupsFocus.js.map +1 -0
- package/dist/headless/components/layout/tabGroups/tabGroupsLayout.js +497 -0
- package/dist/headless/components/layout/tabGroups/tabGroupsLayout.js.map +1 -0
- package/dist/headless/components/navigation/appBar/appBar.js +35 -29
- package/dist/headless/components/navigation/appBar/appBar.js.map +1 -1
- package/dist/headless/components/navigation/bottomBar/bottomBar.js +81 -77
- package/dist/headless/components/navigation/bottomBar/bottomBar.js.map +1 -1
- package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js +32 -30
- package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
- package/dist/headless/components/navigation/commandPalette/commandPalette.js +335 -0
- package/dist/headless/components/navigation/commandPalette/commandPalette.js.map +1 -0
- package/dist/headless/components/navigation/commandPalette/commandPaletteFilter.js +16 -0
- package/dist/headless/components/navigation/commandPalette/commandPaletteFilter.js.map +1 -0
- package/dist/headless/components/navigation/commandPalette/commandPaletteNavigation.js +38 -0
- package/dist/headless/components/navigation/commandPalette/commandPaletteNavigation.js.map +1 -0
- package/dist/headless/components/navigation/menu/menu.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuContext.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuFloating.js +42 -30
- package/dist/headless/components/navigation/menu/menuFloating.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuItem.js +60 -48
- package/dist/headless/components/navigation/menu/menuItem.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuList.js +30 -19
- package/dist/headless/components/navigation/menu/menuList.js.map +1 -1
- package/dist/headless/components/navigation/menu/menuSubmenu.js +53 -40
- package/dist/headless/components/navigation/menu/menuSubmenu.js.map +1 -1
- package/dist/headless/components/navigation/pagination/pagination.js +51 -49
- package/dist/headless/components/navigation/pagination/pagination.js.map +1 -1
- package/dist/headless/components/navigation/sidebar/sidebar.js +55 -52
- package/dist/headless/components/navigation/sidebar/sidebar.js.map +1 -1
- package/dist/headless/components/navigation/stepper/stepper.js +42 -33
- package/dist/headless/components/navigation/stepper/stepper.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tab/tab.js +117 -36
- package/dist/headless/components/navigation/tabs/tab/tab.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tabPanel/tabPanel.js +25 -0
- package/dist/headless/components/navigation/tabs/tabPanel/tabPanel.js.map +1 -0
- package/dist/headless/components/navigation/tabs/tabs.js +362 -141
- package/dist/headless/components/navigation/tabs/tabs.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tabs.utils.js +11 -0
- package/dist/headless/components/navigation/tabs/tabs.utils.js.map +1 -0
- package/dist/headless/components/navigation/tabs/tabsContext.js +6 -0
- package/dist/headless/components/navigation/tabs/tabsContext.js.map +1 -0
- package/dist/headless/hooks/useDismissOnEscape.js +16 -0
- package/dist/headless/hooks/useDismissOnEscape.js.map +1 -0
- package/dist/headless/hooks/useFocusTrap.js +24 -20
- package/dist/headless/hooks/useFocusTrap.js.map +1 -1
- package/dist/headless/hooks/useHelperText.js +13 -0
- package/dist/headless/hooks/useHelperText.js.map +1 -0
- package/dist/headless/hooks/useKeyboardShortcut.js +19 -0
- package/dist/headless/hooks/useKeyboardShortcut.js.map +1 -0
- package/dist/headless/index.js +360 -316
- package/dist/headless/index.js.map +1 -1
- package/dist/headless/utils/controlProps.js +14 -0
- package/dist/headless/utils/controlProps.js.map +1 -0
- package/dist/headless/utils/keyboardShortcut.js +49 -0
- package/dist/headless/utils/keyboardShortcut.js.map +1 -0
- package/dist/headless/utils/linkAttrs.js +13 -0
- package/dist/headless/utils/linkAttrs.js.map +1 -0
- package/dist/headless/utils/overlayLayer.js +14 -7
- package/dist/headless/utils/overlayLayer.js.map +1 -1
- package/dist/headless/utils/ownClick.js +40 -0
- package/dist/headless/utils/ownClick.js.map +1 -0
- package/dist/headless/utils/readOnlyToggle.js +14 -0
- package/dist/headless/utils/readOnlyToggle.js.map +1 -0
- package/dist/headless/utils/restoreFocus.js +10 -0
- package/dist/headless/utils/restoreFocus.js.map +1 -0
- package/dist/hooks/useDismissOnEscape.d.ts +11 -0
- package/dist/hooks/useDismissOnEscape.js +16 -0
- package/dist/hooks/useDismissOnEscape.js.map +1 -0
- package/dist/hooks/useFocusTrap.d.ts +8 -1
- package/dist/hooks/useFocusTrap.js +24 -20
- package/dist/hooks/useFocusTrap.js.map +1 -1
- package/dist/hooks/useHelperText.d.ts +21 -0
- package/dist/hooks/useHelperText.js +13 -0
- package/dist/hooks/useHelperText.js.map +1 -0
- package/dist/hooks/useKeyboardShortcut.d.ts +30 -0
- package/dist/hooks/useKeyboardShortcut.js +19 -0
- package/dist/hooks/useKeyboardShortcut.js.map +1 -0
- package/dist/index.cjs +3 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +24 -3
- package/dist/index.js +360 -316
- package/dist/index.js.map +1 -1
- package/dist/utils/controlProps.d.ts +16 -0
- package/dist/utils/controlProps.js +14 -0
- package/dist/utils/controlProps.js.map +1 -0
- package/dist/utils/keyboardShortcut.d.ts +12 -0
- package/dist/utils/keyboardShortcut.js +49 -0
- package/dist/utils/keyboardShortcut.js.map +1 -0
- package/dist/utils/linkAttrs.d.ts +13 -0
- package/dist/utils/linkAttrs.js +13 -0
- package/dist/utils/linkAttrs.js.map +1 -0
- package/dist/utils/overlayLayer.d.ts +15 -3
- package/dist/utils/overlayLayer.js +14 -7
- package/dist/utils/overlayLayer.js.map +1 -1
- package/dist/utils/ownClick.d.ts +16 -0
- package/dist/utils/ownClick.js +40 -0
- package/dist/utils/ownClick.js.map +1 -0
- package/dist/utils/readOnlyToggle.d.ts +15 -0
- package/dist/utils/readOnlyToggle.js +14 -0
- package/dist/utils/readOnlyToggle.js.map +1 -0
- package/dist/utils/restoreFocus.d.ts +8 -0
- package/dist/utils/restoreFocus.js +10 -0
- package/dist/utils/restoreFocus.js.map +1 -0
- package/package.json +5 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skeleton.js","sources":["../../../../src/components/feedBack/skeleton/skeleton.tsx"],"sourcesContent":["import { CSSProperties, forwardRef, HTMLAttributes } from \"react\";\nimport cn from \"clsx\";\n\nexport interface SkeletonProps extends HTMLAttributes<HTMLElement> {\n className?: string;\n /** Shape of the placeholder. */\n variant?: \"text\" | \"circular\" | \"rounded\" | \"rectangular\";\n /** Width — number (px) or any CSS length. */\n width?: number | string;\n /** Height — number (px) or any CSS length. */\n height?: number | string;\n /** Shimmer animation; pass false to disable. */\n animation?: \"pulse\" | \"wave\" | false;\n
|
|
1
|
+
{"version":3,"file":"skeleton.js","sources":["../../../../src/components/feedBack/skeleton/skeleton.tsx"],"sourcesContent":["import { CSSProperties, forwardRef, HTMLAttributes } from \"react\";\nimport cn from \"clsx\";\n\nexport interface SkeletonProps extends HTMLAttributes<HTMLElement> {\n className?: string;\n /** Shape of the placeholder. */\n variant?: \"text\" | \"circular\" | \"rounded\" | \"rectangular\";\n /** Width — number (px) or any CSS length. */\n width?: number | string;\n /** Height — number (px) or any CSS length. */\n height?: number | string;\n /** Shimmer animation; pass false to disable. */\n animation?: \"pulse\" | \"wave\" | false;\n /**\n * Render N stacked placeholders. With `count` > 1 they sit in a group `<span>`, which takes the `ref` and the\n * other HTML attributes; `className` and `style` go on each placeholder.\n */\n count?: number;\n /** Stagger consecutive items by N ms (with `count`). */\n animationDelay?: number;\n /** Element of each placeholder. */\n component?: \"span\" | \"div\";\n /**\n * Test id of the placeholder; `skeleton` unless given. With `count` > 1 it\n * marks the group, and each placeholder keeps `skeleton`.\n */\n \"data-testid\"?: string;\n}\n\nconst toCssSize = (value?: number | string): string | undefined => (typeof value === \"number\" ? `${value}px` : value);\n\nexport const Skeleton = forwardRef<HTMLElement, SkeletonProps>(function Skeleton(\n {\n className,\n variant = \"text\",\n width,\n height,\n animation = \"pulse\",\n count = 1,\n animationDelay,\n component = \"span\",\n style,\n \"data-testid\": dataTestId,\n ...props\n },\n ref\n) {\n const skeletonClassName = cn(\n \"smwb-skeleton\",\n `smwb-skeleton_${variant}`,\n animation === false ? \"smwb-skeleton_no-animation\" : `smwb-skeleton_${animation}`,\n className\n );\n\n const Tag = component as \"span\";\n\n const renderOne = (i: number) => {\n const inlineStyle: CSSProperties = {\n ...style,\n // An unset prop keeps the width or height the caller set in `style`.\n width: toCssSize(width) ?? style?.width,\n height: toCssSize(height) ?? style?.height,\n ...(animationDelay ? { animationDelay: `${i * animationDelay}ms` } : {}),\n };\n return (\n <Tag\n key={i}\n ref={count === 1 ? ref : undefined}\n {...(count === 1 ? props : {})}\n data-testid={count === 1 ? (dataTestId ?? \"skeleton\") : \"skeleton\"}\n aria-hidden=\"true\"\n className={skeletonClassName}\n style={inlineStyle}\n />\n );\n };\n\n if (count === 1) {\n return renderOne(0);\n }\n\n return (\n <span ref={ref} {...props} data-testid={dataTestId} className=\"smwb-skeleton__group\" aria-hidden=\"true\">\n {Array.from({ length: count }, (_, i) => renderOne(i))}\n </span>\n );\n});\n\nexport default Skeleton;\n"],"names":["toCssSize","value","Skeleton","forwardRef","className","variant","width","height","animation","count","animationDelay","component","style","dataTestId","props","ref","skeletonClassName","cn","Tag","renderOne","i","inlineStyle","_a","_b","jsx","_"],"mappings":";;;;;AA+BA,MAAMA,IAAY,CAACC,MAAiD,OAAOA,KAAU,WAAW,GAAGA,CAAK,OAAOA,GAElGC,IAAWC,EAAuC,SAC7D;AAAA,EACE,WAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,OAAAC,IAAQ;AAAA,EACR,gBAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,OAAAC;AAAA,EACA,eAAeC;AAAA,EACf,GAAGC;AACL,GACAC,GACA;AACA,QAAMC,IAAoBC;AAAA,IACxB;AAAA,IACA,iBAAiBZ,CAAO;AAAA,IACxBG,MAAc,KAAQ,+BAA+B,iBAAiBA,CAAS;AAAA,IAC/EJ;AAAA,EAAA,GAGIc,IAAMP,GAENQ,IAAY,CAACC,MAAc;;AAC/B,UAAMC,IAA6B;AAAA,MACjC,GAAGT;AAAA;AAAA,MAEH,QAAOU,IAAAtB,EAAUM,CAAK,MAAf,OAAAgB,IAAoBV,KAAA,gBAAAA,EAAO;AAAA,MAClC,SAAQW,IAAAvB,EAAUO,CAAM,MAAhB,OAAAgB,IAAqBX,KAAA,gBAAAA,EAAO;AAAA,MACpC,GAAIF,IAAiB,EAAE,gBAAgB,GAAGU,IAAIV,CAAc,SAAS,CAAA;AAAA,IAAC;AAExE,WACE,gBAAAc;AAAA,MAACN;AAAA,MAAA;AAAA,QAEC,KAAKT,MAAU,IAAIM,IAAM;AAAA,QACxB,GAAIN,MAAU,IAAIK,IAAQ,CAAA;AAAA,QAC3B,eAAaL,MAAU,KAAKI,KAAA,OAAAA,IAA4B;AAAA,QACxD,eAAY;AAAA,QACZ,WAAWG;AAAA,QACX,OAAOK;AAAA,MAAA;AAAA,MANFD;AAAA,IAAA;AAAA,EASX;AAEA,SAAIX,MAAU,IACLU,EAAU,CAAC,IAIlB,gBAAAK,EAAC,UAAK,KAAAT,GAAW,GAAGD,GAAO,eAAaD,GAAY,WAAU,wBAAuB,eAAY,QAC9F,gBAAM,KAAK,EAAE,QAAQJ,EAAA,GAAS,CAACgB,GAAG,MAAMN,EAAU,CAAC,CAAC,EAAA,CACvD;AAEJ,CAAC;"}
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { jsx as
|
|
1
|
+
import { jsx as f, jsxs as I } from "react/jsx-runtime";
|
|
2
2
|
import '../../../assets/styles/less/components/snackbar/snackbar.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
|
|
3
3
|
/* empty css */
|
|
4
|
-
import F, { useState as L, useCallback as G, useContext as q, useRef as
|
|
4
|
+
import F, { useState as L, useCallback as G, useContext as q, useRef as _, createContext as y, useEffect as z } from "react";
|
|
5
5
|
import { v4 as H } from "uuid";
|
|
6
6
|
import { createPortal as J } from "react-dom";
|
|
7
|
-
import
|
|
7
|
+
import A from "clsx";
|
|
8
8
|
import { TransitionGroup as K, CSSTransition as M } from "react-transition-group";
|
|
9
9
|
import { useSnackbarsPortal as Q } from "./useSnackbarsPortal.js";
|
|
10
10
|
import { useEventCallback as U } from "../../../hooks/useEventCallback.js";
|
|
11
11
|
function V({
|
|
12
12
|
snack: r,
|
|
13
|
-
position:
|
|
14
|
-
variant:
|
|
15
|
-
className:
|
|
16
|
-
component:
|
|
17
|
-
autoClose:
|
|
18
|
-
autoCloseTime:
|
|
19
|
-
snackRest:
|
|
20
|
-
onSnackRemove:
|
|
21
|
-
onClose:
|
|
13
|
+
position: m,
|
|
14
|
+
variant: v,
|
|
15
|
+
className: u,
|
|
16
|
+
component: S,
|
|
17
|
+
autoClose: w,
|
|
18
|
+
autoCloseTime: C,
|
|
19
|
+
snackRest: c,
|
|
20
|
+
onSnackRemove: b,
|
|
21
|
+
onClose: d
|
|
22
22
|
}) {
|
|
23
|
-
var
|
|
24
|
-
const
|
|
25
|
-
return /* @__PURE__ */
|
|
23
|
+
var s, a, n, l, x;
|
|
24
|
+
const i = _(null);
|
|
25
|
+
return /* @__PURE__ */ f(
|
|
26
26
|
M,
|
|
27
27
|
{
|
|
28
28
|
appear: !0,
|
|
@@ -38,27 +38,27 @@ function V({
|
|
|
38
38
|
},
|
|
39
39
|
unmountOnExit: !0,
|
|
40
40
|
in: !0,
|
|
41
|
-
nodeRef:
|
|
42
|
-
children: /* @__PURE__ */
|
|
41
|
+
nodeRef: i,
|
|
42
|
+
children: /* @__PURE__ */ f(
|
|
43
43
|
W,
|
|
44
44
|
{
|
|
45
|
-
ref:
|
|
46
|
-
component: (
|
|
45
|
+
ref: i,
|
|
46
|
+
component: (s = r.component) != null ? s : S,
|
|
47
47
|
message: r.message,
|
|
48
|
-
position: (a = r.position) != null ? a :
|
|
49
|
-
variant: (n = r.variant) != null ? n :
|
|
50
|
-
onClick:
|
|
51
|
-
className:
|
|
52
|
-
isAutoClose: (
|
|
53
|
-
autoCloseTime: (
|
|
54
|
-
onClose:
|
|
55
|
-
...
|
|
48
|
+
position: (a = r.position) != null ? a : m,
|
|
49
|
+
variant: (n = r.variant) != null ? n : v,
|
|
50
|
+
onClick: b(r.id),
|
|
51
|
+
className: A(u, r.className),
|
|
52
|
+
isAutoClose: (l = r.autoClose) != null ? l : w,
|
|
53
|
+
autoCloseTime: (x = r.autoCloseTime) != null ? x : C,
|
|
54
|
+
onClose: d(r.id),
|
|
55
|
+
...c
|
|
56
56
|
}
|
|
57
57
|
)
|
|
58
58
|
}
|
|
59
59
|
);
|
|
60
60
|
}
|
|
61
|
-
const
|
|
61
|
+
const $ = y({
|
|
62
62
|
addSnackbar: () => "",
|
|
63
63
|
clearAllSnackbars: () => {
|
|
64
64
|
},
|
|
@@ -71,122 +71,123 @@ const I = y({
|
|
|
71
71
|
});
|
|
72
72
|
function ce(r) {
|
|
73
73
|
const {
|
|
74
|
-
position:
|
|
75
|
-
variant:
|
|
76
|
-
className:
|
|
77
|
-
autoClose:
|
|
78
|
-
autoCloseTime:
|
|
79
|
-
closeOnClick:
|
|
80
|
-
onClick:
|
|
81
|
-
component:
|
|
82
|
-
children:
|
|
83
|
-
...
|
|
84
|
-
} = r, [
|
|
85
|
-
const { key: t, ...
|
|
86
|
-
return a((
|
|
87
|
-
const
|
|
88
|
-
if (
|
|
89
|
-
return [...
|
|
90
|
-
const
|
|
91
|
-
return
|
|
92
|
-
}),
|
|
93
|
-
}, []),
|
|
74
|
+
position: m = "top-right",
|
|
75
|
+
variant: v = "dark",
|
|
76
|
+
className: u,
|
|
77
|
+
autoClose: S = !0,
|
|
78
|
+
autoCloseTime: w = 5e3,
|
|
79
|
+
closeOnClick: C = !0,
|
|
80
|
+
onClick: c,
|
|
81
|
+
component: b = "div",
|
|
82
|
+
children: d,
|
|
83
|
+
...i
|
|
84
|
+
} = r, [s, a] = L([]), { snackbarDomRoot: n } = Q(), l = G((e) => {
|
|
85
|
+
const { key: t, ...o } = e, k = t != null ? t : H(), h = { id: k, ...o };
|
|
86
|
+
return a((R) => {
|
|
87
|
+
const g = R.findIndex((B) => B.id === k);
|
|
88
|
+
if (g === -1)
|
|
89
|
+
return [...R, h];
|
|
90
|
+
const E = [...R];
|
|
91
|
+
return E[g] = h, E;
|
|
92
|
+
}), k;
|
|
93
|
+
}, []), x = () => {
|
|
94
94
|
a([]);
|
|
95
|
-
},
|
|
95
|
+
}, T = () => {
|
|
96
96
|
a((e) => e.slice(1));
|
|
97
|
-
},
|
|
97
|
+
}, N = () => {
|
|
98
98
|
a((e) => e.slice(0, -1));
|
|
99
|
-
},
|
|
100
|
-
a((t) => t.filter((
|
|
99
|
+
}, p = (e) => {
|
|
100
|
+
a((t) => t.filter((o) => o.id !== e));
|
|
101
101
|
}, j = (e) => (t) => {
|
|
102
|
-
|
|
102
|
+
c == null || c(t), C && p(e);
|
|
103
103
|
}, D = (e) => () => {
|
|
104
|
-
|
|
105
|
-
},
|
|
104
|
+
p(e);
|
|
105
|
+
}, P = s.reduce(
|
|
106
106
|
(e, t) => {
|
|
107
|
-
var
|
|
108
|
-
const
|
|
109
|
-
return e[
|
|
107
|
+
var k, h;
|
|
108
|
+
const o = (k = t.position) != null ? k : m;
|
|
109
|
+
return e[o] = [...(h = e[o]) != null ? h : [], t], e;
|
|
110
110
|
},
|
|
111
111
|
{}
|
|
112
|
-
), O = Object.keys(
|
|
113
|
-
const t =
|
|
114
|
-
return /* @__PURE__ */
|
|
112
|
+
), O = Object.keys(P).map((e) => {
|
|
113
|
+
const t = P[e];
|
|
114
|
+
return /* @__PURE__ */ f(
|
|
115
115
|
K,
|
|
116
116
|
{
|
|
117
|
-
className:
|
|
117
|
+
className: A("smwb-snackbars", `smwb-${e}`),
|
|
118
118
|
"data-testid": `snackbars-${e}`,
|
|
119
119
|
appear: !0,
|
|
120
|
-
children: t.map((
|
|
120
|
+
children: t.map((o) => /* @__PURE__ */ f(
|
|
121
121
|
V,
|
|
122
122
|
{
|
|
123
|
-
snack:
|
|
124
|
-
position:
|
|
125
|
-
variant:
|
|
126
|
-
className:
|
|
127
|
-
component:
|
|
128
|
-
autoClose:
|
|
129
|
-
autoCloseTime:
|
|
130
|
-
snackRest:
|
|
123
|
+
snack: o,
|
|
124
|
+
position: m,
|
|
125
|
+
variant: v,
|
|
126
|
+
className: u,
|
|
127
|
+
component: b,
|
|
128
|
+
autoClose: S,
|
|
129
|
+
autoCloseTime: w,
|
|
130
|
+
snackRest: i,
|
|
131
131
|
onSnackRemove: j,
|
|
132
132
|
onClose: D
|
|
133
133
|
},
|
|
134
|
-
|
|
134
|
+
o.id
|
|
135
135
|
))
|
|
136
136
|
},
|
|
137
137
|
e
|
|
138
138
|
);
|
|
139
139
|
});
|
|
140
|
-
return /* @__PURE__ */
|
|
141
|
-
|
|
140
|
+
return /* @__PURE__ */ I(
|
|
141
|
+
$.Provider,
|
|
142
142
|
{
|
|
143
|
-
value: { addSnackbar:
|
|
143
|
+
value: { addSnackbar: l, clearAllSnackbars: x, clearFirstSnackbar: T, clearLastSnackbar: N, clearByIdSnackbar: p },
|
|
144
144
|
children: [
|
|
145
|
-
|
|
145
|
+
d,
|
|
146
146
|
n && J(O, n)
|
|
147
147
|
]
|
|
148
148
|
}
|
|
149
149
|
);
|
|
150
150
|
}
|
|
151
151
|
const W = F.forwardRef(function({
|
|
152
|
-
className:
|
|
153
|
-
message:
|
|
154
|
-
variant:
|
|
155
|
-
position:
|
|
156
|
-
onClick:
|
|
157
|
-
component:
|
|
158
|
-
isAutoClose:
|
|
159
|
-
autoCloseTime:
|
|
160
|
-
onClose:
|
|
161
|
-
action:
|
|
162
|
-
...
|
|
152
|
+
className: m,
|
|
153
|
+
message: v,
|
|
154
|
+
variant: u = "dark",
|
|
155
|
+
position: S = "top-right",
|
|
156
|
+
onClick: w,
|
|
157
|
+
component: C = "div",
|
|
158
|
+
isAutoClose: c,
|
|
159
|
+
autoCloseTime: b,
|
|
160
|
+
onClose: d,
|
|
161
|
+
action: i,
|
|
162
|
+
...s
|
|
163
163
|
}, a) {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
164
|
+
var T, N, p;
|
|
165
|
+
const n = _(), l = U(() => {
|
|
166
|
+
!d || !c || !b || (n.current && clearTimeout(n.current), n.current = setTimeout(() => {
|
|
167
|
+
d();
|
|
168
|
+
}, b));
|
|
168
169
|
});
|
|
169
|
-
return z(() => (
|
|
170
|
+
return z(() => (l(), () => {
|
|
170
171
|
n.current && clearTimeout(n.current);
|
|
171
|
-
}), [
|
|
172
|
-
|
|
172
|
+
}), [l]), /* @__PURE__ */ I(
|
|
173
|
+
C,
|
|
173
174
|
{
|
|
174
175
|
ref: a,
|
|
175
|
-
className:
|
|
176
|
-
onClick:
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
"aria-
|
|
180
|
-
|
|
176
|
+
className: A("smwb-snackbar", m, `smwb-${u}`, `smwb-${S}`),
|
|
177
|
+
onClick: w,
|
|
178
|
+
...s,
|
|
179
|
+
role: (T = s.role) != null ? T : "alert",
|
|
180
|
+
"aria-live": (N = s["aria-live"]) != null ? N : u === "danger" ? "assertive" : "polite",
|
|
181
|
+
"aria-atomic": (p = s["aria-atomic"]) != null ? p : "true",
|
|
181
182
|
children: [
|
|
182
|
-
/* @__PURE__ */
|
|
183
|
-
|
|
183
|
+
/* @__PURE__ */ f("div", { className: "smwb-snackbar__body", children: v }),
|
|
184
|
+
i != null ? /* @__PURE__ */ f("div", { className: "smwb-snackbar__action", children: i }) : null
|
|
184
185
|
]
|
|
185
186
|
}
|
|
186
187
|
);
|
|
187
188
|
});
|
|
188
189
|
function ie() {
|
|
189
|
-
return q(
|
|
190
|
+
return q($);
|
|
190
191
|
}
|
|
191
192
|
export {
|
|
192
193
|
W as Snackbar,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snackbar.js","sources":["../../../../src/components/feedBack/snackbar/snackbar.tsx"],"sourcesContent":["import React, { createContext, useCallback, useContext, useEffect, useRef, useState } from \"react\";\nimport { v4 } from \"uuid\";\nimport { createPortal } from \"react-dom\";\nimport cn from \"clsx\";\nimport { CSSTransition, TransitionGroup } from \"react-transition-group\";\nimport { useSnackbarsPortal } from \"./useSnackbarsPortal\";\nimport { useEventCallback } from \"../../../hooks/useEventCallback\";\n\nexport const variants = [\"dark\", \"light\", \"danger\", \"success\", \"warning\", \"info\"] as const;\nexport const positions = [\"top\", \"bottom\", \"top-left\", \"top-right\", \"bottom-right\", \"bottom-left\"] as const;\n\nexport type Variants = (typeof variants)[number];\nexport type Position = (typeof positions)[number];\n\nexport interface SnackbarsProviderProps extends React.HTMLAttributes<HTMLElement> {\n variant?: Variants;\n position?: Position;\n autoCloseTime?: number;\n closeOnClick?: boolean;\n autoClose?: boolean;\n component?: React.ElementType;\n}\n\ninterface Snack extends SnackbarsProviderProps {\n id: string;\n message: React.ReactNode;\n}\n\ninterface SnackTransitionProps {\n snack: Snack;\n position: Position;\n variant: Variants;\n className?: string;\n component: React.ElementType;\n autoClose: boolean;\n autoCloseTime: number;\n snackRest: Omit<\n SnackbarsProviderProps,\n \"variant\" | \"position\" | \"autoCloseTime\" | \"autoClose\" | \"closeOnClick\" | \"onClick\" | \"component\" | \"children\"\n >;\n onSnackRemove: (id: string) => (event: React.MouseEvent<HTMLElement>) => void;\n onClose: (id: string) => () => void;\n}\n\nfunction SnackTransition({\n snack,\n position,\n variant,\n className,\n component,\n autoClose,\n autoCloseTime,\n snackRest,\n onSnackRemove,\n onClose,\n}: SnackTransitionProps) {\n const nodeRef = useRef<HTMLDivElement>(null);\n\n return (\n <CSSTransition\n appear\n timeout={125}\n classNames={{\n appear: \"smwb-snackbar-enter\",\n appearActive: \"smwb-snackbar-enter-active\",\n appearDone: \"smwb-snackbar-enter-done\",\n enter: \"smwb-snackbar-enter\",\n enterActive: \"smwb-snackbar-enter-active\",\n enterDone: \"smwb-snackbar-enter-done\",\n exitActive: \"smwb-snackbar-exit-active\",\n }}\n unmountOnExit\n in\n nodeRef={nodeRef}\n >\n <Snackbar\n ref={nodeRef}\n component={snack.component ?? component}\n message={snack.message}\n position={snack.position ?? position}\n variant={snack.variant ?? variant}\n onClick={onSnackRemove(snack.id)}\n className={cn(className, snack.className)}\n isAutoClose={snack.autoClose ?? autoClose}\n autoCloseTime={snack.autoCloseTime ?? autoCloseTime}\n onClose={onClose(snack.id)}\n {...snackRest}\n />\n </CSSTransition>\n );\n}\n\nexport interface AddSnackbarOptions extends SnackbarsProviderProps {\n key?: string;\n message: React.ReactNode;\n}\n\nexport type AddSnackbar = (options: AddSnackbarOptions) => string;\n\nexport interface SnackbarOptions {\n addSnackbar: AddSnackbar;\n clearAllSnackbars: () => void;\n clearFirstSnackbar: () => void;\n clearLastSnackbar: () => void;\n clearByIdSnackbar: (id: string) => void;\n}\n\nconst SnackbarContext = createContext<SnackbarOptions>({\n addSnackbar: () => \"\",\n clearAllSnackbars: () => undefined,\n clearFirstSnackbar: () => undefined,\n clearLastSnackbar: () => undefined,\n clearByIdSnackbar: () => undefined,\n});\n\nexport function SnackbarProvider(props: SnackbarsProviderProps) {\n const {\n position = \"top-right\",\n variant = \"dark\",\n className,\n autoClose = true,\n autoCloseTime = 5000,\n closeOnClick = true,\n onClick,\n component = \"div\",\n children,\n ...rest\n } = props;\n\n const [snacks, setSnacks] = useState<Snack[]>([]);\n const { snackbarDomRoot } = useSnackbarsPortal();\n\n const addSnackbar: AddSnackbar = useCallback((options) => {\n const { key, ...rest } = options;\n\n const id = key ?? v4();\n const snack: Snack = { id, ...rest };\n\n setSnacks((prevState) => {\n const index = prevState.findIndex((item) => item.id === id);\n if (index === -1) {\n return [...prevState, snack];\n }\n const next = [...prevState];\n next[index] = snack;\n return next;\n });\n\n return id;\n }, []);\n\n const clearAllSnackbars = () => {\n setSnacks([]);\n };\n\n const clearFirstSnackbar = () => {\n setSnacks((prevState) => prevState.slice(1));\n };\n\n const clearLastSnackbar = () => {\n setSnacks((prevState) => prevState.slice(0, -1));\n };\n\n const clearByIdSnackbar = (id: string) => {\n setSnacks((prevState) => prevState.filter((value) => value.id !== id));\n };\n\n const onSnackRemove = (id: string) => (event: React.MouseEvent<HTMLElement>) => {\n onClick?.(event);\n\n if (closeOnClick) {\n clearByIdSnackbar(id);\n }\n };\n\n const onClose = (id: string) => () => {\n clearByIdSnackbar(id);\n };\n\n const currentPositions = snacks.reduce(\n (acc, snack) => {\n const currentPosition = snack.position ?? position;\n\n acc[currentPosition] = [...(acc[currentPosition] ?? []), snack];\n\n return acc;\n },\n {} as Record<Position, Snack[]>\n );\n\n const snackbars = (Object.keys(currentPositions) as unknown as typeof positions).map((key) => {\n const snacks = currentPositions[key];\n\n return (\n <TransitionGroup\n key={key}\n className={cn(\"smwb-snackbars\", `smwb-${key}`)}\n data-testid={`snackbars-${key}`}\n appear\n >\n {snacks.map((snack) => (\n <SnackTransition\n key={snack.id}\n snack={snack}\n position={position}\n variant={variant}\n className={className}\n component={component}\n autoClose={autoClose}\n autoCloseTime={autoCloseTime}\n snackRest={rest}\n onSnackRemove={onSnackRemove}\n onClose={onClose}\n />\n ))}\n </TransitionGroup>\n );\n });\n\n return (\n <SnackbarContext.Provider\n value={{ addSnackbar, clearAllSnackbars, clearFirstSnackbar, clearLastSnackbar, clearByIdSnackbar }}\n >\n {children}\n {snackbarDomRoot && createPortal(snackbars, snackbarDomRoot)}\n </SnackbarContext.Provider>\n );\n}\n\nexport interface SnackbarProps extends React.HTMLAttributes<HTMLElement> {\n message?: React.ReactNode;\n variant?: Variants;\n position?: Position;\n component?: React.ElementType;\n isAutoClose?: boolean;\n autoCloseTime?: number;\n onClose?: () => void;\n /** Optional action node rendered after the message (e.g. an Undo button). */\n action?: React.ReactNode;\n}\n\nexport const Snackbar = React.forwardRef(function SnackbarInner(\n {\n className,\n message,\n variant = \"dark\",\n position = \"top-right\",\n onClick,\n component = \"div\",\n isAutoClose,\n autoCloseTime,\n onClose,\n action,\n ...rest\n }: SnackbarProps,\n ref\n) {\n const timerClose = useRef<ReturnType<typeof setTimeout>>();\n\n const setCloseTimer = useEventCallback(() => {\n if (!onClose || !isAutoClose || !autoCloseTime) {\n return;\n }\n\n if (timerClose.current) {\n clearTimeout(timerClose.current);\n }\n\n timerClose.current = setTimeout(() => {\n onClose();\n }, autoCloseTime);\n });\n\n useEffect(() => {\n setCloseTimer();\n\n return () => {\n if (timerClose.current) {\n clearTimeout(timerClose.current);\n }\n };\n }, [setCloseTimer]);\n\n const Element = component;\n\n return (\n <Element\n ref={ref}\n className={cn(\"smwb-snackbar\", className, `smwb-${variant}`, `smwb-${position}`)}\n onClick={onClick}\n role=\"alert\"\n aria-live={variant === \"danger\" ? \"assertive\" : \"polite\"}\n aria-atomic=\"true\"\n {...rest}\n >\n <div className=\"smwb-snackbar__body\">{message}</div>\n {action != null ? <div className=\"smwb-snackbar__action\">{action}</div> : null}\n </Element>\n );\n});\n\nexport function useSnackbar() {\n return useContext(SnackbarContext);\n}\n\nexport default SnackbarProvider;\n"],"names":["SnackTransition","snack","position","variant","className","component","autoClose","autoCloseTime","snackRest","onSnackRemove","onClose","nodeRef","useRef","jsx","CSSTransition","Snackbar","_a","_b","_c","cn","_d","_e","SnackbarContext","createContext","SnackbarProvider","props","closeOnClick","onClick","children","rest","snacks","setSnacks","useState","snackbarDomRoot","useSnackbarsPortal","addSnackbar","useCallback","options","key","id","v4","prevState","index","item","next","clearAllSnackbars","clearFirstSnackbar","clearLastSnackbar","clearByIdSnackbar","value","event","currentPositions","acc","currentPosition","snackbars","TransitionGroup","jsxs","createPortal","React","message","isAutoClose","action","ref","timerClose","setCloseTimer","useEventCallback","useEffect","useSnackbar","useContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"snackbar.js","sources":["../../../../src/components/feedBack/snackbar/snackbar.tsx"],"sourcesContent":["import React, { createContext, useCallback, useContext, useEffect, useRef, useState } from \"react\";\nimport { v4 } from \"uuid\";\nimport { createPortal } from \"react-dom\";\nimport cn from \"clsx\";\nimport { CSSTransition, TransitionGroup } from \"react-transition-group\";\nimport { useSnackbarsPortal } from \"./useSnackbarsPortal\";\nimport { useEventCallback } from \"../../../hooks/useEventCallback\";\n\nexport const variants = [\"dark\", \"light\", \"danger\", \"success\", \"warning\", \"info\"] as const;\nexport const positions = [\"top\", \"bottom\", \"top-left\", \"top-right\", \"bottom-right\", \"bottom-left\"] as const;\n\nexport type Variants = (typeof variants)[number];\nexport type Position = (typeof positions)[number];\n\nexport interface SnackbarsProviderProps extends React.HTMLAttributes<HTMLElement> {\n variant?: Variants;\n position?: Position;\n autoCloseTime?: number;\n closeOnClick?: boolean;\n autoClose?: boolean;\n component?: React.ElementType;\n}\n\ninterface Snack extends SnackbarsProviderProps {\n id: string;\n message: React.ReactNode;\n}\n\ninterface SnackTransitionProps {\n snack: Snack;\n position: Position;\n variant: Variants;\n className?: string;\n component: React.ElementType;\n autoClose: boolean;\n autoCloseTime: number;\n snackRest: Omit<\n SnackbarsProviderProps,\n \"variant\" | \"position\" | \"autoCloseTime\" | \"autoClose\" | \"closeOnClick\" | \"onClick\" | \"component\" | \"children\"\n >;\n onSnackRemove: (id: string) => (event: React.MouseEvent<HTMLElement>) => void;\n onClose: (id: string) => () => void;\n}\n\nfunction SnackTransition({\n snack,\n position,\n variant,\n className,\n component,\n autoClose,\n autoCloseTime,\n snackRest,\n onSnackRemove,\n onClose,\n}: SnackTransitionProps) {\n const nodeRef = useRef<HTMLDivElement>(null);\n\n return (\n <CSSTransition\n appear\n timeout={125}\n classNames={{\n appear: \"smwb-snackbar-enter\",\n appearActive: \"smwb-snackbar-enter-active\",\n appearDone: \"smwb-snackbar-enter-done\",\n enter: \"smwb-snackbar-enter\",\n enterActive: \"smwb-snackbar-enter-active\",\n enterDone: \"smwb-snackbar-enter-done\",\n exitActive: \"smwb-snackbar-exit-active\",\n }}\n unmountOnExit\n in\n nodeRef={nodeRef}\n >\n <Snackbar\n ref={nodeRef}\n component={snack.component ?? component}\n message={snack.message}\n position={snack.position ?? position}\n variant={snack.variant ?? variant}\n onClick={onSnackRemove(snack.id)}\n className={cn(className, snack.className)}\n isAutoClose={snack.autoClose ?? autoClose}\n autoCloseTime={snack.autoCloseTime ?? autoCloseTime}\n onClose={onClose(snack.id)}\n {...snackRest}\n />\n </CSSTransition>\n );\n}\n\nexport interface AddSnackbarOptions extends SnackbarsProviderProps {\n key?: string;\n message: React.ReactNode;\n}\n\nexport type AddSnackbar = (options: AddSnackbarOptions) => string;\n\nexport interface SnackbarOptions {\n addSnackbar: AddSnackbar;\n clearAllSnackbars: () => void;\n clearFirstSnackbar: () => void;\n clearLastSnackbar: () => void;\n clearByIdSnackbar: (id: string) => void;\n}\n\nconst SnackbarContext = createContext<SnackbarOptions>({\n addSnackbar: () => \"\",\n clearAllSnackbars: () => undefined,\n clearFirstSnackbar: () => undefined,\n clearLastSnackbar: () => undefined,\n clearByIdSnackbar: () => undefined,\n});\n\nexport function SnackbarProvider(props: SnackbarsProviderProps) {\n const {\n position = \"top-right\",\n variant = \"dark\",\n className,\n autoClose = true,\n autoCloseTime = 5000,\n closeOnClick = true,\n onClick,\n component = \"div\",\n children,\n ...rest\n } = props;\n\n const [snacks, setSnacks] = useState<Snack[]>([]);\n const { snackbarDomRoot } = useSnackbarsPortal();\n\n const addSnackbar: AddSnackbar = useCallback((options) => {\n const { key, ...rest } = options;\n\n const id = key ?? v4();\n const snack: Snack = { id, ...rest };\n\n setSnacks((prevState) => {\n const index = prevState.findIndex((item) => item.id === id);\n if (index === -1) {\n return [...prevState, snack];\n }\n const next = [...prevState];\n next[index] = snack;\n return next;\n });\n\n return id;\n }, []);\n\n const clearAllSnackbars = () => {\n setSnacks([]);\n };\n\n const clearFirstSnackbar = () => {\n setSnacks((prevState) => prevState.slice(1));\n };\n\n const clearLastSnackbar = () => {\n setSnacks((prevState) => prevState.slice(0, -1));\n };\n\n const clearByIdSnackbar = (id: string) => {\n setSnacks((prevState) => prevState.filter((value) => value.id !== id));\n };\n\n const onSnackRemove = (id: string) => (event: React.MouseEvent<HTMLElement>) => {\n onClick?.(event);\n\n if (closeOnClick) {\n clearByIdSnackbar(id);\n }\n };\n\n const onClose = (id: string) => () => {\n clearByIdSnackbar(id);\n };\n\n const currentPositions = snacks.reduce(\n (acc, snack) => {\n const currentPosition = snack.position ?? position;\n\n acc[currentPosition] = [...(acc[currentPosition] ?? []), snack];\n\n return acc;\n },\n {} as Record<Position, Snack[]>\n );\n\n const snackbars = (Object.keys(currentPositions) as unknown as typeof positions).map((key) => {\n const snacks = currentPositions[key];\n\n return (\n <TransitionGroup\n key={key}\n className={cn(\"smwb-snackbars\", `smwb-${key}`)}\n data-testid={`snackbars-${key}`}\n appear\n >\n {snacks.map((snack) => (\n <SnackTransition\n key={snack.id}\n snack={snack}\n position={position}\n variant={variant}\n className={className}\n component={component}\n autoClose={autoClose}\n autoCloseTime={autoCloseTime}\n snackRest={rest}\n onSnackRemove={onSnackRemove}\n onClose={onClose}\n />\n ))}\n </TransitionGroup>\n );\n });\n\n return (\n <SnackbarContext.Provider\n value={{ addSnackbar, clearAllSnackbars, clearFirstSnackbar, clearLastSnackbar, clearByIdSnackbar }}\n >\n {children}\n {snackbarDomRoot && createPortal(snackbars, snackbarDomRoot)}\n </SnackbarContext.Provider>\n );\n}\n\nexport interface SnackbarProps extends React.HTMLAttributes<HTMLElement> {\n message?: React.ReactNode;\n variant?: Variants;\n position?: Position;\n component?: React.ElementType;\n isAutoClose?: boolean;\n autoCloseTime?: number;\n onClose?: () => void;\n /** Optional action node rendered after the message (e.g. an Undo button). */\n action?: React.ReactNode;\n}\n\nexport const Snackbar = React.forwardRef(function SnackbarInner(\n {\n className,\n message,\n variant = \"dark\",\n position = \"top-right\",\n onClick,\n component = \"div\",\n isAutoClose,\n autoCloseTime,\n onClose,\n action,\n ...rest\n }: SnackbarProps,\n ref\n) {\n const timerClose = useRef<ReturnType<typeof setTimeout>>();\n\n const setCloseTimer = useEventCallback(() => {\n if (!onClose || !isAutoClose || !autoCloseTime) {\n return;\n }\n\n if (timerClose.current) {\n clearTimeout(timerClose.current);\n }\n\n timerClose.current = setTimeout(() => {\n onClose();\n }, autoCloseTime);\n });\n\n useEffect(() => {\n setCloseTimer();\n\n return () => {\n if (timerClose.current) {\n clearTimeout(timerClose.current);\n }\n };\n }, [setCloseTimer]);\n\n const Element = component;\n\n return (\n <Element\n ref={ref}\n className={cn(\"smwb-snackbar\", className, `smwb-${variant}`, `smwb-${position}`)}\n onClick={onClick}\n {...rest}\n // Defaults: the caller's own role, aria-live and aria-atomic win, and an\n // explicit undefined keeps these.\n role={rest.role ?? \"alert\"}\n aria-live={rest[\"aria-live\"] ?? (variant === \"danger\" ? \"assertive\" : \"polite\")}\n aria-atomic={rest[\"aria-atomic\"] ?? \"true\"}\n >\n <div className=\"smwb-snackbar__body\">{message}</div>\n {action != null ? <div className=\"smwb-snackbar__action\">{action}</div> : null}\n </Element>\n );\n});\n\nexport function useSnackbar() {\n return useContext(SnackbarContext);\n}\n\nexport default SnackbarProvider;\n"],"names":["SnackTransition","snack","position","variant","className","component","autoClose","autoCloseTime","snackRest","onSnackRemove","onClose","nodeRef","useRef","jsx","CSSTransition","Snackbar","_a","_b","_c","cn","_d","_e","SnackbarContext","createContext","SnackbarProvider","props","closeOnClick","onClick","children","rest","snacks","setSnacks","useState","snackbarDomRoot","useSnackbarsPortal","addSnackbar","useCallback","options","key","id","v4","prevState","index","item","next","clearAllSnackbars","clearFirstSnackbar","clearLastSnackbar","clearByIdSnackbar","value","event","currentPositions","acc","currentPosition","snackbars","TransitionGroup","jsxs","createPortal","React","message","isAutoClose","action","ref","timerClose","setCloseTimer","useEventCallback","useEffect","useSnackbar","useContext"],"mappings":"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"}
|
|
@@ -7,13 +7,21 @@ export interface TooltipProps {
|
|
|
7
7
|
offsetX?: number;
|
|
8
8
|
offsetY?: number;
|
|
9
9
|
};
|
|
10
|
+
/** What the tip says: text or markup. */
|
|
10
11
|
message: React.ReactNode;
|
|
11
12
|
placement?: Placement;
|
|
12
13
|
/** Controls tooltip visibility when trigger is manual. */
|
|
13
14
|
open?: boolean;
|
|
14
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* What shows the tooltip. `hover` (default): the pointer over the target or keyboard focus
|
|
17
|
+
* in it, until both have left. Keyboard focus is focus with a focus ring (`:focus-visible`),
|
|
18
|
+
* not the focus a mouse press gives a button. `click`: a click on the target shows or hides
|
|
19
|
+
* it. `manual`: `open` alone. Escape hides a `hover` or `click` tooltip.
|
|
20
|
+
*/
|
|
15
21
|
trigger?: TooltipTrigger;
|
|
22
|
+
/** Milliseconds from the pointer entering the target, or keyboard focus moving into it, until a hover tooltip shows. */
|
|
16
23
|
openDelay?: number;
|
|
24
|
+
/** Milliseconds from the pointer and keyboard focus both leaving the target until a hover tooltip hides. */
|
|
17
25
|
closeDelay?: number;
|
|
18
26
|
}
|
|
19
27
|
export declare const Tooltip: React.ForwardRefExoticComponent<TooltipProps & {
|
|
@@ -1,72 +1,92 @@
|
|
|
1
|
-
import { jsxs as
|
|
1
|
+
import { jsxs as N, jsx as R } from "react/jsx-runtime";
|
|
2
2
|
import '../../../assets/styles/less/components/tooltip/tooltip.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
|
|
3
3
|
/* empty css */
|
|
4
|
-
import { forwardRef as
|
|
5
|
-
import
|
|
6
|
-
import { useFloating as
|
|
7
|
-
import { resolvePlacement as
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
import { forwardRef as j, useState as w, useRef as m, useCallback as k, useEffect as A } from "react";
|
|
5
|
+
import B from "clsx";
|
|
6
|
+
import { useFloating as I, autoUpdate as L, offset as S, flip as V, shift as X } from "@floating-ui/react";
|
|
7
|
+
import { resolvePlacement as Y } from "../../../utils/floating.js";
|
|
8
|
+
import { useDismissOnEscape as F } from "../../../hooks/useDismissOnEscape.js";
|
|
9
|
+
function H({ reference: u, placement: p, offset: t, className: d, children: h }) {
|
|
10
|
+
var o, s;
|
|
11
|
+
const c = Y(p), { refs: v, floatingStyles: e } = I({
|
|
12
|
+
elements: { reference: u },
|
|
13
|
+
placement: c.placement,
|
|
14
|
+
whileElementsMounted: L,
|
|
14
15
|
middleware: [
|
|
15
|
-
|
|
16
|
+
S({ mainAxis: (o = t == null ? void 0 : t.offsetY) != null ? o : 0, crossAxis: (s = t == null ? void 0 : t.offsetX) != null ? s : 0 }),
|
|
16
17
|
// A fixed placement turns to the other side, and slides along it, when the
|
|
17
18
|
// viewport has no room for it.
|
|
18
|
-
...
|
|
19
|
+
...c.autoMiddleware ? [c.autoMiddleware] : [V(), X({ padding: 8 })]
|
|
19
20
|
]
|
|
20
21
|
});
|
|
21
|
-
return /* @__PURE__ */
|
|
22
|
+
return /* @__PURE__ */ R("div", { ref: v.setFloating, className: B("smwb-tooltip", d), style: e, children: h });
|
|
22
23
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
function U(u) {
|
|
25
|
+
try {
|
|
26
|
+
return u.matches(":focus-visible");
|
|
27
|
+
} catch {
|
|
28
|
+
return !0;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const re = j(function({
|
|
32
|
+
className: p,
|
|
33
|
+
children: t,
|
|
34
|
+
placement: d = "top",
|
|
35
|
+
offset: h = { offsetX: 0, offsetY: 0 },
|
|
36
|
+
message: c,
|
|
37
|
+
open: v,
|
|
38
|
+
trigger: e = "hover",
|
|
31
39
|
openDelay: o = 0,
|
|
32
|
-
closeDelay:
|
|
33
|
-
},
|
|
34
|
-
const [
|
|
35
|
-
|
|
40
|
+
closeDelay: s = 0
|
|
41
|
+
}, _) {
|
|
42
|
+
const [b, M] = w(null), [O, l] = w(!1), [P, x] = w(!1), a = m(null), f = m(null), T = m(!1), i = m(!1), n = k(() => {
|
|
43
|
+
a.current !== null && (clearTimeout(a.current), a.current = null), f.current !== null && (clearTimeout(f.current), f.current = null);
|
|
36
44
|
}, []);
|
|
37
|
-
|
|
38
|
-
const
|
|
39
|
-
if (
|
|
40
|
-
|
|
45
|
+
A(() => () => n(), [n]);
|
|
46
|
+
const C = k(() => {
|
|
47
|
+
if (n(), o <= 0) {
|
|
48
|
+
l(!0);
|
|
41
49
|
return;
|
|
42
50
|
}
|
|
43
|
-
|
|
44
|
-
}, [
|
|
45
|
-
if (
|
|
46
|
-
|
|
51
|
+
a.current = setTimeout(() => l(!0), o);
|
|
52
|
+
}, [n, o]), E = k(() => {
|
|
53
|
+
if (n(), s <= 0) {
|
|
54
|
+
l(!1);
|
|
47
55
|
return;
|
|
48
56
|
}
|
|
49
|
-
|
|
50
|
-
}, [
|
|
51
|
-
return
|
|
52
|
-
|
|
57
|
+
f.current = setTimeout(() => l(!1), s);
|
|
58
|
+
}, [n, s]);
|
|
59
|
+
return F(e === "hover" && O, () => {
|
|
60
|
+
n(), i.current = !1, l(!1);
|
|
61
|
+
}), F(e === "click" && P, () => x(!1)), /* @__PURE__ */ N("div", { className: "smwb-tooltip__wrapper", role: "tooltip", ref: _, children: [
|
|
62
|
+
/* @__PURE__ */ R(
|
|
53
63
|
"div",
|
|
54
64
|
{
|
|
55
65
|
className: "smwb-tooltip__ref",
|
|
56
|
-
ref:
|
|
57
|
-
onPointerEnter:
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
66
|
+
ref: M,
|
|
67
|
+
onPointerEnter: () => {
|
|
68
|
+
T.current = !0, e === "hover" && C();
|
|
69
|
+
},
|
|
70
|
+
onPointerLeave: () => {
|
|
71
|
+
T.current = !1, e === "hover" && !i.current && E();
|
|
72
|
+
},
|
|
73
|
+
onFocus: (r) => {
|
|
74
|
+
r.currentTarget.contains(r.target) && (i.current = U(r.target), e === "hover" && i.current && C());
|
|
75
|
+
},
|
|
76
|
+
onBlur: (r) => {
|
|
77
|
+
r.currentTarget.contains(r.relatedTarget) || (i.current = !1, e === "hover" && !T.current && E());
|
|
78
|
+
},
|
|
79
|
+
onClick: e === "click" ? () => {
|
|
80
|
+
x((r) => !r);
|
|
61
81
|
} : void 0,
|
|
62
|
-
children:
|
|
82
|
+
children: t
|
|
63
83
|
}
|
|
64
84
|
),
|
|
65
|
-
(
|
|
85
|
+
(e === "manual" ? v === !0 : e === "click" ? P : O) && b ? /* @__PURE__ */ R(H, { reference: b, placement: d, offset: h, className: p, children: c }) : null
|
|
66
86
|
] });
|
|
67
87
|
});
|
|
68
88
|
export {
|
|
69
|
-
|
|
70
|
-
|
|
89
|
+
re as Tooltip,
|
|
90
|
+
re as default
|
|
71
91
|
};
|
|
72
92
|
//# sourceMappingURL=tooltip.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.js","sources":["../../../../src/components/feedBack/tooltip/tooltip.tsx"],"sourcesContent":["import React, { forwardRef, PropsWithChildren, useCallback, useEffect, useRef, useState } from \"react\";\nimport cn from \"clsx\";\nimport { autoUpdate, flip, offset as offsetMiddleware, shift, useFloating } from \"@floating-ui/react\";\nimport { Placement, resolvePlacement } from \"../../../utils/floating\";\n\nexport type TooltipTrigger = \"hover\" | \"click\" | \"manual\";\n\nexport interface TooltipProps {\n className?: string;\n offset?: {\n offsetX?: number;\n offsetY?: number;\n };\n message: React.ReactNode;\n placement?: Placement;\n /** Controls tooltip visibility when trigger is manual. */\n open?: boolean;\n /** hover (default): show on pointer enter; click: toggle; manual: use open only. */\n trigger?: TooltipTrigger;\n openDelay?: number;\n closeDelay?: number;\n}\n\ninterface TooltipPopupProps {\n reference: HTMLElement;\n placement: Placement;\n offset: TooltipProps[\"offset\"];\n className?: string;\n children: React.ReactNode;\n}\n\n// Floating UI's hooks run layout effects, so they live here and mount only while\n// the tooltip shows: a closed tooltip runs none, on the server included. (Floating\n// UI picks useLayoutEffect when its module loads in a DOM, so a server render in\n// a DOM test environment warned for every closed tooltip.)\nfunction TooltipPopup({ reference, placement, offset, className, children }: TooltipPopupProps) {\n const resolved = resolvePlacement(placement);\n const { refs, floatingStyles } = useFloating({\n elements: { reference },\n placement: resolved.placement,\n whileElementsMounted: autoUpdate,\n middleware: [\n offsetMiddleware({ mainAxis: offset?.offsetY ?? 0, crossAxis: offset?.offsetX ?? 0 }),\n // A fixed placement turns to the other side, and slides along it, when the\n // viewport has no room for it.\n ...(resolved.autoMiddleware ? [resolved.autoMiddleware] : [flip(), shift({ padding: 8 })]),\n ],\n });\n return (\n <div ref={refs.setFloating} className={cn(\"smwb-tooltip\", className)} style={floatingStyles}>\n {children}\n </div>\n );\n}\n\nexport const Tooltip = forwardRef<HTMLDivElement, PropsWithChildren<TooltipProps>>(function Tooltip(\n {\n className,\n children,\n placement = \"top\",\n offset = { offsetX: 0, offsetY: 0 },\n message,\n open: openProp,\n trigger = \"hover\",\n openDelay = 0,\n closeDelay = 0,\n },\n ref\n) {\n const [reference, setReference] = useState<HTMLDivElement | null>(null);\n const [hoverOpen, setHoverOpen] = useState(false);\n const [clickOpen, setClickOpen] = useState(false);\n const openTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const closeTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clearTimers = useCallback(() => {\n if (openTimerRef.current !== null) {\n clearTimeout(openTimerRef.current);\n openTimerRef.current = null;\n }\n if (closeTimerRef.current !== null) {\n clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n }, []);\n\n useEffect(() => () => clearTimers(), [clearTimers]);\n\n const scheduleOpen = useCallback(() => {\n clearTimers();\n if (openDelay <= 0) {\n setHoverOpen(true);\n return;\n }\n openTimerRef.current = setTimeout(() => setHoverOpen(true), openDelay);\n }, [clearTimers, openDelay]);\n\n const scheduleClose = useCallback(() => {\n clearTimers();\n if (closeDelay <= 0) {\n setHoverOpen(false);\n return;\n }\n closeTimerRef.current = setTimeout(() => setHoverOpen(false), closeDelay);\n }, [clearTimers, closeDelay]);\n\n const isVisible = trigger === \"manual\" ? openProp === true : trigger === \"click\" ? clickOpen : hoverOpen;\n\n const onPointerEnter = trigger === \"hover\" ? scheduleOpen : undefined;\n const onPointerLeave = trigger === \"hover\" ? scheduleClose : undefined;\n const onClick =\n trigger === \"click\"\n ? () => {\n setClickOpen((prev) => !prev);\n }\n : undefined;\n\n return (\n <div className=\"smwb-tooltip__wrapper\" role=\"tooltip\" ref={ref}>\n <div\n className=\"smwb-tooltip__ref\"\n ref={setReference}\n onPointerEnter={onPointerEnter}\n onPointerLeave={onPointerLeave}\n onClick={onClick}\n >\n {children}\n </div>\n {isVisible && reference ? (\n <TooltipPopup reference={reference} placement={placement} offset={offset} className={className}>\n {message}\n </TooltipPopup>\n ) : null}\n </div>\n );\n});\n\nexport default Tooltip;\n"],"names":["TooltipPopup","reference","placement","offset","className","children","resolved","resolvePlacement","refs","floatingStyles","useFloating","autoUpdate","offsetMiddleware","flip","shift","jsx","cn","Tooltip","forwardRef","message","openProp","trigger","openDelay","closeDelay","ref","setReference","useState","hoverOpen","setHoverOpen","clickOpen","setClickOpen","openTimerRef","useRef","closeTimerRef","clearTimers","useCallback","useEffect","scheduleOpen","scheduleClose","prev"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tooltip.js","sources":["../../../../src/components/feedBack/tooltip/tooltip.tsx"],"sourcesContent":["import React, { forwardRef, PropsWithChildren, useCallback, useEffect, useRef, useState } from \"react\";\nimport cn from \"clsx\";\nimport { autoUpdate, flip, offset as offsetMiddleware, shift, useFloating } from \"@floating-ui/react\";\nimport { Placement, resolvePlacement } from \"../../../utils/floating\";\nimport { useDismissOnEscape } from \"../../../hooks/useDismissOnEscape\";\n\nexport type TooltipTrigger = \"hover\" | \"click\" | \"manual\";\n\nexport interface TooltipProps {\n className?: string;\n offset?: {\n offsetX?: number;\n offsetY?: number;\n };\n /** What the tip says: text or markup. */\n message: React.ReactNode;\n placement?: Placement;\n /** Controls tooltip visibility when trigger is manual. */\n open?: boolean;\n /**\n * What shows the tooltip. `hover` (default): the pointer over the target or keyboard focus\n * in it, until both have left. Keyboard focus is focus with a focus ring (`:focus-visible`),\n * not the focus a mouse press gives a button. `click`: a click on the target shows or hides\n * it. `manual`: `open` alone. Escape hides a `hover` or `click` tooltip.\n */\n trigger?: TooltipTrigger;\n /** Milliseconds from the pointer entering the target, or keyboard focus moving into it, until a hover tooltip shows. */\n openDelay?: number;\n /** Milliseconds from the pointer and keyboard focus both leaving the target until a hover tooltip hides. */\n closeDelay?: number;\n}\n\ninterface TooltipPopupProps {\n reference: HTMLElement;\n placement: Placement;\n offset: TooltipProps[\"offset\"];\n className?: string;\n children: React.ReactNode;\n}\n\n// Floating UI's hooks run layout effects, so they live here and mount only while\n// the tooltip shows: a closed tooltip runs none, on the server included. (Floating\n// UI picks useLayoutEffect when its module loads in a DOM, so a server render in\n// a DOM test environment warned for every closed tooltip.)\nfunction TooltipPopup({ reference, placement, offset, className, children }: TooltipPopupProps) {\n const resolved = resolvePlacement(placement);\n const { refs, floatingStyles } = useFloating({\n elements: { reference },\n placement: resolved.placement,\n whileElementsMounted: autoUpdate,\n middleware: [\n offsetMiddleware({ mainAxis: offset?.offsetY ?? 0, crossAxis: offset?.offsetX ?? 0 }),\n // A fixed placement turns to the other side, and slides along it, when the\n // viewport has no room for it.\n ...(resolved.autoMiddleware ? [resolved.autoMiddleware] : [flip(), shift({ padding: 8 })]),\n ],\n });\n return (\n <div ref={refs.setFloating} className={cn(\"smwb-tooltip\", className)} style={floatingStyles}>\n {children}\n </div>\n );\n}\n\n/**\n * Whether focus on `element` draws a focus ring (`:focus-visible`): focus from the keyboard,\n * not the focus a mouse press gives a button. An engine without the selector counts any focus.\n */\nfunction hasFocusRing(element: Element): boolean {\n try {\n return element.matches(\":focus-visible\");\n } catch {\n return true;\n }\n}\n\nexport const Tooltip = forwardRef<HTMLDivElement, PropsWithChildren<TooltipProps>>(function Tooltip(\n {\n className,\n children,\n placement = \"top\",\n offset = { offsetX: 0, offsetY: 0 },\n message,\n open: openProp,\n trigger = \"hover\",\n openDelay = 0,\n closeDelay = 0,\n },\n ref\n) {\n const [reference, setReference] = useState<HTMLDivElement | null>(null);\n const [hoverOpen, setHoverOpen] = useState(false);\n const [clickOpen, setClickOpen] = useState(false);\n const openTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const closeTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n // The pointer over the target and keyboard focus in it each keep a hover tooltip shown.\n const pointerInsideRef = useRef(false);\n const focusInsideRef = useRef(false);\n\n const clearTimers = useCallback(() => {\n if (openTimerRef.current !== null) {\n clearTimeout(openTimerRef.current);\n openTimerRef.current = null;\n }\n if (closeTimerRef.current !== null) {\n clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n }, []);\n\n useEffect(() => () => clearTimers(), [clearTimers]);\n\n const scheduleOpen = useCallback(() => {\n clearTimers();\n if (openDelay <= 0) {\n setHoverOpen(true);\n return;\n }\n openTimerRef.current = setTimeout(() => setHoverOpen(true), openDelay);\n }, [clearTimers, openDelay]);\n\n const scheduleClose = useCallback(() => {\n clearTimers();\n if (closeDelay <= 0) {\n setHoverOpen(false);\n return;\n }\n closeTimerRef.current = setTimeout(() => setHoverOpen(false), closeDelay);\n }, [clearTimers, closeDelay]);\n\n // Escape hides a tooltip shown on hover or focus wherever focus is (WCAG 1.4.13), and the\n // window, panel, Modal or Sheet around it stays open until the next press. Focus left in\n // the target no longer keeps it: the pointer alone shows and hides it until focus moves.\n useDismissOnEscape(trigger === \"hover\" && hoverOpen, () => {\n clearTimers();\n focusInsideRef.current = false;\n setHoverOpen(false);\n });\n // A click tooltip hides on Escape the same way.\n useDismissOnEscape(trigger === \"click\" && clickOpen, () => setClickOpen(false));\n\n const isVisible = trigger === \"manual\" ? openProp === true : trigger === \"click\" ? clickOpen : hoverOpen;\n\n const onPointerEnter = () => {\n pointerInsideRef.current = true;\n if (trigger === \"hover\") scheduleOpen();\n };\n const onPointerLeave = () => {\n pointerInsideRef.current = false;\n if (trigger === \"hover\" && !focusInsideRef.current) scheduleClose();\n };\n // Focus without a focus ring doesn't count: the focus a mouse press gives a button would\n // keep the tooltip shown after the pointer leaves.\n const onFocus = (event: React.FocusEvent<HTMLDivElement>) => {\n // Focus in a portal the target renders (a menu, a picker panel) reaches here through the\n // React tree, but it is not in the target.\n if (!event.currentTarget.contains(event.target)) return;\n focusInsideRef.current = hasFocusRing(event.target);\n if (trigger === \"hover\" && focusInsideRef.current) scheduleOpen();\n };\n const onBlur = (event: React.FocusEvent<HTMLDivElement>) => {\n // Focus moving to another control in the target keeps the tooltip.\n if (event.currentTarget.contains(event.relatedTarget)) return;\n focusInsideRef.current = false;\n if (trigger === \"hover\" && !pointerInsideRef.current) scheduleClose();\n };\n const onClick =\n trigger === \"click\"\n ? () => {\n setClickOpen((prev) => !prev);\n }\n : undefined;\n\n return (\n <div className=\"smwb-tooltip__wrapper\" role=\"tooltip\" ref={ref}>\n <div\n className=\"smwb-tooltip__ref\"\n ref={setReference}\n onPointerEnter={onPointerEnter}\n onPointerLeave={onPointerLeave}\n onFocus={onFocus}\n onBlur={onBlur}\n onClick={onClick}\n >\n {children}\n </div>\n {isVisible && reference ? (\n <TooltipPopup reference={reference} placement={placement} offset={offset} className={className}>\n {message}\n </TooltipPopup>\n ) : null}\n </div>\n );\n});\n\nexport default Tooltip;\n"],"names":["TooltipPopup","reference","placement","offset","className","children","resolved","resolvePlacement","refs","floatingStyles","useFloating","autoUpdate","offsetMiddleware","flip","shift","jsx","cn","hasFocusRing","element","Tooltip","forwardRef","message","openProp","trigger","openDelay","closeDelay","ref","setReference","useState","hoverOpen","setHoverOpen","clickOpen","setClickOpen","openTimerRef","useRef","closeTimerRef","pointerInsideRef","focusInsideRef","clearTimers","useCallback","useEffect","scheduleOpen","scheduleClose","useDismissOnEscape","event","prev"],"mappings":"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"}
|
|
@@ -30,9 +30,21 @@ export interface ButtonProps extends React.HTMLAttributes<HTMLButtonElement | HT
|
|
|
30
30
|
*/
|
|
31
31
|
color?: "primary" | "secondary" | "error" | "success" | "warning" | "info";
|
|
32
32
|
/**
|
|
33
|
-
* Ссылка. Если задана, компонент
|
|
33
|
+
* Ссылка. Если задана, компонент рендерится как <a>.
|
|
34
34
|
*/
|
|
35
35
|
href?: string;
|
|
36
|
+
/**
|
|
37
|
+
* Where a link (with `href`) opens. By default `"_blank"`: a new tab. `null` leaves the `target`
|
|
38
|
+
* attribute out, so the link opens in place, like an internal one; an empty string does the same, and
|
|
39
|
+
* any other string is used as is.
|
|
40
|
+
*/
|
|
41
|
+
target?: string | null;
|
|
42
|
+
/**
|
|
43
|
+
* The `rel` of a link (with `href`). By default `"noreferrer"` for a link that opens another tab or
|
|
44
|
+
* window, and none for one that opens in place. Your own value replaces the default, so add `noreferrer` yourself
|
|
45
|
+
* if you still want it; an empty string drops the attribute.
|
|
46
|
+
*/
|
|
47
|
+
rel?: string;
|
|
36
48
|
/**
|
|
37
49
|
* Отключённое состояние.
|
|
38
50
|
*/
|
|
@@ -53,6 +65,8 @@ export interface ButtonProps extends React.HTMLAttributes<HTMLButtonElement | HT
|
|
|
53
65
|
* Отключить риппл-эффект.
|
|
54
66
|
*/
|
|
55
67
|
disableRipple?: boolean;
|
|
68
|
+
/** Test id of the root; `button`, or `button-link` for a link, unless given. */
|
|
69
|
+
"data-testid"?: string;
|
|
56
70
|
}
|
|
57
71
|
export declare const Button: React.ForwardRefExoticComponent<ButtonProps & {
|
|
58
72
|
children?: React.ReactNode | undefined;
|