@lumx/react 3.20.1-alpha.31 → 3.20.1-alpha.32
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-f382ee1c.js → Button-1b7d3b79.js} +9 -8
- package/_internal/Button-1b7d3b79.js.map +1 -0
- package/_internal/ButtonRoot-a70baf82.js.map +1 -1
- package/_internal/{Chip-70af04b4.js → Chip-8fbedc93.js} +10 -7
- package/_internal/Chip-8fbedc93.js.map +1 -0
- package/_internal/{ClickAwayProvider-1204f237.js → ClickAwayProvider-7093ba23.js} +2 -2
- package/_internal/ClickAwayProvider-7093ba23.js.map +1 -0
- package/_internal/{IconButton-1790b47e.js → IconButton-e11b5e74.js} +3 -3
- package/_internal/{IconButton-1790b47e.js.map → IconButton-e11b5e74.js.map} +1 -1
- package/_internal/{ImageCaption-16bf224b.js → ImageCaption-6f2f4131.js} +3 -3
- package/_internal/{ImageCaption-16bf224b.js.map → ImageCaption-6f2f4131.js.map} +1 -1
- package/_internal/{List-c75646f2.js → List-4e95288a.js} +9 -7
- package/_internal/List-4e95288a.js.map +1 -0
- package/_internal/{PopoverDialog-3b63f140.js → PopoverDialog-d85ff977.js} +10 -10
- package/_internal/PopoverDialog-d85ff977.js.map +1 -0
- package/_internal/{Slides-2a427c44.js → Slides-68a7d0e6.js} +13 -6
- package/_internal/Slides-68a7d0e6.js.map +1 -0
- package/_internal/{Thumbnail-d2001ccb.js → Thumbnail-22bbea7e.js} +4 -3
- package/_internal/Thumbnail-22bbea7e.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-bd1b2532.js → alert-dialog-5326cf04.js} +6 -5
- package/_internal/components/{alert-dialog-bd1b2532.js.map → alert-dialog-5326cf04.js.map} +1 -1
- package/_internal/components/{autocomplete-8ae2c4f9.js → autocomplete-7d9581e8.js} +7 -7
- package/_internal/components/{autocomplete-8ae2c4f9.js.map → autocomplete-7d9581e8.js.map} +1 -1
- package/_internal/components/{avatar-778d7df6.js → avatar-52bb217f.js} +2 -2
- package/_internal/components/{avatar-778d7df6.js.map → avatar-52bb217f.js.map} +1 -1
- package/_internal/components/{button-4aff084a.js → button-c4127e86.js} +3 -3
- package/_internal/components/{button-4aff084a.js.map → button-c4127e86.js.map} +1 -1
- package/_internal/components/{checkbox-a448ca6c.js → checkbox-f7751583.js} +6 -3
- package/_internal/components/checkbox-f7751583.js.map +1 -0
- package/_internal/components/{chip-19e40755.js → chip-1ed080fb.js} +2 -2
- package/_internal/components/{chip-19e40755.js.map → chip-1ed080fb.js.map} +1 -1
- package/_internal/components/{comment-block-bcbedf3c.js → comment-block-343e1922.js} +3 -3
- package/_internal/components/{comment-block-bcbedf3c.js.map → comment-block-343e1922.js.map} +1 -1
- package/_internal/components/date-picker-b6b3dc77.js +2 -0
- package/_internal/components/date-picker-b6b3dc77.js.map +1 -0
- package/_internal/components/{dialog-30336ccb.js → dialog-d0e090b1.js} +6 -6
- package/_internal/components/dialog-d0e090b1.js.map +1 -0
- package/_internal/components/{drag-handle-137f71b6.js → drag-handle-eec23fc2.js} +4 -3
- package/_internal/components/drag-handle-eec23fc2.js.map +1 -0
- package/_internal/components/{dropdown-d18122d7.js → dropdown-25170b7c.js} +4 -4
- package/_internal/components/{dropdown-d18122d7.js.map → dropdown-25170b7c.js.map} +1 -1
- package/_internal/components/{expansion-panel-38ed3d9f.js → expansion-panel-df812318.js} +9 -9
- package/_internal/components/expansion-panel-df812318.js.map +1 -0
- package/_internal/components/{flag-c2e41e8d.js → flag-c8d690bc.js} +3 -3
- package/_internal/components/{flag-c2e41e8d.js.map → flag-c8d690bc.js.map} +1 -1
- package/_internal/components/{flex-box-15be92f6.js → flex-box-4eeba972.js} +2 -2
- package/_internal/components/flex-box-4eeba972.js.map +1 -0
- package/_internal/components/{generic-block-5d843f1e.js → generic-block-964b2724.js} +11 -14
- package/_internal/components/generic-block-964b2724.js.map +1 -0
- package/_internal/components/{grid-column-85e305e7.js → grid-column-99652545.js} +3 -2
- package/_internal/components/grid-column-99652545.js.map +1 -0
- package/_internal/components/{heading-28520e1c.js → heading-6cc0f178.js} +2 -2
- package/_internal/components/{heading-28520e1c.js.map → heading-6cc0f178.js.map} +1 -1
- package/_internal/components/icon-9cf785b1.js +2 -0
- package/_internal/components/icon-9cf785b1.js.map +1 -0
- package/_internal/components/{image-block-10976174.js → image-block-4f3fe64c.js} +3 -3
- package/_internal/components/{image-block-10976174.js.map → image-block-4f3fe64c.js.map} +1 -1
- package/_internal/components/{image-lightbox-86f1e1fb.js → image-lightbox-7b172571.js} +12 -9
- package/_internal/components/image-lightbox-7b172571.js.map +1 -0
- package/_internal/components/{lightbox-c618a33b.js → lightbox-10ff28f9.js} +6 -6
- package/_internal/components/{lightbox-c618a33b.js.map → lightbox-10ff28f9.js.map} +1 -1
- package/_internal/components/{link-9c3feb34.js → link-9d1bd2f6.js} +3 -3
- package/_internal/components/{link-9c3feb34.js.map → link-9d1bd2f6.js.map} +1 -1
- package/_internal/components/{link-preview-79500604.js → link-preview-9525e97f.js} +3 -3
- package/_internal/components/{link-preview-79500604.js.map → link-preview-9525e97f.js.map} +1 -1
- package/_internal/components/{list-2f256244.js → list-c8c7a6eb.js} +2 -2
- package/_internal/components/{list-2f256244.js.map → list-c8c7a6eb.js.map} +1 -1
- package/_internal/components/{message-a3806f51.js → message-edd6a28a.js} +6 -4
- package/_internal/components/{message-a3806f51.js.map → message-edd6a28a.js.map} +1 -1
- package/_internal/components/{mosaic-e6581097.js → mosaic-c8084ee8.js} +4 -3
- package/_internal/components/mosaic-c8084ee8.js.map +1 -0
- package/_internal/components/{navigation-5378f128.js → navigation-c9121998.js} +6 -6
- package/_internal/components/{navigation-5378f128.js.map → navigation-c9121998.js.map} +1 -1
- package/_internal/components/{notification-49837625.js → notification-97a8a04a.js} +9 -5
- package/_internal/components/notification-97a8a04a.js.map +1 -0
- package/_internal/components/popover-f93484cd.js +3 -0
- package/_internal/components/popover-f93484cd.js.map +1 -0
- package/_internal/components/{post-block-478bc3b8.js → post-block-7e63c4f4.js} +12 -12
- package/_internal/components/post-block-7e63c4f4.js.map +1 -0
- package/_internal/components/{progress-tracker-0fd35bea.js → progress-tracker-c9758d83.js} +7 -3
- package/_internal/components/progress-tracker-c9758d83.js.map +1 -0
- package/_internal/components/{select-a145edbb.js → select-bea40e77.js} +15 -10
- package/_internal/components/select-bea40e77.js.map +1 -0
- package/_internal/components/{side-navigation-b99d6022.js → side-navigation-385825d4.js} +7 -6
- package/_internal/components/side-navigation-385825d4.js.map +1 -0
- package/_internal/components/{slideshow-b78ac3d6.js → slideshow-e0880d40.js} +3 -3
- package/_internal/components/{slideshow-b78ac3d6.js.map → slideshow-e0880d40.js.map} +1 -1
- package/_internal/components/{switch-25b65051.js → switch-24fea8d7.js} +3 -2
- package/_internal/components/switch-24fea8d7.js.map +1 -0
- package/_internal/components/{table-3cbee034.js → table-834af792.js} +6 -3
- package/_internal/components/table-834af792.js.map +1 -0
- package/_internal/components/{tabs-5d8ea1a5.js → tabs-bebfe959.js} +3 -3
- package/_internal/components/{tabs-5d8ea1a5.js.map → tabs-bebfe959.js.map} +1 -1
- package/_internal/components/text-9074f440.js +2 -0
- package/_internal/components/text-9074f440.js.map +1 -0
- package/_internal/components/{text-field-c26582c5.js → text-field-8597b7f7.js} +7 -5
- package/_internal/components/text-field-8597b7f7.js.map +1 -0
- package/_internal/components/{thumbnail-cb55b26c.js → thumbnail-4928bba2.js} +2 -2
- package/_internal/components/{thumbnail-cb55b26c.js.map → thumbnail-4928bba2.js.map} +1 -1
- package/_internal/components/{tooltip-dcb43bbe.js → tooltip-21018736.js} +2 -2
- package/_internal/components/{tooltip-dcb43bbe.js.map → tooltip-21018736.js.map} +1 -1
- package/_internal/components/{uploader-873b9bc1.js → uploader-2e1b080e.js} +2 -2
- package/_internal/components/{uploader-873b9bc1.js.map → uploader-2e1b080e.js.map} +1 -1
- package/_internal/components/{user-block-7cbaffe0.js → user-block-5fd51607.js} +12 -11
- package/_internal/components/user-block-5fd51607.js.map +1 -0
- package/_internal/{index-151e2652.js → index-77f213b1.js} +2 -2
- package/_internal/{index-151e2652.js.map → index-77f213b1.js.map} +1 -1
- package/_internal/{index-25d2a45e.js → index-aa6d1d90.js} +4 -4
- package/_internal/{index-25d2a45e.js.map → index-aa6d1d90.js.map} +1 -1
- package/_internal/{components/icon-a00d698b.js → index-d3e86bd8.js} +6 -5
- package/_internal/index-d3e86bd8.js.map +1 -0
- package/_internal/information-49bbeed3.js +6 -0
- package/_internal/information-49bbeed3.js.map +1 -0
- package/_internal/{isComponent-b9762ff1.js → isComponent-78df9309.js} +5 -3
- package/_internal/isComponent-78df9309.js.map +1 -0
- package/_internal/partitionMulti-4daccdd5.js +25 -0
- package/_internal/partitionMulti-4daccdd5.js.map +1 -0
- package/_internal/{useCallbackOnEscape-b956a85d.js → useCallbackOnEscape-ea4d9eb4.js} +4 -6
- package/_internal/useCallbackOnEscape-ea4d9eb4.js.map +1 -0
- package/_internal/{useFocusTrap-2dbae79e.js → useFocusTrap-c3c6378b.js} +2 -2
- package/_internal/{useFocusTrap-2dbae79e.js.map → useFocusTrap-c3c6378b.js.map} +1 -1
- package/_internal/{wrapChildrenIconWithSpaces-ef2a6772.js → wrapChildrenIconWithSpaces-fb85a743.js} +2 -2
- package/_internal/{wrapChildrenIconWithSpaces-ef2a6772.js.map → wrapChildrenIconWithSpaces-fb85a743.js.map} +1 -1
- package/index.d.ts +15 -4
- package/index.js +49 -49
- package/package.json +3 -3
- package/utils/index.js +1 -1
- package/_internal/Button-f382ee1c.js.map +0 -1
- package/_internal/Chip-70af04b4.js.map +0 -1
- package/_internal/ClickAwayProvider-1204f237.js.map +0 -1
- package/_internal/List-c75646f2.js.map +0 -1
- package/_internal/PopoverDialog-3b63f140.js.map +0 -1
- package/_internal/Slides-2a427c44.js.map +0 -1
- package/_internal/Thumbnail-d2001ccb.js.map +0 -1
- package/_internal/components/checkbox-a448ca6c.js.map +0 -1
- package/_internal/components/date-picker-b6d4048e.js +0 -2
- package/_internal/components/date-picker-b6d4048e.js.map +0 -1
- package/_internal/components/dialog-30336ccb.js.map +0 -1
- package/_internal/components/drag-handle-137f71b6.js.map +0 -1
- package/_internal/components/expansion-panel-38ed3d9f.js.map +0 -1
- package/_internal/components/flex-box-15be92f6.js.map +0 -1
- package/_internal/components/generic-block-5d843f1e.js.map +0 -1
- package/_internal/components/grid-column-85e305e7.js.map +0 -1
- package/_internal/components/icon-a00d698b.js.map +0 -1
- package/_internal/components/image-lightbox-86f1e1fb.js.map +0 -1
- package/_internal/components/mosaic-e6581097.js.map +0 -1
- package/_internal/components/notification-49837625.js.map +0 -1
- package/_internal/components/popover-dfcddda4.js +0 -3
- package/_internal/components/popover-dfcddda4.js.map +0 -1
- package/_internal/components/post-block-478bc3b8.js.map +0 -1
- package/_internal/components/progress-tracker-0fd35bea.js.map +0 -1
- package/_internal/components/select-a145edbb.js.map +0 -1
- package/_internal/components/side-navigation-b99d6022.js.map +0 -1
- package/_internal/components/switch-25b65051.js.map +0 -1
- package/_internal/components/table-3cbee034.js.map +0 -1
- package/_internal/components/text-f84a5417.js +0 -2
- package/_internal/components/text-f84a5417.js.map +0 -1
- package/_internal/components/text-field-c26582c5.js.map +0 -1
- package/_internal/components/user-block-7cbaffe0.js.map +0 -1
- package/_internal/isComponent-b9762ff1.js.map +0 -1
- package/_internal/useCallbackOnEscape-b956a85d.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"List-c75646f2.js","sources":["../../src/hooks/useKeyboardListNavigation.tsx","../../src/utils/react/renderLink.tsx","../../src/components/list/ListItem.tsx","../../../../node_modules/react-is/cjs/react-is.production.min.js","../../../../node_modules/react-is/cjs/react-is.development.js","../../../../node_modules/react-is/index.js","../../src/utils/react/flattenChildren.ts","../../src/components/list/useInteractiveList.tsx","../../src/components/list/List.tsx"],"sourcesContent":["import { RefObject, SetStateAction, useEffect, useState } from 'react';\n\ntype Listener = (evt: KeyboardEvent) => void;\n\ninterface UseKeyboardListNavigationType {\n /** the current active index */\n activeItemIndex: number;\n /** callback to be used when a key is pressed. usually used with the native prop `onKeyDown` */\n onKeyboardNavigation: Listener;\n /** Resets the active index to the initial state */\n resetActiveIndex(): void;\n /** Sets the active index to a given value */\n setActiveItemIndex(value: SetStateAction<number>): void;\n}\n\nexport type useKeyboardListNavigationType = <I>(\n items: I[],\n ref: RefObject<HTMLElement>,\n onListItemSelected: (itemSelected: I) => void,\n onListItemNavigated?: (itemSelected: I) => void,\n onEnterPressed?: (itemSelected: string) => void,\n onBackspacePressed?: Listener,\n keepFocusAfterSelection?: boolean,\n initialIndex?: number,\n preventTabOnEnteredValue?: boolean,\n) => UseKeyboardListNavigationType;\n\nconst INITIAL_INDEX = -1;\n\n/**\n * This custom hook provides the necessary set of functions and values to properly navigate\n * a list using the keyboard.\n *\n * @param items the list of items that will be navigated using the keyboard.\n * @param ref A reference to the element that is controlling the navigation.\n * @param onListItemSelected callback to be executed when the ENTER key is pressed on an item.\n * @param onListItemNavigated callback to be executed when the Arrow keys are pressed.\n * @param onEnterPressed callback to be executed when the ENTER key is pressed.\n * @param onBackspacePressed callback to be executed when the BACKSPACE key is pressed.\n * @param keepFocusAfterSelection determines whether after selecting an item, the focus should be maintained on the current target or not.\n * @param initialIndex where should the navigation start from. it defaults to `-1`, so the first item navigated is the item on position `0`.\n * @param preventTabOnEnteredValue determines whether upon TAB, if there is a value entered, the event is prevented or not.\n * @return useKeyboardListNavigation helpers.\n */\nexport const useKeyboardListNavigation: useKeyboardListNavigationType = (\n items,\n ref,\n onListItemSelected,\n onListItemNavigated,\n onEnterPressed,\n onBackspacePressed,\n keepFocusAfterSelection = false,\n initialIndex = INITIAL_INDEX,\n preventTabOnEnteredValue = true,\n) => {\n const [activeItemIndex, setActiveItemIndex] = useState(initialIndex);\n\n /**\n * This function calculates the next index in the list to be highlighted\n * @param key - key code pressed\n * @return next active index\n */\n const calculateActiveIndex = (key: string): number => {\n switch (key) {\n case 'ArrowDown':\n return activeItemIndex + 1 < items.length ? activeItemIndex + 1 : 0;\n case 'ArrowUp':\n return activeItemIndex - 1 >= 0 ? activeItemIndex - 1 : items.length - 1;\n default:\n return initialIndex;\n }\n };\n\n /**\n * Resets the active index to the initial state\n */\n const resetActiveIndex = () => {\n setActiveItemIndex(initialIndex);\n };\n\n /**\n * Prevents the default event and stops the propagation of said event\n * @param evt - key pressed event\n */\n const preventDefaultAndStopPropagation: Listener = (evt) => {\n evt.preventDefault();\n evt.stopPropagation();\n };\n\n /**\n * Handles navigation with the arrows using the keyboard\n * @param evt - key pressed event\n */\n const onArrowPressed: Listener = (evt) => {\n const { key } = evt;\n const nextActiveIndex = calculateActiveIndex(key);\n setActiveItemIndex(nextActiveIndex);\n preventDefaultAndStopPropagation(evt);\n if (onListItemNavigated) {\n const selectedItem = items[nextActiveIndex];\n onListItemNavigated(selectedItem);\n }\n };\n\n /**\n * Handles the event when the backspace key is pressed\n * @param evt - key pressed event\n */\n const onBackspaceKeyPressed: Listener = (evt) => {\n if (onBackspacePressed) {\n onBackspacePressed(evt);\n }\n };\n\n /**\n * Handles when the ENTER key is pressed\n * @param evt - key pressed event\n */\n const onEnterKeyPressed: Listener = (evt) => {\n if (!onListItemSelected) {\n return;\n }\n\n preventDefaultAndStopPropagation(evt);\n\n if (!keepFocusAfterSelection) {\n (evt.currentTarget as HTMLElement).blur();\n }\n\n const selectedItem = items[activeItemIndex];\n\n if (selectedItem) {\n onListItemSelected(selectedItem);\n resetActiveIndex();\n } else if (activeItemIndex === initialIndex && onEnterPressed) {\n const value = (evt.target as any)?.value;\n onEnterPressed(value);\n resetActiveIndex();\n }\n };\n\n /**\n * Handles when the TAB key is pressed\n * @param evt - key pressed event\n */\n const onTabKeyPressed: Listener = (evt) => {\n const value = (evt.target as any)?.value;\n\n if (preventTabOnEnteredValue && value && value.length > 0) {\n preventDefaultAndStopPropagation(evt);\n }\n };\n\n /**\n * In order to make it easier in the future to add new events depending on the key\n * a map was created to add these handlers. In the future, if there is another event\n * that we need to manage depending on a specific key, we just need to add the key code\n * here, and as a value, the handler for said key.\n */\n const eventsForKeyPressed: Record<string, Listener> = {\n ArrowDown: onArrowPressed,\n Tab: onTabKeyPressed,\n ArrowUp: onArrowPressed,\n Enter: onEnterKeyPressed,\n Backspace: onBackspaceKeyPressed,\n };\n\n /**\n * Calculates the next active item index depending on the key pressed.\n * If the key pressed was ENTER, the function executes the callback `onListItemSelected`\n * and resets the active index, since an item was selected.\n * @param evt - key pressed or key down event\n */\n const onKeyboardNavigation: Listener = (evt) => {\n const { key } = evt;\n const handler = eventsForKeyPressed[key];\n\n if (handler) {\n handler(evt);\n }\n };\n\n useEffect(() => {\n const { current: currentElement } = ref;\n if (!currentElement) {\n return undefined;\n }\n currentElement.addEventListener('focus', resetActiveIndex);\n currentElement.addEventListener('keydown', onKeyboardNavigation);\n return () => {\n currentElement.removeEventListener('focus', resetActiveIndex);\n currentElement.removeEventListener('keydown', onKeyboardNavigation);\n };\n });\n\n return {\n activeItemIndex,\n onKeyboardNavigation,\n resetActiveIndex,\n setActiveItemIndex,\n };\n};\n","import React, { ReactElement, ReactNode } from 'react';\n\ninterface Props {\n linkAs?: any;\n}\n\n/**\n * Render link with default <a> HTML component or a custom one provided by `linkAs`.\n *\n * Can be used to inject the `Link` component from `react-router` and provide better a11y on LumX components.\n *\n * @param linkAs Custom link component.\n * @param children Link children.\n * @return A link.\n */\nexport const renderLink = <P extends Props>({ linkAs, ...forwardedProps }: P, ...children: ReactNode[]): ReactElement =>\n React.createElement(linkAs || 'a', forwardedProps, ...children);\n","import { ReactNode, Ref, SyntheticEvent, useMemo } from 'react';\n\nimport classNames from 'classnames';\n\nimport { ListProps, Size } from '@lumx/react';\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { onEnterPressed, onButtonPressed } from '@lumx/core/js/utils';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { renderLink } from '@lumx/react/utils/react/renderLink';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\nimport { useDisableStateProps } from '@lumx/react/utils/disabled/useDisableStateProps';\nimport { HasAriaDisabled } from '@lumx/react/utils/type/HasAriaDisabled';\n\nexport type ListItemSize = Extract<Size, 'tiny' | 'regular' | 'big' | 'huge'>;\n\n/**\n * Defines the props of the component.\n */\nexport interface ListItemProps extends GenericProps, 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 /** Content. */\n children: string | ReactNode;\n /** Whether the list item should be highlighted or not. */\n isHighlighted?: boolean;\n /** Whether the component is selected or not. */\n isSelected?: boolean;\n /** Whether link/button is disabled or not. */\n isDisabled?: boolean;\n /** Reference to the <li> element. */\n listItemRef?: Ref<HTMLLIElement>;\n /** Custom react component for the link (can be used to inject react router Link). */\n linkAs?: 'a' | any;\n /** Props that will be passed on to the Link */\n linkProps?: React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>;\n /** Reference to the link element. */\n linkRef?: Ref<HTMLAnchorElement>;\n /** Size variant. */\n size?: ListItemSize;\n\n /** On selected callback. */\n onItemSelected?(evt: SyntheticEvent): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'ListItem';\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<ListProps> = {\n size: Size.regular,\n};\n\n/**\n * Check if the list item is clickable.\n * @return `true` if the list item is clickable; `false` otherwise.\n */\nexport function isClickable({ linkProps, onItemSelected }: Partial<ListItemProps>): boolean {\n return !!linkProps?.href || !!onItemSelected;\n}\n\n/**\n * ListItem component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const ListItem = forwardRef<ListItemProps, HTMLLIElement>((props, ref) => {\n const { isAnyDisabled, disabledStateProps, otherProps } = useDisableStateProps(props);\n const {\n after,\n before,\n children,\n className,\n isHighlighted,\n isSelected,\n linkAs,\n linkProps = {},\n linkRef,\n onItemSelected,\n size = DEFAULT_PROPS.size,\n ...forwardedProps\n } = otherProps;\n\n const role = linkAs || linkProps.href ? 'link' : 'button';\n const onKeyDown = useMemo(() => {\n if (onItemSelected && role === 'link') return onEnterPressed(onItemSelected as any);\n if (onItemSelected && role === 'button') return onButtonPressed(onItemSelected as any);\n return undefined;\n }, [role, onItemSelected]);\n\n const content = (\n <>\n {before && <div className={`${CLASSNAME}__before`}>{before}</div>}\n <div className={`${CLASSNAME}__content`}>{children}</div>\n {after && <div className={`${CLASSNAME}__after`}>{after}</div>}\n </>\n );\n\n return (\n <li\n ref={ref}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n size,\n }),\n )}\n >\n {isClickable({ linkProps, onItemSelected }) ? (\n /* Clickable list item */\n renderLink(\n {\n linkAs,\n tabIndex: !disabledStateProps.disabled ? 0 : undefined,\n role,\n 'aria-disabled': isAnyDisabled,\n ...linkProps,\n href: isAnyDisabled ? undefined : linkProps.href,\n className: classNames(\n handleBasicClasses({\n prefix: `${CLASSNAME}__link`,\n isHighlighted,\n isSelected,\n isDisabled: isAnyDisabled,\n }),\n ),\n onClick: isAnyDisabled ? undefined : onItemSelected,\n onKeyDown: isAnyDisabled ? undefined : onKeyDown,\n ref: linkRef,\n },\n content,\n )\n ) : (\n /* Non clickable list item */\n <div className={`${CLASSNAME}__wrapper`}>{content}</div>\n )}\n </li>\n );\n});\nListItem.displayName = COMPONENT_NAME;\nListItem.className = CLASSNAME;\nListItem.defaultProps = DEFAULT_PROPS;\n","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_SERVER_CONTEXT_TYPE:\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\nvar hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isConcurrentMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsConcurrentMode) {\n hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\nfunction isSuspenseList(object) {\n return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n}\n\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.SuspenseList = SuspenseList;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isSuspenseList = isSuspenseList;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import { Children, Key, ReactChild, ReactNode, cloneElement, isValidElement, ReactElement } from 'react';\nimport { isFragment } from 'react-is';\n\n/**\n * Flatten list of react nodes removing fragments and adding keys.\n * based on: https://github.com/grrowl/react-keyed-flatten-children/blob/5d421644a449765ddd62b659946196b4b5d7b135/index.ts\n *\n * @param children React nodes to flatten.\n * @return Flattened react nodes.\n * @deprecated This function was used to develop keyboard navigation in the List component,\n * but we will replace this with a better method that does not require to hack the children inspection\n *\n * TODO: remove List keyboard navigation once we have provided alternative component (Menu, Combobox, etc.),\n * remove this function and then remove react-is from the dependencies\n */\nexport function flattenChildren(children: ReactNode) {\n function recur(nodes: ReactNode, keys: Key[] = []) {\n return Children.toArray(nodes).reduce((acc: ReactChild[], node, index) => {\n const nodeKeys = keys.concat((node as ReactElement)?.key ?? index);\n if (isFragment(node)) {\n acc.push(...recur(node.props.children, nodeKeys));\n } else if (isValidElement(node)) {\n acc.push(cloneElement(node, { key: nodeKeys.join('.') }));\n } else if (typeof node === 'string' || typeof node === 'number') {\n acc.push(node);\n }\n return acc;\n }, []);\n }\n return recur(children);\n}\n","import { ListItemProps } from '@lumx/react';\nimport { isClickable } from '@lumx/react/components/list/ListItem';\n\nimport { isComponent } from '@lumx/react/utils/type';\nimport { flattenChildren } from '@lumx/react/utils/react/flattenChildren';\nimport { mergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport {\n cloneElement,\n Key,\n ReactElement,\n ReactNode,\n RefObject,\n SyntheticEvent,\n useEffect,\n useMemo,\n useState,\n} from 'react';\n\ntype Listener = (evt: KeyboardEvent) => void;\n\ninterface Options {\n /** List of items to navigate on. */\n items: ReactNode[] | ReactNode;\n /** Reference to the list-like element controlling the navigation. */\n ref: RefObject<HTMLElement>;\n\n /**\n * On list item navigated callback (triggered on ARROW key navigation).\n *\n * @param index Index of the navigated item among the sibling items.\n * @param key React key of the navigated item.\n */\n onListItemNavigated?(index: number, key: Key | null): void;\n\n /**\n * On list item selected callback (via ENTER key or click).\n *\n * @param index Index of the selected item among the sibling items.\n * @param key React key of the selected item.\n * @param evt Source event (either mouse or keyboard event).\n */\n onListItemSelected?(index: number, key: Key | null, evt: SyntheticEvent): void;\n}\n\ninterface Output {\n /** List of items transformed to accommodate keyboard navigation. */\n items: ReactNode[];\n /** Whether the list contains clickable items or not. */\n hasClickableItem: boolean;\n}\n\nexport type useInteractiveList = (options: Options) => Output;\n\nconst INITIAL_INDEX = -1;\n\nfunction onKeyboardFocus(props: any, handler: (evt: FocusEvent) => void) {\n let isMouseDown = false;\n return {\n onFocus(evt: FocusEvent) {\n props.onFocus?.(evt);\n if (!isMouseDown) {\n handler(evt);\n }\n },\n onMouseDown(evt: MouseEvent) {\n props.onMouseDown?.(evt);\n isMouseDown = true;\n },\n onMouseUp(evt: MouseEvent) {\n props.onMouseUp?.(evt);\n isMouseDown = false;\n },\n };\n}\n\nconst isNavigableItem = (node: ReactNode): node is ReactElement => {\n return isComponent('ListItem')(node) && isClickable(node.props) && !node.props.isDisabled;\n};\n\n/**\n * This custom hook detects clickable list item in a list and make them navigable with the keyboard.\n *\n * @param options See {@link Options}\n * @return See {@link Output}\n */\nexport const useInteractiveList: useInteractiveList = (options) => {\n const { ref, onListItemSelected, onListItemNavigated } = options;\n const items = useMemo(() => flattenChildren(options.items), [options.items]);\n const [activeItemIndex, setActiveItemIndex] = useState(INITIAL_INDEX);\n\n // Attach listeners to the list.\n useEffect(() => {\n const { current: listElement } = ref;\n if (!listElement) {\n return undefined;\n }\n\n /**\n * This function calculates the next index in the list to be active\n * @param index current index\n * @param code key code pressed\n * @return next index\n */\n const getNextIndex = (index: number, key: string): number => {\n switch (key) {\n case 'ArrowDown':\n return index + 1 < items.length ? index + 1 : 0;\n case 'ArrowUp':\n return index - 1 >= 0 ? index - 1 : items.length - 1;\n default:\n return INITIAL_INDEX;\n }\n };\n\n /**\n * Resets the active index to the initial state\n */\n const resetActiveIndex = () => {\n setActiveItemIndex(INITIAL_INDEX);\n };\n\n /**\n * Handles navigation with the arrows using the keyboard\n * @param evt Key event\n */\n const onArrowPressed: Listener = (evt) => {\n const { key } = evt;\n if (key !== 'ArrowUp' && key !== 'ArrowDown') {\n return;\n }\n\n let nextIndex = activeItemIndex;\n let iterations = 0;\n\n // Move to next navigable item.\n do {\n nextIndex = getNextIndex(nextIndex, key);\n iterations += 1;\n } while (\n nextIndex !== INITIAL_INDEX &&\n nextIndex !== activeItemIndex &&\n !isNavigableItem(items[nextIndex] as any) &&\n iterations < items.length\n );\n\n setActiveItemIndex(nextIndex);\n evt.preventDefault();\n evt.stopPropagation();\n onListItemNavigated?.(nextIndex, (items[nextIndex] as ReactElement)?.key);\n };\n\n /**\n * Reset active list item index when focusing outside the list.\n * @param evt Focus out event\n */\n const onFocusOut = (evt: FocusEvent) => {\n if (!evt.relatedTarget || !listElement.contains(evt.relatedTarget as any)) {\n resetActiveIndex();\n }\n };\n\n listElement.addEventListener('focusout', onFocusOut);\n listElement.addEventListener('keydown', onArrowPressed);\n return () => {\n listElement.removeEventListener('focusout', onFocusOut);\n listElement.removeEventListener('keydown', onArrowPressed);\n };\n }, [ref, activeItemIndex, items, onListItemNavigated]);\n\n return useMemo(() => {\n let hasClickableItem = false;\n const transformedItems = items.map((item, index) => {\n // Ignore if list not clickable or item is not a simple list item.\n if (!isNavigableItem(item)) {\n return item;\n }\n\n hasClickableItem = true;\n const isHighlighted = index === activeItemIndex;\n\n // Clone list item: inject ref, add tab index and active state.\n return cloneElement<ListItemProps>(item, {\n ...item.props,\n isHighlighted: item.props.isHighlighted ?? isHighlighted,\n linkRef: mergeRefs(item.props.linkRef, (element: any) => {\n if (isHighlighted) {\n element?.focus();\n }\n }),\n onItemSelected(evt) {\n item.props.onItemSelected?.();\n onListItemSelected?.(index, item.key, evt);\n },\n ...onKeyboardFocus(item.props, () => {\n setActiveItemIndex(index);\n }),\n });\n });\n return { items: transformedItems, hasClickableItem };\n }, [items, activeItemIndex, onListItemSelected]);\n};\n","import { Key, ReactNode, SyntheticEvent, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Size } from '@lumx/react';\nimport { useKeyboardListNavigation } from '@lumx/react/hooks/useKeyboardListNavigation';\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { mergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { useInteractiveList } from './useInteractiveList';\n\n/**\n * Defines the props of the component.\n */\nexport interface ListProps extends GenericProps {\n /** List content (should be ListItem, ListSubheader or ListDivider). */\n children: ReactNode;\n /**\n * Whether the list items are clickable.\n * @deprecated not needed anymore.\n */\n isClickable?: boolean;\n /** Item padding size. */\n itemPadding?: Extract<Size, 'big' | 'huge'>;\n /** Tab index of the list. Default to -1 */\n tabIndex?: number;\n /**\n * On list item selected callback.\n *\n * @param key React key of the selected item.\n * @param index Index of the selected item among the sibling items.\n * @param evt Source event (either mouse or keyboard event).\n */\n onListItemSelected?(key: Key, index: number, evt: SyntheticEvent): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'List';\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<ListProps> = {\n tabIndex: -1,\n};\n\n/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n/**\n * List component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nconst InternalList = forwardRef<ListProps, HTMLUListElement>((props, ref) => {\n const {\n children,\n className,\n isClickable,\n itemPadding,\n onListItemSelected,\n tabIndex = DEFAULT_PROPS.tabIndex,\n ...forwardedProps\n } = props;\n const listElementRef = useRef<HTMLUListElement>(null);\n\n const { items, hasClickableItem } = useInteractiveList({\n items: children,\n ref: listElementRef,\n onListItemSelected,\n });\n const clickable = hasClickableItem || isClickable;\n\n return (\n <ul\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({\n prefix: CLASSNAME,\n itemPadding: itemPadding ?? (clickable ? Size.big : undefined),\n }),\n )}\n tabIndex={tabIndex}\n ref={mergeRefs(ref, listElementRef)}\n >\n {items}\n </ul>\n );\n});\nInternalList.displayName = COMPONENT_NAME;\nInternalList.className = CLASSNAME;\nInternalList.defaultProps = DEFAULT_PROPS;\n\nexport const List = Object.assign(InternalList, { useKeyboardListNavigation });\n"],"names":["INITIAL_INDEX","useKeyboardListNavigation","items","ref","onListItemSelected","onListItemNavigated","onEnterPressed","onBackspacePressed","keepFocusAfterSelection","initialIndex","preventTabOnEnteredValue","activeItemIndex","setActiveItemIndex","useState","calculateActiveIndex","key","length","resetActiveIndex","preventDefaultAndStopPropagation","evt","preventDefault","stopPropagation","onArrowPressed","nextActiveIndex","selectedItem","onBackspaceKeyPressed","onEnterKeyPressed","currentTarget","blur","value","target","onTabKeyPressed","eventsForKeyPressed","ArrowDown","Tab","ArrowUp","Enter","Backspace","onKeyboardNavigation","handler","useEffect","current","currentElement","undefined","addEventListener","removeEventListener","renderLink","linkAs","forwardedProps","children","React","createElement","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","size","Size","regular","isClickable","linkProps","onItemSelected","href","ListItem","forwardRef","props","isAnyDisabled","disabledStateProps","otherProps","useDisableStateProps","after","before","className","isHighlighted","isSelected","linkRef","role","onKeyDown","useMemo","onButtonPressed","content","_jsxs","_Fragment","_jsx","classNames","handleBasicClasses","prefix","tabIndex","disabled","isDisabled","onClick","displayName","defaultProps","reactIsModule","require$$0","require$$1","flattenChildren","recur","nodes","keys","Children","toArray","reduce","acc","node","index","nodeKeys","concat","isFragment","push","isValidElement","cloneElement","join","onKeyboardFocus","isMouseDown","onFocus","onMouseDown","onMouseUp","isNavigableItem","isComponent","useInteractiveList","options","listElement","getNextIndex","nextIndex","iterations","onFocusOut","relatedTarget","contains","hasClickableItem","transformedItems","map","item","mergeRefs","element","focus","InternalList","itemPadding","listElementRef","useRef","clickable","big","List","Object","assign"],"mappings":"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","x_google_ignoreList":[3,4,5]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PopoverDialog-3b63f140.js","sources":["../../src/utils/date/addMonthResetDay.ts","../../src/utils/date/isDateValid.ts","../../src/components/date-picker/constants.ts","../../src/utils/date/getFirstDayOfWeek.ts","../../src/utils/date/getWeekDays.ts","../../src/utils/date/getMonthCalendar.ts","../../src/utils/date/isSameDay.ts","../../src/utils/locale/getCurrentLocale.ts","../../src/utils/locale/parseLocale.ts","../../src/hooks/usePreviousValue.ts","../../src/utils/date/getYearDisplayName.ts","../../src/utils/date/formatDayNumber.ts","../../src/components/date-picker/DatePickerControlled.tsx","../../src/components/date-picker/DatePicker.tsx","../../src/components/date-picker/DatePickerField.tsx","../../src/components/popover-dialog/PopoverDialog.tsx"],"sourcesContent":["/**\n * Add a number of months from a date while resetting the day to prevent month length mismatches.\n */\nexport function addMonthResetDay(date: Date, monthOffset: number) {\n const newDate = new Date(date.getTime());\n newDate.setDate(1);\n newDate.setMonth(date.getMonth() + monthOffset);\n return newDate;\n}\n","/**\n * Check if given date is valid.\n */\nexport const isDateValid = (date?: Date) => date instanceof Date && !Number.isNaN(date.getTime());\n","import { getRootClassName } from '@lumx/core/js/utils/className';\n\n/**\n * Component display name.\n */\nexport const COMPONENT_NAME = 'DatePicker';\n\n/**\n * Component default class name and class prefix.\n */\nexport const CLASSNAME = getRootClassName(COMPONENT_NAME);\n","import { Locale } from '@lumx/react/utils/locale/types';\n\n/** Get first day of week for locale from the browser API */\nexport const getFromBrowser = (locale: Locale): number | undefined => {\n try {\n const localeMetadata = new Intl.Locale(locale.code) as any;\n const { firstDay } = localeMetadata.getWeekInfo?.() || localeMetadata.weekInfo;\n // Sunday is represented as `0` in Date.getDay()\n if (firstDay === 7) return 0;\n return firstDay;\n } catch (e) {\n return undefined;\n }\n};\n\n/** List first day for each locale (could be removed when all browser implement Locale weekInfo) */\nconst FIRST_DAY_FOR_LOCALES = [\n {\n // Locales with Sunday as the first day of the week\n localeRX: /^(af|ar-(dz|eg|sa)|bn|cy|en-(ca|us|za)|fr-ca|gd|he|hi|ja|km|ko|pt-br|te|th|ug|zh-hk)$/i,\n firstDay: 0,\n },\n {\n // Locales with Monday as the first day of the week\n localeRX:\n /^(ar-(ma|tn)|az|be|bg|bs|ca|cs|da|de|el|en-(au|gb|ie|in|nz)|eo|es|et|eu|fi|fr|fy|gl|gu|hr|ht|hu|hy|id|is|it|ka|kk|kn|lb|lt|lv|mk|mn|ms|mt|nb|nl|nn|oc|pl|pt|ro|ru|sk|sl|sq|sr|sv|ta|tr|uk|uz|vi|zh-(cn|tw))$/i,\n firstDay: 1,\n },\n {\n // Locales with Saturday as the first day of the week\n localeRX: /^(ar|fa-ir)$/i,\n firstDay: 6,\n },\n];\n\n/** Find first day of week for locale from the constant */\nconst getFromConstant = (locale: Locale, searchBy: keyof Locale = 'code'): number | undefined => {\n // Search for locale (lang + region)\n for (const { localeRX, firstDay } of FIRST_DAY_FOR_LOCALES) {\n if (localeRX.test(locale[searchBy] as string)) return firstDay;\n }\n // Fallback search for locale lang\n if (locale.code !== locale.language) {\n return getFromConstant(locale, 'language');\n }\n return undefined;\n};\n\n/**\n * Get first day of the week for the given locale code (language + region).\n */\nexport const getFirstDayOfWeek = (locale: Locale): number | undefined => {\n // Get from browser API\n const firstDay = getFromBrowser(locale);\n if (firstDay !== undefined) return firstDay;\n\n // Get from constant\n return getFromConstant(locale);\n};\n","import { Locale } from '@lumx/react/utils/locale/types';\nimport { getFirstDayOfWeek } from './getFirstDayOfWeek';\n\nexport type WeekDayInfo = { letter: string; number: number; long: string };\n\nexport const DAYS_PER_WEEK = 7;\n\n/**\n * List week days (based on locale) with the week day letter (ex: \"M\" for \"Monday\") and week day number\n * (0-based index starting on Sunday).\n */\nexport const getWeekDays = (locale: Locale): Array<WeekDayInfo> => {\n const iterDate = new Date();\n const firstDay = getFirstDayOfWeek(locale) ?? 1;\n\n // Go to start of the week\n const offset = firstDay - iterDate.getDay();\n iterDate.setDate(iterDate.getDate() + offset);\n\n // Iterate through the days of the week\n const weekDays: Array<WeekDayInfo> = [];\n for (let i = 0; i < DAYS_PER_WEEK; i++) {\n // Single letter week day (ex: \"M\" for \"Monday\", \"L\" for \"Lundi\", etc.)\n const letter = iterDate.toLocaleDateString(locale.code, { weekday: 'narrow' });\n // Weed day long notation\n const long = iterDate.toLocaleDateString(locale.code, { weekday: 'long' });\n // Day number (1-based index starting on Monday)\n const number = iterDate.getDay();\n\n weekDays.push({ letter, number, long });\n iterDate.setDate(iterDate.getDate() + 1);\n }\n return weekDays;\n};\n","import { getWeekDays, WeekDayInfo } from '@lumx/react/utils/date/getWeekDays';\nimport { Locale } from '@lumx/react/utils/locale/types';\nimport { last } from '@lumx/core/js/utils/collection/last';\n\ntype AnnotatedDay = { date: Date; isOutOfRange?: boolean };\ntype AnnotatedWeek = Partial<Record<number, AnnotatedDay>>;\n\ninterface MonthCalendar {\n weekDays: Array<WeekDayInfo>;\n weeks: Array<AnnotatedWeek>;\n}\n\n/** Up to 6 rows can appear in a month calendar => 4 weeks + 1 start of month partial week + 1 send of month partial week */\nconst MONTH_ROW_COUNT = 6;\n\n/**\n * Get month calendar.\n * A list of weeks with days indexed by week day number\n */\nexport const getMonthCalendar = (\n locale: Locale,\n referenceDate = new Date(),\n rangeMinDate?: Date,\n rangeMaxDate?: Date,\n): MonthCalendar => {\n const month = referenceDate.getMonth();\n const iterDate = new Date(referenceDate);\n iterDate.setDate(1);\n\n const minDate = rangeMinDate && new Date(rangeMinDate);\n const maxDate = rangeMaxDate && new Date(rangeMaxDate);\n // Reset time to compare dates only.\n iterDate.setUTCHours(0, 0, 0, 0);\n minDate?.setUTCHours(0, 0, 0, 0);\n maxDate?.setUTCHours(0, 0, 0, 0);\n\n const weekDays = getWeekDays(locale);\n const lastDayOfWeek = last(weekDays);\n\n const weeks: Array<AnnotatedWeek> = [];\n let week: AnnotatedWeek = {};\n let rowCount = 0;\n\n while (rowCount < MONTH_ROW_COUNT) {\n const weekDayNumber = iterDate.getDay();\n const day: AnnotatedDay = { date: new Date(iterDate.getTime()) };\n\n // If a range is specified, check if the day is out of range.\n // min and max date are included within the valid range.\n if ((minDate && iterDate < minDate) || (maxDate && iterDate > maxDate)) {\n day.isOutOfRange = true;\n }\n\n if (iterDate.getMonth() === month) {\n week[weekDayNumber] = day;\n }\n\n if (weekDayNumber === lastDayOfWeek?.number) {\n weeks.push(week);\n rowCount += 1;\n week = {};\n }\n iterDate.setDate(iterDate.getDate() + 1);\n }\n if (Object.keys(week).length) weeks.push(week);\n\n return { weeks, weekDays };\n};\n","import { isDateValid } from '@lumx/react/utils/date/isDateValid';\n\n/**\n * Check `date1` is on the same day as `date2`.\n */\nexport const isSameDay = (date1: Date, date2: Date) =>\n isDateValid(date1) &&\n isDateValid(date2) &&\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate();\n","/**\n * Get current browser locale.\n */\nexport const getCurrentLocale = (): string => navigator.languages?.[0] || navigator.language;\n","import { Locale } from '@lumx/react/utils/locale/types';\n\n/**\n * Parse locale code\n * @example\n * parseLocale('EN') // => { code: 'en', language: 'en' }\n * parseLocale('en_us') // => { code: 'en-US', language: 'en', region: 'US' }\n * parseLocale('EN-US') // => { code: 'en-US', language: 'en', region: 'US' }\n */\nexport function parseLocale(locale: string): Locale | undefined {\n const [rawLanguage, rawRegion] = locale.split(/[-_]/);\n if (!rawLanguage) {\n return undefined;\n }\n const language = rawLanguage.toLowerCase();\n let region: string | undefined;\n let code = language;\n if (rawRegion) {\n region = rawRegion.toUpperCase();\n code += `-${region}`;\n }\n return { code, region, language };\n}\n","import React from 'react';\n/**\n * Returns the value from the previous render.\n */\nexport function usePreviousValue<V>(value: V): V | undefined {\n const prevValueRef = React.useRef<V>();\n const prevValue = prevValueRef.current;\n React.useEffect(() => {\n prevValueRef.current = value;\n }, [value]);\n return prevValue;\n}\n","export const getYearDisplayName = (locale: string) => {\n let label: string | undefined;\n try {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const displayNames = new Intl.DisplayNames(locale, { type: 'dateTimeField' });\n label = displayNames.of('year');\n } catch (error) {\n label = '';\n }\n return label;\n};\n","export function formatDayNumber(locale: string, date: Date): string {\n const formattedDate = date.toLocaleDateString(locale, { day: 'numeric' });\n if (formattedDate.match(/\\d/)) return formattedDate.replace(/\\D*(\\d+)\\D*/g, '$1');\n return formattedDate;\n}\n","import React, { KeyboardEventHandler } from 'react';\n\nimport classNames from 'classnames';\n\nimport {\n Button,\n DatePickerProps,\n Emphasis,\n FlexBox,\n IconButton,\n Text,\n TextField,\n TextFieldProps,\n Toolbar,\n} from '@lumx/react';\nimport { mdiChevronLeft, mdiChevronRight } from '@lumx/icons';\nimport { getMonthCalendar } from '@lumx/react/utils/date/getMonthCalendar';\nimport { isSameDay } from '@lumx/react/utils/date/isSameDay';\nimport { getCurrentLocale } from '@lumx/react/utils/locale/getCurrentLocale';\nimport { parseLocale } from '@lumx/react/utils/locale/parseLocale';\nimport { Locale } from '@lumx/react/utils/locale/types';\nimport { usePreviousValue } from '@lumx/react/hooks/usePreviousValue';\nimport { getYearDisplayName } from '@lumx/react/utils/date/getYearDisplayName';\nimport { onEnterPressed } from '@lumx/core/js/utils';\nimport { addMonthResetDay } from '@lumx/react/utils/date/addMonthResetDay';\nimport { formatDayNumber } from '@lumx/react/utils/date/formatDayNumber';\nimport { VISUALLY_HIDDEN } from '@lumx/react/constants';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { CLASSNAME } from './constants';\n\n/**\n * Defines the props of the component.\n */\nexport interface DatePickerControlledProps extends DatePickerProps {\n /** Selected month to display. */\n selectedMonth: Date;\n /** On previous month change callback. */\n onPrevMonthChange(): void;\n /** On next month change callback. */\n onNextMonthChange(): void;\n /** On month/year change callback. */\n onMonthChange?: (newMonth: Date) => void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'DatePickerControlled';\n\n/**\n * DatePickerControlled component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const DatePickerControlled = forwardRef<DatePickerControlledProps, HTMLDivElement>((props, ref) => {\n const {\n locale = getCurrentLocale(),\n maxDate,\n minDate,\n nextButtonProps,\n onChange,\n onNextMonthChange,\n onPrevMonthChange,\n previousButtonProps,\n selectedMonth,\n todayOrSelectedDateRef,\n value,\n onMonthChange,\n style,\n } = props;\n const { weeks, weekDays } = React.useMemo(() => {\n const localeObj = parseLocale(locale) as Locale;\n return getMonthCalendar(localeObj, selectedMonth, minDate, maxDate);\n }, [locale, minDate, maxDate, selectedMonth]);\n\n const selectedYear = selectedMonth.getFullYear();\n const formattedYear = selectedMonth.toLocaleDateString(locale, { year: 'numeric' }).slice(0, 4);\n const [currentYear, setCurrentYear] = React.useState(String(selectedYear));\n\n // Updates month offset when validating year. Adds or removes 12 months per year when updating year value.\n const updateMonthOffset = React.useCallback(\n (newYearValue: string) => {\n const yearNumber = Number(newYearValue);\n if (yearNumber < 0 && yearNumber >= 9999) {\n return;\n }\n\n const previousYearNumber = selectedMonth.getFullYear();\n const offset = (yearNumber - previousYearNumber) * 12;\n onMonthChange?.(addMonthResetDay(selectedMonth, offset));\n },\n [selectedMonth, onMonthChange],\n );\n\n const onYearChange = React.useCallback<TextFieldProps['onChange']>(\n (newYearValue, _, event) => {\n setCurrentYear(newYearValue);\n\n // Detect if change is coming from the spin up/down arrows\n const inputType = (event?.nativeEvent as any)?.inputType;\n if (\n // Chrome/Safari\n !inputType ||\n // Firefox\n inputType === 'insertReplacementText'\n ) {\n updateMonthOffset(newYearValue);\n }\n },\n [updateMonthOffset],\n );\n\n const updateYear = React.useCallback(() => {\n updateMonthOffset(currentYear);\n }, [updateMonthOffset, currentYear]);\n\n const updateYearOnEnterPressed: KeyboardEventHandler = React.useMemo(\n () => onEnterPressed(updateYear),\n [updateYear],\n );\n\n const monthYear = selectedMonth.toLocaleDateString(locale, { year: 'numeric', month: 'long' });\n\n // Update current year when selected year changes\n React.useEffect(() => {\n setCurrentYear(String(selectedYear));\n }, [selectedYear]);\n\n const prevSelectedMonth = usePreviousValue(selectedMonth);\n const monthHasChanged = prevSelectedMonth && !isSameDay(selectedMonth, prevSelectedMonth);\n\n // Only set the aria-live after the month has changed otherwise it can get announced on mount when used in the popover dialog\n const [labelAriaLive, setLabelAriaLive] = React.useState<'polite'>();\n React.useEffect(() => {\n if (monthHasChanged) setLabelAriaLive('polite');\n }, [monthHasChanged]);\n\n const yearLabel = getYearDisplayName(locale);\n\n return (\n <div ref={ref} className={`${CLASSNAME}`} style={style}>\n <Toolbar\n className={`${CLASSNAME}__toolbar`}\n after={\n <IconButton\n {...nextButtonProps}\n emphasis={Emphasis.low}\n icon={mdiChevronRight}\n onClick={onNextMonthChange}\n />\n }\n before={\n <IconButton\n {...previousButtonProps}\n emphasis={Emphasis.low}\n icon={mdiChevronLeft}\n onClick={onPrevMonthChange}\n />\n }\n label={\n <>\n <span aria-live={labelAriaLive} className={onMonthChange ? VISUALLY_HIDDEN : ''} dir=\"auto\">\n {monthYear}\n </span>\n {onMonthChange && (\n <FlexBox\n className={`${CLASSNAME}__month`}\n orientation=\"horizontal\"\n hAlign=\"center\"\n gap=\"regular\"\n vAlign=\"center\"\n dir=\"auto\"\n >\n {RegExp(`(.*)(${formattedYear})(.*)`)\n .exec(monthYear)\n ?.slice(1)\n .filter((part) => part !== '')\n .map((part) =>\n part === formattedYear ? (\n <TextField\n value={currentYear}\n aria-label={yearLabel}\n onChange={onYearChange}\n type=\"number\"\n max={9999}\n min={0}\n onBlur={updateYear}\n onKeyPress={updateYearOnEnterPressed}\n key=\"year\"\n className={`${CLASSNAME}__year`}\n />\n ) : (\n <Text as=\"p\" key={part}>\n {part}\n </Text>\n ),\n )}\n </FlexBox>\n )}\n </>\n }\n />\n <div className={`${CLASSNAME}__calendar`}>\n <div className={`${CLASSNAME}__week-days ${CLASSNAME}__days-wrapper`}>\n {weekDays.map(({ letter, number, long }) => (\n <div key={number} className={`${CLASSNAME}__day-wrapper`}>\n <span className={`${CLASSNAME}__week-day`} aria-hidden>\n {letter.toLocaleUpperCase()}\n </span>\n <span className=\"visually-hidden\">{long}</span>\n </div>\n ))}\n </div>\n\n <div className={`${CLASSNAME}__month-days ${CLASSNAME}__days-wrapper`}>\n {weeks.flatMap((week, weekIndex) => {\n return weekDays.map((weekDay, dayIndex) => {\n const { date, isOutOfRange } = week[weekDay.number] || {};\n const key = `${weekIndex}-${dayIndex}`;\n const isToday = !isOutOfRange && date && isSameDay(date, new Date());\n const isSelected = date && value && isSameDay(value, date);\n\n return (\n <div key={key} className={`${CLASSNAME}__day-wrapper`}>\n {date && (\n <Button\n ref={isSelected || (!value && isToday) ? todayOrSelectedDateRef : null}\n className={classNames(`${CLASSNAME}__month-day`, {\n [`${CLASSNAME}__month-day--is-today`]: isToday,\n })}\n disabled={isOutOfRange}\n isSelected={isSelected}\n emphasis=\"low\"\n onClick={() => onChange(date)}\n >\n <span aria-hidden>{formatDayNumber(locale, date)}</span>\n <span className={VISUALLY_HIDDEN}>\n {date.toLocaleDateString(locale, {\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n })}\n </span>\n </Button>\n )}\n </div>\n );\n });\n })}\n </div>\n </div>\n </div>\n );\n});\nDatePickerControlled.displayName = COMPONENT_NAME;\nDatePickerControlled.className = CLASSNAME;\n","import { useState } from 'react';\n\nimport { addMonthResetDay } from '@lumx/react/utils/date/addMonthResetDay';\nimport { isDateValid } from '@lumx/react/utils/date/isDateValid';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { CLASSNAME, COMPONENT_NAME } from './constants';\nimport { DatePickerControlled } from './DatePickerControlled';\nimport { DatePickerProps } from './types';\n\n/**\n * DatePicker component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const DatePicker = forwardRef<DatePickerProps, HTMLDivElement>((props, ref) => {\n const { defaultMonth, locale, value, onChange, ...forwardedProps } = props;\n\n let referenceDate = value || defaultMonth || new Date();\n if (!isDateValid(referenceDate)) {\n // eslint-disable-next-line no-console\n console.warn(`[@lumx/react/DatePicker] Invalid date provided ${referenceDate}`);\n referenceDate = new Date();\n }\n\n const [selectedMonth, setSelectedMonth] = useState(referenceDate);\n const setPrevMonth = () => setSelectedMonth((current) => addMonthResetDay(current, -1));\n const setNextMonth = () => setSelectedMonth((current) => addMonthResetDay(current, +1));\n\n const onDatePickerChange = (newDate?: Date) => {\n onChange(newDate);\n };\n\n return (\n <DatePickerControlled\n ref={ref}\n {...forwardedProps}\n defaultMonth={defaultMonth}\n locale={locale}\n value={value}\n onPrevMonthChange={setPrevMonth}\n onNextMonthChange={setNextMonth}\n selectedMonth={selectedMonth}\n onChange={onDatePickerChange}\n onMonthChange={setSelectedMonth}\n />\n );\n});\nDatePicker.displayName = COMPONENT_NAME;\nDatePicker.className = CLASSNAME;\n","import React, { SyntheticEvent, useCallback, useRef } from 'react';\n\nimport { DatePicker, IconButtonProps, Placement, PopoverDialog, TextField, TextFieldProps } from '@lumx/react';\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { getCurrentLocale } from '@lumx/react/utils/locale/getCurrentLocale';\nimport { useBooleanState } from '@lumx/react/hooks/useBooleanState';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\nimport { useDisableStateProps } from '@lumx/react/utils/disabled/useDisableStateProps';\n\n/**\n * Defines the props of the component.\n */\nexport interface DatePickerFieldProps extends Omit<TextFieldProps, 'value' | 'onChange'>, GenericProps {\n /** Default month. */\n defaultMonth?: Date;\n /** Locale (language or region) to use. */\n locale?: string;\n /** Date after which dates can't be selected. */\n maxDate?: Date;\n /** Date before which dates can't be selected. */\n minDate?: Date;\n /** Props to pass to the next month button (minus those already set by the DatePickerControlled props). */\n nextButtonProps: Pick<IconButtonProps, 'label'> & Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis'>;\n /** Props to pass to the previous month button (minus those already set by the DatePickerControlled props). */\n previousButtonProps: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis'>;\n /** Currently selected date. */\n value: Date | undefined;\n /** On change callback. */\n onChange(value: Date | undefined, name?: string, event?: SyntheticEvent): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'DatePickerField';\n\n/**\n * DatePickerField component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const DatePickerField = forwardRef<DatePickerFieldProps, HTMLDivElement>((props, ref) => {\n const { disabledStateProps, otherProps } = useDisableStateProps(props);\n const {\n defaultMonth,\n locale = getCurrentLocale(),\n maxDate,\n minDate,\n name,\n nextButtonProps,\n onChange,\n previousButtonProps,\n value,\n ...forwardedProps\n } = otherProps;\n const anchorRef = useRef(null);\n\n const [isOpen, close, , toggleOpen] = useBooleanState(false);\n\n const handleKeyboardNav = useCallback(\n (evt: React.KeyboardEvent) => {\n if (evt.key === 'Enter' || evt.key === ' ') {\n toggleOpen();\n }\n },\n [toggleOpen],\n );\n const onTextFieldChange = useCallback(\n (textFieldValue: string, textFieldName?: string, event?: SyntheticEvent) => {\n if (!textFieldValue) {\n onChange(undefined, textFieldName, event);\n }\n },\n [onChange],\n );\n const onDatePickerChange = useCallback(\n (newDate?: Date) => {\n onChange(newDate, name);\n close();\n },\n [name, onChange, close],\n );\n\n // Format date for text field\n const textFieldValue = value?.toLocaleDateString(locale, { year: 'numeric', month: 'long', day: 'numeric' }) || '';\n\n const todayOrSelectedDateRef = React.useRef(null);\n\n return (\n <>\n <TextField\n ref={ref}\n {...forwardedProps}\n name={name}\n forceFocusStyle={isOpen}\n textFieldRef={anchorRef}\n value={textFieldValue}\n onClick={toggleOpen}\n onChange={onTextFieldChange}\n onKeyPress={handleKeyboardNav}\n {...disabledStateProps}\n readOnly\n aria-haspopup=\"dialog\"\n />\n {isOpen ? (\n <PopoverDialog\n // Can't use `aria-labelledby` targeting the text field label element (not correctly read on some screen readers)\n aria-label={forwardedProps.label}\n anchorRef={anchorRef}\n placement={Placement.BOTTOM_START}\n isOpen={isOpen}\n onClose={close}\n // On open, focus the selected day or today\n focusElement={todayOrSelectedDateRef}\n >\n <DatePicker\n locale={locale}\n maxDate={maxDate}\n minDate={minDate}\n value={value}\n todayOrSelectedDateRef={todayOrSelectedDateRef}\n onChange={onDatePickerChange}\n defaultMonth={defaultMonth}\n nextButtonProps={nextButtonProps}\n previousButtonProps={previousButtonProps}\n />\n </PopoverDialog>\n ) : null}\n </>\n );\n});\nDatePickerField.displayName = COMPONENT_NAME;\n","import classNames from 'classnames';\n\nimport { HasAriaLabelOrLabelledBy } from '@lumx/react/utils/type';\nimport { getRootClassName } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { HeadingLevelProvider } from '@lumx/react/components/heading';\nimport { Popover, PopoverProps } from '../popover/Popover';\n\n/**\n * PopoverDialog props.\n * The PopoverDialog has the same props as the Popover but requires an accessible label.\n */\nexport type PopoverDialogProps = PopoverProps & HasAriaLabelOrLabelledBy;\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'PopoverDialog';\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<PopoverDialogProps> = {};\n\n/**\n * PopoverDialog component.\n * Defines a popover that acts like a dialog\n * * Has a dialog aria role\n * * Sets a focus trap within the popover\n * * Closes on click away and escape.\n */\nexport const PopoverDialog = forwardRef<PopoverDialogProps, HTMLDivElement>((props, ref) => {\n const {\n children,\n isOpen,\n focusElement,\n 'aria-label': ariaLabel,\n label = ariaLabel,\n className,\n ...forwardedProps\n } = props;\n\n return (\n <Popover\n {...forwardedProps}\n ref={ref}\n className={classNames(className, CLASSNAME)}\n role=\"dialog\"\n aria-modal=\"true\"\n /**\n * If a label is set, set as aria-label.\n * If it is undefined, the label can be set using the `aria-label` and `aria-labelledby` props\n */\n aria-label={label}\n isOpen={isOpen}\n focusElement={focusElement}\n closeOnClickAway\n closeOnEscape\n withFocusTrap\n >\n <HeadingLevelProvider level={2}>{children}</HeadingLevelProvider>\n </Popover>\n );\n});\n\nPopoverDialog.displayName = COMPONENT_NAME;\nPopoverDialog.className = CLASSNAME;\nPopoverDialog.defaultProps = DEFAULT_PROPS;\n"],"names":["addMonthResetDay","date","monthOffset","newDate","Date","getTime","setDate","setMonth","getMonth","isDateValid","Number","isNaN","COMPONENT_NAME","CLASSNAME","getRootClassName","getFromBrowser","locale","localeMetadata","Intl","Locale","code","firstDay","getWeekInfo","weekInfo","e","undefined","FIRST_DAY_FOR_LOCALES","localeRX","getFromConstant","searchBy","test","language","getFirstDayOfWeek","DAYS_PER_WEEK","getWeekDays","iterDate","offset","getDay","getDate","weekDays","i","letter","toLocaleDateString","weekday","long","number","push","MONTH_ROW_COUNT","getMonthCalendar","referenceDate","rangeMinDate","rangeMaxDate","month","minDate","maxDate","setUTCHours","lastDayOfWeek","last","weeks","week","rowCount","weekDayNumber","day","isOutOfRange","Object","keys","length","isSameDay","date1","date2","getFullYear","getCurrentLocale","navigator","languages","parseLocale","rawLanguage","rawRegion","split","toLowerCase","region","toUpperCase","usePreviousValue","value","prevValueRef","React","useRef","prevValue","current","useEffect","getYearDisplayName","label","displayNames","DisplayNames","type","of","error","formatDayNumber","formattedDate","match","replace","DatePickerControlled","forwardRef","props","ref","nextButtonProps","onChange","onNextMonthChange","onPrevMonthChange","previousButtonProps","selectedMonth","todayOrSelectedDateRef","onMonthChange","style","useMemo","localeObj","selectedYear","formattedYear","year","slice","currentYear","setCurrentYear","useState","String","updateMonthOffset","useCallback","newYearValue","yearNumber","previousYearNumber","onYearChange","_","event","inputType","nativeEvent","updateYear","updateYearOnEnterPressed","onEnterPressed","monthYear","prevSelectedMonth","monthHasChanged","labelAriaLive","setLabelAriaLive","yearLabel","_jsxs","className","children","_jsx","Toolbar","after","IconButton","emphasis","Emphasis","low","icon","mdiChevronRight","onClick","before","mdiChevronLeft","_Fragment","VISUALLY_HIDDEN","dir","FlexBox","orientation","hAlign","gap","vAlign","RegExp","exec","filter","part","map","TextField","max","min","onBlur","onKeyPress","Text","as","toLocaleUpperCase","flatMap","weekIndex","weekDay","dayIndex","key","isToday","isSelected","Button","classNames","disabled","displayName","DatePicker","defaultMonth","forwardedProps","console","warn","setSelectedMonth","setPrevMonth","setNextMonth","onDatePickerChange","DatePickerField","disabledStateProps","otherProps","useDisableStateProps","name","anchorRef","isOpen","close","toggleOpen","useBooleanState","handleKeyboardNav","evt","onTextFieldChange","textFieldValue","textFieldName","forceFocusStyle","textFieldRef","readOnly","PopoverDialog","placement","Placement","BOTTOM_START","onClose","focusElement","DEFAULT_PROPS","ariaLabel","Popover","role","closeOnClickAway","closeOnEscape","withFocusTrap","HeadingLevelProvider","level","defaultProps"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Slides-2a427c44.js","sources":["../../src/hooks/useInterval.tsx","../../src/components/slideshow/constants.ts","../../src/hooks/useSlideshowControls.ts","../../src/components/slideshow/useSlideFocusManagement.tsx","../../src/components/slideshow/SlideshowItemGroup.tsx","../../src/components/slideshow/SlideshowItem.tsx","../../src/components/slideshow/useSwipeNavigate.ts","../../src/components/slideshow/usePaginationVisibleRange.ts","../../src/components/slideshow/SlideshowControls.tsx","../../src/components/slideshow/Slides.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { Callback } from '@lumx/react/utils/type';\n\n/**\n * Making setInterval Declarative with React Hooks.\n * Credits: https://overreacted.io/making-setinterval-declarative-with-react-hooks/\n *\n * @param callback Function called by setInterval.\n * @param delay Delay for setInterval.\n */\nexport function useInterval(callback: Callback, delay: number | null): void {\n const savedCallback = useRef<Callback>();\n\n useEffect(() => {\n savedCallback.current = callback;\n });\n\n useEffect(() => {\n if (delay === null) return undefined;\n\n function tick() {\n savedCallback.current?.();\n }\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }, [delay]);\n}\n","/**\n * Autoplay default interval in ms.\n */\nexport const AUTOPLAY_DEFAULT_INTERVAL = 5000;\n\n/**\n * Full width size in percent.\n */\nexport const FULL_WIDTH_PERCENT = 100;\n\n/**\n * Edge from the active index.\n */\nexport const EDGE_FROM_ACTIVE_INDEX = 2;\n\n/**\n * Max number of pagination items.\n */\nexport const PAGINATION_ITEMS_MAX = 5;\n\n/**\n * Size of a pagination item. Used to translate wrapper.\n */\nexport const PAGINATION_ITEM_SIZE = 12;\n","import { useState, useCallback, useEffect } from 'react';\n\nimport { useInterval } from '@lumx/react/hooks/useInterval';\nimport { AUTOPLAY_DEFAULT_INTERVAL } from '@lumx/react/components/slideshow/constants';\nimport { useId } from '@lumx/react/hooks/useId';\n\nexport interface UseSlideshowControlsOptions {\n /** default active index to be displayed */\n defaultActiveIndex?: number;\n /** total slides to display */\n itemsCount: number;\n /** Index of the current slide. */\n activeIndex?: number;\n /** Whether the automatic rotation of the slideshow is enabled or not. */\n autoPlay?: boolean;\n /** Whether the image has to fill its container height or not. */\n fillHeight?: boolean;\n /** Number of slides to group together. */\n groupBy?: number;\n /** Interval between each slide when automatic rotation is enabled. */\n interval?: number;\n /** Callback when slide changes */\n onChange?(index: number): void;\n /** slideshow HTML id attribute */\n id?: string;\n /** slides wrapper HTML id attribute */\n slidesId?: string;\n}\n\nexport interface UseSlideshowControls {\n /** Index for the first visible slide, should be used when groupBy is passed in */\n startIndexVisible: number;\n /** Index for the last visible slide, should be used when groupBy is passed in */\n endIndexVisible: number;\n /** total slides to be displayed */\n slidesCount: number;\n /** callback to set */\n setSlideshow: (element: HTMLDivElement | null) => void;\n /** reference to the slideshow element */\n slideshow: HTMLDivElement | null;\n /** id to be used for the slideshow */\n slideshowId: string;\n /** id to be used for the wrapper that contains the slides */\n slideshowSlidesId: string;\n /** callback that triggers the previous slide while using the slideshow controls */\n onPreviousClick: (loopback: boolean) => void;\n /** callback that triggers the next slide while using the slideshow controls */\n onNextClick: (loopback: boolean) => void;\n /** callback that triggers a specific page while using the slideshow controls */\n onPaginationClick: (index: number) => void;\n /** whether the slideshow is autoplaying or not */\n isAutoPlaying: boolean;\n /** whether the slideshow was force paused or not */\n isForcePaused: boolean;\n /** callback to change whether the slideshow is autoplaying or not */\n toggleAutoPlay: () => void;\n /** calback to change whether the slideshow should be force paused or not */\n toggleForcePause: () => void;\n /** current active slide index */\n activeIndex: number;\n /** set the current index as the active one */\n setActiveIndex: (index: number) => void;\n /** callback that stops the auto play */\n stopAutoPlay: () => void;\n /** callback that starts the auto play */\n startAutoPlay: () => void;\n}\n\nexport const DEFAULT_OPTIONS = {\n activeIndex: 0,\n groupBy: 1,\n interval: AUTOPLAY_DEFAULT_INTERVAL,\n} as const;\n\nexport const useSlideshowControls = ({\n activeIndex = DEFAULT_OPTIONS.activeIndex,\n groupBy = DEFAULT_OPTIONS.groupBy,\n interval = DEFAULT_OPTIONS.interval,\n autoPlay,\n defaultActiveIndex,\n onChange,\n itemsCount,\n id,\n slidesId,\n}: UseSlideshowControlsOptions): UseSlideshowControls => {\n const [currentIndex, setCurrentIndex] = useState(activeIndex as number);\n // Use state instead of a ref to make the slideshow controls update directly when the element is set.\n const [element, setElement] = useState<HTMLDivElement | null>(null);\n\n // Number of slides when using groupBy prop.\n const slidesCount = Math.ceil(itemsCount / Math.min(groupBy as number, itemsCount));\n\n // Change current index to display next slide.\n const goToNextSlide = useCallback(\n (loopback = true) => {\n setCurrentIndex((index) => {\n if (loopback && index === slidesCount - 1) {\n // Loopback to the start.\n return 0;\n }\n if (index < slidesCount - 1) {\n // Next slide.\n return index + 1;\n }\n return index;\n });\n },\n [slidesCount, setCurrentIndex],\n );\n\n // Change current index to display previous slide.\n const goToPreviousSlide = useCallback(\n (loopback = true) => {\n setCurrentIndex((index) => {\n if (loopback && index === 0) {\n // Loopback to the end.\n return slidesCount - 1;\n }\n if (index > 0) {\n // Previous slide.\n return index - 1;\n }\n return index;\n });\n },\n [slidesCount, setCurrentIndex],\n );\n\n // Auto play\n const [isAutoPlaying, setIsAutoPlaying] = useState(Boolean(autoPlay));\n const [isForcePaused, setIsForcePaused] = useState(false);\n\n const isSlideshowAutoPlaying = isForcePaused ? false : isAutoPlaying;\n // Start\n useInterval(goToNextSlide, isSlideshowAutoPlaying && slidesCount > 1 ? (interval as number) : null);\n\n // Reset current index if it become invalid.\n useEffect(() => {\n if (currentIndex > slidesCount - 1) {\n setCurrentIndex(defaultActiveIndex as number);\n }\n }, [currentIndex, slidesCount, defaultActiveIndex]);\n\n const startAutoPlay = () => {\n setIsAutoPlaying(Boolean(autoPlay));\n };\n\n const stopAutoPlay = () => {\n setIsAutoPlaying(false);\n };\n\n // Handle click on a bullet to go to a specific slide.\n const onPaginationClick = useCallback(\n (index: number) => {\n stopAutoPlay();\n setIsForcePaused(true);\n\n if (index >= 0 && index < slidesCount) {\n setCurrentIndex(index);\n }\n },\n [slidesCount, setCurrentIndex],\n );\n\n // Handle click or keyboard event to go to next slide.\n const onNextClick = useCallback(\n (loopback = true) => {\n stopAutoPlay();\n setIsForcePaused(true);\n goToNextSlide(loopback);\n },\n [goToNextSlide],\n );\n\n // Handle click or keyboard event to go to previous slide.\n const onPreviousClick = useCallback(\n (loopback = true) => {\n stopAutoPlay();\n setIsForcePaused(true);\n goToPreviousSlide(loopback);\n },\n [goToPreviousSlide],\n );\n\n // If the activeIndex props changes, update the current slide\n useEffect(() => {\n setCurrentIndex(activeIndex as number);\n }, [activeIndex]);\n\n // If the slide changes, with autoplay for example, trigger \"onChange\"\n useEffect(() => {\n if (!onChange) return;\n onChange(currentIndex);\n }, [currentIndex, onChange]);\n\n const generatedSlideshowId = useId();\n const slideshowId = id || generatedSlideshowId;\n\n const generatedSlidesId = useId();\n const slideshowSlidesId = slidesId || generatedSlidesId;\n\n const toggleAutoPlay = () => {\n if (isSlideshowAutoPlaying) {\n stopAutoPlay();\n } else {\n startAutoPlay();\n }\n };\n\n const toggleForcePause = () => {\n const shouldBePaused = !isForcePaused;\n\n setIsForcePaused(shouldBePaused);\n\n if (!shouldBePaused) {\n startAutoPlay();\n } else {\n stopAutoPlay();\n }\n };\n\n // Start index and end index of visible slides.\n const startIndexVisible = currentIndex * (groupBy as number);\n const endIndexVisible = startIndexVisible + (groupBy as number);\n\n return {\n startIndexVisible,\n endIndexVisible,\n setSlideshow: setElement,\n slideshow: element,\n slideshowId,\n slideshowSlidesId,\n onPreviousClick,\n onNextClick,\n onPaginationClick,\n isAutoPlaying: isSlideshowAutoPlaying,\n toggleAutoPlay,\n activeIndex: currentIndex,\n slidesCount,\n setActiveIndex: setCurrentIndex,\n startAutoPlay,\n stopAutoPlay,\n isForcePaused,\n toggleForcePause,\n };\n};\n","import { useEffect } from 'react';\nimport { getFocusableElements } from '@lumx/react/utils/browser/focus/getFocusableElements';\n\nexport interface UseSlideFocusManagementProps {\n isSlideDisplayed?: boolean;\n slideRef: React.RefObject<HTMLDivElement>;\n}\n\n/**\n * Classname set on elements whose focus was blocked.\n * This is to easily find elements that have been tempered with,\n * and not elements whose focus was already initially blocked.\n * */\nconst BLOCKED_FOCUS_CLASSNAME = 'focus-blocked';\n\n/**\n * Manage how slides must behave when visible or not.\n * When not visible, they should be hidden from screen readers and not focusable.\n */\nexport const useSlideFocusManagement = ({ isSlideDisplayed, slideRef }: UseSlideFocusManagementProps) => {\n useEffect(() => {\n const element = slideRef?.current;\n\n if (!element) {\n return undefined;\n }\n\n /**\n * Display given slide to screen readers and, if focus was blocked, restore focus on elements.\n */\n const enableSlide = () => {\n // Hide from screen readers\n element.setAttribute('aria-hidden', 'false');\n // Find elements we have blocked focus on\n element.querySelectorAll(`.${BLOCKED_FOCUS_CLASSNAME}`).forEach((focusableElement) => {\n focusableElement.removeAttribute('tabindex');\n focusableElement.classList.remove(BLOCKED_FOCUS_CLASSNAME);\n });\n };\n\n /**\n * Hide given slide from screen readers and block focus on all focusable elements within.\n */\n const blockSlide = () => {\n element.setAttribute('aria-hidden', 'true');\n getFocusableElements(element).forEach((focusableElement) => {\n focusableElement.setAttribute('tabindex', '-1');\n focusableElement.classList.add(BLOCKED_FOCUS_CLASSNAME);\n });\n };\n\n const handleDisplay = () => {\n if (!element) {\n return;\n }\n if (isSlideDisplayed) {\n enableSlide();\n } else {\n blockSlide();\n }\n };\n\n // Callback function to execute when mutations are observed\n const callback: MutationCallback = (mutationsList) => {\n if (element) {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n handleDisplay();\n }\n }\n }\n };\n\n // Create an observer instance linked to the callback function\n const observer = new MutationObserver(callback);\n\n if (element) {\n handleDisplay();\n\n /** If slide is hidden, start observing for elements to block focus */\n if (!isSlideDisplayed) {\n observer.observe(element, { attributes: true, childList: true, subtree: true });\n }\n }\n\n return () => {\n if (!isSlideDisplayed) {\n observer.disconnect();\n }\n };\n }, [isSlideDisplayed, slideRef]);\n};\n","import React from 'react';\n\nimport classNames from 'classnames';\nimport { mergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { getRootClassName } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\nimport { useSlideFocusManagement } from './useSlideFocusManagement';\n\n/**\n * Defines the props of the component.\n */\nexport interface SlideshowItemGroupProps extends GenericProps {\n role?: 'tabpanel' | 'group';\n label?: string;\n isDisplayed?: boolean;\n children?: React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'SlideshowItemGroup';\n\n/**\n * Component default class name and class prefix.\n */\nexport const CLASSNAME = getRootClassName(COMPONENT_NAME);\n\nexport const buildSlideShowGroupId = (slidesId: string, index: number) => `${slidesId}-slide-${index}`;\n\n/**\n * SlideshowItemGroup component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const SlideshowItemGroup = forwardRef<SlideshowItemGroupProps, HTMLDivElement>((props, ref) => {\n const { className, children, role = 'group', label, isDisplayed, ...forwardedProps } = props;\n const groupRef = React.useRef<HTMLDivElement>(null);\n\n useSlideFocusManagement({ isSlideDisplayed: isDisplayed, slideRef: groupRef });\n\n return (\n <div\n ref={mergeRefs(groupRef, ref)}\n role={role}\n className={classNames(className, CLASSNAME)}\n aria-roledescription=\"slide\"\n aria-label={label}\n {...forwardedProps}\n >\n {children}\n </div>\n );\n});\n\nSlideshowItemGroup.displayName = COMPONENT_NAME;\nSlideshowItemGroup.className = CLASSNAME;\n","import classNames from 'classnames';\n\nimport { GenericProps } from '@lumx/react/utils/type';\nimport { getRootClassName } from '@lumx/core/js/utils/className';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\n/**\n * Defines the props of the component.\n */\nexport interface SlideshowItemProps extends GenericProps {\n /** interval in which slides are automatically shown */\n interval?: number;\n /** Children */\n children?: React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'SlideshowItem';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * SlideshowItem component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const SlideshowItem = forwardRef<SlideshowItemProps, HTMLDivElement>((props, ref) => {\n const { className, children, ...forwardedProps } = props;\n return (\n <div ref={ref} className={classNames(className, CLASSNAME)} {...forwardedProps}>\n {children}\n </div>\n );\n});\n\nSlideshowItem.displayName = COMPONENT_NAME;\nSlideshowItem.className = CLASSNAME;\n","import { useEffect } from 'react';\nimport { detectHorizontalSwipe } from '@lumx/core/js/utils';\n\nconst isTouchDevice = () => 'ontouchstart' in window;\n\n/**\n * Listen swipe to navigate left and right.\n */\nexport function useSwipeNavigate(element?: HTMLElement | null, onNext?: () => void, onPrevious?: () => void): void {\n useEffect(() => {\n if (!element || !isTouchDevice()) return undefined;\n\n return detectHorizontalSwipe(element, (swipe) => {\n const callback = swipe === 'right' ? onPrevious : onNext;\n callback?.();\n });\n }, [onPrevious, onNext, element]);\n}\n","import { useMemo, useRef } from 'react';\nimport { EDGE_FROM_ACTIVE_INDEX, PAGINATION_ITEMS_MAX } from '@lumx/react/components/slideshow/constants';\n\ntype Range = { min: number; max: number };\n\n/**\n * Calculate the currently visible pagination \"bullet\" range.\n */\nexport function usePaginationVisibleRange(activeIndex: number, slideCount: number): Range {\n const previousVisibleRangeRef = useRef<Range>();\n return useMemo(() => {\n const lastSlide = slideCount - 1;\n const { current: previousVisibleRange } = previousVisibleRangeRef;\n let newVisibleRange: Range;\n if (activeIndex === previousVisibleRange?.max && activeIndex < lastSlide) {\n newVisibleRange = { min: previousVisibleRange.min + 1, max: previousVisibleRange.max + 1 };\n } else if (activeIndex === previousVisibleRange?.min && activeIndex > 0) {\n newVisibleRange = { min: previousVisibleRange.min - 1, max: previousVisibleRange.max - 1 };\n } else {\n const deltaItems = PAGINATION_ITEMS_MAX - 1;\n let min = activeIndex - EDGE_FROM_ACTIVE_INDEX;\n let max = activeIndex + EDGE_FROM_ACTIVE_INDEX;\n\n if (activeIndex > lastSlide - EDGE_FROM_ACTIVE_INDEX) {\n min = lastSlide - deltaItems;\n max = lastSlide;\n } else if (activeIndex < deltaItems) {\n min = 0;\n max = deltaItems;\n }\n\n newVisibleRange = { min, max };\n }\n previousVisibleRangeRef.current = newVisibleRange;\n return newVisibleRange;\n }, [activeIndex, slideCount]);\n}\n","import React, { RefObject, useCallback, useMemo } from 'react';\n\nimport classNames from 'classnames';\n\nimport { mdiChevronLeft, mdiChevronRight, mdiPlayCircleOutline, mdiPauseCircleOutline } from '@lumx/icons';\nimport { Emphasis, IconButton, IconButtonProps, Theme } from '@lumx/react';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { WINDOW } from '@lumx/react/constants';\nimport { useSlideshowControls, DEFAULT_OPTIONS } from '@lumx/react/hooks/useSlideshowControls';\nimport { useRovingTabIndex } from '@lumx/react/hooks/useRovingTabIndex';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { range } from '@lumx/core/js/utils/collection/range';\nimport { useSwipeNavigate } from './useSwipeNavigate';\nimport { PAGINATION_ITEM_SIZE, PAGINATION_ITEMS_MAX } from './constants';\nimport { usePaginationVisibleRange } from './usePaginationVisibleRange';\n\n/**\n * Defines the props of the component.\n */\nexport interface SlideshowControlsProps extends GenericProps, HasTheme {\n /** Index of the current slide. */\n activeIndex?: number;\n /** Props to pass to the next button (minus those already set by the SlideshowControls props). */\n nextButtonProps: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color'>;\n /** Reference to the parent element on which we want to listen touch swipe. */\n parentRef?: RefObject<HTMLDivElement> | HTMLDivElement | null;\n /** Props to pass to the previous button (minus those already set by the SlideshowControls props). */\n previousButtonProps: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color'>;\n /** Props to pass to the pagination wrapper */\n paginationProps?: Omit<React.HTMLAttributes<HTMLDivElement>, 'className' | 'style' | 'role'>;\n /** Number of slides. */\n slidesCount: number;\n /** On next button click callback. */\n onNextClick?(loopback?: boolean): void;\n /** On pagination change callback. */\n onPaginationClick?(index: number): void;\n /** On previous button click callback. */\n onPreviousClick?(loopback?: boolean): void;\n /** whether the slideshow is currently playing */\n isAutoPlaying?: boolean;\n /**\n * function to be executed in order to retrieve the label for the pagination item\n * @deprecated Use paginationItemProps instead.\n * */\n paginationItemLabel?: (index: number) => string;\n /**\n * function to be executed in order to retrieve the props for a pagination item.\n */\n paginationItemProps?: (itemIndex: number) => React.HTMLAttributes<HTMLButtonElement> & { label?: string };\n /** Props to pass to the lay button (minus those already set by the SlideshowControls props). */\n playButtonProps?: Pick<IconButtonProps, 'label'> &\n Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color'>;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'SlideshowControls';\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<SlideshowControlsProps> = {\n activeIndex: 0,\n};\n\n/**\n * SlideshowControls component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nconst InternalSlideshowControls = forwardRef<SlideshowControlsProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme() || Theme.light;\n const {\n activeIndex = DEFAULT_PROPS.activeIndex,\n className,\n nextButtonProps,\n onNextClick,\n onPaginationClick,\n onPreviousClick,\n parentRef,\n previousButtonProps,\n paginationProps,\n slidesCount,\n theme = defaultTheme,\n isAutoPlaying = false,\n playButtonProps,\n paginationItemLabel,\n paginationItemProps,\n ...forwardedProps\n } = props;\n\n let parent;\n if (WINDOW) {\n // Checking window object to avoid errors in SSR.\n parent = parentRef instanceof HTMLElement ? parentRef : parentRef?.current;\n }\n const paginationRef = React.useRef(null);\n // Listen to touch swipe navigate left & right.\n useSwipeNavigate(\n parent,\n // Go next without loopback.\n useCallback(() => onNextClick?.(false), [onNextClick]),\n // Go previous without loopback.\n useCallback(() => onPreviousClick?.(false), [onPreviousClick]),\n );\n\n /**\n * Add roving tab index pattern to pagination items and activate slide on focus.\n */\n useRovingTabIndex({\n parentRef: paginationRef,\n elementSelector: 'button',\n keepTabIndex: true,\n onElementFocus: (element) => {\n element.click();\n },\n });\n\n // Pagination \"bullet\" range.\n const visibleRange = usePaginationVisibleRange(activeIndex as number, slidesCount);\n\n // Inline style of wrapper element.\n const wrapperStyle = { transform: `translateX(-${PAGINATION_ITEM_SIZE * visibleRange.min}px)` };\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, theme }), {\n [`${CLASSNAME}--has-infinite-pagination`]: slidesCount > PAGINATION_ITEMS_MAX,\n })}\n >\n <IconButton\n {...previousButtonProps}\n icon={mdiChevronLeft}\n className={`${CLASSNAME}__navigation`}\n color={theme === Theme.dark ? 'light' : 'dark'}\n emphasis={Emphasis.low}\n onClick={onPreviousClick}\n />\n <div ref={paginationRef} className={`${CLASSNAME}__pagination`}>\n <div\n className={`${CLASSNAME}__pagination-items`}\n style={wrapperStyle}\n role=\"tablist\"\n {...paginationProps}\n >\n {useMemo(\n () =>\n range(slidesCount).map((index) => {\n const isOnEdge =\n index !== 0 &&\n index !== slidesCount - 1 &&\n (index === visibleRange.min || index === visibleRange.max);\n const isActive = activeIndex === index;\n const isOutRange = index < visibleRange.min || index > visibleRange.max;\n const {\n className: itemClassName = undefined,\n label = undefined,\n ...itemProps\n } = paginationItemProps ? paginationItemProps(index) : {};\n\n const ariaLabel =\n label || paginationItemLabel?.(index) || `${index + 1} / ${slidesCount}`;\n\n return (\n <button\n className={classNames(\n handleBasicClasses({\n prefix: `${CLASSNAME}__pagination-item`,\n isActive,\n isOnEdge,\n isOutRange,\n }),\n itemClassName,\n )}\n key={index}\n type=\"button\"\n tabIndex={isActive ? undefined : -1}\n role=\"tab\"\n aria-selected={isActive}\n onClick={() => onPaginationClick?.(index)}\n aria-label={ariaLabel}\n {...itemProps}\n />\n );\n }),\n [\n slidesCount,\n visibleRange.min,\n visibleRange.max,\n activeIndex,\n paginationItemProps,\n paginationItemLabel,\n onPaginationClick,\n ],\n )}\n </div>\n </div>\n\n {playButtonProps ? (\n <IconButton\n {...playButtonProps}\n icon={isAutoPlaying ? mdiPauseCircleOutline : mdiPlayCircleOutline}\n className={`${CLASSNAME}__play`}\n color={theme === Theme.dark ? 'light' : 'dark'}\n emphasis={Emphasis.low}\n />\n ) : null}\n\n <IconButton\n {...nextButtonProps}\n icon={mdiChevronRight}\n className={`${CLASSNAME}__navigation`}\n color={theme === Theme.dark ? 'light' : 'dark'}\n emphasis={Emphasis.low}\n onClick={onNextClick}\n />\n </div>\n );\n});\n\nInternalSlideshowControls.displayName = COMPONENT_NAME;\nInternalSlideshowControls.className = CLASSNAME;\nInternalSlideshowControls.defaultProps = DEFAULT_PROPS;\n\nexport const SlideshowControls = Object.assign(InternalSlideshowControls, {\n useSlideshowControls,\n useSlideshowControlsDefaultOptions: DEFAULT_OPTIONS,\n});\n","import React, { Children, CSSProperties } from 'react';\n\nimport classNames from 'classnames';\n\nimport { FULL_WIDTH_PERCENT } from '@lumx/react/components/slideshow/constants';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\nimport { chunk } from '@lumx/core/js/utils/collection/chunk';\n\nimport { buildSlideShowGroupId, SlideshowItemGroup } from './SlideshowItemGroup';\n\nexport interface SlidesProps extends GenericProps, HasTheme {\n /** current slide active */\n activeIndex: number;\n /** slides id to be added to the wrapper */\n id?: string;\n /** Whether the automatic rotation of the slideshow is enabled or not. */\n autoPlay?: boolean;\n /** Whether the image has to fill its container height or not. */\n fillHeight?: boolean;\n /** Number of slides to group together. */\n groupBy?: number;\n /** whether the slides are currently playing or not */\n isAutoPlaying?: boolean;\n /** id to be passed in into the slides */\n slidesId?: string;\n /** callback to change whether the slideshow is playing or not */\n toggleAutoPlay: () => void;\n /** component to be rendered after the slides */\n afterSlides?: React.ReactNode;\n /** Whether the slides have controls linked */\n hasControls?: boolean;\n /**\n * Accessible label to set on a slide group.\n * Receives the group position starting from 1 and the total number of groups.\n * */\n slideGroupLabel?: (groupPosition: number, groupTotal: number) => string;\n /** Children */\n children?: React.ReactNode;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Slideshow';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Slides component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Slides = forwardRef<SlidesProps, HTMLDivElement>((props, ref) => {\n const defaultTheme = useTheme();\n const {\n activeIndex,\n id,\n className,\n theme = defaultTheme,\n fillHeight,\n groupBy,\n isAutoPlaying,\n toggleAutoPlay,\n slidesId,\n children,\n afterSlides,\n hasControls,\n slideGroupLabel,\n ...forwardedProps\n } = props;\n const wrapperRef = React.useRef<HTMLDivElement>(null);\n const startIndexVisible = activeIndex;\n const endIndexVisible = startIndexVisible + 1;\n\n // Inline style of wrapper element.\n const wrapperStyle: CSSProperties = { transform: `translateX(-${FULL_WIDTH_PERCENT * activeIndex}%)` };\n\n const groups = React.useMemo(() => {\n const childrenArray = Children.toArray(children);\n return groupBy && groupBy > 1 ? chunk(childrenArray, groupBy) : childrenArray;\n }, [children, groupBy]);\n\n return (\n <section\n id={id}\n ref={ref}\n {...forwardedProps}\n className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, theme }), {\n [`${CLASSNAME}--fill-height`]: fillHeight,\n [`${CLASSNAME}--group-by-${groupBy}`]: Boolean(groupBy),\n })}\n aria-roledescription=\"carousel\"\n >\n <div\n id={slidesId}\n className={`${CLASSNAME}__slides`}\n onMouseEnter={toggleAutoPlay}\n onMouseLeave={toggleAutoPlay}\n aria-live={isAutoPlaying ? 'off' : 'polite'}\n >\n <div ref={wrapperRef} className={`${CLASSNAME}__wrapper`} style={wrapperStyle}>\n {groups.map((group, index) => (\n <SlideshowItemGroup\n key={index}\n id={slidesId && buildSlideShowGroupId(slidesId, index)}\n role={hasControls ? 'tabpanel' : 'group'}\n label={slideGroupLabel ? slideGroupLabel(index + 1, groups.length) : undefined}\n isDisplayed={index >= startIndexVisible && index < endIndexVisible}\n >\n {group}\n </SlideshowItemGroup>\n ))}\n </div>\n </div>\n\n {afterSlides}\n </section>\n );\n});\n\nSlides.displayName = COMPONENT_NAME;\nSlides.className = CLASSNAME;\n"],"names":["useInterval","callback","delay","savedCallback","useRef","useEffect","current","undefined","tick","id","setInterval","clearInterval","AUTOPLAY_DEFAULT_INTERVAL","FULL_WIDTH_PERCENT","EDGE_FROM_ACTIVE_INDEX","PAGINATION_ITEMS_MAX","PAGINATION_ITEM_SIZE","DEFAULT_OPTIONS","activeIndex","groupBy","interval","useSlideshowControls","autoPlay","defaultActiveIndex","onChange","itemsCount","slidesId","currentIndex","setCurrentIndex","useState","element","setElement","slidesCount","Math","ceil","min","goToNextSlide","useCallback","loopback","index","goToPreviousSlide","isAutoPlaying","setIsAutoPlaying","Boolean","isForcePaused","setIsForcePaused","isSlideshowAutoPlaying","startAutoPlay","stopAutoPlay","onPaginationClick","onNextClick","onPreviousClick","generatedSlideshowId","useId","slideshowId","generatedSlidesId","slideshowSlidesId","toggleAutoPlay","toggleForcePause","shouldBePaused","startIndexVisible","endIndexVisible","setSlideshow","slideshow","setActiveIndex","BLOCKED_FOCUS_CLASSNAME","useSlideFocusManagement","isSlideDisplayed","slideRef","enableSlide","setAttribute","querySelectorAll","forEach","focusableElement","removeAttribute","classList","remove","blockSlide","getFocusableElements","add","handleDisplay","mutationsList","mutation","type","observer","MutationObserver","observe","attributes","childList","subtree","disconnect","COMPONENT_NAME","CLASSNAME","getRootClassName","buildSlideShowGroupId","SlideshowItemGroup","forwardRef","props","ref","className","children","role","label","isDisplayed","forwardedProps","groupRef","React","_jsx","mergeRefs","classNames","displayName","SlideshowItem","isTouchDevice","window","useSwipeNavigate","onNext","onPrevious","detectHorizontalSwipe","swipe","usePaginationVisibleRange","slideCount","previousVisibleRangeRef","useMemo","lastSlide","previousVisibleRange","newVisibleRange","max","deltaItems","DEFAULT_PROPS","InternalSlideshowControls","defaultTheme","useTheme","Theme","light","nextButtonProps","parentRef","previousButtonProps","paginationProps","theme","playButtonProps","paginationItemLabel","paginationItemProps","parent","WINDOW","HTMLElement","paginationRef","useRovingTabIndex","elementSelector","keepTabIndex","onElementFocus","click","visibleRange","wrapperStyle","transform","_jsxs","handleBasicClasses","prefix","IconButton","icon","mdiChevronLeft","color","dark","emphasis","Emphasis","low","onClick","style","range","map","isOnEdge","isActive","isOutRange","itemClassName","itemProps","ariaLabel","tabIndex","mdiPauseCircleOutline","mdiPlayCircleOutline","mdiChevronRight","defaultProps","SlideshowControls","Object","assign","useSlideshowControlsDefaultOptions","Slides","fillHeight","afterSlides","hasControls","slideGroupLabel","wrapperRef","groups","childrenArray","Children","toArray","chunk","onMouseEnter","onMouseLeave","group","length"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Thumbnail-d2001ccb.js","sources":["../../src/components/thumbnail/useImageLoad.ts","../../src/components/thumbnail/useFocusPointStyle.tsx","../../src/components/thumbnail/Thumbnail.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nexport type LoadingState = 'isLoading' | 'isLoaded' | 'hasError';\n\nfunction getState(img: HTMLImageElement | null | undefined, event?: Event) {\n // Error event occurred or image has no source.\n if (event?.type === 'error' || (img?.complete && !img.getAttribute('src'))) {\n return 'hasError';\n }\n // Image is undefined or incomplete.\n if (!img || !img.complete) {\n return 'isLoading';\n }\n // Else loaded.\n return 'isLoaded';\n}\n\nexport function useImageLoad(imageURL: string, imgRef?: HTMLImageElement): LoadingState {\n const [state, setState] = useState<LoadingState>(getState(imgRef));\n\n // Update state when changing image URL or DOM reference.\n useEffect(() => {\n setState(getState(imgRef));\n }, [imageURL, imgRef]);\n\n // Listen to `load` and `error` event on image\n useEffect(() => {\n const img = imgRef;\n if (!img) return undefined;\n const update = (event?: Event) => setState(getState(img, event));\n img.addEventListener('load', update);\n img.addEventListener('error', update);\n return () => {\n img.removeEventListener('load', update);\n img.removeEventListener('error', update);\n };\n }, [imgRef, imgRef?.src]);\n\n return state;\n}\n","import { CSSProperties, useEffect, useMemo, useState } from 'react';\nimport { AspectRatio } from '@lumx/core/js/constants';\nimport { ThumbnailProps } from '@lumx/react/components/thumbnail/Thumbnail';\nimport { RectSize } from '@lumx/react/utils/type';\n\n// Calculate shift to center the focus point in the container.\nexport function shiftPosition({\n scale,\n focusPoint,\n imageSize,\n containerSize,\n}: {\n scale: number;\n focusPoint: number;\n imageSize: number;\n containerSize: number;\n}) {\n const scaledSize = imageSize / scale;\n if (scaledSize === containerSize) return 0;\n\n const scaledFocusHeight = focusPoint * scaledSize;\n const startFocus = scaledFocusHeight - containerSize / 2;\n const shift = startFocus / (scaledSize - containerSize);\n\n return Math.floor(Math.max(Math.min(shift, 1), 0) * 100);\n}\n\n// Compute CSS properties to apply the focus point.\nexport const useFocusPointStyle = (\n { image, aspectRatio, focusPoint, imgProps: { width, height } = {} }: ThumbnailProps,\n element: HTMLImageElement | undefined,\n isLoaded: boolean,\n): CSSProperties => {\n // Get natural image size from imgProps or img element.\n const imageSize: RectSize | undefined = useMemo(() => {\n // Focus point is not applicable => exit early\n if (!image || aspectRatio === AspectRatio.original || (!focusPoint?.x && !focusPoint?.y)) return undefined;\n if (typeof width === 'number' && typeof height === 'number') return { width, height };\n if (element && isLoaded) return { width: element.naturalWidth, height: element.naturalHeight };\n return undefined;\n }, [aspectRatio, element, focusPoint?.x, focusPoint?.y, height, image, isLoaded, width]);\n\n // Get container size (dependant on imageSize).\n const [containerSize, setContainerSize] = useState<RectSize | undefined>(undefined);\n useEffect(\n function updateContainerSize() {\n const cWidth = element?.offsetWidth;\n const cHeight = element?.offsetHeight;\n if (cWidth && cHeight) {\n // Update only if needed.\n setContainerSize((oldContainerSize) =>\n oldContainerSize?.width === cWidth && oldContainerSize.height === cHeight\n ? oldContainerSize\n : { width: cWidth, height: cHeight },\n );\n } else if (imageSize) {\n // Wait for a render (in case the container size is dependent on the image size).\n requestAnimationFrame(updateContainerSize);\n }\n },\n [element?.offsetHeight, element?.offsetWidth, imageSize],\n );\n\n // Compute style.\n const style: CSSProperties = useMemo(() => {\n // Focus point is not applicable => exit early\n if (!image || aspectRatio === AspectRatio.original || (!focusPoint?.x && !focusPoint?.y)) {\n return {};\n }\n if (!element || !imageSize) {\n // Focus point can be computed but now right now (image size unknown).\n return { visibility: 'hidden' };\n }\n if (!containerSize || !imageSize.height || !imageSize.width) {\n // Missing container or image size abort focus point compute.\n return {};\n }\n\n const heightScale = imageSize.height / containerSize.height;\n const widthScale = imageSize.width / containerSize.width;\n const scale = Math.min(widthScale, heightScale);\n\n // Focus Y relative to the top (instead of the center)\n const focusPointFromTop = Math.abs((focusPoint?.y || 0) - 1) / 2;\n const y = shiftPosition({\n scale,\n focusPoint: focusPointFromTop,\n imageSize: imageSize.height,\n containerSize: containerSize.height,\n });\n\n // Focus X relative to the left (instead of the center)\n const focusPointFromLeft = Math.abs((focusPoint?.x || 0) + 1) / 2;\n const x = shiftPosition({\n scale,\n focusPoint: focusPointFromLeft,\n imageSize: imageSize.width,\n containerSize: containerSize.width,\n });\n\n const objectPosition = `${x}% ${y}%`;\n\n return { objectPosition };\n }, [aspectRatio, containerSize, element, focusPoint?.x, focusPoint?.y, image, imageSize]);\n\n return style;\n};\n","import React, {\n CSSProperties,\n ImgHTMLAttributes,\n KeyboardEventHandler,\n MouseEventHandler,\n ReactElement,\n ReactNode,\n Ref,\n useState,\n} from 'react';\n\nimport classNames from 'classnames';\n\nimport { AspectRatio, HorizontalAlignment, Icon, Size, Theme, ThumbnailObjectFit } from '@lumx/react';\nimport { Falsy, GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { mdiImageBroken } from '@lumx/icons';\nimport { useMergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { useImageLoad } from '@lumx/react/components/thumbnail/useImageLoad';\nimport { useFocusPointStyle } from '@lumx/react/components/thumbnail/useFocusPointStyle';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\n\nimport { useDisableStateProps } from '@lumx/react/utils/disabled';\nimport { RawClickable } from '@lumx/react/utils/react/RawClickable';\nimport { FocusPoint, ThumbnailSize, ThumbnailVariant } from './types';\n\ntype ImgHTMLProps = ImgHTMLAttributes<HTMLImageElement>;\n\n/**\n * Defines the props of the component.\n */\nexport interface ThumbnailProps extends GenericProps, HasTheme {\n /** Alignment of the thumbnail in it's parent (requires flex parent). */\n align?: HorizontalAlignment;\n /** Image alternative text. */\n alt: string;\n /** Image aspect ratio. */\n aspectRatio?: AspectRatio;\n /** Badge. */\n badge?: ReactElement | Falsy;\n /** Image cross origin resource policy. */\n crossOrigin?: ImgHTMLProps['crossOrigin'];\n /** Fallback icon (SVG path) or react node when image fails to load. */\n fallback?: string | ReactNode;\n /** Whether the thumbnail should fill it's parent size (requires flex parent) or not. */\n fillHeight?: boolean;\n /** Apply relative vertical and horizontal shift (from -1 to 1) on the image position inside the thumbnail. */\n focusPoint?: FocusPoint;\n /** Image URL. */\n image: string;\n /** Props to inject into the native <img> element. */\n imgProps?: ImgHTMLProps;\n /** Reference to the native <img> element. */\n imgRef?: Ref<HTMLImageElement>;\n /** Set to true to force the display of the loading skeleton. */\n isLoading?: boolean;\n /** Set how the image should fit when its aspect ratio is constrained */\n objectFit?: ThumbnailObjectFit;\n /** Size variant of the component. */\n size?: ThumbnailSize;\n /** Image loading mode. */\n loading?: ImgHTMLProps['loading'];\n /** Ref of an existing placeholder image to display while loading. */\n loadingPlaceholderImageRef?: React.RefObject<HTMLImageElement>;\n /** On click callback. */\n onClick?: MouseEventHandler<HTMLDivElement>;\n /** On key press callback. */\n onKeyPress?: KeyboardEventHandler<HTMLDivElement>;\n /** Variant of the component. */\n variant?: ThumbnailVariant;\n /** Props to pass to the link wrapping the thumbnail. */\n linkProps?: React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>;\n /** Custom react component for the link (can be used to inject react router Link). */\n linkAs?: 'a' | any;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Thumbnail';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<ThumbnailProps> = {\n fallback: mdiImageBroken,\n loading: 'lazy',\n};\n\n/**\n * Thumbnail component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Thumbnail = forwardRef<ThumbnailProps>((props, ref) => {\n const { isAnyDisabled, otherProps, disabledStateProps } = useDisableStateProps(props);\n const defaultTheme = useTheme() || Theme.light;\n const {\n align,\n alt,\n aspectRatio = AspectRatio.original,\n badge,\n className,\n crossOrigin,\n fallback = DEFAULT_PROPS.fallback,\n fillHeight,\n // `focusPoint` needs to be here to remove it from `forwardedProps`.\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n focusPoint,\n image,\n imgProps,\n imgRef: propImgRef,\n isLoading: isLoadingProp,\n objectFit,\n loading = DEFAULT_PROPS.loading,\n loadingPlaceholderImageRef,\n size,\n theme = defaultTheme,\n variant,\n linkProps,\n linkAs,\n ...forwardedProps\n } = otherProps;\n const [imgElement, setImgElement] = useState<HTMLImageElement>();\n\n // Image loading state.\n const loadingState = useImageLoad(image, imgElement);\n const isLoaded = loadingState === 'isLoaded';\n const isLoading = isLoadingProp || loadingState === 'isLoading';\n const hasError = loadingState === 'hasError';\n\n // Focus point.\n const focusPointStyle = useFocusPointStyle(props, imgElement, isLoaded);\n\n const hasIconErrorFallback = hasError && typeof fallback === 'string';\n const hasCustomErrorFallback = hasError && !hasIconErrorFallback;\n const imageErrorStyle: CSSProperties = {};\n if (hasIconErrorFallback) {\n // Keep the image layout on icon fallback.\n imageErrorStyle.visibility = 'hidden';\n } else if (hasCustomErrorFallback) {\n // Remove the image on custom fallback.\n imageErrorStyle.display = 'none';\n }\n\n const isLink = Boolean(linkProps?.href || linkAs);\n const isClickable = !isAnyDisabled && Boolean(isLink || !!forwardedProps.onClick);\n\n const Wrapper: any = isClickable ? RawClickable : 'div';\n const wrapperProps = { ...forwardedProps };\n if (isClickable) {\n Object.assign(wrapperProps, { as: linkAs || (linkProps?.href ? 'a' : 'button') }, disabledStateProps);\n if (isLink) {\n Object.assign(wrapperProps, linkProps);\n } else {\n wrapperProps['aria-label'] = forwardedProps['aria-label'] || alt;\n }\n }\n\n // If we have a loading placeholder image that is really loaded (complete)\n const loadingPlaceholderImage =\n (isLoading && loadingPlaceholderImageRef?.current?.complete && loadingPlaceholderImageRef?.current) ||\n undefined;\n\n // Set loading placeholder image as background\n const loadingStyle = loadingPlaceholderImage\n ? { backgroundImage: `url(${loadingPlaceholderImage.src})` }\n : undefined;\n\n return (\n <Wrapper\n {...wrapperProps}\n ref={ref}\n className={classNames(\n linkProps?.className,\n className,\n handleBasicClasses({\n align,\n aspectRatio,\n prefix: CLASSNAME,\n size,\n theme,\n variant,\n isClickable,\n hasError,\n hasIconErrorFallback,\n hasCustomErrorFallback,\n isLoading,\n objectFit,\n hasBadge: !!badge,\n }),\n fillHeight && `${CLASSNAME}--fill-height`,\n )}\n >\n <span className={`${CLASSNAME}__background`}>\n <img\n // Use placeholder image size\n width={loadingPlaceholderImage?.naturalWidth}\n height={loadingPlaceholderImage?.naturalHeight}\n {...imgProps}\n style={{\n // Reserve space while loading (when possible)\n width: isLoading ? imgProps?.width || loadingPlaceholderImage?.naturalWidth : undefined,\n ...imgProps?.style,\n ...imageErrorStyle,\n ...focusPointStyle,\n ...loadingStyle,\n }}\n ref={useMergeRefs(setImgElement, propImgRef)}\n className={classNames(\n handleBasicClasses({\n prefix: `${CLASSNAME}__image`,\n isLoading,\n hasDefinedSize: Boolean(imgProps?.height && imgProps.width),\n }),\n imgProps?.className,\n )}\n crossOrigin={crossOrigin}\n src={image}\n alt={alt}\n loading={loading}\n />\n {!isLoading && hasError && (\n <span className={`${CLASSNAME}__fallback`}>\n {hasIconErrorFallback ? (\n <Icon icon={fallback as string} size={Size.xxs} theme={theme} />\n ) : (\n fallback\n )}\n </span>\n )}\n </span>\n {badge &&\n React.cloneElement(badge, { className: classNames(`${CLASSNAME}__badge`, badge.props.className) })}\n </Wrapper>\n );\n});\nThumbnail.displayName = COMPONENT_NAME;\nThumbnail.className = CLASSNAME;\nThumbnail.defaultProps = DEFAULT_PROPS;\n"],"names":["getState","img","event","type","complete","getAttribute","useImageLoad","imageURL","imgRef","state","setState","useState","useEffect","undefined","update","addEventListener","removeEventListener","src","shiftPosition","scale","focusPoint","imageSize","containerSize","scaledSize","scaledFocusHeight","startFocus","shift","Math","floor","max","min","useFocusPointStyle","image","aspectRatio","imgProps","width","height","element","isLoaded","useMemo","AspectRatio","original","x","y","naturalWidth","naturalHeight","setContainerSize","updateContainerSize","cWidth","offsetWidth","cHeight","offsetHeight","oldContainerSize","requestAnimationFrame","style","visibility","heightScale","widthScale","focusPointFromTop","abs","focusPointFromLeft","objectPosition","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","fallback","mdiImageBroken","loading","Thumbnail","forwardRef","props","ref","isAnyDisabled","otherProps","disabledStateProps","useDisableStateProps","defaultTheme","useTheme","Theme","light","align","alt","badge","className","crossOrigin","fillHeight","propImgRef","isLoading","isLoadingProp","objectFit","loadingPlaceholderImageRef","size","theme","variant","linkProps","linkAs","forwardedProps","imgElement","setImgElement","loadingState","hasError","focusPointStyle","hasIconErrorFallback","hasCustomErrorFallback","imageErrorStyle","display","isLink","Boolean","href","isClickable","onClick","Wrapper","RawClickable","wrapperProps","Object","assign","as","loadingPlaceholderImage","current","loadingStyle","backgroundImage","_jsxs","classNames","handleBasicClasses","prefix","hasBadge","children","_jsx","useMergeRefs","hasDefinedSize","Icon","icon","Size","xxs","React","cloneElement","displayName","defaultProps"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox-a448ca6c.js","sources":["../../../src/components/checkbox/Checkbox.tsx"],"sourcesContent":["import React, { InputHTMLAttributes, ReactNode, SyntheticEvent } from 'react';\n\nimport classNames from 'classnames';\n\nimport { mdiCheck, mdiMinus } from '@lumx/icons';\n\nimport { Icon, InputHelper, InputLabel, Theme } from '@lumx/react';\nimport { GenericProps, HasTheme } from '@lumx/react/utils/type';\nimport { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';\nimport { useId } from '@lumx/react/hooks/useId';\nimport { useMergeRefs } from '@lumx/react/utils/react/mergeRefs';\nimport { useTheme } from '@lumx/react/utils/theme/ThemeContext';\nimport { forwardRef } from '@lumx/react/utils/react/forwardRef';\nimport { useDisableStateProps } from '@lumx/react/utils/disabled/useDisableStateProps';\nimport { HasAriaDisabled } from '@lumx/react/utils/type/HasAriaDisabled';\n\n/**\n * Intermediate state of checkbox.\n */\nconst INTERMEDIATE_STATE = 'intermediate';\n\n/**\n * Defines the props of the component.\n */\nexport interface CheckboxProps extends GenericProps, HasTheme, HasAriaDisabled {\n /** Helper text. */\n helper?: string;\n /** Native input id property. */\n id?: string;\n /** Native input ref. */\n inputRef?: React.Ref<HTMLInputElement>;\n /** Whether it is checked or not or intermediate. */\n isChecked?: boolean | 'intermediate';\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Label text. */\n label?: ReactNode;\n /** Native input name property. */\n name?: string;\n /** Native input value property. */\n value?: string;\n /** optional props for input */\n inputProps?: InputHTMLAttributes<HTMLInputElement>;\n /** On change callback. */\n onChange?(isChecked: boolean, value?: string, name?: string, event?: SyntheticEvent): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Checkbox';\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<CheckboxProps> = {};\n\n/**\n * Checkbox component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Checkbox = forwardRef<CheckboxProps, HTMLDivElement>((props, ref) => {\n const { isAnyDisabled, disabledStateProps, otherProps } = useDisableStateProps(props);\n const defaultTheme = useTheme() || Theme.light;\n const {\n checked,\n className,\n helper,\n id,\n inputRef,\n isChecked = checked,\n label,\n name,\n onChange,\n theme = defaultTheme,\n value,\n inputProps = {},\n ...forwardedProps\n } = otherProps;\n const localInputRef = React.useRef<HTMLInputElement>(null);\n const generatedInputId = useId();\n const inputId = id || generatedInputId;\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(!isChecked, value, name, event);\n }\n };\n\n const intermediateState = isChecked === INTERMEDIATE_STATE;\n\n React.useEffect(() => {\n const input = localInputRef.current;\n if (input) input.indeterminate = intermediateState;\n }, [intermediateState]);\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({\n // Whether state is intermediate class name will \"-checked\"\n isChecked: intermediateState ? true : isChecked,\n isDisabled: isAnyDisabled,\n isUnchecked: !isChecked,\n prefix: CLASSNAME,\n theme,\n }),\n )}\n >\n <div className={`${CLASSNAME}__input-wrapper`}>\n <input\n ref={useMergeRefs(inputRef, localInputRef)}\n type=\"checkbox\"\n id={inputId}\n className={`${CLASSNAME}__input-native`}\n {...disabledStateProps}\n name={name}\n value={value}\n checked={isChecked}\n onChange={handleChange}\n aria-describedby={helper ? `${inputId}-helper` : undefined}\n aria-checked={intermediateState ? 'mixed' : Boolean(isChecked)}\n readOnly={inputProps.readOnly || disabledStateProps['aria-disabled']}\n {...inputProps}\n />\n\n <div className={`${CLASSNAME}__input-placeholder`}>\n <div className={`${CLASSNAME}__input-background`} />\n\n <div className={`${CLASSNAME}__input-indicator`}>\n <Icon icon={intermediateState ? mdiMinus : mdiCheck} />\n </div>\n </div>\n </div>\n\n <div className={`${CLASSNAME}__content`}>\n {label && (\n <InputLabel htmlFor={inputId} className={`${CLASSNAME}__label`} theme={theme}>\n {label}\n </InputLabel>\n )}\n {helper && (\n <InputHelper id={`${inputId}-helper`} className={`${CLASSNAME}__helper`} theme={theme}>\n {helper}\n </InputHelper>\n )}\n </div>\n </div>\n );\n});\nCheckbox.displayName = COMPONENT_NAME;\nCheckbox.className = CLASSNAME;\nCheckbox.defaultProps = DEFAULT_PROPS;\n"],"names":["INTERMEDIATE_STATE","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","Checkbox","forwardRef","props","ref","isAnyDisabled","disabledStateProps","otherProps","useDisableStateProps","defaultTheme","useTheme","Theme","light","checked","className","helper","id","inputRef","isChecked","label","name","onChange","theme","value","inputProps","forwardedProps","localInputRef","React","useRef","generatedInputId","useId","inputId","handleChange","event","intermediateState","useEffect","input","current","indeterminate","_jsxs","classNames","handleBasicClasses","isDisabled","isUnchecked","prefix","children","_jsx","useMergeRefs","type","undefined","Boolean","readOnly","Icon","icon","mdiMinus","mdiCheck","InputLabel","htmlFor","InputHelper","displayName","defaultProps"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"date-picker-b6d4048e.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|