@servicetitan/navigation 14.0.0-canary.314.fc1b341.0 → 14.0.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.
|
@@ -175,6 +175,7 @@ LayoutSidebar.displayName = 'LayoutSidebar';
|
|
|
175
175
|
/*#__PURE__*/ _jsx(Popover.Content, {
|
|
176
176
|
style: popoverContent,
|
|
177
177
|
className: classNames('z-global-nav-i', Styles.submenuPopoverContent),
|
|
178
|
+
"data-cy": "navigation-item-popover-content",
|
|
178
179
|
children: /*#__PURE__*/ _jsxs("div", {
|
|
179
180
|
className: Styles.submenuPopover,
|
|
180
181
|
children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/titan-layout/layout-sidebar.tsx"],"sourcesContent":["import { Divider, Icon, Popover, Text, ThemeProvider } from '@servicetitan/anvil2';\nimport SvgClose from '@servicetitan/anvil2/assets/icons/material/round/close.svg';\nimport SvgCollapse from '@servicetitan/anvil2/assets/icons/st/gnav_menu_collapse.svg';\nimport SvgExpand from '@servicetitan/anvil2/assets/icons/st/gnav_menu_expand.svg';\nimport classNames from 'classnames';\nimport { Children, FC, Fragment, ReactElement, isValidElement } from 'react';\nimport { NavigationItemData, NavigationSubmenuData } from '../../utils/navigation';\nimport { NavLinkComponentProps } from '../../utils/navigation-context';\nimport { getCounterTag, getSubmenuGroupTag } from '../../utils/side-nav';\nimport { NavigationComponentProps } from './interface-internal';\nimport { LayoutPlacementContext, useTitanLayoutContext } from './layout-context';\nimport {\n InternalSideNavigationGroup,\n InternalSideNavigationGroupLink,\n InternalSideNavigationLink,\n} from './layout-sidebar-links-internal';\nimport * as Styles from './layout-sidebar.module.less';\nimport { withTooltip } from './with-tooltip';\n\nexport interface LayoutSidebarProps {\n className?: string;\n top?: ReactElement[];\n bottom?: ReactElement;\n mainItems?: NavigationItemData[];\n barExpanded: boolean;\n submenusOpened: string[] | undefined;\n drawerOpened: boolean;\n mobile: boolean;\n touchDevice: boolean;\n navigationComponent: FC<NavLinkComponentProps>;\n onBarExpandChange(expanded: boolean): void;\n onDrawerOpenChange(expanded: boolean): void;\n onSubmenuOpenChange(id: string, opened: boolean): void;\n onNavigationLinkClick?(itemId: string, submenuItemId?: string): void;\n}\n\nexport const LayoutSidebar: FC<LayoutSidebarProps> = ({\n className,\n mobile,\n touchDevice,\n barExpanded,\n submenusOpened,\n drawerOpened,\n onBarExpandChange,\n onSubmenuOpenChange,\n onDrawerOpenChange,\n onNavigationLinkClick,\n mainItems,\n top,\n bottom,\n navigationComponent,\n}) => {\n const closeDrawer = () => {\n if (mobile) {\n onDrawerOpenChange?.(false);\n }\n };\n\n return (\n <LayoutPlacementContext.Provider value=\"side\">\n {mobile && drawerOpened && (\n <div className={Styles.navDrawerBackdrop} onClick={closeDrawer} />\n )}\n <div\n className={classNames(\n Styles.nav,\n mobile && Styles.navDrawer,\n mobile && drawerOpened && Styles.navDrawerOpened,\n !mobile && (barExpanded ? Styles.navWide : Styles.navSlim),\n className\n )}\n data-cy=\"side-navigation\"\n onClick={closeDrawer}\n >\n <ThemeProvider mode=\"dark\" className={Styles.navMain}>\n {mobile && (\n <div className={Styles.navCloseWrapper}>\n <div\n className={Styles.navClose}\n onClick={() => onBarExpandChange(false)}\n >\n <Icon svg={SvgClose} size=\"large\" />\n </div>\n </div>\n )}\n {!!top?.length && <SidebarTop>{top}</SidebarTop>}\n\n <div data-cy=\"navigation-items\">\n {mainItems?.map(item =>\n item.submenu ? (\n <SideNavigationGroupItem\n key={item.id}\n item={item}\n barExpanded={mobile ? drawerOpened : barExpanded}\n submenuOpened={!!item.id && !!submenusOpened?.includes(item.id)}\n onSubmenuOpen={onSubmenuOpenChange}\n navigationComponent={navigationComponent}\n onNavigationLinkClick={onNavigationLinkClick}\n touchDevice={touchDevice}\n />\n ) : (\n <InternalSideNavigationLink\n key={item.id}\n id={item.id}\n to={item.to}\n title={item.title}\n isActive={item.isActive}\n icon={item.icon}\n iconActive={item.iconActive}\n className={item.className}\n tag={getSubmenuGroupTag(\n item.submenu,\n getCounterTag(item.counter, item.tag)\n )}\n navigationComponent={navigationComponent}\n />\n )\n )}\n </div>\n\n {!!bottom && <SidebarBottom>{bottom}</SidebarBottom>}\n </ThemeProvider>\n\n {!mobile && (\n <div className={Styles.navFooter}>\n <div className={Styles.divider} />\n <div className={Styles.toggleWrapper}>\n <SideNavigationOptionsToggle\n appearance={barExpanded ? 'collapse-button' : 'expand'}\n onExpandedChange={() => onBarExpandChange(!barExpanded)}\n />\n </div>\n </div>\n )}\n </div>\n </LayoutPlacementContext.Provider>\n );\n};\nLayoutSidebar.displayName = 'LayoutSidebar';\n\n/** Side Navigation options toggle */\nconst SideNavigationOptionsToggle: FC<{\n appearance: 'expand' | 'collapse' | 'collapse-button';\n onExpandedChange?(expanded: boolean): void;\n}> = ({ appearance, onExpandedChange }) =>\n withTooltip(\n <div\n role=\"button\"\n tabIndex={0}\n data-cy=\"navigation-left-options\"\n data-pendo=\"navigation-left-options\"\n aria-label={appearance === 'expand' ? 'Expand Menu' : 'Collapse Menu'}\n className={classNames(Styles.toggle)}\n onClick={() => onExpandedChange?.(appearance === 'expand')}\n onKeyDown={e => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onExpandedChange?.(appearance === 'expand');\n }\n }}\n >\n <div className={Styles.toggleContent}>\n <div className={Styles.toggleIconWrapper}>\n <Icon\n className={Styles.toggleIcon}\n svg={appearance === 'expand' ? SvgExpand : SvgCollapse}\n />\n </div>\n\n {appearance === 'collapse-button' && (\n <span className={Styles.toggleText}>Collapse Menu</span>\n )}\n </div>\n </div>,\n appearance === 'expand'\n ? 'Expand Menu'\n : appearance === 'collapse'\n ? 'Collapse Menu'\n : undefined,\n { placement: 'right' }\n );\n\n/** Side Navigation menu item */\nconst SideNavigationGroupItem: FC<{\n item: NavigationItemData;\n navigationComponent: FC<NavLinkComponentProps>;\n touchDevice: boolean;\n barExpanded: boolean;\n submenuOpened: boolean;\n onSubmenuOpen: (id: string, opened: boolean) => void;\n onNavigationLinkClick?: (itemId: string, submenuItemId?: string) => void;\n}> = ({\n item,\n onSubmenuOpen,\n onNavigationLinkClick,\n barExpanded,\n submenuOpened,\n navigationComponent,\n touchDevice,\n}) => {\n const {\n sidebar: {\n styles: { popoverContent },\n },\n } = useTitanLayoutContext();\n\n const tag = getSubmenuGroupTag(item.submenu, getCounterTag(item.counter, item.tag));\n\n return barExpanded ? (\n <InternalSideNavigationGroup\n id={item.id}\n to={item.to}\n title={item.title}\n isActive={item.isActive}\n icon={item.icon}\n iconActive={item.iconActive}\n className={item.className}\n tag={tag}\n submenuOpened={submenuOpened}\n onSubmenuOpen={onSubmenuOpen}\n navigationComponent={navigationComponent}\n >\n <SideNavigationGroupContent\n parentId={item.id}\n groups={item.submenu?.groups ?? []}\n navigationComponent={navigationComponent}\n onNavigationLinkClick={onNavigationLinkClick}\n />\n </InternalSideNavigationGroup>\n ) : (\n <Popover placement=\"right-start\" openOnHover={!touchDevice} delay={200} noPadding>\n <Popover.Trigger>\n {(triggerProps: any) => (\n <div {...triggerProps}>\n <InternalSideNavigationLink\n id={item.id}\n to={item.to}\n title={item.title}\n isActive={item.isActive}\n icon={item.icon}\n iconActive={item.iconActive}\n className={classNames(\n item.className,\n touchDevice && Styles.pointerEventsNone\n )}\n tag={tag}\n navigationComponent={navigationComponent}\n />\n </div>\n )}\n </Popover.Trigger>\n <Popover.Content\n style={popoverContent}\n className={classNames('z-global-nav-i', Styles.submenuPopoverContent)}\n >\n <div className={Styles.submenuPopover}>\n <Text\n variant=\"headline\"\n el=\"h4\"\n size=\"small\"\n className={Styles.submenuPopoverTitle}\n >\n {item.title}\n </Text>\n <Divider className={Styles.submenuPopoverDivider} />\n <div className={Styles.submenuPopoverBody}>\n <SideNavigationGroupContent\n parentId={item.id}\n groups={item.submenu?.groups ?? []}\n navigationComponent={navigationComponent}\n />\n </div>\n </div>\n </Popover.Content>\n </Popover>\n );\n};\nconst SideNavigationGroupContent: FC<\n NavigationSubmenuData &\n NavigationComponentProps & {\n parentId: string;\n onNavigationLinkClick?: (itemId: string, submenuItemId?: string) => void;\n }\n> = ({ groups, parentId, navigationComponent, onNavigationLinkClick }) => {\n return (\n <Fragment>\n {groups.reduce((out, group, index) => {\n if (!group.links.length) {\n return out;\n }\n\n const title = group.title?.trim() ?? '';\n /* eslint-disable react/no-array-index-key */\n if (title) {\n out.push(\n <div\n key={`:group:${parentId}:${index}:title`}\n className={Styles.submenuGroupHeader}\n >\n {title}\n </div>\n );\n }\n out.push(\n ...group.links.map((link, index) => (\n <InternalSideNavigationGroupLink\n key={`:${parentId}:${link.id}:${index}`}\n id={link.id}\n to={link.to}\n title={link.title}\n isActive={link.isActive}\n className={undefined}\n tag={getCounterTag(link.counter, link.tag)}\n parentId={parentId}\n navigationComponent={navigationComponent}\n onLinkClick={onNavigationLinkClick}\n />\n ))\n );\n /* eslint-enable react/no-array-index-key */\n\n return out;\n }, [] as ReactElement[])}\n </Fragment>\n );\n};\n\nfunction SidebarTop({ children }: any) {\n const list = Children.map(children, child => {\n return child && isValidElement(child) ? child : null;\n });\n return list?.length ? (\n <ThemeProvider mode=\"dark\" className={Styles.navTop} data-cy=\"navigation-items-top\">\n {list}\n <div className={Styles.divider} />\n </ThemeProvider>\n ) : null;\n}\n\nfunction SidebarBottom({ children }: any) {\n return (\n <ThemeProvider mode=\"dark\" className={Styles.navBottom} data-cy=\"navigation-items-bottom\">\n <div className={Styles.divider} />\n {children}\n </ThemeProvider>\n );\n}\n"],"names":["Divider","Icon","Popover","Text","ThemeProvider","SvgClose","SvgCollapse","SvgExpand","classNames","Children","Fragment","isValidElement","getCounterTag","getSubmenuGroupTag","LayoutPlacementContext","useTitanLayoutContext","InternalSideNavigationGroup","InternalSideNavigationGroupLink","InternalSideNavigationLink","Styles","withTooltip","LayoutSidebar","className","mobile","touchDevice","barExpanded","submenusOpened","drawerOpened","onBarExpandChange","onSubmenuOpenChange","onDrawerOpenChange","onNavigationLinkClick","mainItems","top","bottom","navigationComponent","closeDrawer","Provider","value","div","navDrawerBackdrop","onClick","nav","navDrawer","navDrawerOpened","navWide","navSlim","data-cy","mode","navMain","navCloseWrapper","navClose","svg","size","length","SidebarTop","map","item","submenu","SideNavigationGroupItem","submenuOpened","id","includes","onSubmenuOpen","to","title","isActive","icon","iconActive","tag","counter","SidebarBottom","navFooter","divider","toggleWrapper","SideNavigationOptionsToggle","appearance","onExpandedChange","displayName","role","tabIndex","data-pendo","aria-label","toggle","onKeyDown","e","key","preventDefault","toggleContent","toggleIconWrapper","toggleIcon","span","toggleText","undefined","placement","sidebar","styles","popoverContent","SideNavigationGroupContent","parentId","groups","openOnHover","delay","noPadding","Trigger","triggerProps","pointerEventsNone","Content","style","submenuPopoverContent","submenuPopover","variant","el","submenuPopoverTitle","submenuPopoverDivider","submenuPopoverBody","reduce","out","group","index","links","trim","push","submenuGroupHeader","link","onLinkClick","children","list","child","navTop","navBottom"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/titan-layout/layout-sidebar.tsx"],"sourcesContent":["import { Divider, Icon, Popover, Text, ThemeProvider } from '@servicetitan/anvil2';\nimport SvgClose from '@servicetitan/anvil2/assets/icons/material/round/close.svg';\nimport SvgCollapse from '@servicetitan/anvil2/assets/icons/st/gnav_menu_collapse.svg';\nimport SvgExpand from '@servicetitan/anvil2/assets/icons/st/gnav_menu_expand.svg';\nimport classNames from 'classnames';\nimport { Children, FC, Fragment, ReactElement, isValidElement } from 'react';\nimport { NavigationItemData, NavigationSubmenuData } from '../../utils/navigation';\nimport { NavLinkComponentProps } from '../../utils/navigation-context';\nimport { getCounterTag, getSubmenuGroupTag } from '../../utils/side-nav';\nimport { NavigationComponentProps } from './interface-internal';\nimport { LayoutPlacementContext, useTitanLayoutContext } from './layout-context';\nimport {\n InternalSideNavigationGroup,\n InternalSideNavigationGroupLink,\n InternalSideNavigationLink,\n} from './layout-sidebar-links-internal';\nimport * as Styles from './layout-sidebar.module.less';\nimport { withTooltip } from './with-tooltip';\n\nexport interface LayoutSidebarProps {\n className?: string;\n top?: ReactElement[];\n bottom?: ReactElement;\n mainItems?: NavigationItemData[];\n barExpanded: boolean;\n submenusOpened: string[] | undefined;\n drawerOpened: boolean;\n mobile: boolean;\n touchDevice: boolean;\n navigationComponent: FC<NavLinkComponentProps>;\n onBarExpandChange(expanded: boolean): void;\n onDrawerOpenChange(expanded: boolean): void;\n onSubmenuOpenChange(id: string, opened: boolean): void;\n onNavigationLinkClick?(itemId: string, submenuItemId?: string): void;\n}\n\nexport const LayoutSidebar: FC<LayoutSidebarProps> = ({\n className,\n mobile,\n touchDevice,\n barExpanded,\n submenusOpened,\n drawerOpened,\n onBarExpandChange,\n onSubmenuOpenChange,\n onDrawerOpenChange,\n onNavigationLinkClick,\n mainItems,\n top,\n bottom,\n navigationComponent,\n}) => {\n const closeDrawer = () => {\n if (mobile) {\n onDrawerOpenChange?.(false);\n }\n };\n\n return (\n <LayoutPlacementContext.Provider value=\"side\">\n {mobile && drawerOpened && (\n <div className={Styles.navDrawerBackdrop} onClick={closeDrawer} />\n )}\n <div\n className={classNames(\n Styles.nav,\n mobile && Styles.navDrawer,\n mobile && drawerOpened && Styles.navDrawerOpened,\n !mobile && (barExpanded ? Styles.navWide : Styles.navSlim),\n className\n )}\n data-cy=\"side-navigation\"\n onClick={closeDrawer}\n >\n <ThemeProvider mode=\"dark\" className={Styles.navMain}>\n {mobile && (\n <div className={Styles.navCloseWrapper}>\n <div\n className={Styles.navClose}\n onClick={() => onBarExpandChange(false)}\n >\n <Icon svg={SvgClose} size=\"large\" />\n </div>\n </div>\n )}\n {!!top?.length && <SidebarTop>{top}</SidebarTop>}\n\n <div data-cy=\"navigation-items\">\n {mainItems?.map(item =>\n item.submenu ? (\n <SideNavigationGroupItem\n key={item.id}\n item={item}\n barExpanded={mobile ? drawerOpened : barExpanded}\n submenuOpened={!!item.id && !!submenusOpened?.includes(item.id)}\n onSubmenuOpen={onSubmenuOpenChange}\n navigationComponent={navigationComponent}\n onNavigationLinkClick={onNavigationLinkClick}\n touchDevice={touchDevice}\n />\n ) : (\n <InternalSideNavigationLink\n key={item.id}\n id={item.id}\n to={item.to}\n title={item.title}\n isActive={item.isActive}\n icon={item.icon}\n iconActive={item.iconActive}\n className={item.className}\n tag={getSubmenuGroupTag(\n item.submenu,\n getCounterTag(item.counter, item.tag)\n )}\n navigationComponent={navigationComponent}\n />\n )\n )}\n </div>\n\n {!!bottom && <SidebarBottom>{bottom}</SidebarBottom>}\n </ThemeProvider>\n\n {!mobile && (\n <div className={Styles.navFooter}>\n <div className={Styles.divider} />\n <div className={Styles.toggleWrapper}>\n <SideNavigationOptionsToggle\n appearance={barExpanded ? 'collapse-button' : 'expand'}\n onExpandedChange={() => onBarExpandChange(!barExpanded)}\n />\n </div>\n </div>\n )}\n </div>\n </LayoutPlacementContext.Provider>\n );\n};\nLayoutSidebar.displayName = 'LayoutSidebar';\n\n/** Side Navigation options toggle */\nconst SideNavigationOptionsToggle: FC<{\n appearance: 'expand' | 'collapse' | 'collapse-button';\n onExpandedChange?(expanded: boolean): void;\n}> = ({ appearance, onExpandedChange }) =>\n withTooltip(\n <div\n role=\"button\"\n tabIndex={0}\n data-cy=\"navigation-left-options\"\n data-pendo=\"navigation-left-options\"\n aria-label={appearance === 'expand' ? 'Expand Menu' : 'Collapse Menu'}\n className={classNames(Styles.toggle)}\n onClick={() => onExpandedChange?.(appearance === 'expand')}\n onKeyDown={e => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onExpandedChange?.(appearance === 'expand');\n }\n }}\n >\n <div className={Styles.toggleContent}>\n <div className={Styles.toggleIconWrapper}>\n <Icon\n className={Styles.toggleIcon}\n svg={appearance === 'expand' ? SvgExpand : SvgCollapse}\n />\n </div>\n\n {appearance === 'collapse-button' && (\n <span className={Styles.toggleText}>Collapse Menu</span>\n )}\n </div>\n </div>,\n appearance === 'expand'\n ? 'Expand Menu'\n : appearance === 'collapse'\n ? 'Collapse Menu'\n : undefined,\n { placement: 'right' }\n );\n\n/** Side Navigation menu item */\nconst SideNavigationGroupItem: FC<{\n item: NavigationItemData;\n navigationComponent: FC<NavLinkComponentProps>;\n touchDevice: boolean;\n barExpanded: boolean;\n submenuOpened: boolean;\n onSubmenuOpen: (id: string, opened: boolean) => void;\n onNavigationLinkClick?: (itemId: string, submenuItemId?: string) => void;\n}> = ({\n item,\n onSubmenuOpen,\n onNavigationLinkClick,\n barExpanded,\n submenuOpened,\n navigationComponent,\n touchDevice,\n}) => {\n const {\n sidebar: {\n styles: { popoverContent },\n },\n } = useTitanLayoutContext();\n\n const tag = getSubmenuGroupTag(item.submenu, getCounterTag(item.counter, item.tag));\n\n return barExpanded ? (\n <InternalSideNavigationGroup\n id={item.id}\n to={item.to}\n title={item.title}\n isActive={item.isActive}\n icon={item.icon}\n iconActive={item.iconActive}\n className={item.className}\n tag={tag}\n submenuOpened={submenuOpened}\n onSubmenuOpen={onSubmenuOpen}\n navigationComponent={navigationComponent}\n >\n <SideNavigationGroupContent\n parentId={item.id}\n groups={item.submenu?.groups ?? []}\n navigationComponent={navigationComponent}\n onNavigationLinkClick={onNavigationLinkClick}\n />\n </InternalSideNavigationGroup>\n ) : (\n <Popover placement=\"right-start\" openOnHover={!touchDevice} delay={200} noPadding>\n <Popover.Trigger>\n {(triggerProps: any) => (\n <div {...triggerProps}>\n <InternalSideNavigationLink\n id={item.id}\n to={item.to}\n title={item.title}\n isActive={item.isActive}\n icon={item.icon}\n iconActive={item.iconActive}\n className={classNames(\n item.className,\n touchDevice && Styles.pointerEventsNone\n )}\n tag={tag}\n navigationComponent={navigationComponent}\n />\n </div>\n )}\n </Popover.Trigger>\n <Popover.Content\n style={popoverContent}\n className={classNames('z-global-nav-i', Styles.submenuPopoverContent)}\n data-cy=\"navigation-item-popover-content\"\n >\n <div className={Styles.submenuPopover}>\n <Text\n variant=\"headline\"\n el=\"h4\"\n size=\"small\"\n className={Styles.submenuPopoverTitle}\n >\n {item.title}\n </Text>\n <Divider className={Styles.submenuPopoverDivider} />\n <div className={Styles.submenuPopoverBody}>\n <SideNavigationGroupContent\n parentId={item.id}\n groups={item.submenu?.groups ?? []}\n navigationComponent={navigationComponent}\n />\n </div>\n </div>\n </Popover.Content>\n </Popover>\n );\n};\nconst SideNavigationGroupContent: FC<\n NavigationSubmenuData &\n NavigationComponentProps & {\n parentId: string;\n onNavigationLinkClick?: (itemId: string, submenuItemId?: string) => void;\n }\n> = ({ groups, parentId, navigationComponent, onNavigationLinkClick }) => {\n return (\n <Fragment>\n {groups.reduce((out, group, index) => {\n if (!group.links.length) {\n return out;\n }\n\n const title = group.title?.trim() ?? '';\n /* eslint-disable react/no-array-index-key */\n if (title) {\n out.push(\n <div\n key={`:group:${parentId}:${index}:title`}\n className={Styles.submenuGroupHeader}\n >\n {title}\n </div>\n );\n }\n out.push(\n ...group.links.map((link, index) => (\n <InternalSideNavigationGroupLink\n key={`:${parentId}:${link.id}:${index}`}\n id={link.id}\n to={link.to}\n title={link.title}\n isActive={link.isActive}\n className={undefined}\n tag={getCounterTag(link.counter, link.tag)}\n parentId={parentId}\n navigationComponent={navigationComponent}\n onLinkClick={onNavigationLinkClick}\n />\n ))\n );\n /* eslint-enable react/no-array-index-key */\n\n return out;\n }, [] as ReactElement[])}\n </Fragment>\n );\n};\n\nfunction SidebarTop({ children }: any) {\n const list = Children.map(children, child => {\n return child && isValidElement(child) ? child : null;\n });\n return list?.length ? (\n <ThemeProvider mode=\"dark\" className={Styles.navTop} data-cy=\"navigation-items-top\">\n {list}\n <div className={Styles.divider} />\n </ThemeProvider>\n ) : null;\n}\n\nfunction SidebarBottom({ children }: any) {\n return (\n <ThemeProvider mode=\"dark\" className={Styles.navBottom} data-cy=\"navigation-items-bottom\">\n <div className={Styles.divider} />\n {children}\n </ThemeProvider>\n );\n}\n"],"names":["Divider","Icon","Popover","Text","ThemeProvider","SvgClose","SvgCollapse","SvgExpand","classNames","Children","Fragment","isValidElement","getCounterTag","getSubmenuGroupTag","LayoutPlacementContext","useTitanLayoutContext","InternalSideNavigationGroup","InternalSideNavigationGroupLink","InternalSideNavigationLink","Styles","withTooltip","LayoutSidebar","className","mobile","touchDevice","barExpanded","submenusOpened","drawerOpened","onBarExpandChange","onSubmenuOpenChange","onDrawerOpenChange","onNavigationLinkClick","mainItems","top","bottom","navigationComponent","closeDrawer","Provider","value","div","navDrawerBackdrop","onClick","nav","navDrawer","navDrawerOpened","navWide","navSlim","data-cy","mode","navMain","navCloseWrapper","navClose","svg","size","length","SidebarTop","map","item","submenu","SideNavigationGroupItem","submenuOpened","id","includes","onSubmenuOpen","to","title","isActive","icon","iconActive","tag","counter","SidebarBottom","navFooter","divider","toggleWrapper","SideNavigationOptionsToggle","appearance","onExpandedChange","displayName","role","tabIndex","data-pendo","aria-label","toggle","onKeyDown","e","key","preventDefault","toggleContent","toggleIconWrapper","toggleIcon","span","toggleText","undefined","placement","sidebar","styles","popoverContent","SideNavigationGroupContent","parentId","groups","openOnHover","delay","noPadding","Trigger","triggerProps","pointerEventsNone","Content","style","submenuPopoverContent","submenuPopover","variant","el","submenuPopoverTitle","submenuPopoverDivider","submenuPopoverBody","reduce","out","group","index","links","trim","push","submenuGroupHeader","link","onLinkClick","children","list","child","navTop","navBottom"],"mappings":";AAAA,SAASA,OAAO,EAAEC,IAAI,EAAEC,OAAO,EAAEC,IAAI,EAAEC,aAAa,QAAQ,uBAAuB;AACnF,OAAOC,cAAc,6DAA6D;AAClF,OAAOC,iBAAiB,8DAA8D;AACtF,OAAOC,eAAe,4DAA4D;AAClF,OAAOC,gBAAgB,aAAa;AACpC,SAASC,QAAQ,EAAMC,QAAQ,EAAgBC,cAAc,QAAQ,QAAQ;AAG7E,SAASC,aAAa,EAAEC,kBAAkB,QAAQ,uBAAuB;AAEzE,SAASC,sBAAsB,EAAEC,qBAAqB,QAAQ,mBAAmB;AACjF,SACIC,2BAA2B,EAC3BC,+BAA+B,EAC/BC,0BAA0B,QACvB,kCAAkC;AACzC,YAAYC,YAAY,+BAA+B;AACvD,SAASC,WAAW,QAAQ,iBAAiB;AAmB7C,OAAO,MAAMC,gBAAwC,CAAC,EAClDC,SAAS,EACTC,MAAM,EACNC,WAAW,EACXC,WAAW,EACXC,cAAc,EACdC,YAAY,EACZC,iBAAiB,EACjBC,mBAAmB,EACnBC,kBAAkB,EAClBC,qBAAqB,EACrBC,SAAS,EACTC,GAAG,EACHC,MAAM,EACNC,mBAAmB,EACtB;IACG,MAAMC,cAAc;QAChB,IAAIb,QAAQ;YACRO,+BAAAA,yCAAAA,mBAAqB;QACzB;IACJ;IAEA,qBACI,MAAChB,uBAAuBuB,QAAQ;QAACC,OAAM;;YAClCf,UAAUI,8BACP,KAACY;gBAAIjB,WAAWH,OAAOqB,iBAAiB;gBAAEC,SAASL;;0BAEvD,MAACG;gBACGjB,WAAWd,WACPW,OAAOuB,GAAG,EACVnB,UAAUJ,OAAOwB,SAAS,EAC1BpB,UAAUI,gBAAgBR,OAAOyB,eAAe,EAChD,CAACrB,UAAWE,CAAAA,cAAcN,OAAO0B,OAAO,GAAG1B,OAAO2B,OAAO,AAAD,GACxDxB;gBAEJyB,WAAQ;gBACRN,SAASL;;kCAET,MAAChC;wBAAc4C,MAAK;wBAAO1B,WAAWH,OAAO8B,OAAO;;4BAC/C1B,wBACG,KAACgB;gCAAIjB,WAAWH,OAAO+B,eAAe;0CAClC,cAAA,KAACX;oCACGjB,WAAWH,OAAOgC,QAAQ;oCAC1BV,SAAS,IAAMb,kBAAkB;8CAEjC,cAAA,KAAC3B;wCAAKmD,KAAK/C;wCAAUgD,MAAK;;;;4BAIrC,CAAC,EAACpB,gBAAAA,0BAAAA,IAAKqB,MAAM,mBAAI,KAACC;0CAAYtB;;0CAE/B,KAACM;gCAAIQ,WAAQ;0CACRf,sBAAAA,gCAAAA,UAAWwB,GAAG,CAACC,CAAAA,OACZA,KAAKC,OAAO,iBACR,KAACC;wCAEGF,MAAMA;wCACNhC,aAAaF,SAASI,eAAeF;wCACrCmC,eAAe,CAAC,CAACH,KAAKI,EAAE,IAAI,CAAC,EAACnC,2BAAAA,qCAAAA,eAAgBoC,QAAQ,CAACL,KAAKI,EAAE;wCAC9DE,eAAelC;wCACfM,qBAAqBA;wCACrBJ,uBAAuBA;wCACvBP,aAAaA;uCAPRiC,KAAKI,EAAE,kBAUhB,KAAC3C;wCAEG2C,IAAIJ,KAAKI,EAAE;wCACXG,IAAIP,KAAKO,EAAE;wCACXC,OAAOR,KAAKQ,KAAK;wCACjBC,UAAUT,KAAKS,QAAQ;wCACvBC,MAAMV,KAAKU,IAAI;wCACfC,YAAYX,KAAKW,UAAU;wCAC3B9C,WAAWmC,KAAKnC,SAAS;wCACzB+C,KAAKxD,mBACD4C,KAAKC,OAAO,EACZ9C,cAAc6C,KAAKa,OAAO,EAAEb,KAAKY,GAAG;wCAExClC,qBAAqBA;uCAZhBsB,KAAKI,EAAE;;4BAkB3B,CAAC,CAAC3B,wBAAU,KAACqC;0CAAerC;;;;oBAGhC,CAACX,wBACE,MAACgB;wBAAIjB,WAAWH,OAAOqD,SAAS;;0CAC5B,KAACjC;gCAAIjB,WAAWH,OAAOsD,OAAO;;0CAC9B,KAAClC;gCAAIjB,WAAWH,OAAOuD,aAAa;0CAChC,cAAA,KAACC;oCACGC,YAAYnD,cAAc,oBAAoB;oCAC9CoD,kBAAkB,IAAMjD,kBAAkB,CAACH;;;;;;;;;AAQ3E,EAAE;AACFJ,cAAcyD,WAAW,GAAG;AAE5B,mCAAmC,GACnC,MAAMH,8BAGD,CAAC,EAAEC,UAAU,EAAEC,gBAAgB,EAAE,GAClCzD,0BACI,KAACmB;QACGwC,MAAK;QACLC,UAAU;QACVjC,WAAQ;QACRkC,cAAW;QACXC,cAAYN,eAAe,WAAW,gBAAgB;QACtDtD,WAAWd,WAAWW,OAAOgE,MAAM;QACnC1C,SAAS,IAAMoC,6BAAAA,uCAAAA,iBAAmBD,eAAe;QACjDQ,WAAWC,CAAAA;YACP,IAAIA,EAAEC,GAAG,KAAK,WAAWD,EAAEC,GAAG,KAAK,KAAK;gBACpCD,EAAEE,cAAc;gBAChBV,6BAAAA,uCAAAA,iBAAmBD,eAAe;YACtC;QACJ;kBAEA,cAAA,MAACrC;YAAIjB,WAAWH,OAAOqE,aAAa;;8BAChC,KAACjD;oBAAIjB,WAAWH,OAAOsE,iBAAiB;8BACpC,cAAA,KAACxF;wBACGqB,WAAWH,OAAOuE,UAAU;wBAC5BtC,KAAKwB,eAAe,WAAWrE,YAAYD;;;gBAIlDsE,eAAe,mCACZ,KAACe;oBAAKrE,WAAWH,OAAOyE,UAAU;8BAAE;;;;QAIhDhB,eAAe,WACT,gBACAA,eAAe,aACb,kBACAiB,WACR;QAAEC,WAAW;IAAQ;AAG7B,8BAA8B,GAC9B,MAAMnC,0BAQD,CAAC,EACFF,IAAI,EACJM,aAAa,EACbhC,qBAAqB,EACrBN,WAAW,EACXmC,aAAa,EACbzB,mBAAmB,EACnBX,WAAW,EACd;;QAyBuBiC,eA6CYA;IArEhC,MAAM,EACFsC,SAAS,EACLC,QAAQ,EAAEC,cAAc,EAAE,EAC7B,EACJ,GAAGlF;IAEJ,MAAMsD,MAAMxD,mBAAmB4C,KAAKC,OAAO,EAAE9C,cAAc6C,KAAKa,OAAO,EAAEb,KAAKY,GAAG;IAEjF,OAAO5C,4BACH,KAACT;QACG6C,IAAIJ,KAAKI,EAAE;QACXG,IAAIP,KAAKO,EAAE;QACXC,OAAOR,KAAKQ,KAAK;QACjBC,UAAUT,KAAKS,QAAQ;QACvBC,MAAMV,KAAKU,IAAI;QACfC,YAAYX,KAAKW,UAAU;QAC3B9C,WAAWmC,KAAKnC,SAAS;QACzB+C,KAAKA;QACLT,eAAeA;QACfG,eAAeA;QACf5B,qBAAqBA;kBAErB,cAAA,KAAC+D;YACGC,UAAU1C,KAAKI,EAAE;YACjBuC,MAAM,WAAE3C,gBAAAA,KAAKC,OAAO,cAAZD,oCAAAA,cAAc2C,MAAM,uCAAI,EAAE;YAClCjE,qBAAqBA;YACrBJ,uBAAuBA;;uBAI/B,MAAC7B;QAAQ4F,WAAU;QAAcO,aAAa,CAAC7E;QAAa8E,OAAO;QAAKC,SAAS;;0BAC7E,KAACrG,QAAQsG,OAAO;0BACX,CAACC,6BACE,KAAClE;wBAAK,GAAGkE,YAAY;kCACjB,cAAA,KAACvF;4BACG2C,IAAIJ,KAAKI,EAAE;4BACXG,IAAIP,KAAKO,EAAE;4BACXC,OAAOR,KAAKQ,KAAK;4BACjBC,UAAUT,KAAKS,QAAQ;4BACvBC,MAAMV,KAAKU,IAAI;4BACfC,YAAYX,KAAKW,UAAU;4BAC3B9C,WAAWd,WACPiD,KAAKnC,SAAS,EACdE,eAAeL,OAAOuF,iBAAiB;4BAE3CrC,KAAKA;4BACLlC,qBAAqBA;;;;0BAKrC,KAACjC,QAAQyG,OAAO;gBACZC,OAAOX;gBACP3E,WAAWd,WAAW,kBAAkBW,OAAO0F,qBAAqB;gBACpE9D,WAAQ;0BAER,cAAA,MAACR;oBAAIjB,WAAWH,OAAO2F,cAAc;;sCACjC,KAAC3G;4BACG4G,SAAQ;4BACRC,IAAG;4BACH3D,MAAK;4BACL/B,WAAWH,OAAO8F,mBAAmB;sCAEpCxD,KAAKQ,KAAK;;sCAEf,KAACjE;4BAAQsB,WAAWH,OAAO+F,qBAAqB;;sCAChD,KAAC3E;4BAAIjB,WAAWH,OAAOgG,kBAAkB;sCACrC,cAAA,KAACjB;gCACGC,UAAU1C,KAAKI,EAAE;gCACjBuC,MAAM,YAAE3C,iBAAAA,KAAKC,OAAO,cAAZD,qCAAAA,eAAc2C,MAAM,yCAAI,EAAE;gCAClCjE,qBAAqBA;;;;;;;;AAOjD;AACA,MAAM+D,6BAMF,CAAC,EAAEE,MAAM,EAAED,QAAQ,EAAEhE,mBAAmB,EAAEJ,qBAAqB,EAAE;IACjE,qBACI,KAACrB;kBACI0F,OAAOgB,MAAM,CAAC,CAACC,KAAKC,OAAOC;;gBAKVD;YAJd,IAAI,CAACA,MAAME,KAAK,CAAClE,MAAM,EAAE;gBACrB,OAAO+D;YACX;YAEA,MAAMpD,iBAAQqD,eAAAA,MAAMrD,KAAK,cAAXqD,mCAAAA,aAAaG,IAAI,yCAAM;YACrC,2CAA2C,GAC3C,IAAIxD,OAAO;gBACPoD,IAAIK,IAAI,eACJ,KAACnF;oBAEGjB,WAAWH,OAAOwG,kBAAkB;8BAEnC1D;mBAHI,CAAC,OAAO,EAAEkC,SAAS,CAAC,EAAEoB,MAAM,MAAM,CAAC;YAMpD;YACAF,IAAIK,IAAI,IACDJ,MAAME,KAAK,CAAChE,GAAG,CAAC,CAACoE,MAAML,sBACtB,KAACtG;oBAEG4C,IAAI+D,KAAK/D,EAAE;oBACXG,IAAI4D,KAAK5D,EAAE;oBACXC,OAAO2D,KAAK3D,KAAK;oBACjBC,UAAU0D,KAAK1D,QAAQ;oBACvB5C,WAAWuE;oBACXxB,KAAKzD,cAAcgH,KAAKtD,OAAO,EAAEsD,KAAKvD,GAAG;oBACzC8B,UAAUA;oBACVhE,qBAAqBA;oBACrB0F,aAAa9F;mBATR,CAAC,CAAC,EAAEoE,SAAS,CAAC,EAAEyB,KAAK/D,EAAE,CAAC,CAAC,EAAE0D,OAAO;YAanD,0CAA0C,GAE1C,OAAOF;QACX,GAAG,EAAE;;AAGjB;AAEA,SAAS9D,WAAW,EAAEuE,QAAQ,EAAO;IACjC,MAAMC,OAAOtH,SAAS+C,GAAG,CAACsE,UAAUE,CAAAA;QAChC,OAAOA,uBAASrH,eAAeqH,SAASA,QAAQ;IACpD;IACA,OAAOD,CAAAA,iBAAAA,2BAAAA,KAAMzE,MAAM,kBACf,MAAClD;QAAc4C,MAAK;QAAO1B,WAAWH,OAAO8G,MAAM;QAAElF,WAAQ;;YACxDgF;0BACD,KAACxF;gBAAIjB,WAAWH,OAAOsD,OAAO;;;SAElC;AACR;AAEA,SAASF,cAAc,EAAEuD,QAAQ,EAAO;IACpC,qBACI,MAAC1H;QAAc4C,MAAK;QAAO1B,WAAWH,OAAO+G,SAAS;QAAEnF,WAAQ;;0BAC5D,KAACR;gBAAIjB,WAAWH,OAAOsD,OAAO;;YAC7BqD;;;AAGb"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@servicetitan/navigation",
|
|
3
|
-
"version": "14.0.0
|
|
3
|
+
"version": "14.0.0",
|
|
4
4
|
"description": "Navigation components",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -35,5 +35,5 @@
|
|
|
35
35
|
"less": true,
|
|
36
36
|
"webpack": false
|
|
37
37
|
},
|
|
38
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "cc95ed44520e07801e9fc8bd61d6d89797696a11"
|
|
39
39
|
}
|
|
@@ -252,6 +252,7 @@ const SideNavigationGroupItem: FC<{
|
|
|
252
252
|
<Popover.Content
|
|
253
253
|
style={popoverContent}
|
|
254
254
|
className={classNames('z-global-nav-i', Styles.submenuPopoverContent)}
|
|
255
|
+
data-cy="navigation-item-popover-content"
|
|
255
256
|
>
|
|
256
257
|
<div className={Styles.submenuPopover}>
|
|
257
258
|
<Text
|