@lumx/react 3.20.1-alpha.24 → 3.20.1-alpha.26
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/_internal/Button-85482487.js +98 -0
- package/_internal/Button-85482487.js.map +1 -0
- package/_internal/ButtonRoot-823f3e9c.js +117 -0
- package/_internal/ButtonRoot-823f3e9c.js.map +1 -0
- package/_internal/Chip-a34f6905.js +146 -0
- package/_internal/Chip-a34f6905.js.map +1 -0
- package/_internal/ClickAwayProvider-7093ba23.js +95 -0
- package/_internal/ClickAwayProvider-7093ba23.js.map +1 -0
- package/_internal/DisabledStateContext-ea04260d.js +29 -0
- package/_internal/DisabledStateContext-ea04260d.js.map +1 -0
- package/_internal/HeadingLevelProvider-ebdcb0c7.js +61 -0
- package/_internal/HeadingLevelProvider-ebdcb0c7.js.map +1 -0
- package/_internal/IconButton-1a22c4c8.js +77 -0
- package/_internal/IconButton-1a22c4c8.js.map +1 -0
- package/_internal/ImageCaption-a0a6de5c.js +75 -0
- package/_internal/ImageCaption-a0a6de5c.js.map +1 -0
- package/_internal/List-54237e0e.js +793 -0
- package/_internal/List-54237e0e.js.map +1 -0
- package/_internal/PopoverDialog-4ebe79f2.js +655 -0
- package/_internal/PopoverDialog-4ebe79f2.js.map +1 -0
- package/_internal/Portal-3f86608e.js +45 -0
- package/_internal/Portal-3f86608e.js.map +1 -0
- package/_internal/RawClickable-2c2b6a89.js +52 -0
- package/_internal/RawClickable-2c2b6a89.js.map +1 -0
- package/_internal/Slides-ae91d12c.js +682 -0
- package/_internal/Slides-ae91d12c.js.map +1 -0
- package/_internal/ThemeContext-3181f000.js +14 -0
- package/_internal/ThemeContext-3181f000.js.map +1 -0
- package/_internal/Thumbnail-0872250e.js +314 -0
- package/_internal/Thumbnail-0872250e.js.map +1 -0
- package/_internal/check-circle-de24f857.js +4 -0
- package/_internal/check-circle-de24f857.js.map +1 -0
- package/_internal/chevron-right-827b804a.js +6 -0
- package/_internal/chevron-right-827b804a.js.map +1 -0
- package/_internal/chevron-up-0b9c76cb.js +6 -0
- package/_internal/chevron-up-0b9c76cb.js.map +1 -0
- package/_internal/close-circle-ef5d1aac.js +4 -0
- package/_internal/close-circle-ef5d1aac.js.map +1 -0
- package/_internal/close-eaf6c45a.js +4 -0
- package/_internal/close-eaf6c45a.js.map +1 -0
- package/_internal/components/alert-dialog-0eeb06ce.js +163 -0
- package/_internal/components/alert-dialog-0eeb06ce.js.map +1 -0
- package/_internal/components/autocomplete-32170542.js +261 -0
- package/_internal/components/autocomplete-32170542.js.map +1 -0
- package/_internal/components/avatar-d2214a61.js +83 -0
- package/_internal/components/avatar-d2214a61.js.map +1 -0
- package/_internal/components/badge-8390e590.js +81 -0
- package/_internal/components/badge-8390e590.js.map +1 -0
- package/_internal/components/button-b5818c5a.js +47 -0
- package/_internal/components/button-b5818c5a.js.map +1 -0
- package/_internal/components/checkbox-346834f8.js +143 -0
- package/_internal/components/checkbox-346834f8.js.map +1 -0
- package/_internal/components/chip-e40c5521.js +102 -0
- package/_internal/components/chip-e40c5521.js.map +1 -0
- package/_internal/components/comment-block-a4997791.js +138 -0
- package/_internal/components/comment-block-a4997791.js.map +1 -0
- package/_internal/components/date-picker-48a39549.js +2 -0
- package/_internal/components/date-picker-48a39549.js.map +1 -0
- package/_internal/components/dialog-ebdb9500.js +238 -0
- package/_internal/components/dialog-ebdb9500.js.map +1 -0
- package/_internal/components/divider-116af6b9.js +50 -0
- package/_internal/components/divider-116af6b9.js.map +1 -0
- package/_internal/components/drag-handle-6b073866.js +52 -0
- package/_internal/components/drag-handle-6b073866.js.map +1 -0
- package/_internal/components/dropdown-0baed51b.js +147 -0
- package/_internal/components/dropdown-0baed51b.js.map +1 -0
- package/_internal/components/expansion-panel-80edf6c9.js +167 -0
- package/_internal/components/expansion-panel-80edf6c9.js.map +1 -0
- package/_internal/components/flag-7c9d3abf.js +59 -0
- package/_internal/components/flag-7c9d3abf.js.map +1 -0
- package/_internal/components/flex-box-55144e5f.js +56 -0
- package/_internal/components/flex-box-55144e5f.js.map +1 -0
- package/_internal/components/generic-block-ff0509ee.js +124 -0
- package/_internal/components/generic-block-ff0509ee.js.map +1 -0
- package/_internal/components/grid-6f1b5a41.js +104 -0
- package/_internal/components/grid-6f1b5a41.js.map +1 -0
- package/_internal/components/grid-column-f01df853.js +59 -0
- package/_internal/components/grid-column-f01df853.js.map +1 -0
- package/_internal/components/heading-d4c66a34.js +53 -0
- package/_internal/components/heading-d4c66a34.js.map +1 -0
- package/_internal/components/icon-7c79ab42.js +2 -0
- package/_internal/components/icon-7c79ab42.js.map +1 -0
- package/_internal/components/image-block-755d8b96.js +110 -0
- package/_internal/components/image-block-755d8b96.js.map +1 -0
- package/_internal/components/image-lightbox-d31dcd8a.js +759 -0
- package/_internal/components/image-lightbox-d31dcd8a.js.map +1 -0
- package/_internal/components/inline-list-e6f19a98.js +74 -0
- package/_internal/components/inline-list-e6f19a98.js.map +1 -0
- package/_internal/components/input-helper-64153099.js +71 -0
- package/_internal/components/input-helper-64153099.js.map +1 -0
- package/_internal/components/input-label-2feb0bb0.js +59 -0
- package/_internal/components/input-label-2feb0bb0.js.map +1 -0
- package/_internal/components/lightbox-9dbd7c15.js +155 -0
- package/_internal/components/lightbox-9dbd7c15.js.map +1 -0
- package/_internal/components/link-f9421eab.js +72 -0
- package/_internal/components/link-f9421eab.js.map +1 -0
- package/_internal/components/link-preview-5c7e3878.js +117 -0
- package/_internal/components/link-preview-5c7e3878.js.map +1 -0
- package/_internal/components/list-b08d8423.js +71 -0
- package/_internal/components/list-b08d8423.js.map +1 -0
- package/_internal/components/message-b3957df0.js +98 -0
- package/_internal/components/message-b3957df0.js.map +1 -0
- package/_internal/components/mosaic-742a9109.js +95 -0
- package/_internal/components/mosaic-742a9109.js.map +1 -0
- package/_internal/components/navigation-b1cd43c3.js +225 -0
- package/_internal/components/navigation-b1cd43c3.js.map +1 -0
- package/_internal/components/notification-94679f51.js +146 -0
- package/_internal/components/notification-94679f51.js.map +1 -0
- package/_internal/components/popover-65bfbc57.js +3 -0
- package/_internal/components/popover-65bfbc57.js.map +1 -0
- package/_internal/components/post-block-3ac52237.js +109 -0
- package/_internal/components/post-block-3ac52237.js.map +1 -0
- package/_internal/components/progress-f39c3fa2.js +182 -0
- package/_internal/components/progress-f39c3fa2.js.map +1 -0
- package/_internal/components/progress-tracker-997931ac.js +309 -0
- package/_internal/components/progress-tracker-997931ac.js.map +1 -0
- package/_internal/components/radio-button-559a4863.js +149 -0
- package/_internal/components/radio-button-559a4863.js.map +1 -0
- package/_internal/components/select-f3b44cb6.js +458 -0
- package/_internal/components/select-f3b44cb6.js.map +1 -0
- package/_internal/components/side-navigation-414825d8.js +165 -0
- package/_internal/components/side-navigation-414825d8.js.map +1 -0
- package/_internal/components/skeleton-c66516ee.js +166 -0
- package/_internal/components/skeleton-c66516ee.js.map +1 -0
- package/_internal/components/slider-efbfbc45.js +311 -0
- package/_internal/components/slider-efbfbc45.js.map +1 -0
- package/_internal/components/slideshow-dc4b79ae.js +151 -0
- package/_internal/components/slideshow-dc4b79ae.js.map +1 -0
- package/_internal/components/switch-769a2a04.js +122 -0
- package/_internal/components/switch-769a2a04.js.map +1 -0
- package/_internal/components/table-c43ec4a5.js +297 -0
- package/_internal/components/table-c43ec4a5.js.map +1 -0
- package/_internal/components/tabs-4037fe57.js +298 -0
- package/_internal/components/tabs-4037fe57.js.map +1 -0
- package/_internal/components/text-851c62f8.js +2 -0
- package/_internal/components/text-851c62f8.js.map +1 -0
- package/_internal/components/text-field-0a15a15d.js +360 -0
- package/_internal/components/text-field-0a15a15d.js.map +1 -0
- package/_internal/components/thumbnail-f1784929.js +42 -0
- package/_internal/components/thumbnail-f1784929.js.map +1 -0
- package/_internal/components/toolbar-a43533a2.js +61 -0
- package/_internal/components/toolbar-a43533a2.js.map +1 -0
- package/_internal/components/tooltip-2885ab2e.js +327 -0
- package/_internal/components/tooltip-2885ab2e.js.map +1 -0
- package/_internal/components/uploader-7bc3adaa.js +153 -0
- package/_internal/components/uploader-7bc3adaa.js.map +1 -0
- package/_internal/components/user-block-5f7b09af.js +145 -0
- package/_internal/components/user-block-5f7b09af.js.map +1 -0
- package/_internal/constants-b9e57936.js +2155 -0
- package/_internal/constants-b9e57936.js.map +1 -0
- package/_internal/constants-d0e3f49e.js +24 -0
- package/_internal/constants-d0e3f49e.js.map +1 -0
- package/_internal/context-9d1336a1.js +19 -0
- package/_internal/context-9d1336a1.js.map +1 -0
- package/_internal/forwardRef-15f62847.js +70 -0
- package/_internal/forwardRef-15f62847.js.map +1 -0
- package/_internal/getFocusableElements-230173a8.js +13 -0
- package/_internal/getFocusableElements-230173a8.js.map +1 -0
- package/_internal/index-192f8ada.js +103 -0
- package/_internal/index-192f8ada.js.map +1 -0
- package/_internal/index-9df37c0d.js +436 -0
- package/_internal/index-9df37c0d.js.map +1 -0
- package/_internal/index-b06353f2.js +117 -0
- package/_internal/index-b06353f2.js.map +1 -0
- package/_internal/information-49bbeed3.js +6 -0
- package/_internal/information-49bbeed3.js.map +1 -0
- package/_internal/isComponent-78df9309.js +20 -0
- package/_internal/isComponent-78df9309.js.map +1 -0
- package/_internal/isComponentType-e806b848.js +9 -0
- package/_internal/isComponentType-e806b848.js.map +1 -0
- package/_internal/mergeRefs-f0d7d6ea.js +30 -0
- package/_internal/mergeRefs-f0d7d6ea.js.map +1 -0
- package/{src/utils/partitionMulti.ts → _internal/partitionMulti-4daccdd5.js} +5 -9
- package/_internal/partitionMulti-4daccdd5.js.map +1 -0
- package/_internal/state-db358714.js +130 -0
- package/_internal/state-db358714.js.map +1 -0
- package/_internal/useBooleanState-2a3d237c.js +12 -0
- package/_internal/useBooleanState-2a3d237c.js.map +1 -0
- package/_internal/useCallbackOnEscape-ea4d9eb4.js +62 -0
- package/_internal/useCallbackOnEscape-ea4d9eb4.js.map +1 -0
- package/_internal/useDisableBodyScroll-36bd7352.js +219 -0
- package/_internal/useDisableBodyScroll-36bd7352.js.map +1 -0
- package/_internal/useDisableStateProps-69e16b7c.js +36 -0
- package/_internal/useDisableStateProps-69e16b7c.js.map +1 -0
- package/_internal/useFocusTrap-c3c6378b.js +112 -0
- package/_internal/useFocusTrap-c3c6378b.js.map +1 -0
- package/_internal/useId-3a1facc0.js +18 -0
- package/_internal/useId-3a1facc0.js.map +1 -0
- package/_internal/useRovingTabIndex-7daf0f24.js +77 -0
- package/_internal/useRovingTabIndex-7daf0f24.js.map +1 -0
- package/_internal/useTransitionVisibility-321fdbfa.js +50 -0
- package/_internal/useTransitionVisibility-321fdbfa.js.map +1 -0
- package/_internal/wrapChildrenIconWithSpaces-f1e91251.js +20 -0
- package/_internal/wrapChildrenIconWithSpaces-f1e91251.js.map +1 -0
- package/index.d.ts +7 -352
- package/index.js +65 -14486
- package/index.js.map +1 -1
- package/package.json +4 -11
- package/utils/index.d.ts +1 -1
- package/utils/index.js +3 -1
- package/utils/index.js.map +1 -1
- package/_internal/Falsy.d.ts +0 -7
- package/_internal/index.js +0 -236
- package/_internal/index.js.map +0 -1
- package/src/components/alert-dialog/AlertDialog.stories.tsx +0 -127
- package/src/components/alert-dialog/AlertDialog.test.tsx +0 -34
- package/src/components/alert-dialog/AlertDialog.tsx +0 -189
- package/src/components/alert-dialog/index.ts +0 -1
- package/src/components/autocomplete/Autocomplete.stories.tsx +0 -75
- package/src/components/autocomplete/Autocomplete.test.tsx +0 -99
- package/src/components/autocomplete/Autocomplete.tsx +0 -294
- package/src/components/autocomplete/AutocompleteMultiple.stories.tsx +0 -167
- package/src/components/autocomplete/AutocompleteMultiple.test.tsx +0 -61
- package/src/components/autocomplete/AutocompleteMultiple.tsx +0 -156
- package/src/components/autocomplete/__mockData__/index.ts +0 -39
- package/src/components/autocomplete/index.ts +0 -2
- package/src/components/avatar/Avatar.stories.tsx +0 -119
- package/src/components/avatar/Avatar.test.tsx +0 -32
- package/src/components/avatar/Avatar.tsx +0 -114
- package/src/components/avatar/index.ts +0 -1
- package/src/components/badge/Badge.stories.tsx +0 -69
- package/src/components/badge/Badge.test.tsx +0 -45
- package/src/components/badge/Badge.tsx +0 -58
- package/src/components/badge/BadgeWrapper.stories.tsx +0 -75
- package/src/components/badge/BadgeWrapper.test.tsx +0 -47
- package/src/components/badge/BadgeWrapper.tsx +0 -37
- package/src/components/badge/index.ts +0 -2
- package/src/components/button/Button.stories.tsx +0 -355
- package/src/components/button/Button.test.tsx +0 -125
- package/src/components/button/Button.tsx +0 -101
- package/src/components/button/ButtonGroup.stories.tsx +0 -52
- package/src/components/button/ButtonGroup.test.tsx +0 -41
- package/src/components/button/ButtonGroup.tsx +0 -50
- package/src/components/button/ButtonRoot.tsx +0 -163
- package/src/components/button/IconButton.stories.tsx +0 -52
- package/src/components/button/IconButton.test.tsx +0 -66
- package/src/components/button/IconButton.tsx +0 -91
- package/src/components/button/index.ts +0 -4
- package/src/components/checkbox/Checkbox.stories.tsx +0 -64
- package/src/components/checkbox/Checkbox.test.tsx +0 -154
- package/src/components/checkbox/Checkbox.tsx +0 -164
- package/src/components/checkbox/index.ts +0 -1
- package/src/components/chip/Chip.stories.tsx +0 -164
- package/src/components/chip/Chip.test.tsx +0 -243
- package/src/components/chip/Chip.tsx +0 -168
- package/src/components/chip/ChipGroup.stories.tsx +0 -47
- package/src/components/chip/ChipGroup.test.tsx +0 -37
- package/src/components/chip/ChipGroup.tsx +0 -60
- package/src/components/chip/index.ts +0 -2
- package/src/components/comment-block/CommentBlock.stories.tsx +0 -91
- package/src/components/comment-block/CommentBlock.test.tsx +0 -28
- package/src/components/comment-block/CommentBlock.tsx +0 -172
- package/src/components/comment-block/index.ts +0 -1
- package/src/components/date-picker/DatePicker.stories.tsx +0 -118
- package/src/components/date-picker/DatePicker.test.tsx +0 -34
- package/src/components/date-picker/DatePicker.tsx +0 -52
- package/src/components/date-picker/DatePickerControlled.test.tsx +0 -91
- package/src/components/date-picker/DatePickerControlled.tsx +0 -259
- package/src/components/date-picker/DatePickerField.stories.tsx +0 -100
- package/src/components/date-picker/DatePickerField.test.tsx +0 -70
- package/src/components/date-picker/DatePickerField.tsx +0 -135
- package/src/components/date-picker/constants.ts +0 -11
- package/src/components/date-picker/index.ts +0 -4
- package/src/components/date-picker/types.ts +0 -28
- package/src/components/dialog/Dialog.stories.tsx +0 -318
- package/src/components/dialog/Dialog.test.tsx +0 -97
- package/src/components/dialog/Dialog.tsx +0 -288
- package/src/components/dialog/index.ts +0 -1
- package/src/components/divider/Divider.test.tsx +0 -51
- package/src/components/divider/Divider.tsx +0 -50
- package/src/components/divider/index.ts +0 -1
- package/src/components/drag-handle/DragHandle.test.tsx +0 -36
- package/src/components/drag-handle/DragHandle.tsx +0 -51
- package/src/components/drag-handle/index.ts +0 -1
- package/src/components/dropdown/Dropdown.stories.tsx +0 -31
- package/src/components/dropdown/Dropdown.test.tsx +0 -66
- package/src/components/dropdown/Dropdown.tsx +0 -186
- package/src/components/dropdown/index.ts +0 -1
- package/src/components/expansion-panel/ExpansionPanel.stories.tsx +0 -91
- package/src/components/expansion-panel/ExpansionPanel.test.tsx +0 -185
- package/src/components/expansion-panel/ExpansionPanel.tsx +0 -195
- package/src/components/expansion-panel/index.ts +0 -1
- package/src/components/flag/Flag.stories.tsx +0 -48
- package/src/components/flag/Flag.test.tsx +0 -62
- package/src/components/flag/Flag.tsx +0 -52
- package/src/components/flag/index.ts +0 -1
- package/src/components/flex-box/FlexBox.stories.tsx +0 -156
- package/src/components/flex-box/FlexBox.test.tsx +0 -24
- package/src/components/flex-box/FlexBox.tsx +0 -100
- package/src/components/flex-box/index.ts +0 -1
- package/src/components/generic-block/GenericBlock.stories.jsx +0 -128
- package/src/components/generic-block/GenericBlock.test.tsx +0 -156
- package/src/components/generic-block/GenericBlock.tsx +0 -225
- package/src/components/generic-block/constants.ts +0 -9
- package/src/components/generic-block/index.ts +0 -2
- package/src/components/grid/Grid.tsx +0 -83
- package/src/components/grid/GridItem.tsx +0 -55
- package/src/components/grid/index.ts +0 -2
- package/src/components/grid-column/GridColumn.stories.tsx +0 -45
- package/src/components/grid-column/GridColumn.test.jsx +0 -56
- package/src/components/grid-column/GridColumn.tsx +0 -83
- package/src/components/grid-column/index.ts +0 -1
- package/src/components/heading/Heading.stories.tsx +0 -69
- package/src/components/heading/Heading.test.tsx +0 -82
- package/src/components/heading/Heading.tsx +0 -65
- package/src/components/heading/HeadingLevelProvider.tsx +0 -30
- package/src/components/heading/constants.ts +0 -16
- package/src/components/heading/context.tsx +0 -13
- package/src/components/heading/index.ts +0 -3
- package/src/components/heading/useHeadingLevel.tsx +0 -8
- package/src/components/icon/Icon.stories.tsx +0 -73
- package/src/components/icon/Icon.test.tsx +0 -125
- package/src/components/icon/Icon.tsx +0 -133
- package/src/components/icon/index.ts +0 -1
- package/src/components/image-block/ImageBlock.stories.tsx +0 -117
- package/src/components/image-block/ImageBlock.test.tsx +0 -58
- package/src/components/image-block/ImageBlock.tsx +0 -142
- package/src/components/image-block/ImageCaption.tsx +0 -115
- package/src/components/image-block/index.ts +0 -1
- package/src/components/image-lightbox/ImageLightbox.stories.tsx +0 -160
- package/src/components/image-lightbox/ImageLightbox.test.tsx +0 -254
- package/src/components/image-lightbox/ImageLightbox.tsx +0 -90
- package/src/components/image-lightbox/constants.ts +0 -11
- package/src/components/image-lightbox/index.ts +0 -2
- package/src/components/image-lightbox/internal/ImageSlide.tsx +0 -107
- package/src/components/image-lightbox/internal/ImageSlideshow.tsx +0 -164
- package/src/components/image-lightbox/internal/useAnimateScroll.ts +0 -55
- package/src/components/image-lightbox/internal/usePointerZoom.ts +0 -148
- package/src/components/image-lightbox/types.ts +0 -48
- package/src/components/image-lightbox/useImageLightbox.tsx +0 -141
- package/src/components/inline-list/InlineList.stories.tsx +0 -77
- package/src/components/inline-list/InlineList.test.tsx +0 -52
- package/src/components/inline-list/InlineList.tsx +0 -96
- package/src/components/inline-list/index.ts +0 -1
- package/src/components/input-helper/InputHelper.stories.tsx +0 -35
- package/src/components/input-helper/InputHelper.test.tsx +0 -55
- package/src/components/input-helper/InputHelper.tsx +0 -65
- package/src/components/input-helper/constants.ts +0 -11
- package/src/components/input-helper/index.ts +0 -1
- package/src/components/input-label/InputLabel.stories.tsx +0 -45
- package/src/components/input-label/InputLabel.test.tsx +0 -59
- package/src/components/input-label/InputLabel.tsx +0 -69
- package/src/components/input-label/index.ts +0 -1
- package/src/components/lightbox/Lightbox.stories.tsx +0 -101
- package/src/components/lightbox/Lightbox.test.tsx +0 -53
- package/src/components/lightbox/Lightbox.tsx +0 -180
- package/src/components/lightbox/index.ts +0 -1
- package/src/components/link/Link.stories.tsx +0 -195
- package/src/components/link/Link.test.tsx +0 -127
- package/src/components/link/Link.tsx +0 -106
- package/src/components/link/index.ts +0 -1
- package/src/components/link-preview/LinkPreview.stories.tsx +0 -61
- package/src/components/link-preview/LinkPreview.test.tsx +0 -105
- package/src/components/link-preview/LinkPreview.tsx +0 -158
- package/src/components/link-preview/index.ts +0 -1
- package/src/components/list/List.stories.tsx +0 -116
- package/src/components/list/List.test.tsx +0 -18
- package/src/components/list/List.tsx +0 -104
- package/src/components/list/ListDivider.stories.tsx +0 -12
- package/src/components/list/ListDivider.test.tsx +0 -22
- package/src/components/list/ListDivider.tsx +0 -35
- package/src/components/list/ListItem.stories.tsx +0 -66
- package/src/components/list/ListItem.test.tsx +0 -93
- package/src/components/list/ListItem.tsx +0 -157
- package/src/components/list/ListSubheader.stories.tsx +0 -11
- package/src/components/list/ListSubheader.test.tsx +0 -21
- package/src/components/list/ListSubheader.tsx +0 -44
- package/src/components/list/index.ts +0 -4
- package/src/components/list/useInteractiveList.tsx +0 -202
- package/src/components/message/Message.stories.tsx +0 -72
- package/src/components/message/Message.test.tsx +0 -76
- package/src/components/message/Message.tsx +0 -100
- package/src/components/message/index.ts +0 -1
- package/src/components/mosaic/Mosaic.stories.tsx +0 -89
- package/src/components/mosaic/Mosaic.test.tsx +0 -77
- package/src/components/mosaic/Mosaic.tsx +0 -98
- package/src/components/mosaic/index.ts +0 -1
- package/src/components/navigation/Navigation.stories.tsx +0 -234
- package/src/components/navigation/Navigation.test.tsx +0 -65
- package/src/components/navigation/Navigation.tsx +0 -79
- package/src/components/navigation/NavigationItem.test.tsx +0 -35
- package/src/components/navigation/NavigationItem.tsx +0 -82
- package/src/components/navigation/NavigationSection.test.tsx +0 -137
- package/src/components/navigation/NavigationSection.tsx +0 -108
- package/src/components/navigation/context.tsx +0 -7
- package/src/components/navigation/index.ts +0 -1
- package/src/components/notification/Notification.test.tsx +0 -94
- package/src/components/notification/Notification.tsx +0 -138
- package/src/components/notification/Notifications.stories.tsx +0 -92
- package/src/components/notification/constants.ts +0 -28
- package/src/components/notification/index.ts +0 -1
- package/src/components/popover/Popover.stories.tsx +0 -264
- package/src/components/popover/Popover.test.tsx +0 -62
- package/src/components/popover/Popover.tsx +0 -201
- package/src/components/popover/constants.ts +0 -62
- package/src/components/popover/index.ts +0 -3
- package/src/components/popover/usePopoverStyle.tsx +0 -184
- package/src/components/popover/useRestoreFocusOnClose.tsx +0 -47
- package/src/components/popover-dialog/PopoverDialog.stories.tsx +0 -64
- package/src/components/popover-dialog/PopoverDialog.test.tsx +0 -139
- package/src/components/popover-dialog/PopoverDialog.tsx +0 -74
- package/src/components/popover-dialog/index.tsx +0 -1
- package/src/components/post-block/PostBlock.test.tsx +0 -27
- package/src/components/post-block/PostBlock.tsx +0 -122
- package/src/components/post-block/index.ts +0 -1
- package/src/components/progress/Progress.tsx +0 -68
- package/src/components/progress/ProgressCircular.stories.tsx +0 -43
- package/src/components/progress/ProgressCircular.test.tsx +0 -46
- package/src/components/progress/ProgressCircular.tsx +0 -82
- package/src/components/progress/ProgressLinear.stories.tsx +0 -12
- package/src/components/progress/ProgressLinear.test.tsx +0 -30
- package/src/components/progress/ProgressLinear.tsx +0 -50
- package/src/components/progress/index.ts +0 -3
- package/src/components/progress-tracker/ProgressTracker.stories.tsx +0 -145
- package/src/components/progress-tracker/ProgressTracker.test.tsx +0 -42
- package/src/components/progress-tracker/ProgressTracker.tsx +0 -87
- package/src/components/progress-tracker/ProgressTrackerProvider.test.tsx +0 -65
- package/src/components/progress-tracker/ProgressTrackerProvider.tsx +0 -67
- package/src/components/progress-tracker/ProgressTrackerStep.test.tsx +0 -36
- package/src/components/progress-tracker/ProgressTrackerStep.tsx +0 -159
- package/src/components/progress-tracker/ProgressTrackerStepPanel.test.tsx +0 -34
- package/src/components/progress-tracker/ProgressTrackerStepPanel.tsx +0 -67
- package/src/components/progress-tracker/index.ts +0 -4
- package/src/components/radio-button/RadioButton.stories.tsx +0 -71
- package/src/components/radio-button/RadioButton.test.tsx +0 -143
- package/src/components/radio-button/RadioButton.tsx +0 -143
- package/src/components/radio-button/RadioGroup.stories.tsx +0 -39
- package/src/components/radio-button/RadioGroup.test.tsx +0 -29
- package/src/components/radio-button/RadioGroup.tsx +0 -44
- package/src/components/radio-button/index.ts +0 -2
- package/src/components/select/Select.stories.tsx +0 -385
- package/src/components/select/Select.test.tsx +0 -199
- package/src/components/select/Select.tsx +0 -199
- package/src/components/select/SelectMultiple.stories.tsx +0 -315
- package/src/components/select/SelectMultiple.test.tsx +0 -213
- package/src/components/select/SelectMultiple.tsx +0 -206
- package/src/components/select/WithSelectContext.tsx +0 -147
- package/src/components/select/constants.ts +0 -55
- package/src/components/select/index.ts +0 -2
- package/src/components/side-navigation/SideNavigation.stories.tsx +0 -191
- package/src/components/side-navigation/SideNavigation.test.tsx +0 -37
- package/src/components/side-navigation/SideNavigation.tsx +0 -52
- package/src/components/side-navigation/SideNavigationItem.stories.tsx +0 -133
- package/src/components/side-navigation/SideNavigationItem.test.tsx +0 -136
- package/src/components/side-navigation/SideNavigationItem.tsx +0 -165
- package/src/components/side-navigation/index.ts +0 -2
- package/src/components/skeleton/SkeletonCircle.stories.tsx +0 -41
- package/src/components/skeleton/SkeletonCircle.test.tsx +0 -27
- package/src/components/skeleton/SkeletonCircle.tsx +0 -52
- package/src/components/skeleton/SkeletonRectangle.stories.tsx +0 -82
- package/src/components/skeleton/SkeletonRectangle.test.tsx +0 -27
- package/src/components/skeleton/SkeletonRectangle.tsx +0 -88
- package/src/components/skeleton/SkeletonTypography.stories.tsx +0 -19
- package/src/components/skeleton/SkeletonTypography.test.tsx +0 -27
- package/src/components/skeleton/SkeletonTypography.tsx +0 -59
- package/src/components/skeleton/index.ts +0 -3
- package/src/components/slider/Slider.stories.tsx +0 -45
- package/src/components/slider/Slider.test.tsx +0 -29
- package/src/components/slider/Slider.tsx +0 -299
- package/src/components/slider/index.ts +0 -2
- package/src/components/slideshow/Slides.tsx +0 -130
- package/src/components/slideshow/Slideshow.stories.tsx +0 -179
- package/src/components/slideshow/Slideshow.test.tsx +0 -35
- package/src/components/slideshow/Slideshow.tsx +0 -173
- package/src/components/slideshow/SlideshowControls.stories.tsx +0 -100
- package/src/components/slideshow/SlideshowControls.tsx +0 -243
- package/src/components/slideshow/SlideshowItem.tsx +0 -44
- package/src/components/slideshow/SlideshowItemGroup.tsx +0 -60
- package/src/components/slideshow/constants.ts +0 -24
- package/src/components/slideshow/index.ts +0 -4
- package/src/components/slideshow/useKeyNavigate.ts +0 -28
- package/src/components/slideshow/usePaginationVisibleRange.ts +0 -37
- package/src/components/slideshow/useSlideFocusManagement.tsx +0 -92
- package/src/components/slideshow/useSwipeNavigate.ts +0 -18
- package/src/components/switch/Switch.stories.tsx +0 -49
- package/src/components/switch/Switch.test.tsx +0 -144
- package/src/components/switch/Switch.tsx +0 -145
- package/src/components/switch/index.ts +0 -1
- package/src/components/table/Table.test.tsx +0 -29
- package/src/components/table/Table.tsx +0 -59
- package/src/components/table/TableBody.test.tsx +0 -30
- package/src/components/table/TableBody.tsx +0 -42
- package/src/components/table/TableCell.test.tsx +0 -72
- package/src/components/table/TableCell.tsx +0 -130
- package/src/components/table/TableHeader.test.tsx +0 -30
- package/src/components/table/TableHeader.tsx +0 -48
- package/src/components/table/TableRow.test.tsx +0 -40
- package/src/components/table/TableRow.tsx +0 -71
- package/src/components/table/index.ts +0 -5
- package/src/components/tabs/Tab.test.tsx +0 -50
- package/src/components/tabs/Tab.tsx +0 -133
- package/src/components/tabs/TabList.test.tsx +0 -49
- package/src/components/tabs/TabList.tsx +0 -94
- package/src/components/tabs/TabPanel.test.tsx +0 -37
- package/src/components/tabs/TabPanel.tsx +0 -67
- package/src/components/tabs/TabProvider.test.tsx +0 -161
- package/src/components/tabs/TabProvider.tsx +0 -67
- package/src/components/tabs/Tabs.stories.tsx +0 -170
- package/src/components/tabs/index.ts +0 -4
- package/src/components/tabs/state.ts +0 -114
- package/src/components/tabs/test-utils.ts +0 -39
- package/src/components/text/Text.stories.tsx +0 -177
- package/src/components/text/Text.test.tsx +0 -92
- package/src/components/text/Text.tsx +0 -139
- package/src/components/text/index.ts +0 -1
- package/src/components/text-field/TextField.stories.tsx +0 -180
- package/src/components/text-field/TextField.test.tsx +0 -298
- package/src/components/text-field/TextField.tsx +0 -493
- package/src/components/text-field/index.ts +0 -1
- package/src/components/thumbnail/Thumbnail.stories.tsx +0 -448
- package/src/components/thumbnail/Thumbnail.test.tsx +0 -88
- package/src/components/thumbnail/Thumbnail.tsx +0 -248
- package/src/components/thumbnail/index.ts +0 -3
- package/src/components/thumbnail/types.ts +0 -48
- package/src/components/thumbnail/useFocusPointStyle.test.ts +0 -92
- package/src/components/thumbnail/useFocusPointStyle.tsx +0 -107
- package/src/components/thumbnail/useImageLoad.ts +0 -40
- package/src/components/toolbar/Toolbar.tsx +0 -68
- package/src/components/toolbar/index.ts +0 -1
- package/src/components/tooltip/Tooltip.stories.tsx +0 -118
- package/src/components/tooltip/Tooltip.test.tsx +0 -417
- package/src/components/tooltip/Tooltip.tsx +0 -165
- package/src/components/tooltip/constants.ts +0 -8
- package/src/components/tooltip/context.tsx +0 -17
- package/src/components/tooltip/index.ts +0 -1
- package/src/components/tooltip/useInjectTooltipRef.tsx +0 -55
- package/src/components/tooltip/useTooltipOpen.tsx +0 -143
- package/src/components/uploader/Uploader.stories.tsx +0 -109
- package/src/components/uploader/Uploader.test.tsx +0 -146
- package/src/components/uploader/Uploader.tsx +0 -177
- package/src/components/uploader/index.ts +0 -1
- package/src/components/user-block/UserBlock.stories.tsx +0 -133
- package/src/components/user-block/UserBlock.test.tsx +0 -106
- package/src/components/user-block/UserBlock.tsx +0 -193
- package/src/components/user-block/index.ts +0 -1
- package/src/constants.ts +0 -27
- package/src/hooks/useBooleanState.tsx +0 -13
- package/src/hooks/useCallbackOnEscape.ts +0 -34
- package/src/hooks/useChipGroupNavigation.tsx +0 -75
- package/src/hooks/useClickAway.tsx +0 -48
- package/src/hooks/useDisableBodyScroll.ts +0 -28
- package/src/hooks/useEventCallback.tsx +0 -17
- package/src/hooks/useFocus.tsx +0 -21
- package/src/hooks/useFocusTrap.ts +0 -93
- package/src/hooks/useFocusWithin.ts +0 -33
- package/src/hooks/useId.test.tsx +0 -22
- package/src/hooks/useId.ts +0 -15
- package/src/hooks/useImageSize.ts +0 -17
- package/src/hooks/useInfiniteScroll.tsx +0 -60
- package/src/hooks/useIntersectionObserver.tsx +0 -43
- package/src/hooks/useInterval.tsx +0 -31
- package/src/hooks/useKeyboardListNavigation.tsx +0 -204
- package/src/hooks/useListenFocus.tsx +0 -26
- package/src/hooks/useOverflowTooltipLabel.tsx +0 -32
- package/src/hooks/usePopper.ts +0 -12
- package/src/hooks/usePreviousValue.ts +0 -12
- package/src/hooks/useRovingTabIndex.tsx +0 -90
- package/src/hooks/useSizeOnWindowResize.ts +0 -30
- package/src/hooks/useSlideshowControls.ts +0 -246
- package/src/hooks/useStopPropagation.ts +0 -21
- package/src/hooks/useTransitionVisibility.ts +0 -48
- package/src/index.ts +0 -63
- package/src/stories/controls/color.ts +0 -7
- package/src/stories/controls/element.ts +0 -6
- package/src/stories/controls/focusPoint.ts +0 -1
- package/src/stories/controls/icons.ts +0 -126
- package/src/stories/controls/image.ts +0 -84
- package/src/stories/controls/selectArgType.ts +0 -8
- package/src/stories/controls/theme.ts +0 -3
- package/src/stories/controls/typography.ts +0 -5
- package/src/stories/controls/withUndefined.ts +0 -1
- package/src/stories/decorators/withChromaticForceScreenSize.tsx +0 -7
- package/src/stories/decorators/withCombinations.tsx +0 -132
- package/src/stories/decorators/withNestedProps.tsx +0 -22
- package/src/stories/decorators/withResizableBox.tsx +0 -21
- package/src/stories/decorators/withThemedBackground.tsx +0 -16
- package/src/stories/decorators/withValueOnChange.tsx +0 -18
- package/src/stories/decorators/withWrapper.tsx +0 -19
- package/src/stories/generated/Autocomplete/Demos.stories.tsx +0 -7
- package/src/stories/generated/Avatar/Demos.stories.tsx +0 -7
- package/src/stories/generated/Badge/Demos.stories.tsx +0 -9
- package/src/stories/generated/Button/Demos.stories.tsx +0 -11
- package/src/stories/generated/Checkbox/Demos.stories.tsx +0 -6
- package/src/stories/generated/Chip/Demos.stories.tsx +0 -11
- package/src/stories/generated/CommentBlock/Demos.stories.tsx +0 -8
- package/src/stories/generated/DatePicker/Demos.stories.tsx +0 -8
- package/src/stories/generated/Dialog/Demos.stories.tsx +0 -10
- package/src/stories/generated/Divider/Demos.stories.tsx +0 -6
- package/src/stories/generated/Dropdown/Demos.stories.tsx +0 -8
- package/src/stories/generated/ExpansionPanel/Demos.stories.tsx +0 -9
- package/src/stories/generated/Flag/Demos.stories.tsx +0 -6
- package/src/stories/generated/GenericBlock/Demos.stories.tsx +0 -8
- package/src/stories/generated/Heading/Demos.stories.tsx +0 -6
- package/src/stories/generated/Icon/Demos.stories.tsx +0 -8
- package/src/stories/generated/ImageBlock/Demos.stories.tsx +0 -9
- package/src/stories/generated/ImageLightbox/Demos.stories.tsx +0 -6
- package/src/stories/generated/Lightbox/Demos.stories.tsx +0 -6
- package/src/stories/generated/LinkPreview/Demos.stories.tsx +0 -7
- package/src/stories/generated/List/Demos.stories.tsx +0 -11
- package/src/stories/generated/Message/Demos.stories.tsx +0 -11
- package/src/stories/generated/Mosaic/Demos.stories.tsx +0 -10
- package/src/stories/generated/Notification/Demos.stories.tsx +0 -6
- package/src/stories/generated/Popover/Demos.stories.tsx +0 -11
- package/src/stories/generated/PopoverDialog/Demos.stories.tsx +0 -6
- package/src/stories/generated/PostBlock/Demos.stories.tsx +0 -6
- package/src/stories/generated/Progress/Demos.stories.tsx +0 -7
- package/src/stories/generated/ProgressTracker/Demos.stories.tsx +0 -9
- package/src/stories/generated/RadioButton/Demos.stories.tsx +0 -6
- package/src/stories/generated/Select/Demos.stories.tsx +0 -14
- package/src/stories/generated/SideNavigation/Demos.stories.tsx +0 -10
- package/src/stories/generated/Skeleton/Demos.stories.tsx +0 -9
- package/src/stories/generated/Slider/Demos.stories.tsx +0 -9
- package/src/stories/generated/Slideshow/Demos.stories.tsx +0 -8
- package/src/stories/generated/Switch/Demos.stories.tsx +0 -6
- package/src/stories/generated/Table/Demos.stories.tsx +0 -7
- package/src/stories/generated/Tabs/Demos.stories.tsx +0 -8
- package/src/stories/generated/TextField/Demos.stories.tsx +0 -20
- package/src/stories/generated/Thumbnail/Demos.stories.tsx +0 -12
- package/src/stories/generated/Toolbar/Demos.stories.tsx +0 -10
- package/src/stories/generated/Tooltip/Demos.stories.tsx +0 -8
- package/src/stories/generated/Uploader/Demos.stories.tsx +0 -8
- package/src/stories/generated/UserBlock/Demos.stories.tsx +0 -11
- package/src/stories/utils/CustomLink.tsx +0 -12
- package/src/stories/utils/concatPath.tsx +0 -17
- package/src/stories/utils/disableArgTypes.ts +0 -3
- package/src/stories/utils/initDemoShadowDOMPortal.ts +0 -10
- package/src/stories/utils/lorem.ts +0 -59
- package/src/stories/utils/theming.tsx +0 -166
- package/src/stories/utils/toFlattenProps.ts +0 -28
- package/src/stories/utils/withCategory.ts +0 -12
- package/src/testing/utils/ThemeSentinel.tsx +0 -10
- package/src/testing/utils/commonTestsSuiteRTL.tsx +0 -193
- package/src/testing/utils/index.ts +0 -1
- package/src/testing/utils/queries.ts +0 -19
- package/src/untypped-modules.d.ts +0 -9
- package/src/utils/ClickAwayProvider/ClickAwayProvider.stories.jsx +0 -70
- package/src/utils/ClickAwayProvider/ClickAwayProvider.tsx +0 -69
- package/src/utils/ClickAwayProvider/index.ts +0 -1
- package/src/utils/MaterialThemeSwitcher/MaterialThemeSwitcher.tsx +0 -54
- package/src/utils/MaterialThemeSwitcher/index.ts +0 -1
- package/src/utils/Portal/Portal.test.tsx +0 -31
- package/src/utils/Portal/Portal.tsx +0 -33
- package/src/utils/Portal/PortalProvider.stories.jsx +0 -22
- package/src/utils/Portal/PortalProvider.test.tsx +0 -72
- package/src/utils/Portal/PortalProvider.tsx +0 -24
- package/src/utils/Portal/index.tsx +0 -2
- package/src/utils/browser/DOM/findImage.tsx +0 -3
- package/src/utils/browser/DOM/startViewTransition.ts +0 -68
- package/src/utils/browser/focus/constants.ts +0 -7
- package/src/utils/browser/focus/getFirstAndLastFocusable.test.ts +0 -134
- package/src/utils/browser/focus/getFirstAndLastFocusable.ts +0 -21
- package/src/utils/browser/focus/getFocusableElements.test.ts +0 -151
- package/src/utils/browser/focus/getFocusableElements.ts +0 -7
- package/src/utils/browser/isFocusVisible.ts +0 -9
- package/src/utils/browser/isHoverNotSupported.test.js +0 -24
- package/src/utils/browser/isHoverNotSupported.ts +0 -2
- package/src/utils/browser/isReducedMotion.ts +0 -6
- package/src/utils/date/addMonthResetDay.test.ts +0 -13
- package/src/utils/date/addMonthResetDay.ts +0 -9
- package/src/utils/date/formatDayNumber.test.ts +0 -12
- package/src/utils/date/formatDayNumber.ts +0 -5
- package/src/utils/date/getFirstDayOfWeek.test.ts +0 -20
- package/src/utils/date/getFirstDayOfWeek.ts +0 -59
- package/src/utils/date/getMonthCalendar.test.ts +0 -127
- package/src/utils/date/getMonthCalendar.ts +0 -69
- package/src/utils/date/getWeekDays.test.ts +0 -48
- package/src/utils/date/getWeekDays.ts +0 -34
- package/src/utils/date/getYearDisplayName.test.ts +0 -20
- package/src/utils/date/getYearDisplayName.ts +0 -12
- package/src/utils/date/isDateValid.test.ts +0 -15
- package/src/utils/date/isDateValid.ts +0 -4
- package/src/utils/date/isSameDay.test.ts +0 -37
- package/src/utils/date/isSameDay.ts +0 -11
- package/src/utils/disabled/DisabledStateContext.tsx +0 -29
- package/src/utils/disabled/DisabledStateProvider.stories.tsx +0 -92
- package/src/utils/disabled/index.ts +0 -2
- package/src/utils/disabled/useDisableStateProps.test.tsx +0 -74
- package/src/utils/disabled/useDisableStateProps.tsx +0 -37
- package/src/utils/function/makeListenerTowerContext.ts +0 -32
- package/src/utils/index.ts +0 -7
- package/src/utils/locale/getCurrentLocale.ts +0 -4
- package/src/utils/locale/parseLocale.test.ts +0 -17
- package/src/utils/locale/parseLocale.ts +0 -23
- package/src/utils/locale/types.ts +0 -8
- package/src/utils/number/clamp.ts +0 -17
- package/src/utils/object/isEqual.test.ts +0 -25
- package/src/utils/object/isEqual.ts +0 -11
- package/src/utils/partitionMulti.test.ts +0 -27
- package/src/utils/react/OnBeforeUnmount.tsx +0 -20
- package/src/utils/react/RawClickable.test.tsx +0 -153
- package/src/utils/react/RawClickable.tsx +0 -65
- package/src/utils/react/flattenChildren.ts +0 -32
- package/src/utils/react/forwardRef.ts +0 -11
- package/src/utils/react/forwardRefPolymorphic.ts +0 -9
- package/src/utils/react/mergeRefs.ts +0 -33
- package/src/utils/react/renderLink.tsx +0 -17
- package/src/utils/react/skipRender.tsx +0 -18
- package/src/utils/react/unref.ts +0 -7
- package/src/utils/react/wrapChildrenIconWithSpaces.test.tsx +0 -37
- package/src/utils/react/wrapChildrenIconWithSpaces.tsx +0 -22
- package/src/utils/theme/ThemeContext.ts +0 -16
- package/src/utils/theme/invertTheme.ts +0 -4
- package/src/utils/type/Comp.ts +0 -14
- package/src/utils/type/ComponentRef.ts +0 -16
- package/src/utils/type/HasAriaDisabled.ts +0 -6
- package/src/utils/type/HasPolymorphicAs.ts +0 -6
- package/src/utils/type/HasRequiredLinkHref.ts +0 -1
- package/src/utils/type/MaybeElementOrRef.ts +0 -6
- package/src/utils/type/index.ts +0 -9
- package/src/utils/type/isComponent.ts +0 -33
- package/src/utils/type/isComponentType.ts +0 -9
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { f as forwardRef, c as classNames } from './forwardRef-15f62847.js';
|
|
2
|
+
import isEmpty from 'lodash/isEmpty';
|
|
3
|
+
import { i as isComponent } from './isComponent-78df9309.js';
|
|
4
|
+
import { getRootClassName, getBasicClass } from '@lumx/core/js/utils/className';
|
|
5
|
+
import { u as useTheme, T as ThemeProvider } from './ThemeContext-3181f000.js';
|
|
6
|
+
import { B as ButtonRoot } from './ButtonRoot-823f3e9c.js';
|
|
7
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
8
|
+
import { T as Text } from './index-b06353f2.js';
|
|
9
|
+
import { Emphasis, Size, Theme } from '@lumx/core/js/constants';
|
|
10
|
+
import { I as Icon } from './index-192f8ada.js';
|
|
11
|
+
|
|
12
|
+
const ButtonEmphasis = Emphasis;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Defines the props of the component.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Component display name.
|
|
20
|
+
*/
|
|
21
|
+
const COMPONENT_NAME = 'Button';
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Component default class name and class prefix.
|
|
25
|
+
*/
|
|
26
|
+
const CLASSNAME = getRootClassName(COMPONENT_NAME);
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Component default props.
|
|
30
|
+
*/
|
|
31
|
+
const DEFAULT_PROPS = {
|
|
32
|
+
emphasis: Emphasis.high,
|
|
33
|
+
size: Size.m
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Button component.
|
|
38
|
+
*
|
|
39
|
+
* @param props Component props.
|
|
40
|
+
* @param ref Component ref.
|
|
41
|
+
* @return React element.
|
|
42
|
+
*/
|
|
43
|
+
const Button = forwardRef((props, ref) => {
|
|
44
|
+
const defaultTheme = useTheme() || Theme.light;
|
|
45
|
+
const {
|
|
46
|
+
children,
|
|
47
|
+
className,
|
|
48
|
+
emphasis = DEFAULT_PROPS.emphasis,
|
|
49
|
+
leftIcon,
|
|
50
|
+
rightIcon,
|
|
51
|
+
size = DEFAULT_PROPS.size,
|
|
52
|
+
theme = defaultTheme,
|
|
53
|
+
...forwardedProps
|
|
54
|
+
} = props;
|
|
55
|
+
const buttonClassName = classNames(className, getBasicClass({
|
|
56
|
+
prefix: CLASSNAME,
|
|
57
|
+
type: 'hasLeftIcon',
|
|
58
|
+
value: !isEmpty(leftIcon)
|
|
59
|
+
}), getBasicClass({
|
|
60
|
+
prefix: CLASSNAME,
|
|
61
|
+
type: 'hasRightIcon',
|
|
62
|
+
value: !isEmpty(rightIcon)
|
|
63
|
+
}));
|
|
64
|
+
return /*#__PURE__*/jsxs(ButtonRoot, {
|
|
65
|
+
ref: ref,
|
|
66
|
+
emphasis,
|
|
67
|
+
size,
|
|
68
|
+
theme,
|
|
69
|
+
...forwardedProps,
|
|
70
|
+
className: buttonClassName,
|
|
71
|
+
variant: "button",
|
|
72
|
+
children: [leftIcon && !isEmpty(leftIcon) &&
|
|
73
|
+
/*#__PURE__*/
|
|
74
|
+
// Theme is handled in the button scss
|
|
75
|
+
jsx(ThemeProvider, {
|
|
76
|
+
value: undefined,
|
|
77
|
+
children: /*#__PURE__*/jsx(Icon, {
|
|
78
|
+
icon: leftIcon
|
|
79
|
+
})
|
|
80
|
+
}), children && (isComponent(Text)(children) ? children : /*#__PURE__*/jsx("span", {
|
|
81
|
+
children: children
|
|
82
|
+
})), rightIcon && !isEmpty(rightIcon) &&
|
|
83
|
+
/*#__PURE__*/
|
|
84
|
+
// Theme is handled in the button scss
|
|
85
|
+
jsx(ThemeProvider, {
|
|
86
|
+
value: undefined,
|
|
87
|
+
children: /*#__PURE__*/jsx(Icon, {
|
|
88
|
+
icon: rightIcon
|
|
89
|
+
})
|
|
90
|
+
})]
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
Button.displayName = COMPONENT_NAME;
|
|
94
|
+
Button.className = CLASSNAME;
|
|
95
|
+
Button.defaultProps = DEFAULT_PROPS;
|
|
96
|
+
|
|
97
|
+
export { ButtonEmphasis as B, Button as a };
|
|
98
|
+
//# sourceMappingURL=Button-85482487.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button-85482487.js","sources":["../../src/components/button/Button.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport isEmpty from 'lodash/isEmpty';\n\nimport { Emphasis, Icon, Size, Theme, Text, ThemeProvider } from '@lumx/react';\nimport { isComponent } from '@lumx/react/utils/type';\nimport { getBasicClass, getRootClassName } from '@lumx/core/js/utils/className';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { BaseButtonProps, ButtonRoot } from './ButtonRoot';\n\n/**\n * Button emphasis definition.\n * @deprecated Use Emphasis instead.\n */\nexport const ButtonEmphasis = Emphasis;\n\n/**\n * Defines the props of the component.\n */\nexport interface ButtonProps extends BaseButtonProps {\n /** Left icon (SVG path). */\n leftIcon?: string;\n /** Right icon (SVG path). */\n rightIcon?: string;\n /** When `true`, the button gets as large as possible. */\n fullWidth?: boolean;\n /** Children */\n children?: React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Button';\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<ButtonProps> = {\n emphasis: Emphasis.high,\n size: Size.m,\n};\n\n/**\n * Button component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Button = forwardRef<ButtonProps, HTMLButtonElement | HTMLAnchorElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n children,\n className,\n emphasis = DEFAULT_PROPS.emphasis,\n leftIcon,\n rightIcon,\n size = DEFAULT_PROPS.size,\n theme = defaultTheme,\n ...forwardedProps\n } = props;\n\n const buttonClassName = classNames(\n className,\n getBasicClass({ prefix: CLASSNAME, type: 'hasLeftIcon', value: !isEmpty(leftIcon) }),\n getBasicClass({ prefix: CLASSNAME, type: 'hasRightIcon', value: !isEmpty(rightIcon) }),\n );\n\n return (\n <ButtonRoot\n ref={ref}\n {...{ emphasis, size, theme, ...forwardedProps }}\n className={buttonClassName}\n variant=\"button\"\n >\n {leftIcon && !isEmpty(leftIcon) && (\n // Theme is handled in the button scss\n <ThemeProvider value={undefined}>\n <Icon icon={leftIcon} />\n </ThemeProvider>\n )}\n {children && (isComponent(Text)(children) ? children : <span>{children}</span>)}\n {rightIcon && !isEmpty(rightIcon) && (\n // Theme is handled in the button scss\n <ThemeProvider value={undefined}>\n <Icon icon={rightIcon} />\n </ThemeProvider>\n )}\n </ButtonRoot>\n );\n});\nButton.displayName = COMPONENT_NAME;\nButton.className = CLASSNAME;\nButton.defaultProps = DEFAULT_PROPS;\n"],"names":["ButtonEmphasis","Emphasis","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","emphasis","high","size","Size","m","Button","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","children","className","leftIcon","rightIcon","theme","forwardedProps","buttonClassName","classNames","getBasicClass","prefix","type","value","isEmpty","_jsxs","ButtonRoot","variant","_jsx","ThemeProvider","undefined","Icon","icon","isComponent","Text","displayName","defaultProps"],"mappings":";;;;;;;;;;;AAeO,MAAMA,cAAc,GAAGC,SAAQ;;AAEtC;AACA;AACA;;AAYA;AACA;AACA;AACA,MAAMC,cAAc,GAAG,QAAQ,CAAA;;AAE/B;AACA;AACA;AACA,MAAMC,SAAS,GAAGC,gBAAgB,CAACF,cAAc,CAAC,CAAA;;AAElD;AACA;AACA;AACA,MAAMG,aAAmC,GAAG;EACxCC,QAAQ,EAAEL,QAAQ,CAACM,IAAI;EACvBC,IAAI,EAAEC,IAAI,CAACC,CAAAA;AACf,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,MAAM,GAAGC,UAAU,CAAqD,CAACC,KAAK,EAAEC,GAAG,KAAK;EACjG,MAAMC,YAAY,GAAGC,QAAQ,EAAE,IAAIC,KAAK,CAACC,KAAK,CAAA;EAC9C,MAAM;IACFC,QAAQ;IACRC,SAAS;IACTd,QAAQ,GAAGD,aAAa,CAACC,QAAQ;IACjCe,QAAQ;IACRC,SAAS;IACTd,IAAI,GAAGH,aAAa,CAACG,IAAI;AACzBe,IAAAA,KAAK,GAAGR,YAAY;IACpB,GAAGS,cAAAA;AACP,GAAC,GAAGX,KAAK,CAAA;AAET,EAAA,MAAMY,eAAe,GAAGC,UAAU,CAC9BN,SAAS,EACTO,aAAa,CAAC;AAAEC,IAAAA,MAAM,EAAEzB,SAAS;AAAE0B,IAAAA,IAAI,EAAE,aAAa;AAAEC,IAAAA,KAAK,EAAE,CAACC,OAAO,CAACV,QAAQ,CAAA;GAAG,CAAC,EACpFM,aAAa,CAAC;AAAEC,IAAAA,MAAM,EAAEzB,SAAS;AAAE0B,IAAAA,IAAI,EAAE,cAAc;AAAEC,IAAAA,KAAK,EAAE,CAACC,OAAO,CAACT,SAAS,CAAA;AAAE,GAAC,CACzF,CAAC,CAAA;EAED,oBACIU,IAAA,CAACC,UAAU,EAAA;AACPnB,IAAAA,GAAG,EAAEA,GAAI;IACHR,QAAQ;IAAEE,IAAI;IAAEe,KAAK;AAAE,IAAA,GAAGC,cAAc;AAC9CJ,IAAAA,SAAS,EAAEK,eAAgB;AAC3BS,IAAAA,OAAO,EAAC,QAAQ;AAAAf,IAAAA,QAAA,GAEfE,QAAQ,IAAI,CAACU,OAAO,CAACV,QAAQ,CAAC;AAAA;AAC3B;AACAc,IAAAA,GAAA,CAACC,aAAa,EAAA;AAACN,MAAAA,KAAK,EAAEO,SAAU;MAAAlB,QAAA,eAC5BgB,GAAA,CAACG,IAAI,EAAA;AAACC,QAAAA,IAAI,EAAElB,QAAAA;OAAW,CAAA;AAAC,KACb,CAClB,EACAF,QAAQ,KAAKqB,WAAW,CAACC,IAAI,CAAC,CAACtB,QAAQ,CAAC,GAAGA,QAAQ,gBAAGgB,GAAA,CAAA,MAAA,EAAA;AAAAhB,MAAAA,QAAA,EAAOA,QAAAA;KAAe,CAAC,CAAC,EAC9EG,SAAS,IAAI,CAACS,OAAO,CAACT,SAAS,CAAC;AAAA;AAC7B;AACAa,IAAAA,GAAA,CAACC,aAAa,EAAA;AAACN,MAAAA,KAAK,EAAEO,SAAU;MAAAlB,QAAA,eAC5BgB,GAAA,CAACG,IAAI,EAAA;AAACC,QAAAA,IAAI,EAAEjB,SAAAA;OAAY,CAAA;AAAC,KACd,CAClB,CAAA;AAAA,GACO,CAAC,CAAA;AAErB,CAAC,EAAC;AACFX,MAAM,CAAC+B,WAAW,GAAGxC,cAAc,CAAA;AACnCS,MAAM,CAACS,SAAS,GAAGjB,SAAS,CAAA;AAC5BQ,MAAM,CAACgC,YAAY,GAAGtC,aAAa;;;;"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { f as forwardRef, c as classNames } from './forwardRef-15f62847.js';
|
|
2
|
+
import './constants-d0e3f49e.js';
|
|
3
|
+
import { handleBasicClasses } from '@lumx/core/js/utils/className';
|
|
4
|
+
import { R as RawClickable } from './RawClickable-2c2b6a89.js';
|
|
5
|
+
import { jsx } from 'react/jsx-runtime';
|
|
6
|
+
import { u as useDisableStateProps } from './useDisableStateProps-69e16b7c.js';
|
|
7
|
+
import { Emphasis, Theme, ColorPalette, CSS_PREFIX } from '@lumx/core/js/constants';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Component display name.
|
|
11
|
+
*/
|
|
12
|
+
const COMPONENT_NAME = 'ButtonRoot';
|
|
13
|
+
const BUTTON_WRAPPER_CLASSNAME = `${CSS_PREFIX}-button-wrapper`;
|
|
14
|
+
const BUTTON_CLASSNAME = `${CSS_PREFIX}-button`;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Render a button wrapper with the ButtonRoot inside.
|
|
18
|
+
*
|
|
19
|
+
* @param props Component props.
|
|
20
|
+
* @return React element.
|
|
21
|
+
*/
|
|
22
|
+
const renderButtonWrapper = props => {
|
|
23
|
+
const {
|
|
24
|
+
color,
|
|
25
|
+
emphasis,
|
|
26
|
+
variant,
|
|
27
|
+
fullWidth
|
|
28
|
+
} = props;
|
|
29
|
+
const adaptedColor = emphasis === Emphasis.low && (color === ColorPalette.light ? ColorPalette.dark : ColorPalette.light);
|
|
30
|
+
const wrapperClassName = classNames(handleBasicClasses({
|
|
31
|
+
color: adaptedColor,
|
|
32
|
+
prefix: BUTTON_WRAPPER_CLASSNAME,
|
|
33
|
+
variant,
|
|
34
|
+
fullWidth
|
|
35
|
+
}));
|
|
36
|
+
const buttonProps = {
|
|
37
|
+
...props,
|
|
38
|
+
hasBackground: false
|
|
39
|
+
};
|
|
40
|
+
return /*#__PURE__*/jsx("div", {
|
|
41
|
+
className: wrapperClassName,
|
|
42
|
+
children: /*#__PURE__*/jsx(ButtonRoot, {
|
|
43
|
+
...buttonProps
|
|
44
|
+
})
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* ButtonRoot component.
|
|
50
|
+
*
|
|
51
|
+
* @param props Component props.
|
|
52
|
+
* @param ref Component ref.
|
|
53
|
+
* @return React element.
|
|
54
|
+
*/
|
|
55
|
+
const ButtonRoot = forwardRef((props, ref) => {
|
|
56
|
+
const {
|
|
57
|
+
isAnyDisabled,
|
|
58
|
+
disabledStateProps,
|
|
59
|
+
otherProps
|
|
60
|
+
} = useDisableStateProps(props);
|
|
61
|
+
const {
|
|
62
|
+
'aria-label': ariaLabel,
|
|
63
|
+
children,
|
|
64
|
+
className,
|
|
65
|
+
color,
|
|
66
|
+
emphasis,
|
|
67
|
+
hasBackground,
|
|
68
|
+
isSelected,
|
|
69
|
+
isActive,
|
|
70
|
+
isFocused,
|
|
71
|
+
isHovered,
|
|
72
|
+
linkAs,
|
|
73
|
+
size,
|
|
74
|
+
theme,
|
|
75
|
+
variant,
|
|
76
|
+
fullWidth,
|
|
77
|
+
...forwardedProps
|
|
78
|
+
} = otherProps;
|
|
79
|
+
const adaptedColor = color || emphasis !== Emphasis.high && theme === Theme.dark && ColorPalette.light || emphasis === Emphasis.high && ColorPalette.primary || ColorPalette.dark;
|
|
80
|
+
if (hasBackground) {
|
|
81
|
+
return renderButtonWrapper({
|
|
82
|
+
...props,
|
|
83
|
+
ref,
|
|
84
|
+
variant,
|
|
85
|
+
color: adaptedColor
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
const buttonClassName = classNames(className, handleBasicClasses({
|
|
89
|
+
color: adaptedColor,
|
|
90
|
+
emphasis,
|
|
91
|
+
isSelected,
|
|
92
|
+
isDisabled: props.isDisabled || props['aria-disabled'],
|
|
93
|
+
isActive,
|
|
94
|
+
isFocused,
|
|
95
|
+
isHovered,
|
|
96
|
+
prefix: BUTTON_CLASSNAME,
|
|
97
|
+
size,
|
|
98
|
+
theme: emphasis === Emphasis.high && theme,
|
|
99
|
+
variant,
|
|
100
|
+
fullWidth
|
|
101
|
+
}));
|
|
102
|
+
return /*#__PURE__*/jsx(RawClickable, {
|
|
103
|
+
as: linkAs || (forwardedProps.href ? 'a' : 'button'),
|
|
104
|
+
...forwardedProps,
|
|
105
|
+
...disabledStateProps,
|
|
106
|
+
"aria-disabled": isAnyDisabled,
|
|
107
|
+
"aria-label": ariaLabel,
|
|
108
|
+
ref: ref,
|
|
109
|
+
className: buttonClassName,
|
|
110
|
+
children: children
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
ButtonRoot.displayName = COMPONENT_NAME;
|
|
114
|
+
ButtonRoot.defaultProps = {};
|
|
115
|
+
|
|
116
|
+
export { ButtonRoot as B };
|
|
117
|
+
//# sourceMappingURL=ButtonRoot-823f3e9c.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ButtonRoot-823f3e9c.js","sources":["../../src/components/button/ButtonRoot.tsx"],"sourcesContent":["import { AriaAttributes, ButtonHTMLAttributes, DetailedHTMLProps, RefObject } from 'react';\n\nimport classNames from 'classnames';\n\nimport { ColorPalette, Emphasis, Size, Theme } from '@lumx/react';\nimport { CSS_PREFIX } from '@lumx/react/constants';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\nimport { HasAriaDisabled } from '@lumx/react/utils/type/HasAriaDisabled';\nimport { RawClickable } from '@lumx/react/utils/react/RawClickable';\nimport { useDisableStateProps } from '@lumx/react/utils/disabled';\n\ntype HTMLButtonProps = DetailedHTMLProps<ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>;\n\n/**\n * Button size definition.\n */\nexport type ButtonSize = Extract<Size, 's' | 'm'>;\n\nexport interface BaseButtonProps\n extends GenericProps,\n Pick<AriaAttributes, 'aria-expanded' | 'aria-haspopup' | 'aria-pressed' | 'aria-label'>,\n HasTheme,\n HasAriaDisabled {\n /** Color variant. */\n color?: ColorPalette;\n /** Emphasis variant. */\n emphasis?: Emphasis;\n /** Whether or not the button has a background color in low emphasis. */\n hasBackground?: boolean;\n /** Native anchor href property. It determines whether the Button will be a <button> or an <a>. */\n href?: string;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Whether the component is selected or not (unsupported in `high` emphasis). */\n isSelected?: boolean;\n /** Native button name property. */\n name?: string;\n /** Size variant. */\n size?: ButtonSize;\n /** Native anchor target property. */\n target?: '_self' | '_blank' | '_parent' | '_top';\n /** Native button type. */\n type?: HTMLButtonProps['type'];\n /** Custom react component for the link (can be used to inject react router Link). */\n linkAs?: 'a' | any;\n}\n\nexport interface ButtonRootProps extends BaseButtonProps {\n variant: 'button' | 'icon';\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'ButtonRoot';\n\nexport const BUTTON_WRAPPER_CLASSNAME = `${CSS_PREFIX}-button-wrapper`;\nexport const BUTTON_CLASSNAME = `${CSS_PREFIX}-button`;\n\n/**\n * Render a button wrapper with the ButtonRoot inside.\n *\n * @param props Component props.\n * @return React element.\n */\nconst renderButtonWrapper: React.FC<ButtonRootProps> = (props) => {\n const { color, emphasis, variant, fullWidth } = props;\n\n const adaptedColor =\n emphasis === Emphasis.low && (color === ColorPalette.light ? ColorPalette.dark : ColorPalette.light);\n\n const wrapperClassName = classNames(\n handleBasicClasses({\n color: adaptedColor,\n prefix: BUTTON_WRAPPER_CLASSNAME,\n variant,\n fullWidth,\n }),\n );\n const buttonProps = { ...props, hasBackground: false };\n\n return (\n <div className={wrapperClassName}>\n {/* eslint-disable-next-line @typescript-eslint/no-use-before-define */}\n <ButtonRoot {...buttonProps} />\n </div>\n );\n};\n\n/**\n * ButtonRoot component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const ButtonRoot = forwardRef<ButtonRootProps, HTMLButtonElement | HTMLAnchorElement>((props, ref) => {\n const { isAnyDisabled, disabledStateProps, otherProps } = useDisableStateProps(props);\n const {\n 'aria-label': ariaLabel,\n children,\n className,\n color,\n emphasis,\n hasBackground,\n isSelected,\n isActive,\n isFocused,\n isHovered,\n linkAs,\n size,\n theme,\n variant,\n fullWidth,\n ...forwardedProps\n } = otherProps;\n\n const adaptedColor =\n color ||\n (emphasis !== Emphasis.high && theme === Theme.dark && ColorPalette.light) ||\n (emphasis === Emphasis.high && ColorPalette.primary) ||\n ColorPalette.dark;\n\n if (hasBackground) {\n return renderButtonWrapper({ ...props, ref, variant, color: adaptedColor });\n }\n\n const buttonClassName = classNames(\n className,\n handleBasicClasses({\n color: adaptedColor,\n emphasis,\n isSelected,\n isDisabled: props.isDisabled || props['aria-disabled'],\n isActive,\n isFocused,\n isHovered,\n prefix: BUTTON_CLASSNAME,\n size,\n theme: emphasis === Emphasis.high && theme,\n variant,\n fullWidth,\n }),\n );\n\n return (\n <RawClickable\n as={linkAs || (forwardedProps.href ? 'a' : 'button')}\n {...forwardedProps}\n {...disabledStateProps}\n aria-disabled={isAnyDisabled}\n aria-label={ariaLabel}\n ref={ref as RefObject<HTMLButtonElement>}\n className={buttonClassName}\n >\n {children}\n </RawClickable>\n );\n});\nButtonRoot.displayName = COMPONENT_NAME;\nButtonRoot.defaultProps = {};\n"],"names":["COMPONENT_NAME","BUTTON_WRAPPER_CLASSNAME","CSS_PREFIX","BUTTON_CLASSNAME","renderButtonWrapper","props","color","emphasis","variant","fullWidth","adaptedColor","Emphasis","low","ColorPalette","light","dark","wrapperClassName","classNames","handleBasicClasses","prefix","buttonProps","hasBackground","_jsx","className","children","ButtonRoot","forwardRef","ref","isAnyDisabled","disabledStateProps","otherProps","useDisableStateProps","ariaLabel","isSelected","isActive","isFocused","isHovered","linkAs","size","theme","forwardedProps","high","Theme","primary","buttonClassName","isDisabled","RawClickable","as","href","displayName","defaultProps"],"mappings":"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"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { f as forwardRef, c as classNames } from './forwardRef-15f62847.js';
|
|
2
|
+
import isFunction from 'lodash/isFunction';
|
|
3
|
+
import { useCallback } from 'react';
|
|
4
|
+
import { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';
|
|
5
|
+
import { onEnterPressed } from '@lumx/core/js/utils';
|
|
6
|
+
import { u as useTheme } from './ThemeContext-3181f000.js';
|
|
7
|
+
import { u as useDisableStateProps } from './useDisableStateProps-69e16b7c.js';
|
|
8
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
9
|
+
import { Size, Theme, ColorPalette } from '@lumx/core/js/constants';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Wrap mouse event handler to stop event propagation.
|
|
13
|
+
*
|
|
14
|
+
* @param handler The mouse handler to wrap.
|
|
15
|
+
* @return Mouse handler stopping propagation.
|
|
16
|
+
*/
|
|
17
|
+
function useStopPropagation(handler) {
|
|
18
|
+
return useCallback(evt => {
|
|
19
|
+
if (!evt || !isFunction(handler)) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
handler(evt);
|
|
23
|
+
evt.stopPropagation();
|
|
24
|
+
}, [handler]);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Component display name.
|
|
29
|
+
*/
|
|
30
|
+
const COMPONENT_NAME = 'Chip';
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Component default class name and class prefix.
|
|
34
|
+
*/
|
|
35
|
+
const CLASSNAME = getRootClassName(COMPONENT_NAME);
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Component default props.
|
|
39
|
+
*/
|
|
40
|
+
const DEFAULT_PROPS = {
|
|
41
|
+
size: Size.m
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Chip component.
|
|
46
|
+
*
|
|
47
|
+
* @param props Component props.
|
|
48
|
+
* @param ref Component ref.
|
|
49
|
+
* @return React element.
|
|
50
|
+
*/
|
|
51
|
+
const Chip = forwardRef((props, ref) => {
|
|
52
|
+
const defaultTheme = useTheme() || Theme.light;
|
|
53
|
+
const {
|
|
54
|
+
isAnyDisabled,
|
|
55
|
+
disabledStateProps,
|
|
56
|
+
otherProps
|
|
57
|
+
} = useDisableStateProps(props);
|
|
58
|
+
const {
|
|
59
|
+
after,
|
|
60
|
+
before,
|
|
61
|
+
children,
|
|
62
|
+
className,
|
|
63
|
+
color,
|
|
64
|
+
isClickable: propIsClickable,
|
|
65
|
+
isHighlighted,
|
|
66
|
+
isSelected,
|
|
67
|
+
onAfterClick,
|
|
68
|
+
onBeforeClick,
|
|
69
|
+
onClick,
|
|
70
|
+
size = DEFAULT_PROPS.size,
|
|
71
|
+
theme = defaultTheme,
|
|
72
|
+
href,
|
|
73
|
+
onKeyDown,
|
|
74
|
+
...forwardedProps
|
|
75
|
+
} = otherProps;
|
|
76
|
+
const hasAfterClick = isFunction(onAfterClick);
|
|
77
|
+
const hasBeforeClick = isFunction(onBeforeClick);
|
|
78
|
+
const hasOnClick = isFunction(props.onClick);
|
|
79
|
+
const isButton = hasOnClick && !href;
|
|
80
|
+
const isClickable = Boolean(hasOnClick) || Boolean(href) || propIsClickable;
|
|
81
|
+
|
|
82
|
+
// Adapt color to the theme.
|
|
83
|
+
const chipColor = color || (theme === Theme.light ? ColorPalette.dark : ColorPalette.light);
|
|
84
|
+
const handleOnBeforeClick = useStopPropagation(onBeforeClick);
|
|
85
|
+
const handleOnAfterClick = useStopPropagation(onAfterClick);
|
|
86
|
+
const handleKeyDown = evt => {
|
|
87
|
+
onKeyDown?.(evt);
|
|
88
|
+
if (hasOnClick) {
|
|
89
|
+
onEnterPressed(onClick)(evt);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
return (
|
|
93
|
+
/*#__PURE__*/
|
|
94
|
+
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
95
|
+
jsxs("a", {
|
|
96
|
+
role: isButton ? 'button' : undefined,
|
|
97
|
+
tabIndex: isClickable && !disabledStateProps.disabled ? 0 : undefined,
|
|
98
|
+
...forwardedProps,
|
|
99
|
+
href: !disabledStateProps.disabled ? href : undefined,
|
|
100
|
+
ref: ref,
|
|
101
|
+
className: classNames(className, handleBasicClasses({
|
|
102
|
+
clickable: isClickable,
|
|
103
|
+
color: chipColor,
|
|
104
|
+
isDisabled: isAnyDisabled,
|
|
105
|
+
hasAfter: Boolean(after),
|
|
106
|
+
hasBefore: Boolean(before),
|
|
107
|
+
highlighted: Boolean(isHighlighted),
|
|
108
|
+
prefix: CLASSNAME,
|
|
109
|
+
selected: Boolean(isSelected),
|
|
110
|
+
size,
|
|
111
|
+
unselected: Boolean(!isSelected)
|
|
112
|
+
})),
|
|
113
|
+
"aria-disabled": isClickable && isAnyDisabled || undefined,
|
|
114
|
+
onClick: hasOnClick ? onClick : undefined,
|
|
115
|
+
onKeyDown: handleKeyDown,
|
|
116
|
+
children: [before &&
|
|
117
|
+
/*#__PURE__*/
|
|
118
|
+
// eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
|
|
119
|
+
jsx("div", {
|
|
120
|
+
className: classNames(`${CLASSNAME}__before`, {
|
|
121
|
+
[`${CLASSNAME}__before--is-clickable`]: hasBeforeClick
|
|
122
|
+
}),
|
|
123
|
+
onClick: handleOnBeforeClick,
|
|
124
|
+
children: before
|
|
125
|
+
}), /*#__PURE__*/jsx("div", {
|
|
126
|
+
className: `${CLASSNAME}__label`,
|
|
127
|
+
children: children
|
|
128
|
+
}), after &&
|
|
129
|
+
/*#__PURE__*/
|
|
130
|
+
// eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
|
|
131
|
+
jsx("div", {
|
|
132
|
+
className: classNames(`${CLASSNAME}__after`, {
|
|
133
|
+
[`${CLASSNAME}__after--is-clickable`]: hasAfterClick
|
|
134
|
+
}),
|
|
135
|
+
onClick: handleOnAfterClick,
|
|
136
|
+
children: after
|
|
137
|
+
})]
|
|
138
|
+
})
|
|
139
|
+
);
|
|
140
|
+
});
|
|
141
|
+
Chip.displayName = COMPONENT_NAME;
|
|
142
|
+
Chip.className = CLASSNAME;
|
|
143
|
+
Chip.defaultProps = DEFAULT_PROPS;
|
|
144
|
+
|
|
145
|
+
export { Chip as C };
|
|
146
|
+
//# sourceMappingURL=Chip-a34f6905.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Chip-a34f6905.js","sources":["../../src/hooks/useStopPropagation.ts","../../src/components/chip/Chip.tsx"],"sourcesContent":["import isFunction from 'lodash/isFunction';\nimport { MouseEventHandler, useCallback } from 'react';\n\n/**\n * Wrap mouse event handler to stop event propagation.\n *\n * @param handler The mouse handler to wrap.\n * @return Mouse handler stopping propagation.\n */\nexport function useStopPropagation(handler?: MouseEventHandler): MouseEventHandler {\n return useCallback(\n (evt) => {\n if (!evt || !isFunction(handler)) {\n return;\n }\n handler(evt);\n evt.stopPropagation();\n },\n [handler],\n );\n}\n","import { MouseEventHandler, ReactNode } from 'react';\n\nimport classNames from 'classnames';\nimport isFunction from 'lodash/isFunction';\n\nimport { ColorPalette, Size, Theme } from '@lumx/react';\nimport { useStopPropagation } from '@lumx/react/hooks/useStopPropagation';\n\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { onEnterPressed } from '@lumx/core/js/utils';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { useDisableStateProps } from '@lumx/react/utils/disabled/useDisableStateProps';\nimport { HasAriaDisabled } from '@lumx/react/utils/type/HasAriaDisabled';\n\n/**\n * Chip sizes.\n */\ntype ChipSize = Extract<Size, 's' | 'm'>;\n\n/**\n * Defines the props of the component.\n */\nexport interface ChipProps extends GenericProps, HasTheme, HasAriaDisabled {\n /** A component to be rendered after the content. */\n after?: ReactNode;\n /** A component to be rendered before the content. */\n before?: ReactNode;\n /** Color variant. */\n color?: ColorPalette;\n /** Whether the component is clickable or not. */\n isClickable?: boolean;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Whether the chip is currently in a highlighted state or not. */\n isHighlighted?: boolean;\n /** Whether the component is selected or not. */\n isSelected?: boolean;\n /** Size variant. */\n size?: ChipSize;\n /** On \"after\" element clicked callback. */\n onAfterClick?: MouseEventHandler;\n /** On \"before\" element clicked callback. */\n onBeforeClick?: MouseEventHandler;\n /** Children */\n children?: React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Chip';\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<ChipProps> = {\n size: Size.m,\n};\n\n/**\n * Chip component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Chip = forwardRef<ChipProps, HTMLAnchorElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const { isAnyDisabled, disabledStateProps, otherProps } = useDisableStateProps(props);\n const {\n after,\n before,\n children,\n className,\n color,\n isClickable: propIsClickable,\n isHighlighted,\n isSelected,\n onAfterClick,\n onBeforeClick,\n onClick,\n size = DEFAULT_PROPS.size,\n theme = defaultTheme,\n href,\n onKeyDown,\n ...forwardedProps\n } = otherProps;\n const hasAfterClick = isFunction(onAfterClick);\n const hasBeforeClick = isFunction(onBeforeClick);\n const hasOnClick = isFunction(props.onClick);\n const isButton = hasOnClick && !href;\n const isClickable = Boolean(hasOnClick) || Boolean(href) || propIsClickable;\n\n // Adapt color to the theme.\n const chipColor = color || (theme === Theme.light ? ColorPalette.dark : ColorPalette.light);\n\n const handleOnBeforeClick = useStopPropagation(onBeforeClick);\n const handleOnAfterClick = useStopPropagation(onAfterClick);\n const handleKeyDown = (evt: React.KeyboardEvent) => {\n onKeyDown?.(evt);\n if (hasOnClick) {\n onEnterPressed(onClick)(evt);\n }\n };\n\n return (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <a\n role={isButton ? 'button' : undefined}\n tabIndex={isClickable && !disabledStateProps.disabled ? 0 : undefined}\n {...forwardedProps}\n href={!disabledStateProps.disabled ? href : undefined}\n ref={ref}\n className={classNames(\n className,\n handleBasicClasses({\n clickable: isClickable,\n color: chipColor,\n isDisabled: isAnyDisabled,\n hasAfter: Boolean(after),\n hasBefore: Boolean(before),\n highlighted: Boolean(isHighlighted),\n prefix: CLASSNAME,\n selected: Boolean(isSelected),\n size,\n unselected: Boolean(!isSelected),\n }),\n )}\n aria-disabled={(isClickable && isAnyDisabled) || undefined}\n onClick={hasOnClick ? onClick : undefined}\n onKeyDown={handleKeyDown}\n >\n {before && (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n <div\n className={classNames(`${CLASSNAME}__before`, {\n [`${CLASSNAME}__before--is-clickable`]: hasBeforeClick,\n })}\n onClick={handleOnBeforeClick}\n >\n {before}\n </div>\n )}\n <div className={`${CLASSNAME}__label`}>{children}</div>\n {after && (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n <div\n className={classNames(`${CLASSNAME}__after`, {\n [`${CLASSNAME}__after--is-clickable`]: hasAfterClick,\n })}\n onClick={handleOnAfterClick}\n >\n {after}\n </div>\n )}\n </a>\n );\n});\nChip.displayName = COMPONENT_NAME;\nChip.className = CLASSNAME;\nChip.defaultProps = DEFAULT_PROPS;\n"],"names":["useStopPropagation","handler","useCallback","evt","isFunction","stopPropagation","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","size","Size","m","Chip","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","isAnyDisabled","disabledStateProps","otherProps","useDisableStateProps","after","before","children","className","color","isClickable","propIsClickable","isHighlighted","isSelected","onAfterClick","onBeforeClick","onClick","theme","href","onKeyDown","forwardedProps","hasAfterClick","hasBeforeClick","hasOnClick","isButton","Boolean","chipColor","ColorPalette","dark","handleOnBeforeClick","handleOnAfterClick","handleKeyDown","onEnterPressed","_jsxs","role","undefined","tabIndex","disabled","classNames","handleBasicClasses","clickable","isDisabled","hasAfter","hasBefore","highlighted","prefix","selected","unselected","_jsx","displayName","defaultProps"],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { useEffect, useContext, useMemo, useRef, createContext } from 'react';
|
|
2
|
+
import isEmpty from 'lodash/isEmpty';
|
|
3
|
+
import { jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
const EVENT_TYPES = ['mousedown', 'touchstart'];
|
|
6
|
+
function isClickAway(targets, refs) {
|
|
7
|
+
// The targets elements are not contained in any of the listed element references.
|
|
8
|
+
return !refs.some(ref => targets.some(target => ref?.current?.contains(target)));
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Listen to clicks away from the given elements and callback the passed in function.
|
|
12
|
+
*
|
|
13
|
+
* Warning: If you need to detect click away on nested React portals, please use the `ClickAwayProvider` component.
|
|
14
|
+
*/
|
|
15
|
+
function useClickAway({
|
|
16
|
+
callback,
|
|
17
|
+
childrenRefs
|
|
18
|
+
}) {
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
const {
|
|
21
|
+
current: currentRefs
|
|
22
|
+
} = childrenRefs;
|
|
23
|
+
if (!callback || !currentRefs || isEmpty(currentRefs)) {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
const listener = evt => {
|
|
27
|
+
const targets = [evt.composedPath?.()[0], evt.target];
|
|
28
|
+
if (isClickAway(targets, currentRefs)) {
|
|
29
|
+
callback(evt);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
EVENT_TYPES.forEach(evtType => document.addEventListener(evtType, listener));
|
|
33
|
+
return () => {
|
|
34
|
+
EVENT_TYPES.forEach(evtType => document.removeEventListener(evtType, listener));
|
|
35
|
+
};
|
|
36
|
+
}, [callback, childrenRefs]);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const ClickAwayAncestorContext = /*#__PURE__*/createContext(null);
|
|
40
|
+
/**
|
|
41
|
+
* Component combining the `useClickAway` hook with a React context to hook into the React component tree and make sure
|
|
42
|
+
* we take into account both the DOM tree and the React tree to detect click away.
|
|
43
|
+
*
|
|
44
|
+
* @return the react component.
|
|
45
|
+
*/
|
|
46
|
+
const ClickAwayProvider = ({
|
|
47
|
+
children,
|
|
48
|
+
callback,
|
|
49
|
+
childrenRefs,
|
|
50
|
+
parentRef
|
|
51
|
+
}) => {
|
|
52
|
+
const parentContext = useContext(ClickAwayAncestorContext);
|
|
53
|
+
const currentContext = useMemo(() => {
|
|
54
|
+
const context = {
|
|
55
|
+
childrenRefs: [],
|
|
56
|
+
/**
|
|
57
|
+
* Add element refs to the current context and propagate to the parent context.
|
|
58
|
+
*/
|
|
59
|
+
addRefs(...newChildrenRefs) {
|
|
60
|
+
// Add element refs that should be considered as inside the click away context.
|
|
61
|
+
context.childrenRefs.push(...newChildrenRefs);
|
|
62
|
+
if (parentContext) {
|
|
63
|
+
// Also add then to the parent context
|
|
64
|
+
parentContext.addRefs(...newChildrenRefs);
|
|
65
|
+
if (parentRef) {
|
|
66
|
+
// The parent element is also considered as inside the parent click away context but not inside the current context
|
|
67
|
+
parentContext.addRefs(parentRef);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
return context;
|
|
73
|
+
}, [parentContext, parentRef]);
|
|
74
|
+
useEffect(() => {
|
|
75
|
+
const {
|
|
76
|
+
current: currentRefs
|
|
77
|
+
} = childrenRefs;
|
|
78
|
+
if (!currentRefs) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
currentContext.addRefs(...currentRefs);
|
|
82
|
+
}, [currentContext, childrenRefs]);
|
|
83
|
+
useClickAway({
|
|
84
|
+
callback,
|
|
85
|
+
childrenRefs: useRef(currentContext.childrenRefs)
|
|
86
|
+
});
|
|
87
|
+
return /*#__PURE__*/jsx(ClickAwayAncestorContext.Provider, {
|
|
88
|
+
value: currentContext,
|
|
89
|
+
children: children
|
|
90
|
+
});
|
|
91
|
+
};
|
|
92
|
+
ClickAwayProvider.displayName = 'ClickAwayProvider';
|
|
93
|
+
|
|
94
|
+
export { ClickAwayProvider as C };
|
|
95
|
+
//# sourceMappingURL=ClickAwayProvider-7093ba23.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClickAwayProvider-7093ba23.js","sources":["../../src/hooks/useClickAway.tsx","../../src/utils/ClickAwayProvider/ClickAwayProvider.tsx"],"sourcesContent":["import { RefObject, useEffect } from 'react';\n\nimport { Falsy } from '@lumx/react/utils/type';\n\nimport isEmpty from 'lodash/isEmpty';\n\nconst EVENT_TYPES = ['mousedown', 'touchstart'];\n\nfunction isClickAway(targets: HTMLElement[], refs: Array<RefObject<HTMLElement>>): boolean {\n // The targets elements are not contained in any of the listed element references.\n return !refs.some((ref) => targets.some((target) => ref?.current?.contains(target)));\n}\n\nexport interface ClickAwayParameters {\n /**\n * A callback function to call when the user clicks away from the elements.\n */\n callback: EventListener | Falsy;\n /**\n * Elements considered within the click away context (clicking outside them will trigger the click away callback).\n */\n childrenRefs: RefObject<Array<RefObject<HTMLElement>>>;\n}\n\n/**\n * Listen to clicks away from the given elements and callback the passed in function.\n *\n * Warning: If you need to detect click away on nested React portals, please use the `ClickAwayProvider` component.\n */\nexport function useClickAway({ callback, childrenRefs }: ClickAwayParameters): void {\n useEffect(() => {\n const { current: currentRefs } = childrenRefs;\n if (!callback || !currentRefs || isEmpty(currentRefs)) {\n return undefined;\n }\n const listener: EventListener = (evt) => {\n const targets = [evt.composedPath?.()[0], evt.target] as HTMLElement[];\n if (isClickAway(targets, currentRefs)) {\n callback(evt);\n }\n };\n\n EVENT_TYPES.forEach((evtType) => document.addEventListener(evtType, listener));\n return () => {\n EVENT_TYPES.forEach((evtType) => document.removeEventListener(evtType, listener));\n };\n }, [callback, childrenRefs]);\n}\n","import { createContext, RefObject, useContext, useEffect, useMemo, useRef } from 'react';\nimport { ClickAwayParameters, useClickAway } from '@lumx/react/hooks/useClickAway';\n\ninterface ContextValue {\n childrenRefs: Array<RefObject<HTMLElement>>;\n addRefs(...newChildrenRefs: Array<RefObject<HTMLElement>>): void;\n}\n\nconst ClickAwayAncestorContext = createContext<ContextValue | null>(null);\n\ninterface ClickAwayProviderProps extends ClickAwayParameters {\n /**\n * (Optional) Element that should be considered as part of the parent\n */\n parentRef?: RefObject<HTMLElement>;\n /**\n * Children\n */\n children?: React.ReactNode;\n}\n\n/**\n * Component combining the `useClickAway` hook with a React context to hook into the React component tree and make sure\n * we take into account both the DOM tree and the React tree to detect click away.\n *\n * @return the react component.\n */\nexport const ClickAwayProvider: React.FC<ClickAwayProviderProps> = ({\n children,\n callback,\n childrenRefs,\n parentRef,\n}) => {\n const parentContext = useContext(ClickAwayAncestorContext);\n const currentContext = useMemo(() => {\n const context: ContextValue = {\n childrenRefs: [],\n /**\n * Add element refs to the current context and propagate to the parent context.\n */\n addRefs(...newChildrenRefs) {\n // Add element refs that should be considered as inside the click away context.\n context.childrenRefs.push(...newChildrenRefs);\n\n if (parentContext) {\n // Also add then to the parent context\n parentContext.addRefs(...newChildrenRefs);\n if (parentRef) {\n // The parent element is also considered as inside the parent click away context but not inside the current context\n parentContext.addRefs(parentRef);\n }\n }\n },\n };\n return context;\n }, [parentContext, parentRef]);\n\n useEffect(() => {\n const { current: currentRefs } = childrenRefs;\n if (!currentRefs) {\n return;\n }\n currentContext.addRefs(...currentRefs);\n }, [currentContext, childrenRefs]);\n\n useClickAway({ callback, childrenRefs: useRef(currentContext.childrenRefs) });\n return <ClickAwayAncestorContext.Provider value={currentContext}>{children}</ClickAwayAncestorContext.Provider>;\n};\nClickAwayProvider.displayName = 'ClickAwayProvider';\n"],"names":["EVENT_TYPES","isClickAway","targets","refs","some","ref","target","current","contains","useClickAway","callback","childrenRefs","useEffect","currentRefs","isEmpty","undefined","listener","evt","composedPath","forEach","evtType","document","addEventListener","removeEventListener","ClickAwayAncestorContext","createContext","ClickAwayProvider","children","parentRef","parentContext","useContext","currentContext","useMemo","context","addRefs","newChildrenRefs","push","useRef","_jsx","Provider","value","displayName"],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React__default, { useContext } from 'react';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
|
|
4
|
+
const DisabledStateContext = /*#__PURE__*/React__default.createContext({
|
|
5
|
+
state: null
|
|
6
|
+
});
|
|
7
|
+
/**
|
|
8
|
+
* Disabled state provider.
|
|
9
|
+
* All nested LumX Design System components inherit this disabled state.
|
|
10
|
+
*/
|
|
11
|
+
function DisabledStateProvider({
|
|
12
|
+
children,
|
|
13
|
+
...value
|
|
14
|
+
}) {
|
|
15
|
+
return /*#__PURE__*/jsx(DisabledStateContext.Provider, {
|
|
16
|
+
value: value,
|
|
17
|
+
children: children
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Get DisabledState context value
|
|
23
|
+
*/
|
|
24
|
+
function useDisabledStateContext() {
|
|
25
|
+
return useContext(DisabledStateContext);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export { DisabledStateProvider as D, useDisabledStateContext as u };
|
|
29
|
+
//# sourceMappingURL=DisabledStateContext-ea04260d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DisabledStateContext-ea04260d.js","sources":["../../src/utils/disabled/DisabledStateContext.tsx"],"sourcesContent":["import React, { useContext } from 'react';\n\n/** Disable state */\ntype DisabledStateContextValue =\n | {\n state: 'disabled';\n }\n | { state: undefined | null };\n\nexport const DisabledStateContext = React.createContext<DisabledStateContextValue>({ state: null });\n\nexport type DisabledStateProviderProps = DisabledStateContextValue & {\n children: React.ReactNode;\n};\n\n/**\n * Disabled state provider.\n * All nested LumX Design System components inherit this disabled state.\n */\nexport function DisabledStateProvider({ children, ...value }: DisabledStateProviderProps) {\n return <DisabledStateContext.Provider value={value}>{children}</DisabledStateContext.Provider>;\n}\n\n/**\n * Get DisabledState context value\n */\nexport function useDisabledStateContext(): DisabledStateContextValue {\n return useContext(DisabledStateContext);\n}\n"],"names":["DisabledStateContext","React","createContext","state","DisabledStateProvider","children","value","_jsx","Provider","useDisabledStateContext","useContext"],"mappings":";;;AASO,MAAMA,oBAAoB,gBAAGC,cAAK,CAACC,aAAa,CAA4B;AAAEC,EAAAA,KAAK,EAAE,IAAA;AAAK,CAAC,CAAC,CAAA;AAMnG;AACA;AACA;AACA;AACO,SAASC,qBAAqBA,CAAC;EAAEC,QAAQ;EAAE,GAAGC,KAAAA;AAAkC,CAAC,EAAE;AACtF,EAAA,oBAAOC,GAAA,CAACP,oBAAoB,CAACQ,QAAQ,EAAA;AAACF,IAAAA,KAAK,EAAEA,KAAM;AAAAD,IAAAA,QAAA,EAAEA,QAAAA;AAAQ,GAAgC,CAAC,CAAA;AAClG,CAAA;;AAEA;AACA;AACA;AACO,SAASI,uBAAuBA,GAA8B;EACjE,OAAOC,UAAU,CAACV,oBAAoB,CAAC,CAAA;AAC3C;;;;"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Typography } from '@lumx/core/js/constants';
|
|
2
|
+
import React__default, { createContext } from 'react';
|
|
3
|
+
import { jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
/** The maximum authorized heading level. */
|
|
6
|
+
const MAX_HEADING_LEVEL = 6;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Typography to use by default depending on the heading level.
|
|
10
|
+
*/
|
|
11
|
+
const DEFAULT_TYPOGRAPHY_BY_LEVEL = {
|
|
12
|
+
h1: Typography.display1,
|
|
13
|
+
h2: Typography.headline,
|
|
14
|
+
h3: Typography.title,
|
|
15
|
+
h4: Typography.subtitle2,
|
|
16
|
+
h5: Typography.subtitle1,
|
|
17
|
+
h6: Typography.body2
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const defaultContext = {
|
|
21
|
+
level: 1,
|
|
22
|
+
headingElement: 'h1'
|
|
23
|
+
};
|
|
24
|
+
const HeadingLevelContext = /*#__PURE__*/createContext(defaultContext);
|
|
25
|
+
|
|
26
|
+
const useHeadingLevel = () => {
|
|
27
|
+
const {
|
|
28
|
+
level = 1,
|
|
29
|
+
headingElement = 'h1'
|
|
30
|
+
} = React__default.useContext(HeadingLevelContext);
|
|
31
|
+
return {
|
|
32
|
+
level,
|
|
33
|
+
headingElement
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Provide a new heading level context.
|
|
39
|
+
*/
|
|
40
|
+
const HeadingLevelProvider = ({
|
|
41
|
+
children,
|
|
42
|
+
level
|
|
43
|
+
}) => {
|
|
44
|
+
const {
|
|
45
|
+
level: contextLevel
|
|
46
|
+
} = useHeadingLevel();
|
|
47
|
+
const incrementedLevel = level || contextLevel + 1;
|
|
48
|
+
/** Don't allow a level beyond the maximum level. */
|
|
49
|
+
const nextLevel = incrementedLevel > MAX_HEADING_LEVEL ? MAX_HEADING_LEVEL : incrementedLevel;
|
|
50
|
+
const headingElement = `h${nextLevel}`;
|
|
51
|
+
return /*#__PURE__*/jsx(HeadingLevelContext.Provider, {
|
|
52
|
+
value: {
|
|
53
|
+
level: nextLevel,
|
|
54
|
+
headingElement
|
|
55
|
+
},
|
|
56
|
+
children: children
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export { DEFAULT_TYPOGRAPHY_BY_LEVEL as D, HeadingLevelProvider as H, useHeadingLevel as u };
|
|
61
|
+
//# sourceMappingURL=HeadingLevelProvider-ebdcb0c7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeadingLevelProvider-ebdcb0c7.js","sources":["../../src/components/heading/constants.ts","../../src/components/heading/context.tsx","../../src/components/heading/useHeadingLevel.tsx","../../src/components/heading/HeadingLevelProvider.tsx"],"sourcesContent":["import { Typography } from '@lumx/core/js/constants';\n\n/** The maximum authorized heading level. */\nexport const MAX_HEADING_LEVEL = 6;\n\n/**\n * Typography to use by default depending on the heading level.\n */\nexport const DEFAULT_TYPOGRAPHY_BY_LEVEL = {\n h1: Typography.display1,\n h2: Typography.headline,\n h3: Typography.title,\n h4: Typography.subtitle2,\n h5: Typography.subtitle1,\n h6: Typography.body2,\n};\n","import { HeadingElement } from '@lumx/react/utils/type';\nimport { createContext } from 'react';\n\ninterface HeadingLevelContext {\n /** The current level */\n level: number;\n /** The heading element matching the current level */\n headingElement: HeadingElement;\n}\n\nconst defaultContext: HeadingLevelContext = { level: 1, headingElement: 'h1' };\n\nexport const HeadingLevelContext = createContext<HeadingLevelContext>(defaultContext);\n","import React from 'react';\nimport { HeadingLevelContext } from './context';\n\nexport const useHeadingLevel = () => {\n const { level = 1, headingElement = 'h1' } = React.useContext(HeadingLevelContext);\n\n return { level, headingElement };\n};\n","import { HeadingElement } from '@lumx/react/utils/type';\nimport { ReactNode } from 'react';\nimport { MAX_HEADING_LEVEL } from './constants';\nimport { HeadingLevelContext } from './context';\nimport { useHeadingLevel } from './useHeadingLevel';\n\nexport interface HeadingLevelProviderProps {\n /** The heading level to start at. If left undefined, the parent context will be used, if any. */\n level?: number;\n /** The children to display */\n children: ReactNode;\n}\n\n/**\n * Provide a new heading level context.\n */\nexport const HeadingLevelProvider: React.FC<HeadingLevelProviderProps> = ({ children, level }) => {\n const { level: contextLevel } = useHeadingLevel();\n\n const incrementedLevel = level || contextLevel + 1;\n /** Don't allow a level beyond the maximum level. */\n const nextLevel = incrementedLevel > MAX_HEADING_LEVEL ? MAX_HEADING_LEVEL : incrementedLevel;\n const headingElement = `h${nextLevel}` as HeadingElement;\n\n return (\n <HeadingLevelContext.Provider value={{ level: nextLevel, headingElement }}>\n {children}\n </HeadingLevelContext.Provider>\n );\n};\n"],"names":["MAX_HEADING_LEVEL","DEFAULT_TYPOGRAPHY_BY_LEVEL","h1","Typography","display1","h2","headline","h3","title","h4","subtitle2","h5","subtitle1","h6","body2","defaultContext","level","headingElement","HeadingLevelContext","createContext","useHeadingLevel","React","useContext","HeadingLevelProvider","children","contextLevel","incrementedLevel","nextLevel","_jsx","Provider","value"],"mappings":";;;;AAEA;AACO,MAAMA,iBAAiB,GAAG,CAAC,CAAA;;AAElC;AACA;AACA;AACO,MAAMC,2BAA2B,GAAG;EACvCC,EAAE,EAAEC,UAAU,CAACC,QAAQ;EACvBC,EAAE,EAAEF,UAAU,CAACG,QAAQ;EACvBC,EAAE,EAAEJ,UAAU,CAACK,KAAK;EACpBC,EAAE,EAAEN,UAAU,CAACO,SAAS;EACxBC,EAAE,EAAER,UAAU,CAACS,SAAS;EACxBC,EAAE,EAAEV,UAAU,CAACW,KAAAA;AACnB;;ACLA,MAAMC,cAAmC,GAAG;AAAEC,EAAAA,KAAK,EAAE,CAAC;AAAEC,EAAAA,cAAc,EAAE,IAAA;AAAK,CAAC,CAAA;AAEvE,MAAMC,mBAAmB,gBAAGC,aAAa,CAAsBJ,cAAc,CAAC;;ACTxEK,MAAAA,eAAe,GAAGA,MAAM;EACjC,MAAM;AAAEJ,IAAAA,KAAK,GAAG,CAAC;AAAEC,IAAAA,cAAc,GAAG,IAAA;AAAK,GAAC,GAAGI,cAAK,CAACC,UAAU,CAACJ,mBAAmB,CAAC,CAAA;EAElF,OAAO;IAAEF,KAAK;AAAEC,IAAAA,cAAAA;GAAgB,CAAA;AACpC;;ACMA;AACA;AACA;AACO,MAAMM,oBAAyD,GAAGA,CAAC;EAAEC,QAAQ;AAAER,EAAAA,KAAAA;AAAM,CAAC,KAAK;EAC9F,MAAM;AAAEA,IAAAA,KAAK,EAAES,YAAAA;GAAc,GAAGL,eAAe,EAAE,CAAA;AAEjD,EAAA,MAAMM,gBAAgB,GAAGV,KAAK,IAAIS,YAAY,GAAG,CAAC,CAAA;AAClD;EACA,MAAME,SAAS,GAAGD,gBAAgB,GAAG1B,iBAAiB,GAAGA,iBAAiB,GAAG0B,gBAAgB,CAAA;AAC7F,EAAA,MAAMT,cAAc,GAAG,CAAIU,CAAAA,EAAAA,SAAS,CAAoB,CAAA,CAAA;AAExD,EAAA,oBACIC,GAAA,CAACV,mBAAmB,CAACW,QAAQ,EAAA;AAACC,IAAAA,KAAK,EAAE;AAAEd,MAAAA,KAAK,EAAEW,SAAS;AAAEV,MAAAA,cAAAA;KAAiB;AAAAO,IAAAA,QAAA,EACrEA,QAAAA;AAAQ,GACiB,CAAC,CAAA;AAEvC;;;;"}
|