@lumx/react 3.0.1 → 3.0.2-alpha-react-utils.2
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/{esm/_internal/useDisableBodyScroll.js → _internal/0062d1bc.js} +1 -1
- package/_internal/0062d1bc.js.map +1 -0
- package/_internal/03e8323d.d.ts +118 -0
- package/_internal/0402f9bc.d.ts +183 -0
- package/{esm/_internal/List2.js → _internal/0b370acc.js} +7 -10
- package/_internal/0b370acc.js.map +1 -0
- package/_internal/0d154d73.d.ts +67 -0
- package/_internal/113e3b40.d.ts +31 -0
- package/{esm/_internal/InputLabel.js → _internal/12ab39e4.js} +4 -4
- package/_internal/12ab39e4.js.map +1 -0
- package/{esm/_internal/DatePickerField.js → _internal/13e759f3.js} +10 -14
- package/_internal/13e759f3.js.map +1 -0
- package/{esm/_internal/SideNavigationItem.js → _internal/158b46d5.js} +8 -8
- package/_internal/158b46d5.js.map +1 -0
- package/_internal/17b74e16.d.ts +31 -0
- package/_internal/1b1530a4.d.ts +43 -0
- package/_internal/20976405.js +87 -0
- package/_internal/20976405.js.map +1 -0
- package/_internal/20b0e9a5.d.ts +77 -0
- package/{esm/_internal/Chip2.js → _internal/26cd9c63.js} +4 -4
- package/_internal/26cd9c63.js.map +1 -0
- package/{esm/_internal/ListSubheader.js → _internal/27f21164.js} +3 -3
- package/_internal/27f21164.js.map +1 -0
- package/{esm/_internal/constants.js → _internal/288dfd0f.js} +1 -1
- package/_internal/288dfd0f.js.map +1 -0
- package/_internal/28aaf23a.d.ts +41 -0
- package/_internal/2c829c0b.d.ts +57 -0
- package/{esm/_internal/useFocusTrap.js → _internal/2cc0aec5.js} +3 -3
- package/_internal/2cc0aec5.js.map +1 -0
- package/{esm/_internal/types.js → _internal/2d0a5b28.js} +3 -3
- package/_internal/2d0a5b28.js.map +1 -0
- package/_internal/2d4b5a5e.d.ts +92 -0
- package/_internal/2d770113.d.ts +38 -0
- package/{esm/_internal/TableRow.js → _internal/2fe97f00.js} +5 -5
- package/_internal/2fe97f00.js.map +1 -0
- package/_internal/31c16fa0.d.ts +37 -0
- package/{esm/_internal/renderLink.js → _internal/329a01d3.js} +2 -2
- package/_internal/329a01d3.js.map +1 -0
- package/{esm/_internal/SkeletonTypography.js → _internal/3326e990.js} +4 -4
- package/_internal/3326e990.js.map +1 -0
- package/{esm/_internal/IconButton.js → _internal/377b2f44.js} +7 -11
- package/_internal/377b2f44.js.map +1 -0
- package/{esm/_internal/CommentBlock.js → _internal/3b8d2a6e.js} +6 -6
- package/_internal/3b8d2a6e.js.map +1 -0
- package/_internal/3bd3186e.d.ts +57 -0
- package/{esm/_internal/ImageBlock.js → _internal/48e40868.js} +5 -5
- package/_internal/48e40868.js.map +1 -0
- package/{esm/_internal/TextField.js → _internal/490ec1da.js} +10 -10
- package/_internal/490ec1da.js.map +1 -0
- package/_internal/49127d69.d.ts +52 -0
- package/{esm/_internal/Message2.js → _internal/4dcd87cb.js} +5 -5
- package/_internal/4dcd87cb.js.map +1 -0
- package/{esm/_internal/Dropdown2.js → _internal/4f44d848.js} +6 -6
- package/_internal/4f44d848.js.map +1 -0
- package/{esm/_internal/partitionMulti.js → _internal/4fc64a2e.js} +2 -2
- package/_internal/4fc64a2e.js.map +1 -0
- package/_internal/53a831be.js +108 -0
- package/_internal/53a831be.js.map +1 -0
- package/_internal/55271fa1.d.ts +34 -0
- package/_internal/55d30377.d.ts +22 -0
- package/{esm/_internal/Switch2.js → _internal/56385b04.js} +7 -7
- package/_internal/56385b04.js.map +1 -0
- package/_internal/599e250a.d.ts +88 -0
- package/_internal/5a054691.d.ts +33 -0
- package/{esm/_internal/Avatar2.js → _internal/5a127b58.js} +5 -5
- package/_internal/5a127b58.js.map +1 -0
- package/{esm/_internal/ExpansionPanel.js → _internal/5a1c0db4.js} +10 -10
- package/_internal/5a1c0db4.js.map +1 -0
- package/{esm/_internal/RadioGroup.js → _internal/5babcc39.js} +7 -7
- package/_internal/5babcc39.js.map +1 -0
- package/_internal/5c1bf4d4.d.ts +81 -0
- package/_internal/5d8ed4ee.js +113 -0
- package/_internal/5d8ed4ee.js.map +1 -0
- package/{esm/_internal/Thumbnail2.js → _internal/616f2912.js} +6 -6
- package/_internal/616f2912.js.map +1 -0
- package/_internal/61f915de.d.ts +49 -0
- package/{esm/_internal/ChipGroup.js → _internal/620081fa.js} +4 -4
- package/_internal/620081fa.js.map +1 -0
- package/{esm/_internal/_rollupPluginBabelHelpers.js → _internal/6340c129.js} +18 -2
- package/_internal/6340c129.js.map +1 -0
- package/_internal/6581c863.d.ts +34 -0
- package/_internal/66de4d45.d.ts +32 -0
- package/_internal/6735c5c8.d.ts +62 -0
- package/_internal/69dd1472.js +112 -0
- package/_internal/69dd1472.js.map +1 -0
- package/{esm/_internal/Slider2.js → _internal/6a0e1c77.js} +7 -7
- package/_internal/6a0e1c77.js.map +1 -0
- package/_internal/701c20b0.d.ts +24 -0
- package/{esm/_internal/Progress2.js → _internal/7391188a.js} +4 -4
- package/_internal/7391188a.js.map +1 -0
- package/{esm/_internal/ButtonRoot.js → _internal/74cb6c26.js} +6 -5
- package/_internal/74cb6c26.js.map +1 -0
- package/{esm/_internal/ProgressTrackerStepPanel.js → _internal/761031bf.js} +11 -9
- package/_internal/761031bf.js.map +1 -0
- package/{esm/_internal/DragHandle.js → _internal/76fed69d.js} +5 -5
- package/_internal/76fed69d.js.map +1 -0
- package/{esm/_internal/type.js → _internal/78ef8e34.js} +1 -1
- package/_internal/78ef8e34.js.map +1 -0
- package/_internal/7b906e16.d.ts +17 -0
- package/_internal/7be11ddc.d.ts +35 -0
- package/_internal/7d39705e.d.ts +20 -0
- package/{esm/_internal/useDelayedVisibility.js → _internal/7e03266f.js} +2 -2
- package/_internal/7e03266f.js.map +1 -0
- package/{esm/_internal/Button2.js → _internal/7e8d0ac5.js} +6 -6
- package/_internal/7e8d0ac5.js.map +1 -0
- package/{esm/_internal/Flag2.js → _internal/7ffa45f6.js} +5 -5
- package/_internal/7ffa45f6.js.map +1 -0
- package/{esm/_internal/AutocompleteMultiple.js → _internal/84c1ec44.js} +10 -10
- package/_internal/84c1ec44.js.map +1 -0
- package/{esm/_internal/PostBlock.js → _internal/8518279f.js} +6 -6
- package/_internal/8518279f.js.map +1 -0
- package/{esm/_internal/mergeRefs.js → _internal/853713cd.js} +1 -1
- package/_internal/853713cd.js.map +1 -0
- package/_internal/86566d75.d.ts +27 -0
- package/_internal/86d22dde.d.ts +57 -0
- package/_internal/8e755ded.d.ts +101 -0
- package/_internal/901471f5.d.ts +37 -0
- package/_internal/935ce959.d.ts +49 -0
- package/_internal/97089888.d.ts +16 -0
- package/_internal/97cc728c.d.ts +26 -0
- package/{esm/_internal/Popover2.js → _internal/9ab3c637.js} +7 -6
- package/_internal/9ab3c637.js.map +1 -0
- package/{esm/_internal/Toolbar2.js → _internal/9ca3f59c.js} +3 -3
- package/_internal/9ca3f59c.js.map +1 -0
- package/_internal/9e95ea38.d.ts +43 -0
- package/{esm/_internal/Uploader2.js → _internal/a0108f92.js} +5 -5
- package/_internal/a0108f92.js.map +1 -0
- package/_internal/a493a193.d.ts +65 -0
- package/{esm/_internal/Icon2.js → _internal/a521723d.js} +4 -4
- package/_internal/a521723d.js.map +1 -0
- package/_internal/a6fad025.d.ts +107 -0
- package/{esm/_internal/Lightbox2.js → _internal/a8fa525f.js} +13 -12
- package/_internal/a8fa525f.js.map +1 -0
- package/{esm/_internal/AlertDialog.js → _internal/aca2ecf5.js} +9 -9
- package/_internal/aca2ecf5.js.map +1 -0
- package/{esm/_internal/Divider2.js → _internal/aef2ef1c.js} +5 -5
- package/_internal/aef2ef1c.js.map +1 -0
- package/{esm/_internal/Mosaic2.js → _internal/af048b0c.js} +5 -5
- package/_internal/af048b0c.js.map +1 -0
- package/_internal/af2cd0cd.d.ts +17 -0
- package/{esm/_internal/Slides.js → _internal/afec6b62.js} +278 -87
- package/_internal/afec6b62.js.map +1 -0
- package/{esm/_internal/InputHelper.js → _internal/b0eb3a30.js} +4 -4
- package/_internal/b0eb3a30.js.map +1 -0
- package/{esm/_internal/Dialog2.js → _internal/b89517ea.js} +14 -13
- package/_internal/b89517ea.js.map +1 -0
- package/{esm/_internal/Checkbox2.js → _internal/bafa6fcc.js} +8 -8
- package/_internal/bafa6fcc.js.map +1 -0
- package/{esm/_internal/ButtonGroup.js → _internal/bbbeb49e.js} +3 -7
- package/_internal/bbbeb49e.js.map +1 -0
- package/_internal/c11f6162.d.ts +52 -0
- package/{esm/_internal/Notification2.js → _internal/c723dab4.js} +8 -8
- package/_internal/c723dab4.js.map +1 -0
- package/_internal/c87cc857.d.ts +42 -0
- package/{esm/_internal/SelectMultiple.js → _internal/c97f8d04.js} +13 -13
- package/_internal/c97f8d04.js.map +1 -0
- package/_internal/cbb373ea.d.ts +6 -0
- package/_internal/cbef23b6.d.ts +104 -0
- package/_internal/cdf77f06.d.ts +88 -0
- package/{esm/_internal/LinkPreview.js → _internal/d350f2ff.js} +6 -6
- package/_internal/d350f2ff.js.map +1 -0
- package/{esm/_internal/Badge2.js → _internal/d71a8cf7.js} +4 -4
- package/_internal/d71a8cf7.js.map +1 -0
- package/{esm/_internal/GridItem.js → _internal/d9337952.js} +4 -4
- package/_internal/d9337952.js.map +1 -0
- package/_internal/def14e1a.d.ts +24 -0
- package/_internal/e0cd29c7.d.ts +35 -0
- package/{esm/_internal/useRovingTabIndex.js → _internal/e354228f.js} +4 -81
- package/_internal/e354228f.js.map +1 -0
- package/_internal/e3922a05.d.ts +22 -0
- package/_internal/e3cb6177.d.ts +75 -0
- package/_internal/e810c841.d.ts +182 -0
- package/_internal/ea700b01.d.ts +43 -0
- package/_internal/eca6d4dc.d.ts +269 -0
- package/{esm/_internal/Link2.js → _internal/eed07003.js} +6 -6
- package/_internal/eed07003.js.map +1 -0
- package/_internal/f1c9b334.d.ts +22 -0
- package/{esm/_internal/TabPanel.js → _internal/f3c3a674.js} +9 -7
- package/_internal/f3c3a674.js.map +1 -0
- package/{esm/_internal/UserBlock.js → _internal/f571cdcd.js} +6 -6
- package/_internal/f571cdcd.js.map +1 -0
- package/{esm/_internal/Tooltip2.js → _internal/f5bdff7e.js} +8 -8
- package/_internal/f5bdff7e.js.map +1 -0
- package/_internal/f851fc00.d.ts +34 -0
- package/_internal/f859b007.d.ts +49 -0
- package/_internal/fb384b79.d.ts +38 -0
- package/_internal/fc4c034b.js +63 -0
- package/_internal/fc4c034b.js.map +1 -0
- package/{esm/index2.js → _internal/fc608bd9.js} +1 -1
- package/_internal/fc608bd9.js.map +1 -0
- package/_internal/fd1f4d68.d.ts +36 -0
- package/{esm/_internal/getRootClassName.js → _internal/fd867c9d.js} +33 -33
- package/_internal/fd867c9d.js.map +1 -0
- package/{esm/_internal/FlexBox.js → _internal/ff8081e5.js} +9 -7
- package/_internal/ff8081e5.js.map +1 -0
- package/{esm/_internal/GenericBlock.js → _internal/ffd1bfe3.js} +7 -9
- package/_internal/ffd1bfe3.js.map +1 -0
- package/components/alert-dialog.d.ts +6 -0
- package/components/alert-dialog.js +2 -0
- package/{esm/_internal → components}/alert-dialog.js.map +1 -1
- package/components/autocomplete.d.ts +8 -0
- package/components/autocomplete.js +2 -0
- package/{esm/_internal → components}/autocomplete.js.map +1 -1
- package/components/avatar.d.ts +4 -0
- package/components/avatar.js +2 -0
- package/{esm/_internal → components}/avatar.js.map +1 -1
- package/components/badge.d.ts +3 -0
- package/components/badge.js +2 -0
- package/{esm/_internal → components}/badge.js.map +1 -1
- package/components/button.d.ts +8 -0
- package/components/button.js +4 -0
- package/{esm/_internal → components}/button.js.map +1 -1
- package/components/checkbox.d.ts +3 -0
- package/components/checkbox.js +2 -0
- package/{esm/_internal → components}/checkbox.js.map +1 -1
- package/components/chip.d.ts +3 -0
- package/components/chip.js +3 -0
- package/{esm/_internal → components}/chip.js.map +1 -1
- package/components/comment-block.d.ts +5 -0
- package/components/comment-block.js +2 -0
- package/{esm/_internal → components}/comment-block.js.map +1 -1
- package/components/date-picker.d.ts +7 -0
- package/components/date-picker.js +2 -0
- package/{esm/_internal → components}/date-picker.js.map +1 -1
- package/components/dialog.d.ts +3 -0
- package/components/dialog.js +2 -0
- package/{esm/_internal → components}/dialog.js.map +1 -1
- package/components/divider.d.ts +3 -0
- package/components/divider.js +2 -0
- package/{esm/_internal → components}/divider.js.map +1 -1
- package/components/drag-handle.d.ts +3 -0
- package/components/drag-handle.js +2 -0
- package/{esm/_internal → components}/drag-handle.js.map +1 -1
- package/components/dropdown.d.ts +4 -0
- package/components/dropdown.js +2 -0
- package/{esm/_internal → components}/dropdown.js.map +1 -1
- package/components/expansion-panel.d.ts +7 -0
- package/components/expansion-panel.js +2 -0
- package/components/expansion-panel.js.map +1 -0
- package/components/flag.d.ts +3 -0
- package/components/flag.js +2 -0
- package/{esm/_internal → components}/flag.js.map +1 -1
- package/components/flex-box.d.ts +3 -0
- package/components/flex-box.js +2 -0
- package/{esm/_internal → components}/flex-box.js.map +1 -1
- package/components/generic-block.d.ts +4 -0
- package/components/generic-block.js +2 -0
- package/{esm/_internal → components}/generic-block.js.map +1 -1
- package/components/grid.d.ts +3 -0
- package/components/grid.js +2 -0
- package/{esm/_internal → components}/grid.js.map +1 -1
- package/components/heading.d.ts +4 -0
- package/components/heading.js +2 -0
- package/components/heading.js.map +1 -0
- package/components/icon.d.ts +3 -0
- package/components/icon.js +2 -0
- package/{esm/_internal → components}/icon.js.map +1 -1
- package/components/image-block.d.ts +4 -0
- package/components/image-block.js +2 -0
- package/{esm/_internal → components}/image-block.js.map +1 -1
- package/components/input-helper.d.ts +3 -0
- package/components/input-helper.js +2 -0
- package/{esm/_internal → components}/input-helper.js.map +1 -1
- package/components/input-label.d.ts +3 -0
- package/components/input-label.js +2 -0
- package/{esm/_internal → components}/input-label.js.map +1 -1
- package/components/lightbox.d.ts +7 -0
- package/components/lightbox.js +2 -0
- package/{esm/_internal → components}/lightbox.js.map +1 -1
- package/components/link-preview.d.ts +5 -0
- package/components/link-preview.js +2 -0
- package/{esm/_internal → components}/link-preview.js.map +1 -1
- package/components/link.d.ts +3 -0
- package/components/link.js +2 -0
- package/{esm/_internal → components}/link.js.map +1 -1
- package/components/list.d.ts +3 -0
- package/components/list.js +3 -0
- package/{esm/_internal → components}/list.js.map +1 -1
- package/components/message.d.ts +3 -0
- package/components/message.js +2 -0
- package/{esm/_internal → components}/message.js.map +1 -1
- package/components/mosaic.d.ts +4 -0
- package/components/mosaic.js +2 -0
- package/{esm/_internal → components}/mosaic.js.map +1 -1
- package/components/notification.d.ts +3 -0
- package/components/notification.js +2 -0
- package/{esm/_internal → components}/notification.js.map +1 -1
- package/components/popover.d.ts +3 -0
- package/components/popover.js +2 -0
- package/{esm/_internal → components}/popover.js.map +1 -1
- package/components/post-block.d.ts +4 -0
- package/components/post-block.js +2 -0
- package/{esm/_internal → components}/post-block.js.map +1 -1
- package/components/progress-tracker.d.ts +3 -0
- package/components/progress-tracker.js +2 -0
- package/{esm/_internal → components}/progress-tracker.js.map +1 -1
- package/components/progress.d.ts +3 -0
- package/components/progress.js +2 -0
- package/{esm/_internal → components}/progress.js.map +1 -1
- package/components/radio-button.d.ts +3 -0
- package/components/radio-button.js +2 -0
- package/{esm/_internal → components}/radio-button.js.map +1 -1
- package/components/select.d.ts +7 -0
- package/components/select.js +2 -0
- package/{esm/_internal → components}/select.js.map +1 -1
- package/components/side-navigation.d.ts +7 -0
- package/components/side-navigation.js +2 -0
- package/{esm/_internal → components}/side-navigation.js.map +1 -1
- package/components/skeleton.d.ts +3 -0
- package/components/skeleton.js +2 -0
- package/{esm/_internal → components}/skeleton.js.map +1 -1
- package/components/slider.d.ts +3 -0
- package/components/slider.js +2 -0
- package/{esm/_internal → components}/slider.js.map +1 -1
- package/components/slideshow.d.ts +7 -0
- package/components/slideshow.js +2 -0
- package/{esm/_internal → components}/slideshow.js.map +1 -1
- package/components/switch.d.ts +3 -0
- package/components/switch.js +2 -0
- package/{esm/_internal → components}/switch.js.map +1 -1
- package/components/table.d.ts +3 -0
- package/components/table.js +2 -0
- package/{esm/_internal → components}/table.js.map +1 -1
- package/components/tabs.d.ts +4 -0
- package/components/tabs.js +2 -0
- package/{esm/_internal → components}/tabs.js.map +1 -1
- package/components/text-field.d.ts +7 -0
- package/components/text-field.js +2 -0
- package/{esm/_internal → components}/text-field.js.map +1 -1
- package/components/text.d.ts +3 -0
- package/components/text.js +2 -0
- package/components/text.js.map +1 -0
- package/components/thumbnail.d.ts +4 -0
- package/components/thumbnail.js +3 -0
- package/{esm/_internal → components}/thumbnail.js.map +1 -1
- package/components/toolbar.d.ts +3 -0
- package/components/toolbar.js +2 -0
- package/{esm/_internal → components}/toolbar.js.map +1 -1
- package/components/tooltip.d.ts +4 -0
- package/components/tooltip.js +2 -0
- package/{esm/_internal → components}/tooltip.js.map +1 -1
- package/components/uploader.d.ts +3 -0
- package/components/uploader.js +2 -0
- package/{esm/_internal → components}/uploader.js.map +1 -1
- package/components/user-block.d.ts +5 -0
- package/components/user-block.js +2 -0
- package/{esm/_internal → components}/user-block.js.map +1 -1
- package/components.d.ts +2 -0
- package/{esm/_internal/components.js → components.js} +2 -1
- package/components.js.map +1 -0
- package/index.d.ts +56 -0
- package/index.js +57 -0
- package/{esm/index.js.map → index.js.map} +1 -1
- package/package.json +7 -7
- package/src/components/alert-dialog/AlertDialog.tsx +2 -1
- package/src/components/autocomplete/Autocomplete.tsx +2 -2
- package/src/components/autocomplete/AutocompleteMultiple.tsx +2 -1
- package/src/components/avatar/Avatar.tsx +2 -1
- package/src/components/badge/Badge.test.tsx +1 -1
- package/src/components/badge/Badge.tsx +2 -1
- package/src/components/button/Button.test.tsx +1 -1
- package/src/components/button/Button.tsx +2 -1
- package/src/components/button/ButtonGroup.tsx +2 -1
- package/src/components/button/ButtonRoot.test.tsx +1 -1
- package/src/components/button/ButtonRoot.tsx +2 -1
- package/src/components/button/IconButton.tsx +2 -1
- package/src/components/checkbox/Checkbox.test.tsx +1 -1
- package/src/components/checkbox/Checkbox.tsx +2 -1
- package/src/components/chip/Chip.test.tsx +1 -1
- package/src/components/chip/Chip.tsx +3 -1
- package/src/components/chip/ChipGroup.tsx +2 -1
- package/src/components/comment-block/CommentBlock.tsx +2 -1
- package/src/components/date-picker/DatePicker.tsx +1 -1
- package/src/components/date-picker/DatePickerControlled.tsx +1 -1
- package/src/components/date-picker/DatePickerField.tsx +1 -1
- package/src/components/date-picker/constants.ts +1 -1
- package/src/components/date-picker/types.ts +1 -1
- package/src/components/dialog/Dialog.tsx +4 -8
- package/src/components/divider/Divider.test.tsx +1 -1
- package/src/components/divider/Divider.tsx +3 -2
- package/src/components/drag-handle/DragHandle.tsx +2 -1
- package/src/components/dropdown/Dropdown.tsx +2 -1
- package/src/components/expansion-panel/ExpansionPanel.test.tsx +1 -1
- package/src/components/expansion-panel/ExpansionPanel.tsx +3 -10
- package/src/components/flag/Flag.test.tsx +1 -1
- package/src/components/flag/Flag.tsx +2 -1
- package/src/components/flex-box/FlexBox.stories.tsx +68 -4
- package/src/components/flex-box/FlexBox.tsx +14 -7
- package/src/components/flex-box/__snapshots__/FlexBox.test.tsx.snap +51 -0
- package/src/components/generic-block/GenericBlock.stories.jsx +23 -1
- package/src/components/generic-block/GenericBlock.tsx +3 -1
- package/src/components/grid/Grid.tsx +2 -1
- package/src/components/grid/GridItem.tsx +2 -1
- package/src/components/heading/Heading.stories.tsx +108 -0
- package/src/components/heading/Heading.test.tsx +77 -0
- package/src/components/heading/Heading.tsx +63 -0
- package/src/components/heading/HeadingLevelProvider.tsx +30 -0
- package/src/components/heading/constants.ts +16 -0
- package/src/components/heading/context.tsx +13 -0
- package/src/components/heading/index.ts +3 -0
- package/src/components/heading/useHeadingLevel.tsx +8 -0
- package/src/components/icon/Icon.test.tsx +1 -1
- package/src/components/icon/Icon.tsx +2 -1
- package/src/components/image-block/ImageBlock.tsx +2 -1
- package/src/components/index.ts +2 -1
- package/src/components/input-helper/InputHelper.tsx +2 -1
- package/src/components/input-label/InputLabel.tsx +2 -1
- package/src/components/lightbox/Lightbox.tsx +2 -1
- package/src/components/link/Link.tsx +2 -1
- package/src/components/link-preview/LinkPreview.test.tsx +1 -1
- package/src/components/link-preview/LinkPreview.tsx +2 -1
- package/src/components/list/List.tsx +2 -1
- package/src/components/list/ListDivider.tsx +2 -1
- package/src/components/list/ListItem.tsx +3 -8
- package/src/components/list/ListSubheader.tsx +2 -1
- package/src/components/list/useInteractiveList.tsx +1 -1
- package/src/components/message/Message.test.tsx +1 -1
- package/src/components/message/Message.tsx +2 -1
- package/src/components/mosaic/Mosaic.tsx +2 -1
- package/src/components/notification/Notification.tsx +2 -1
- package/src/components/popover/Popover.tsx +2 -1
- package/src/components/post-block/PostBlock.tsx +2 -1
- package/src/components/progress/Progress.tsx +2 -1
- package/src/components/progress-tracker/ProgressTracker.tsx +2 -1
- package/src/components/progress-tracker/ProgressTrackerStep.test.tsx +1 -1
- package/src/components/progress-tracker/ProgressTrackerStep.tsx +2 -1
- package/src/components/progress-tracker/ProgressTrackerStepPanel.tsx +2 -1
- package/src/components/radio-button/RadioButton.test.tsx +1 -1
- package/src/components/radio-button/RadioButton.tsx +2 -1
- package/src/components/radio-button/RadioGroup.tsx +2 -1
- package/src/components/select/Select.test.tsx +1 -1
- package/src/components/select/Select.tsx +2 -1
- package/src/components/select/SelectMultiple.test.tsx +1 -1
- package/src/components/select/SelectMultiple.tsx +2 -1
- package/src/components/select/WithSelectContext.tsx +1 -1
- package/src/components/select/constants.ts +1 -1
- package/src/components/side-navigation/SideNavigation.tsx +2 -1
- package/src/components/side-navigation/SideNavigationItem.test.tsx +1 -1
- package/src/components/side-navigation/SideNavigationItem.tsx +3 -9
- package/src/components/skeleton/SkeletonCircle.tsx +2 -1
- package/src/components/skeleton/SkeletonRectangle.tsx +2 -1
- package/src/components/skeleton/SkeletonTypography.tsx +2 -1
- package/src/components/slider/Slider.tsx +2 -1
- package/src/components/slideshow/Slides.tsx +35 -4
- package/src/components/slideshow/Slideshow.stories.tsx +98 -2
- package/src/components/slideshow/Slideshow.tsx +16 -4
- package/src/components/slideshow/SlideshowControls.stories.tsx +1 -1
- package/src/components/slideshow/SlideshowControls.tsx +51 -12
- package/src/components/slideshow/SlideshowItem.tsx +2 -6
- package/src/components/slideshow/SlideshowItemGroup.tsx +64 -0
- package/src/components/slideshow/__snapshots__/Slideshow.test.tsx.snap +4 -1
- package/src/components/slideshow/useSlideFocusManagement.tsx +92 -0
- package/src/components/switch/Switch.test.tsx +1 -1
- package/src/components/switch/Switch.tsx +2 -1
- package/src/components/table/Table.tsx +2 -1
- package/src/components/table/TableBody.tsx +2 -1
- package/src/components/table/TableCell.tsx +3 -1
- package/src/components/table/TableHeader.tsx +2 -1
- package/src/components/table/TableRow.tsx +2 -1
- package/src/components/tabs/Tab.test.tsx +1 -1
- package/src/components/tabs/Tab.tsx +2 -1
- package/src/components/tabs/TabList.test.tsx +1 -1
- package/src/components/tabs/TabList.tsx +2 -1
- package/src/components/tabs/TabPanel.tsx +2 -1
- package/src/components/text/Text.stories.tsx +80 -0
- package/src/components/text/Text.test.tsx +62 -0
- package/src/components/text/Text.tsx +95 -0
- package/src/components/text/index.ts +1 -0
- package/src/components/text-field/TextField.test.tsx +1 -1
- package/src/components/text-field/TextField.tsx +2 -1
- package/src/components/thumbnail/Thumbnail.tsx +2 -1
- package/src/components/thumbnail/types.ts +1 -1
- package/src/components/toolbar/Toolbar.tsx +2 -1
- package/src/components/tooltip/Tooltip.tsx +2 -1
- package/src/components/tooltip/useTooltipOpen.tsx +1 -1
- package/src/components/uploader/Uploader.test.tsx +1 -1
- package/src/components/uploader/Uploader.tsx +2 -1
- package/src/components/user-block/UserBlock.tsx +2 -1
- package/src/hooks/useCallbackOnEscape.ts +2 -1
- package/src/hooks/useClickAway.tsx +1 -1
- package/src/hooks/useDisableBodyScroll.ts +1 -1
- package/src/hooks/useFocusTrap.ts +1 -1
- package/src/hooks/useInterval.tsx +1 -1
- package/src/hooks/useOnResize.ts +1 -1
- package/src/hooks/useRovingTabIndex.tsx +9 -0
- package/src/index.ts +6 -0
- package/src/testing/utils/commonTestsSuite.ts +1 -1
- package/src/utils/{getRootClassName.ts → className.ts} +2 -0
- package/src/utils/event.ts +1 -0
- package/src/utils/focus/constants.ts +5 -0
- package/src/utils/focus/getFirstAndLastFocusable.ts +4 -10
- package/src/utils/focus/getFocusableElements.test.ts +151 -0
- package/src/utils/focus/getFocusableElements.ts +7 -0
- package/src/utils/index.ts +5 -0
- package/src/utils/utils.test.ts +1 -1
- package/types.d.ts +96 -11
- package/utils/index.d.ts +29 -0
- package/utils/index.js +2 -0
- package/utils/index.js.map +1 -0
- package/esm/_internal/AlertDialog.js.map +0 -1
- package/esm/_internal/AutocompleteMultiple.js.map +0 -1
- package/esm/_internal/Avatar2.js.map +0 -1
- package/esm/_internal/Badge2.js.map +0 -1
- package/esm/_internal/Button2.js.map +0 -1
- package/esm/_internal/ButtonGroup.js.map +0 -1
- package/esm/_internal/ButtonRoot.js.map +0 -1
- package/esm/_internal/Checkbox2.js.map +0 -1
- package/esm/_internal/Chip2.js.map +0 -1
- package/esm/_internal/ChipGroup.js.map +0 -1
- package/esm/_internal/ClickAwayProvider.js +0 -213
- package/esm/_internal/ClickAwayProvider.js.map +0 -1
- package/esm/_internal/CommentBlock.js.map +0 -1
- package/esm/_internal/DatePickerField.js.map +0 -1
- package/esm/_internal/Dialog2.js.map +0 -1
- package/esm/_internal/Divider2.js.map +0 -1
- package/esm/_internal/DragHandle.js.map +0 -1
- package/esm/_internal/Dropdown2.js.map +0 -1
- package/esm/_internal/ExpansionPanel.js.map +0 -1
- package/esm/_internal/Flag2.js.map +0 -1
- package/esm/_internal/FlexBox.js.map +0 -1
- package/esm/_internal/GenericBlock.js.map +0 -1
- package/esm/_internal/GridItem.js.map +0 -1
- package/esm/_internal/Icon2.js.map +0 -1
- package/esm/_internal/IconButton.js.map +0 -1
- package/esm/_internal/ImageBlock.js.map +0 -1
- package/esm/_internal/InputHelper.js.map +0 -1
- package/esm/_internal/InputLabel.js.map +0 -1
- package/esm/_internal/Lightbox2.js.map +0 -1
- package/esm/_internal/Link2.js.map +0 -1
- package/esm/_internal/LinkPreview.js.map +0 -1
- package/esm/_internal/List2.js.map +0 -1
- package/esm/_internal/ListSubheader.js.map +0 -1
- package/esm/_internal/Message2.js.map +0 -1
- package/esm/_internal/Mosaic2.js.map +0 -1
- package/esm/_internal/Notification2.js.map +0 -1
- package/esm/_internal/Popover2.js.map +0 -1
- package/esm/_internal/PostBlock.js.map +0 -1
- package/esm/_internal/Progress2.js.map +0 -1
- package/esm/_internal/ProgressTrackerStepPanel.js.map +0 -1
- package/esm/_internal/RadioGroup.js.map +0 -1
- package/esm/_internal/SelectMultiple.js.map +0 -1
- package/esm/_internal/SideNavigationItem.js.map +0 -1
- package/esm/_internal/SkeletonTypography.js.map +0 -1
- package/esm/_internal/Slider2.js.map +0 -1
- package/esm/_internal/Slides.js.map +0 -1
- package/esm/_internal/Switch2.js.map +0 -1
- package/esm/_internal/TabPanel.js.map +0 -1
- package/esm/_internal/TableRow.js.map +0 -1
- package/esm/_internal/TextField.js.map +0 -1
- package/esm/_internal/Thumbnail2.js.map +0 -1
- package/esm/_internal/Toolbar2.js.map +0 -1
- package/esm/_internal/Tooltip2.js.map +0 -1
- package/esm/_internal/Uploader2.js.map +0 -1
- package/esm/_internal/UserBlock.js.map +0 -1
- package/esm/_internal/_rollupPluginBabelHelpers.js.map +0 -1
- package/esm/_internal/alert-dialog.js +0 -34
- package/esm/_internal/autocomplete.js +0 -32
- package/esm/_internal/avatar.js +0 -13
- package/esm/_internal/badge.js +0 -10
- package/esm/_internal/button.js +0 -25
- package/esm/_internal/checkbox.js +0 -14
- package/esm/_internal/chip.js +0 -12
- package/esm/_internal/comment-block.js +0 -24
- package/esm/_internal/components.js.map +0 -1
- package/esm/_internal/constants.js.map +0 -1
- package/esm/_internal/date-picker.js +0 -32
- package/esm/_internal/dialog.js +0 -27
- package/esm/_internal/divider.js +0 -10
- package/esm/_internal/drag-handle.js +0 -11
- package/esm/_internal/dropdown.js +0 -21
- package/esm/_internal/expansion-panel.js +0 -32
- package/esm/_internal/expansion-panel.js.map +0 -1
- package/esm/_internal/flag.js +0 -11
- package/esm/_internal/flex-box.js +0 -11
- package/esm/_internal/generic-block.js +0 -20
- package/esm/_internal/getRootClassName.js.map +0 -1
- package/esm/_internal/grid.js +0 -10
- package/esm/_internal/icon.js +0 -10
- package/esm/_internal/image-block.js +0 -14
- package/esm/_internal/input-helper.js +0 -10
- package/esm/_internal/input-label.js +0 -10
- package/esm/_internal/lightbox.js +0 -27
- package/esm/_internal/link-preview.js +0 -15
- package/esm/_internal/link.js +0 -12
- package/esm/_internal/list.js +0 -15
- package/esm/_internal/mergeRefs.js.map +0 -1
- package/esm/_internal/message.js +0 -11
- package/esm/_internal/mosaic.js +0 -14
- package/esm/_internal/notification.js +0 -18
- package/esm/_internal/partitionMulti.js.map +0 -1
- package/esm/_internal/popover.js +0 -15
- package/esm/_internal/post-block.js +0 -15
- package/esm/_internal/progress-tracker.js +0 -16
- package/esm/_internal/progress.js +0 -10
- package/esm/_internal/radio-button.js +0 -13
- package/esm/_internal/renderLink.js.map +0 -1
- package/esm/_internal/select.js +0 -31
- package/esm/_internal/side-navigation.js +0 -25
- package/esm/_internal/skeleton.js +0 -10
- package/esm/_internal/slider.js +0 -13
- package/esm/_internal/slideshow.js +0 -27
- package/esm/_internal/switch.js +0 -13
- package/esm/_internal/table.js +0 -12
- package/esm/_internal/tabs.js +0 -14
- package/esm/_internal/text-field.js +0 -26
- package/esm/_internal/thumbnail.js +0 -13
- package/esm/_internal/toolbar.js +0 -9
- package/esm/_internal/tooltip.js +0 -18
- package/esm/_internal/type.js.map +0 -1
- package/esm/_internal/types.js.map +0 -1
- package/esm/_internal/uploader.js +0 -11
- package/esm/_internal/useDelayedVisibility.js.map +0 -1
- package/esm/_internal/useDisableBodyScroll.js.map +0 -1
- package/esm/_internal/useFocusTrap.js.map +0 -1
- package/esm/_internal/useRovingTabIndex.js.map +0 -1
- package/esm/_internal/user-block.js +0 -17
- package/esm/index.js +0 -91
- package/esm/index2.js.map +0 -1
- package/src/utils/index.tsx +0 -7
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { b as _objectWithoutProperties, d as _slicedToArray, c as _extends } from './
|
|
2
|
-
import { Emphasis, Theme, ColorPalette } from '
|
|
1
|
+
import { b as _objectWithoutProperties, d as _slicedToArray, c as _extends } from './6340c129.js';
|
|
2
|
+
import { Emphasis, Theme, ColorPalette } from '../components.js';
|
|
3
3
|
import React, { forwardRef, Children, useRef, useState, useEffect } from 'react';
|
|
4
|
-
import { g as getRootClassName, c as classnames, h as handleBasicClasses } from './
|
|
5
|
-
import { i as mdiChevronUp, j as mdiChevronDown } from './
|
|
4
|
+
import { g as getRootClassName, c as classnames, h as handleBasicClasses } from './fd867c9d.js';
|
|
5
|
+
import { i as mdiChevronUp, j as mdiChevronDown } from './a521723d.js';
|
|
6
6
|
import isEmpty from 'lodash/isEmpty';
|
|
7
|
-
import {
|
|
8
|
-
import get from 'lodash/get';
|
|
9
|
-
import { i as isComponent } from './type.js';
|
|
10
|
-
import { I as IconButton } from './IconButton.js';
|
|
7
|
+
import { I as IconButton } from './377b2f44.js';
|
|
11
8
|
import isFunction from 'lodash/isFunction';
|
|
12
|
-
import
|
|
9
|
+
import get from 'lodash/get';
|
|
10
|
+
import { i as isComponent } from './78ef8e34.js';
|
|
11
|
+
import { p as partitionMulti } from './4fc64a2e.js';
|
|
12
|
+
import { D as DragHandle } from './76fed69d.js';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Defines the props of the component.
|
|
@@ -153,4 +153,4 @@ ExpansionPanel.className = CLASSNAME;
|
|
|
153
153
|
ExpansionPanel.defaultProps = DEFAULT_PROPS;
|
|
154
154
|
|
|
155
155
|
export { ExpansionPanel as E };
|
|
156
|
-
//# sourceMappingURL=
|
|
156
|
+
//# sourceMappingURL=5a1c0db4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"5a1c0db4.js","sources":["../../src/components/expansion-panel/ExpansionPanel.tsx"],"sourcesContent":["import React, { Children, forwardRef, PropsWithChildren, ReactNode, useEffect, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { mdiChevronDown, mdiChevronUp } from '@lumx/icons';\n\nimport get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport isFunction from 'lodash/isFunction';\n\nimport { ColorPalette, DragHandle, Emphasis, IconButton, IconButtonProps, Theme } from '@lumx/react';\nimport { Callback, Comp, GenericProps, HasTheme, isComponent } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';\nimport { partitionMulti } from '@lumx/react/utils/partitionMulti';\n\n/**\n * Defines the props of the component.\n */\nexport interface ExpansionPanelProps extends GenericProps, HasTheme {\n /** Whether the expansion panel has a background. */\n hasBackground?: boolean;\n /** Whether the header has a divider. */\n hasHeaderDivider?: boolean;\n /** Whether the component is open or not. */\n isOpen?: boolean;\n /** Label text (overwritten if a `<header>` is provided in the children). */\n label?: string;\n /** On open callback. */\n onOpen?: Callback;\n /** On close callback. */\n onClose?: Callback;\n /** Props to pass to the toggle button (minus those already set by the ExpansionPanel props). */\n toggleButtonProps: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color'>;\n /** On toggle open or close callback. */\n onToggleOpen?(shouldOpen: boolean): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'ExpansionPanel';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<ExpansionPanelProps> = {\n theme: Theme.light,\n};\n\nconst isDragHandle = isComponent(DragHandle);\nconst isHeader = isComponent('header');\nconst isFooter = isComponent('footer');\n\n/**\n * ExpansionPanel component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const ExpansionPanel: Comp<ExpansionPanelProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n className,\n children: anyChildren,\n hasBackground,\n hasHeaderDivider,\n isOpen,\n label,\n onClose,\n onOpen,\n onToggleOpen,\n theme,\n toggleButtonProps,\n ...forwardedProps\n } = props;\n\n const children: ReactNode[] = Children.toArray(anyChildren);\n\n // Partition children by types.\n const [[dragHandle], [header], [footer], content] = partitionMulti(children, [isDragHandle, isHeader, isFooter]);\n\n // Either take the header in children or create one with the label.\n const headerProps: PropsWithChildren<any> = React.isValidElement(header) ? header.props : {};\n const headerContent = !isEmpty(headerProps.children) ? (\n headerProps.children\n ) : (\n <span className={`${CLASSNAME}__label`}>{label}</span>\n );\n\n const toggleOpen = () => {\n const shouldOpen = !isOpen;\n if (isFunction(onOpen) && shouldOpen) {\n onOpen();\n }\n if (isFunction(onClose) && !shouldOpen) {\n onClose();\n }\n if (isFunction(onToggleOpen)) {\n onToggleOpen(shouldOpen);\n }\n };\n\n const color = theme === Theme.dark ? ColorPalette.light : ColorPalette.dark;\n\n const rootClassName = classNames(\n className,\n handleBasicClasses({\n hasBackground,\n hasHeader: Boolean(!isEmpty(headerProps.children)),\n hasHeaderDivider,\n isClose: !isOpen,\n isDraggable: Boolean(dragHandle),\n isOpen,\n prefix: CLASSNAME,\n theme,\n }),\n );\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n const isContentVisible = (): boolean => get(wrapperRef.current, 'clientHeight', 0) > 0;\n\n // Switch max height on/off to activate the CSS transition (updates when children changes).\n const [maxHeight, setMaxHeight] = useState('0');\n useEffect(() => {\n const height = isOpen ? get(wrapperRef.current, 'offsetHeight', 0) : 0;\n setMaxHeight(`${height}px`);\n }, [children, isOpen]);\n\n return (\n <section ref={ref} {...forwardedProps} className={rootClassName}>\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */}\n <header className={`${CLASSNAME}__header`} onClick={toggleOpen}>\n {dragHandle && <div className={`${CLASSNAME}__header-drag`}>{dragHandle}</div>}\n\n <div {...headerProps} className={`${CLASSNAME}__header-content`}>\n {headerContent}\n </div>\n\n <div className={`${CLASSNAME}__header-toggle`}>\n <IconButton\n {...toggleButtonProps}\n color={color}\n emphasis={Emphasis.low}\n icon={isOpen ? mdiChevronUp : mdiChevronDown}\n />\n </div>\n </header>\n\n {(isOpen || isContentVisible()) && (\n <div className={`${CLASSNAME}__wrapper`} style={{ maxHeight }}>\n <div className={`${CLASSNAME}__container`} ref={wrapperRef}>\n <div className={`${CLASSNAME}__content`}>{content}</div>\n\n {footer && <div className={`${CLASSNAME}__footer`}>{footer}</div>}\n </div>\n </div>\n )}\n </section>\n );\n});\nExpansionPanel.displayName = COMPONENT_NAME;\nExpansionPanel.className = CLASSNAME;\nExpansionPanel.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","theme","Theme","light","isDragHandle","isComponent","DragHandle","isHeader","isFooter","ExpansionPanel","forwardRef","props","ref","className","anyChildren","children","hasBackground","hasHeaderDivider","isOpen","label","onClose","onOpen","onToggleOpen","toggleButtonProps","forwardedProps","Children","toArray","partitionMulti","dragHandle","header","footer","content","headerProps","React","isValidElement","headerContent","isEmpty","toggleOpen","shouldOpen","isFunction","color","dark","ColorPalette","rootClassName","classNames","handleBasicClasses","hasHeader","Boolean","isClose","isDraggable","prefix","wrapperRef","useRef","isContentVisible","get","current","useState","maxHeight","setMaxHeight","useEffect","height","Emphasis","low","mdiChevronUp","mdiChevronDown","displayName","defaultProps"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { b as _objectWithoutProperties, c as _extends } from './
|
|
2
|
-
import { Theme } from '
|
|
1
|
+
import { b as _objectWithoutProperties, c as _extends } from './6340c129.js';
|
|
2
|
+
import { Theme } from '../components.js';
|
|
3
3
|
import React, { forwardRef, useMemo } from 'react';
|
|
4
|
-
import { g as getRootClassName, c as classnames, h as handleBasicClasses } from './
|
|
5
|
-
import { u as uid } from '
|
|
6
|
-
import { I as InputHelper } from './
|
|
7
|
-
import { I as InputLabel } from './
|
|
4
|
+
import { g as getRootClassName, c as classnames, h as handleBasicClasses } from './fd867c9d.js';
|
|
5
|
+
import { u as uid } from './fc608bd9.js';
|
|
6
|
+
import { I as InputHelper } from './b0eb3a30.js';
|
|
7
|
+
import { I as InputLabel } from './12ab39e4.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Defines the props of the component.
|
|
@@ -144,4 +144,4 @@ RadioGroup.displayName = COMPONENT_NAME$1;
|
|
|
144
144
|
RadioGroup.className = CLASSNAME$1;
|
|
145
145
|
|
|
146
146
|
export { RadioButton as R, RadioGroup as a };
|
|
147
|
-
//# sourceMappingURL=
|
|
147
|
+
//# sourceMappingURL=5babcc39.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"5babcc39.js","sources":["../../src/components/radio-button/RadioButton.tsx","../../src/components/radio-button/RadioGroup.tsx"],"sourcesContent":["import React, { useMemo, forwardRef, ReactNode, SyntheticEvent } from 'react';\n\nimport classNames from 'classnames';\nimport { uid } from 'uid';\n\nimport { InputHelper, InputLabel, Theme } from '@lumx/react';\n\nimport { Comp, GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';\n\n/**\n * Defines the props of the component.\n */\nexport interface RadioButtonProps extends GenericProps, HasTheme {\n /** Helper text. */\n helper?: string;\n /** Native input id property. */\n id?: string;\n /** Native input ref. */\n inputRef?: React.Ref<HTMLInputElement>;\n /** Whether it is checked or not. */\n isChecked?: boolean;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Label content. */\n label?: ReactNode;\n /** Native input name property. */\n name?: string;\n /** Native input value property. */\n value?: string;\n /** On change callback. */\n onChange?(value?: string, name?: string, event?: SyntheticEvent): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'RadioButton';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<RadioButtonProps> = {\n theme: Theme.light,\n};\n\n/**\n * RadioButton component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const RadioButton: Comp<RadioButtonProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n checked,\n className,\n disabled,\n helper,\n id,\n inputRef,\n isChecked = checked,\n isDisabled = disabled,\n label,\n name,\n onChange,\n theme,\n value,\n ...forwardedProps\n } = props;\n const radioButtonId = useMemo(() => id || `${CLASSNAME.toLowerCase()}-${uid()}`, [id]);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(value, name, event);\n }\n };\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({\n isChecked,\n isDisabled,\n isUnchecked: !isChecked,\n prefix: CLASSNAME,\n theme,\n }),\n )}\n >\n <div className={`${CLASSNAME}__input-wrapper`}>\n <input\n ref={inputRef}\n className={`${CLASSNAME}__input-native`}\n disabled={isDisabled}\n id={radioButtonId}\n tabIndex={isDisabled ? -1 : 0}\n type=\"radio\"\n name={name}\n value={value}\n checked={isChecked}\n onChange={handleChange}\n />\n\n <div className={`${CLASSNAME}__input-placeholder`}>\n <div className={`${CLASSNAME}__input-background`} />\n <div className={`${CLASSNAME}__input-indicator`} />\n </div>\n </div>\n\n <div className={`${CLASSNAME}__content`}>\n {label && (\n <InputLabel htmlFor={radioButtonId} theme={theme} className={`${CLASSNAME}__label`}>\n {label}\n </InputLabel>\n )}\n {helper && (\n <InputHelper theme={theme} className={`${CLASSNAME}__helper`}>\n {helper}\n </InputHelper>\n )}\n </div>\n </div>\n );\n});\nRadioButton.displayName = COMPONENT_NAME;\nRadioButton.className = CLASSNAME;\nRadioButton.defaultProps = DEFAULT_PROPS;\n","import React, { forwardRef, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Comp, GenericProps } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';\n\n/**\n * Defines the props of the component.\n */\nexport interface RadioGroupProps extends GenericProps {\n /** RadioButton elements */\n children: ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'RadioGroup';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * RadioGroup component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const RadioGroup: Comp<RadioGroupProps, HTMLDivElement> = forwardRef((props, ref) => {\n const { children, className, ...forwardedProps } = props;\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n }),\n )}\n >\n {children}\n </div>\n );\n});\nRadioGroup.displayName = COMPONENT_NAME;\nRadioGroup.className = CLASSNAME;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","theme","Theme","light","RadioButton","forwardRef","props","ref","checked","className","disabled","helper","id","inputRef","isChecked","isDisabled","label","name","onChange","value","forwardedProps","radioButtonId","useMemo","toLowerCase","uid","handleChange","event","classNames","handleBasicClasses","isUnchecked","prefix","displayName","defaultProps","RadioGroup","children"],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { l as GenericProps, k as Comp } from './eca6d4dc.js';
|
|
3
|
+
import { a as PopoverProps, O as Offset, P as Placement } from './599e250a.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Defines the props of the component.
|
|
7
|
+
*/
|
|
8
|
+
interface DropdownProps extends GenericProps {
|
|
9
|
+
/**
|
|
10
|
+
* Reference to the element around which the dropdown is placed.
|
|
11
|
+
* @see {@link PopoverProps#anchorRef}
|
|
12
|
+
*/
|
|
13
|
+
anchorRef: PopoverProps['anchorRef'];
|
|
14
|
+
/** Dropdown content. */
|
|
15
|
+
children: React.ReactNode;
|
|
16
|
+
/**
|
|
17
|
+
* Whether a click anywhere out of the Dropdown would close it or not.
|
|
18
|
+
* @see {@link PopoverProps#closeOnClickAway}
|
|
19
|
+
*/
|
|
20
|
+
closeOnClickAway?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Whether to close the Dropdown when clicking in it or not.
|
|
23
|
+
*/
|
|
24
|
+
closeOnClick?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Whether an escape key press would close the Dropdown or not.
|
|
27
|
+
* @see {@link PopoverProps#closeOnEscape}
|
|
28
|
+
*/
|
|
29
|
+
closeOnEscape?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Whether the dropdown should fit to the anchor width (if dropdown is smaller) or not.
|
|
32
|
+
* @see {@link PopoverProps#fitToAnchorWidth}
|
|
33
|
+
*/
|
|
34
|
+
fitToAnchorWidth?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Whether the dropdown should shrink to fit within the viewport height or not.
|
|
37
|
+
* @see {@link PopoverProps#fitWithinViewportHeight}
|
|
38
|
+
*/
|
|
39
|
+
fitWithinViewportHeight?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Whether the dropdown should be displayed or not. Useful to control the Dropdown from outside the component.
|
|
42
|
+
* @see {@link PopoverProps#isOpen}
|
|
43
|
+
*/
|
|
44
|
+
isOpen: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Offset applied to the Dropdown position.
|
|
47
|
+
* @see {@link PopoverProps#offset}
|
|
48
|
+
*/
|
|
49
|
+
offset?: Offset;
|
|
50
|
+
/**
|
|
51
|
+
* Preferred Dropdown placement against the anchor element.
|
|
52
|
+
* @see {@link PopoverProps#placement}
|
|
53
|
+
*/
|
|
54
|
+
placement?: Placement;
|
|
55
|
+
/** Whether the focus should be set on the list when the dropdown is open or not. */
|
|
56
|
+
shouldFocusOnOpen?: boolean;
|
|
57
|
+
/** Whether the focus should go back on the anchor when dropdown closes and focus is within. */
|
|
58
|
+
focusAnchorOnClose?: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Z-axis position.
|
|
61
|
+
* @see {@link PopoverProps#zIndex}
|
|
62
|
+
*/
|
|
63
|
+
zIndex?: number;
|
|
64
|
+
/**
|
|
65
|
+
* On close callback.
|
|
66
|
+
* @see {@link PopoverProps#onClose}
|
|
67
|
+
*/
|
|
68
|
+
onClose?(): void;
|
|
69
|
+
/** On scroll end callback. */
|
|
70
|
+
onInfiniteScroll?(): void;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Dropdown component.
|
|
74
|
+
*
|
|
75
|
+
* @param props Component props.
|
|
76
|
+
* @param ref Component ref.
|
|
77
|
+
* @return React element.
|
|
78
|
+
*/
|
|
79
|
+
declare const Dropdown: Comp<DropdownProps, HTMLDivElement>;
|
|
80
|
+
|
|
81
|
+
export { DropdownProps as D, Dropdown as a };
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
import { f as onEscapePressed } from './fd867c9d.js';
|
|
3
|
+
import { D as DOCUMENT } from './288dfd0f.js';
|
|
4
|
+
import last from 'lodash/last';
|
|
5
|
+
import pull from 'lodash/pull';
|
|
6
|
+
|
|
7
|
+
/** CSS selector listing all tabbable elements. */
|
|
8
|
+
var TABBABLE_ELEMENTS_SELECTOR = "a[href], button, textarea, input:not([type=\"hidden\"]):not([hidden]), [tabindex]";
|
|
9
|
+
/** CSS selector matching element that are disabled (should not receive focus). */
|
|
10
|
+
|
|
11
|
+
var DISABLED_SELECTOR = "[hidden], [tabindex=\"-1\"], [disabled]:not([disabled=\"false\"]), [aria-disabled]:not([aria-disabled=\"false\"])";
|
|
12
|
+
|
|
13
|
+
var isNotDisabled = function isNotDisabled(element) {
|
|
14
|
+
return !element.matches(DISABLED_SELECTOR);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
function getFocusableElements(element) {
|
|
18
|
+
return Array.from(element.querySelectorAll(TABBABLE_ELEMENTS_SELECTOR)).filter(isNotDisabled);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Get first and last elements focusable in an element.
|
|
23
|
+
*
|
|
24
|
+
* @param parentElement The element in which to search focusable elements.
|
|
25
|
+
* @return first and last focusable elements
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
function getFirstAndLastFocusable(parentElement) {
|
|
29
|
+
var focusableElements = getFocusableElements(parentElement); // First non disabled element.
|
|
30
|
+
|
|
31
|
+
var first = focusableElements[0]; // Last non disabled element.
|
|
32
|
+
|
|
33
|
+
var last = focusableElements[focusableElements.length - 1];
|
|
34
|
+
|
|
35
|
+
if (last && first) {
|
|
36
|
+
return {
|
|
37
|
+
first: first,
|
|
38
|
+
last: last
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return {};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Keep track of listeners, only the last registered listener gets activated at any point (previously registered
|
|
47
|
+
* listener are disabled).
|
|
48
|
+
* When a listener gets unregistered, the previously registered listener gets enabled again.
|
|
49
|
+
*/
|
|
50
|
+
function makeListenerTowerContext() {
|
|
51
|
+
var LISTENERS = [];
|
|
52
|
+
return {
|
|
53
|
+
register: function register(listener) {
|
|
54
|
+
var _last;
|
|
55
|
+
|
|
56
|
+
// Disable previous listener.
|
|
57
|
+
(_last = last(LISTENERS)) === null || _last === void 0 ? void 0 : _last.disable(); // Keep track of current listener.
|
|
58
|
+
|
|
59
|
+
LISTENERS.push(listener); // Enable current listener.
|
|
60
|
+
|
|
61
|
+
listener.enable();
|
|
62
|
+
},
|
|
63
|
+
unregister: function unregister(listener) {
|
|
64
|
+
var _last2;
|
|
65
|
+
|
|
66
|
+
// Disable current listener.
|
|
67
|
+
listener.disable(); // Remove current listener.
|
|
68
|
+
|
|
69
|
+
pull(LISTENERS, listener); // Enable previous listener.
|
|
70
|
+
|
|
71
|
+
(_last2 = last(LISTENERS)) === null || _last2 === void 0 ? void 0 : _last2.enable();
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
var LISTENERS = makeListenerTowerContext();
|
|
77
|
+
/**
|
|
78
|
+
* Register a global listener on 'Escape' key pressed.
|
|
79
|
+
*
|
|
80
|
+
* If multiple listener are registered, only the last one is maintained. When a listener is unregistered, the previous
|
|
81
|
+
* one gets activated again.
|
|
82
|
+
*
|
|
83
|
+
* @param callback Callback
|
|
84
|
+
* @param closeOnEscape Disables the hook when false
|
|
85
|
+
*/
|
|
86
|
+
|
|
87
|
+
function useCallbackOnEscape(callback) {
|
|
88
|
+
var closeOnEscape = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
89
|
+
useEffect(function () {
|
|
90
|
+
var rootElement = DOCUMENT === null || DOCUMENT === void 0 ? void 0 : DOCUMENT.body;
|
|
91
|
+
|
|
92
|
+
if (!closeOnEscape || !callback || !rootElement) {
|
|
93
|
+
return undefined;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
var onKeyDown = onEscapePressed(callback);
|
|
97
|
+
var listener = {
|
|
98
|
+
enable: function enable() {
|
|
99
|
+
return rootElement.addEventListener('keydown', onKeyDown);
|
|
100
|
+
},
|
|
101
|
+
disable: function disable() {
|
|
102
|
+
return rootElement.removeEventListener('keydown', onKeyDown);
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
LISTENERS.register(listener);
|
|
106
|
+
return function () {
|
|
107
|
+
return LISTENERS.unregister(listener);
|
|
108
|
+
};
|
|
109
|
+
}, [callback, closeOnEscape]);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export { getFocusableElements as a, getFirstAndLastFocusable as g, makeListenerTowerContext as m, useCallbackOnEscape as u };
|
|
113
|
+
//# sourceMappingURL=5d8ed4ee.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"5d8ed4ee.js","sources":["../../src/utils/focus/constants.ts","../../src/utils/focus/getFocusableElements.ts","../../src/utils/focus/getFirstAndLastFocusable.ts","../../src/utils/makeListenerTowerContext.ts","../../src/hooks/useCallbackOnEscape.ts"],"sourcesContent":["/** CSS selector listing all tabbable elements. */\nexport const TABBABLE_ELEMENTS_SELECTOR = `a[href], button, textarea, input:not([type=\"hidden\"]):not([hidden]), [tabindex]`;\n\n/** CSS selector matching element that are disabled (should not receive focus). */\nexport const DISABLED_SELECTOR = `[hidden], [tabindex=\"-1\"], [disabled]:not([disabled=\"false\"]), [aria-disabled]:not([aria-disabled=\"false\"])`;\n","import { DISABLED_SELECTOR, TABBABLE_ELEMENTS_SELECTOR } from './constants';\n\nconst isNotDisabled = (element: HTMLElement) => !element.matches(DISABLED_SELECTOR);\n\nexport function getFocusableElements(element: HTMLElement): HTMLElement[] {\n return Array.from(element.querySelectorAll<HTMLElement>(TABBABLE_ELEMENTS_SELECTOR)).filter(isNotDisabled);\n}\n","import { getFocusableElements } from './getFocusableElements';\n\n/**\n * Get first and last elements focusable in an element.\n *\n * @param parentElement The element in which to search focusable elements.\n * @return first and last focusable elements\n */\nexport function getFirstAndLastFocusable(parentElement: HTMLElement) {\n const focusableElements = getFocusableElements(parentElement);\n\n // First non disabled element.\n const first = focusableElements[0];\n // Last non disabled element.\n const last = focusableElements[focusableElements.length - 1];\n\n if (last && first) {\n return { first, last };\n }\n return {};\n}\n","import last from 'lodash/last';\nimport pull from 'lodash/pull';\n\nexport type Listener = { enable(): void; disable(): void };\n\n/**\n * Keep track of listeners, only the last registered listener gets activated at any point (previously registered\n * listener are disabled).\n * When a listener gets unregistered, the previously registered listener gets enabled again.\n */\nexport function makeListenerTowerContext() {\n const LISTENERS: Listener[] = [];\n\n return {\n register(listener: Listener) {\n // Disable previous listener.\n last(LISTENERS)?.disable();\n // Keep track of current listener.\n LISTENERS.push(listener);\n // Enable current listener.\n listener.enable();\n },\n unregister(listener: Listener) {\n // Disable current listener.\n listener.disable();\n // Remove current listener.\n pull(LISTENERS, listener);\n // Enable previous listener.\n last(LISTENERS)?.enable();\n },\n };\n}\n","import { DOCUMENT } from '@lumx/react/constants';\nimport { Callback } from '@lumx/react/utils/type';\nimport { onEscapePressed } from '@lumx/react/utils/event';\nimport { useEffect } from 'react';\nimport { Listener, makeListenerTowerContext } from '@lumx/react/utils/makeListenerTowerContext';\n\nconst LISTENERS = makeListenerTowerContext();\n\n/**\n * Register a global listener on 'Escape' key pressed.\n *\n * If multiple listener are registered, only the last one is maintained. When a listener is unregistered, the previous\n * one gets activated again.\n *\n * @param callback Callback\n * @param closeOnEscape Disables the hook when false\n */\nexport function useCallbackOnEscape(callback: Callback | undefined, closeOnEscape = true) {\n useEffect(() => {\n const rootElement = DOCUMENT?.body;\n if (!closeOnEscape || !callback || !rootElement) {\n return undefined;\n }\n const onKeyDown = onEscapePressed(callback);\n\n const listener: Listener = {\n enable: () => rootElement.addEventListener('keydown', onKeyDown),\n disable: () => rootElement.removeEventListener('keydown', onKeyDown),\n };\n\n LISTENERS.register(listener);\n return () => LISTENERS.unregister(listener);\n }, [callback, closeOnEscape]);\n}\n"],"names":["TABBABLE_ELEMENTS_SELECTOR","DISABLED_SELECTOR","isNotDisabled","element","matches","getFocusableElements","Array","from","querySelectorAll","filter","getFirstAndLastFocusable","parentElement","focusableElements","first","last","length","makeListenerTowerContext","LISTENERS","register","listener","disable","push","enable","unregister","pull","useCallbackOnEscape","callback","closeOnEscape","useEffect","rootElement","DOCUMENT","body","undefined","onKeyDown","onEscapePressed","addEventListener","removeEventListener"],"mappings":";;;;;;AAAA;AACO,IAAMA,0BAA0B,sFAAhC;AAEP;;AACO,IAAMC,iBAAiB,sHAAvB;;ACFP,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,CAACC,OAAD;AAAA,SAA0B,CAACA,OAAO,CAACC,OAAR,CAAgBH,iBAAhB,CAA3B;AAAA,CAAtB;;AAEO,SAASI,oBAAT,CAA8BF,OAA9B,EAAmE;AACtE,SAAOG,KAAK,CAACC,IAAN,CAAWJ,OAAO,CAACK,gBAAR,CAAsCR,0BAAtC,CAAX,EAA8ES,MAA9E,CAAqFP,aAArF,CAAP;AACH;;ACJD;;;;;;;AAMO,SAASQ,wBAAT,CAAkCC,aAAlC,EAA8D;AACjE,MAAMC,iBAAiB,GAAGP,oBAAoB,CAACM,aAAD,CAA9C,CADiE;;AAIjE,MAAME,KAAK,GAAGD,iBAAiB,CAAC,CAAD,CAA/B,CAJiE;;AAMjE,MAAME,IAAI,GAAGF,iBAAiB,CAACA,iBAAiB,CAACG,MAAlB,GAA2B,CAA5B,CAA9B;;AAEA,MAAID,IAAI,IAAID,KAAZ,EAAmB;AACf,WAAO;AAAEA,MAAAA,KAAK,EAALA,KAAF;AAASC,MAAAA,IAAI,EAAJA;AAAT,KAAP;AACH;;AACD,SAAO,EAAP;AACH;;ACfD;;;;;AAKO,SAASE,wBAAT,GAAoC;AACvC,MAAMC,SAAqB,GAAG,EAA9B;AAEA,SAAO;AACHC,IAAAA,QADG,oBACMC,QADN,EAC0B;AAAA;;AACzB;AACA,eAAAL,IAAI,CAACG,SAAD,CAAJ,gDAAiBG,OAAjB,GAFyB;;AAIzBH,MAAAA,SAAS,CAACI,IAAV,CAAeF,QAAf,EAJyB;;AAMzBA,MAAAA,QAAQ,CAACG,MAAT;AACH,KARE;AASHC,IAAAA,UATG,sBASQJ,QATR,EAS4B;AAAA;;AAC3B;AACAA,MAAAA,QAAQ,CAACC,OAAT,GAF2B;;AAI3BI,MAAAA,IAAI,CAACP,SAAD,EAAYE,QAAZ,CAAJ,CAJ2B;;AAM3B,gBAAAL,IAAI,CAACG,SAAD,CAAJ,kDAAiBK,MAAjB;AACH;AAhBE,GAAP;AAkBH;;ACzBD,IAAML,SAAS,GAAGD,wBAAwB,EAA1C;AAEA;;;;;;;;;;AASO,SAASS,mBAAT,CAA6BC,QAA7B,EAAmF;AAAA,MAAtBC,aAAsB,uEAAN,IAAM;AACtFC,EAAAA,SAAS,CAAC,YAAM;AACZ,QAAMC,WAAW,GAAGC,QAAH,aAAGA,QAAH,uBAAGA,QAAQ,CAAEC,IAA9B;;AACA,QAAI,CAACJ,aAAD,IAAkB,CAACD,QAAnB,IAA+B,CAACG,WAApC,EAAiD;AAC7C,aAAOG,SAAP;AACH;;AACD,QAAMC,SAAS,GAAGC,eAAe,CAACR,QAAD,CAAjC;AAEA,QAAMP,QAAkB,GAAG;AACvBG,MAAAA,MAAM,EAAE;AAAA,eAAMO,WAAW,CAACM,gBAAZ,CAA6B,SAA7B,EAAwCF,SAAxC,CAAN;AAAA,OADe;AAEvBb,MAAAA,OAAO,EAAE;AAAA,eAAMS,WAAW,CAACO,mBAAZ,CAAgC,SAAhC,EAA2CH,SAA3C,CAAN;AAAA;AAFc,KAA3B;AAKAhB,IAAAA,SAAS,CAACC,QAAV,CAAmBC,QAAnB;AACA,WAAO;AAAA,aAAMF,SAAS,CAACM,UAAV,CAAqBJ,QAArB,CAAN;AAAA,KAAP;AACH,GAdQ,EAcN,CAACO,QAAD,EAAWC,aAAX,CAdM,CAAT;AAeH;;;;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { d as _slicedToArray, b as _objectWithoutProperties, _ as _objectSpread2, c as _extends } from './
|
|
2
|
-
import { AspectRatio, Size, Theme } from '
|
|
1
|
+
import { d as _slicedToArray, b as _objectWithoutProperties, _ as _objectSpread2, c as _extends } from './6340c129.js';
|
|
2
|
+
import { AspectRatio, Size, Theme } from '../components.js';
|
|
3
3
|
import React, { useState, useEffect, useMemo, forwardRef } from 'react';
|
|
4
|
-
import { g as getRootClassName, c as classnames, h as handleBasicClasses } from './
|
|
5
|
-
import { I as Icon, t as mdiImageBroken } from './
|
|
6
|
-
import { m as mergeRefs } from './
|
|
4
|
+
import { g as getRootClassName, c as classnames, h as handleBasicClasses } from './fd867c9d.js';
|
|
5
|
+
import { I as Icon, t as mdiImageBroken } from './a521723d.js';
|
|
6
|
+
import { m as mergeRefs } from './853713cd.js';
|
|
7
7
|
|
|
8
8
|
function getState(img, event) {
|
|
9
9
|
// Error event occurred or image loaded empty.
|
|
@@ -298,4 +298,4 @@ Thumbnail.className = CLASSNAME;
|
|
|
298
298
|
Thumbnail.defaultProps = DEFAULT_PROPS;
|
|
299
299
|
|
|
300
300
|
export { Thumbnail as T, useFocusPointStyle as u };
|
|
301
|
-
//# sourceMappingURL=
|
|
301
|
+
//# sourceMappingURL=616f2912.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"616f2912.js","sources":["../../src/components/thumbnail/useImageLoad.ts","../../src/components/thumbnail/useFocusPointStyle.tsx","../../src/components/thumbnail/Thumbnail.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport type LoadingState = 'isLoading' | 'isLoaded' | 'hasError';\n\nfunction getState(img: HTMLImageElement | null | undefined, event?: Event) {\n // Error event occurred or image loaded empty.\n if (event?.type === 'error' || (img?.complete && (img?.naturalWidth === 0 || img?.naturalHeight === 0))) {\n return 'hasError';\n }\n // Image is undefined or incomplete.\n if (!img || !img.complete) {\n return 'isLoading';\n }\n // Else loaded.\n return 'isLoaded';\n}\n\nexport function useImageLoad(imageURL: string, imgRef?: HTMLImageElement): LoadingState {\n const [state, setState] = useState<LoadingState>(getState(imgRef));\n\n // Update state when changing image URL or DOM reference.\n useEffect(() => {\n setState(getState(imgRef));\n }, [imageURL, imgRef]);\n\n // Listen to `load` and `error` event on image\n useEffect(() => {\n const img = imgRef;\n if (!img) return undefined;\n const update = (event?: Event) => setState(getState(img, event));\n img.addEventListener('load', update);\n img.addEventListener('error', update);\n return () => {\n img.removeEventListener('load', update);\n img.removeEventListener('error', update);\n };\n }, [imgRef, imgRef?.src]);\n\n return state;\n}\n","import { CSSProperties, useEffect, useMemo, useState } from 'react';\nimport { AspectRatio } from '@lumx/react/components';\nimport { ThumbnailProps } from '@lumx/react/components/thumbnail/Thumbnail';\n\n// Calculate shift to center the focus point in the container.\nexport function shiftPosition({\n scale,\n focusPoint,\n imageSize,\n containerSize,\n}: {\n scale: number;\n focusPoint: number;\n imageSize: number;\n containerSize: number;\n}) {\n const scaledSize = imageSize / scale;\n if (scaledSize === containerSize) return 0;\n\n const scaledFocusHeight = focusPoint * scaledSize;\n const startFocus = scaledFocusHeight - containerSize / 2;\n const shift = startFocus / (scaledSize - containerSize);\n\n return Math.floor(Math.max(Math.min(shift, 1), 0) * 100);\n}\n\ntype Size = { width: number; height: number };\n\n// Compute CSS properties to apply the focus point.\nexport const useFocusPointStyle = (\n { image, aspectRatio, focusPoint, imgProps: { width, height } = {} }: ThumbnailProps,\n element: HTMLImageElement | undefined,\n isLoaded: boolean,\n): CSSProperties => {\n // Get natural image size from imgProps or img element.\n const imageSize: Size | undefined = useMemo(() => {\n // Focus point is not applicable => exit early\n if (!image || aspectRatio === AspectRatio.original || (!focusPoint?.x && !focusPoint?.y)) return undefined;\n if (typeof width === 'number' && typeof height === 'number') return { width, height };\n if (element && isLoaded) return { width: element.naturalWidth, height: element.naturalHeight };\n return undefined;\n }, [aspectRatio, element, focusPoint?.x, focusPoint?.y, height, image, isLoaded, width]);\n\n // Get container size (dependant on imageSize).\n const [containerSize, setContainerSize] = useState<Size | undefined>(undefined);\n useEffect(\n function updateContainerSize() {\n const cWidth = element?.offsetWidth;\n const cHeight = element?.offsetHeight;\n if (cWidth && cHeight) {\n // Update only if needed.\n setContainerSize((oldContainerSize) =>\n oldContainerSize?.width === cWidth && oldContainerSize.height === cHeight\n ? oldContainerSize\n : { width: cWidth, height: cHeight },\n );\n } else if (imageSize) {\n // Wait for a render (in case the container size is dependent on the image size).\n requestAnimationFrame(updateContainerSize);\n }\n },\n [element?.offsetHeight, element?.offsetWidth, imageSize],\n );\n\n // Compute style.\n const [style, setStyle] = useState<CSSProperties>({});\n useEffect(() => {\n // Focus point is not applicable => exit early\n if (!image || aspectRatio === AspectRatio.original || (!focusPoint?.x && !focusPoint?.y)) {\n return;\n }\n if (!element || !imageSize) {\n // Focus point can be computed but now right now (image size unknown).\n setStyle({ visibility: 'hidden' });\n return;\n }\n if (!containerSize) {\n // Missing container size abort focus point compute.\n setStyle({});\n return;\n }\n\n const heightScale = imageSize.height / containerSize.height;\n const widthScale = imageSize.width / containerSize.width;\n const scale = Math.min(widthScale, heightScale);\n\n // Focus Y relative to the top (instead of the center)\n const focusPointFromTop = Math.abs((focusPoint?.y || 0) - 1) / 2;\n const y = shiftPosition({\n scale,\n focusPoint: focusPointFromTop,\n imageSize: imageSize.height,\n containerSize: containerSize.height,\n });\n\n // Focus X relative to the left (instead of the center)\n const focusPointFromLeft = Math.abs((focusPoint?.x || 0) + 1) / 2;\n const x = shiftPosition({\n scale,\n focusPoint: focusPointFromLeft,\n imageSize: imageSize.width,\n containerSize: containerSize.width,\n });\n\n const objectPosition = `${x}% ${y}%`;\n // Update only if needed.\n setStyle((oldStyle) => (oldStyle.objectPosition === objectPosition ? oldStyle : { objectPosition }));\n }, [aspectRatio, containerSize, element, focusPoint?.x, focusPoint?.y, image, imageSize]);\n\n return style;\n};\n","import React, {\n CSSProperties,\n forwardRef,\n ImgHTMLAttributes,\n KeyboardEventHandler,\n MouseEventHandler,\n ReactElement,\n ReactNode,\n Ref,\n useState,\n} from 'react';\nimport classNames from 'classnames';\n\nimport { AspectRatio, HorizontalAlignment, Icon, Size, Theme } from '@lumx/react';\n\nimport { Comp, Falsy, GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';\n\nimport { mdiImageBroken } from '@lumx/icons';\nimport { mergeRefs } from '@lumx/react/utils/mergeRefs';\nimport { useImageLoad } from '@lumx/react/components/thumbnail/useImageLoad';\nimport { useFocusPointStyle } from '@lumx/react/components/thumbnail/useFocusPointStyle';\nimport { FocusPoint, ThumbnailSize, ThumbnailVariant } from './types';\n\ntype ImgHTMLProps = ImgHTMLAttributes<HTMLImageElement>;\n\n/**\n * Defines the props of the component.\n */\nexport interface ThumbnailProps extends GenericProps, HasTheme {\n /** Alignment of the thumbnail in it's parent (requires flex parent). */\n align?: HorizontalAlignment;\n /** Image alternative text. */\n alt: string;\n /** Image aspect ratio. */\n aspectRatio?: AspectRatio;\n /** Badge. */\n badge?: ReactElement | Falsy;\n /** Image cross origin resource policy. */\n crossOrigin?: ImgHTMLProps['crossOrigin'];\n /** Fallback icon (SVG path) or react node when image fails to load. */\n fallback?: string | ReactNode;\n /** Whether the thumbnail should fill it's parent size (requires flex parent) or not. */\n fillHeight?: boolean;\n /** Apply relative vertical and horizontal shift (from -1 to 1) on the image position inside the thumbnail. */\n focusPoint?: FocusPoint;\n /** Image URL. */\n image: string;\n /** Props to inject into the native <img> element. */\n imgProps?: ImgHTMLProps;\n /** Reference to the native <img> element. */\n imgRef?: Ref<HTMLImageElement>;\n /** Set to true to force the display of the loading skeleton. */\n isLoading?: boolean;\n /** Size variant of the component. */\n size?: ThumbnailSize;\n /** Image loading mode. */\n loading?: ImgHTMLProps['loading'];\n /** On click callback. */\n onClick?: MouseEventHandler<HTMLDivElement>;\n /** On key press callback. */\n onKeyPress?: KeyboardEventHandler<HTMLDivElement>;\n /** Variant of the component. */\n variant?: ThumbnailVariant;\n /** Props to pass to the link wrapping the thumbnail. */\n linkProps?: React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>;\n /** Custom react component for the link (can be used to inject react router Link). */\n linkAs?: 'a' | any;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Thumbnail';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<ThumbnailProps> = {\n fallback: mdiImageBroken,\n loading: 'lazy',\n theme: Theme.light,\n};\n\n/**\n * Thumbnail component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Thumbnail: Comp<ThumbnailProps> = forwardRef((props, ref) => {\n const {\n align,\n alt,\n aspectRatio = AspectRatio.original,\n badge,\n className,\n crossOrigin,\n fallback,\n fillHeight,\n // `focusPoint` needs to be here to remove it from `forwardedProps`.\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n focusPoint,\n image,\n imgProps,\n imgRef: propImgRef,\n isLoading: isLoadingProp,\n loading,\n size,\n theme,\n variant,\n linkProps,\n linkAs,\n ...forwardedProps\n } = props;\n const [imgElement, setImgElement] = useState<HTMLImageElement>();\n\n // Image loading state.\n const loadingState = useImageLoad(image, imgElement);\n const isLoaded = loadingState === 'isLoaded';\n const isLoading = isLoadingProp || loadingState === 'isLoading';\n const hasError = loadingState === 'hasError';\n\n // Focus point.\n const focusPointStyle = useFocusPointStyle(props, imgElement, isLoaded);\n\n const hasIconErrorFallback = hasError && typeof fallback === 'string';\n const hasCustomErrorFallback = hasError && !hasIconErrorFallback;\n const imageErrorStyle: CSSProperties = {};\n if (hasIconErrorFallback) {\n // Keep the image layout on icon fallback.\n imageErrorStyle.visibility = 'hidden';\n } else if (hasCustomErrorFallback) {\n // Remove the image on custom fallback.\n imageErrorStyle.display = 'none';\n }\n\n const isLink = Boolean(linkProps?.href || linkAs);\n const isButton = !!forwardedProps.onClick;\n const isClickable = isButton || isLink;\n\n let Wrapper: any = 'div';\n const wrapperProps = { ...forwardedProps };\n if (isLink) {\n Wrapper = linkAs || 'a';\n Object.assign(wrapperProps, linkProps);\n } else if (isButton) {\n Wrapper = 'button';\n wrapperProps.type = forwardedProps.type || 'button';\n wrapperProps['aria-label'] = forwardedProps['aria-label'] || alt;\n }\n\n return (\n <Wrapper\n {...wrapperProps}\n ref={ref}\n className={classNames(\n linkProps?.className,\n className,\n handleBasicClasses({\n align,\n aspectRatio,\n prefix: CLASSNAME,\n size,\n theme,\n variant,\n isClickable,\n hasError,\n hasIconErrorFallback,\n hasCustomErrorFallback,\n isLoading,\n hasBadge: !!badge,\n }),\n fillHeight && `${CLASSNAME}--fill-height`,\n )}\n >\n <div className={`${CLASSNAME}__background`}>\n <img\n {...imgProps}\n style={{\n ...imgProps?.style,\n ...imageErrorStyle,\n ...focusPointStyle,\n }}\n ref={mergeRefs(setImgElement, propImgRef)}\n className={classNames(\n handleBasicClasses({\n prefix: `${CLASSNAME}__image`,\n isLoading,\n hasDefinedSize: Boolean(imgProps?.height && imgProps.width),\n }),\n imgProps?.className,\n )}\n crossOrigin={crossOrigin}\n src={image}\n alt={alt}\n loading={loading}\n />\n {!isLoading && hasError && (\n <div className={`${CLASSNAME}__fallback`}>\n {hasIconErrorFallback ? (\n <Icon icon={fallback as string} size={Size.xxs} theme={theme} />\n ) : (\n fallback\n )}\n </div>\n )}\n </div>\n {badge &&\n React.cloneElement(badge, { className: classNames(`${CLASSNAME}__badge`, badge.props.className) })}\n </Wrapper>\n );\n});\nThumbnail.displayName = COMPONENT_NAME;\nThumbnail.className = CLASSNAME;\nThumbnail.defaultProps = DEFAULT_PROPS;\n"],"names":["getState","img","event","type","complete","naturalWidth","naturalHeight","useImageLoad","imageURL","imgRef","useState","state","setState","useEffect","undefined","update","addEventListener","removeEventListener","src","shiftPosition","scale","focusPoint","imageSize","containerSize","scaledSize","scaledFocusHeight","startFocus","shift","Math","floor","max","min","useFocusPointStyle","element","isLoaded","image","aspectRatio","imgProps","width","height","useMemo","AspectRatio","original","x","y","setContainerSize","updateContainerSize","cWidth","offsetWidth","cHeight","offsetHeight","oldContainerSize","requestAnimationFrame","style","setStyle","visibility","heightScale","widthScale","focusPointFromTop","abs","focusPointFromLeft","objectPosition","oldStyle","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","fallback","mdiImageBroken","loading","theme","Theme","light","Thumbnail","forwardRef","props","ref","align","alt","badge","className","crossOrigin","fillHeight","propImgRef","isLoadingProp","isLoading","size","variant","linkProps","linkAs","forwardedProps","imgElement","setImgElement","loadingState","hasError","focusPointStyle","hasIconErrorFallback","hasCustomErrorFallback","imageErrorStyle","display","isLink","Boolean","href","isButton","onClick","isClickable","Wrapper","wrapperProps","Object","assign","classNames","handleBasicClasses","prefix","hasBadge","mergeRefs","hasDefinedSize","Size","xxs","React","cloneElement","displayName","defaultProps"],"mappings":";;;;;;;AAIA,SAASA,QAAT,CAAkBC,GAAlB,EAA4DC,KAA5D,EAA2E;AACvE;AACA,MAAI,CAAAA,KAAK,SAAL,IAAAA,KAAK,WAAL,YAAAA,KAAK,CAAEC,IAAP,MAAgB,OAAhB,IAA4B,CAAAF,GAAG,SAAH,IAAAA,GAAG,WAAH,YAAAA,GAAG,CAAEG,QAAL,MAAkB,CAAAH,GAAG,SAAH,IAAAA,GAAG,WAAH,YAAAA,GAAG,CAAEI,YAAL,MAAsB,CAAtB,IAA2B,CAAAJ,GAAG,SAAH,IAAAA,GAAG,WAAH,YAAAA,GAAG,CAAEK,aAAL,MAAuB,CAApE,CAAhC,EAAyG;AACrG,WAAO,UAAP;AACH,GAJsE;;;AAMvE,MAAI,CAACL,GAAD,IAAQ,CAACA,GAAG,CAACG,QAAjB,EAA2B;AACvB,WAAO,WAAP;AACH,GARsE;;;AAUvE,SAAO,UAAP;AACH;;AAEM,SAASG,YAAT,CAAsBC,QAAtB,EAAwCC,MAAxC,EAAiF;AAAA,kBAC1DC,QAAQ,CAAeV,QAAQ,CAACS,MAAD,CAAvB,CADkD;AAAA;AAAA,MAC7EE,KAD6E;AAAA,MACtEC,QADsE;;;AAIpFC,EAAAA,SAAS,CAAC,YAAM;AACZD,IAAAA,QAAQ,CAACZ,QAAQ,CAACS,MAAD,CAAT,CAAR;AACH,GAFQ,EAEN,CAACD,QAAD,EAAWC,MAAX,CAFM,CAAT,CAJoF;;AASpFI,EAAAA,SAAS,CAAC,YAAM;AACZ,QAAMZ,GAAG,GAAGQ,MAAZ;AACA,QAAI,CAACR,GAAL,EAAU,OAAOa,SAAP;;AACV,QAAMC,MAAM,GAAG,SAATA,MAAS,CAACb,KAAD;AAAA,aAAmBU,QAAQ,CAACZ,QAAQ,CAACC,GAAD,EAAMC,KAAN,CAAT,CAA3B;AAAA,KAAf;;AACAD,IAAAA,GAAG,CAACe,gBAAJ,CAAqB,MAArB,EAA6BD,MAA7B;AACAd,IAAAA,GAAG,CAACe,gBAAJ,CAAqB,OAArB,EAA8BD,MAA9B;AACA,WAAO,YAAM;AACTd,MAAAA,GAAG,CAACgB,mBAAJ,CAAwB,MAAxB,EAAgCF,MAAhC;AACAd,MAAAA,GAAG,CAACgB,mBAAJ,CAAwB,OAAxB,EAAiCF,MAAjC;AACH,KAHD;AAIH,GAVQ,EAUN,CAACN,MAAD,EAASA,MAAT,aAASA,MAAT,uBAASA,MAAM,CAAES,GAAjB,CAVM,CAAT;AAYA,SAAOP,KAAP;AACH;;ACnCD;AACO,SAASQ,aAAT,OAUJ;AAAA,MATCC,KASD,QATCA,KASD;AAAA,MARCC,UAQD,QARCA,UAQD;AAAA,MAPCC,SAOD,QAPCA,SAOD;AAAA,MANCC,aAMD,QANCA,aAMD;AACC,MAAMC,UAAU,GAAGF,SAAS,GAAGF,KAA/B;AACA,MAAII,UAAU,KAAKD,aAAnB,EAAkC,OAAO,CAAP;AAElC,MAAME,iBAAiB,GAAGJ,UAAU,GAAGG,UAAvC;AACA,MAAME,UAAU,GAAGD,iBAAiB,GAAGF,aAAa,GAAG,CAAvD;AACA,MAAMI,KAAK,GAAGD,UAAU,IAAIF,UAAU,GAAGD,aAAjB,CAAxB;AAEA,SAAOK,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,GAAL,CAASF,IAAI,CAACG,GAAL,CAASJ,KAAT,EAAgB,CAAhB,CAAT,EAA6B,CAA7B,IAAkC,GAA7C,CAAP;AACH;AAID;IACaK,kBAAkB,GAAG,SAArBA,kBAAqB,QAE9BC,OAF8B,EAG9BC,QAH8B,EAId;AAAA,MAHdC,KAGc,SAHdA,KAGc;AAAA,MAHPC,WAGO,SAHPA,WAGO;AAAA,MAHMf,UAGN,SAHMA,UAGN;AAAA,6BAHkBgB,QAGlB;AAAA,+CAHgD,EAGhD;AAAA,MAH8BC,KAG9B,kBAH8BA,KAG9B;AAAA,MAHqCC,MAGrC,kBAHqCA,MAGrC;AAChB;AACA,MAAMjB,SAA2B,GAAGkB,OAAO,CAAC,YAAM;AAC9C;AACA,QAAI,CAACL,KAAD,IAAUC,WAAW,KAAKK,WAAW,CAACC,QAAtC,IAAmD,EAACrB,UAAD,aAACA,UAAD,uBAACA,UAAU,CAAEsB,CAAb,KAAkB,EAACtB,UAAD,aAACA,UAAD,uBAACA,UAAU,CAAEuB,CAAb,CAAzE,EAA0F,OAAO9B,SAAP;AAC1F,QAAI,OAAOwB,KAAP,KAAiB,QAAjB,IAA6B,OAAOC,MAAP,KAAkB,QAAnD,EAA6D,OAAO;AAAED,MAAAA,KAAK,EAALA,KAAF;AAASC,MAAAA,MAAM,EAANA;AAAT,KAAP;AAC7D,QAAIN,OAAO,IAAIC,QAAf,EAAyB,OAAO;AAAEI,MAAAA,KAAK,EAAEL,OAAO,CAAC5B,YAAjB;AAA+BkC,MAAAA,MAAM,EAAEN,OAAO,CAAC3B;AAA/C,KAAP;AACzB,WAAOQ,SAAP;AACH,GAN0C,EAMxC,CAACsB,WAAD,EAAcH,OAAd,EAAuBZ,UAAvB,aAAuBA,UAAvB,uBAAuBA,UAAU,CAAEsB,CAAnC,EAAsCtB,UAAtC,aAAsCA,UAAtC,uBAAsCA,UAAU,CAAEuB,CAAlD,EAAqDL,MAArD,EAA6DJ,KAA7D,EAAoED,QAApE,EAA8EI,KAA9E,CANwC,CAA3C,CAFgB;;AAAA,kBAW0B5B,QAAQ,CAAmBI,SAAnB,CAXlC;AAAA;AAAA,MAWTS,aAXS;AAAA,MAWMsB,gBAXN;;AAYhBhC,EAAAA,SAAS,CACL,SAASiC,mBAAT,GAA+B;AAC3B,QAAMC,MAAM,GAAGd,OAAH,aAAGA,OAAH,uBAAGA,OAAO,CAAEe,WAAxB;AACA,QAAMC,OAAO,GAAGhB,OAAH,aAAGA,OAAH,uBAAGA,OAAO,CAAEiB,YAAzB;;AACA,QAAIH,MAAM,IAAIE,OAAd,EAAuB;AACnB;AACAJ,MAAAA,gBAAgB,CAAC,UAACM,gBAAD;AAAA,eACb,CAAAA,gBAAgB,SAAhB,IAAAA,gBAAgB,WAAhB,YAAAA,gBAAgB,CAAEb,KAAlB,MAA4BS,MAA5B,IAAsCI,gBAAgB,CAACZ,MAAjB,KAA4BU,OAAlE,GACME,gBADN,GAEM;AAAEb,UAAAA,KAAK,EAAES,MAAT;AAAiBR,UAAAA,MAAM,EAAEU;AAAzB,SAHO;AAAA,OAAD,CAAhB;AAKH,KAPD,MAOO,IAAI3B,SAAJ,EAAe;AAClB;AACA8B,MAAAA,qBAAqB,CAACN,mBAAD,CAArB;AACH;AACJ,GAfI,EAgBL,CAACb,OAAD,aAACA,OAAD,uBAACA,OAAO,CAAEiB,YAAV,EAAwBjB,OAAxB,aAAwBA,OAAxB,uBAAwBA,OAAO,CAAEe,WAAjC,EAA8C1B,SAA9C,CAhBK,CAAT,CAZgB;;AAAA,mBAgCUZ,QAAQ,CAAgB,EAAhB,CAhClB;AAAA;AAAA,MAgCT2C,KAhCS;AAAA,MAgCFC,QAhCE;;AAiChBzC,EAAAA,SAAS,CAAC,YAAM;AACZ;AACA,QAAI,CAACsB,KAAD,IAAUC,WAAW,KAAKK,WAAW,CAACC,QAAtC,IAAmD,EAACrB,UAAD,aAACA,UAAD,uBAACA,UAAU,CAAEsB,CAAb,KAAkB,EAACtB,UAAD,aAACA,UAAD,uBAACA,UAAU,CAAEuB,CAAb,CAAzE,EAA0F;AACtF;AACH;;AACD,QAAI,CAACX,OAAD,IAAY,CAACX,SAAjB,EAA4B;AACxB;AACAgC,MAAAA,QAAQ,CAAC;AAAEC,QAAAA,UAAU,EAAE;AAAd,OAAD,CAAR;AACA;AACH;;AACD,QAAI,CAAChC,aAAL,EAAoB;AAChB;AACA+B,MAAAA,QAAQ,CAAC,EAAD,CAAR;AACA;AACH;;AAED,QAAME,WAAW,GAAGlC,SAAS,CAACiB,MAAV,GAAmBhB,aAAa,CAACgB,MAArD;AACA,QAAMkB,UAAU,GAAGnC,SAAS,CAACgB,KAAV,GAAkBf,aAAa,CAACe,KAAnD;AACA,QAAMlB,KAAK,GAAGQ,IAAI,CAACG,GAAL,CAAS0B,UAAT,EAAqBD,WAArB,CAAd,CAlBY;;AAqBZ,QAAME,iBAAiB,GAAG9B,IAAI,CAAC+B,GAAL,CAAS,CAAC,CAAAtC,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEuB,CAAZ,KAAiB,CAAlB,IAAuB,CAAhC,IAAqC,CAA/D;AACA,QAAMA,CAAC,GAAGzB,aAAa,CAAC;AACpBC,MAAAA,KAAK,EAALA,KADoB;AAEpBC,MAAAA,UAAU,EAAEqC,iBAFQ;AAGpBpC,MAAAA,SAAS,EAAEA,SAAS,CAACiB,MAHD;AAIpBhB,MAAAA,aAAa,EAAEA,aAAa,CAACgB;AAJT,KAAD,CAAvB,CAtBY;;AA8BZ,QAAMqB,kBAAkB,GAAGhC,IAAI,CAAC+B,GAAL,CAAS,CAAC,CAAAtC,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEsB,CAAZ,KAAiB,CAAlB,IAAuB,CAAhC,IAAqC,CAAhE;AACA,QAAMA,CAAC,GAAGxB,aAAa,CAAC;AACpBC,MAAAA,KAAK,EAALA,KADoB;AAEpBC,MAAAA,UAAU,EAAEuC,kBAFQ;AAGpBtC,MAAAA,SAAS,EAAEA,SAAS,CAACgB,KAHD;AAIpBf,MAAAA,aAAa,EAAEA,aAAa,CAACe;AAJT,KAAD,CAAvB;AAOA,QAAMuB,cAAc,aAAMlB,CAAN,eAAYC,CAAZ,MAApB,CAtCY;;AAwCZU,IAAAA,QAAQ,CAAC,UAACQ,QAAD;AAAA,aAAeA,QAAQ,CAACD,cAAT,KAA4BA,cAA5B,GAA6CC,QAA7C,GAAwD;AAAED,QAAAA,cAAc,EAAdA;AAAF,OAAvE;AAAA,KAAD,CAAR;AACH,GAzCQ,EAyCN,CAACzB,WAAD,EAAcb,aAAd,EAA6BU,OAA7B,EAAsCZ,UAAtC,aAAsCA,UAAtC,uBAAsCA,UAAU,CAAEsB,CAAlD,EAAqDtB,UAArD,aAAqDA,UAArD,uBAAqDA,UAAU,CAAEuB,CAAjE,EAAoET,KAApE,EAA2Eb,SAA3E,CAzCM,CAAT;AA2CA,SAAO+B,KAAP;AACH;;ACxCD;;;AAGA,IAAMU,cAAc,GAAG,WAAvB;AAEA;;;;AAGA,IAAMC,SAAS,GAAGC,gBAAgB,CAACF,cAAD,CAAlC;AAEA;;;;AAGA,IAAMG,aAAsC,GAAG;AAC3CC,EAAAA,QAAQ,EAAEC,cADiC;AAE3CC,EAAAA,OAAO,EAAE,MAFkC;AAG3CC,EAAAA,KAAK,EAAEC,KAAK,CAACC;AAH8B,CAA/C;AAMA;;;;;;;;IAOaC,SAA+B,GAAGC,UAAU,CAAC,UAACC,KAAD,EAAQC,GAAR,EAAgB;AAAA,MAElEC,KAFkE,GAwBlEF,KAxBkE,CAElEE,KAFkE;AAAA,MAGlEC,GAHkE,GAwBlEH,KAxBkE,CAGlEG,GAHkE;AAAA,2BAwBlEH,KAxBkE,CAIlEvC,WAJkE;AAAA,MAIlEA,WAJkE,mCAIpDK,WAAW,CAACC,QAJwC;AAAA,MAKlEqC,KALkE,GAwBlEJ,KAxBkE,CAKlEI,KALkE;AAAA,MAMlEC,SANkE,GAwBlEL,KAxBkE,CAMlEK,SANkE;AAAA,MAOlEC,WAPkE,GAwBlEN,KAxBkE,CAOlEM,WAPkE;AAAA,MAQlEd,QARkE,GAwBlEQ,KAxBkE,CAQlER,QARkE;AAAA,MASlEe,UATkE,GAwBlEP,KAxBkE,CASlEO,UATkE;AAAA,MAYlE7D,UAZkE,GAwBlEsD,KAxBkE,CAYlEtD,UAZkE;AAAA,MAalEc,KAbkE,GAwBlEwC,KAxBkE,CAalExC,KAbkE;AAAA,MAclEE,QAdkE,GAwBlEsC,KAxBkE,CAclEtC,QAdkE;AAAA,MAe1D8C,UAf0D,GAwBlER,KAxBkE,CAelElE,MAfkE;AAAA,MAgBvD2E,aAhBuD,GAwBlET,KAxBkE,CAgBlEU,SAhBkE;AAAA,MAiBlEhB,OAjBkE,GAwBlEM,KAxBkE,CAiBlEN,OAjBkE;AAAA,MAkBlEiB,IAlBkE,GAwBlEX,KAxBkE,CAkBlEW,IAlBkE;AAAA,MAmBlEhB,KAnBkE,GAwBlEK,KAxBkE,CAmBlEL,KAnBkE;AAAA,MAoBlEiB,OApBkE,GAwBlEZ,KAxBkE,CAoBlEY,OApBkE;AAAA,MAqBlEC,SArBkE,GAwBlEb,KAxBkE,CAqBlEa,SArBkE;AAAA,MAsBlEC,MAtBkE,GAwBlEd,KAxBkE,CAsBlEc,MAtBkE;AAAA,MAuB/DC,cAvB+D,4BAwBlEf,KAxBkE;;AAAA,kBAyBlCjE,QAAQ,EAzB0B;AAAA;AAAA,MAyB/DiF,UAzB+D;AAAA,MAyBnDC,aAzBmD;;;AA4BtE,MAAMC,YAAY,GAAGtF,YAAY,CAAC4B,KAAD,EAAQwD,UAAR,CAAjC;AACA,MAAMzD,QAAQ,GAAG2D,YAAY,KAAK,UAAlC;AACA,MAAMR,SAAS,GAAGD,aAAa,IAAIS,YAAY,KAAK,WAApD;AACA,MAAMC,QAAQ,GAAGD,YAAY,KAAK,UAAlC,CA/BsE;;AAkCtE,MAAME,eAAe,GAAG/D,kBAAkB,CAAC2C,KAAD,EAAQgB,UAAR,EAAoBzD,QAApB,CAA1C;AAEA,MAAM8D,oBAAoB,GAAGF,QAAQ,IAAI,OAAO3B,QAAP,KAAoB,QAA7D;AACA,MAAM8B,sBAAsB,GAAGH,QAAQ,IAAI,CAACE,oBAA5C;AACA,MAAME,eAA8B,GAAG,EAAvC;;AACA,MAAIF,oBAAJ,EAA0B;AACtB;AACAE,IAAAA,eAAe,CAAC3C,UAAhB,GAA6B,QAA7B;AACH,GAHD,MAGO,IAAI0C,sBAAJ,EAA4B;AAC/B;AACAC,IAAAA,eAAe,CAACC,OAAhB,GAA0B,MAA1B;AACH;;AAED,MAAMC,MAAM,GAAGC,OAAO,CAAC,CAAAb,SAAS,SAAT,IAAAA,SAAS,WAAT,YAAAA,SAAS,CAAEc,IAAX,KAAmBb,MAApB,CAAtB;AACA,MAAMc,QAAQ,GAAG,CAAC,CAACb,cAAc,CAACc,OAAlC;AACA,MAAMC,WAAW,GAAGF,QAAQ,IAAIH,MAAhC;AAEA,MAAIM,OAAY,GAAG,KAAnB;;AACA,MAAMC,YAAY,sBAAQjB,cAAR,CAAlB;;AACA,MAAIU,MAAJ,EAAY;AACRM,IAAAA,OAAO,GAAGjB,MAAM,IAAI,GAApB;AACAmB,IAAAA,MAAM,CAACC,MAAP,CAAcF,YAAd,EAA4BnB,SAA5B;AACH,GAHD,MAGO,IAAIe,QAAJ,EAAc;AACjBG,IAAAA,OAAO,GAAG,QAAV;AACAC,IAAAA,YAAY,CAACxG,IAAb,GAAoBuF,cAAc,CAACvF,IAAf,IAAuB,QAA3C;AACAwG,IAAAA,YAAY,CAAC,YAAD,CAAZ,GAA6BjB,cAAc,CAAC,YAAD,CAAd,IAAgCZ,GAA7D;AACH;;AAED,SACI,oBAAC,OAAD,eACQ6B,YADR;AAEI,IAAA,GAAG,EAAE/B,GAFT;AAGI,IAAA,SAAS,EAAEkC,UAAU,CACjBtB,SADiB,aACjBA,SADiB,uBACjBA,SAAS,CAAER,SADM,EAEjBA,SAFiB,EAGjB+B,kBAAkB,CAAC;AACflC,MAAAA,KAAK,EAALA,KADe;AAEfzC,MAAAA,WAAW,EAAXA,WAFe;AAGf4E,MAAAA,MAAM,EAAEhD,SAHO;AAIfsB,MAAAA,IAAI,EAAJA,IAJe;AAKfhB,MAAAA,KAAK,EAALA,KALe;AAMfiB,MAAAA,OAAO,EAAPA,OANe;AAOfkB,MAAAA,WAAW,EAAXA,WAPe;AAQfX,MAAAA,QAAQ,EAARA,QARe;AASfE,MAAAA,oBAAoB,EAApBA,oBATe;AAUfC,MAAAA,sBAAsB,EAAtBA,sBAVe;AAWfZ,MAAAA,SAAS,EAATA,SAXe;AAYf4B,MAAAA,QAAQ,EAAE,CAAC,CAAClC;AAZG,KAAD,CAHD,EAiBjBG,UAAU,cAAOlB,SAAP,kBAjBO;AAHzB,MAuBI;AAAK,IAAA,SAAS,YAAKA,SAAL;AAAd,KACI,wCACQ3B,QADR;AAEI,IAAA,KAAK,qBACEA,QADF,aACEA,QADF,uBACEA,QAAQ,CAAEgB,KADZ,MAEE6C,eAFF,MAGEH,eAHF,CAFT;AAOI,IAAA,GAAG,EAAEmB,SAAS,CAACtB,aAAD,EAAgBT,UAAhB,CAPlB;AAQI,IAAA,SAAS,EAAE2B,UAAU,CACjBC,kBAAkB,CAAC;AACfC,MAAAA,MAAM,YAAKhD,SAAL,YADS;AAEfqB,MAAAA,SAAS,EAATA,SAFe;AAGf8B,MAAAA,cAAc,EAAEd,OAAO,CAAC,CAAAhE,QAAQ,SAAR,IAAAA,QAAQ,WAAR,YAAAA,QAAQ,CAAEE,MAAV,KAAoBF,QAAQ,CAACC,KAA9B;AAHR,KAAD,CADD,EAMjBD,QANiB,aAMjBA,QANiB,uBAMjBA,QAAQ,CAAE2C,SANO,CARzB;AAgBI,IAAA,WAAW,EAAEC,WAhBjB;AAiBI,IAAA,GAAG,EAAE9C,KAjBT;AAkBI,IAAA,GAAG,EAAE2C,GAlBT;AAmBI,IAAA,OAAO,EAAET;AAnBb,KADJ,EAsBK,CAACgB,SAAD,IAAcS,QAAd,IACG;AAAK,IAAA,SAAS,YAAK9B,SAAL;AAAd,KACKgC,oBAAoB,GACjB,oBAAC,IAAD;AAAM,IAAA,IAAI,EAAE7B,QAAZ;AAAgC,IAAA,IAAI,EAAEiD,IAAI,CAACC,GAA3C;AAAgD,IAAA,KAAK,EAAE/C;AAAvD,IADiB,GAGjBH,QAJR,CAvBR,CAvBJ,EAuDKY,KAAK,IACFuC,KAAK,CAACC,YAAN,CAAmBxC,KAAnB,EAA0B;AAAEC,IAAAA,SAAS,EAAE8B,UAAU,WAAI9C,SAAJ,cAAwBe,KAAK,CAACJ,KAAN,CAAYK,SAApC;AAAvB,GAA1B,CAxDR,CADJ;AA4DH,CA1HwD;AA2HzDP,SAAS,CAAC+C,WAAV,GAAwBzD,cAAxB;AACAU,SAAS,CAACO,SAAV,GAAsBhB,SAAtB;AACAS,SAAS,CAACgD,YAAV,GAAyBvD,aAAzB;;;;"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import React, { ReactNode } from 'react';
|
|
2
|
+
import { S as Size, l as GenericProps, m as HasTheme, O as Orientation, k as Comp } from './eca6d4dc.js';
|
|
3
|
+
import { a as AvatarProps } from './ea700b01.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* User block sizes.
|
|
7
|
+
*/
|
|
8
|
+
declare type UserBlockSize = Extract<Size, 's' | 'm' | 'l'>;
|
|
9
|
+
/**
|
|
10
|
+
* Defines the props of the component.
|
|
11
|
+
*/
|
|
12
|
+
interface UserBlockProps extends GenericProps, HasTheme {
|
|
13
|
+
/** Props to pass to the avatar. */
|
|
14
|
+
avatarProps?: Omit<AvatarProps, 'alt'>;
|
|
15
|
+
/** Additional fields used to describe the user. */
|
|
16
|
+
fields?: string[];
|
|
17
|
+
/** Props to pass to the link wrapping the avatar thumbnail. */
|
|
18
|
+
linkProps?: React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>;
|
|
19
|
+
/** Custom react component for the link (can be used to inject react router Link). */
|
|
20
|
+
linkAs?: 'a' | any;
|
|
21
|
+
/** Multiple action toolbar content. */
|
|
22
|
+
multipleActions?: ReactNode;
|
|
23
|
+
/** User name. */
|
|
24
|
+
name?: string;
|
|
25
|
+
/** Props to pass to the name block. */
|
|
26
|
+
nameProps?: GenericProps;
|
|
27
|
+
/** Orientation. */
|
|
28
|
+
orientation?: Orientation;
|
|
29
|
+
/** Simple action toolbar content. */
|
|
30
|
+
simpleAction?: ReactNode;
|
|
31
|
+
/** Size variant. */
|
|
32
|
+
size?: UserBlockSize;
|
|
33
|
+
/** On click callback. */
|
|
34
|
+
onClick?(): void;
|
|
35
|
+
/** On mouse enter callback. */
|
|
36
|
+
onMouseEnter?(): void;
|
|
37
|
+
/** On mouse leave callback. */
|
|
38
|
+
onMouseLeave?(): void;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* UserBlock component.
|
|
42
|
+
*
|
|
43
|
+
* @param props Component props.
|
|
44
|
+
* @param ref Component ref.
|
|
45
|
+
* @return React element.
|
|
46
|
+
*/
|
|
47
|
+
declare const UserBlock: Comp<UserBlockProps, HTMLDivElement>;
|
|
48
|
+
|
|
49
|
+
export { UserBlockSize as U, UserBlockProps as a, UserBlock as b };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { d as _slicedToArray, b as _objectWithoutProperties, c as _extends } from './
|
|
2
|
-
import { Alignment } from '
|
|
1
|
+
import { d as _slicedToArray, b as _objectWithoutProperties, c as _extends } from './6340c129.js';
|
|
2
|
+
import { Alignment } from '../components.js';
|
|
3
3
|
import React, { useState, forwardRef } from 'react';
|
|
4
|
-
import { g as getRootClassName, h as handleBasicClasses, c as classnames } from './
|
|
4
|
+
import { g as getRootClassName, h as handleBasicClasses, c as classnames } from './fd867c9d.js';
|
|
5
5
|
|
|
6
6
|
var INITIAL_STATE_ACTIVE_CHIP = -1;
|
|
7
7
|
/**
|
|
@@ -119,4 +119,4 @@ var ChipGroup = Object.assign(InternalChipGroup, {
|
|
|
119
119
|
});
|
|
120
120
|
|
|
121
121
|
export { ChipGroup as C };
|
|
122
|
-
//# sourceMappingURL=
|
|
122
|
+
//# sourceMappingURL=620081fa.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"620081fa.js","sources":["../../src/hooks/useChipGroupNavigation.tsx","../../src/components/chip/ChipGroup.tsx"],"sourcesContent":["import { useState } from 'react';\n\ninterface UseChipGroupNavigation {\n /** the current active chip index */\n activeChip: number;\n\n /** callback to be executed when the backspace was pressed */\n onBackspacePressed(): void;\n\n /** function that allows to reset the navigation */\n resetChipNavigation(): void;\n}\n\nexport type useChipGroupNavigationType<C = any> = (\n chips: C[],\n onChipDeleted: (chip: C) => void,\n initialActiveChip?: number,\n) => UseChipGroupNavigation;\n\nconst INITIAL_STATE_ACTIVE_CHIP = -1;\n\n/**\n * Hook that provides the necessary information to manage chips navigation.\n * @param chips List of chips selected.\n * @param onChipDeleted Callback executed when a chip must be eliminated.\n * @param initialActiveChip Initial active chip index.\n *\n * @return chip navigation tools.\n */\nexport const useChipGroupNavigation: useChipGroupNavigationType = (\n chips,\n onChipDeleted,\n initialActiveChip = INITIAL_STATE_ACTIVE_CHIP,\n) => {\n const [wasBackspacePressed, setWasBackspacePressed] = useState(false);\n const [activeChip, setActiveChip] = useState(initialActiveChip);\n\n /**\n * Resets the active index and backspace control to their initial state\n */\n const resetChipNavigation = () => {\n setWasBackspacePressed(false);\n setActiveChip(initialActiveChip);\n };\n\n /**\n * Callback to be executed when the backspace was pressed. If there are no chips\n * selected, it will return immediately. If there are it will check if the\n * backspace was already pressed. if it was, it means that the user wants to eliminate\n * the chip, so we execute the `onChipDeleted` function and reset internal state.\n *\n * If it was not pressed before, we set the `wasBackspacePressed` flag to true and\n * highlight the last chip.\n */\n const onBackspacePressed = () => {\n if (chips.length === 0) {\n return;\n }\n\n if (wasBackspacePressed) {\n const chipDeleted: any = chips[chips.length - 1];\n onChipDeleted(chipDeleted);\n resetChipNavigation();\n } else {\n setActiveChip(chips.length - 1);\n setWasBackspacePressed(true);\n }\n };\n\n return {\n activeChip,\n onBackspacePressed,\n resetChipNavigation,\n };\n};\n","import { Alignment, HorizontalAlignment } from '@lumx/react/components';\nimport React, { forwardRef, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Comp, GenericProps } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';\n\nimport { useChipGroupNavigation } from '@lumx/react/hooks/useChipGroupNavigation';\n\n/**\n * Defines the props of the component.\n */\nexport interface ChipGroupProps extends GenericProps {\n /** Chip horizontal alignment. */\n align?: HorizontalAlignment;\n /** List of Chip. */\n children: ReactNode;\n}\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<ChipGroupProps> = {\n align: Alignment.left,\n};\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'ChipGroup';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * ChipGroup component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nconst InternalChipGroup: Comp<ChipGroupProps, HTMLDivElement> = forwardRef((props, ref) => {\n const { align, children, className, ...forwardedProps } = props;\n const chipGroupClassName = handleBasicClasses({\n align,\n prefix: CLASSNAME,\n });\n\n return (\n <div ref={ref} {...forwardedProps} className={classNames(className, chipGroupClassName)}>\n {children}\n </div>\n );\n});\nInternalChipGroup.displayName = COMPONENT_NAME;\nInternalChipGroup.className = CLASSNAME;\nInternalChipGroup.defaultProps = DEFAULT_PROPS;\n\nexport const ChipGroup = Object.assign(InternalChipGroup, { useChipGroupNavigation });\n"],"names":["INITIAL_STATE_ACTIVE_CHIP","useChipGroupNavigation","chips","onChipDeleted","initialActiveChip","useState","wasBackspacePressed","setWasBackspacePressed","activeChip","setActiveChip","resetChipNavigation","onBackspacePressed","length","chipDeleted","DEFAULT_PROPS","align","Alignment","left","COMPONENT_NAME","CLASSNAME","getRootClassName","InternalChipGroup","forwardRef","props","ref","children","className","forwardedProps","chipGroupClassName","handleBasicClasses","prefix","classNames","displayName","defaultProps","ChipGroup","Object","assign"],"mappings":";;;;;AAmBA,IAAMA,yBAAyB,GAAG,CAAC,CAAnC;AAEA;;;;;;;;;AAQO,IAAMC,sBAAkD,GAAG,SAArDA,sBAAqD,CAC9DC,KAD8D,EAE9DC,aAF8D,EAI7D;AAAA,MADDC,iBACC,uEADmBJ,yBACnB;;AAAA,kBACqDK,QAAQ,CAAC,KAAD,CAD7D;AAAA;AAAA,MACMC,mBADN;AAAA,MAC2BC,sBAD3B;;AAAA,mBAEmCF,QAAQ,CAACD,iBAAD,CAF3C;AAAA;AAAA,MAEMI,UAFN;AAAA,MAEkBC,aAFlB;AAID;;;;;AAGA,MAAMC,mBAAmB,GAAG,SAAtBA,mBAAsB,GAAM;AAC9BH,IAAAA,sBAAsB,CAAC,KAAD,CAAtB;AACAE,IAAAA,aAAa,CAACL,iBAAD,CAAb;AACH,GAHD;AAKA;;;;;;;;;;;AASA,MAAMO,kBAAkB,GAAG,SAArBA,kBAAqB,GAAM;AAC7B,QAAIT,KAAK,CAACU,MAAN,KAAiB,CAArB,EAAwB;AACpB;AACH;;AAED,QAAIN,mBAAJ,EAAyB;AACrB,UAAMO,WAAgB,GAAGX,KAAK,CAACA,KAAK,CAACU,MAAN,GAAe,CAAhB,CAA9B;AACAT,MAAAA,aAAa,CAACU,WAAD,CAAb;AACAH,MAAAA,mBAAmB;AACtB,KAJD,MAIO;AACHD,MAAAA,aAAa,CAACP,KAAK,CAACU,MAAN,GAAe,CAAhB,CAAb;AACAL,MAAAA,sBAAsB,CAAC,IAAD,CAAtB;AACH;AACJ,GAbD;;AAeA,SAAO;AACHC,IAAAA,UAAU,EAAVA,UADG;AAEHG,IAAAA,kBAAkB,EAAlBA,kBAFG;AAGHD,IAAAA,mBAAmB,EAAnBA;AAHG,GAAP;AAKH,CA7CM;;ACnBP;;;;AAUA;;;AAGA,IAAMI,aAAsC,GAAG;AAC3CC,EAAAA,KAAK,EAAEC,SAAS,CAACC;AAD0B,CAA/C;AAIA;;;;AAGA,IAAMC,cAAc,GAAG,WAAvB;AAEA;;;;AAGA,IAAMC,SAAS,GAAGC,gBAAgB,CAACF,cAAD,CAAlC;AAEA;;;;;;;;AAOA,IAAMG,iBAAuD,GAAGC,UAAU,CAAC,UAACC,KAAD,EAAQC,GAAR,EAAgB;AAAA,MAC/ET,KAD+E,GAC7BQ,KAD6B,CAC/ER,KAD+E;AAAA,MACxEU,QADwE,GAC7BF,KAD6B,CACxEE,QADwE;AAAA,MAC9DC,SAD8D,GAC7BH,KAD6B,CAC9DG,SAD8D;AAAA,MAChDC,cADgD,4BAC7BJ,KAD6B;;AAEvF,MAAMK,kBAAkB,GAAGC,kBAAkB,CAAC;AAC1Cd,IAAAA,KAAK,EAALA,KAD0C;AAE1Ce,IAAAA,MAAM,EAAEX;AAFkC,GAAD,CAA7C;AAKA,SACI;AAAK,IAAA,GAAG,EAAEK;AAAV,KAAmBG,cAAnB;AAAmC,IAAA,SAAS,EAAEI,UAAU,CAACL,SAAD,EAAYE,kBAAZ;AAAxD,MACKH,QADL,CADJ;AAKH,CAZyE,CAA1E;AAaAJ,iBAAiB,CAACW,WAAlB,GAAgCd,cAAhC;AACAG,iBAAiB,CAACK,SAAlB,GAA8BP,SAA9B;AACAE,iBAAiB,CAACY,YAAlB,GAAiCnB,aAAjC;IAEaoB,SAAS,GAAGC,MAAM,CAACC,MAAP,CAAcf,iBAAd,EAAiC;AAAEpB,EAAAA,sBAAsB,EAAtBA;AAAF,CAAjC;;;;"}
|
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
function _typeof(obj) {
|
|
2
|
+
"@babel/helpers - typeof";
|
|
3
|
+
|
|
4
|
+
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
|
|
5
|
+
_typeof = function (obj) {
|
|
6
|
+
return typeof obj;
|
|
7
|
+
};
|
|
8
|
+
} else {
|
|
9
|
+
_typeof = function (obj) {
|
|
10
|
+
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
return _typeof(obj);
|
|
15
|
+
}
|
|
16
|
+
|
|
1
17
|
function _defineProperty(obj, key, value) {
|
|
2
18
|
if (key in obj) {
|
|
3
19
|
Object.defineProperty(obj, key, {
|
|
@@ -167,5 +183,5 @@ function _nonIterableRest() {
|
|
|
167
183
|
throw new TypeError("Invalid attempt to destructure non-iterable instance");
|
|
168
184
|
}
|
|
169
185
|
|
|
170
|
-
export { _objectSpread2 as _, _defineProperty as a, _objectWithoutProperties as b, _extends as c, _slicedToArray as d, _toConsumableArray as e, _toArray as f };
|
|
171
|
-
//# sourceMappingURL=
|
|
186
|
+
export { _objectSpread2 as _, _defineProperty as a, _objectWithoutProperties as b, _extends as c, _slicedToArray as d, _toConsumableArray as e, _toArray as f, _typeof as g };
|
|
187
|
+
//# sourceMappingURL=6340c129.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"6340c129.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { SyntheticEvent, InputHTMLAttributes } from 'react';
|
|
2
|
+
import { l as GenericProps, m as HasTheme, A as Alignment, k as Comp } from './eca6d4dc.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Defines the props of the component.
|
|
6
|
+
*/
|
|
7
|
+
interface SwitchProps extends GenericProps, HasTheme {
|
|
8
|
+
/** Helper text. */
|
|
9
|
+
helper?: string;
|
|
10
|
+
/** Whether it is checked or not. */
|
|
11
|
+
isChecked?: boolean;
|
|
12
|
+
/** Whether the component is disabled or not. */
|
|
13
|
+
isDisabled?: boolean;
|
|
14
|
+
/** Native input name property. */
|
|
15
|
+
name?: string;
|
|
16
|
+
/** Position of the switch relative to the label. */
|
|
17
|
+
position?: Extract<Alignment, 'right' | 'left'>;
|
|
18
|
+
/** Native input value property. */
|
|
19
|
+
value?: string;
|
|
20
|
+
/** On change callback. */
|
|
21
|
+
onChange?(isChecked: boolean, value?: string, name?: string, event?: SyntheticEvent): void;
|
|
22
|
+
/** optional props for input */
|
|
23
|
+
inputProps?: InputHTMLAttributes<HTMLInputElement>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Switch component.
|
|
27
|
+
*
|
|
28
|
+
* @param props Component props.
|
|
29
|
+
* @param ref Component ref.
|
|
30
|
+
* @return React element.
|
|
31
|
+
*/
|
|
32
|
+
declare const Switch: Comp<SwitchProps, HTMLDivElement>;
|
|
33
|
+
|
|
34
|
+
export { SwitchProps as S, Switch as a };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { l as GenericProps, m as HasTheme, K as Kind, k as Comp } from './eca6d4dc.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Defines the props of the component.
|
|
6
|
+
*/
|
|
7
|
+
interface NotificationProps extends GenericProps, HasTheme {
|
|
8
|
+
/** Action button label. */
|
|
9
|
+
actionLabel?: string;
|
|
10
|
+
/** Content. */
|
|
11
|
+
content?: React.ReactNode;
|
|
12
|
+
/** Whether the component is open or not. */
|
|
13
|
+
isOpen?: boolean;
|
|
14
|
+
/** Notification type. */
|
|
15
|
+
type?: Kind;
|
|
16
|
+
/** Z-axis position. */
|
|
17
|
+
zIndex?: number;
|
|
18
|
+
/** On action button click callback. */
|
|
19
|
+
onActionClick?(): void;
|
|
20
|
+
/** On click callback. */
|
|
21
|
+
onClick?(): void;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Notification component.
|
|
25
|
+
*
|
|
26
|
+
* @param props Component props.
|
|
27
|
+
* @param ref Component ref.
|
|
28
|
+
* @return React element.
|
|
29
|
+
*/
|
|
30
|
+
declare const Notification: Comp<NotificationProps, HTMLDivElement>;
|
|
31
|
+
|
|
32
|
+
export { NotificationProps as N, Notification as a };
|