@redsift/design-system 11.6.0 → 11.7.0-muiv5
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/NumberField.js +37 -21
- package/_internal/NumberField.js.map +1 -1
- package/_internal/SideNavigationMenu.js +15 -1
- package/_internal/SideNavigationMenu.js.map +1 -1
- package/_internal/SideNavigationMenuItem.js.map +1 -1
- package/_internal/Spinner2.js +4 -215
- package/_internal/Spinner2.js.map +1 -1
- package/_internal/useAppSidePanel.js +4 -2
- package/_internal/useAppSidePanel.js.map +1 -1
- package/_internal/useLocalizedStringFormatter.js +217 -0
- package/_internal/useLocalizedStringFormatter.js.map +1 -0
- package/_internal/useSideNavigationMenuBar.js +5 -2
- package/_internal/useSideNavigationMenuBar.js.map +1 -1
- package/index.d.ts +21 -55
- package/index.js +2 -1
- package/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -283,7 +283,8 @@ const SideNavigationMenu = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
283
283
|
const [isFirstChild, setIsFirstChild] = useState(false);
|
|
284
284
|
const currentPosition = useRef(-1);
|
|
285
285
|
const {
|
|
286
|
-
menuItems: menubarItems
|
|
286
|
+
menuItems: menubarItems,
|
|
287
|
+
canHaveMultipleMenuOpenAtOnce
|
|
287
288
|
} = sideNavigationMenuBarContext || {};
|
|
288
289
|
useEffect(() => {
|
|
289
290
|
currentPosition.current = -1;
|
|
@@ -319,6 +320,19 @@ const SideNavigationMenu = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
319
320
|
currentIndex,
|
|
320
321
|
previousIndex
|
|
321
322
|
} = state;
|
|
323
|
+
useEffect(() => {
|
|
324
|
+
if (propsIsExpanded !== undefined) {
|
|
325
|
+
if (propsIsExpanded) {
|
|
326
|
+
dispatch({
|
|
327
|
+
type: SideNavigationMenuReducerActionType.Expand
|
|
328
|
+
});
|
|
329
|
+
} else if (!propsIsExpanded && !canHaveMultipleMenuOpenAtOnce) {
|
|
330
|
+
dispatch({
|
|
331
|
+
type: SideNavigationMenuReducerActionType.Collapse
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}, [propsIsExpanded, canHaveMultipleMenuOpenAtOnce]);
|
|
322
336
|
const first = useCallback(() => dispatch({
|
|
323
337
|
type: SideNavigationMenuReducerActionType.Move,
|
|
324
338
|
index: 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SideNavigationMenu.js","sources":["../../src/components/side-navigation-menu/types.ts","../../src/components/side-navigation-menu/styles.ts","../../src/components/side-navigation-menu/reducer.ts","../../src/components/side-navigation-menu/SideNavigationMenu.tsx"],"sourcesContent":["import { ComponentProps, MutableRefObject } from 'react';\nimport { IconProps } from '../icon';\nimport { SideNavigationMenuBarVariant } from '../side-navigation-menu-bar';\nimport { Theme } from '@redsift/design-system/types';\nimport { BadgeProps } from '../badge';\n\n/**\n * Context props.\n */\nexport type SideNavigationMenuContextProps = {\n menuItems: Set<HTMLAnchorElement | HTMLButtonElement>;\n};\n\n/**\n * Reducer props.\n */\nexport type SideNavigationMenuReducerState = {\n isExpanded: boolean;\n currentIndex: number;\n previousIndex: number;\n};\n\nexport enum SideNavigationMenuReducerActionType {\n Expand = 'expand',\n Collapse = 'collapse',\n Move = 'move',\n}\n\nexport type SideNavigationMenuReducerAction = {\n type: SideNavigationMenuReducerActionType;\n index?: number;\n};\n\n/**\n * Component props.\n */\nexport interface SideNavigationMenuProps extends ComponentProps<'div'> {\n /** Custom props to pass to the button. */\n buttonProps?: ComponentProps<'button'>;\n /** Custom ref to pass to the button. */\n buttonRef?: MutableRefObject<HTMLButtonElement>;\n /** Custom props to pass to the Badge component, if any. */\n badgeProps?: Omit<BadgeProps, 'ref'>;\n /** Whether or not the menu contains children that have a badge. */\n hasBadge?: boolean;\n /**\n * Can be a string or an array of strings containing `d` property of the `path` SVG element.<br />\n * Can also be a ReactElement.\n */\n icon?: IconProps['icon'];\n /** Custom props to pass to the Icon component. */\n iconProps?: Omit<IconProps, 'ref' | 'icon'>;\n /** Custom ref to pass to the Icon component. */\n iconRef?: MutableRefObject<HTMLElement>;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Whether the menu is expanded or not. */\n isExpanded?: boolean;\n /** By default, the badge is hidden when the menu is expanded. This prop controls this behavior. */\n keepBadgeVisible?: boolean;\n /** Custom props to pass to the menu. */\n menuProps?: ComponentProps<'ul'>;\n /** Custom ref to pass to the menu. */\n menuRef?: MutableRefObject<HTMLUListElement>;\n /** Theme. */\n theme?: Theme;\n}\n\nexport type StyledSideNavigationMenuProps = Omit<SideNavigationMenuProps, 'isDisabled' | 'isExpanded'> & {\n $isDisabled: SideNavigationMenuProps['isDisabled'];\n $isExpanded: SideNavigationMenuProps['isExpanded'];\n $numberOfChildren: number;\n $variant: SideNavigationMenuBarVariant;\n $theme: SideNavigationMenuProps['theme'];\n};\n","import styled, { css } from 'styled-components';\nimport { StyledSideNavigationMenuProps } from './types';\nimport { SideNavigationMenuBarVariant } from '../side-navigation-menu-bar';\n\n/**\n * Component style.\n */\nexport const StyledSideNavigationMenu = styled.div<StyledSideNavigationMenuProps>`\n .redsift-side-navigation-menu__current-indicator-container {\n min-width: 4px;\n }\n\n .redsift-side-navigation-menu__menu-container {\n width: 100%;\n }\n\n .redsift-badge {\n margin-left: 8px;\n }\n\n ${({ $isDisabled, $variant, $theme }) => css`\n .redsift-side-navigation-menu__menu-container > button {\n ${!$isDisabled\n ? css`\n & {\n color: var(--redsift-color-${$theme}-components-side-navigation-menu-item-text-resting);\n }\n `\n : css`\n & {\n color: var(--redsift-color-${$theme}-components-side-navigation-menu-item-text-disabled);\n }\n `}\n align-items: center;\n background-color: var(--redsift-color-${$theme}-components-side-navigation-background);\n border: none;\n border-radius: 0 4px 4px 0;\n display: flex;\n font-family: var(--redsift-typography-body-font-family);\n font-size: 14px;\n font-weight: var(--redsift-typography-body-font-weight);\n gap: 0;\n height: 40px;\n line-height: var(--redsift-typography-body-line-height);\n margin-left: -4px;\n transition: padding 300ms ease-out;\n padding: 0 16px 0 ${$variant === SideNavigationMenuBarVariant.shrinked ? '16px' : '16px'};\n text-decoration: none;\n text-transform: uppercase;\n width: calc(100% + ${$variant === SideNavigationMenuBarVariant.shrinked ? '0px' : '4px'});\n\n :hover,\n :focus-visible {\n outline: none;\n\n ${!$isDisabled\n ? css`\n background-color: var(--redsift-color-${$theme}-components-side-navigation-menu-item-background-hover);\n &,\n .redsift-icon.first,\n .redsift-side-navigation-menu__expand-icon {\n color: var(--redsift-color-${$theme}-components-side-navigation-menu-item-text-hover);\n }\n cursor: pointer;\n `\n : ''}\n }\n\n :active {\n ${!$isDisabled\n ? css`\n background-color: var(--redsift-color-${$theme}-components-side-navigation-menu-item-background-active);\n `\n : ''}\n }\n\n @media (prefers-reduced-motion: no-preference) {\n :focus-visible {\n > span${$variant === SideNavigationMenuBarVariant.shrinked ? '.first' : '.content'} {\n outline: 2px solid var(--redsift-color-primary-n);\n transition: outline-offset 75ms ease-out;\n }\n\n :not(:active):focus-visible {\n > span${$variant === SideNavigationMenuBarVariant.shrinked ? '.first' : '.content'} {\n transition-duration: 0.25s;\n }\n }\n }\n\n :not(:active):focus-visible {\n > span${$variant === SideNavigationMenuBarVariant.shrinked ? '.first' : '.content'} {\n outline-offset: 0.25rem;\n }\n }\n }\n }\n\n .content {\n transition: opacity 300ms ease-out;\n opacity: ${$variant === SideNavigationMenuBarVariant.shrinked ? '0' : '1'};\n overflow: hidden;\n white-space: nowrap;\n }\n `}\n\n .first {\n box-sizing: unset;\n margin-right: 8px;\n }\n\n .redsift-side-navigation-menu__expand-icon {\n transition: transform 300ms ease-out;\n ${({ $isDisabled, $theme }) =>\n !$isDisabled\n ? css`\n &,\n .redsift-icon.first {\n color: var(--redsift-color-${$theme}-components-side-navigation-menu-item-text-resting);\n }\n `\n : css`\n &,\n .redsift-icon.first {\n color: var(--redsift-color-${$theme}-components-side-navigation-menu-item-text-disabled);\n }\n `}\n ${({ $isExpanded }) =>\n !$isExpanded\n ? css`\n transform: rotate(0);\n `\n : css`\n transform: rotate(-180deg);\n `}\n margin-left: auto;\n\n transition: opacity 300ms ease-out;\n opacity: ${({ $variant }) => ($variant === SideNavigationMenuBarVariant.standard ? '1' : '0')};\n }\n\n [dir='rtl'] & {\n .redsift-side-navigation-menu__expand-icon {\n margin-left: unset;\n margin-right: auto;\n }\n }\n\n /**\n * Display children or not\n */\n\n .redsift-side-navigation-menu__menu-container > ul {\n list-style: none;\n margin: unset;\n padding: unset;\n margin-left: -4px;\n\n ${({ $variant }) => css`\n width: calc(100% + ${$variant === SideNavigationMenuBarVariant.shrinked ? '0px' : '4px'});\n `}\n margin-bottom: 4px;\n max-width: 241px;\n transition: height 300ms ease-out;\n overflow: hidden;\n ${({ $isExpanded, $numberOfChildren }) =>\n $isExpanded\n ? css`\n height: ${$numberOfChildren * 32}px;\n `\n : css`\n height: 0;\n `};\n }\n`;\n","import {\n SideNavigationMenuReducerState,\n SideNavigationMenuReducerAction,\n SideNavigationMenuReducerActionType,\n} from './types';\n\nexport const SideNavigationMenuReducer = (\n state: SideNavigationMenuReducerState,\n action: SideNavigationMenuReducerAction\n): SideNavigationMenuReducerState => {\n switch (action.type) {\n case SideNavigationMenuReducerActionType.Expand:\n return { ...state, isExpanded: true };\n case SideNavigationMenuReducerActionType.Collapse:\n return {\n isExpanded: false,\n currentIndex: null!,\n previousIndex: null!,\n };\n case SideNavigationMenuReducerActionType.Move:\n return {\n ...state,\n isExpanded: true,\n currentIndex: action.index!,\n previousIndex: state.currentIndex,\n };\n }\n};\n","import React, {\n forwardRef,\n KeyboardEvent,\n MouseEvent,\n MutableRefObject,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from 'react';\nimport classNames from 'classnames';\nimport { mdiChevronDown } from '@redsift/icons';\nimport { Comp } from '../../types';\nimport { SideNavigationMenuItem } from '../side-navigation-menu-item';\nimport { Icon, IconSize } from '../icon';\nimport { Badge } from '../badge';\nimport { StyledSideNavigationMenu } from './styles';\nimport { SideNavigationMenuContextProps, SideNavigationMenuProps, SideNavigationMenuReducerActionType } from './types';\nimport { SideNavigationMenuContext } from './context';\nimport { SideNavigationMenuReducer } from './reducer';\nimport { SideNavigationMenuBarContext } from '../side-navigation-menu-bar/context';\nimport { warnIfNoAccessibleLabelFound } from '../../utils/warnIfNoAccessibleLabelFound';\nimport { filterComponents } from '../../utils/filterComponents';\nimport { Flexbox } from '../flexbox';\nimport { StyledSideNavigationMenuItemIndicator } from '../side-navigation-menu-item/styles';\nimport { AppContainerContext } from '../app-container';\nimport { AppSidePanelVariant } from '../app-side-panel';\nimport { ThemeProvider, useTheme } from '../theme';\nimport { useId } from '../../utils';\n\nconst COMPONENT_NAME = 'SideNavigationMenu';\nconst CLASSNAME = 'redsift-side-navigation-menu';\n\n/**\n * The SideNavigationMenu component.\n */\nexport const SideNavigationMenu: Comp<SideNavigationMenuProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n 'aria-label': ariaLabel,\n buttonProps = {},\n buttonRef = useRef<HTMLButtonElement>() as MutableRefObject<HTMLButtonElement>,\n children,\n className,\n badgeProps,\n hasBadge,\n icon,\n iconProps,\n iconRef = useRef<HTMLElement>(),\n id: propsId,\n isDisabled,\n isExpanded: propsIsExpanded,\n keepBadgeVisible,\n menuProps = {},\n menuRef = useRef<HTMLUListElement>(),\n tabIndex,\n theme: propsTheme,\n ...forwardedProps\n } = props;\n const [_id] = useId();\n const id = propsId ?? _id;\n\n warnIfNoAccessibleLabelFound(props, undefined, 'SideNavigationMenu');\n\n const appContainerState = useContext(AppContainerContext);\n const sideNavigationMenuBarContext = useContext(SideNavigationMenuBarContext);\n const theme = useTheme(propsTheme);\n const [isFirstChild, setIsFirstChild] = useState(false);\n const currentPosition = useRef(-1);\n const { menuItems: menubarItems } = sideNavigationMenuBarContext || {};\n\n useEffect(() => {\n currentPosition.current = -1;\n });\n\n /**\n * Create an array containing only valid children which can only be SideNavigationMenuItem.\n * This prevent the navigation menubar to have more than two levels.\n */\n const childArray = filterComponents(SideNavigationMenuItem)(children);\n const renderedMenuItems = childArray.map((child, index) => {\n if (child.props.isCurrent) {\n currentPosition.current = index;\n }\n return (\n <li key={child.key ?? index} role=\"none\">\n {React.cloneElement(child, {\n isDisabled: child.props.isDisabled || isDisabled || undefined,\n isSecondLevel: true,\n key: child.key ?? index,\n })}\n </li>\n );\n });\n\n const menuItems = useRef<Set<HTMLAnchorElement | HTMLButtonElement>>(new Set()).current;\n const [state, dispatch] = useReducer(SideNavigationMenuReducer, {\n currentIndex: null!,\n isExpanded: Boolean(propsIsExpanded),\n previousIndex: null!,\n });\n const { isExpanded, currentIndex, previousIndex } = state;\n\n const first = useCallback(() => dispatch({ type: SideNavigationMenuReducerActionType.Move, index: 0 }), []);\n\n const last = useCallback(\n () =>\n dispatch({\n type: SideNavigationMenuReducerActionType.Move,\n index: menuItems.size - 1,\n }),\n [menuItems.size]\n );\n\n const move = useCallback((index: number) => dispatch({ type: SideNavigationMenuReducerActionType.Move, index }), []);\n\n const open = useCallback(() => {\n sideNavigationMenuBarContext?.setCurrentOpenMenuId?.(id);\n dispatch({ type: SideNavigationMenuReducerActionType.Expand });\n appContainerState?.expandSidePanel();\n }, []);\n\n const close = useCallback(\n (focusButton?: boolean) => {\n if (isExpanded) {\n if (focusButton) {\n buttonRef.current.focus();\n }\n\n dispatch({ type: SideNavigationMenuReducerActionType.Collapse });\n }\n },\n [isExpanded]\n );\n\n useEffect(() => {\n if (sideNavigationMenuBarContext?.currentOpenMenuId && sideNavigationMenuBarContext.currentOpenMenuId !== id) {\n close();\n }\n }, [sideNavigationMenuBarContext?.currentOpenMenuId]);\n\n const previous = () => {\n const index = currentIndex === 0 ? menuItems.size - 1 : currentIndex - 1;\n move(index);\n };\n\n const next = () => {\n const index = currentIndex === menuItems.size - 1 ? 0 : currentIndex + 1;\n move(index);\n };\n\n const match = (e: React.KeyboardEvent<HTMLUListElement>) => {\n const items = Array.from(menuItems);\n\n // Reorder the array, starting with the currentNode\n const reorderedItems = [...items.slice(currentIndex), ...items.slice(0, currentIndex)];\n\n // Find all nodes that begin with the pressed letter\n const matches = reorderedItems.filter((menuItem) => {\n const { textContent } = menuItem;\n // istanbul ignore next\n const firstLetter = textContent?.toLowerCase().charAt(0);\n return e.key === firstLetter;\n });\n\n // Exit early if there are no matches\n if (!matches.length) {\n return;\n }\n\n // If the focused item is a match, focus the next match.\n // Otherwise, focus the first match\n const currentNode = items[currentIndex];\n const nextMatch = matches.includes(currentNode) ? matches[1] : matches[0];\n const index = items.findIndex((item) => {\n return item === nextMatch;\n });\n\n move(index);\n };\n\n useEffect(() => {\n if (appContainerState && appContainerState?.sidePanelVariant === AppSidePanelVariant.shrinked && isExpanded) {\n close();\n }\n }, [appContainerState?.sidePanelVariant]);\n\n const value = useMemo<SideNavigationMenuContextProps>(() => ({ menuItems }), [menuItems]);\n\n useEffect(() => {\n const items = Array.from(menuItems);\n\n if (currentIndex !== previousIndex) {\n const currentNode = items[currentIndex] as HTMLElement;\n currentNode?.focus();\n }\n }, [menuItems, currentIndex, previousIndex]);\n\n useEffect(() => {\n if (!sideNavigationMenuBarContext) {\n setIsFirstChild(true);\n return;\n }\n\n const menuItemNode = (buttonRef as MutableRefObject<HTMLButtonElement>).current;\n\n if (menuItemNode) {\n menubarItems.add(menuItemNode);\n }\n\n return () => {\n menubarItems.delete(menuItemNode);\n };\n }, [menubarItems]);\n\n const keyDownOnButton = (e: KeyboardEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n return;\n }\n const currentNode = e.target as HTMLUListElement;\n\n switch (e.code) {\n case 'Enter':\n case 'Space':\n e.stopPropagation();\n currentNode.click();\n first();\n break;\n case 'ArrowRight':\n e.stopPropagation();\n first();\n break;\n case 'ArrowLeft':\n last();\n break;\n default:\n break;\n }\n };\n\n const buttonEventHandler = {\n onClick: (event: MouseEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n return;\n }\n\n buttonProps.onClick?.(event);\n event.stopPropagation();\n if (isExpanded) {\n close();\n } else {\n open();\n }\n },\n onKeyDown: (event: KeyboardEvent<HTMLButtonElement>) => {\n buttonProps.onKeyDown?.(event);\n keyDownOnButton(event);\n },\n };\n\n const keyDownOnMenuItemList = (e: KeyboardEvent<HTMLUListElement>) => {\n const currentNode = e.target as HTMLUListElement;\n\n switch (e.code) {\n case 'ArrowUp':\n e.stopPropagation();\n e.preventDefault();\n previous();\n break;\n case 'ArrowDown':\n e.stopPropagation();\n e.preventDefault();\n next();\n break;\n case 'ArrowLeft':\n e.preventDefault();\n e.stopPropagation();\n close(true);\n break;\n case 'ArrowRight':\n e.preventDefault();\n close(!sideNavigationMenuBarContext);\n break;\n case 'Home':\n e.stopPropagation();\n e.preventDefault();\n first();\n break;\n case 'End':\n e.stopPropagation();\n e.preventDefault();\n last();\n break;\n case 'Enter':\n case 'Space':\n e.preventDefault();\n currentNode.click();\n break;\n case 'Escape':\n e.stopPropagation();\n e.preventDefault();\n close(true);\n break;\n default:\n e.stopPropagation();\n match(e);\n break;\n }\n };\n\n const menuItemListEventHandler = {\n onKeyDown: (event: KeyboardEvent<HTMLUListElement>) => {\n menuProps.onKeyDown?.(event);\n keyDownOnMenuItemList(event);\n },\n onClick: (event: MouseEvent<HTMLUListElement>) => {\n if (isDisabled) {\n return;\n }\n menuProps.onClick?.(event);\n },\n };\n\n const sideNavigationVariant = sideNavigationMenuBarContext?.sideNavigationMenuBarVariant;\n\n return (\n <ThemeProvider value={{ theme }}>\n <StyledSideNavigationMenu\n {...forwardedProps}\n $isDisabled={isDisabled}\n $isExpanded={isExpanded}\n $numberOfChildren={renderedMenuItems.length}\n $theme={theme}\n $variant={sideNavigationVariant}\n className={classNames(SideNavigationMenu.className, className)}\n id={id}\n ref={ref as MutableRefObject<HTMLDivElement>}\n tabIndex={undefined}\n >\n <SideNavigationMenuContext.Provider value={value}>\n <Flexbox flexDirection=\"row\" gap=\"0px\">\n <div className={`${SideNavigationMenu.className}__current-indicator-container`}>\n {currentPosition.current !== -1 ? (\n <StyledSideNavigationMenuItemIndicator\n $theme={theme}\n style={{\n position: 'relative',\n top: isExpanded ? `${32 + currentPosition.current * 32}px` : 0,\n transition: 'top 300ms ease-out',\n }}\n />\n ) : null}\n </div>\n <div className={`${SideNavigationMenu.className}__menu-container`}>\n <button\n {...buttonProps}\n aria-disabled={isDisabled}\n aria-expanded={isExpanded ? 'true' : 'false'}\n aria-haspopup=\"true\"\n ref={buttonRef as MutableRefObject<HTMLButtonElement>}\n role=\"menuitem\"\n tabIndex={tabIndex !== undefined ? tabIndex : isFirstChild ? 0 : -1}\n type=\"button\"\n {...buttonEventHandler}\n >\n <Icon\n color={`var(--redsift-side-navigation-color-menu-item-text-${isDisabled ? 'disabled' : 'resting'})`}\n {...iconProps}\n icon={icon!}\n ref={iconRef as MutableRefObject<HTMLElement>}\n className={classNames(iconProps?.className, 'first')}\n size={IconSize.medium}\n />\n <span className=\"content\">{ariaLabel}</span>\n {hasBadge && (!isExpanded || keepBadgeVisible) ? <Badge color=\"error\" {...badgeProps} /> : null}\n <Icon\n icon={mdiChevronDown}\n className={`${SideNavigationMenu.className}__expand-icon`}\n size={IconSize.medium}\n />\n </button>\n <ul\n {...menuProps}\n aria-label={ariaLabel}\n aria-orientation=\"vertical\"\n ref={menuRef as MutableRefObject<HTMLUListElement>}\n role=\"menu\"\n {...menuItemListEventHandler}\n >\n {renderedMenuItems}\n </ul>\n </div>\n </Flexbox>\n </SideNavigationMenuContext.Provider>\n </StyledSideNavigationMenu>\n </ThemeProvider>\n );\n});\nSideNavigationMenu.className = CLASSNAME;\nSideNavigationMenu.displayName = COMPONENT_NAME;\n"],"names":["SideNavigationMenuReducerActionType","StyledSideNavigationMenu","styled","div","_ref","$isDisabled","$variant","$theme","css","SideNavigationMenuBarVariant","shrinked","_ref2","_ref3","$isExpanded","_ref4","standard","_ref5","_ref6","$numberOfChildren","SideNavigationMenuReducer","state","action","type","Expand","_objectSpread","isExpanded","Collapse","currentIndex","previousIndex","Move","index","COMPONENT_NAME","CLASSNAME","SideNavigationMenu","forwardRef","props","ref","ariaLabel","buttonProps","buttonRef","useRef","children","className","badgeProps","hasBadge","icon","iconProps","iconRef","id","propsId","isDisabled","propsIsExpanded","keepBadgeVisible","menuProps","menuRef","tabIndex","theme","propsTheme","forwardedProps","_objectWithoutProperties","_excluded","_id","useId","warnIfNoAccessibleLabelFound","undefined","appContainerState","useContext","AppContainerContext","sideNavigationMenuBarContext","SideNavigationMenuBarContext","useTheme","isFirstChild","setIsFirstChild","useState","currentPosition","menuItems","menubarItems","useEffect","current","childArray","filterComponents","SideNavigationMenuItem","renderedMenuItems","map","child","_child$key","_child$key2","isCurrent","React","createElement","key","role","cloneElement","isSecondLevel","Set","dispatch","useReducer","Boolean","first","useCallback","last","size","move","open","_sideNavigationMenuBa","setCurrentOpenMenuId","call","expandSidePanel","close","focusButton","focus","currentOpenMenuId","previous","next","match","e","items","Array","from","reorderedItems","slice","matches","filter","menuItem","textContent","firstLetter","toLowerCase","charAt","length","currentNode","nextMatch","includes","findIndex","item","sidePanelVariant","AppSidePanelVariant","value","useMemo","menuItemNode","add","delete","keyDownOnButton","target","code","stopPropagation","click","buttonEventHandler","onClick","event","_buttonProps$onClick","onKeyDown","_buttonProps$onKeyDow","keyDownOnMenuItemList","preventDefault","menuItemListEventHandler","_menuProps$onKeyDown","_menuProps$onClick","sideNavigationVariant","sideNavigationMenuBarVariant","ThemeProvider","_extends","classNames","SideNavigationMenuContext","Provider","Flexbox","flexDirection","gap","StyledSideNavigationMenuItemIndicator","style","position","top","transition","Icon","color","IconSize","medium","Badge","mdiChevronDown","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SideNavigationMenu.js","sources":["../../src/components/side-navigation-menu/types.ts","../../src/components/side-navigation-menu/styles.ts","../../src/components/side-navigation-menu/reducer.ts","../../src/components/side-navigation-menu/SideNavigationMenu.tsx"],"sourcesContent":["import { ComponentProps, MutableRefObject } from 'react';\nimport { IconProps } from '../icon';\nimport { SideNavigationMenuBarVariant } from '../side-navigation-menu-bar';\nimport { Theme } from '@redsift/design-system/types';\nimport { BadgeProps } from '../badge';\n\n/**\n * Context props.\n */\nexport type SideNavigationMenuContextProps = {\n menuItems: Set<HTMLAnchorElement | HTMLButtonElement>;\n};\n\n/**\n * Reducer props.\n */\nexport type SideNavigationMenuReducerState = {\n isExpanded: boolean;\n currentIndex: number;\n previousIndex: number;\n};\n\nexport enum SideNavigationMenuReducerActionType {\n Expand = 'expand',\n Collapse = 'collapse',\n Move = 'move',\n}\n\nexport type SideNavigationMenuReducerAction = {\n type: SideNavigationMenuReducerActionType;\n index?: number;\n};\n\n/**\n * Component props.\n */\nexport interface SideNavigationMenuProps extends ComponentProps<'div'> {\n /** Custom props to pass to the button. */\n buttonProps?: ComponentProps<'button'>;\n /** Custom ref to pass to the button. */\n buttonRef?: MutableRefObject<HTMLButtonElement>;\n /** Custom props to pass to the Badge component, if any. */\n badgeProps?: Omit<BadgeProps, 'ref'>;\n /** Whether or not the menu contains children that have a badge. */\n hasBadge?: boolean;\n /**\n * Can be a string or an array of strings containing `d` property of the `path` SVG element.<br />\n * Can also be a ReactElement.\n */\n icon?: IconProps['icon'];\n /** Custom props to pass to the Icon component. */\n iconProps?: Omit<IconProps, 'ref' | 'icon'>;\n /** Custom ref to pass to the Icon component. */\n iconRef?: MutableRefObject<HTMLElement>;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Whether the menu is expanded or not. */\n isExpanded?: boolean;\n /** By default, the badge is hidden when the menu is expanded. This prop controls this behavior. */\n keepBadgeVisible?: boolean;\n /** Custom props to pass to the menu. */\n menuProps?: ComponentProps<'ul'>;\n /** Custom ref to pass to the menu. */\n menuRef?: MutableRefObject<HTMLUListElement>;\n /** Theme. */\n theme?: Theme;\n}\n\nexport type StyledSideNavigationMenuProps = Omit<SideNavigationMenuProps, 'isDisabled' | 'isExpanded'> & {\n $isDisabled: SideNavigationMenuProps['isDisabled'];\n $isExpanded: SideNavigationMenuProps['isExpanded'];\n $numberOfChildren: number;\n $variant: SideNavigationMenuBarVariant;\n $theme: SideNavigationMenuProps['theme'];\n};\n","import styled, { css } from 'styled-components';\nimport { StyledSideNavigationMenuProps } from './types';\nimport { SideNavigationMenuBarVariant } from '../side-navigation-menu-bar';\n\n/**\n * Component style.\n */\nexport const StyledSideNavigationMenu = styled.div<StyledSideNavigationMenuProps>`\n .redsift-side-navigation-menu__current-indicator-container {\n min-width: 4px;\n }\n\n .redsift-side-navigation-menu__menu-container {\n width: 100%;\n }\n\n .redsift-badge {\n margin-left: 8px;\n }\n\n ${({ $isDisabled, $variant, $theme }) => css`\n .redsift-side-navigation-menu__menu-container > button {\n ${!$isDisabled\n ? css`\n & {\n color: var(--redsift-color-${$theme}-components-side-navigation-menu-item-text-resting);\n }\n `\n : css`\n & {\n color: var(--redsift-color-${$theme}-components-side-navigation-menu-item-text-disabled);\n }\n `}\n align-items: center;\n background-color: var(--redsift-color-${$theme}-components-side-navigation-background);\n border: none;\n border-radius: 0 4px 4px 0;\n display: flex;\n font-family: var(--redsift-typography-body-font-family);\n font-size: 14px;\n font-weight: var(--redsift-typography-body-font-weight);\n gap: 0;\n height: 40px;\n line-height: var(--redsift-typography-body-line-height);\n margin-left: -4px;\n transition: padding 300ms ease-out;\n padding: 0 16px 0 ${$variant === SideNavigationMenuBarVariant.shrinked ? '16px' : '16px'};\n text-decoration: none;\n text-transform: uppercase;\n width: calc(100% + ${$variant === SideNavigationMenuBarVariant.shrinked ? '0px' : '4px'});\n\n :hover,\n :focus-visible {\n outline: none;\n\n ${!$isDisabled\n ? css`\n background-color: var(--redsift-color-${$theme}-components-side-navigation-menu-item-background-hover);\n &,\n .redsift-icon.first,\n .redsift-side-navigation-menu__expand-icon {\n color: var(--redsift-color-${$theme}-components-side-navigation-menu-item-text-hover);\n }\n cursor: pointer;\n `\n : ''}\n }\n\n :active {\n ${!$isDisabled\n ? css`\n background-color: var(--redsift-color-${$theme}-components-side-navigation-menu-item-background-active);\n `\n : ''}\n }\n\n @media (prefers-reduced-motion: no-preference) {\n :focus-visible {\n > span${$variant === SideNavigationMenuBarVariant.shrinked ? '.first' : '.content'} {\n outline: 2px solid var(--redsift-color-primary-n);\n transition: outline-offset 75ms ease-out;\n }\n\n :not(:active):focus-visible {\n > span${$variant === SideNavigationMenuBarVariant.shrinked ? '.first' : '.content'} {\n transition-duration: 0.25s;\n }\n }\n }\n\n :not(:active):focus-visible {\n > span${$variant === SideNavigationMenuBarVariant.shrinked ? '.first' : '.content'} {\n outline-offset: 0.25rem;\n }\n }\n }\n }\n\n .content {\n transition: opacity 300ms ease-out;\n opacity: ${$variant === SideNavigationMenuBarVariant.shrinked ? '0' : '1'};\n overflow: hidden;\n white-space: nowrap;\n }\n `}\n\n .first {\n box-sizing: unset;\n margin-right: 8px;\n }\n\n .redsift-side-navigation-menu__expand-icon {\n transition: transform 300ms ease-out;\n ${({ $isDisabled, $theme }) =>\n !$isDisabled\n ? css`\n &,\n .redsift-icon.first {\n color: var(--redsift-color-${$theme}-components-side-navigation-menu-item-text-resting);\n }\n `\n : css`\n &,\n .redsift-icon.first {\n color: var(--redsift-color-${$theme}-components-side-navigation-menu-item-text-disabled);\n }\n `}\n ${({ $isExpanded }) =>\n !$isExpanded\n ? css`\n transform: rotate(0);\n `\n : css`\n transform: rotate(-180deg);\n `}\n margin-left: auto;\n\n transition: opacity 300ms ease-out;\n opacity: ${({ $variant }) => ($variant === SideNavigationMenuBarVariant.standard ? '1' : '0')};\n }\n\n [dir='rtl'] & {\n .redsift-side-navigation-menu__expand-icon {\n margin-left: unset;\n margin-right: auto;\n }\n }\n\n /**\n * Display children or not\n */\n\n .redsift-side-navigation-menu__menu-container > ul {\n list-style: none;\n margin: unset;\n padding: unset;\n margin-left: -4px;\n\n ${({ $variant }) => css`\n width: calc(100% + ${$variant === SideNavigationMenuBarVariant.shrinked ? '0px' : '4px'});\n `}\n margin-bottom: 4px;\n max-width: 241px;\n transition: height 300ms ease-out;\n overflow: hidden;\n ${({ $isExpanded, $numberOfChildren }) =>\n $isExpanded\n ? css`\n height: ${$numberOfChildren * 32}px;\n `\n : css`\n height: 0;\n `};\n }\n`;\n","import {\n SideNavigationMenuReducerState,\n SideNavigationMenuReducerAction,\n SideNavigationMenuReducerActionType,\n} from './types';\n\nexport const SideNavigationMenuReducer = (\n state: SideNavigationMenuReducerState,\n action: SideNavigationMenuReducerAction\n): SideNavigationMenuReducerState => {\n switch (action.type) {\n case SideNavigationMenuReducerActionType.Expand:\n return { ...state, isExpanded: true };\n case SideNavigationMenuReducerActionType.Collapse:\n return {\n isExpanded: false,\n currentIndex: null!,\n previousIndex: null!,\n };\n case SideNavigationMenuReducerActionType.Move:\n return {\n ...state,\n isExpanded: true,\n currentIndex: action.index!,\n previousIndex: state.currentIndex,\n };\n }\n};\n","import React, {\n forwardRef,\n KeyboardEvent,\n MouseEvent,\n MutableRefObject,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from 'react';\nimport classNames from 'classnames';\nimport { mdiChevronDown } from '@redsift/icons';\nimport { Comp } from '../../types';\nimport { SideNavigationMenuItem } from '../side-navigation-menu-item';\nimport { Icon, IconSize } from '../icon';\nimport { Badge } from '../badge';\nimport { StyledSideNavigationMenu } from './styles';\nimport { SideNavigationMenuContextProps, SideNavigationMenuProps, SideNavigationMenuReducerActionType } from './types';\nimport { SideNavigationMenuContext } from './context';\nimport { SideNavigationMenuReducer } from './reducer';\nimport { SideNavigationMenuBarContext } from '../side-navigation-menu-bar/context';\nimport { warnIfNoAccessibleLabelFound } from '../../utils/warnIfNoAccessibleLabelFound';\nimport { filterComponents } from '../../utils/filterComponents';\nimport { Flexbox } from '../flexbox';\nimport { StyledSideNavigationMenuItemIndicator } from '../side-navigation-menu-item/styles';\nimport { AppContainerContext } from '../app-container';\nimport { AppSidePanelVariant } from '../app-side-panel';\nimport { ThemeProvider, useTheme } from '../theme';\nimport { useId } from '../../utils';\n\nconst COMPONENT_NAME = 'SideNavigationMenu';\nconst CLASSNAME = 'redsift-side-navigation-menu';\n\n/**\n * The SideNavigationMenu component.\n */\nexport const SideNavigationMenu: Comp<SideNavigationMenuProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n 'aria-label': ariaLabel,\n buttonProps = {},\n buttonRef = useRef<HTMLButtonElement>() as MutableRefObject<HTMLButtonElement>,\n children,\n className,\n badgeProps,\n hasBadge,\n icon,\n iconProps,\n iconRef = useRef<HTMLElement>(),\n id: propsId,\n isDisabled,\n isExpanded: propsIsExpanded,\n keepBadgeVisible,\n menuProps = {},\n menuRef = useRef<HTMLUListElement>(),\n tabIndex,\n theme: propsTheme,\n ...forwardedProps\n } = props;\n const [_id] = useId();\n const id = propsId ?? _id;\n\n warnIfNoAccessibleLabelFound(props, undefined, 'SideNavigationMenu');\n\n const appContainerState = useContext(AppContainerContext);\n const sideNavigationMenuBarContext = useContext(SideNavigationMenuBarContext);\n const theme = useTheme(propsTheme);\n const [isFirstChild, setIsFirstChild] = useState(false);\n const currentPosition = useRef(-1);\n const { menuItems: menubarItems, canHaveMultipleMenuOpenAtOnce } = sideNavigationMenuBarContext || {};\n\n useEffect(() => {\n currentPosition.current = -1;\n });\n\n /**\n * Create an array containing only valid children which can only be SideNavigationMenuItem.\n * This prevent the navigation menubar to have more than two levels.\n */\n const childArray = filterComponents(SideNavigationMenuItem)(children);\n const renderedMenuItems = childArray.map((child, index) => {\n if (child.props.isCurrent) {\n currentPosition.current = index;\n }\n return (\n <li key={child.key ?? index} role=\"none\">\n {React.cloneElement(child, {\n isDisabled: child.props.isDisabled || isDisabled || undefined,\n isSecondLevel: true,\n key: child.key ?? index,\n })}\n </li>\n );\n });\n\n const menuItems = useRef<Set<HTMLAnchorElement | HTMLButtonElement>>(new Set()).current;\n const [state, dispatch] = useReducer(SideNavigationMenuReducer, {\n currentIndex: null!,\n isExpanded: Boolean(propsIsExpanded),\n previousIndex: null!,\n });\n const { isExpanded, currentIndex, previousIndex } = state;\n\n useEffect(() => {\n if (propsIsExpanded !== undefined) {\n if (propsIsExpanded) {\n dispatch({ type: SideNavigationMenuReducerActionType.Expand });\n } else if (!propsIsExpanded && !canHaveMultipleMenuOpenAtOnce) {\n dispatch({ type: SideNavigationMenuReducerActionType.Collapse });\n }\n }\n }, [propsIsExpanded, canHaveMultipleMenuOpenAtOnce]);\n\n const first = useCallback(() => dispatch({ type: SideNavigationMenuReducerActionType.Move, index: 0 }), []);\n\n const last = useCallback(\n () =>\n dispatch({\n type: SideNavigationMenuReducerActionType.Move,\n index: menuItems.size - 1,\n }),\n [menuItems.size]\n );\n\n const move = useCallback((index: number) => dispatch({ type: SideNavigationMenuReducerActionType.Move, index }), []);\n\n const open = useCallback(() => {\n sideNavigationMenuBarContext?.setCurrentOpenMenuId?.(id);\n dispatch({ type: SideNavigationMenuReducerActionType.Expand });\n appContainerState?.expandSidePanel();\n }, []);\n\n const close = useCallback(\n (focusButton?: boolean) => {\n if (isExpanded) {\n if (focusButton) {\n buttonRef.current.focus();\n }\n\n dispatch({ type: SideNavigationMenuReducerActionType.Collapse });\n }\n },\n [isExpanded]\n );\n\n useEffect(() => {\n if (sideNavigationMenuBarContext?.currentOpenMenuId && sideNavigationMenuBarContext.currentOpenMenuId !== id) {\n close();\n }\n }, [sideNavigationMenuBarContext?.currentOpenMenuId]);\n\n const previous = () => {\n const index = currentIndex === 0 ? menuItems.size - 1 : currentIndex - 1;\n move(index);\n };\n\n const next = () => {\n const index = currentIndex === menuItems.size - 1 ? 0 : currentIndex + 1;\n move(index);\n };\n\n const match = (e: React.KeyboardEvent<HTMLUListElement>) => {\n const items = Array.from(menuItems);\n\n // Reorder the array, starting with the currentNode\n const reorderedItems = [...items.slice(currentIndex), ...items.slice(0, currentIndex)];\n\n // Find all nodes that begin with the pressed letter\n const matches = reorderedItems.filter((menuItem) => {\n const { textContent } = menuItem;\n // istanbul ignore next\n const firstLetter = textContent?.toLowerCase().charAt(0);\n return e.key === firstLetter;\n });\n\n // Exit early if there are no matches\n if (!matches.length) {\n return;\n }\n\n // If the focused item is a match, focus the next match.\n // Otherwise, focus the first match\n const currentNode = items[currentIndex];\n const nextMatch = matches.includes(currentNode) ? matches[1] : matches[0];\n const index = items.findIndex((item) => {\n return item === nextMatch;\n });\n\n move(index);\n };\n\n useEffect(() => {\n if (appContainerState && appContainerState?.sidePanelVariant === AppSidePanelVariant.shrinked && isExpanded) {\n close();\n }\n }, [appContainerState?.sidePanelVariant]);\n\n const value = useMemo<SideNavigationMenuContextProps>(() => ({ menuItems }), [menuItems]);\n\n useEffect(() => {\n const items = Array.from(menuItems);\n\n if (currentIndex !== previousIndex) {\n const currentNode = items[currentIndex] as HTMLElement;\n currentNode?.focus();\n }\n }, [menuItems, currentIndex, previousIndex]);\n\n useEffect(() => {\n if (!sideNavigationMenuBarContext) {\n setIsFirstChild(true);\n return;\n }\n\n const menuItemNode = (buttonRef as MutableRefObject<HTMLButtonElement>).current;\n\n if (menuItemNode) {\n menubarItems.add(menuItemNode);\n }\n\n return () => {\n menubarItems.delete(menuItemNode);\n };\n }, [menubarItems]);\n\n const keyDownOnButton = (e: KeyboardEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n return;\n }\n const currentNode = e.target as HTMLUListElement;\n\n switch (e.code) {\n case 'Enter':\n case 'Space':\n e.stopPropagation();\n currentNode.click();\n first();\n break;\n case 'ArrowRight':\n e.stopPropagation();\n first();\n break;\n case 'ArrowLeft':\n last();\n break;\n default:\n break;\n }\n };\n\n const buttonEventHandler = {\n onClick: (event: MouseEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n return;\n }\n\n buttonProps.onClick?.(event);\n event.stopPropagation();\n if (isExpanded) {\n close();\n } else {\n open();\n }\n },\n onKeyDown: (event: KeyboardEvent<HTMLButtonElement>) => {\n buttonProps.onKeyDown?.(event);\n keyDownOnButton(event);\n },\n };\n\n const keyDownOnMenuItemList = (e: KeyboardEvent<HTMLUListElement>) => {\n const currentNode = e.target as HTMLUListElement;\n\n switch (e.code) {\n case 'ArrowUp':\n e.stopPropagation();\n e.preventDefault();\n previous();\n break;\n case 'ArrowDown':\n e.stopPropagation();\n e.preventDefault();\n next();\n break;\n case 'ArrowLeft':\n e.preventDefault();\n e.stopPropagation();\n close(true);\n break;\n case 'ArrowRight':\n e.preventDefault();\n close(!sideNavigationMenuBarContext);\n break;\n case 'Home':\n e.stopPropagation();\n e.preventDefault();\n first();\n break;\n case 'End':\n e.stopPropagation();\n e.preventDefault();\n last();\n break;\n case 'Enter':\n case 'Space':\n e.preventDefault();\n currentNode.click();\n break;\n case 'Escape':\n e.stopPropagation();\n e.preventDefault();\n close(true);\n break;\n default:\n e.stopPropagation();\n match(e);\n break;\n }\n };\n\n const menuItemListEventHandler = {\n onKeyDown: (event: KeyboardEvent<HTMLUListElement>) => {\n menuProps.onKeyDown?.(event);\n keyDownOnMenuItemList(event);\n },\n onClick: (event: MouseEvent<HTMLUListElement>) => {\n if (isDisabled) {\n return;\n }\n menuProps.onClick?.(event);\n },\n };\n\n const sideNavigationVariant = sideNavigationMenuBarContext?.sideNavigationMenuBarVariant;\n\n return (\n <ThemeProvider value={{ theme }}>\n <StyledSideNavigationMenu\n {...forwardedProps}\n $isDisabled={isDisabled}\n $isExpanded={isExpanded}\n $numberOfChildren={renderedMenuItems.length}\n $theme={theme}\n $variant={sideNavigationVariant}\n className={classNames(SideNavigationMenu.className, className)}\n id={id}\n ref={ref as MutableRefObject<HTMLDivElement>}\n tabIndex={undefined}\n >\n <SideNavigationMenuContext.Provider value={value}>\n <Flexbox flexDirection=\"row\" gap=\"0px\">\n <div className={`${SideNavigationMenu.className}__current-indicator-container`}>\n {currentPosition.current !== -1 ? (\n <StyledSideNavigationMenuItemIndicator\n $theme={theme}\n style={{\n position: 'relative',\n top: isExpanded ? `${32 + currentPosition.current * 32}px` : 0,\n transition: 'top 300ms ease-out',\n }}\n />\n ) : null}\n </div>\n <div className={`${SideNavigationMenu.className}__menu-container`}>\n <button\n {...buttonProps}\n aria-disabled={isDisabled}\n aria-expanded={isExpanded ? 'true' : 'false'}\n aria-haspopup=\"true\"\n ref={buttonRef as MutableRefObject<HTMLButtonElement>}\n role=\"menuitem\"\n tabIndex={tabIndex !== undefined ? tabIndex : isFirstChild ? 0 : -1}\n type=\"button\"\n {...buttonEventHandler}\n >\n <Icon\n color={`var(--redsift-side-navigation-color-menu-item-text-${isDisabled ? 'disabled' : 'resting'})`}\n {...iconProps}\n icon={icon!}\n ref={iconRef as MutableRefObject<HTMLElement>}\n className={classNames(iconProps?.className, 'first')}\n size={IconSize.medium}\n />\n <span className=\"content\">{ariaLabel}</span>\n {hasBadge && (!isExpanded || keepBadgeVisible) ? <Badge color=\"error\" {...badgeProps} /> : null}\n <Icon\n icon={mdiChevronDown}\n className={`${SideNavigationMenu.className}__expand-icon`}\n size={IconSize.medium}\n />\n </button>\n <ul\n {...menuProps}\n aria-label={ariaLabel}\n aria-orientation=\"vertical\"\n ref={menuRef as MutableRefObject<HTMLUListElement>}\n role=\"menu\"\n {...menuItemListEventHandler}\n >\n {renderedMenuItems}\n </ul>\n </div>\n </Flexbox>\n </SideNavigationMenuContext.Provider>\n </StyledSideNavigationMenu>\n </ThemeProvider>\n );\n});\nSideNavigationMenu.className = CLASSNAME;\nSideNavigationMenu.displayName = COMPONENT_NAME;\n"],"names":["SideNavigationMenuReducerActionType","StyledSideNavigationMenu","styled","div","_ref","$isDisabled","$variant","$theme","css","SideNavigationMenuBarVariant","shrinked","_ref2","_ref3","$isExpanded","_ref4","standard","_ref5","_ref6","$numberOfChildren","SideNavigationMenuReducer","state","action","type","Expand","_objectSpread","isExpanded","Collapse","currentIndex","previousIndex","Move","index","COMPONENT_NAME","CLASSNAME","SideNavigationMenu","forwardRef","props","ref","ariaLabel","buttonProps","buttonRef","useRef","children","className","badgeProps","hasBadge","icon","iconProps","iconRef","id","propsId","isDisabled","propsIsExpanded","keepBadgeVisible","menuProps","menuRef","tabIndex","theme","propsTheme","forwardedProps","_objectWithoutProperties","_excluded","_id","useId","warnIfNoAccessibleLabelFound","undefined","appContainerState","useContext","AppContainerContext","sideNavigationMenuBarContext","SideNavigationMenuBarContext","useTheme","isFirstChild","setIsFirstChild","useState","currentPosition","menuItems","menubarItems","canHaveMultipleMenuOpenAtOnce","useEffect","current","childArray","filterComponents","SideNavigationMenuItem","renderedMenuItems","map","child","_child$key","_child$key2","isCurrent","React","createElement","key","role","cloneElement","isSecondLevel","Set","dispatch","useReducer","Boolean","first","useCallback","last","size","move","open","_sideNavigationMenuBa","setCurrentOpenMenuId","call","expandSidePanel","close","focusButton","focus","currentOpenMenuId","previous","next","match","e","items","Array","from","reorderedItems","slice","matches","filter","menuItem","textContent","firstLetter","toLowerCase","charAt","length","currentNode","nextMatch","includes","findIndex","item","sidePanelVariant","AppSidePanelVariant","value","useMemo","menuItemNode","add","delete","keyDownOnButton","target","code","stopPropagation","click","buttonEventHandler","onClick","event","_buttonProps$onClick","onKeyDown","_buttonProps$onKeyDow","keyDownOnMenuItemList","preventDefault","menuItemListEventHandler","_menuProps$onKeyDown","_menuProps$onClick","sideNavigationVariant","sideNavigationMenuBarVariant","ThemeProvider","_extends","classNames","SideNavigationMenuContext","Provider","Flexbox","flexDirection","gap","StyledSideNavigationMenuItemIndicator","style","position","top","transition","Icon","color","IconSize","medium","Badge","mdiChevronDown","displayName"],"mappings":";;;;;;;;;;;;;;;;AAMA;AACA;AACA;;AAKA;AACA;AACA;;AAOYA,IAAAA,mCAAmC,0BAAnCA,mCAAmC,EAAA;EAAnCA,mCAAmC,CAAA,QAAA,CAAA,GAAA,QAAA,CAAA;EAAnCA,mCAAmC,CAAA,UAAA,CAAA,GAAA,UAAA,CAAA;EAAnCA,mCAAmC,CAAA,MAAA,CAAA,GAAA,MAAA,CAAA;AAAA,EAAA,OAAnCA,mCAAmC,CAAA;AAAA,CAAA,CAAA,EAAA,EAAA;;AAW/C;AACA;AACA;;AC/BA;AACA;AACA;AACO,MAAMC,wBAAwB,GAAGC,MAAM,CAACC,GAAmC,CAAA;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,EAAIC,IAAA,IAAA;EAAA,IAAC;IAAEC,WAAW;IAAEC,QAAQ;AAAEC,IAAAA,MAAAA;AAAO,GAAC,GAAAH,IAAA,CAAA;AAAA,EAAA,OAAKI,GAAI,CAAA;AAC/C;AACA,MAAQ,EAAA,CAACH,WAAW,GACVG,GAAI,CAAA;AACd;AACA,yCAAA,EAA2CD,MAAO,CAAA;AAClD;AACA,UAAA,CAAW,GACDC,GAAI,CAAA;AACd;AACA,yCAAA,EAA2CD,MAAO,CAAA;AAClD;AACA,UAAY,CAAA,CAAA;AACZ;AACA,4CAAA,EAA8CA,MAAO,CAAA;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAA0BD,EAAAA,QAAQ,KAAKG,4BAA4B,CAACC,QAAQ,GAAG,MAAM,GAAG,MAAO,CAAA;AAC/F;AACA;AACA,yBAA2BJ,EAAAA,QAAQ,KAAKG,4BAA4B,CAACC,QAAQ,GAAG,KAAK,GAAG,KAAM,CAAA;AAC9F;AACA;AACA;AACA;AACA;AACA,QAAU,EAAA,CAACL,WAAW,GACVG,GAAI,CAAA;AAChB,oDAAA,EAAsDD,MAAO,CAAA;AAC7D;AACA;AACA;AACA,2CAAA,EAA6CA,MAAO,CAAA;AACpD;AACA;AACA,YAAA,CAAa,GACD,EAAG,CAAA;AACf;AACA;AACA;AACA,QAAU,EAAA,CAACF,WAAW,GACVG,GAAI,CAAA;AAChB,oDAAA,EAAsDD,MAAO,CAAA;AAC7D,YAAA,CAAa,GACD,EAAG,CAAA;AACf;AACA;AACA;AACA;AACA,gBAAkBD,EAAAA,QAAQ,KAAKG,4BAA4B,CAACC,QAAQ,GAAG,QAAQ,GAAG,UAAW,CAAA;AAC7F;AACA;AACA;AACA;AACA;AACA,kBAAoBJ,EAAAA,QAAQ,KAAKG,4BAA4B,CAACC,QAAQ,GAAG,QAAQ,GAAG,UAAW,CAAA;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA,gBAAkBJ,EAAAA,QAAQ,KAAKG,4BAA4B,CAACC,QAAQ,GAAG,QAAQ,GAAG,UAAW,CAAA;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAiBJ,EAAAA,QAAQ,KAAKG,4BAA4B,CAACC,QAAQ,GAAG,GAAG,GAAG,GAAI,CAAA;AAChF;AACA;AACA;AACA,EAAG,CAAA,CAAA;AAAA,CAAC,CAAA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAA,EAAMC,KAAA,IAAA;EAAA,IAAC;IAAEN,WAAW;AAAEE,IAAAA,MAAAA;AAAO,GAAC,GAAAI,KAAA,CAAA;EAAA,OACxB,CAACN,WAAW,GACRG,GAAI,CAAA;AACd;AACA;AACA,yCAAA,EAA2CD,MAAO,CAAA;AAClD;AACA,UAAA,CAAW,GACDC,GAAI,CAAA;AACd;AACA;AACA,yCAAA,EAA2CD,MAAO,CAAA;AAClD;AACA,UAAW,CAAA,CAAA;AAAA,CAAC,CAAA;AACZ,IAAA,EAAMK,KAAA,IAAA;EAAA,IAAC;AAAEC,IAAAA,WAAAA;AAAY,GAAC,GAAAD,KAAA,CAAA;EAAA,OAChB,CAACC,WAAW,GACRL,GAAI,CAAA;AACd;AACA,UAAA,CAAW,GACDA,GAAI,CAAA;AACd;AACA,UAAW,CAAA,CAAA;AAAA,CAAC,CAAA;AACZ;AACA;AACA;AACA,aAAA,EAAeM,KAAA,IAAA;EAAA,IAAC;AAAER,IAAAA,QAAAA;AAAS,GAAC,GAAAQ,KAAA,CAAA;EAAA,OAAMR,QAAQ,KAAKG,4BAA4B,CAACM,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAA;AAAA,CAAE,CAAA;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAA,EAAMC,KAAA,IAAA;EAAA,IAAC;AAAEV,IAAAA,QAAAA;AAAS,GAAC,GAAAU,KAAA,CAAA;AAAA,EAAA,OAAKR,GAAI,CAAA;AAC5B,yBAA2BF,EAAAA,QAAQ,KAAKG,4BAA4B,CAACC,QAAQ,GAAG,KAAK,GAAG,KAAM,CAAA;AAC9F,IAAK,CAAA,CAAA;AAAA,CAAC,CAAA;AACN;AACA;AACA;AACA;AACA,IAAA,EAAMO,KAAA,IAAA;EAAA,IAAC;IAAEJ,WAAW;AAAEK,IAAAA,iBAAAA;AAAkB,GAAC,GAAAD,KAAA,CAAA;EAAA,OACnCJ,WAAW,GACPL,GAAI,CAAA;AACd,oBAAsBU,EAAAA,iBAAiB,GAAG,EAAG,CAAA;AAC7C,UAAA,CAAW,GACDV,GAAI,CAAA;AACd;AACA,UAAW,CAAA,CAAA;AAAA,CAAC,CAAA;AACZ;AACA,CAAC;;ACxKM,MAAMW,yBAAyB,GAAGA,CACvCC,KAAqC,EACrCC,MAAuC,KACJ;EACnC,QAAQA,MAAM,CAACC,IAAI;IACjB,KAAKtB,mCAAmC,CAACuB,MAAM;AAC7C,MAAA,OAAAC,cAAA,CAAAA,cAAA,CAAA,EAAA,EAAYJ,KAAK,CAAA,EAAA,EAAA,EAAA;AAAEK,QAAAA,UAAU,EAAE,IAAA;AAAI,OAAA,CAAA,CAAA;IACrC,KAAKzB,mCAAmC,CAAC0B,QAAQ;MAC/C,OAAO;AACLD,QAAAA,UAAU,EAAE,KAAK;AACjBE,QAAAA,YAAY,EAAE,IAAK;AACnBC,QAAAA,aAAa,EAAE,IAAA;OAChB,CAAA;IACH,KAAK5B,mCAAmC,CAAC6B,IAAI;AAC3C,MAAA,OAAAL,cAAA,CAAAA,cAAA,CAAA,EAAA,EACKJ,KAAK,CAAA,EAAA,EAAA,EAAA;AACRK,QAAAA,UAAU,EAAE,IAAI;QAChBE,YAAY,EAAEN,MAAM,CAACS,KAAM;QAC3BF,aAAa,EAAER,KAAK,CAACO,YAAAA;AAAY,OAAA,CAAA,CAAA;AAEvC,GAAA;AACF,CAAC;;;ACMD,MAAMI,cAAc,GAAG,oBAAoB,CAAA;AAC3C,MAAMC,SAAS,GAAG,8BAA8B,CAAA;;AAEhD;AACA;AACA;AACO,MAAMC,kBAAiE,gBAAGC,UAAU,CAAC,CAACC,KAAK,EAAEC,GAAG,KAAK;EAC1G,MAAM;AACJ,MAAA,YAAY,EAAEC,SAAS;MACvBC,WAAW,GAAG,EAAE;MAChBC,SAAS,GAAGC,MAAM,EAA4D;MAC9EC,QAAQ;MACRC,SAAS;MACTC,UAAU;MACVC,QAAQ;MACRC,IAAI;MACJC,SAAS;MACTC,OAAO,GAAGP,MAAM,EAAe;AAC/BQ,MAAAA,EAAE,EAAEC,OAAO;MACXC,UAAU;AACVzB,MAAAA,UAAU,EAAE0B,eAAe;MAC3BC,gBAAgB;MAChBC,SAAS,GAAG,EAAE;MACdC,OAAO,GAAGd,MAAM,EAAoB;MACpCe,QAAQ;AACRC,MAAAA,KAAK,EAAEC,UAAAA;AAET,KAAC,GAAGtB,KAAK;AADJuB,IAAAA,cAAc,GAAAC,wBAAA,CACfxB,KAAK,EAAAyB,SAAA,CAAA,CAAA;AACT,EAAA,MAAM,CAACC,GAAG,CAAC,GAAGC,KAAK,EAAE,CAAA;EACrB,MAAMd,EAAE,GAAGC,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAPA,KAAAA,CAAAA,GAAAA,OAAO,GAAIY,GAAG,CAAA;AAEzBE,EAAAA,4BAA4B,CAAC5B,KAAK,EAAE6B,SAAS,EAAE,oBAAoB,CAAC,CAAA;AAEpE,EAAA,MAAMC,iBAAiB,GAAGC,UAAU,CAACC,mBAAmB,CAAC,CAAA;AACzD,EAAA,MAAMC,4BAA4B,GAAGF,UAAU,CAACG,4BAA4B,CAAC,CAAA;AAC7E,EAAA,MAAMb,KAAK,GAAGc,QAAQ,CAACb,UAAU,CAAC,CAAA;EAClC,MAAM,CAACc,YAAY,EAAEC,eAAe,CAAC,GAAGC,QAAQ,CAAC,KAAK,CAAC,CAAA;AACvD,EAAA,MAAMC,eAAe,GAAGlC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;EAClC,MAAM;AAAEmC,IAAAA,SAAS,EAAEC,YAAY;AAAEC,IAAAA,6BAAAA;AAA8B,GAAC,GAAGT,4BAA4B,IAAI,EAAE,CAAA;AAErGU,EAAAA,SAAS,CAAC,MAAM;AACdJ,IAAAA,eAAe,CAACK,OAAO,GAAG,CAAC,CAAC,CAAA;AAC9B,GAAC,CAAC,CAAA;;AAEF;AACF;AACA;AACA;EACE,MAAMC,UAAU,GAAGC,gBAAgB,CAACC,sBAAsB,CAAC,CAACzC,QAAQ,CAAC,CAAA;EACrE,MAAM0C,iBAAiB,GAAGH,UAAU,CAACI,GAAG,CAAC,CAACC,KAAK,EAAEvD,KAAK,KAAK;IAAA,IAAAwD,UAAA,EAAAC,WAAA,CAAA;AACzD,IAAA,IAAIF,KAAK,CAAClD,KAAK,CAACqD,SAAS,EAAE;MACzBd,eAAe,CAACK,OAAO,GAAGjD,KAAK,CAAA;AACjC,KAAA;IACA,oBACE2D,cAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;MAAIC,GAAG,EAAA,CAAAL,UAAA,GAAED,KAAK,CAACM,GAAG,MAAA,IAAA,IAAAL,UAAA,KAAA,KAAA,CAAA,GAAAA,UAAA,GAAIxD,KAAM;AAAC8D,MAAAA,IAAI,EAAC,MAAA;AAAM,KAAA,eACrCH,cAAK,CAACI,YAAY,CAACR,KAAK,EAAE;MACzBnC,UAAU,EAAEmC,KAAK,CAAClD,KAAK,CAACe,UAAU,IAAIA,UAAU,IAAIc,SAAS;AAC7D8B,MAAAA,aAAa,EAAE,IAAI;MACnBH,GAAG,EAAA,CAAAJ,WAAA,GAAEF,KAAK,CAACM,GAAG,MAAAJ,IAAAA,IAAAA,WAAA,KAAAA,KAAAA,CAAAA,GAAAA,WAAA,GAAIzD,KAAAA;AACpB,KAAC,CACC,CAAC,CAAA;AAET,GAAC,CAAC,CAAA;EAEF,MAAM6C,SAAS,GAAGnC,MAAM,CAA6C,IAAIuD,GAAG,EAAE,CAAC,CAAChB,OAAO,CAAA;EACvF,MAAM,CAAC3D,KAAK,EAAE4E,QAAQ,CAAC,GAAGC,UAAU,CAAC9E,yBAAyB,EAAE;AAC9DQ,IAAAA,YAAY,EAAE,IAAK;AACnBF,IAAAA,UAAU,EAAEyE,OAAO,CAAC/C,eAAe,CAAC;AACpCvB,IAAAA,aAAa,EAAE,IAAA;AACjB,GAAC,CAAC,CAAA;EACF,MAAM;IAAEH,UAAU;IAAEE,YAAY;AAAEC,IAAAA,aAAAA;AAAc,GAAC,GAAGR,KAAK,CAAA;AAEzD0D,EAAAA,SAAS,CAAC,MAAM;IACd,IAAI3B,eAAe,KAAKa,SAAS,EAAE;AACjC,MAAA,IAAIb,eAAe,EAAE;AACnB6C,QAAAA,QAAQ,CAAC;UAAE1E,IAAI,EAAEtB,mCAAmC,CAACuB,MAAAA;AAAO,SAAC,CAAC,CAAA;AAChE,OAAC,MAAM,IAAI,CAAC4B,eAAe,IAAI,CAAC0B,6BAA6B,EAAE;AAC7DmB,QAAAA,QAAQ,CAAC;UAAE1E,IAAI,EAAEtB,mCAAmC,CAAC0B,QAAAA;AAAS,SAAC,CAAC,CAAA;AAClE,OAAA;AACF,KAAA;AACF,GAAC,EAAE,CAACyB,eAAe,EAAE0B,6BAA6B,CAAC,CAAC,CAAA;AAEpD,EAAA,MAAMsB,KAAK,GAAGC,WAAW,CAAC,MAAMJ,QAAQ,CAAC;IAAE1E,IAAI,EAAEtB,mCAAmC,CAAC6B,IAAI;AAAEC,IAAAA,KAAK,EAAE,CAAA;GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;AAE3G,EAAA,MAAMuE,IAAI,GAAGD,WAAW,CACtB,MACEJ,QAAQ,CAAC;IACP1E,IAAI,EAAEtB,mCAAmC,CAAC6B,IAAI;AAC9CC,IAAAA,KAAK,EAAE6C,SAAS,CAAC2B,IAAI,GAAG,CAAA;AAC1B,GAAC,CAAC,EACJ,CAAC3B,SAAS,CAAC2B,IAAI,CACjB,CAAC,CAAA;AAED,EAAA,MAAMC,IAAI,GAAGH,WAAW,CAAEtE,KAAa,IAAKkE,QAAQ,CAAC;IAAE1E,IAAI,EAAEtB,mCAAmC,CAAC6B,IAAI;AAAEC,IAAAA,KAAAA;GAAO,CAAC,EAAE,EAAE,CAAC,CAAA;AAEpH,EAAA,MAAM0E,IAAI,GAAGJ,WAAW,CAAC,MAAM;AAAA,IAAA,IAAAK,qBAAA,CAAA;AAC7BrC,IAAAA,4BAA4B,aAA5BA,4BAA4B,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAAqC,qBAAA,GAA5BrC,4BAA4B,CAAEsC,oBAAoB,MAAA,IAAA,IAAAD,qBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAlDA,qBAAA,CAAAE,IAAA,CAAAvC,4BAA4B,EAAyBpB,EAAE,CAAC,CAAA;AACxDgD,IAAAA,QAAQ,CAAC;MAAE1E,IAAI,EAAEtB,mCAAmC,CAACuB,MAAAA;AAAO,KAAC,CAAC,CAAA;AAC9D0C,IAAAA,iBAAiB,aAAjBA,iBAAiB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAjBA,iBAAiB,CAAE2C,eAAe,EAAE,CAAA;GACrC,EAAE,EAAE,CAAC,CAAA;AAEN,EAAA,MAAMC,KAAK,GAAGT,WAAW,CACtBU,WAAqB,IAAK;AACzB,IAAA,IAAIrF,UAAU,EAAE;AACd,MAAA,IAAIqF,WAAW,EAAE;AACfvE,QAAAA,SAAS,CAACwC,OAAO,CAACgC,KAAK,EAAE,CAAA;AAC3B,OAAA;AAEAf,MAAAA,QAAQ,CAAC;QAAE1E,IAAI,EAAEtB,mCAAmC,CAAC0B,QAAAA;AAAS,OAAC,CAAC,CAAA;AAClE,KAAA;AACF,GAAC,EACD,CAACD,UAAU,CACb,CAAC,CAAA;AAEDqD,EAAAA,SAAS,CAAC,MAAM;AACd,IAAA,IAAIV,4BAA4B,KAAA,IAAA,IAA5BA,4BAA4B,KAAA,KAAA,CAAA,IAA5BA,4BAA4B,CAAE4C,iBAAiB,IAAI5C,4BAA4B,CAAC4C,iBAAiB,KAAKhE,EAAE,EAAE;AAC5G6D,MAAAA,KAAK,EAAE,CAAA;AACT,KAAA;GACD,EAAE,CAACzC,4BAA4B,KAA5BA,IAAAA,IAAAA,4BAA4B,uBAA5BA,4BAA4B,CAAE4C,iBAAiB,CAAC,CAAC,CAAA;EAErD,MAAMC,QAAQ,GAAGA,MAAM;AACrB,IAAA,MAAMnF,KAAK,GAAGH,YAAY,KAAK,CAAC,GAAGgD,SAAS,CAAC2B,IAAI,GAAG,CAAC,GAAG3E,YAAY,GAAG,CAAC,CAAA;IACxE4E,IAAI,CAACzE,KAAK,CAAC,CAAA;GACZ,CAAA;EAED,MAAMoF,IAAI,GAAGA,MAAM;AACjB,IAAA,MAAMpF,KAAK,GAAGH,YAAY,KAAKgD,SAAS,CAAC2B,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG3E,YAAY,GAAG,CAAC,CAAA;IACxE4E,IAAI,CAACzE,KAAK,CAAC,CAAA;GACZ,CAAA;EAED,MAAMqF,KAAK,GAAIC,CAAwC,IAAK;AAC1D,IAAA,MAAMC,KAAK,GAAGC,KAAK,CAACC,IAAI,CAAC5C,SAAS,CAAC,CAAA;;AAEnC;IACA,MAAM6C,cAAc,GAAG,CAAC,GAAGH,KAAK,CAACI,KAAK,CAAC9F,YAAY,CAAC,EAAE,GAAG0F,KAAK,CAACI,KAAK,CAAC,CAAC,EAAE9F,YAAY,CAAC,CAAC,CAAA;;AAEtF;AACA,IAAA,MAAM+F,OAAO,GAAGF,cAAc,CAACG,MAAM,CAAEC,QAAQ,IAAK;MAClD,MAAM;AAAEC,QAAAA,WAAAA;AAAY,OAAC,GAAGD,QAAQ,CAAA;AAChC;AACA,MAAA,MAAME,WAAW,GAAGD,WAAW,KAAA,IAAA,IAAXA,WAAW,KAAXA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAW,CAAEE,WAAW,EAAE,CAACC,MAAM,CAAC,CAAC,CAAC,CAAA;AACxD,MAAA,OAAOZ,CAAC,CAACzB,GAAG,KAAKmC,WAAW,CAAA;AAC9B,KAAC,CAAC,CAAA;;AAEF;AACA,IAAA,IAAI,CAACJ,OAAO,CAACO,MAAM,EAAE;AACnB,MAAA,OAAA;AACF,KAAA;;AAEA;AACA;AACA,IAAA,MAAMC,WAAW,GAAGb,KAAK,CAAC1F,YAAY,CAAC,CAAA;AACvC,IAAA,MAAMwG,SAAS,GAAGT,OAAO,CAACU,QAAQ,CAACF,WAAW,CAAC,GAAGR,OAAO,CAAC,CAAC,CAAC,GAAGA,OAAO,CAAC,CAAC,CAAC,CAAA;AACzE,IAAA,MAAM5F,KAAK,GAAGuF,KAAK,CAACgB,SAAS,CAAEC,IAAI,IAAK;MACtC,OAAOA,IAAI,KAAKH,SAAS,CAAA;AAC3B,KAAC,CAAC,CAAA;IAEF5B,IAAI,CAACzE,KAAK,CAAC,CAAA;GACZ,CAAA;AAEDgD,EAAAA,SAAS,CAAC,MAAM;AACd,IAAA,IAAIb,iBAAiB,IAAI,CAAAA,iBAAiB,KAAA,IAAA,IAAjBA,iBAAiB,KAAjBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,iBAAiB,CAAEsE,gBAAgB,MAAKC,mBAAmB,CAAC9H,QAAQ,IAAIe,UAAU,EAAE;AAC3GoF,MAAAA,KAAK,EAAE,CAAA;AACT,KAAA;GACD,EAAE,CAAC5C,iBAAiB,KAAjBA,IAAAA,IAAAA,iBAAiB,uBAAjBA,iBAAiB,CAAEsE,gBAAgB,CAAC,CAAC,CAAA;AAEzC,EAAA,MAAME,KAAK,GAAGC,OAAO,CAAiC,OAAO;AAAE/D,IAAAA,SAAAA;AAAU,GAAC,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC,CAAA;AAEzFG,EAAAA,SAAS,CAAC,MAAM;AACd,IAAA,MAAMuC,KAAK,GAAGC,KAAK,CAACC,IAAI,CAAC5C,SAAS,CAAC,CAAA;IAEnC,IAAIhD,YAAY,KAAKC,aAAa,EAAE;AAClC,MAAA,MAAMsG,WAAW,GAAGb,KAAK,CAAC1F,YAAY,CAAgB,CAAA;AACtDuG,MAAAA,WAAW,aAAXA,WAAW,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAXA,WAAW,CAAEnB,KAAK,EAAE,CAAA;AACtB,KAAA;GACD,EAAE,CAACpC,SAAS,EAAEhD,YAAY,EAAEC,aAAa,CAAC,CAAC,CAAA;AAE5CkD,EAAAA,SAAS,CAAC,MAAM;IACd,IAAI,CAACV,4BAA4B,EAAE;MACjCI,eAAe,CAAC,IAAI,CAAC,CAAA;AACrB,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,MAAMmE,YAAY,GAAIpG,SAAS,CAAyCwC,OAAO,CAAA;AAE/E,IAAA,IAAI4D,YAAY,EAAE;AAChB/D,MAAAA,YAAY,CAACgE,GAAG,CAACD,YAAY,CAAC,CAAA;AAChC,KAAA;AAEA,IAAA,OAAO,MAAM;AACX/D,MAAAA,YAAY,CAACiE,MAAM,CAACF,YAAY,CAAC,CAAA;KAClC,CAAA;AACH,GAAC,EAAE,CAAC/D,YAAY,CAAC,CAAC,CAAA;EAElB,MAAMkE,eAAe,GAAI1B,CAAmC,IAAK;AAC/D,IAAA,IAAIlE,UAAU,EAAE;AACd,MAAA,OAAA;AACF,KAAA;AACA,IAAA,MAAMgF,WAAW,GAAGd,CAAC,CAAC2B,MAA0B,CAAA;IAEhD,QAAQ3B,CAAC,CAAC4B,IAAI;AACZ,MAAA,KAAK,OAAO,CAAA;AACZ,MAAA,KAAK,OAAO;QACV5B,CAAC,CAAC6B,eAAe,EAAE,CAAA;QACnBf,WAAW,CAACgB,KAAK,EAAE,CAAA;AACnB/C,QAAAA,KAAK,EAAE,CAAA;AACP,QAAA,MAAA;AACF,MAAA,KAAK,YAAY;QACfiB,CAAC,CAAC6B,eAAe,EAAE,CAAA;AACnB9C,QAAAA,KAAK,EAAE,CAAA;AACP,QAAA,MAAA;AACF,MAAA,KAAK,WAAW;AACdE,QAAAA,IAAI,EAAE,CAAA;AACN,QAAA,MAAA;AAGJ,KAAA;GACD,CAAA;AAED,EAAA,MAAM8C,kBAAkB,GAAG;IACzBC,OAAO,EAAGC,KAAoC,IAAK;AAAA,MAAA,IAAAC,oBAAA,CAAA;AACjD,MAAA,IAAIpG,UAAU,EAAE;AACd,QAAA,OAAA;AACF,OAAA;AAEA,MAAA,CAAAoG,oBAAA,GAAAhH,WAAW,CAAC8G,OAAO,MAAAE,IAAAA,IAAAA,oBAAA,KAAnBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAA,CAAA3C,IAAA,CAAArE,WAAW,EAAW+G,KAAK,CAAC,CAAA;MAC5BA,KAAK,CAACJ,eAAe,EAAE,CAAA;AACvB,MAAA,IAAIxH,UAAU,EAAE;AACdoF,QAAAA,KAAK,EAAE,CAAA;AACT,OAAC,MAAM;AACLL,QAAAA,IAAI,EAAE,CAAA;AACR,OAAA;KACD;IACD+C,SAAS,EAAGF,KAAuC,IAAK;AAAA,MAAA,IAAAG,qBAAA,CAAA;AACtD,MAAA,CAAAA,qBAAA,GAAAlH,WAAW,CAACiH,SAAS,MAAAC,IAAAA,IAAAA,qBAAA,KAArBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAA,CAAA7C,IAAA,CAAArE,WAAW,EAAa+G,KAAK,CAAC,CAAA;MAC9BP,eAAe,CAACO,KAAK,CAAC,CAAA;AACxB,KAAA;GACD,CAAA;EAED,MAAMI,qBAAqB,GAAIrC,CAAkC,IAAK;AACpE,IAAA,MAAMc,WAAW,GAAGd,CAAC,CAAC2B,MAA0B,CAAA;IAEhD,QAAQ3B,CAAC,CAAC4B,IAAI;AACZ,MAAA,KAAK,SAAS;QACZ5B,CAAC,CAAC6B,eAAe,EAAE,CAAA;QACnB7B,CAAC,CAACsC,cAAc,EAAE,CAAA;AAClBzC,QAAAA,QAAQ,EAAE,CAAA;AACV,QAAA,MAAA;AACF,MAAA,KAAK,WAAW;QACdG,CAAC,CAAC6B,eAAe,EAAE,CAAA;QACnB7B,CAAC,CAACsC,cAAc,EAAE,CAAA;AAClBxC,QAAAA,IAAI,EAAE,CAAA;AACN,QAAA,MAAA;AACF,MAAA,KAAK,WAAW;QACdE,CAAC,CAACsC,cAAc,EAAE,CAAA;QAClBtC,CAAC,CAAC6B,eAAe,EAAE,CAAA;QACnBpC,KAAK,CAAC,IAAI,CAAC,CAAA;AACX,QAAA,MAAA;AACF,MAAA,KAAK,YAAY;QACfO,CAAC,CAACsC,cAAc,EAAE,CAAA;QAClB7C,KAAK,CAAC,CAACzC,4BAA4B,CAAC,CAAA;AACpC,QAAA,MAAA;AACF,MAAA,KAAK,MAAM;QACTgD,CAAC,CAAC6B,eAAe,EAAE,CAAA;QACnB7B,CAAC,CAACsC,cAAc,EAAE,CAAA;AAClBvD,QAAAA,KAAK,EAAE,CAAA;AACP,QAAA,MAAA;AACF,MAAA,KAAK,KAAK;QACRiB,CAAC,CAAC6B,eAAe,EAAE,CAAA;QACnB7B,CAAC,CAACsC,cAAc,EAAE,CAAA;AAClBrD,QAAAA,IAAI,EAAE,CAAA;AACN,QAAA,MAAA;AACF,MAAA,KAAK,OAAO,CAAA;AACZ,MAAA,KAAK,OAAO;QACVe,CAAC,CAACsC,cAAc,EAAE,CAAA;QAClBxB,WAAW,CAACgB,KAAK,EAAE,CAAA;AACnB,QAAA,MAAA;AACF,MAAA,KAAK,QAAQ;QACX9B,CAAC,CAAC6B,eAAe,EAAE,CAAA;QACnB7B,CAAC,CAACsC,cAAc,EAAE,CAAA;QAClB7C,KAAK,CAAC,IAAI,CAAC,CAAA;AACX,QAAA,MAAA;AACF,MAAA;QACEO,CAAC,CAAC6B,eAAe,EAAE,CAAA;QACnB9B,KAAK,CAACC,CAAC,CAAC,CAAA;AACR,QAAA,MAAA;AACJ,KAAA;GACD,CAAA;AAED,EAAA,MAAMuC,wBAAwB,GAAG;IAC/BJ,SAAS,EAAGF,KAAsC,IAAK;AAAA,MAAA,IAAAO,oBAAA,CAAA;AACrD,MAAA,CAAAA,oBAAA,GAAAvG,SAAS,CAACkG,SAAS,MAAAK,IAAAA,IAAAA,oBAAA,KAAnBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAA,CAAAjD,IAAA,CAAAtD,SAAS,EAAagG,KAAK,CAAC,CAAA;MAC5BI,qBAAqB,CAACJ,KAAK,CAAC,CAAA;KAC7B;IACDD,OAAO,EAAGC,KAAmC,IAAK;AAAA,MAAA,IAAAQ,kBAAA,CAAA;AAChD,MAAA,IAAI3G,UAAU,EAAE;AACd,QAAA,OAAA;AACF,OAAA;AACA,MAAA,CAAA2G,kBAAA,GAAAxG,SAAS,CAAC+F,OAAO,MAAAS,IAAAA,IAAAA,kBAAA,KAAjBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAA,CAAAlD,IAAA,CAAAtD,SAAS,EAAWgG,KAAK,CAAC,CAAA;AAC5B,KAAA;GACD,CAAA;EAED,MAAMS,qBAAqB,GAAG1F,4BAA4B,KAAA,IAAA,IAA5BA,4BAA4B,KAA5BA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,4BAA4B,CAAE2F,4BAA4B,CAAA;AAExF,EAAA,oBACEtE,cAAA,CAAAC,aAAA,CAACsE,aAAa,EAAA;AAACvB,IAAAA,KAAK,EAAE;AAAEjF,MAAAA,KAAAA;AAAM,KAAA;GAC5BiC,eAAAA,cAAA,CAAAC,aAAA,CAACzF,wBAAwB,EAAAgK,QAAA,KACnBvG,cAAc,EAAA;AAClBrD,IAAAA,WAAW,EAAE6C,UAAW;AACxBrC,IAAAA,WAAW,EAAEY,UAAW;IACxBP,iBAAiB,EAAEiE,iBAAiB,CAAC8C,MAAO;AAC5C1H,IAAAA,MAAM,EAAEiD,KAAM;AACdlD,IAAAA,QAAQ,EAAEwJ,qBAAsB;IAChCpH,SAAS,EAAEwH,UAAU,CAACjI,kBAAkB,CAACS,SAAS,EAAEA,SAAS,CAAE;AAC/DM,IAAAA,EAAE,EAAEA,EAAG;AACPZ,IAAAA,GAAG,EAAEA,GAAwC;AAC7CmB,IAAAA,QAAQ,EAAES,SAAAA;AAAU,GAAA,CAAA,eAEpByB,cAAA,CAAAC,aAAA,CAACyE,yBAAyB,CAACC,QAAQ,EAAA;AAAC3B,IAAAA,KAAK,EAAEA,KAAAA;AAAM,GAAA,eAC/ChD,cAAA,CAAAC,aAAA,CAAC2E,OAAO,EAAA;AAACC,IAAAA,aAAa,EAAC,KAAK;AAACC,IAAAA,GAAG,EAAC,KAAA;GAC/B9E,eAAAA,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKhD,IAAAA,SAAS,EAAG,CAAA,EAAET,kBAAkB,CAACS,SAAU,CAAA,6BAAA,CAAA;GAC7CgC,EAAAA,eAAe,CAACK,OAAO,KAAK,CAAC,CAAC,gBAC7BU,cAAA,CAAAC,aAAA,CAAC8E,qCAAqC,EAAA;AACpCjK,IAAAA,MAAM,EAAEiD,KAAM;AACdiH,IAAAA,KAAK,EAAE;AACLC,MAAAA,QAAQ,EAAE,UAAU;AACpBC,MAAAA,GAAG,EAAElJ,UAAU,GAAI,CAAA,EAAE,EAAE,GAAGiD,eAAe,CAACK,OAAO,GAAG,EAAG,CAAA,EAAA,CAAG,GAAG,CAAC;AAC9D6F,MAAAA,UAAU,EAAE,oBAAA;AACd,KAAA;AAAE,GACH,CAAC,GACA,IACD,CAAC,eACNnF,cAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKhD,IAAAA,SAAS,EAAG,CAAA,EAAET,kBAAkB,CAACS,SAAU,CAAA,gBAAA,CAAA;AAAkB,GAAA,eAChE+C,cAAA,CAAAC,aAAA,CAAAuE,QAAAA,EAAAA,QAAA,KACM3H,WAAW,EAAA;AACf,IAAA,eAAA,EAAeY,UAAW;AAC1B,IAAA,eAAA,EAAezB,UAAU,GAAG,MAAM,GAAG,OAAQ;AAC7C,IAAA,eAAA,EAAc,MAAM;AACpBW,IAAAA,GAAG,EAAEG,SAAiD;AACtDqD,IAAAA,IAAI,EAAC,UAAU;AACfrC,IAAAA,QAAQ,EAAEA,QAAQ,KAAKS,SAAS,GAAGT,QAAQ,GAAGgB,YAAY,GAAG,CAAC,GAAG,CAAC,CAAE;AACpEjD,IAAAA,IAAI,EAAC,QAAA;GACD6H,EAAAA,kBAAkB,gBAEtB1D,cAAA,CAAAC,aAAA,CAACmF,IAAI,EAAAZ,QAAA,CAAA;AACHa,IAAAA,KAAK,EAAG,CAAqD5H,mDAAAA,EAAAA,UAAU,GAAG,UAAU,GAAG,SAAU,CAAA,CAAA,CAAA;AAAG,GAAA,EAChGJ,SAAS,EAAA;AACbD,IAAAA,IAAI,EAAEA,IAAM;AACZT,IAAAA,GAAG,EAAEW,OAAyC;AAC9CL,IAAAA,SAAS,EAAEwH,UAAU,CAACpH,SAAS,KAATA,IAAAA,IAAAA,SAAS,KAATA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAS,CAAEJ,SAAS,EAAE,OAAO,CAAE;IACrD4D,IAAI,EAAEyE,QAAQ,CAACC,MAAAA;AAAO,GAAA,CACvB,CAAC,eACFvF,cAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMhD,IAAAA,SAAS,EAAC,SAAA;AAAS,GAAA,EAAEL,SAAgB,CAAC,EAC3CO,QAAQ,KAAK,CAACnB,UAAU,IAAI2B,gBAAgB,CAAC,gBAAGqC,cAAA,CAAAC,aAAA,CAACuF,KAAK,EAAAhB,QAAA,CAAA;AAACa,IAAAA,KAAK,EAAC,OAAA;GAAYnI,EAAAA,UAAU,CAAG,CAAC,GAAG,IAAI,eAC/F8C,cAAA,CAAAC,aAAA,CAACmF,IAAI,EAAA;AACHhI,IAAAA,IAAI,EAAEqI,cAAe;AACrBxI,IAAAA,SAAS,EAAG,CAAA,EAAET,kBAAkB,CAACS,SAAU,CAAe,aAAA,CAAA;IAC1D4D,IAAI,EAAEyE,QAAQ,CAACC,MAAAA;GAChB,CACK,CAAC,eACTvF,cAAA,CAAAC,aAAA,CAAA,IAAA,EAAAuE,QAAA,CAAA,EAAA,EACM5G,SAAS,EAAA;AACb,IAAA,YAAA,EAAYhB,SAAU;AACtB,IAAA,kBAAA,EAAiB,UAAU;AAC3BD,IAAAA,GAAG,EAAEkB,OAA8C;AACnDsC,IAAAA,IAAI,EAAC,MAAA;GACD+D,EAAAA,wBAAwB,GAE3BxE,iBACC,CACD,CACE,CACyB,CACZ,CACb,CAAC,CAAA;AAEpB,CAAC,EAAC;AACFlD,kBAAkB,CAACS,SAAS,GAAGV,SAAS,CAAA;AACxCC,kBAAkB,CAACkJ,WAAW,GAAGpJ,cAAc;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SideNavigationMenuItem.js","sources":["../../src/components/side-navigation-menu-bar/types.ts","../../src/components/side-navigation-menu-bar/context.ts","../../src/components/side-navigation-menu/context.ts","../../src/components/side-navigation-menu-item/styles.ts","../../src/components/side-navigation-menu-item/SideNavigationMenuItem.tsx"],"sourcesContent":["import { ComponentProps, Dispatch, MutableRefObject, SetStateAction } from 'react';\nimport { SideNavigationMenuProps } from '../side-navigation-menu';\nimport { SideNavigationMenuItemProps } from '../side-navigation-menu-item';\nimport { Theme, ValueOf } from '@redsift/design-system/types';\n\n/**\n * Component variant.\n */\nexport const SideNavigationMenuBarVariant = {\n shrinked: 'shrinked',\n standard: 'standard',\n} as const;\nexport type SideNavigationMenuBarVariant = ValueOf<typeof SideNavigationMenuBarVariant>;\n\n/**\n * Context props.\n */\nexport type SideNavigationMenuBarContextProps = {\n /** List of menu items. */\n menuItems: Set<HTMLAnchorElement | HTMLButtonElement>;\n /** Side navigation variant. */\n sideNavigationMenuBarVariant: SideNavigationMenuBarVariant;\n /** Change side navigation variant. */\n setSideNavigationMenuBarVariant: Dispatch<SetStateAction<SideNavigationMenuBarVariant>>;\n /** Current open menu, used to close other menu when canHaveMultipleMenuOpenAtOnce is false. */\n currentOpenMenuId?: string;\n /** Change current open menu id. */\n setCurrentOpenMenuId?: Dispatch<SetStateAction<string | undefined>>;\n};\n\n/**\n * Component props.\n */\nexport interface SideNavigationMenuBarProps extends ComponentProps<'nav'> {\n /** Whether or not opening a menu closes the others. */\n canHaveMultipleMenuOpenAtOnce?: boolean;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Custom props to pass to the menubar. */\n menubarProps?: ComponentProps<'ul'>;\n /** Custom ref to pass to the menubar. */\n menubarRef?: MutableRefObject<HTMLUListElement>;\n /** Theme. */\n theme?: Theme;\n /** Variant. */\n variant?: SideNavigationMenuBarVariant;\n}\n\nexport type StyledSideNavigationMenuBarProps = Omit<SideNavigationMenuBarProps, 'isDisabled'> & {\n $isDisabled: SideNavigationMenuBarProps['isDisabled'];\n $marginTop?: number;\n $variant: SideNavigationMenuBarProps['variant'];\n $theme: SideNavigationMenuBarProps['theme'];\n};\n\n/**\n * Hook props.\n */\nexport interface MenuItem extends Omit<SideNavigationMenuItemProps, 'children'> {\n title: string;\n}\nexport interface Menu extends Omit<SideNavigationMenuProps, 'children'> {\n title: string;\n children: MenuItem[];\n}\nexport type MenuBarItems = (Menu | MenuItem)[];\n","import React from 'react';\nimport { SideNavigationMenuBarContextProps } from './types';\n\nexport const SideNavigationMenuBarContext =\n React.createContext<SideNavigationMenuBarContextProps>(null!);\n","import React from 'react';\nimport { SideNavigationMenuContextProps } from './types';\n\nexport const SideNavigationMenuContext =\n React.createContext<SideNavigationMenuContextProps>(null!);\n","import styled, { css } from 'styled-components';\nimport { StyledSideNavigationMenuItemProps } from './types';\nimport { SideNavigationMenuBarVariant } from '../side-navigation-menu-bar';\nimport { Theme } from '../../types';\n\nexport const StyledSideNavigationMenuItemIndicatorContainer = styled.div`\n min-width: 4px;\n`;\n\nexport const StyledSideNavigationMenuItemIndicator = styled.div<{ $theme: Theme }>`\n position: relative;\n width: 4px;\n height: 40px;\n border-radius: 0px 4px 4px 0px;\n background-color: ${({ $theme }) => `var(--redsift-color-${$theme}-components-side-navigation-current-marker)`};\n`;\n\nexport const StyledSideNavigationMenuItemBorder = styled.div`\n position: relative;\n width: 100%;\n height: 1px;\n background-color: var(--redsift-color-neutral-light-grey);\n margin-left: 62px;\n margin-top: -1px;\n`;\n\n/**\n * Component style.\n */\nexport const StyledSideNavigationMenuItem = styled.a<StyledSideNavigationMenuItemProps>`\n /**\n * Common style\n */\n ${({ $isDisabled, $theme, $color }) =>\n !$isDisabled\n ? css`\n & {\n color: ${$color\n ? $color\n : `var(--redsift-color-${$theme}-components-side-navigation-menu-item-text-resting)`};\n }\n `\n : css`\n & {\n color: var(--redsift-color-${$theme}-components-side-navigation-menu-item-text-disabled);\n }\n `}\n align-items: center;\n border-radius: 0 4px 4px 0;\n display: flex;\n font-family: var(--redsift-typography-body-font-family);\n font-size: 14px;\n font-weight: var(--redsift-typography-body-font-weight);\n gap: 8px;\n line-height: var(--redsift-typography-body-line-height);\n overflow: hidden;\n text-decoration: none;\n text-transform: uppercase;\n width: 100%;\n\n &:hover,\n &:focus-visible {\n outline: none;\n\n ${({ $isDisabled, $theme, $color }) =>\n !$isDisabled\n ? css`\n background-color: var(--redsift-color-${$theme}-components-side-navigation-menu-item-background-hover);\n & {\n color: ${$color\n ? $color\n : `var(--redsift-color-${$theme}-components-side-navigation-menu-item-text-hover)`};\n }\n `\n : ''}\n }\n\n :active {\n ${({ $isDisabled, $theme }) =>\n !$isDisabled\n ? css`\n background-color: var(--redsift-color-${$theme}-components-side-navigation-menu-item-background-active);\n `\n : ''}\n }\n\n ${({ $variant }) => css`\n @media (prefers-reduced-motion: no-preference) {\n :focus-visible {\n > span${$variant === SideNavigationMenuBarVariant.shrinked ? '.first' : '.content'} {\n outline: 2px solid var(--redsift-color-primary-n);\n transition: outline-offset 75ms ease-out;\n }\n\n :not(:active):focus-visible {\n > span${$variant === SideNavigationMenuBarVariant.shrinked ? '.first' : '.content'} {\n transition-duration: 0.25s;\n }\n }\n }\n\n :not(:active):focus-visible {\n > span${$variant === SideNavigationMenuBarVariant.shrinked ? '.first' : '.content'} {\n outline-offset: 0.25rem;\n }\n }\n }\n\n .content {\n transition: opacity 300ms ease-out;\n opacity: ${$variant === SideNavigationMenuBarVariant.shrinked ? '0' : '1'};\n overflow: hidden;\n white-space: nowrap;\n }\n `}\n\n ${({ $hasIcon, $isSecondLevel, $variant, $theme }) =>\n !$isSecondLevel\n ? css`\n /**\n * First-level items\n */\n\n background-color: var(--redsift-color-${$theme}-components-side-navigation-background);\n height: 40px;\n margin-bottom: 4px;\n margin-left: -4px;\n transition: padding 300ms ease-out;\n padding: 0 16px 0 ${$variant === SideNavigationMenuBarVariant.shrinked ? '16px' : '16px'};\n\n .redsift-icon.first {\n box-sizing: unset;\n }\n `\n : `\n /**\n * Second-level items\n */\n\n background-color: var(--redsift-color-${$theme}-components-side-navigation-menu-item-background-secondary);\n font-size: var(--redsift-typography-caption-font-size);\n padding-bottom: 4px;\n padding-left: ${$hasIcon ? '18px' : '54px'};\n padding-right: 0;\n padding-top: 4px;\n border-radius: 0;\n\n .redsift-icon.first {\n box-sizing: unset;\n margin-right: 8px;\n }\n `}\n`;\n","import React, { forwardRef, MutableRefObject, useContext, useEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { Comp } from '../../types';\nimport { Icon, IconSize } from '../icon';\nimport { warnIfNoAccessibleLabelFound } from '../../utils/warnIfNoAccessibleLabelFound';\nimport { SideNavigationMenuBarContext } from '../side-navigation-menu-bar/context';\nimport { SideNavigationMenuContext } from '../side-navigation-menu/context';\nimport {\n StyledSideNavigationMenuItem,\n StyledSideNavigationMenuItemBorder,\n StyledSideNavigationMenuItemIndicator,\n StyledSideNavigationMenuItemIndicatorContainer,\n} from './styles';\nimport { SideNavigationMenuItemProps } from './types';\nimport { Badge, BadgeVariant } from '../badge';\nimport { Flexbox } from '../flexbox';\nimport { useTheme } from '../theme';\n\nconst COMPONENT_NAME = 'SideNavigationMenuItem';\nconst CLASSNAME = 'redsift-side-navigation-menu-item';\n\n/**\n * The SideNavigationMenuItem component.\n */\nexport const SideNavigationMenuItem: Comp<SideNavigationMenuItemProps, HTMLAnchorElement> = forwardRef((props, ref) => {\n const menuItemRef = ref || useRef<HTMLAnchorElement>();\n\n const {\n as,\n badge,\n badgeProps,\n children,\n className,\n color,\n hasBorder,\n href,\n icon,\n iconProps,\n iconRef = useRef<HTMLElement>(),\n isCurrent,\n isDisabled,\n isSecondLevel,\n onClick,\n onKeyDown,\n tabIndex,\n theme: propsTheme,\n ...forwardedProps\n } = props;\n\n warnIfNoAccessibleLabelFound(props, [children], 'SideNavigationMenuItem');\n\n const sideNavigationMenuBarContext = useContext(SideNavigationMenuBarContext);\n const sideNavigationMenuContext = useContext(SideNavigationMenuContext);\n const theme = useTheme(propsTheme);\n\n const [isFirstChild, setIsFirstChild] = useState(false);\n const { menuItems } = sideNavigationMenuContext || sideNavigationMenuBarContext || {};\n\n useEffect(() => {\n if (!(sideNavigationMenuContext || sideNavigationMenuBarContext)) {\n setIsFirstChild(true);\n return;\n }\n\n const menuItemNode = (menuItemRef as MutableRefObject<HTMLAnchorElement>).current;\n\n if (menuItemNode) {\n if (!menuItems.size) {\n setIsFirstChild(true);\n }\n\n menuItems.add(menuItemNode);\n }\n\n return () => {\n menuItems.delete(menuItemNode);\n };\n }, [menuItems]);\n\n const sideNavigationVariant = sideNavigationMenuBarContext?.sideNavigationMenuBarVariant;\n\n return (\n <Flexbox flexDirection=\"column\" gap=\"0px\">\n <Flexbox flexDirection=\"row\" gap=\"0px\">\n {!isSecondLevel ? (\n <StyledSideNavigationMenuItemIndicatorContainer>\n {isCurrent ? <StyledSideNavigationMenuItemIndicator $theme={theme} /> : null}\n </StyledSideNavigationMenuItemIndicatorContainer>\n ) : null}\n <StyledSideNavigationMenuItem\n as={as as any}\n role=\"menuitem\"\n {...forwardedProps}\n $color={color}\n $hasIcon={icon !== undefined}\n $isCurrent={isCurrent}\n $isDisabled={isDisabled}\n $isSecondLevel={isSecondLevel}\n $theme={theme}\n $variant={sideNavigationVariant}\n aria-current={isCurrent ? 'page' : undefined}\n aria-disabled={isDisabled}\n className={classNames(SideNavigationMenuItem.className, className)}\n href={!isDisabled ? href : undefined}\n onClick={isDisabled ? undefined : onClick}\n onKeyDown={isDisabled ? undefined : onKeyDown}\n ref={menuItemRef as MutableRefObject<HTMLAnchorElement>}\n tabIndex={tabIndex !== undefined ? tabIndex : !sideNavigationMenuContext && isFirstChild ? 0 : -1}\n >\n {!isSecondLevel || icon ? (\n <Icon\n color={`var(--redsift-side-navigation-color-menu-item-text-${\n isSecondLevel || isDisabled ? 'disabled' : 'resting'\n })`}\n {...iconProps}\n icon={icon!}\n ref={iconRef as MutableRefObject<HTMLElement>}\n className=\"first\"\n size={isSecondLevel ? IconSize.small : IconSize.medium}\n />\n ) : null}\n <span className=\"content\">{children}</span>\n {badge ? (\n <Badge variant={BadgeVariant.standard} color=\"error\" {...badgeProps}>\n {badge}\n </Badge>\n ) : null}\n </StyledSideNavigationMenuItem>\n </Flexbox>\n {isSecondLevel && hasBorder ? <StyledSideNavigationMenuItemBorder /> : null}\n </Flexbox>\n );\n});\nSideNavigationMenuItem.className = CLASSNAME;\nSideNavigationMenuItem.displayName = COMPONENT_NAME;\n"],"names":["SideNavigationMenuBarVariant","shrinked","standard","SideNavigationMenuBarContext","React","createContext","SideNavigationMenuContext","StyledSideNavigationMenuItemIndicatorContainer","styled","div","StyledSideNavigationMenuItemIndicator","_ref","$theme","StyledSideNavigationMenuItemBorder","StyledSideNavigationMenuItem","a","_ref2","$isDisabled","$color","css","_ref3","_ref4","_ref5","$variant","_ref6","$hasIcon","$isSecondLevel","COMPONENT_NAME","CLASSNAME","SideNavigationMenuItem","forwardRef","props","ref","menuItemRef","useRef","as","badge","badgeProps","children","className","color","hasBorder","href","icon","iconProps","iconRef","isCurrent","isDisabled","isSecondLevel","onClick","onKeyDown","tabIndex","theme","propsTheme","forwardedProps","_objectWithoutProperties","_excluded","warnIfNoAccessibleLabelFound","sideNavigationMenuBarContext","useContext","sideNavigationMenuContext","useTheme","isFirstChild","setIsFirstChild","useState","menuItems","useEffect","menuItemNode","current","size","add","delete","sideNavigationVariant","sideNavigationMenuBarVariant","createElement","Flexbox","flexDirection","gap","_extends","role","undefined","$isCurrent","classNames","Icon","IconSize","small","medium","Badge","variant","BadgeVariant","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SideNavigationMenuItem.js","sources":["../../src/components/side-navigation-menu-bar/types.ts","../../src/components/side-navigation-menu-bar/context.ts","../../src/components/side-navigation-menu/context.ts","../../src/components/side-navigation-menu-item/styles.ts","../../src/components/side-navigation-menu-item/SideNavigationMenuItem.tsx"],"sourcesContent":["import { ComponentProps, Dispatch, MutableRefObject, SetStateAction } from 'react';\nimport { SideNavigationMenuProps } from '../side-navigation-menu';\nimport { SideNavigationMenuItemProps } from '../side-navigation-menu-item';\nimport { Theme, ValueOf } from '@redsift/design-system/types';\n\n/**\n * Component variant.\n */\nexport const SideNavigationMenuBarVariant = {\n shrinked: 'shrinked',\n standard: 'standard',\n} as const;\nexport type SideNavigationMenuBarVariant = ValueOf<typeof SideNavigationMenuBarVariant>;\n\n/**\n * Context props.\n */\nexport type SideNavigationMenuBarContextProps = {\n /** List of menu items. */\n menuItems: Set<HTMLAnchorElement | HTMLButtonElement>;\n /** Side navigation variant. */\n sideNavigationMenuBarVariant: SideNavigationMenuBarVariant;\n /** Change side navigation variant. */\n setSideNavigationMenuBarVariant: Dispatch<SetStateAction<SideNavigationMenuBarVariant>>;\n /** Current open menu, used to close other menu when canHaveMultipleMenuOpenAtOnce is false. */\n currentOpenMenuId?: string;\n /** Change current open menu id. */\n setCurrentOpenMenuId?: Dispatch<SetStateAction<string | undefined>>;\n /** Whether or not opening a menu closes the others. */\n canHaveMultipleMenuOpenAtOnce?: boolean;\n};\n\n/**\n * Component props.\n */\nexport interface SideNavigationMenuBarProps extends ComponentProps<'nav'> {\n /** Whether or not opening a menu closes the others. */\n canHaveMultipleMenuOpenAtOnce?: boolean;\n /** Whether the component is disabled or not. */\n isDisabled?: boolean;\n /** Custom props to pass to the menubar. */\n menubarProps?: ComponentProps<'ul'>;\n /** Custom ref to pass to the menubar. */\n menubarRef?: MutableRefObject<HTMLUListElement>;\n /** Theme. */\n theme?: Theme;\n /** Variant. */\n variant?: SideNavigationMenuBarVariant;\n}\n\nexport type StyledSideNavigationMenuBarProps = Omit<SideNavigationMenuBarProps, 'isDisabled'> & {\n $isDisabled: SideNavigationMenuBarProps['isDisabled'];\n $marginTop?: number;\n $variant: SideNavigationMenuBarProps['variant'];\n $theme: SideNavigationMenuBarProps['theme'];\n};\n\n/**\n * Hook props.\n */\nexport interface MenuItem extends Omit<SideNavigationMenuItemProps, 'children'> {\n title: string;\n}\nexport interface Menu extends Omit<SideNavigationMenuProps, 'children'> {\n title: string;\n children: MenuItem[];\n}\nexport type MenuBarItems = (Menu | MenuItem)[];\n","import React from 'react';\nimport { SideNavigationMenuBarContextProps } from './types';\n\nexport const SideNavigationMenuBarContext =\n React.createContext<SideNavigationMenuBarContextProps>(null!);\n","import React from 'react';\nimport { SideNavigationMenuContextProps } from './types';\n\nexport const SideNavigationMenuContext =\n React.createContext<SideNavigationMenuContextProps>(null!);\n","import styled, { css } from 'styled-components';\nimport { StyledSideNavigationMenuItemProps } from './types';\nimport { SideNavigationMenuBarVariant } from '../side-navigation-menu-bar';\nimport { Theme } from '../../types';\n\nexport const StyledSideNavigationMenuItemIndicatorContainer = styled.div`\n min-width: 4px;\n`;\n\nexport const StyledSideNavigationMenuItemIndicator = styled.div<{ $theme: Theme }>`\n position: relative;\n width: 4px;\n height: 40px;\n border-radius: 0px 4px 4px 0px;\n background-color: ${({ $theme }) => `var(--redsift-color-${$theme}-components-side-navigation-current-marker)`};\n`;\n\nexport const StyledSideNavigationMenuItemBorder = styled.div`\n position: relative;\n width: 100%;\n height: 1px;\n background-color: var(--redsift-color-neutral-light-grey);\n margin-left: 62px;\n margin-top: -1px;\n`;\n\n/**\n * Component style.\n */\nexport const StyledSideNavigationMenuItem = styled.a<StyledSideNavigationMenuItemProps>`\n /**\n * Common style\n */\n ${({ $isDisabled, $theme, $color }) =>\n !$isDisabled\n ? css`\n & {\n color: ${$color\n ? $color\n : `var(--redsift-color-${$theme}-components-side-navigation-menu-item-text-resting)`};\n }\n `\n : css`\n & {\n color: var(--redsift-color-${$theme}-components-side-navigation-menu-item-text-disabled);\n }\n `}\n align-items: center;\n border-radius: 0 4px 4px 0;\n display: flex;\n font-family: var(--redsift-typography-body-font-family);\n font-size: 14px;\n font-weight: var(--redsift-typography-body-font-weight);\n gap: 8px;\n line-height: var(--redsift-typography-body-line-height);\n overflow: hidden;\n text-decoration: none;\n text-transform: uppercase;\n width: 100%;\n\n &:hover,\n &:focus-visible {\n outline: none;\n\n ${({ $isDisabled, $theme, $color }) =>\n !$isDisabled\n ? css`\n background-color: var(--redsift-color-${$theme}-components-side-navigation-menu-item-background-hover);\n & {\n color: ${$color\n ? $color\n : `var(--redsift-color-${$theme}-components-side-navigation-menu-item-text-hover)`};\n }\n `\n : ''}\n }\n\n :active {\n ${({ $isDisabled, $theme }) =>\n !$isDisabled\n ? css`\n background-color: var(--redsift-color-${$theme}-components-side-navigation-menu-item-background-active);\n `\n : ''}\n }\n\n ${({ $variant }) => css`\n @media (prefers-reduced-motion: no-preference) {\n :focus-visible {\n > span${$variant === SideNavigationMenuBarVariant.shrinked ? '.first' : '.content'} {\n outline: 2px solid var(--redsift-color-primary-n);\n transition: outline-offset 75ms ease-out;\n }\n\n :not(:active):focus-visible {\n > span${$variant === SideNavigationMenuBarVariant.shrinked ? '.first' : '.content'} {\n transition-duration: 0.25s;\n }\n }\n }\n\n :not(:active):focus-visible {\n > span${$variant === SideNavigationMenuBarVariant.shrinked ? '.first' : '.content'} {\n outline-offset: 0.25rem;\n }\n }\n }\n\n .content {\n transition: opacity 300ms ease-out;\n opacity: ${$variant === SideNavigationMenuBarVariant.shrinked ? '0' : '1'};\n overflow: hidden;\n white-space: nowrap;\n }\n `}\n\n ${({ $hasIcon, $isSecondLevel, $variant, $theme }) =>\n !$isSecondLevel\n ? css`\n /**\n * First-level items\n */\n\n background-color: var(--redsift-color-${$theme}-components-side-navigation-background);\n height: 40px;\n margin-bottom: 4px;\n margin-left: -4px;\n transition: padding 300ms ease-out;\n padding: 0 16px 0 ${$variant === SideNavigationMenuBarVariant.shrinked ? '16px' : '16px'};\n\n .redsift-icon.first {\n box-sizing: unset;\n }\n `\n : `\n /**\n * Second-level items\n */\n\n background-color: var(--redsift-color-${$theme}-components-side-navigation-menu-item-background-secondary);\n font-size: var(--redsift-typography-caption-font-size);\n padding-bottom: 4px;\n padding-left: ${$hasIcon ? '18px' : '54px'};\n padding-right: 0;\n padding-top: 4px;\n border-radius: 0;\n\n .redsift-icon.first {\n box-sizing: unset;\n margin-right: 8px;\n }\n `}\n`;\n","import React, { forwardRef, MutableRefObject, useContext, useEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { Comp } from '../../types';\nimport { Icon, IconSize } from '../icon';\nimport { warnIfNoAccessibleLabelFound } from '../../utils/warnIfNoAccessibleLabelFound';\nimport { SideNavigationMenuBarContext } from '../side-navigation-menu-bar/context';\nimport { SideNavigationMenuContext } from '../side-navigation-menu/context';\nimport {\n StyledSideNavigationMenuItem,\n StyledSideNavigationMenuItemBorder,\n StyledSideNavigationMenuItemIndicator,\n StyledSideNavigationMenuItemIndicatorContainer,\n} from './styles';\nimport { SideNavigationMenuItemProps } from './types';\nimport { Badge, BadgeVariant } from '../badge';\nimport { Flexbox } from '../flexbox';\nimport { useTheme } from '../theme';\n\nconst COMPONENT_NAME = 'SideNavigationMenuItem';\nconst CLASSNAME = 'redsift-side-navigation-menu-item';\n\n/**\n * The SideNavigationMenuItem component.\n */\nexport const SideNavigationMenuItem: Comp<SideNavigationMenuItemProps, HTMLAnchorElement> = forwardRef((props, ref) => {\n const menuItemRef = ref || useRef<HTMLAnchorElement>();\n\n const {\n as,\n badge,\n badgeProps,\n children,\n className,\n color,\n hasBorder,\n href,\n icon,\n iconProps,\n iconRef = useRef<HTMLElement>(),\n isCurrent,\n isDisabled,\n isSecondLevel,\n onClick,\n onKeyDown,\n tabIndex,\n theme: propsTheme,\n ...forwardedProps\n } = props;\n\n warnIfNoAccessibleLabelFound(props, [children], 'SideNavigationMenuItem');\n\n const sideNavigationMenuBarContext = useContext(SideNavigationMenuBarContext);\n const sideNavigationMenuContext = useContext(SideNavigationMenuContext);\n const theme = useTheme(propsTheme);\n\n const [isFirstChild, setIsFirstChild] = useState(false);\n const { menuItems } = sideNavigationMenuContext || sideNavigationMenuBarContext || {};\n\n useEffect(() => {\n if (!(sideNavigationMenuContext || sideNavigationMenuBarContext)) {\n setIsFirstChild(true);\n return;\n }\n\n const menuItemNode = (menuItemRef as MutableRefObject<HTMLAnchorElement>).current;\n\n if (menuItemNode) {\n if (!menuItems.size) {\n setIsFirstChild(true);\n }\n\n menuItems.add(menuItemNode);\n }\n\n return () => {\n menuItems.delete(menuItemNode);\n };\n }, [menuItems]);\n\n const sideNavigationVariant = sideNavigationMenuBarContext?.sideNavigationMenuBarVariant;\n\n return (\n <Flexbox flexDirection=\"column\" gap=\"0px\">\n <Flexbox flexDirection=\"row\" gap=\"0px\">\n {!isSecondLevel ? (\n <StyledSideNavigationMenuItemIndicatorContainer>\n {isCurrent ? <StyledSideNavigationMenuItemIndicator $theme={theme} /> : null}\n </StyledSideNavigationMenuItemIndicatorContainer>\n ) : null}\n <StyledSideNavigationMenuItem\n as={as as any}\n role=\"menuitem\"\n {...forwardedProps}\n $color={color}\n $hasIcon={icon !== undefined}\n $isCurrent={isCurrent}\n $isDisabled={isDisabled}\n $isSecondLevel={isSecondLevel}\n $theme={theme}\n $variant={sideNavigationVariant}\n aria-current={isCurrent ? 'page' : undefined}\n aria-disabled={isDisabled}\n className={classNames(SideNavigationMenuItem.className, className)}\n href={!isDisabled ? href : undefined}\n onClick={isDisabled ? undefined : onClick}\n onKeyDown={isDisabled ? undefined : onKeyDown}\n ref={menuItemRef as MutableRefObject<HTMLAnchorElement>}\n tabIndex={tabIndex !== undefined ? tabIndex : !sideNavigationMenuContext && isFirstChild ? 0 : -1}\n >\n {!isSecondLevel || icon ? (\n <Icon\n color={`var(--redsift-side-navigation-color-menu-item-text-${\n isSecondLevel || isDisabled ? 'disabled' : 'resting'\n })`}\n {...iconProps}\n icon={icon!}\n ref={iconRef as MutableRefObject<HTMLElement>}\n className=\"first\"\n size={isSecondLevel ? IconSize.small : IconSize.medium}\n />\n ) : null}\n <span className=\"content\">{children}</span>\n {badge ? (\n <Badge variant={BadgeVariant.standard} color=\"error\" {...badgeProps}>\n {badge}\n </Badge>\n ) : null}\n </StyledSideNavigationMenuItem>\n </Flexbox>\n {isSecondLevel && hasBorder ? <StyledSideNavigationMenuItemBorder /> : null}\n </Flexbox>\n );\n});\nSideNavigationMenuItem.className = CLASSNAME;\nSideNavigationMenuItem.displayName = COMPONENT_NAME;\n"],"names":["SideNavigationMenuBarVariant","shrinked","standard","SideNavigationMenuBarContext","React","createContext","SideNavigationMenuContext","StyledSideNavigationMenuItemIndicatorContainer","styled","div","StyledSideNavigationMenuItemIndicator","_ref","$theme","StyledSideNavigationMenuItemBorder","StyledSideNavigationMenuItem","a","_ref2","$isDisabled","$color","css","_ref3","_ref4","_ref5","$variant","_ref6","$hasIcon","$isSecondLevel","COMPONENT_NAME","CLASSNAME","SideNavigationMenuItem","forwardRef","props","ref","menuItemRef","useRef","as","badge","badgeProps","children","className","color","hasBorder","href","icon","iconProps","iconRef","isCurrent","isDisabled","isSecondLevel","onClick","onKeyDown","tabIndex","theme","propsTheme","forwardedProps","_objectWithoutProperties","_excluded","warnIfNoAccessibleLabelFound","sideNavigationMenuBarContext","useContext","sideNavigationMenuContext","useTheme","isFirstChild","setIsFirstChild","useState","menuItems","useEffect","menuItemNode","current","size","add","delete","sideNavigationVariant","sideNavigationMenuBarVariant","createElement","Flexbox","flexDirection","gap","_extends","role","undefined","$isCurrent","classNames","Icon","IconSize","small","medium","Badge","variant","BadgeVariant","displayName"],"mappings":"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"}
|
package/_internal/Spinner2.js
CHANGED
|
@@ -1,222 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import React__default, {
|
|
1
|
+
import { b as _objectWithoutProperties, c as _extends } from './_rollupPluginBabelHelpers.js';
|
|
2
|
+
import React__default, { forwardRef } from 'react';
|
|
3
3
|
import classNames from 'classnames';
|
|
4
4
|
import styled from 'styled-components';
|
|
5
5
|
import { i as baseStyling } from './styles4.js';
|
|
6
|
-
import { u as
|
|
6
|
+
import { u as useLocalizedStringFormatter } from './useLocalizedStringFormatter.js';
|
|
7
7
|
import { u as useTheme } from './useTheme.js';
|
|
8
8
|
|
|
9
|
-
/* eslint-disable prefer-const */
|
|
10
|
-
// @ts-nocheck
|
|
11
|
-
/*
|
|
12
|
-
* Copyright 2022 Adobe. All rights reserved.
|
|
13
|
-
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
14
|
-
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
15
|
-
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
-
*
|
|
17
|
-
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
18
|
-
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
19
|
-
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
20
|
-
* governing permissions and limitations under the License.
|
|
21
|
-
*/
|
|
22
|
-
|
|
23
|
-
const localeSymbol = Symbol.for('react-aria.i18n.locale');
|
|
24
|
-
const stringsSymbol = Symbol.for('react-aria.i18n.strings');
|
|
25
|
-
let cachedGlobalStrings = undefined;
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Stores a mapping of localized strings. Can be used to find the
|
|
29
|
-
* closest available string for a given locale.
|
|
30
|
-
*/
|
|
31
|
-
class LocalizedStringDictionary {
|
|
32
|
-
constructor(messages) {
|
|
33
|
-
let defaultLocale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US';
|
|
34
|
-
_defineProperty(this, "strings", void 0);
|
|
35
|
-
_defineProperty(this, "defaultLocale", void 0);
|
|
36
|
-
// Clone messages so we don't modify the original object.
|
|
37
|
-
// Filter out entries with falsy values which may have been caused by applying optimize-locales-plugin.
|
|
38
|
-
this.strings = Object.fromEntries(Object.entries(messages).filter(_ref => {
|
|
39
|
-
let [, v] = _ref;
|
|
40
|
-
return v;
|
|
41
|
-
}));
|
|
42
|
-
this.defaultLocale = defaultLocale;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/** Returns a localized string for the given key and locale. */
|
|
46
|
-
getStringForLocale(key, locale) {
|
|
47
|
-
let strings = this.getStringsForLocale(locale);
|
|
48
|
-
let string = strings[key];
|
|
49
|
-
if (!string) {
|
|
50
|
-
throw new Error(`Could not find intl message ${key} in ${locale} locale`);
|
|
51
|
-
}
|
|
52
|
-
return string;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/** Returns all localized strings for the given locale. */
|
|
56
|
-
getStringsForLocale(locale) {
|
|
57
|
-
let strings = this.strings[locale];
|
|
58
|
-
if (!strings) {
|
|
59
|
-
strings = getStringsForLocale(locale, this.strings, this.defaultLocale);
|
|
60
|
-
this.strings[locale] = strings;
|
|
61
|
-
}
|
|
62
|
-
return strings;
|
|
63
|
-
}
|
|
64
|
-
static getGlobalDictionaryForPackage(packageName) {
|
|
65
|
-
var _cachedGlobalStrings;
|
|
66
|
-
if (typeof window === 'undefined') {
|
|
67
|
-
return null;
|
|
68
|
-
}
|
|
69
|
-
let locale = window[localeSymbol];
|
|
70
|
-
if (cachedGlobalStrings === undefined) {
|
|
71
|
-
let globalStrings = window[stringsSymbol];
|
|
72
|
-
if (!globalStrings) {
|
|
73
|
-
return null;
|
|
74
|
-
}
|
|
75
|
-
cachedGlobalStrings = {};
|
|
76
|
-
for (let pkg in globalStrings) {
|
|
77
|
-
cachedGlobalStrings[pkg] = new LocalizedStringDictionary({
|
|
78
|
-
[locale]: globalStrings[pkg]
|
|
79
|
-
}, locale);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
let dictionary = (_cachedGlobalStrings = cachedGlobalStrings) === null || _cachedGlobalStrings === void 0 ? void 0 : _cachedGlobalStrings[packageName];
|
|
83
|
-
if (!dictionary) {
|
|
84
|
-
throw new Error(`Strings for package "${packageName}" were not included by LocalizedStringProvider. Please add it to the list passed to createLocalizedStringDictionary.`);
|
|
85
|
-
}
|
|
86
|
-
return dictionary;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
function getStringsForLocale(locale, strings) {
|
|
90
|
-
let defaultLocale = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'en-US';
|
|
91
|
-
// If there is an exact match, use it.
|
|
92
|
-
if (strings[locale]) {
|
|
93
|
-
return strings[locale];
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
// Attempt to find the closest match by language.
|
|
97
|
-
// For example, if the locale is fr-CA (French Canadian), but there is only
|
|
98
|
-
// an fr-FR (France) set of strings, use that.
|
|
99
|
-
// This could be replaced with Intl.LocaleMatcher once it is supported.
|
|
100
|
-
// https://github.com/tc39/proposal-intl-localematcher
|
|
101
|
-
let language = getLanguage(locale);
|
|
102
|
-
if (strings[language]) {
|
|
103
|
-
return strings[language];
|
|
104
|
-
}
|
|
105
|
-
for (let key in strings) {
|
|
106
|
-
if (key.startsWith(language + '-')) {
|
|
107
|
-
return strings[key];
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
// Nothing close, use english.
|
|
112
|
-
return strings[defaultLocale];
|
|
113
|
-
}
|
|
114
|
-
function getLanguage(locale) {
|
|
115
|
-
// @ts-ignore
|
|
116
|
-
if (Intl.Locale) {
|
|
117
|
-
// @ts-ignore
|
|
118
|
-
return new Intl.Locale(locale).language;
|
|
119
|
-
}
|
|
120
|
-
return locale.split('-')[0];
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/* eslint-disable prefer-const */
|
|
124
|
-
// @ts-nocheck
|
|
125
|
-
/*
|
|
126
|
-
* Copyright 2022 Adobe. All rights reserved.
|
|
127
|
-
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
128
|
-
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
129
|
-
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
130
|
-
*
|
|
131
|
-
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
132
|
-
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
133
|
-
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
134
|
-
* governing permissions and limitations under the License.
|
|
135
|
-
*/
|
|
136
|
-
|
|
137
|
-
const pluralRulesCache = new Map();
|
|
138
|
-
const numberFormatCache = new Map();
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
* Formats localized strings from a LocalizedStringDictionary. Supports interpolating variables,
|
|
142
|
-
* selecting the correct pluralization, and formatting numbers for the locale.
|
|
143
|
-
*/
|
|
144
|
-
class LocalizedStringFormatter {
|
|
145
|
-
constructor(locale, strings) {
|
|
146
|
-
_defineProperty(this, "locale", void 0);
|
|
147
|
-
_defineProperty(this, "strings", void 0);
|
|
148
|
-
this.locale = locale;
|
|
149
|
-
this.strings = strings;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
/** Formats a localized string for the given key with the provided variables. */
|
|
153
|
-
format(key, variables) {
|
|
154
|
-
let message = this.strings.getStringForLocale(key, this.locale);
|
|
155
|
-
return typeof message === 'function' ? message(variables, this) : message;
|
|
156
|
-
}
|
|
157
|
-
plural(count, options) {
|
|
158
|
-
let type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'cardinal';
|
|
159
|
-
let opt = options['=' + count];
|
|
160
|
-
if (opt) {
|
|
161
|
-
return typeof opt === 'function' ? opt() : opt;
|
|
162
|
-
}
|
|
163
|
-
let key = this.locale + ':' + type;
|
|
164
|
-
let pluralRules = pluralRulesCache.get(key);
|
|
165
|
-
if (!pluralRules) {
|
|
166
|
-
pluralRules = new Intl.PluralRules(this.locale, {
|
|
167
|
-
type
|
|
168
|
-
});
|
|
169
|
-
pluralRulesCache.set(key, pluralRules);
|
|
170
|
-
}
|
|
171
|
-
let selected = pluralRules.select(count);
|
|
172
|
-
opt = options[selected] || options.other;
|
|
173
|
-
return typeof opt === 'function' ? opt() : opt;
|
|
174
|
-
}
|
|
175
|
-
number(value) {
|
|
176
|
-
let numberFormat = numberFormatCache.get(this.locale);
|
|
177
|
-
if (!numberFormat) {
|
|
178
|
-
numberFormat = new Intl.NumberFormat(this.locale);
|
|
179
|
-
numberFormatCache.set(this.locale, numberFormat);
|
|
180
|
-
}
|
|
181
|
-
return numberFormat.format(value);
|
|
182
|
-
}
|
|
183
|
-
select(options, value) {
|
|
184
|
-
let opt = options[value] || options.other;
|
|
185
|
-
return typeof opt === 'function' ? opt() : opt;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
/* eslint-disable prefer-const */
|
|
190
|
-
const cache = new WeakMap();
|
|
191
|
-
function getCachedDictionary(strings) {
|
|
192
|
-
let dictionary = cache.get(strings);
|
|
193
|
-
if (!dictionary) {
|
|
194
|
-
dictionary = new LocalizedStringDictionary(strings);
|
|
195
|
-
cache.set(strings, dictionary);
|
|
196
|
-
}
|
|
197
|
-
return dictionary;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
/**
|
|
201
|
-
* Returns a cached LocalizedStringDictionary for the given strings.
|
|
202
|
-
*/
|
|
203
|
-
function useLocalizedStringDictionary(strings, packageName) {
|
|
204
|
-
return packageName && LocalizedStringDictionary.getGlobalDictionaryForPackage(packageName) || getCachedDictionary(strings);
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
/**
|
|
208
|
-
* Provides localized string formatting for the current locale. Supports interpolating variables,
|
|
209
|
-
* selecting the correct pluralization, and formatting numbers. Automatically updates when the locale changes.
|
|
210
|
-
* @param strings - A mapping of languages to localized strings by key.
|
|
211
|
-
*/
|
|
212
|
-
function useLocalizedStringFormatter(strings, packageName) {
|
|
213
|
-
let {
|
|
214
|
-
locale
|
|
215
|
-
} = useLocale();
|
|
216
|
-
let dictionary = useLocalizedStringDictionary(strings, packageName);
|
|
217
|
-
return useMemo(() => new LocalizedStringFormatter(locale, dictionary), [locale, dictionary]);
|
|
218
|
-
}
|
|
219
|
-
|
|
220
9
|
var loading$1 = "Loading...";
|
|
221
10
|
var enUS = {
|
|
222
11
|
loading: loading$1
|
|
@@ -329,5 +118,5 @@ const Spinner = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
329
118
|
Spinner.className = CLASSNAME;
|
|
330
119
|
Spinner.displayName = COMPONENT_NAME;
|
|
331
120
|
|
|
332
|
-
export { Spinner as S, SpinnerSize as a
|
|
121
|
+
export { Spinner as S, SpinnerSize as a };
|
|
333
122
|
//# sourceMappingURL=Spinner2.js.map
|