@gravity-ui/navigation 6.4.1 → 6.5.0
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/build/cjs/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.d.ts +7 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.js +31 -0
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/ru.json.js +1 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.js +1 -1
- package/build/cjs/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.js +10 -5
- package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.css +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.js +66 -12
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.js.map +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.module.scss.js +1 -1
- package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.types.d.ts +8 -0
- package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.d.ts +6 -1
- package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.js +4 -2
- package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.js.map +1 -1
- package/build/cjs/components/types.d.ts +19 -0
- package/build/docs/components/AsideHeader.md +11 -7
- package/build/esm/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.d.ts +7 -0
- package/build/esm/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.js +31 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.js.map +1 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/ru.json.js +1 -1
- package/build/esm/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.js +2 -2
- package/build/esm/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.js.map +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.js +10 -5
- package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.js.map +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.css +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.js +66 -12
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.js.map +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.module.scss.js +1 -1
- package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.types.d.ts +8 -0
- package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.d.ts +6 -1
- package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.js +4 -2
- package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.js.map +1 -1
- package/build/esm/components/types.d.ts +19 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Item.js","sources":["../../../../../../../../src/components/AsideHeader/components/CompositeBar/Item/Item.tsx"],"sourcesContent":["import React from 'react';\n\nimport {ChevronDown, ChevronRight, ChevronUp} from '@gravity-ui/icons';\nimport {Icon, Popup, PopupPlacement, PopupProps} from '@gravity-ui/uikit';\n\nimport {ASIDE_HEADER_ICON_SIZE} from '../../../../constants';\nimport {MakeItemParams} from '../../../../types';\nimport {createBlock} from '../../../../utils/cn';\nimport {HighlightedItem} from '../HighlightedItem/HighlightedItem';\nimport {COLLAPSE_ITEM_ID, ITEM_TYPE_REGULAR} from '../constants';\n\nimport {ItemInnerProps, ItemProps} from './Item.types';\nimport {ItemPopup} from './ItemPopup';\nimport {ItemPopupNestContext} from './ItemPopupNestContext';\nimport {renderItemTitle} from './renderItemTitle';\n\nimport styles from './Item.module.scss';\n\nconst b = createBlock('composite-bar-item', styles);\n\nconst defaultPopupPlacement: PopupPlacement = ['right-end'];\nconst defaultPopupOffset: NonNullable<PopupProps['offset']> = {mainAxis: 14};\nconst CHEVRON_SIZE = 16;\nconst CHEVRON_SIZE_COMPACT = 10;\n\nexport const Item: React.FC<ItemInnerProps> = (props) => {\n const {\n className,\n popupItemClassName,\n menuPopupItems,\n menuPopupTitle,\n groupHeaderExpanded,\n compact,\n onMouseLeave,\n onMouseEnter,\n enableTooltip = true,\n popupVisible = false,\n popupRef: anchoreRefProp,\n popupPlacement = defaultPopupPlacement,\n popupOffset = defaultPopupOffset,\n popupKeepMounted,\n renderPopupContent,\n onOpenChangePopup,\n onItemClick,\n onPopupItemClick,\n onItemClickCapture,\n itemWrapper,\n bringForward,\n rightAdornment,\n title,\n href,\n qa,\n hideIcon = false,\n stopClickPropagation = false,\n menuGroupNestedTreeConnector,\n menuItemAriaProps,\n } = props;\n\n const [compactNavPopoverOpen, setCompactNavPopoverOpen] = React.useState(false);\n\n const ref = React.useRef<HTMLElement>(null);\n const anchorRef = anchoreRefProp?.current ? anchoreRefProp : ref;\n const highlightedRef = React.useRef<HTMLDivElement>(null);\n\n const type = props.type || ITEM_TYPE_REGULAR;\n const icon = props.icon;\n const iconSize = props.iconSize || ASIDE_HEADER_ICON_SIZE;\n const iconQa = props.iconQa;\n const collapsedItem = props.id === COLLAPSE_ITEM_ID;\n const inlineGroupHeader = groupHeaderExpanded !== undefined;\n const resolvedMenuPopupItems = menuPopupItems ?? props.compositeBarMenuPopupItems;\n const resolvedMenuPopupTitle = menuPopupTitle ?? props.compositeBarMenuPopupTitle;\n\n const current = props.current || resolvedMenuPopupItems?.some((item) => item.current) || false;\n\n const handleOpenChangePopup = React.useCallback<NonNullable<ItemProps['onOpenChangePopup']>>(\n (newOpen, event, reason) => {\n if (\n event instanceof MouseEvent &&\n event.target &&\n ref.current?.contains(event.target as Node)\n ) {\n return;\n }\n\n if (newOpen) {\n setCompactNavPopoverOpen(false);\n }\n\n onOpenChangePopup?.(newOpen, event, reason);\n },\n [onOpenChangePopup],\n );\n\n const isDivider = type === 'divider';\n const showMenuPopup =\n !isDivider &&\n Boolean(resolvedMenuPopupItems?.length) &&\n (collapsedItem || !inlineGroupHeader);\n\n const submenuNest = React.useContext(ItemPopupNestContext);\n\n React.useEffect(() => {\n if (!submenuNest || !showMenuPopup || !compactNavPopoverOpen) {\n return undefined;\n }\n\n submenuNest.registerNestedOpen(1);\n\n return () => {\n submenuNest.registerNestedOpen(-1);\n };\n }, [submenuNest, showMenuPopup, compactNavPopoverOpen]);\n\n if (isDivider) {\n return <div className={b('menu-divider')} />;\n }\n\n const compactPopoverDisabled = !enableTooltip || popupVisible || type === 'action';\n\n const makeIconNode = (iconEl: React.ReactNode, withCompactPopover = true): React.ReactNode => {\n if (!compact) {\n return iconEl;\n }\n\n const iconButton = (\n <div\n onMouseEnter={() => onMouseEnter?.()}\n onMouseLeave={() => onMouseLeave?.()}\n className={b('btn-icon')}\n >\n {iconEl}\n </div>\n );\n\n if (!withCompactPopover || resolvedMenuPopupItems?.length) {\n return iconButton;\n }\n\n return (\n <ItemPopup\n items={[props]}\n open={compactNavPopoverOpen}\n onOpenChange={(nextOpen) => {\n if (nextOpen && compactPopoverDisabled) return;\n setCompactNavPopoverOpen(nextOpen);\n }}\n hideIcon\n itemClassName={popupItemClassName}\n disabled={compactPopoverDisabled}\n type={type}\n collapsed={compact}\n onPopupItemClick={onPopupItemClick}\n onItemClick={onItemClick}\n >\n {iconButton}\n </ItemPopup>\n );\n };\n\n const makeNode = ({icon: iconEl, title: titleEl}: MakeItemParams) => {\n const wrappedByItemWrapper = typeof itemWrapper === 'function';\n const rowClassName = b({type, current, compact, 'hide-icon': hideIcon}, className);\n const ariaLabel = typeof title === 'string' ? title : undefined;\n\n const handleRowClick = (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n if (compact && !collapsedItem && !showMenuPopup && !current) {\n setCompactNavPopoverOpen(false);\n }\n\n onItemClick?.(props, collapsedItem, event);\n\n if (stopClickPropagation) {\n event.stopPropagation();\n }\n };\n\n const rowChildren = (\n <>\n {menuGroupNestedTreeConnector}\n <div className={b('icon-place')} ref={highlightedRef}>\n {makeIconNode(iconEl)}\n </div>\n\n <div className={b('title')} title={typeof title === 'string' ? title : undefined}>\n {titleEl}\n </div>\n\n {inlineGroupHeader ? (\n <div className={b('chevron')}>\n <Icon\n data={groupHeaderExpanded ? ChevronUp : ChevronDown}\n size={compact ? CHEVRON_SIZE_COMPACT : CHEVRON_SIZE}\n />\n </div>\n ) : (\n Boolean(resolvedMenuPopupItems?.length) && (\n <div className={b('chevron')}>\n <Icon\n data={ChevronRight}\n size={compact ? CHEVRON_SIZE_COMPACT : CHEVRON_SIZE}\n />\n </div>\n )\n )}\n </>\n );\n\n const rowEventProps = {\n ...(menuItemAriaProps ?? {}),\n className: rowClassName,\n 'data-type': type,\n 'data-qa': qa,\n 'aria-label': menuItemAriaProps?.['aria-label'] ?? ariaLabel,\n onClick: handleRowClick,\n onClickCapture: onItemClickCapture,\n onMouseEnter: () => {\n if (!compact) {\n onMouseEnter?.();\n }\n },\n onMouseLeave: () => {\n if (!compact) {\n onMouseLeave?.();\n }\n },\n };\n\n let tagNode: React.ReactNode;\n\n if (href) {\n tagNode = (\n <a {...rowEventProps} href={href} ref={ref as React.RefObject<HTMLAnchorElement>}>\n {rowChildren}\n </a>\n );\n } else if (wrappedByItemWrapper) {\n tagNode = (\n <div\n {...rowEventProps}\n role={menuItemAriaProps?.role ?? 'button'}\n ref={ref as React.RefObject<HTMLDivElement>}\n >\n {rowChildren}\n </div>\n );\n } else {\n tagNode = (\n <button {...rowEventProps} ref={ref as React.RefObject<HTMLButtonElement>}>\n {rowChildren}\n </button>\n );\n }\n\n const expandedMenuRows = resolvedMenuPopupItems;\n\n const wrappedTagNode =\n showMenuPopup && expandedMenuRows ? (\n <ItemPopup\n items={expandedMenuRows}\n title={resolvedMenuPopupTitle}\n open={compactNavPopoverOpen}\n itemClassName={popupItemClassName}\n onOpenChange={setCompactNavPopoverOpen}\n collapsed={collapsedItem ? true : compact}\n onPopupItemClick={onPopupItemClick}\n onItemClick={onItemClick}\n >\n {tagNode}\n </ItemPopup>\n ) : (\n tagNode\n );\n\n const createdNode = (\n <React.Fragment>\n {wrappedTagNode}\n {renderPopupContent && Boolean(anchorRef?.current) && (\n <Popup\n strategy=\"fixed\"\n open={popupVisible}\n keepMounted={popupKeepMounted}\n placement={popupPlacement}\n offset={popupOffset}\n anchorElement={anchorRef.current}\n onOpenChange={handleOpenChangePopup}\n >\n {renderPopupContent()}\n </Popup>\n )}\n </React.Fragment>\n );\n\n return createdNode;\n };\n\n const iconNode =\n hideIcon || !icon ? null : (\n <Icon qa={iconQa} data={icon} size={iconSize} className={b('icon')} />\n );\n const titleNode = renderItemTitle({title, rightAdornment});\n const params = {icon: iconNode, title: titleNode};\n let highlightedNode = null;\n let node;\n\n const opts = {compact: Boolean(compact), collapsed: false, item: props, ref};\n\n if (typeof itemWrapper === 'function') {\n node = itemWrapper(params, makeNode, opts) as React.ReactElement;\n highlightedNode =\n bringForward &&\n (itemWrapper(\n params,\n ({icon: iconEl}) => makeIconNode(iconEl, false),\n opts,\n ) as React.ReactElement);\n } else {\n node = makeNode(params);\n highlightedNode = bringForward && makeIconNode(iconNode, false);\n }\n\n return (\n <React.Fragment>\n {bringForward && (\n <HighlightedItem\n iconNode={highlightedNode}\n iconRef={highlightedRef}\n onClick={(event: React.MouseEvent<HTMLElement, MouseEvent>) =>\n onItemClick?.(props, false, event)\n }\n onClickCapture={onItemClickCapture}\n />\n )}\n {node}\n </React.Fragment>\n );\n};\n\nItem.displayName = 'Item';\n"],"names":["createBlock","styles","ITEM_TYPE_REGULAR","ASIDE_HEADER_ICON_SIZE","COLLAPSE_ITEM_ID","ItemPopupNestContext","ItemPopup","Icon","ChevronUp","ChevronDown","ChevronRight","Popup","renderItemTitle","HighlightedItem"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Item.js","sources":["../../../../../../../../src/components/AsideHeader/components/CompositeBar/Item/Item.tsx"],"sourcesContent":["import React from 'react';\n\nimport {ChevronDown, ChevronRight, ChevronUp} from '@gravity-ui/icons';\nimport {Icon, Popup, PopupPlacement, PopupProps} from '@gravity-ui/uikit';\n\nimport {ASIDE_HEADER_ICON_SIZE} from '../../../../constants';\nimport {MakeItemParams} from '../../../../types';\nimport {createBlock} from '../../../../utils/cn';\nimport i18n from '../../../i18n';\nimport {HighlightedItem} from '../HighlightedItem/HighlightedItem';\nimport {COLLAPSE_ITEM_ID, ITEM_TYPE_REGULAR} from '../constants';\n\nimport {ItemInnerProps, ItemProps} from './Item.types';\nimport {ItemPopup} from './ItemPopup';\nimport {ItemPopupNestContext} from './ItemPopupNestContext';\nimport {renderItemTitle} from './renderItemTitle';\n\nimport styles from './Item.module.scss';\n\nconst b = createBlock('composite-bar-item', styles);\n\nconst defaultPopupPlacement: PopupPlacement = ['right-end'];\nconst defaultPopupOffset: NonNullable<PopupProps['offset']> = {mainAxis: 14};\nconst CHEVRON_SIZE = 16;\nconst CHEVRON_SIZE_COMPACT = 10;\n\nfunction getChevronFallbackLabel(expanded: boolean | undefined): string {\n return expanded ? i18n('button_collapse') : i18n('button_expand');\n}\n\nfunction resolveItemAriaLabel(\n ariaProps: ItemInnerProps['menuItemAriaProps'],\n titleLabel: string | undefined,\n): string | undefined {\n return ariaProps?.['aria-label'] ?? titleLabel;\n}\n\nfunction resolveAnchorRef(\n anchorRef: React.RefObject<HTMLElement> | undefined,\n fallback: React.RefObject<HTMLElement>,\n): React.RefObject<HTMLElement> {\n return anchorRef?.current ? anchorRef : fallback;\n}\n\nfunction shouldShowFlyoutChevron(\n hasPopupItems: boolean,\n compact?: boolean,\n hideCompactChevron?: boolean,\n): boolean {\n return hasPopupItems && !(compact && hideCompactChevron);\n}\n\nexport const Item: React.FC<ItemInnerProps> = (props) => {\n const {\n className,\n popupItemClassName,\n menuPopupItems,\n menuPopupTitle,\n groupHeaderExpanded,\n compact,\n onMouseLeave,\n onMouseEnter,\n enableTooltip = true,\n popupVisible = false,\n popupRef: anchoreRefProp,\n popupPlacement = defaultPopupPlacement,\n popupOffset = defaultPopupOffset,\n popupKeepMounted,\n renderPopupContent,\n onOpenChangePopup,\n onItemClick,\n onPopupItemClick,\n onItemClickCapture,\n itemWrapper,\n bringForward,\n rightAdornment,\n title,\n href,\n qa,\n hideIcon = false,\n stopClickPropagation = false,\n menuGroupNestedTreeConnector,\n menuItemAriaProps,\n onGroupHeaderChevronClick,\n hideCompactChevron,\n } = props;\n\n const [compactNavPopoverOpen, setCompactNavPopoverOpen] = React.useState(false);\n\n const ref = React.useRef<HTMLElement>(null);\n const anchorRef = resolveAnchorRef(anchoreRefProp, ref);\n const highlightedRef = React.useRef<HTMLDivElement>(null);\n\n const type = props.type || ITEM_TYPE_REGULAR;\n const icon = props.icon;\n const iconSize = props.iconSize || ASIDE_HEADER_ICON_SIZE;\n const iconQa = props.iconQa;\n const collapsedItem = props.id === COLLAPSE_ITEM_ID;\n const inlineGroupHeader = groupHeaderExpanded !== undefined;\n const resolvedMenuPopupItems = menuPopupItems ?? props.compositeBarMenuPopupItems;\n const resolvedMenuPopupTitle = menuPopupTitle ?? props.compositeBarMenuPopupTitle;\n\n const current = props.current || resolvedMenuPopupItems?.some((item) => item.current) || false;\n\n const handleOpenChangePopup = React.useCallback<NonNullable<ItemProps['onOpenChangePopup']>>(\n (newOpen, event, reason) => {\n if (\n event instanceof MouseEvent &&\n event.target &&\n ref.current?.contains(event.target as Node)\n ) {\n return;\n }\n\n if (newOpen) {\n setCompactNavPopoverOpen(false);\n }\n\n onOpenChangePopup?.(newOpen, event, reason);\n },\n [onOpenChangePopup],\n );\n\n const isDivider = type === 'divider';\n const showMenuPopup =\n !isDivider &&\n Boolean(resolvedMenuPopupItems?.length) &&\n (collapsedItem || !inlineGroupHeader);\n\n const submenuNest = React.useContext(ItemPopupNestContext);\n\n React.useEffect(() => {\n if (!submenuNest || !showMenuPopup || !compactNavPopoverOpen) {\n return undefined;\n }\n\n submenuNest.registerNestedOpen(1);\n\n return () => {\n submenuNest.registerNestedOpen(-1);\n };\n }, [submenuNest, showMenuPopup, compactNavPopoverOpen]);\n\n if (isDivider) {\n return <div className={b('menu-divider')} />;\n }\n\n const compactPopoverDisabled = !enableTooltip || popupVisible || type === 'action';\n\n const showFlyoutChevron = shouldShowFlyoutChevron(\n Boolean(resolvedMenuPopupItems?.length),\n compact,\n hideCompactChevron,\n );\n\n const makeIconNode = (iconEl: React.ReactNode, withCompactPopover = true): React.ReactNode => {\n if (!compact) {\n return iconEl;\n }\n\n const iconButton = (\n <div\n onMouseEnter={() => onMouseEnter?.()}\n onMouseLeave={() => onMouseLeave?.()}\n className={b('btn-icon')}\n >\n {iconEl}\n </div>\n );\n\n if (!withCompactPopover || resolvedMenuPopupItems?.length) {\n return iconButton;\n }\n\n return (\n <ItemPopup\n items={[props]}\n open={compactNavPopoverOpen}\n onOpenChange={(nextOpen) => {\n if (nextOpen && compactPopoverDisabled) return;\n setCompactNavPopoverOpen(nextOpen);\n }}\n hideIcon\n itemClassName={popupItemClassName}\n disabled={compactPopoverDisabled}\n type={type}\n collapsed={compact}\n /**\n * No `onPopupItemClick` here on purpose: this popup renders the item itself\n * (`items={[props]}`), whose `onItemClick` is already the row-level wrapper.\n * Going through the wrapper keeps the original `item.onItemClick` intact for\n * the AsideHeader handler; the direct path would pass the wrapper as\n * `item.onItemClick` and trigger the handler twice (toggling All pages back).\n */\n onItemClick={onItemClick}\n >\n {iconButton}\n </ItemPopup>\n );\n };\n\n const ariaLabel = typeof title === 'string' ? title : undefined;\n const resolvedAriaLabel = resolveItemAriaLabel(menuItemAriaProps, ariaLabel);\n\n const makeNode = ({icon: iconEl, title: titleEl}: MakeItemParams) => {\n const wrappedByItemWrapper = typeof itemWrapper === 'function';\n const chevronClick = inlineGroupHeader ? onGroupHeaderChevronClick : undefined;\n /* With a sibling chevron control, the wrapper becomes the outer box of the row,\n so the external className (outer layout) is applied to it instead of the row. */\n const rowClassName = b(\n {\n type,\n current,\n compact,\n 'hide-icon': hideIcon,\n 'with-chevron-control': Boolean(chevronClick),\n },\n chevronClick ? undefined : className,\n );\n\n const handleRowClick = (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n if (compact && !collapsedItem && !showMenuPopup && !current) {\n setCompactNavPopoverOpen(false);\n }\n\n onItemClick?.(props, collapsedItem, event);\n\n if (stopClickPropagation) {\n event.stopPropagation();\n }\n };\n\n const chevronSize = compact ? CHEVRON_SIZE_COMPACT : CHEVRON_SIZE;\n\n let chevronNode: React.ReactNode = null;\n let chevronControl: React.ReactNode = null;\n\n if (chevronClick) {\n chevronControl = (\n <button\n type=\"button\"\n className={b('chevron', {interactive: true})}\n aria-label={resolvedAriaLabel ?? getChevronFallbackLabel(groupHeaderExpanded)}\n aria-expanded={groupHeaderExpanded}\n onClick={(event) => {\n event.stopPropagation();\n chevronClick(event);\n }}\n >\n <Icon data={groupHeaderExpanded ? ChevronUp : ChevronDown} size={chevronSize} />\n </button>\n );\n } else if (inlineGroupHeader) {\n chevronNode = (\n <div className={b('chevron')}>\n <Icon data={groupHeaderExpanded ? ChevronUp : ChevronDown} size={chevronSize} />\n </div>\n );\n } else if (showFlyoutChevron) {\n chevronNode = (\n <div className={b('chevron')}>\n <Icon data={ChevronRight} size={chevronSize} />\n </div>\n );\n }\n\n const rowChildren = (\n <>\n {menuGroupNestedTreeConnector}\n <div className={b('icon-place')} ref={highlightedRef}>\n {makeIconNode(iconEl)}\n </div>\n\n <div className={b('title')} title={ariaLabel}>\n {titleEl}\n </div>\n\n {chevronNode}\n </>\n );\n\n const rowEventProps = {\n ...(menuItemAriaProps ?? {}),\n className: rowClassName,\n 'data-type': type,\n 'data-qa': qa,\n 'aria-label': resolvedAriaLabel,\n onClick: handleRowClick,\n onClickCapture: onItemClickCapture,\n onMouseEnter: () => {\n if (!compact) {\n onMouseEnter?.();\n }\n },\n onMouseLeave: () => {\n if (!compact) {\n onMouseLeave?.();\n }\n },\n };\n\n let tagNode: React.ReactNode;\n\n if (href) {\n tagNode = (\n <a {...rowEventProps} href={href} ref={ref as React.RefObject<HTMLAnchorElement>}>\n {rowChildren}\n </a>\n );\n } else if (wrappedByItemWrapper) {\n tagNode = (\n <div\n {...rowEventProps}\n role={menuItemAriaProps?.role ?? 'button'}\n ref={ref as React.RefObject<HTMLDivElement>}\n >\n {rowChildren}\n </div>\n );\n } else {\n tagNode = (\n <button {...rowEventProps} ref={ref as React.RefObject<HTMLButtonElement>}>\n {rowChildren}\n </button>\n );\n }\n\n if (chevronControl) {\n tagNode = (\n <div className={b('group-header-row', className)}>\n {tagNode}\n {chevronControl}\n </div>\n );\n }\n\n const expandedMenuRows = resolvedMenuPopupItems;\n\n const wrappedTagNode =\n showMenuPopup && expandedMenuRows ? (\n <ItemPopup\n items={expandedMenuRows}\n title={resolvedMenuPopupTitle}\n open={compactNavPopoverOpen}\n itemClassName={popupItemClassName}\n onOpenChange={setCompactNavPopoverOpen}\n collapsed={collapsedItem ? true : compact}\n onPopupItemClick={onPopupItemClick}\n onItemClick={onItemClick}\n >\n {tagNode}\n </ItemPopup>\n ) : (\n tagNode\n );\n\n const createdNode = (\n <React.Fragment>\n {wrappedTagNode}\n {renderPopupContent && Boolean(anchorRef?.current) && (\n <Popup\n strategy=\"fixed\"\n open={popupVisible}\n keepMounted={popupKeepMounted}\n placement={popupPlacement}\n offset={popupOffset}\n anchorElement={anchorRef.current}\n onOpenChange={handleOpenChangePopup}\n >\n {renderPopupContent()}\n </Popup>\n )}\n </React.Fragment>\n );\n\n return createdNode;\n };\n\n const iconNode =\n hideIcon || !icon ? null : (\n <Icon qa={iconQa} data={icon} size={iconSize} className={b('icon')} />\n );\n const titleNode = renderItemTitle({title, rightAdornment});\n const params = {icon: iconNode, title: titleNode};\n let highlightedNode = null;\n let node;\n\n const opts = {compact: Boolean(compact), collapsed: false, item: props, ref};\n\n if (typeof itemWrapper === 'function') {\n node = itemWrapper(params, makeNode, opts) as React.ReactElement;\n highlightedNode =\n bringForward &&\n (itemWrapper(\n params,\n ({icon: iconEl}) => makeIconNode(iconEl, false),\n opts,\n ) as React.ReactElement);\n } else {\n node = makeNode(params);\n highlightedNode = bringForward && makeIconNode(iconNode, false);\n }\n\n return (\n <React.Fragment>\n {bringForward && (\n <HighlightedItem\n iconNode={highlightedNode}\n iconRef={highlightedRef}\n onClick={(event: React.MouseEvent<HTMLElement, MouseEvent>) =>\n onItemClick?.(props, false, event)\n }\n onClickCapture={onItemClickCapture}\n />\n )}\n {node}\n </React.Fragment>\n );\n};\n\nItem.displayName = 'Item';\n"],"names":["createBlock","styles","i18n","ITEM_TYPE_REGULAR","ASIDE_HEADER_ICON_SIZE","COLLAPSE_ITEM_ID","ItemPopupNestContext","ItemPopup","Icon","ChevronUp","ChevronDown","ChevronRight","Popup","renderItemTitle","HighlightedItem"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var styles = {"gn-composite-bar-item":"Item-module__gn-composite-bar-item___-pkx5","gnCompositeBarItem":"Item-module__gn-composite-bar-item___-pkx5","gn-composite-bar-item_type_regular":"Item-module__gn-composite-bar-item_type_regular___wkhsT","gnCompositeBarItemTypeRegular":"Item-module__gn-composite-bar-item_type_regular___wkhsT","gn-composite-bar-item__icon":"Item-module__gn-composite-bar-item__icon___ORFNf","gnCompositeBarItemIcon":"Item-module__gn-composite-bar-item__icon___ORFNf","gn-composite-bar-item_current":"Item-module__gn-composite-bar-item_current___NT2hB","gnCompositeBarItemCurrent":"Item-module__gn-composite-bar-item_current___NT2hB","gn-composite-bar-item__icon-tooltip":"Item-module__gn-composite-bar-item__icon-tooltip___PxU2i","gnCompositeBarItemIconTooltip":"Item-module__gn-composite-bar-item__icon-tooltip___PxU2i","g-action-tooltip__description":"Item-module__g-action-tooltip__description___UsHcG","gActionTooltipDescription":"Item-module__g-action-tooltip__description___UsHcG","gn-composite-bar-item__icon-place":"Item-module__gn-composite-bar-item__icon-place___jPKRh","gnCompositeBarItemIconPlace":"Item-module__gn-composite-bar-item__icon-place___jPKRh","gn-composite-bar-item__title":"Item-module__gn-composite-bar-item__title___wj5L5","gnCompositeBarItemTitle":"Item-module__gn-composite-bar-item__title___wj5L5","gn-composite-bar-item__title-text":"Item-module__gn-composite-bar-item__title-text___cILJo","gnCompositeBarItemTitleText":"Item-module__gn-composite-bar-item__title-text___cILJo","gn-composite-bar-item__title-adornment":"Item-module__gn-composite-bar-item__title-adornment___Xcopn","gnCompositeBarItemTitleAdornment":"Item-module__gn-composite-bar-item__title-adornment___Xcopn","gn-composite-bar-item__collapse-item":"Item-module__gn-composite-bar-item__collapse-item___Up6IX","gnCompositeBarItemCollapseItem":"Item-module__gn-composite-bar-item__collapse-item___Up6IX","gn-composite-bar-item__collapse-item-icon":"Item-module__gn-composite-bar-item__collapse-item-icon___CD-ao","gnCompositeBarItemCollapseItemIcon":"Item-module__gn-composite-bar-item__collapse-item-icon___CD-ao","gn-composite-bar-item__menu-divider":"Item-module__gn-composite-bar-item__menu-divider___hkm-Z","gnCompositeBarItemMenuDivider":"Item-module__gn-composite-bar-item__menu-divider___hkm-Z","gn-composite-bar-item__collapse-items-popup-content":"Item-module__gn-composite-bar-item__collapse-items-popup-content___a82to","gnCompositeBarItemCollapseItemsPopupContent":"Item-module__gn-composite-bar-item__collapse-items-popup-content___a82to","gn-composite-bar-item__link":"Item-module__gn-composite-bar-item__link___McAVN","gnCompositeBarItemLink":"Item-module__gn-composite-bar-item__link___McAVN","gn-composite-bar-item__btn-icon":"Item-module__gn-composite-bar-item__btn-icon___SwT65","gnCompositeBarItemBtnIcon":"Item-module__gn-composite-bar-item__btn-icon___SwT65","gn-composite-bar-item_type_action":"Item-module__gn-composite-bar-item_type_action___2jxO8","gnCompositeBarItemTypeAction":"Item-module__gn-composite-bar-item_type_action___2jxO8","gn-composite-bar-item__icon-tooltip_item-type_action":"Item-module__gn-composite-bar-item__icon-tooltip_item-type_action___HUhUR","gnCompositeBarItemIconTooltipItemTypeAction":"Item-module__gn-composite-bar-item__icon-tooltip_item-type_action___HUhUR","gn-composite-bar-item__icon-popover":"Item-module__gn-composite-bar-item__icon-popover___euq-P","gnCompositeBarItemIconPopover":"Item-module__gn-composite-bar-item__icon-popover___euq-P","gn-composite-bar-item__icon-popover_item-type_action":"Item-module__gn-composite-bar-item__icon-popover_item-type_action___ep-D3","gnCompositeBarItemIconPopoverItemTypeAction":"Item-module__gn-composite-bar-item__icon-popover_item-type_action___ep-D3","gn-composite-bar-item__popup-content":"Item-module__gn-composite-bar-item__popup-content___oys3t","gnCompositeBarItemPopupContent":"Item-module__gn-composite-bar-item__popup-content___oys3t","gn-composite-bar-item__root-menu-item":"Item-module__gn-composite-bar-item__root-menu-item___nlpvH","gnCompositeBarItemRootMenuItem":"Item-module__gn-composite-bar-item__root-menu-item___nlpvH","gn-composite-bar-item__popup-title":"Item-module__gn-composite-bar-item__popup-title___2-tGd","gnCompositeBarItemPopupTitle":"Item-module__gn-composite-bar-item__popup-title___2-tGd","gn-composite-bar-item__popup-item":"Item-module__gn-composite-bar-item__popup-item___MPgm3","gnCompositeBarItemPopupItem":"Item-module__gn-composite-bar-item__popup-item___MPgm3","gn-composite-bar-item_hide-icon":"Item-module__gn-composite-bar-item_hide-icon___bf5h3","gnCompositeBarItemHideIcon":"Item-module__gn-composite-bar-item_hide-icon___bf5h3","gn-composite-bar-item_compact":"Item-module__gn-composite-bar-item_compact___PVTeM","gnCompositeBarItemCompact":"Item-module__gn-composite-bar-item_compact___PVTeM","gn-composite-bar-item__chevron":"Item-module__gn-composite-bar-item__chevron___ZZ-vf","gnCompositeBarItemChevron":"Item-module__gn-composite-bar-item__chevron___ZZ-vf"};
|
|
5
|
+
var styles = {"gn-composite-bar-item":"Item-module__gn-composite-bar-item___-pkx5","gnCompositeBarItem":"Item-module__gn-composite-bar-item___-pkx5","gn-composite-bar-item_type_regular":"Item-module__gn-composite-bar-item_type_regular___wkhsT","gnCompositeBarItemTypeRegular":"Item-module__gn-composite-bar-item_type_regular___wkhsT","gn-composite-bar-item__icon":"Item-module__gn-composite-bar-item__icon___ORFNf","gnCompositeBarItemIcon":"Item-module__gn-composite-bar-item__icon___ORFNf","gn-composite-bar-item_current":"Item-module__gn-composite-bar-item_current___NT2hB","gnCompositeBarItemCurrent":"Item-module__gn-composite-bar-item_current___NT2hB","gn-composite-bar-item__icon-tooltip":"Item-module__gn-composite-bar-item__icon-tooltip___PxU2i","gnCompositeBarItemIconTooltip":"Item-module__gn-composite-bar-item__icon-tooltip___PxU2i","g-action-tooltip__description":"Item-module__g-action-tooltip__description___UsHcG","gActionTooltipDescription":"Item-module__g-action-tooltip__description___UsHcG","gn-composite-bar-item__icon-place":"Item-module__gn-composite-bar-item__icon-place___jPKRh","gnCompositeBarItemIconPlace":"Item-module__gn-composite-bar-item__icon-place___jPKRh","gn-composite-bar-item__title":"Item-module__gn-composite-bar-item__title___wj5L5","gnCompositeBarItemTitle":"Item-module__gn-composite-bar-item__title___wj5L5","gn-composite-bar-item__title-text":"Item-module__gn-composite-bar-item__title-text___cILJo","gnCompositeBarItemTitleText":"Item-module__gn-composite-bar-item__title-text___cILJo","gn-composite-bar-item__title-adornment":"Item-module__gn-composite-bar-item__title-adornment___Xcopn","gnCompositeBarItemTitleAdornment":"Item-module__gn-composite-bar-item__title-adornment___Xcopn","gn-composite-bar-item__collapse-item":"Item-module__gn-composite-bar-item__collapse-item___Up6IX","gnCompositeBarItemCollapseItem":"Item-module__gn-composite-bar-item__collapse-item___Up6IX","gn-composite-bar-item__collapse-item-icon":"Item-module__gn-composite-bar-item__collapse-item-icon___CD-ao","gnCompositeBarItemCollapseItemIcon":"Item-module__gn-composite-bar-item__collapse-item-icon___CD-ao","gn-composite-bar-item__menu-divider":"Item-module__gn-composite-bar-item__menu-divider___hkm-Z","gnCompositeBarItemMenuDivider":"Item-module__gn-composite-bar-item__menu-divider___hkm-Z","gn-composite-bar-item__collapse-items-popup-content":"Item-module__gn-composite-bar-item__collapse-items-popup-content___a82to","gnCompositeBarItemCollapseItemsPopupContent":"Item-module__gn-composite-bar-item__collapse-items-popup-content___a82to","gn-composite-bar-item__link":"Item-module__gn-composite-bar-item__link___McAVN","gnCompositeBarItemLink":"Item-module__gn-composite-bar-item__link___McAVN","gn-composite-bar-item__btn-icon":"Item-module__gn-composite-bar-item__btn-icon___SwT65","gnCompositeBarItemBtnIcon":"Item-module__gn-composite-bar-item__btn-icon___SwT65","gn-composite-bar-item_type_action":"Item-module__gn-composite-bar-item_type_action___2jxO8","gnCompositeBarItemTypeAction":"Item-module__gn-composite-bar-item_type_action___2jxO8","gn-composite-bar-item__icon-tooltip_item-type_action":"Item-module__gn-composite-bar-item__icon-tooltip_item-type_action___HUhUR","gnCompositeBarItemIconTooltipItemTypeAction":"Item-module__gn-composite-bar-item__icon-tooltip_item-type_action___HUhUR","gn-composite-bar-item__icon-popover":"Item-module__gn-composite-bar-item__icon-popover___euq-P","gnCompositeBarItemIconPopover":"Item-module__gn-composite-bar-item__icon-popover___euq-P","gn-composite-bar-item__icon-popover_item-type_action":"Item-module__gn-composite-bar-item__icon-popover_item-type_action___ep-D3","gnCompositeBarItemIconPopoverItemTypeAction":"Item-module__gn-composite-bar-item__icon-popover_item-type_action___ep-D3","gn-composite-bar-item__popup-content":"Item-module__gn-composite-bar-item__popup-content___oys3t","gnCompositeBarItemPopupContent":"Item-module__gn-composite-bar-item__popup-content___oys3t","gn-composite-bar-item__root-menu-item":"Item-module__gn-composite-bar-item__root-menu-item___nlpvH","gnCompositeBarItemRootMenuItem":"Item-module__gn-composite-bar-item__root-menu-item___nlpvH","gn-composite-bar-item__popup-title":"Item-module__gn-composite-bar-item__popup-title___2-tGd","gnCompositeBarItemPopupTitle":"Item-module__gn-composite-bar-item__popup-title___2-tGd","gn-composite-bar-item__popup-item":"Item-module__gn-composite-bar-item__popup-item___MPgm3","gnCompositeBarItemPopupItem":"Item-module__gn-composite-bar-item__popup-item___MPgm3","gn-composite-bar-item_hide-icon":"Item-module__gn-composite-bar-item_hide-icon___bf5h3","gnCompositeBarItemHideIcon":"Item-module__gn-composite-bar-item_hide-icon___bf5h3","gn-composite-bar-item_compact":"Item-module__gn-composite-bar-item_compact___PVTeM","gnCompositeBarItemCompact":"Item-module__gn-composite-bar-item_compact___PVTeM","gn-composite-bar-item__group-header-row":"Item-module__gn-composite-bar-item__group-header-row___m-4WB","gnCompositeBarItemGroupHeaderRow":"Item-module__gn-composite-bar-item__group-header-row___m-4WB","gn-composite-bar-item_with-chevron-control":"Item-module__gn-composite-bar-item_with-chevron-control___5F9O3","gnCompositeBarItemWithChevronControl":"Item-module__gn-composite-bar-item_with-chevron-control___5F9O3","gn-composite-bar-item__chevron":"Item-module__gn-composite-bar-item__chevron___ZZ-vf","gnCompositeBarItemChevron":"Item-module__gn-composite-bar-item__chevron___ZZ-vf","gn-composite-bar-item__chevron_interactive":"Item-module__gn-composite-bar-item__chevron_interactive___jmUhC","gnCompositeBarItemChevronInteractive":"Item-module__gn-composite-bar-item__chevron_interactive___jmUhC"};
|
|
6
6
|
|
|
7
7
|
exports.default = styles;
|
|
8
8
|
//# sourceMappingURL=Item.module.scss.js.map
|
|
@@ -25,6 +25,14 @@ export interface ItemInnerProps extends ItemProps {
|
|
|
25
25
|
stopClickPropagation?: boolean;
|
|
26
26
|
/** Direct AsideHeader `onItemClick` for rows rendered inside {@link ItemPopup}. */
|
|
27
27
|
onPopupItemClick?: AsideHeaderItem['onItemClick'];
|
|
28
|
+
/**
|
|
29
|
+
* Inline group header only: renders the chevron as a separate interactive control
|
|
30
|
+
* that fires this callback (expand/collapse) instead of the row click, so the row
|
|
31
|
+
* itself can carry the group's own main action.
|
|
32
|
+
*/
|
|
33
|
+
onGroupHeaderChevronClick?: (event: React.SyntheticEvent) => void;
|
|
34
|
+
/** When `true`, the chevron is not rendered in the compact (collapsed) sidebar. */
|
|
35
|
+
hideCompactChevron?: boolean;
|
|
28
36
|
/** Inline menu-group tree (L-connector) rendered inside the row, before the icon slot. */
|
|
29
37
|
menuGroupNestedTreeConnector?: React.ReactNode;
|
|
30
38
|
}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { AsideHeaderItem } from '../../types';
|
|
3
3
|
export interface FooterItemProps extends AsideHeaderItem {
|
|
4
|
+
/**
|
|
5
|
+
* When `true`, the item is rendered with the same geometry as regular menu
|
|
6
|
+
* items (40px row, 38px icon background) instead of the reduced footer size.
|
|
7
|
+
*/
|
|
8
|
+
regularSize?: boolean;
|
|
4
9
|
}
|
|
5
|
-
export declare function FooterItem(props: FooterItemProps): React.JSX.Element;
|
|
10
|
+
export declare function FooterItem({ regularSize, ...props }: FooterItemProps): React.JSX.Element;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import './FooterItem.css';
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
+
var tslib = require('tslib');
|
|
4
5
|
var React = require('react');
|
|
5
6
|
var constants = require('../../../constants.js');
|
|
6
7
|
var cn = require('../../../utils/cn.js');
|
|
@@ -9,8 +10,9 @@ var FooterItem_module = require('./FooterItem.module.scss.js');
|
|
|
9
10
|
|
|
10
11
|
const b = cn.createBlock('footer-item', FooterItem_module.default);
|
|
11
12
|
const bGlobal = cn.block('footer-item');
|
|
12
|
-
function FooterItem(
|
|
13
|
-
|
|
13
|
+
function FooterItem(_a) {
|
|
14
|
+
var { regularSize } = _a, props = tslib.__rest(_a, ["regularSize"]);
|
|
15
|
+
return (React.createElement(Item.Item, Object.assign({}, props, { iconSize: constants.ASIDE_HEADER_ICON_SIZE, className: `${b({ compact: props.compact })} ${bGlobal({ 'regular-size': regularSize })}` })));
|
|
14
16
|
}
|
|
15
17
|
|
|
16
18
|
exports.FooterItem = FooterItem;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FooterItem.js","sources":["../../../../../../../src/components/AsideHeader/components/FooterItem/FooterItem.tsx"],"sourcesContent":["import React from 'react';\n\nimport {ASIDE_HEADER_ICON_SIZE} from '../../../constants';\nimport {block, createBlock} from '../../../utils/cn';\nimport {AsideHeaderItem} from '../../types';\nimport {Item} from '../CompositeBar/Item/Item';\n\nimport styles from './FooterItem.module.scss';\n\nconst b = createBlock('footer-item', styles);\nconst bGlobal = block('footer-item');\n\nexport interface FooterItemProps extends AsideHeaderItem {}\n\nexport function FooterItem(props: FooterItemProps) {\n return (\n <Item\n {...props}\n iconSize={ASIDE_HEADER_ICON_SIZE}\n className={`${b({compact: props.compact})} ${bGlobal()}`}\n />\n );\n}\n"],"names":["createBlock","styles","block","Item","ASIDE_HEADER_ICON_SIZE"],"mappings":"
|
|
1
|
+
{"version":3,"file":"FooterItem.js","sources":["../../../../../../../src/components/AsideHeader/components/FooterItem/FooterItem.tsx"],"sourcesContent":["import React from 'react';\n\nimport {ASIDE_HEADER_ICON_SIZE} from '../../../constants';\nimport {block, createBlock} from '../../../utils/cn';\nimport {AsideHeaderItem} from '../../types';\nimport {Item} from '../CompositeBar/Item/Item';\n\nimport styles from './FooterItem.module.scss';\n\nconst b = createBlock('footer-item', styles);\nconst bGlobal = block('footer-item');\n\nexport interface FooterItemProps extends AsideHeaderItem {\n /**\n * When `true`, the item is rendered with the same geometry as regular menu\n * items (40px row, 38px icon background) instead of the reduced footer size.\n */\n regularSize?: boolean;\n}\n\nexport function FooterItem({regularSize, ...props}: FooterItemProps) {\n return (\n <Item\n {...props}\n iconSize={ASIDE_HEADER_ICON_SIZE}\n className={`${b({compact: props.compact})} ${bGlobal({'regular-size': regularSize})}`}\n />\n );\n}\n"],"names":["createBlock","styles","block","__rest","Item","ASIDE_HEADER_ICON_SIZE"],"mappings":";;;;;;;;;AASA,MAAM,CAAC,GAAGA,cAAW,CAAC,aAAa,EAAEC,yBAAM,CAAC;AAC5C,MAAM,OAAO,GAAGC,QAAK,CAAC,aAAa,CAAC;AAU9B,SAAU,UAAU,CAAC,EAAwC,EAAA;AAAxC,IAAA,IAAA,EAAC,WAAW,EAA4B,GAAA,EAAA,EAAvB,KAAK,GAAAC,YAAA,CAAA,EAAA,EAAtB,eAAuB,CAAD;AAC7C,IAAA,QACI,KAAA,CAAA,aAAA,CAACC,SAAI,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACG,KAAK,EACT,EAAA,QAAQ,EAAEC,gCAAsB,EAChC,SAAS,EAAE,CAAG,EAAA,CAAC,CAAC,EAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAC,CAAC,CAAA,CAAA,EAAI,OAAO,CAAC,EAAC,cAAc,EAAE,WAAW,EAAC,CAAC,CAAE,CAAA,EAAA,CAAA,CACvF;AAEV;;;;"}
|
|
@@ -59,6 +59,25 @@ export interface MenuGroup {
|
|
|
59
59
|
* Does not affect the group title displayed anywhere else.
|
|
60
60
|
*/
|
|
61
61
|
popupTitle?: string;
|
|
62
|
+
/**
|
|
63
|
+
* Optional main action for the group header, mirroring `MenuItem.onItemClick`
|
|
64
|
+
* (receives the synthetic group-header item). When the group has its own action
|
|
65
|
+
* (`onItemClick` and/or `href`), in the inline layout (`menuOverflow="scroll"`,
|
|
66
|
+
* expanded sidebar) clicking the header row triggers the action like a regular
|
|
67
|
+
* menu item, and only the chevron toggles expand/collapse. Such groups are also
|
|
68
|
+
* listed as a clickable row in the All pages panel (view mode).
|
|
69
|
+
*/
|
|
70
|
+
onItemClick?: MenuItem['onItemClick'];
|
|
71
|
+
/**
|
|
72
|
+
* Optional link for the group header; renders the header row as an anchor.
|
|
73
|
+
* Same click behavior split as `onItemClick`.
|
|
74
|
+
*/
|
|
75
|
+
href?: string;
|
|
76
|
+
/**
|
|
77
|
+
* When `true`, the small chevron is not rendered on the group anchor in the
|
|
78
|
+
* compact (collapsed) sidebar. The children popup keeps working as usual.
|
|
79
|
+
*/
|
|
80
|
+
hideCompactChevron?: boolean;
|
|
62
81
|
}
|
|
63
82
|
export interface LogoProps {
|
|
64
83
|
text: (() => React.ReactNode) | string;
|
|
@@ -240,13 +240,16 @@ Inline expand/collapse (**`collapsedMenuGroupIds`** / **`onToggleMenuGroupCollap
|
|
|
240
240
|
|
|
241
241
|
Shape for entries in `menuGroups`. When `menuGroups` is set, middle-section items can reference a group with [`AsideHeaderItem.groupId`](#asideheaderitem) equal to `MenuGroup.id`. The composite bar renders group headers and nesting; visibility and collapse behavior are controlled via `AsideHeader` props (see `menuOverflow`, `onMenuGroupsChanged`, `collapsedMenuGroupIds`, etc.).
|
|
242
242
|
|
|
243
|
-
| Name
|
|
244
|
-
|
|
|
245
|
-
| `id`
|
|
246
|
-
| `title`
|
|
247
|
-
| `icon`
|
|
248
|
-
| `hidden`
|
|
249
|
-
| `popupTitle`
|
|
243
|
+
| Name | Description |
|
|
244
|
+
| :------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
245
|
+
| `id` | Stable group identifier; must match `AsideHeaderItem.groupId` for items that belong to this group. |
|
|
246
|
+
| `title` | Group label shown on the inline group header in the expanded sidebar (and in flows that use this title). |
|
|
247
|
+
| `icon` | Optional [`Icon`](https://github.com/gravity-ui/uikit/tree/main/src/components/Icon) data for the group header. |
|
|
248
|
+
| `hidden` | When `true`, hides the group from the main navigation; items in that group are omitted there. The **All pages** panel can still surface the group row for visibility edits when callbacks like `onMenuGroupsChanged` are used. |
|
|
249
|
+
| `popupTitle` | Optional heading used **only** in the compact sidebar popup that lists a group’s children. Does not replace `title` for the inline group header or other surfaces. |
|
|
250
|
+
| `onItemClick` | Optional main action for the group header (same signature as `AsideHeaderItem.onItemClick`; receives the synthetic group-header item). When the group has its own action (`onItemClick` and/or `href`), in the inline layout (`menuOverflow="scroll"`, expanded sidebar) clicking the header row triggers the action like a regular menu item, and **only the chevron** toggles expand/collapse. Without an own action the whole header row toggles the group, as before. Such groups are also listed as a clickable row in the **All pages** panel (view mode). |
|
|
251
|
+
| `href` | Optional link for the group header; renders the header row as an anchor. Same click-behavior split as `onItemClick`. |
|
|
252
|
+
| `hideCompactChevron` | When `true`, the small chevron is not rendered on the group anchor in the compact (collapsed) sidebar. The children popup keeps working as usual. |
|
|
250
253
|
|
|
251
254
|
### `editMenuProps`
|
|
252
255
|
|
|
@@ -344,6 +347,7 @@ You can customize the inner content, make alert closeable if necessary. For read
|
|
|
344
347
|
| `--gn-aside-header-item-current-background-color-hover` | Current item's icon color on hover |
|
|
345
348
|
| `--gn-aside-header-item-collapsed-radius` | Item border radius for collapsed navigation |
|
|
346
349
|
| `--gn-aside-header-item-expanded-radius` | Item border radius for expanded navigation |
|
|
350
|
+
| `--gn-aside-header-item-chevron-padding-right` | Right padding of the chevron box in menu rows (group headers, flyouts) |
|
|
347
351
|
| z-indexes | |
|
|
348
352
|
| `--gn-aside-header-z-index` | Aside header z-index |
|
|
349
353
|
| `--gn-aside-header-panel-z-index` | Aside header panel (Drawer component) z-index |
|
|
@@ -11,6 +11,13 @@ export declare function getCompositeBarHeaderGroupId(itemId: string): string | u
|
|
|
11
11
|
export declare function rowsToAllPagesDisplayItems(rows: CompositeBarRow[], options?: {
|
|
12
12
|
enableGroupHeaderPins?: boolean;
|
|
13
13
|
}): AsideHeaderItem[];
|
|
14
|
+
/**
|
|
15
|
+
* View-mode list: original items plus a clickable header row for each group that has
|
|
16
|
+
* its own action (`MenuGroup.onItemClick` / `href`), inserted before the group's first
|
|
17
|
+
* item; actionable groups without items are appended at the end. Groups without an
|
|
18
|
+
* action are not represented by a row, as before.
|
|
19
|
+
*/
|
|
20
|
+
export declare function getAllPagesViewModeFlatItems(asideHeaderItems: AsideHeaderItem[], menuGroups: MenuGroup[] | undefined): AsideHeaderItem[];
|
|
14
21
|
/**
|
|
15
22
|
* Edit-mode list: top-level items + one row per menu group (header only), same order as CompositeBar.
|
|
16
23
|
*/
|
|
@@ -25,6 +25,36 @@ function rowsToAllPagesDisplayItems(rows, options) {
|
|
|
25
25
|
return Object.assign(Object.assign({}, header), { category: firstCategory !== null && firstCategory !== undefined ? firstCategory : row.group.title, hidden: Boolean(row.group.hidden), preventUserRemoving: !showPins });
|
|
26
26
|
});
|
|
27
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* View-mode list: original items plus a clickable header row for each group that has
|
|
30
|
+
* its own action (`MenuGroup.onItemClick` / `href`), inserted before the group's first
|
|
31
|
+
* item; actionable groups without items are appended at the end. Groups without an
|
|
32
|
+
* action are not represented by a row, as before.
|
|
33
|
+
*/
|
|
34
|
+
function getAllPagesViewModeFlatItems(asideHeaderItems, menuGroups) {
|
|
35
|
+
const clickableGroups = (menuGroups !== null && menuGroups !== undefined ? menuGroups : []).filter((group) => group.onItemClick || group.href);
|
|
36
|
+
if (clickableGroups.length === 0) {
|
|
37
|
+
return asideHeaderItems;
|
|
38
|
+
}
|
|
39
|
+
const clickableGroupsById = new Map(clickableGroups.map((group) => [group.id, group]));
|
|
40
|
+
const makeHeaderRow = (group, category) => (Object.assign(Object.assign({}, makeGroupHeaderAsideItem(group)), { category, hidden: Boolean(group.hidden), href: group.href, onItemClick: group.onItemClick }));
|
|
41
|
+
const insertedGroupIds = new Set();
|
|
42
|
+
const result = [];
|
|
43
|
+
for (const item of asideHeaderItems) {
|
|
44
|
+
const group = item.groupId ? clickableGroupsById.get(item.groupId) : undefined;
|
|
45
|
+
if (group && !insertedGroupIds.has(group.id)) {
|
|
46
|
+
insertedGroupIds.add(group.id);
|
|
47
|
+
result.push(makeHeaderRow(group, item.category));
|
|
48
|
+
}
|
|
49
|
+
result.push(item);
|
|
50
|
+
}
|
|
51
|
+
for (const group of clickableGroups) {
|
|
52
|
+
if (!insertedGroupIds.has(group.id)) {
|
|
53
|
+
result.push(makeHeaderRow(group));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
28
58
|
/**
|
|
29
59
|
* Edit-mode list: top-level items + one row per menu group (header only), same order as CompositeBar.
|
|
30
60
|
*/
|
|
@@ -46,5 +76,5 @@ function reorderMenuItemsByCompositeBarRows(withoutAllPagesNoDividers, menuGroup
|
|
|
46
76
|
return flattenCompositeBarRows(reordered);
|
|
47
77
|
}
|
|
48
78
|
|
|
49
|
-
export { ALL_PAGES_PANEL_ROW_BUILD_OPTIONS, getAllPagesEditModeFlatItems, getCompositeBarHeaderGroupId, reorderMenuItemsByCompositeBarRows, rowsToAllPagesDisplayItems };
|
|
79
|
+
export { ALL_PAGES_PANEL_ROW_BUILD_OPTIONS, getAllPagesEditModeFlatItems, getAllPagesViewModeFlatItems, getCompositeBarHeaderGroupId, reorderMenuItemsByCompositeBarRows, rowsToAllPagesDisplayItems };
|
|
50
80
|
//# sourceMappingURL=allPagesEditDisplay.js.map
|
package/build/esm/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"allPagesEditDisplay.js","sources":["../../../../../../../src/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.ts"],"sourcesContent":["import type {MenuGroup} from '../../../types';\nimport {AsideHeaderItem} from '../../types';\nimport {COMPOSITE_BAR_GROUP_HEADER_ID_PREFIX} from '../CompositeBar/constants';\nimport {\n type CompositeBarRow,\n buildCompositeBarRows,\n flattenCompositeBarRows,\n} from '../CompositeBar/grouping';\nimport {makeGroupHeaderAsideItem} from '../CompositeBar/utils';\n\n/** Options passed to {@link buildCompositeBarRows} for All pages panel (edit-mode rows). */\nexport const ALL_PAGES_PANEL_ROW_BUILD_OPTIONS = {\n includeHidden: true,\n includeHiddenGroups: true,\n} as const;\n\nexport function isCompositeBarGroupHeaderItem(item: AsideHeaderItem): boolean {\n return item.id.startsWith(COMPOSITE_BAR_GROUP_HEADER_ID_PREFIX);\n}\n\nexport function getCompositeBarHeaderGroupId(itemId: string): string | undefined {\n if (!itemId.startsWith(COMPOSITE_BAR_GROUP_HEADER_ID_PREFIX)) {\n return undefined;\n }\n return itemId.slice(COMPOSITE_BAR_GROUP_HEADER_ID_PREFIX.length);\n}\n\nexport function rowsToAllPagesDisplayItems(\n rows: CompositeBarRow[],\n options?: {enableGroupHeaderPins?: boolean},\n): AsideHeaderItem[] {\n const showPins = Boolean(options?.enableGroupHeaderPins);\n return rows.map((row) => {\n if (row.kind === 'item') {\n return row.item;\n }\n const header = makeGroupHeaderAsideItem(row.group);\n const firstCategory = row.items[0]?.category;\n return {\n ...header,\n category: firstCategory ?? row.group.title,\n hidden: Boolean(row.group.hidden),\n preventUserRemoving: !showPins,\n };\n });\n}\n\n/**\n * Edit-mode list: top-level items + one row per menu group (header only), same order as CompositeBar.\n */\nexport function getAllPagesEditModeFlatItems(\n asideHeaderItems: AsideHeaderItem[],\n menuGroups: MenuGroup[] | undefined,\n options?: {enableGroupHeaderPins?: boolean},\n): AsideHeaderItem[] {\n if (!menuGroups?.length) {\n return asideHeaderItems.filter((item) => !item.groupId);\n }\n const rows = buildCompositeBarRows(\n asideHeaderItems,\n menuGroups,\n ALL_PAGES_PANEL_ROW_BUILD_OPTIONS,\n );\n return rowsToAllPagesDisplayItems(rows, options);\n}\n\nexport function reorderMenuItemsByCompositeBarRows(\n withoutAllPagesNoDividers: AsideHeaderItem[],\n menuGroups: MenuGroup[],\n oldIndex: number,\n newIndex: number,\n): AsideHeaderItem[] {\n const rows = buildCompositeBarRows(\n withoutAllPagesNoDividers,\n menuGroups,\n ALL_PAGES_PANEL_ROW_BUILD_OPTIONS,\n );\n const reordered = [...rows];\n const [moved] = reordered.splice(oldIndex, 1);\n\n if (moved === undefined) {\n return flattenCompositeBarRows(rows);\n }\n\n reordered.splice(newIndex, 0, moved);\n\n return flattenCompositeBarRows(reordered);\n}\n"],"names":[],"mappings":";;;;AAUA;AACa,MAAA,iCAAiC,GAAG;AAC7C,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,mBAAmB,EAAE,IAAI;;AAOvB,SAAU,4BAA4B,CAAC,MAAc,EAAA;IACvD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,oCAAoC,CAAC,EAAE;AAC1D,QAAA,OAAO,SAAS;;IAEpB,OAAO,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,MAAM,CAAC;AACpE;AAEgB,SAAA,0BAA0B,CACtC,IAAuB,EACvB,OAA2C,EAAA;AAE3C,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,SAAA,GAAA,SAAA,GAAP,OAAO,CAAE,qBAAqB,CAAC;AACxD,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;;AACpB,QAAA,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE;YACrB,OAAO,GAAG,CAAC,IAAI;;QAEnB,MAAM,MAAM,GAAG,wBAAwB,CAAC,GAAG,CAAC,KAAK,CAAC;QAClD,MAAM,aAAa,GAAG,CAAA,EAAA,GAAA,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,SAAA,GAAA,SAAA,GAAA,EAAA,CAAA,QAAQ;AAC5C,QAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACO,MAAM,CAAA,EAAA,EACT,QAAQ,EAAE,aAAa,KAAA,IAAA,IAAb,aAAa,KAAA,SAAA,GAAb,aAAa,GAAI,GAAG,CAAC,KAAK,CAAC,KAAK,EAC1C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EACjC,mBAAmB,EAAE,CAAC,QAAQ,EAChC,CAAA;AACN,KAAC,CAAC;AACN;AAEA;;AAEG;SACa,4BAA4B,CACxC,gBAAmC,EACnC,UAAmC,EACnC,OAA2C,EAAA;IAE3C,IAAI,EAAC,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,SAAA,GAAA,SAAA,GAAA,UAAU,CAAE,MAAM,CAAA,EAAE;AACrB,QAAA,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;;IAE3D,MAAM,IAAI,GAAG,qBAAqB,CAC9B,gBAAgB,EAChB,UAAU,EACV,iCAAiC,CACpC;AACD,IAAA,OAAO,0BAA0B,CAAC,IAAI,EAAE,OAAO,CAAC;AACpD;AAEM,SAAU,kCAAkC,CAC9C,yBAA4C,EAC5C,UAAuB,EACvB,QAAgB,EAChB,QAAgB,EAAA;IAEhB,MAAM,IAAI,GAAG,qBAAqB,CAC9B,yBAAyB,EACzB,UAAU,EACV,iCAAiC,CACpC;AACD,IAAA,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC;AAC3B,IAAA,MAAM,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AAE7C,IAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACrB,QAAA,OAAO,uBAAuB,CAAC,IAAI,CAAC;;IAGxC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC;AAEpC,IAAA,OAAO,uBAAuB,CAAC,SAAS,CAAC;AAC7C;;;;"}
|
|
1
|
+
{"version":3,"file":"allPagesEditDisplay.js","sources":["../../../../../../../src/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.ts"],"sourcesContent":["import type {MenuGroup} from '../../../types';\nimport {AsideHeaderItem} from '../../types';\nimport {COMPOSITE_BAR_GROUP_HEADER_ID_PREFIX} from '../CompositeBar/constants';\nimport {\n type CompositeBarRow,\n buildCompositeBarRows,\n flattenCompositeBarRows,\n} from '../CompositeBar/grouping';\nimport {makeGroupHeaderAsideItem} from '../CompositeBar/utils';\n\n/** Options passed to {@link buildCompositeBarRows} for All pages panel (edit-mode rows). */\nexport const ALL_PAGES_PANEL_ROW_BUILD_OPTIONS = {\n includeHidden: true,\n includeHiddenGroups: true,\n} as const;\n\nexport function isCompositeBarGroupHeaderItem(item: AsideHeaderItem): boolean {\n return item.id.startsWith(COMPOSITE_BAR_GROUP_HEADER_ID_PREFIX);\n}\n\nexport function getCompositeBarHeaderGroupId(itemId: string): string | undefined {\n if (!itemId.startsWith(COMPOSITE_BAR_GROUP_HEADER_ID_PREFIX)) {\n return undefined;\n }\n return itemId.slice(COMPOSITE_BAR_GROUP_HEADER_ID_PREFIX.length);\n}\n\nexport function rowsToAllPagesDisplayItems(\n rows: CompositeBarRow[],\n options?: {enableGroupHeaderPins?: boolean},\n): AsideHeaderItem[] {\n const showPins = Boolean(options?.enableGroupHeaderPins);\n return rows.map((row) => {\n if (row.kind === 'item') {\n return row.item;\n }\n const header = makeGroupHeaderAsideItem(row.group);\n const firstCategory = row.items[0]?.category;\n return {\n ...header,\n category: firstCategory ?? row.group.title,\n hidden: Boolean(row.group.hidden),\n preventUserRemoving: !showPins,\n };\n });\n}\n\n/**\n * View-mode list: original items plus a clickable header row for each group that has\n * its own action (`MenuGroup.onItemClick` / `href`), inserted before the group's first\n * item; actionable groups without items are appended at the end. Groups without an\n * action are not represented by a row, as before.\n */\nexport function getAllPagesViewModeFlatItems(\n asideHeaderItems: AsideHeaderItem[],\n menuGroups: MenuGroup[] | undefined,\n): AsideHeaderItem[] {\n const clickableGroups = (menuGroups ?? []).filter((group) => group.onItemClick || group.href);\n\n if (clickableGroups.length === 0) {\n return asideHeaderItems;\n }\n\n const clickableGroupsById = new Map(clickableGroups.map((group) => [group.id, group]));\n\n const makeHeaderRow = (group: MenuGroup, category?: string): AsideHeaderItem => ({\n ...makeGroupHeaderAsideItem(group),\n category,\n hidden: Boolean(group.hidden),\n href: group.href,\n onItemClick: group.onItemClick,\n });\n\n const insertedGroupIds = new Set<string>();\n const result: AsideHeaderItem[] = [];\n\n for (const item of asideHeaderItems) {\n const group = item.groupId ? clickableGroupsById.get(item.groupId) : undefined;\n\n if (group && !insertedGroupIds.has(group.id)) {\n insertedGroupIds.add(group.id);\n result.push(makeHeaderRow(group, item.category));\n }\n\n result.push(item);\n }\n\n for (const group of clickableGroups) {\n if (!insertedGroupIds.has(group.id)) {\n result.push(makeHeaderRow(group));\n }\n }\n\n return result;\n}\n\n/**\n * Edit-mode list: top-level items + one row per menu group (header only), same order as CompositeBar.\n */\nexport function getAllPagesEditModeFlatItems(\n asideHeaderItems: AsideHeaderItem[],\n menuGroups: MenuGroup[] | undefined,\n options?: {enableGroupHeaderPins?: boolean},\n): AsideHeaderItem[] {\n if (!menuGroups?.length) {\n return asideHeaderItems.filter((item) => !item.groupId);\n }\n const rows = buildCompositeBarRows(\n asideHeaderItems,\n menuGroups,\n ALL_PAGES_PANEL_ROW_BUILD_OPTIONS,\n );\n return rowsToAllPagesDisplayItems(rows, options);\n}\n\nexport function reorderMenuItemsByCompositeBarRows(\n withoutAllPagesNoDividers: AsideHeaderItem[],\n menuGroups: MenuGroup[],\n oldIndex: number,\n newIndex: number,\n): AsideHeaderItem[] {\n const rows = buildCompositeBarRows(\n withoutAllPagesNoDividers,\n menuGroups,\n ALL_PAGES_PANEL_ROW_BUILD_OPTIONS,\n );\n const reordered = [...rows];\n const [moved] = reordered.splice(oldIndex, 1);\n\n if (moved === undefined) {\n return flattenCompositeBarRows(rows);\n }\n\n reordered.splice(newIndex, 0, moved);\n\n return flattenCompositeBarRows(reordered);\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var ru = {
|
|
2
2
|
"menu-item.all-pages.title": "Все страницы",
|
|
3
3
|
"all-panel.menu.category.allOther": "Остальное",
|
|
4
|
-
"all-panel.resetToDefault": "
|
|
4
|
+
"all-panel.resetToDefault": "По умолчанию",
|
|
5
5
|
"all-panel.title.editing": "Настройка панели меню",
|
|
6
6
|
"all-panel.title.main": "Все страницы",
|
|
7
7
|
"all-panel.item.pin": "Закрепить",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useMemo } from 'react';
|
|
2
2
|
import { ALL_PAGES_ID } from '../../types.js';
|
|
3
|
-
import { getAllPagesEditModeFlatItems } from './allPagesEditDisplay.js';
|
|
3
|
+
import { getAllPagesViewModeFlatItems, getAllPagesEditModeFlatItems } from './allPagesEditDisplay.js';
|
|
4
4
|
import i18n from './i18n/index.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -17,7 +17,7 @@ const useGroupedMenuItems = (asideHeaderItems, editMode, menuGroups, onMenuGroup
|
|
|
17
17
|
const groupHeaderPins = Boolean(onMenuGroupsChanged);
|
|
18
18
|
let flatForGrouping;
|
|
19
19
|
if (!editMode) {
|
|
20
|
-
flatForGrouping = base;
|
|
20
|
+
flatForGrouping = getAllPagesViewModeFlatItems(base, menuGroups);
|
|
21
21
|
}
|
|
22
22
|
else if (menuGroups === null || menuGroups === undefined ? undefined : menuGroups.length) {
|
|
23
23
|
flatForGrouping = getAllPagesEditModeFlatItems(base, menuGroups, {
|
package/build/esm/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGroupedMenuItems.js","sources":["../../../../../../../src/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.ts"],"sourcesContent":["import {useMemo} from 'react';\n\nimport type {MenuGroup} from '../../../types';\nimport {ALL_PAGES_ID, AsideHeaderItem} from '../../types';\n\nimport {getAllPagesEditModeFlatItems} from './allPagesEditDisplay';\nimport i18n from './i18n';\n\n/**\n * Group menu items by category for the All pages panel.\n *\n * @param asideHeaderItems — items from context (includes synthetic All pages row).\n * @param editMode — when true, applies edit-mode row selection (headers when `menuGroups` is set).\n * @param menuGroups — when provided with edit mode, inserts one CompositeBar-style header per group.\n * @returns Items grouped by `category` key for rendering sections.\n */\nexport const useGroupedMenuItems = (\n asideHeaderItems: AsideHeaderItem[],\n editMode?: boolean,\n menuGroups?: MenuGroup[],\n onMenuGroupsChanged?: (menuGroups: MenuGroup[]) => void,\n) => {\n const allPagesMenuItems = useMemo(() => {\n const base = asideHeaderItems.filter(\n ({id, type}) => type !== 'divider' && id !== ALL_PAGES_ID,\n );\n\n const groupHeaderPins = Boolean(onMenuGroupsChanged);\n\n let flatForGrouping: AsideHeaderItem[];\n\n if (!editMode) {\n flatForGrouping = base;\n } else if (menuGroups?.length) {\n flatForGrouping = getAllPagesEditModeFlatItems(base, menuGroups, {\n enableGroupHeaderPins: groupHeaderPins,\n });\n } else {\n flatForGrouping = base.filter((item) => !item.groupId);\n }\n\n flatForGrouping.sort(({type: typeA}, {type: typeB}) => {\n if (typeA === 'action') {\n return 1;\n }\n if (typeB === 'action') {\n return -1;\n }\n return 0;\n });\n const groupedItems = flatForGrouping.reduce(\n (acc, asideHeaderItem) => {\n const category =\n asideHeaderItem.category || i18n('all-panel.menu.category.allOther');\n if (!acc[category]) {\n acc[category] = [];\n }\n acc[category].push(asideHeaderItem);\n return acc;\n },\n {} as {[key: string]: AsideHeaderItem[]},\n );\n return groupedItems;\n }, [asideHeaderItems, editMode, menuGroups, onMenuGroupsChanged]);\n\n return allPagesMenuItems;\n};\n"],"names":[],"mappings":";;;;;AAQA;;;;;;;AAOG;AACI,MAAM,mBAAmB,GAAG,CAC/B,gBAAmC,EACnC,QAAkB,EAClB,UAAwB,EACxB,mBAAuD,KACvD;AACA,IAAA,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAK;QACnC,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAChC,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,KAAK,IAAI,KAAK,SAAS,IAAI,EAAE,KAAK,YAAY,CAC5D;AAED,QAAA,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC;AAEpD,QAAA,IAAI,eAAkC;QAEtC,IAAI,CAAC,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"useGroupedMenuItems.js","sources":["../../../../../../../src/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.ts"],"sourcesContent":["import {useMemo} from 'react';\n\nimport type {MenuGroup} from '../../../types';\nimport {ALL_PAGES_ID, AsideHeaderItem} from '../../types';\n\nimport {getAllPagesEditModeFlatItems, getAllPagesViewModeFlatItems} from './allPagesEditDisplay';\nimport i18n from './i18n';\n\n/**\n * Group menu items by category for the All pages panel.\n *\n * @param asideHeaderItems — items from context (includes synthetic All pages row).\n * @param editMode — when true, applies edit-mode row selection (headers when `menuGroups` is set).\n * @param menuGroups — when provided with edit mode, inserts one CompositeBar-style header per group.\n * @returns Items grouped by `category` key for rendering sections.\n */\nexport const useGroupedMenuItems = (\n asideHeaderItems: AsideHeaderItem[],\n editMode?: boolean,\n menuGroups?: MenuGroup[],\n onMenuGroupsChanged?: (menuGroups: MenuGroup[]) => void,\n) => {\n const allPagesMenuItems = useMemo(() => {\n const base = asideHeaderItems.filter(\n ({id, type}) => type !== 'divider' && id !== ALL_PAGES_ID,\n );\n\n const groupHeaderPins = Boolean(onMenuGroupsChanged);\n\n let flatForGrouping: AsideHeaderItem[];\n\n if (!editMode) {\n flatForGrouping = getAllPagesViewModeFlatItems(base, menuGroups);\n } else if (menuGroups?.length) {\n flatForGrouping = getAllPagesEditModeFlatItems(base, menuGroups, {\n enableGroupHeaderPins: groupHeaderPins,\n });\n } else {\n flatForGrouping = base.filter((item) => !item.groupId);\n }\n\n flatForGrouping.sort(({type: typeA}, {type: typeB}) => {\n if (typeA === 'action') {\n return 1;\n }\n if (typeB === 'action') {\n return -1;\n }\n return 0;\n });\n const groupedItems = flatForGrouping.reduce(\n (acc, asideHeaderItem) => {\n const category =\n asideHeaderItem.category || i18n('all-panel.menu.category.allOther');\n if (!acc[category]) {\n acc[category] = [];\n }\n acc[category].push(asideHeaderItem);\n return acc;\n },\n {} as {[key: string]: AsideHeaderItem[]},\n );\n return groupedItems;\n }, [asideHeaderItems, editMode, menuGroups, onMenuGroupsChanged]);\n\n return allPagesMenuItems;\n};\n"],"names":[],"mappings":";;;;;AAQA;;;;;;;AAOG;AACI,MAAM,mBAAmB,GAAG,CAC/B,gBAAmC,EACnC,QAAkB,EAClB,UAAwB,EACxB,mBAAuD,KACvD;AACA,IAAA,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAK;QACnC,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAChC,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,KAAK,IAAI,KAAK,SAAS,IAAI,EAAE,KAAK,YAAY,CAC5D;AAED,QAAA,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC;AAEpD,QAAA,IAAI,eAAkC;QAEtC,IAAI,CAAC,QAAQ,EAAE;AACX,YAAA,eAAe,GAAG,4BAA4B,CAAC,IAAI,EAAE,UAAU,CAAC;;aAC7D,IAAI,UAAU,aAAV,UAAU,KAAA,SAAA,GAAA,SAAA,GAAV,UAAU,CAAE,MAAM,EAAE;AAC3B,YAAA,eAAe,GAAG,4BAA4B,CAAC,IAAI,EAAE,UAAU,EAAE;AAC7D,gBAAA,qBAAqB,EAAE,eAAe;AACzC,aAAA,CAAC;;aACC;AACH,YAAA,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;;AAG1D,QAAA,eAAe,CAAC,IAAI,CAAC,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,KAAI;AAClD,YAAA,IAAI,KAAK,KAAK,QAAQ,EAAE;AACpB,gBAAA,OAAO,CAAC;;AAEZ,YAAA,IAAI,KAAK,KAAK,QAAQ,EAAE;gBACpB,OAAO,EAAE;;AAEb,YAAA,OAAO,CAAC;AACZ,SAAC,CAAC;QACF,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CACvC,CAAC,GAAG,EAAE,eAAe,KAAI;YACrB,MAAM,QAAQ,GACV,eAAe,CAAC,QAAQ,IAAI,IAAI,CAAC,kCAAkC,CAAC;AACxE,YAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAChB,gBAAA,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;;YAEtB,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;AACnC,YAAA,OAAO,GAAG;SACb,EACD,EAAwC,CAC3C;AACD,QAAA,OAAO,YAAY;KACtB,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC;AAEjE,IAAA,OAAO,iBAAiB;AAC5B;;;;"}
|
|
@@ -32,7 +32,6 @@ const CompositeBarView = ({ type, rows, onItemClick, onMoreClick, collapseItems,
|
|
|
32
32
|
onItemClick === null || onItemClick === undefined ? undefined : onItemClick(Object.assign(Object.assign({}, item), { onItemClick: orginalItemClick }), collapsed, event);
|
|
33
33
|
}
|
|
34
34
|
}, [onItemClick, onMoreClick]);
|
|
35
|
-
const onSyntheticHeaderItemClick = useMemo(() => onItemClickByIndex(undefined), [onItemClickByIndex]);
|
|
36
35
|
const itemHeight = useCallback((row) => {
|
|
37
36
|
if (row.kind === 'item') {
|
|
38
37
|
return getItemHeight(row.item);
|
|
@@ -60,17 +59,23 @@ const CompositeBarView = ({ type, rows, onItemClick, onMoreClick, collapseItems,
|
|
|
60
59
|
}
|
|
61
60
|
const headerItem = makeGroupHeaderAsideItem(row.group);
|
|
62
61
|
const groupIsCollapsed = isGroupCollapsed(row.group.id);
|
|
62
|
+
const groupHasOwnAction = Boolean(row.group.onItemClick || row.group.href);
|
|
63
|
+
const onHeaderItemClick = onItemClickByIndex(row.group.onItemClick);
|
|
63
64
|
if (!inlineGroupChildren) {
|
|
64
|
-
return (React__default.createElement(Item, Object.assign({}, headerItem, { compact: compact, popupItemClassName: menuItemClassName, menuPopupItems: row.items, menuPopupTitle: row.group.popupTitle, className: b('menu-group-header'), onMouseLeave: onMouseLeave, onPopupItemClick: onPopupItemClick, onItemClick:
|
|
65
|
+
return (React__default.createElement(Item, Object.assign({}, headerItem, { href: row.group.href, compact: compact, popupItemClassName: menuItemClassName, menuPopupItems: row.items, menuPopupTitle: row.group.popupTitle, className: b('menu-group-header'), hideCompactChevron: row.group.hideCompactChevron, onMouseLeave: onMouseLeave, onPopupItemClick: onPopupItemClick, onItemClick: onHeaderItemClick })));
|
|
65
66
|
}
|
|
66
67
|
const selectedItemIndex = getSelectedItemIndex(row.items);
|
|
67
68
|
return (React__default.createElement("div", { className: b('menu-group', {
|
|
68
69
|
expanded: !groupIsCollapsed,
|
|
69
70
|
collapsed: groupIsCollapsed,
|
|
70
71
|
}) },
|
|
71
|
-
React__default.createElement(Item, Object.assign({}, headerItem, { compact: compact, popupItemClassName: menuItemClassName, className: b('menu-group-header'), groupHeaderExpanded: !groupIsCollapsed, onMouseLeave: onMouseLeave,
|
|
72
|
-
onToggleGroupCollapsed(row.group.id)
|
|
73
|
-
|
|
72
|
+
React__default.createElement(Item, Object.assign({}, headerItem, { href: row.group.href, compact: compact, popupItemClassName: menuItemClassName, className: b('menu-group-header'), groupHeaderExpanded: !groupIsCollapsed, onMouseLeave: onMouseLeave, onGroupHeaderChevronClick: groupHasOwnAction
|
|
73
|
+
? () => onToggleGroupCollapsed(row.group.id)
|
|
74
|
+
: undefined, onItemClick: (item, isItemCollapsed, event) => {
|
|
75
|
+
if (!groupHasOwnAction) {
|
|
76
|
+
onToggleGroupCollapsed(row.group.id);
|
|
77
|
+
}
|
|
78
|
+
onHeaderItemClick(item, isItemCollapsed, event);
|
|
74
79
|
} })),
|
|
75
80
|
!groupIsCollapsed && (React__default.createElement(List, { items: row.items, selectedItemIndex: selectedItemIndex, itemHeight: getItemHeight, itemsHeight: getItemsHeight, itemClassName: b('menu-group-nested-list-item'), virtualized: false, filterable: false, sortable: false, renderItem: (nestedItem, _isActive, groupItemIndex) => {
|
|
76
81
|
const spineActive = selectedItemIndex !== undefined &&
|