@lumx/react 3.10.1-alpha.0 → 3.10.1-alpha.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/_internal/17c3ea1d.js +137 -0
- package/_internal/17c3ea1d.js.map +1 -0
- package/_internal/1da25128.js +411 -0
- package/_internal/1da25128.js.map +1 -0
- package/_internal/230173a8.js +13 -0
- package/_internal/230173a8.js.map +1 -0
- package/_internal/23bdba2d.js +71 -0
- package/_internal/23bdba2d.js.map +1 -0
- package/_internal/26926e5c.d.ts +36 -0
- package/_internal/2a3d237c.js +12 -0
- package/_internal/2a3d237c.js.map +1 -0
- package/_internal/2c5dbb03.js +26 -0
- package/_internal/2c5dbb03.js.map +1 -0
- package/_internal/2e2abe51.js +2154 -0
- package/_internal/2e2abe51.js.map +1 -0
- package/_internal/31490c59.d.ts +167 -0
- package/_internal/3181f000.js +14 -0
- package/_internal/3181f000.js.map +1 -0
- package/_internal/35f100be.d.ts +104 -0
- package/_internal/36bd7352.js +219 -0
- package/_internal/36bd7352.js.map +1 -0
- package/_internal/3a1facc0.js +18 -0
- package/_internal/3a1facc0.js.map +1 -0
- package/_internal/4c20d932.js +89 -0
- package/_internal/4c20d932.js.map +1 -0
- package/_internal/4c28d012.js +305 -0
- package/_internal/4c28d012.js.map +1 -0
- package/_internal/4cd0bf32.js +160 -0
- package/_internal/4cd0bf32.js.map +1 -0
- package/_internal/4daccdd5.js +25 -0
- package/_internal/4daccdd5.js.map +1 -0
- package/_internal/524b1d04.js +64 -0
- package/_internal/524b1d04.js.map +1 -0
- package/_internal/53c94227.js +123 -0
- package/_internal/53c94227.js.map +1 -0
- package/_internal/54d9ded5.js +418 -0
- package/_internal/54d9ded5.js.map +1 -0
- package/_internal/56aec41b.js +652 -0
- package/_internal/56aec41b.js.map +1 -0
- package/_internal/5720caf5.js +124 -0
- package/_internal/5720caf5.js.map +1 -0
- package/_internal/646f0db6.js +113 -0
- package/_internal/646f0db6.js.map +1 -0
- package/_internal/6cc8dca8.d.ts +22 -0
- package/_internal/7f022f8c.d.ts +34 -0
- package/_internal/{index.d.ts → 8d67e1e3.d.ts} +1 -1
- package/_internal/b8f2948d.js +691 -0
- package/_internal/b8f2948d.js.map +1 -0
- package/_internal/bc28d510.js +784 -0
- package/_internal/bc28d510.js.map +1 -0
- package/_internal/c68d24e4.js +145 -0
- package/_internal/c68d24e4.js.map +1 -0
- package/_internal/c6c99f76.js +105 -0
- package/_internal/c6c99f76.js.map +1 -0
- package/_internal/cae46566.js +65 -0
- package/_internal/cae46566.js.map +1 -0
- package/_internal/components/alert-dialog/index.ts-623b1ed3.d.ts +37 -0
- package/_internal/components/alert-dialog/index.ts-f83bd6ef.js +148 -0
- package/_internal/components/alert-dialog/index.ts-f83bd6ef.js.map +1 -0
- package/_internal/components/autocomplete/index.ts-3f8f125c.js +264 -0
- package/_internal/components/autocomplete/index.ts-3f8f125c.js.map +1 -0
- package/_internal/components/autocomplete/index.ts-8d6b123f.d.ts +201 -0
- package/_internal/components/avatar/index.ts-93ee0ea9.js +89 -0
- package/_internal/components/avatar/index.ts-93ee0ea9.js.map +1 -0
- package/_internal/components/avatar/index.ts-f92852b4.d.ts +43 -0
- package/_internal/components/badge/index.ts-2d7700ef.d.ts +30 -0
- package/_internal/components/badge/index.ts-6753d67f.js +88 -0
- package/_internal/components/badge/index.ts-6753d67f.js.map +1 -0
- package/_internal/components/button/index.ts-031307ce.js +51 -0
- package/_internal/components/button/index.ts-031307ce.js.map +1 -0
- package/_internal/components/button/index.ts-b29e26a4.d.ts +22 -0
- package/_internal/components/checkbox/index.ts-a33166d7.js +127 -0
- package/_internal/components/checkbox/index.ts-a33166d7.js.map +1 -0
- package/_internal/components/checkbox/index.ts-f82358ff.d.ts +38 -0
- package/_internal/components/chip/index.ts-4a91f1a7.d.ts +68 -0
- package/_internal/components/chip/index.ts-a2b5b771.js +110 -0
- package/_internal/components/chip/index.ts-a2b5b771.js.map +1 -0
- package/_internal/components/comment-block/index.ts-58fa051a.js +121 -0
- package/_internal/components/comment-block/index.ts-58fa051a.js.map +1 -0
- package/_internal/components/comment-block/index.ts-8cfa5af0.d.ts +67 -0
- package/_internal/components/date-picker/index.ts-145262d5.js +2 -0
- package/_internal/components/date-picker/index.ts-145262d5.js.map +1 -0
- package/_internal/components/date-picker/index.ts-70a34fa7.d.ts +95 -0
- package/_internal/components/dialog/index.ts-ea044db2.js +224 -0
- package/_internal/components/dialog/index.ts-ea044db2.js.map +1 -0
- package/_internal/components/dialog/index.ts-eca28654.d.ts +55 -0
- package/_internal/components/divider/index.ts-4a56db75.js +55 -0
- package/_internal/components/divider/index.ts-4a56db75.js.map +1 -0
- package/_internal/components/divider/index.ts-b011d8ca.d.ts +18 -0
- package/_internal/components/drag-handle/index.ts-0aebf92f.js +54 -0
- package/_internal/components/drag-handle/index.ts-0aebf92f.js.map +1 -0
- package/_internal/components/drag-handle/index.ts-3ab31dd1.d.ts +18 -0
- package/_internal/components/dropdown/index.ts-2a17db51.js +154 -0
- package/_internal/components/dropdown/index.ts-2a17db51.js.map +1 -0
- package/_internal/components/dropdown/index.ts-b648a15c.d.ts +87 -0
- package/_internal/components/expansion-panel/index.ts-69f09f5b.d.ts +38 -0
- package/_internal/components/expansion-panel/index.ts-fae3762e.js +143 -0
- package/_internal/components/expansion-panel/index.ts-fae3762e.js.map +1 -0
- package/_internal/components/flag/index.ts-8dcd685b.js +56 -0
- package/_internal/components/flag/index.ts-8dcd685b.js.map +1 -0
- package/_internal/components/flag/index.ts-fda89adb.d.ts +23 -0
- package/_internal/components/flex-box/index.ts-87f2b58d.d.ts +43 -0
- package/_internal/components/flex-box/index.ts-c216e957.js +60 -0
- package/_internal/components/flex-box/index.ts-c216e957.js.map +1 -0
- package/_internal/components/generic-block/index.ts-999a62a4.js +115 -0
- package/_internal/components/generic-block/index.ts-999a62a4.js.map +1 -0
- package/_internal/components/generic-block/index.ts-cd3b0e21.d.ts +106 -0
- package/_internal/components/grid/index.ts-67e0694f.d.ts +50 -0
- package/_internal/components/grid/index.ts-fdf1b306.js +113 -0
- package/_internal/components/grid/index.ts-fdf1b306.js.map +1 -0
- package/_internal/components/grid-column/index.ts-97c61cbe.js +64 -0
- package/_internal/components/grid-column/index.ts-97c61cbe.js.map +1 -0
- package/_internal/components/grid-column/index.ts-c89e1c18.d.ts +31 -0
- package/_internal/components/heading/index.ts-0179e9a9.js +112 -0
- package/_internal/components/heading/index.ts-0179e9a9.js.map +1 -0
- package/_internal/components/heading/index.ts-587579e8.d.ts +37 -0
- package/_internal/components/icon/index.ts-740ca1de.js +2 -0
- package/_internal/components/icon/index.ts-740ca1de.js.map +1 -0
- package/_internal/components/icon/index.ts-b3fa5e15.d.ts +34 -0
- package/_internal/components/image-block/index.ts-36b3828f.d.ts +49 -0
- package/_internal/components/image-block/index.ts-ef5e2e7d.js +111 -0
- package/_internal/components/image-block/index.ts-ef5e2e7d.js.map +1 -0
- package/_internal/components/image-lightbox/index.ts-137f85a8.js +765 -0
- package/_internal/components/image-lightbox/index.ts-137f85a8.js.map +1 -0
- package/_internal/components/image-lightbox/index.ts-2cb92d18.d.ts +75 -0
- package/_internal/components/inline-list/index.ts-033dd358.js +76 -0
- package/_internal/components/inline-list/index.ts-033dd358.js.map +1 -0
- package/_internal/components/inline-list/index.ts-e1c8a3ff.d.ts +34 -0
- package/_internal/components/input-helper/index.ts-32a9ca90.d.ts +22 -0
- package/_internal/components/input-helper/index.ts-ab3a1ef5.js +75 -0
- package/_internal/components/input-helper/index.ts-ab3a1ef5.js.map +1 -0
- package/_internal/components/input-label/index.ts-86f2ea41.d.ts +24 -0
- package/_internal/components/input-label/index.ts-d6ca5569.js +60 -0
- package/_internal/components/input-label/index.ts-d6ca5569.js.map +1 -0
- package/_internal/components/lightbox/index.ts-5370e8e6.d.ts +36 -0
- package/_internal/components/lightbox/index.ts-7a16cdc7.js +149 -0
- package/_internal/components/lightbox/index.ts-7a16cdc7.js.map +1 -0
- package/_internal/components/link/index.ts-26435006.d.ts +37 -0
- package/_internal/components/link/index.ts-d04f4e53.js +120 -0
- package/_internal/components/link/index.ts-d04f4e53.js.map +1 -0
- package/_internal/components/link-preview/index.ts-e560a274.d.ts +36 -0
- package/_internal/components/link-preview/index.ts-fee89f66.js +109 -0
- package/_internal/components/link-preview/index.ts-fee89f66.js.map +1 -0
- package/_internal/components/list/index.ts-ab57902e.d.ts +118 -0
- package/_internal/components/list/index.ts-f3101625.js +86 -0
- package/_internal/components/list/index.ts-f3101625.js.map +1 -0
- package/_internal/components/message/index.ts-041cf0cb.js +97 -0
- package/_internal/components/message/index.ts-041cf0cb.js.map +1 -0
- package/_internal/components/message/index.ts-2d38e0ea.d.ts +37 -0
- package/_internal/components/mosaic/index.ts-232d5aed.d.ts +23 -0
- package/_internal/components/mosaic/index.ts-d2128cd3.js +94 -0
- package/_internal/components/mosaic/index.ts-d2128cd3.js.map +1 -0
- package/_internal/components/navigation/index.ts-6d8bea53.d.ts +58 -0
- package/_internal/components/navigation/index.ts-e8dc0a7f.js +222 -0
- package/_internal/components/navigation/index.ts-e8dc0a7f.js.map +1 -0
- package/_internal/components/notification/index.ts-235fd340.js +140 -0
- package/_internal/components/notification/index.ts-235fd340.js.map +1 -0
- package/_internal/components/notification/index.ts-bb3f03f6.d.ts +34 -0
- package/_internal/components/popover/index.ts-2f17a9b6.js +3 -0
- package/_internal/components/popover/index.ts-2f17a9b6.js.map +1 -0
- package/_internal/components/popover/index.ts-e3b4ff19.d.ts +66 -0
- package/_internal/components/post-block/index.ts-0acb9bb4.js +101 -0
- package/_internal/components/post-block/index.ts-0acb9bb4.js.map +1 -0
- package/_internal/components/post-block/index.ts-9b8ff90b.d.ts +41 -0
- package/_internal/components/progress/index.ts-2a713859.js +189 -0
- package/_internal/components/progress/index.ts-2a713859.js.map +1 -0
- package/_internal/components/progress/index.ts-dfdfa5fb.d.ts +60 -0
- package/_internal/components/progress-tracker/index.ts-2649f756.js +312 -0
- package/_internal/components/progress-tracker/index.ts-2649f756.js.map +1 -0
- package/_internal/components/progress-tracker/index.ts-95320f32.d.ts +101 -0
- package/_internal/components/radio-button/index.ts-5eaab4cf.d.ts +54 -0
- package/_internal/components/radio-button/index.ts-b4dfb2a0.js +150 -0
- package/_internal/components/radio-button/index.ts-b4dfb2a0.js.map +1 -0
- package/_internal/components/select/index.ts-a65e3507.d.ts +91 -0
- package/_internal/components/select/index.ts-e8fad28b.js +257 -0
- package/_internal/components/select/index.ts-e8fad28b.js.map +1 -0
- package/_internal/components/side-navigation/index.ts-3f5f3785.d.ts +60 -0
- package/_internal/components/side-navigation/index.ts-c9a5fc3e.js +184 -0
- package/_internal/components/side-navigation/index.ts-c9a5fc3e.js.map +1 -0
- package/_internal/components/skeleton/index.ts-a7daefac.d.ts +75 -0
- package/_internal/components/skeleton/index.ts-ffc995af.js +179 -0
- package/_internal/components/skeleton/index.ts-ffc995af.js.map +1 -0
- package/_internal/components/slider/index.ts-24a0d598.d.ts +52 -0
- package/_internal/components/slider/index.ts-72aadf4c.js +308 -0
- package/_internal/components/slider/index.ts-72aadf4c.js.map +1 -0
- package/_internal/components/slideshow/index.ts-c99f2892.js +151 -0
- package/_internal/components/slideshow/index.ts-c99f2892.js.map +1 -0
- package/_internal/components/slideshow/index.ts-e49462c6.d.ts +25 -0
- package/_internal/components/switch/index.ts-207ba52b.d.ts +34 -0
- package/_internal/components/switch/index.ts-542e6eaf.js +115 -0
- package/_internal/components/switch/index.ts-542e6eaf.js.map +1 -0
- package/_internal/components/table/index.ts-905ce390.js +310 -0
- package/_internal/components/table/index.ts-905ce390.js.map +1 -0
- package/_internal/components/table/index.ts-c4f39b2d.d.ts +108 -0
- package/_internal/components/tabs/index.ts-713119f4.js +289 -0
- package/_internal/components/tabs/index.ts-713119f4.js.map +1 -0
- package/_internal/components/tabs/index.ts-dbfc48d9.d.ts +106 -0
- package/_internal/components/text/index.ts-6afbe8cd.js +2 -0
- package/_internal/components/text/index.ts-6afbe8cd.js.map +1 -0
- package/_internal/components/text/index.ts-8a812048.d.ts +53 -0
- package/_internal/components/text-field/index.ts-92e6b3b3.d.ts +77 -0
- package/_internal/components/text-field/index.ts-c3be8563.js +341 -0
- package/_internal/components/text-field/index.ts-c3be8563.js.map +1 -0
- package/_internal/components/thumbnail/index.ts-16d7b403.js +40 -0
- package/_internal/components/thumbnail/index.ts-16d7b403.js.map +1 -0
- package/_internal/components/thumbnail/index.ts-1b6c0b48.d.ts +8 -0
- package/_internal/components/toolbar/index.ts-813b902e.js +63 -0
- package/_internal/components/toolbar/index.ts-813b902e.js.map +1 -0
- package/_internal/components/toolbar/index.ts-9f5129d1.d.ts +24 -0
- package/_internal/components/tooltip/index.ts-905c847c.js +322 -0
- package/_internal/components/tooltip/index.ts-905c847c.js.map +1 -0
- package/_internal/components/tooltip/index.ts-c6931e9e.d.ts +35 -0
- package/_internal/components/uploader/index.ts-31f21c2a.js +132 -0
- package/_internal/components/uploader/index.ts-31f21c2a.js.map +1 -0
- package/_internal/components/uploader/index.ts-c3ccba98.d.ts +51 -0
- package/_internal/components/user-block/index.ts-18c58e19.d.ts +50 -0
- package/_internal/components/user-block/index.ts-d43e5f3c.js +136 -0
- package/_internal/components/user-block/index.ts-d43e5f3c.js.map +1 -0
- package/_internal/dc3e28c8.d.ts +38 -0
- package/_internal/f39a1ba4.js +73 -0
- package/_internal/f39a1ba4.js.map +1 -0
- package/_internal/f3e77e3e.js +22 -0
- package/_internal/f3e77e3e.js.map +1 -0
- package/_internal/f502ab30.js +78 -0
- package/_internal/f502ab30.js.map +1 -0
- package/_internal/f52adbae.js +36 -0
- package/_internal/f52adbae.js.map +1 -0
- package/_internal/f57e1239.js +205 -0
- package/_internal/f57e1239.js.map +1 -0
- package/_internal/f5ff1aa4.d.ts +47 -0
- package/_internal/fb975afe.js +52 -0
- package/_internal/fb975afe.js.map +1 -0
- package/index.d.ts +66 -3023
- package/index.js +64 -14531
- package/index.js.map +1 -1
- package/package.json +3 -3
- package/src/components/alert-dialog/AlertDialog.tsx +3 -4
- package/src/components/autocomplete/Autocomplete.tsx +4 -3
- package/src/components/autocomplete/AutocompleteMultiple.tsx +7 -6
- package/src/components/avatar/Avatar.tsx +4 -3
- package/src/components/badge/Badge.tsx +7 -4
- package/src/components/badge/BadgeWrapper.tsx +7 -4
- package/src/components/button/Button.tsx +5 -3
- package/src/components/button/ButtonGroup.tsx +4 -3
- package/src/components/button/ButtonRoot.tsx +4 -3
- package/src/components/button/IconButton.tsx +3 -3
- package/src/components/checkbox/Checkbox.tsx +4 -3
- package/src/components/chip/Chip.tsx +8 -9
- package/src/components/chip/ChipGroup.tsx +5 -4
- package/src/components/comment-block/CommentBlock.tsx +4 -4
- package/src/components/date-picker/DatePicker.tsx +5 -3
- package/src/components/date-picker/DatePickerControlled.tsx +6 -3
- package/src/components/date-picker/DatePickerField.tsx +4 -3
- package/src/components/dialog/Dialog.tsx +4 -3
- package/src/components/divider/Divider.tsx +4 -3
- package/src/components/drag-handle/DragHandle.test.tsx +1 -1
- package/src/components/drag-handle/DragHandle.tsx +4 -3
- package/src/components/dropdown/Dropdown.tsx +4 -3
- package/src/components/expansion-panel/ExpansionPanel.tsx +4 -3
- package/src/components/flag/Flag.tsx +5 -3
- package/src/components/flex-box/FlexBox.tsx +8 -5
- package/src/components/generic-block/GenericBlock.tsx +4 -1
- package/src/components/grid/Grid.tsx +4 -3
- package/src/components/grid/GridItem.tsx +4 -3
- package/src/components/grid-column/GridColumn.tsx +5 -5
- package/src/components/heading/Heading.tsx +8 -4
- package/src/components/icon/Icon.tsx +5 -4
- package/src/components/image-block/ImageBlock.tsx +4 -3
- package/src/components/image-lightbox/ImageLightbox.tsx +4 -3
- package/src/components/inline-list/InlineList.tsx +4 -3
- package/src/components/input-helper/InputHelper.tsx +7 -4
- package/src/components/input-label/InputLabel.tsx +7 -4
- package/src/components/lightbox/Lightbox.tsx +4 -3
- package/src/components/link/Link.tsx +4 -3
- package/src/components/link-preview/LinkPreview.tsx +4 -3
- package/src/components/list/List.tsx +7 -5
- package/src/components/list/ListDivider.tsx +4 -3
- package/src/components/list/ListItem.tsx +4 -3
- package/src/components/list/ListSubheader.tsx +4 -3
- package/src/components/message/Message.tsx +7 -4
- package/src/components/mosaic/Mosaic.tsx +7 -5
- package/src/components/navigation/NavigationItem.tsx +1 -1
- package/src/components/navigation/NavigationSection.test.tsx +19 -6
- package/src/components/notification/Notification.tsx +4 -6
- package/src/components/popover/Popover.tsx +3 -2
- package/src/components/popover-dialog/PopoverDialog.tsx +5 -3
- package/src/components/post-block/PostBlock.tsx +4 -6
- package/src/components/progress/Progress.tsx +5 -4
- package/src/components/progress/ProgressCircular.tsx +4 -4
- package/src/components/progress/ProgressLinear.tsx +4 -4
- package/src/components/progress-tracker/ProgressTracker.tsx +5 -3
- package/src/components/progress-tracker/ProgressTrackerStep.tsx +5 -5
- package/src/components/progress-tracker/ProgressTrackerStepPanel.tsx +24 -24
- package/src/components/radio-button/RadioButton.tsx +4 -4
- package/src/components/radio-button/RadioGroup.tsx +4 -3
- package/src/components/select/Select.tsx +3 -5
- package/src/components/select/SelectMultiple.tsx +3 -5
- package/src/components/side-navigation/SideNavigation.tsx +4 -4
- package/src/components/side-navigation/SideNavigationItem.tsx +4 -5
- package/src/components/skeleton/SkeletonCircle.tsx +5 -3
- package/src/components/skeleton/SkeletonRectangle.tsx +5 -3
- package/src/components/skeleton/SkeletonTypography.tsx +5 -3
- package/src/components/slider/Slider.tsx +4 -5
- package/src/components/slideshow/Slides.tsx +6 -4
- package/src/components/slideshow/Slideshow.tsx +5 -3
- package/src/components/slideshow/SlideshowControls.tsx +4 -3
- package/src/components/slideshow/SlideshowItem.tsx +4 -3
- package/src/components/slideshow/SlideshowItemGroup.tsx +5 -4
- package/src/components/switch/Switch.tsx +4 -5
- package/src/components/table/Table.tsx +4 -4
- package/src/components/table/TableBody.tsx +4 -3
- package/src/components/table/TableCell.tsx +5 -5
- package/src/components/table/TableHeader.tsx +4 -3
- package/src/components/table/TableRow.tsx +4 -3
- package/src/components/tabs/Tab.tsx +4 -3
- package/src/components/tabs/TabList.tsx +8 -5
- package/src/components/tabs/TabPanel.tsx +7 -5
- package/src/components/text/Text.tsx +6 -4
- package/src/components/text-field/TextField.tsx +4 -3
- package/src/components/thumbnail/Thumbnail.tsx +5 -5
- package/src/components/toolbar/Toolbar.tsx +4 -3
- package/src/components/tooltip/Tooltip.tsx +4 -3
- package/src/components/uploader/Uploader.tsx +5 -3
- package/src/components/user-block/UserBlock.tsx +6 -4
- package/src/testing/utils/commonTestsSuiteRTL.tsx +2 -1
- package/src/utils/react/forwardRef.ts +10 -0
- package/src/utils/react/forwardRefPolymorphic.ts +10 -0
- package/utils/index.d.ts +1 -1
- package/src/utils/forwardRefPolymorphic.ts +0 -9
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { h as getRootClassName, i as forwardRef, j as _objectWithoutProperties, D as DOCUMENT, _ as _extends, g as classNames, n as DIALOG_TRANSITION_DURATION } from '../../1da25128.js';
|
|
2
|
+
import React__default, { useRef, useEffect } from 'react';
|
|
3
|
+
import { createPortal } from 'react-dom';
|
|
4
|
+
import { u as useFocusTrap } from '../../646f0db6.js';
|
|
5
|
+
import { u as useDisableBodyScroll } from '../../36bd7352.js';
|
|
6
|
+
import { m as mergeRefs } from '../../f52adbae.js';
|
|
7
|
+
import { u as useCallbackOnEscape } from '../../cae46566.js';
|
|
8
|
+
import { u as useTransitionVisibility } from '../../fb975afe.js';
|
|
9
|
+
import { T as ThemeProvider } from '../../3181f000.js';
|
|
10
|
+
import { h as handleBasicClasses } from '../../f57e1239.js';
|
|
11
|
+
import { I as IconButton } from '../../23bdba2d.js';
|
|
12
|
+
import { ClickAwayProvider } from '../../../utils/index.js';
|
|
13
|
+
import { i as mdiClose } from '../../c6c99f76.js';
|
|
14
|
+
|
|
15
|
+
const _excluded = ["aria-labelledby", "ariaLabelledBy", "aria-label", "ariaLabel", "children", "className", "closeButtonProps", "isOpen", "onClose", "parentElement", "focusElement", "preventAutoClose", "theme", "zIndex"];
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Defines the props of the component.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Component display name.
|
|
23
|
+
*/
|
|
24
|
+
const COMPONENT_NAME = 'Lightbox';
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Component default class name and class prefix.
|
|
28
|
+
*/
|
|
29
|
+
const CLASSNAME = getRootClassName(COMPONENT_NAME);
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Lightbox component.
|
|
33
|
+
*
|
|
34
|
+
* @param props Component props.
|
|
35
|
+
* @param ref Component ref.
|
|
36
|
+
* @return React element.
|
|
37
|
+
*/
|
|
38
|
+
const Lightbox = forwardRef((props, ref) => {
|
|
39
|
+
const {
|
|
40
|
+
'aria-labelledby': propAriaLabelledBy,
|
|
41
|
+
ariaLabelledBy = propAriaLabelledBy,
|
|
42
|
+
'aria-label': propAriaLabel,
|
|
43
|
+
ariaLabel = propAriaLabel,
|
|
44
|
+
children,
|
|
45
|
+
className,
|
|
46
|
+
closeButtonProps,
|
|
47
|
+
isOpen,
|
|
48
|
+
onClose,
|
|
49
|
+
parentElement,
|
|
50
|
+
focusElement,
|
|
51
|
+
preventAutoClose,
|
|
52
|
+
theme,
|
|
53
|
+
zIndex
|
|
54
|
+
} = props,
|
|
55
|
+
forwardedProps = _objectWithoutProperties(props, _excluded);
|
|
56
|
+
if (!DOCUMENT) {
|
|
57
|
+
// Can't render in SSR.
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
62
|
+
const childrenRef = useRef(null);
|
|
63
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
64
|
+
const wrapperRef = useRef(null);
|
|
65
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
66
|
+
const closeButtonRef = useRef(null);
|
|
67
|
+
|
|
68
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
69
|
+
useDisableBodyScroll(isOpen && wrapperRef.current);
|
|
70
|
+
|
|
71
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
72
|
+
const isVisible = useTransitionVisibility(wrapperRef, !!isOpen, DIALOG_TRANSITION_DURATION);
|
|
73
|
+
|
|
74
|
+
// Handle focus trap.
|
|
75
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
76
|
+
useFocusTrap(
|
|
77
|
+
// Focus trap zone
|
|
78
|
+
isOpen && wrapperRef.current,
|
|
79
|
+
// Focus element (fallback on close button and then on the dialog)
|
|
80
|
+
(focusElement === null || focusElement === void 0 ? void 0 : focusElement.current) || closeButtonRef.current || wrapperRef.current);
|
|
81
|
+
|
|
82
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
83
|
+
const previousOpen = useRef(isOpen);
|
|
84
|
+
|
|
85
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
86
|
+
useEffect(() => {
|
|
87
|
+
if (isOpen !== previousOpen.current) {
|
|
88
|
+
previousOpen.current = isOpen;
|
|
89
|
+
|
|
90
|
+
// Focus the parent element on close.
|
|
91
|
+
if (!isOpen && parentElement && parentElement.current) {
|
|
92
|
+
parentElement.current.focus();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}, [isOpen, parentElement]);
|
|
96
|
+
|
|
97
|
+
// Close lightbox on escape key pressed.
|
|
98
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
99
|
+
useCallbackOnEscape(onClose);
|
|
100
|
+
|
|
101
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
102
|
+
const clickAwayRefs = useRef([wrapperRef]);
|
|
103
|
+
if (!isOpen && !isVisible) return null;
|
|
104
|
+
return /*#__PURE__*/createPortal(
|
|
105
|
+
/*#__PURE__*/
|
|
106
|
+
/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */
|
|
107
|
+
React__default.createElement("div", _extends({
|
|
108
|
+
ref: mergeRefs(ref, wrapperRef)
|
|
109
|
+
}, forwardedProps, {
|
|
110
|
+
"aria-label": ariaLabel,
|
|
111
|
+
"aria-labelledby": ariaLabelledBy,
|
|
112
|
+
"aria-modal": "true",
|
|
113
|
+
role: "dialog",
|
|
114
|
+
tabIndex: -1,
|
|
115
|
+
className: classNames(className, handleBasicClasses({
|
|
116
|
+
prefix: CLASSNAME,
|
|
117
|
+
isHidden: !isOpen,
|
|
118
|
+
isShown: isOpen || isVisible,
|
|
119
|
+
theme
|
|
120
|
+
})),
|
|
121
|
+
style: {
|
|
122
|
+
zIndex
|
|
123
|
+
}
|
|
124
|
+
}), closeButtonProps && /*#__PURE__*/React__default.createElement("div", {
|
|
125
|
+
className: `${CLASSNAME}__close`
|
|
126
|
+
}, /*#__PURE__*/React__default.createElement(IconButton, _extends({}, closeButtonProps, {
|
|
127
|
+
ref: closeButtonRef,
|
|
128
|
+
emphasis: "low",
|
|
129
|
+
hasBackground: true,
|
|
130
|
+
icon: mdiClose,
|
|
131
|
+
theme: "dark",
|
|
132
|
+
type: "button",
|
|
133
|
+
onClick: onClose
|
|
134
|
+
}))), /*#__PURE__*/React__default.createElement(ThemeProvider, {
|
|
135
|
+
value: undefined
|
|
136
|
+
}, /*#__PURE__*/React__default.createElement(ClickAwayProvider, {
|
|
137
|
+
callback: !preventAutoClose && onClose,
|
|
138
|
+
childrenRefs: clickAwayRefs
|
|
139
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
140
|
+
ref: childrenRef,
|
|
141
|
+
className: `${CLASSNAME}__wrapper`,
|
|
142
|
+
role: "presentation"
|
|
143
|
+
}, children)))), document.body);
|
|
144
|
+
});
|
|
145
|
+
Lightbox.displayName = COMPONENT_NAME;
|
|
146
|
+
Lightbox.className = CLASSNAME;
|
|
147
|
+
|
|
148
|
+
export { Lightbox };
|
|
149
|
+
//# sourceMappingURL=index.ts-7a16cdc7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.ts-7a16cdc7.js","sources":["../../../../src/components/lightbox/Lightbox.tsx"],"sourcesContent":["import React, { RefObject, useRef, useEffect, AriaAttributes } from 'react';\n\nimport classNames from 'classnames';\nimport { createPortal } from 'react-dom';\n\nimport { mdiClose } from '@lumx/icons';\nimport { IconButton, IconButtonProps } from '@lumx/react';\nimport { DIALOG_TRANSITION_DURATION, DOCUMENT } from '@lumx/react/constants';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';\n\nimport { useFocusTrap } from '@lumx/react/hooks/useFocusTrap';\nimport { useDisableBodyScroll } from '@lumx/react/hooks/useDisableBodyScroll';\nimport { ClickAwayProvider } from '@lumx/react/utils/ClickAwayProvider';\nimport { mergeRefs } from '@lumx/react/utils/mergeRefs';\nimport { useCallbackOnEscape } from '@lumx/react/hooks/useCallbackOnEscape';\nimport { useTransitionVisibility } from '@lumx/react/hooks/useTransitionVisibility';\nimport { ThemeProvider } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\n/**\n * Defines the props of the component.\n */\nexport interface LightboxProps extends GenericProps, HasTheme, Pick<AriaAttributes, 'aria-label' | 'aria-labelledby'> {\n /** Props to pass to the close button (minus those already set by the Lightbox props). */\n closeButtonProps?: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color'>;\n /** Whether the component is open or not. */\n isOpen?: boolean;\n /** Reference to the element that triggered modal opening to set focus on. */\n parentElement: RefObject<any>;\n /** Reference to the element that should get the focus when the lightbox opens. By default, the close button or the lightbox itself will take focus. */\n focusElement?: RefObject<HTMLElement>;\n /** Whether to keep the dialog open on clickaway or escape press. */\n preventAutoClose?: boolean;\n /** Z-axis position. */\n zIndex?: number;\n /** On close callback. */\n onClose?(): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Lightbox';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Lightbox component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Lightbox = forwardRef<LightboxProps, HTMLDivElement>((props, ref) => {\n const {\n 'aria-labelledby': propAriaLabelledBy,\n ariaLabelledBy = propAriaLabelledBy,\n 'aria-label': propAriaLabel,\n ariaLabel = propAriaLabel,\n children,\n className,\n closeButtonProps,\n isOpen,\n onClose,\n parentElement,\n focusElement,\n preventAutoClose,\n theme,\n zIndex,\n ...forwardedProps\n } = props;\n if (!DOCUMENT) {\n // Can't render in SSR.\n return null;\n }\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const childrenRef = useRef<any>(null);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const wrapperRef = useRef<HTMLDivElement>(null);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const closeButtonRef = useRef<HTMLButtonElement>(null);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useDisableBodyScroll(isOpen && wrapperRef.current);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const isVisible = useTransitionVisibility(wrapperRef, !!isOpen, DIALOG_TRANSITION_DURATION);\n\n // Handle focus trap.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useFocusTrap(\n // Focus trap zone\n isOpen && wrapperRef.current,\n // Focus element (fallback on close button and then on the dialog)\n focusElement?.current || closeButtonRef.current || wrapperRef.current,\n );\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const previousOpen = useRef(isOpen);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n if (isOpen !== previousOpen.current) {\n previousOpen.current = isOpen;\n\n // Focus the parent element on close.\n if (!isOpen && parentElement && parentElement.current) {\n parentElement.current.focus();\n }\n }\n }, [isOpen, parentElement]);\n\n // Close lightbox on escape key pressed.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useCallbackOnEscape(onClose);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const clickAwayRefs = useRef([wrapperRef]);\n\n if (!isOpen && !isVisible) return null;\n\n return createPortal(\n /* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */\n <div\n ref={mergeRefs(ref, wrapperRef)}\n {...forwardedProps}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-modal=\"true\"\n role=\"dialog\"\n tabIndex={-1}\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n isHidden: !isOpen,\n isShown: isOpen || isVisible,\n theme,\n }),\n )}\n style={{ zIndex }}\n >\n {closeButtonProps && (\n <div className={`${CLASSNAME}__close`}>\n <IconButton\n {...closeButtonProps}\n ref={closeButtonRef}\n emphasis=\"low\"\n hasBackground\n icon={mdiClose}\n theme=\"dark\"\n type=\"button\"\n onClick={onClose}\n />\n </div>\n )}\n <ThemeProvider value={undefined}>\n <ClickAwayProvider callback={!preventAutoClose && onClose} childrenRefs={clickAwayRefs}>\n <div ref={childrenRef} className={`${CLASSNAME}__wrapper`} role=\"presentation\">\n {children}\n </div>\n </ClickAwayProvider>\n </ThemeProvider>\n </div>,\n document.body,\n );\n});\nLightbox.displayName = COMPONENT_NAME;\nLightbox.className = CLASSNAME;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","Lightbox","forwardRef","props","ref","propAriaLabelledBy","ariaLabelledBy","propAriaLabel","ariaLabel","children","className","closeButtonProps","isOpen","onClose","parentElement","focusElement","preventAutoClose","theme","zIndex","forwardedProps","_objectWithoutProperties","_excluded","DOCUMENT","childrenRef","useRef","wrapperRef","closeButtonRef","useDisableBodyScroll","current","isVisible","useTransitionVisibility","DIALOG_TRANSITION_DURATION","useFocusTrap","previousOpen","useEffect","focus","useCallbackOnEscape","clickAwayRefs","createPortal","React","createElement","_extends","mergeRefs","role","tabIndex","classNames","handleBasicClasses","prefix","isHidden","isShown","style","IconButton","emphasis","hasBackground","icon","mdiClose","type","onClick","ThemeProvider","value","undefined","ClickAwayProvider","callback","childrenRefs","document","body","displayName"],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { G as GenericProps, a as ColorPalette, f as ColorVariant, k as Typography, C as Comp } from '../../8d67e1e3.js';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
|
|
4
|
+
type HTMLAnchorProps = React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>;
|
|
5
|
+
/**
|
|
6
|
+
* Defines the props of the component.
|
|
7
|
+
*/
|
|
8
|
+
interface LinkProps extends GenericProps {
|
|
9
|
+
/** Color variant. */
|
|
10
|
+
color?: ColorPalette;
|
|
11
|
+
/** Lightened or darkened variant of the selected icon color. */
|
|
12
|
+
colorVariant?: ColorVariant;
|
|
13
|
+
/** Link href. */
|
|
14
|
+
href?: HTMLAnchorProps['href'];
|
|
15
|
+
/** Whether the component is disabled or not. */
|
|
16
|
+
isDisabled?: boolean;
|
|
17
|
+
/** Left icon (SVG path). */
|
|
18
|
+
leftIcon?: string;
|
|
19
|
+
/** Custom react component for the link (can be used to inject react router Link). */
|
|
20
|
+
linkAs?: 'a' | any;
|
|
21
|
+
/** Right icon (SVG path). */
|
|
22
|
+
rightIcon?: string;
|
|
23
|
+
/** Link target. */
|
|
24
|
+
target?: HTMLAnchorProps['target'];
|
|
25
|
+
/** Typography variant. */
|
|
26
|
+
typography?: Typography;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Link component.
|
|
30
|
+
*
|
|
31
|
+
* @param props Component props.
|
|
32
|
+
* @param ref Component ref.
|
|
33
|
+
* @return React element.
|
|
34
|
+
*/
|
|
35
|
+
declare const Link: Comp<LinkProps, HTMLAnchorElement | HTMLButtonElement>;
|
|
36
|
+
|
|
37
|
+
export { Link, type LinkProps };
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { h as getRootClassName, i as forwardRef, j as _objectWithoutProperties, g as classNames, _ as _extends, k as _objectSpread2, S as Size, e as Typography } from '../../1da25128.js';
|
|
2
|
+
import React__default, { useMemo } from 'react';
|
|
3
|
+
import isEmpty from 'lodash/isEmpty';
|
|
4
|
+
import { r as renderLink } from '../../2c5dbb03.js';
|
|
5
|
+
import { h as handleBasicClasses } from '../../f57e1239.js';
|
|
6
|
+
import { I as Icon } from '../../c6c99f76.js';
|
|
7
|
+
|
|
8
|
+
const _excluded = ["children", "className", "color", "colorVariant", "disabled", "isDisabled", "href", "leftIcon", "linkAs", "rightIcon", "target", "typography"];
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Defines the props of the component.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Component display name.
|
|
16
|
+
*/
|
|
17
|
+
const COMPONENT_NAME = 'Link';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Component default class name and class prefix.
|
|
21
|
+
*/
|
|
22
|
+
const CLASSNAME = getRootClassName(COMPONENT_NAME);
|
|
23
|
+
const getIconSize = typography => {
|
|
24
|
+
switch (typography) {
|
|
25
|
+
case Typography.display1:
|
|
26
|
+
return Size.m;
|
|
27
|
+
case Typography.headline:
|
|
28
|
+
case Typography.title:
|
|
29
|
+
case Typography.custom.title1:
|
|
30
|
+
case Typography.custom.title2:
|
|
31
|
+
case Typography.custom.title3:
|
|
32
|
+
case Typography.custom.title4:
|
|
33
|
+
case Typography.custom.title5:
|
|
34
|
+
case Typography.custom.title6:
|
|
35
|
+
case Typography.body2:
|
|
36
|
+
case Typography.subtitle2:
|
|
37
|
+
return Size.s;
|
|
38
|
+
case Typography.body1:
|
|
39
|
+
case Typography.subtitle1:
|
|
40
|
+
return Size.xs;
|
|
41
|
+
case Typography.caption:
|
|
42
|
+
case Typography.overline:
|
|
43
|
+
return Size.xxs;
|
|
44
|
+
default:
|
|
45
|
+
return Size.s;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Link component.
|
|
51
|
+
*
|
|
52
|
+
* @param props Component props.
|
|
53
|
+
* @param ref Component ref.
|
|
54
|
+
* @return React element.
|
|
55
|
+
*/
|
|
56
|
+
const Link = forwardRef((props, ref) => {
|
|
57
|
+
const {
|
|
58
|
+
children,
|
|
59
|
+
className,
|
|
60
|
+
color,
|
|
61
|
+
colorVariant,
|
|
62
|
+
disabled,
|
|
63
|
+
isDisabled = disabled,
|
|
64
|
+
href,
|
|
65
|
+
leftIcon,
|
|
66
|
+
linkAs,
|
|
67
|
+
rightIcon,
|
|
68
|
+
target,
|
|
69
|
+
typography
|
|
70
|
+
} = props,
|
|
71
|
+
forwardedProps = _objectWithoutProperties(props, _excluded);
|
|
72
|
+
const renderedChildren = useMemo(() => /*#__PURE__*/React__default.createElement(React__default.Fragment, null, leftIcon && !isEmpty(leftIcon) && /*#__PURE__*/React__default.createElement(Icon, {
|
|
73
|
+
icon: leftIcon,
|
|
74
|
+
className: `${CLASSNAME}__left-icon`,
|
|
75
|
+
size: getIconSize(typography)
|
|
76
|
+
}), children && /*#__PURE__*/React__default.createElement("span", {
|
|
77
|
+
className: classNames(`${CLASSNAME}__content`, {
|
|
78
|
+
[`lumx-typography-${typography}`]: typography
|
|
79
|
+
})
|
|
80
|
+
}, children), rightIcon && !isEmpty(rightIcon) && /*#__PURE__*/React__default.createElement(Icon, {
|
|
81
|
+
icon: rightIcon,
|
|
82
|
+
className: `${CLASSNAME}__right-icon`,
|
|
83
|
+
size: getIconSize(typography)
|
|
84
|
+
})), [leftIcon, typography, children, rightIcon]);
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* If there is no linkAs prop and no href, we returned a <button> instead of a <a>.
|
|
88
|
+
* If the component is disabled, we also returned a <button> since disabled is not compatible with <a>.
|
|
89
|
+
*/
|
|
90
|
+
if (!linkAs && isEmpty(href) || isDisabled) {
|
|
91
|
+
return /*#__PURE__*/React__default.createElement("button", _extends({
|
|
92
|
+
type: "button"
|
|
93
|
+
}, forwardedProps, {
|
|
94
|
+
ref: ref,
|
|
95
|
+
disabled: isDisabled,
|
|
96
|
+
className: classNames(className, handleBasicClasses({
|
|
97
|
+
prefix: CLASSNAME,
|
|
98
|
+
color,
|
|
99
|
+
colorVariant
|
|
100
|
+
}))
|
|
101
|
+
}), renderedChildren);
|
|
102
|
+
}
|
|
103
|
+
return renderLink(_objectSpread2(_objectSpread2({
|
|
104
|
+
linkAs
|
|
105
|
+
}, forwardedProps), {}, {
|
|
106
|
+
href,
|
|
107
|
+
target,
|
|
108
|
+
className: classNames(className, handleBasicClasses({
|
|
109
|
+
prefix: CLASSNAME,
|
|
110
|
+
color,
|
|
111
|
+
colorVariant
|
|
112
|
+
})),
|
|
113
|
+
ref: ref
|
|
114
|
+
}), renderedChildren);
|
|
115
|
+
});
|
|
116
|
+
Link.displayName = COMPONENT_NAME;
|
|
117
|
+
Link.className = CLASSNAME;
|
|
118
|
+
|
|
119
|
+
export { Link };
|
|
120
|
+
//# sourceMappingURL=index.ts-d04f4e53.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.ts-d04f4e53.js","sources":["../../../../src/components/link/Link.tsx"],"sourcesContent":["import React, { RefObject, useMemo } from 'react';\n\nimport isEmpty from 'lodash/isEmpty';\n\nimport classNames from 'classnames';\n\nimport { ColorPalette, ColorVariant, Icon, Size, Typography } from '@lumx/react';\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';\nimport { renderLink } from '@lumx/react/utils/renderLink';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\ntype HTMLAnchorProps = React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>;\n\n/**\n * Defines the props of the component.\n */\nexport interface LinkProps extends GenericProps {\n /** Color variant. */\n color?: ColorPalette;\n /** Lightened or darkened variant of the selected icon color. */\n colorVariant?: ColorVariant;\n /** Link href. */\n href?: HTMLAnchorProps['href'];\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Left icon (SVG path). */\n leftIcon?: string;\n /** Custom react component for the link (can be used to inject react router Link). */\n linkAs?: 'a' | any;\n /** Right icon (SVG path). */\n rightIcon?: string;\n /** Link target. */\n target?: HTMLAnchorProps['target'];\n /** Typography variant. */\n typography?: Typography;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Link';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\nconst getIconSize = (typography?: Typography) => {\n switch (typography) {\n case Typography.display1:\n return Size.m;\n\n case Typography.headline:\n case Typography.title:\n case Typography.custom.title1:\n case Typography.custom.title2:\n case Typography.custom.title3:\n case Typography.custom.title4:\n case Typography.custom.title5:\n case Typography.custom.title6:\n case Typography.body2:\n case Typography.subtitle2:\n return Size.s;\n\n case Typography.body1:\n case Typography.subtitle1:\n return Size.xs;\n\n case Typography.caption:\n case Typography.overline:\n return Size.xxs;\n\n default:\n return Size.s;\n }\n};\n\n/**\n * Link component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Link = forwardRef<LinkProps, HTMLAnchorElement | HTMLButtonElement>((props, ref) => {\n const {\n children,\n className,\n color,\n colorVariant,\n disabled,\n isDisabled = disabled,\n href,\n leftIcon,\n linkAs,\n rightIcon,\n target,\n typography,\n ...forwardedProps\n } = props;\n const renderedChildren = useMemo(\n () => (\n <>\n {leftIcon && !isEmpty(leftIcon) && (\n <Icon icon={leftIcon} className={`${CLASSNAME}__left-icon`} size={getIconSize(typography)} />\n )}\n\n {children && (\n <span\n className={classNames(`${CLASSNAME}__content`, {\n [`lumx-typography-${typography}`]: typography,\n })}\n >\n {children}\n </span>\n )}\n\n {rightIcon && !isEmpty(rightIcon) && (\n <Icon icon={rightIcon} className={`${CLASSNAME}__right-icon`} size={getIconSize(typography)} />\n )}\n </>\n ),\n [leftIcon, typography, children, rightIcon],\n );\n\n /**\n * If there is no linkAs prop and no href, we returned a <button> instead of a <a>.\n * If the component is disabled, we also returned a <button> since disabled is not compatible with <a>.\n */\n if ((!linkAs && isEmpty(href)) || isDisabled) {\n return (\n <button\n type=\"button\"\n {...forwardedProps}\n ref={ref as RefObject<HTMLButtonElement>}\n disabled={isDisabled}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, color, colorVariant }))}\n >\n {renderedChildren}\n </button>\n );\n }\n return renderLink(\n {\n linkAs,\n ...forwardedProps,\n href,\n target,\n className: classNames(className, handleBasicClasses({ prefix: CLASSNAME, color, colorVariant })),\n ref: ref as RefObject<HTMLAnchorElement>,\n },\n renderedChildren,\n );\n});\nLink.displayName = COMPONENT_NAME;\nLink.className = CLASSNAME;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","getIconSize","typography","Typography","display1","Size","m","headline","title","custom","title1","title2","title3","title4","title5","title6","body2","subtitle2","s","body1","subtitle1","xs","caption","overline","xxs","Link","forwardRef","props","ref","children","className","color","colorVariant","disabled","isDisabled","href","leftIcon","linkAs","rightIcon","target","forwardedProps","_objectWithoutProperties","_excluded","renderedChildren","useMemo","React","createElement","Fragment","isEmpty","Icon","icon","size","classNames","_extends","type","handleBasicClasses","prefix","renderLink","_objectSpread","displayName"],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { G as GenericProps, H as HasTheme, S as Size, m as HeadingElement, C as Comp } from '../../8d67e1e3.js';
|
|
2
|
+
import { LinkProps } from '../link/index.ts-26435006.js';
|
|
3
|
+
import { T as ThumbnailProps } from '../../35f100be.js';
|
|
4
|
+
import 'react';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Defines the props of the component.
|
|
8
|
+
*/
|
|
9
|
+
interface LinkPreviewProps extends GenericProps, HasTheme {
|
|
10
|
+
/** Description. */
|
|
11
|
+
description?: string;
|
|
12
|
+
/** Link URL. */
|
|
13
|
+
link: string;
|
|
14
|
+
/** Custom react component for the link (can be used to inject react router Link). */
|
|
15
|
+
linkAs?: 'a' | any;
|
|
16
|
+
/** Props to pass to the link (minus those already set by the LinkPreview props). */
|
|
17
|
+
linkProps?: Omit<LinkProps, 'color' | 'colorVariant' | 'href' | 'target'>;
|
|
18
|
+
/** Size variant. */
|
|
19
|
+
size?: Extract<Size, 'regular' | 'big'>;
|
|
20
|
+
/** Thumbnail for the link preview. */
|
|
21
|
+
thumbnailProps?: ThumbnailProps;
|
|
22
|
+
/** Title. */
|
|
23
|
+
title?: string;
|
|
24
|
+
/** Customize the title heading tag. */
|
|
25
|
+
titleHeading?: HeadingElement;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* LinkPreview component.
|
|
29
|
+
*
|
|
30
|
+
* @param props Component props.
|
|
31
|
+
* @param ref Component ref.
|
|
32
|
+
* @return React element.
|
|
33
|
+
*/
|
|
34
|
+
declare const LinkPreview: Comp<LinkPreviewProps, HTMLDivElement>;
|
|
35
|
+
|
|
36
|
+
export { LinkPreview, type LinkPreviewProps };
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { h as getRootClassName, S as Size, i as forwardRef, T as Theme, j as _objectWithoutProperties, _ as _extends, g as classNames, k as _objectSpread2, f as AspectRatio, C as ColorPalette, a as ColorVariant } from '../../1da25128.js';
|
|
2
|
+
import React__default from 'react';
|
|
3
|
+
import { u as useTheme } from '../../3181f000.js';
|
|
4
|
+
import { h as handleBasicClasses } from '../../f57e1239.js';
|
|
5
|
+
import { Link } from '../link/index.ts-d04f4e53.js';
|
|
6
|
+
import { T as Thumbnail } from '../../4c28d012.js';
|
|
7
|
+
|
|
8
|
+
const _excluded = ["className", "description", "link", "linkAs", "linkProps", "size", "theme", "thumbnailProps", "title", "titleHeading"];
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Defines the props of the component.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Component display name.
|
|
16
|
+
*/
|
|
17
|
+
const COMPONENT_NAME = 'LinkPreview';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Component default class name and class prefix.
|
|
21
|
+
*/
|
|
22
|
+
const CLASSNAME = getRootClassName(COMPONENT_NAME);
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Component default props.
|
|
26
|
+
*/
|
|
27
|
+
const DEFAULT_PROPS = {
|
|
28
|
+
size: Size.regular,
|
|
29
|
+
titleHeading: 'h2'
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* LinkPreview component.
|
|
34
|
+
*
|
|
35
|
+
* @param props Component props.
|
|
36
|
+
* @param ref Component ref.
|
|
37
|
+
* @return React element.
|
|
38
|
+
*/
|
|
39
|
+
const LinkPreview = forwardRef((props, ref) => {
|
|
40
|
+
const defaultTheme = useTheme() || Theme.light;
|
|
41
|
+
const {
|
|
42
|
+
className,
|
|
43
|
+
description,
|
|
44
|
+
link,
|
|
45
|
+
linkAs,
|
|
46
|
+
linkProps,
|
|
47
|
+
size,
|
|
48
|
+
theme = defaultTheme,
|
|
49
|
+
thumbnailProps,
|
|
50
|
+
title,
|
|
51
|
+
titleHeading
|
|
52
|
+
} = props,
|
|
53
|
+
forwardedProps = _objectWithoutProperties(props, _excluded);
|
|
54
|
+
// Use title heading as title wrapper (see DEFAULT_PROPS for the default value).
|
|
55
|
+
const TitleHeading = titleHeading;
|
|
56
|
+
return /*#__PURE__*/React__default.createElement("article", _extends({
|
|
57
|
+
ref: ref
|
|
58
|
+
}, forwardedProps, {
|
|
59
|
+
className: classNames(className, handleBasicClasses({
|
|
60
|
+
prefix: CLASSNAME,
|
|
61
|
+
size: size === Size.big && thumbnailProps ? Size.big : Size.regular,
|
|
62
|
+
theme
|
|
63
|
+
}))
|
|
64
|
+
}), /*#__PURE__*/React__default.createElement("div", {
|
|
65
|
+
className: `${CLASSNAME}__wrapper`
|
|
66
|
+
}, thumbnailProps && /*#__PURE__*/React__default.createElement("div", {
|
|
67
|
+
className: `${CLASSNAME}__thumbnail`
|
|
68
|
+
}, /*#__PURE__*/React__default.createElement(Thumbnail, _extends({}, thumbnailProps, {
|
|
69
|
+
linkAs: linkAs,
|
|
70
|
+
linkProps: _objectSpread2(_objectSpread2({}, linkProps), {}, {
|
|
71
|
+
href: link,
|
|
72
|
+
target: '_blank',
|
|
73
|
+
// Avoid redundant links in focus order
|
|
74
|
+
tabIndex: -1
|
|
75
|
+
}),
|
|
76
|
+
aspectRatio: AspectRatio.free,
|
|
77
|
+
fillHeight: true
|
|
78
|
+
}))), /*#__PURE__*/React__default.createElement("div", {
|
|
79
|
+
className: `${CLASSNAME}__container`
|
|
80
|
+
}, title && /*#__PURE__*/React__default.createElement(TitleHeading, {
|
|
81
|
+
className: `${CLASSNAME}__title`
|
|
82
|
+
}, /*#__PURE__*/React__default.createElement(Link, _extends({}, linkProps, {
|
|
83
|
+
linkAs: linkAs,
|
|
84
|
+
target: "_blank",
|
|
85
|
+
href: link,
|
|
86
|
+
color: theme === Theme.light ? ColorPalette.dark : ColorPalette.light,
|
|
87
|
+
colorVariant: ColorVariant.N
|
|
88
|
+
}), title)), description && /*#__PURE__*/React__default.createElement("p", {
|
|
89
|
+
className: `${CLASSNAME}__description`
|
|
90
|
+
}, description), /*#__PURE__*/React__default.createElement("div", {
|
|
91
|
+
className: `${CLASSNAME}__link`
|
|
92
|
+
}, /*#__PURE__*/React__default.createElement(Link, _extends({}, linkProps, {
|
|
93
|
+
linkAs: linkAs,
|
|
94
|
+
className: classNames(`${CLASSNAME}__link`, linkProps === null || linkProps === void 0 ? void 0 : linkProps.className),
|
|
95
|
+
target: "_blank",
|
|
96
|
+
href: link,
|
|
97
|
+
color: theme === Theme.light ? ColorPalette.primary : ColorPalette.light,
|
|
98
|
+
colorVariant: ColorVariant.N
|
|
99
|
+
// Avoid redundant links in focus order
|
|
100
|
+
,
|
|
101
|
+
tabIndex: title ? '-1' : undefined
|
|
102
|
+
}), link)))));
|
|
103
|
+
});
|
|
104
|
+
LinkPreview.displayName = COMPONENT_NAME;
|
|
105
|
+
LinkPreview.className = CLASSNAME;
|
|
106
|
+
LinkPreview.defaultProps = DEFAULT_PROPS;
|
|
107
|
+
|
|
108
|
+
export { LinkPreview };
|
|
109
|
+
//# sourceMappingURL=index.ts-fee89f66.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.ts-fee89f66.js","sources":["../../../../src/components/link-preview/LinkPreview.tsx"],"sourcesContent":["import React from 'react';\n\nimport classNames from 'classnames';\n\nimport {\n AspectRatio,\n ColorPalette,\n ColorVariant,\n Link,\n LinkProps,\n Size,\n Theme,\n Thumbnail,\n ThumbnailProps,\n} from '@lumx/react';\n\nimport { GenericProps, HeadingElement, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/react/utils/className';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\n/**\n * Defines the props of the component.\n */\nexport interface LinkPreviewProps extends GenericProps, HasTheme {\n /** Description. */\n description?: string;\n /** Link URL. */\n link: string;\n /** Custom react component for the link (can be used to inject react router Link). */\n linkAs?: 'a' | any;\n /** Props to pass to the link (minus those already set by the LinkPreview props). */\n linkProps?: Omit<LinkProps, 'color' | 'colorVariant' | 'href' | 'target'>;\n /** Size variant. */\n size?: Extract<Size, 'regular' | 'big'>;\n /** Thumbnail for the link preview. */\n thumbnailProps?: ThumbnailProps;\n /** Title. */\n title?: string;\n /** Customize the title heading tag. */\n titleHeading?: HeadingElement;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'LinkPreview';\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 = {\n size: Size.regular,\n titleHeading: 'h2',\n} as const;\n\n/**\n * LinkPreview component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const LinkPreview = forwardRef<LinkPreviewProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n className,\n description,\n link,\n linkAs,\n linkProps,\n size,\n theme = defaultTheme,\n thumbnailProps,\n title,\n titleHeading,\n ...forwardedProps\n } = props;\n // Use title heading as title wrapper (see DEFAULT_PROPS for the default value).\n const TitleHeading = titleHeading as HeadingElement;\n\n return (\n <article\n ref={ref}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n size: size === Size.big && thumbnailProps ? Size.big : Size.regular,\n theme,\n }),\n )}\n >\n <div className={`${CLASSNAME}__wrapper`}>\n {thumbnailProps && (\n <div className={`${CLASSNAME}__thumbnail`}>\n <Thumbnail\n {...thumbnailProps}\n linkAs={linkAs}\n linkProps={{\n ...linkProps,\n href: link,\n target: '_blank',\n // Avoid redundant links in focus order\n tabIndex: -1,\n }}\n aspectRatio={AspectRatio.free}\n fillHeight\n />\n </div>\n )}\n\n <div className={`${CLASSNAME}__container`}>\n {title && (\n <TitleHeading className={`${CLASSNAME}__title`}>\n <Link\n {...linkProps}\n linkAs={linkAs}\n target=\"_blank\"\n href={link}\n color={theme === Theme.light ? ColorPalette.dark : ColorPalette.light}\n colorVariant={ColorVariant.N}\n >\n {title}\n </Link>\n </TitleHeading>\n )}\n\n {description && <p className={`${CLASSNAME}__description`}>{description}</p>}\n\n <div className={`${CLASSNAME}__link`}>\n <Link\n {...linkProps}\n linkAs={linkAs}\n className={classNames(`${CLASSNAME}__link`, linkProps?.className)}\n target=\"_blank\"\n href={link}\n color={theme === Theme.light ? ColorPalette.primary : ColorPalette.light}\n colorVariant={ColorVariant.N}\n // Avoid redundant links in focus order\n tabIndex={title ? '-1' : undefined}\n >\n {link}\n </Link>\n </div>\n </div>\n </div>\n </article>\n );\n});\n\nLinkPreview.displayName = COMPONENT_NAME;\nLinkPreview.className = CLASSNAME;\nLinkPreview.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","size","Size","regular","titleHeading","LinkPreview","forwardRef","props","ref","defaultTheme","useTheme","Theme","light","className","description","link","linkAs","linkProps","theme","thumbnailProps","title","forwardedProps","_objectWithoutProperties","_excluded","TitleHeading","React","createElement","_extends","classNames","handleBasicClasses","prefix","big","Thumbnail","_objectSpread","href","target","tabIndex","aspectRatio","AspectRatio","free","fillHeight","Link","color","ColorPalette","dark","colorVariant","ColorVariant","N","primary","undefined","displayName","defaultProps"],"mappings":";;;;;;;;;AAqBA;AACA;AACA;;AAoBA;AACA;AACA;AACA,MAAMA,cAAc,GAAG,aAAa,CAAA;;AAEpC;AACA;AACA;AACA,MAAMC,SAAS,GAAGC,gBAAgB,CAACF,cAAc,CAAC,CAAA;;AAElD;AACA;AACA;AACA,MAAMG,aAAa,GAAG;EAClBC,IAAI,EAAEC,IAAI,CAACC,OAAO;AAClBC,EAAAA,YAAY,EAAE,IAAA;AAClB,CAAU,CAAA;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,WAAW,GAAGC,UAAU,CAAmC,CAACC,KAAK,EAAEC,GAAG,KAAK;EACpF,MAAMC,YAAY,GAAGC,QAAQ,EAAE,IAAIC,KAAK,CAACC,KAAK,CAAA;EAC9C,MAAM;MACFC,SAAS;MACTC,WAAW;MACXC,IAAI;MACJC,MAAM;MACNC,SAAS;MACThB,IAAI;AACJiB,MAAAA,KAAK,GAAGT,YAAY;MACpBU,cAAc;MACdC,KAAK;AACLhB,MAAAA,YAAAA;AAEJ,KAAC,GAAGG,KAAK;AADFc,IAAAA,cAAc,GAAAC,wBAAA,CACjBf,KAAK,EAAAgB,SAAA,CAAA,CAAA;AACT;EACA,MAAMC,YAAY,GAAGpB,YAA8B,CAAA;AAEnD,EAAA,oBACIqB,cAAA,CAAAC,aAAA,CAAA,SAAA,EAAAC,QAAA,CAAA;AACInB,IAAAA,GAAG,EAAEA,GAAAA;AAAI,GAAA,EACLa,cAAc,EAAA;AAClBR,IAAAA,SAAS,EAAEe,UAAU,CACjBf,SAAS,EACTgB,kBAAkB,CAAC;AACfC,MAAAA,MAAM,EAAEhC,SAAS;AACjBG,MAAAA,IAAI,EAAEA,IAAI,KAAKC,IAAI,CAAC6B,GAAG,IAAIZ,cAAc,GAAGjB,IAAI,CAAC6B,GAAG,GAAG7B,IAAI,CAACC,OAAO;AACnEe,MAAAA,KAAAA;AACJ,KAAC,CACL,CAAA;GAEAO,CAAAA,eAAAA,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;IAAKb,SAAS,EAAG,GAAEf,SAAU,CAAA,SAAA,CAAA;AAAW,GAAA,EACnCqB,cAAc,iBACXM,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;IAAKb,SAAS,EAAG,GAAEf,SAAU,CAAA,WAAA,CAAA;GACzB2B,eAAAA,cAAA,CAAAC,aAAA,CAACM,SAAS,EAAAL,QAAA,KACFR,cAAc,EAAA;AAClBH,IAAAA,MAAM,EAAEA,MAAO;AACfC,IAAAA,SAAS,EAAAgB,cAAA,CAAAA,cAAA,KACFhB,SAAS,CAAA,EAAA,EAAA,EAAA;AACZiB,MAAAA,IAAI,EAAEnB,IAAI;AACVoB,MAAAA,MAAM,EAAE,QAAQ;AAChB;AACAC,MAAAA,QAAQ,EAAE,CAAC,CAAA;KACb,CAAA;IACFC,WAAW,EAAEC,WAAW,CAACC,IAAK;IAC9BC,UAAU,EAAA,IAAA;AAAA,GAAA,CACb,CACA,CACR,eAEDf,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;IAAKb,SAAS,EAAG,GAAEf,SAAU,CAAA,WAAA,CAAA;AAAa,GAAA,EACrCsB,KAAK,iBACFK,cAAA,CAAAC,aAAA,CAACF,YAAY,EAAA;IAACX,SAAS,EAAG,GAAEf,SAAU,CAAA,OAAA,CAAA;GAClC2B,eAAAA,cAAA,CAAAC,aAAA,CAACe,IAAI,EAAAd,QAAA,KACGV,SAAS,EAAA;AACbD,IAAAA,MAAM,EAAEA,MAAO;AACfmB,IAAAA,MAAM,EAAC,QAAQ;AACfD,IAAAA,IAAI,EAAEnB,IAAK;AACX2B,IAAAA,KAAK,EAAExB,KAAK,KAAKP,KAAK,CAACC,KAAK,GAAG+B,YAAY,CAACC,IAAI,GAAGD,YAAY,CAAC/B,KAAM;IACtEiC,YAAY,EAAEC,YAAY,CAACC,CAAAA;GAE1B3B,CAAAA,EAAAA,KACC,CACI,CACjB,EAEAN,WAAW,iBAAIW,cAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;IAAGb,SAAS,EAAG,GAAEf,SAAU,CAAA,aAAA,CAAA;AAAe,GAAA,EAAEgB,WAAe,CAAC,eAE5EW,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;IAAKb,SAAS,EAAG,GAAEf,SAAU,CAAA,MAAA,CAAA;GACzB2B,eAAAA,cAAA,CAAAC,aAAA,CAACe,IAAI,EAAAd,QAAA,KACGV,SAAS,EAAA;AACbD,IAAAA,MAAM,EAAEA,MAAO;AACfH,IAAAA,SAAS,EAAEe,UAAU,CAAE,CAAA,EAAE9B,SAAU,CAAO,MAAA,CAAA,EAAEmB,SAAS,KAAA,IAAA,IAATA,SAAS,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAATA,SAAS,CAAEJ,SAAS,CAAE;AAClEsB,IAAAA,MAAM,EAAC,QAAQ;AACfD,IAAAA,IAAI,EAAEnB,IAAK;AACX2B,IAAAA,KAAK,EAAExB,KAAK,KAAKP,KAAK,CAACC,KAAK,GAAG+B,YAAY,CAACK,OAAO,GAAGL,YAAY,CAAC/B,KAAM;IACzEiC,YAAY,EAAEC,YAAY,CAACC,CAAAA;AAC3B;AAAA;AACAX,IAAAA,QAAQ,EAAEhB,KAAK,GAAG,IAAI,GAAG6B,SAAAA;AAAU,GAAA,CAAA,EAElClC,IACC,CACL,CACJ,CACJ,CACA,CAAC,CAAA;AAElB,CAAC,EAAC;AAEFV,WAAW,CAAC6C,WAAW,GAAGrD,cAAc,CAAA;AACxCQ,WAAW,CAACQ,SAAS,GAAGf,SAAS,CAAA;AACjCO,WAAW,CAAC8C,YAAY,GAAGnD,aAAa;;;;"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import React, { RefObject, SetStateAction, ReactNode, Key, SyntheticEvent, Ref } from 'react';
|
|
2
|
+
import { G as GenericProps, S as Size, C as Comp } from '../../8d67e1e3.js';
|
|
3
|
+
|
|
4
|
+
type Listener = (evt: KeyboardEvent) => void;
|
|
5
|
+
interface UseKeyboardListNavigationType {
|
|
6
|
+
/** the current active index */
|
|
7
|
+
activeItemIndex: number;
|
|
8
|
+
/** callback to be used when a key is pressed. usually used with the native prop `onKeyDown` */
|
|
9
|
+
onKeyboardNavigation: Listener;
|
|
10
|
+
/** Resets the active index to the initial state */
|
|
11
|
+
resetActiveIndex(): void;
|
|
12
|
+
/** Sets the active index to a given value */
|
|
13
|
+
setActiveItemIndex(value: SetStateAction<number>): void;
|
|
14
|
+
}
|
|
15
|
+
type useKeyboardListNavigationType = <I>(items: I[], ref: RefObject<HTMLElement>, onListItemSelected: (itemSelected: I) => void, onListItemNavigated?: (itemSelected: I) => void, onEnterPressed?: (itemSelected: string) => void, onBackspacePressed?: Listener, keepFocusAfterSelection?: boolean, initialIndex?: number, preventTabOnEnteredValue?: boolean) => UseKeyboardListNavigationType;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Defines the props of the component.
|
|
19
|
+
*/
|
|
20
|
+
interface ListProps extends GenericProps {
|
|
21
|
+
/** List content (should be ListItem, ListSubheader or ListDivider). */
|
|
22
|
+
children: ReactNode;
|
|
23
|
+
/**
|
|
24
|
+
* Whether the list items are clickable.
|
|
25
|
+
* @deprecated not needed anymore.
|
|
26
|
+
*/
|
|
27
|
+
isClickable?: boolean;
|
|
28
|
+
/** Item padding size. */
|
|
29
|
+
itemPadding?: Extract<Size, 'big' | 'huge'>;
|
|
30
|
+
/** Tab index of the list. Default to -1 */
|
|
31
|
+
tabIndex?: number;
|
|
32
|
+
/**
|
|
33
|
+
* On list item selected callback.
|
|
34
|
+
*
|
|
35
|
+
* @param key React key of the selected item.
|
|
36
|
+
* @param index Index of the selected item among the sibling items.
|
|
37
|
+
* @param evt Source event (either mouse or keyboard event).
|
|
38
|
+
*/
|
|
39
|
+
onListItemSelected?(key: Key, index: number, evt: SyntheticEvent): void;
|
|
40
|
+
}
|
|
41
|
+
declare const List: Comp<ListProps, HTMLUListElement> & {
|
|
42
|
+
useKeyboardListNavigation: useKeyboardListNavigationType;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
type ListItemSize = Extract<Size, 'tiny' | 'regular' | 'big' | 'huge'>;
|
|
46
|
+
/**
|
|
47
|
+
* Defines the props of the component.
|
|
48
|
+
*/
|
|
49
|
+
interface ListItemProps extends GenericProps {
|
|
50
|
+
/** A component to be rendered after the content. */
|
|
51
|
+
after?: ReactNode;
|
|
52
|
+
/** A component to be rendered before the content. */
|
|
53
|
+
before?: ReactNode;
|
|
54
|
+
/** Content. */
|
|
55
|
+
children: string | ReactNode;
|
|
56
|
+
/** Whether the list item should be highlighted or not. */
|
|
57
|
+
isHighlighted?: boolean;
|
|
58
|
+
/** Whether the component is selected or not. */
|
|
59
|
+
isSelected?: boolean;
|
|
60
|
+
/** Whether link/button is disabled or not. */
|
|
61
|
+
isDisabled?: boolean;
|
|
62
|
+
/** Reference to the <li> element. */
|
|
63
|
+
listItemRef?: Ref<HTMLLIElement>;
|
|
64
|
+
/** Custom react component for the link (can be used to inject react router Link). */
|
|
65
|
+
linkAs?: 'a' | any;
|
|
66
|
+
/** Props that will be passed on to the Link */
|
|
67
|
+
linkProps?: React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>;
|
|
68
|
+
/** Reference to the link element. */
|
|
69
|
+
linkRef?: Ref<HTMLAnchorElement>;
|
|
70
|
+
/** Size variant. */
|
|
71
|
+
size?: ListItemSize;
|
|
72
|
+
/** On selected callback. */
|
|
73
|
+
onItemSelected?(evt: SyntheticEvent): void;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Check if the list item is clickable.
|
|
77
|
+
* @return `true` if the list item is clickable; `false` otherwise.
|
|
78
|
+
*/
|
|
79
|
+
declare function isClickable({ linkProps, onItemSelected }: Partial<ListItemProps>): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* ListItem component.
|
|
82
|
+
*
|
|
83
|
+
* @param props Component props.
|
|
84
|
+
* @param ref Component ref.
|
|
85
|
+
* @return React element.
|
|
86
|
+
*/
|
|
87
|
+
declare const ListItem: Comp<ListItemProps, HTMLLIElement>;
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Defines the props of the component.
|
|
91
|
+
*/
|
|
92
|
+
type ListDividerProps = GenericProps;
|
|
93
|
+
/**
|
|
94
|
+
* ListDivider component.
|
|
95
|
+
*
|
|
96
|
+
* @param props Component props.
|
|
97
|
+
* @param ref Component ref.
|
|
98
|
+
* @return React element.
|
|
99
|
+
*/
|
|
100
|
+
declare const ListDivider: Comp<GenericProps, HTMLLIElement>;
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Defines the props of the component.
|
|
104
|
+
*/
|
|
105
|
+
interface ListSubheaderProps extends GenericProps {
|
|
106
|
+
/** Content. */
|
|
107
|
+
children: string | ReactNode;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* ListSubheader component.
|
|
111
|
+
*
|
|
112
|
+
* @param props Component props.
|
|
113
|
+
* @param ref Component ref.
|
|
114
|
+
* @return React element.
|
|
115
|
+
*/
|
|
116
|
+
declare const ListSubheader: Comp<ListSubheaderProps, HTMLLIElement>;
|
|
117
|
+
|
|
118
|
+
export { List, ListDivider, type ListDividerProps, ListItem, type ListItemProps, type ListItemSize, type ListProps, ListSubheader, type ListSubheaderProps, isClickable };
|