@agorapulse/ui-components 18.0.9 → 18.0.11

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.
Files changed (65) hide show
  1. package/agorapulse-ui-components-18.0.11.tgz +0 -0
  2. package/esm2022/datepicker/datepicker.component.mjs +1 -1
  3. package/esm2022/index.mjs +2 -1
  4. package/esm2022/input-search/input-search.component.mjs +5 -4
  5. package/esm2022/nav-selector/agorapulse-ui-components-nav-selector.mjs +5 -0
  6. package/esm2022/nav-selector/directives/tree-node-accessibility.directive.mjs +30 -0
  7. package/esm2022/nav-selector/nav-selector-category/nav-selector-category.component.mjs +81 -0
  8. package/esm2022/nav-selector/nav-selector-category/nav-selector-category.presenter.mjs +29 -0
  9. package/esm2022/nav-selector/nav-selector-group/nav-selector-group.component.mjs +142 -0
  10. package/esm2022/nav-selector/nav-selector-group/nav-selector-group.presenter.mjs +31 -0
  11. package/esm2022/nav-selector/nav-selector-leaf/nav-selector-leaf.component.mjs +240 -0
  12. package/esm2022/nav-selector/nav-selector-leaf/nav-selector-leaf.presenter.mjs +35 -0
  13. package/esm2022/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.component.mjs +39 -0
  14. package/esm2022/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.presenter.mjs +18 -0
  15. package/esm2022/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.component.mjs +92 -0
  16. package/esm2022/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.presenter.mjs +31 -0
  17. package/esm2022/nav-selector/nav-selector.component.mjs +123 -0
  18. package/esm2022/nav-selector/nav-selector.mjs +9 -0
  19. package/esm2022/nav-selector/nav-selector.state.mjs +173 -0
  20. package/esm2022/nav-selector/public_api.mjs +2 -0
  21. package/esm2022/nav-selector/utils/leaf.utils.mjs +10 -0
  22. package/esm2022/nav-selector/utils/nav-selector.accessibility.mjs +171 -0
  23. package/esm2022/nav-selector/utils/nav-selector.builder.mjs +263 -0
  24. package/esm2022/nav-selector/utils/nav-selector.filter.mjs +102 -0
  25. package/esm2022/nav-selector/utils/nav-selector.folding.mjs +219 -0
  26. package/esm2022/nav-selector/utils/nav-selector.minifying.mjs +50 -0
  27. package/esm2022/nav-selector/utils/nav-selector.multi-select.mjs +208 -0
  28. package/esm2022/nav-selector/utils/nav-selector.single-select.mjs +91 -0
  29. package/esm2022/nav-selector/utils/nav-selector.view-more.mjs +98 -0
  30. package/fesm2022/agorapulse-ui-components-datepicker.mjs.map +1 -1
  31. package/fesm2022/agorapulse-ui-components-input-search.mjs +4 -3
  32. package/fesm2022/agorapulse-ui-components-input-search.mjs.map +1 -1
  33. package/fesm2022/agorapulse-ui-components-nav-selector.mjs +2198 -0
  34. package/fesm2022/agorapulse-ui-components-nav-selector.mjs.map +1 -0
  35. package/fesm2022/agorapulse-ui-components.mjs +1 -0
  36. package/fesm2022/agorapulse-ui-components.mjs.map +1 -1
  37. package/index.d.ts +1 -0
  38. package/input-search/input-search.component.d.ts +1 -1
  39. package/nav-selector/directives/tree-node-accessibility.directive.d.ts +9 -0
  40. package/nav-selector/index.d.ts +5 -0
  41. package/nav-selector/nav-selector-category/nav-selector-category.component.d.ts +16 -0
  42. package/nav-selector/nav-selector-category/nav-selector-category.presenter.d.ts +14 -0
  43. package/nav-selector/nav-selector-group/nav-selector-group.component.d.ts +29 -0
  44. package/nav-selector/nav-selector-group/nav-selector-group.presenter.d.ts +17 -0
  45. package/nav-selector/nav-selector-leaf/nav-selector-leaf.component.d.ts +51 -0
  46. package/nav-selector/nav-selector-leaf/nav-selector-leaf.presenter.d.ts +19 -0
  47. package/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.component.d.ts +13 -0
  48. package/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.presenter.d.ts +10 -0
  49. package/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.component.d.ts +24 -0
  50. package/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.presenter.d.ts +14 -0
  51. package/nav-selector/nav-selector.component.d.ts +29 -0
  52. package/nav-selector/nav-selector.d.ts +220 -0
  53. package/nav-selector/nav-selector.state.d.ts +47 -0
  54. package/nav-selector/public_api.d.ts +2 -0
  55. package/nav-selector/utils/leaf.utils.d.ts +5 -0
  56. package/nav-selector/utils/nav-selector.accessibility.d.ts +52 -0
  57. package/nav-selector/utils/nav-selector.builder.d.ts +32 -0
  58. package/nav-selector/utils/nav-selector.filter.d.ts +30 -0
  59. package/nav-selector/utils/nav-selector.folding.d.ts +47 -0
  60. package/nav-selector/utils/nav-selector.minifying.d.ts +27 -0
  61. package/nav-selector/utils/nav-selector.multi-select.d.ts +54 -0
  62. package/nav-selector/utils/nav-selector.single-select.d.ts +15 -0
  63. package/nav-selector/utils/nav-selector.view-more.d.ts +30 -0
  64. package/package.json +13 -7
  65. package/agorapulse-ui-components-18.0.9.tgz +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agorapulse-ui-components-nav-selector.mjs","sources":["../../../libs/ui-components/nav-selector/src/directives/tree-node-accessibility.directive.ts","../../../libs/ui-components/nav-selector/src/nav-selector.ts","../../../libs/ui-components/nav-selector/src/utils/nav-selector.accessibility.ts","../../../libs/ui-components/nav-selector/src/utils/nav-selector.multi-select.ts","../../../libs/ui-components/nav-selector/src/utils/nav-selector.single-select.ts","../../../libs/ui-components/nav-selector/src/utils/nav-selector.builder.ts","../../../libs/ui-components/nav-selector/src/utils/leaf.utils.ts","../../../libs/ui-components/nav-selector/src/utils/nav-selector.filter.ts","../../../libs/ui-components/nav-selector/src/utils/nav-selector.folding.ts","../../../libs/ui-components/nav-selector/src/utils/nav-selector.minifying.ts","../../../libs/ui-components/nav-selector/src/utils/nav-selector.view-more.ts","../../../libs/ui-components/nav-selector/src/nav-selector.state.ts","../../../libs/ui-components/nav-selector/src/nav-selector-leaf-detail/nav-selector-leaf-detail.presenter.ts","../../../libs/ui-components/nav-selector/src/nav-selector-leaf-detail/nav-selector-leaf-detail.component.ts","../../../libs/ui-components/nav-selector/src/nav-selector-leaf-detail/nav-selector-leaf-detail.component.html","../../../libs/ui-components/nav-selector/src/nav-selector-leaf-details/nav-selector-leaf-details.presenter.ts","../../../libs/ui-components/nav-selector/src/nav-selector-leaf-details/nav-selector-leaf-details.component.ts","../../../libs/ui-components/nav-selector/src/nav-selector-leaf-details/nav-selector-leaf-details.component.html","../../../libs/ui-components/nav-selector/src/nav-selector-leaf/nav-selector-leaf.presenter.ts","../../../libs/ui-components/nav-selector/src/nav-selector-leaf/nav-selector-leaf.component.ts","../../../libs/ui-components/nav-selector/src/nav-selector-leaf/nav-selector-leaf.component.html","../../../libs/ui-components/nav-selector/src/nav-selector-group/nav-selector-group.presenter.ts","../../../libs/ui-components/nav-selector/src/nav-selector-group/nav-selector-group.component.ts","../../../libs/ui-components/nav-selector/src/nav-selector-group/nav-selector-group.component.html","../../../libs/ui-components/nav-selector/src/nav-selector-category/nav-selector-category.presenter.ts","../../../libs/ui-components/nav-selector/src/nav-selector-category/nav-selector-category.component.ts","../../../libs/ui-components/nav-selector/src/nav-selector-category/nav-selector-category.component.html","../../../libs/ui-components/nav-selector/src/nav-selector.component.ts","../../../libs/ui-components/nav-selector/src/nav-selector.component.html","../../../libs/ui-components/nav-selector/src/agorapulse-ui-components-nav-selector.ts"],"sourcesContent":["import { afterRender, Directive, ElementRef, input, Renderer2 } from '@angular/core';\nimport { InternalNavSelectorEntry } from '../nav-selector';\n\n@Directive({\n selector: '[apTreeNodeAccessibility]',\n standalone: true,\n})\nexport class TreeNodeAccessibilityDirective {\n apTreeNodeAccessibility = input.required<InternalNavSelectorEntry>();\n\n constructor(el: ElementRef, renderer: Renderer2) {\n afterRender(() => {\n const nativeEl = el.nativeElement;\n const entry = this.apTreeNodeAccessibility();\n renderer.setAttribute(nativeEl, 'aria-level', `${entry.accessibility.ariaLevel}`);\n renderer.setAttribute(nativeEl, 'aria-setsize', `${entry.accessibility.ariaSetsize}`);\n renderer.setAttribute(nativeEl, 'aria-posinset', `${entry.accessibility.ariaPosinset}`);\n renderer.setAttribute(nativeEl, 'tabindex', `${entry.accessibility.tabIndex}`);\n renderer.setAttribute(nativeEl, 'aria-label', `${entry.alias}`);\n if ('folded' in entry) {\n renderer.setAttribute(nativeEl, 'aria-expanded', `${entry.folded}`);\n }\n renderer.setAttribute(nativeEl, 'role', 'treeitem');\n });\n }\n}\n","import { AvatarNetwork } from '@agorapulse/ui-components/avatar';\n\n/**\n * As translation is not available in the DS, this all translations needed\n */\nexport interface NavSelectorTranslatedTexts {\n /** Title of the nav selector */\n title: string;\n /** Only text in multi select mode */\n only: string;\n /** Toolip displaying that token is invalid */\n tokenInvalid: string;\n /** Toolip displaying that feature is locked */\n featureLocked: string;\n /** placeholder for the search input */\n searchPlaceholder: string;\n /** Text displayed when the search return no results */\n noResults: string;\n /** Text of the button to show more details, it’s used when we limit the number of details displayed */\n viewMore: string;\n /** Text of the button to show less details, it’s used when we limit the number of details displayed */\n viewLess: string;\n}\n\n/**\n * Common interface for the NavSelector\n */\nexport type NavSelectorBaseNode = {\n /** Unique identifier of the node */\n uid: string;\n /** Displayed name of the node */\n alias: string;\n};\n\n/**\n * Represent final entry of the nav selector\n */\nexport type NavSelectorLeaf = {\n pictureUrl: string | null;\n /** Counter to display on the entry, to ignore if the leaf has details */\n counter: number | null;\n /** When true, the leaf will be hidden */\n missingPermission: boolean;\n /** For social profiles or ad accounts the corresponding network */\n network: AvatarNetwork | null;\n /** Translated text when the entry is disabled */\n disableReason: string | null;\n /** Indicates if entry has its token invalid */\n tokenInvalid: boolean;\n /** Indicates if entry is locked */\n featureLocked: boolean;\n /** Sub elements of the leaf, they are optional */\n details: NavSelectorLeafDetails[];\n type: 'LEAF';\n} & NavSelectorBaseNode;\n\n/**\n * Represent a group of entries which has been created by the user (ex: menuGroup)\n */\nexport type NavSelectorGroup = {\n /** A group can only have leaves as children */\n children: NavSelectorLeaf[];\n /** Indicates if the group should be folded or expanded when generating the nav selector */\n folded: boolean;\n type: 'GROUP';\n} & NavSelectorBaseNode;\n\n/**\n * Represent a category of entries which has been created by the product to separate different kind of entries (ex: social profiles, reports, ad accounts…)\n */\nexport type NavSelectorCategory = {\n /** A Category can have leaves or groups as children, you can have leaves alongside with groups */\n children: (NavSelectorLeaf | NavSelectorGroup)[];\n /** Indicates if the group should be folded or expanded when generating the nav selector */\n folded: boolean;\n type: 'CATEGORY';\n} & NavSelectorBaseNode;\n\nexport type NavSelectorEntry = NavSelectorLeaf | NavSelectorGroup | NavSelectorCategory;\n\n/**\n * Represent details of a leaf, they are used to allow to display more specific information about the leaf\n */\nexport interface NavSelectorLeafDetails {\n /** Unique identifier of the node */\n uid: string;\n /** Counter to display on the entry */\n counter: number | null;\n /** Displayed name of the node */\n name: string;\n /** Translation of the error on the leaf */\n errorReason: string | null;\n}\n\nexport const isNavSelectorEntryALeaf = (entry: NavSelectorEntry): entry is NavSelectorLeaf => entry.type === 'LEAF';\n\nexport const isNavSelectorEntryAGroup = (entry: NavSelectorEntry): entry is NavSelectorGroup => entry.type === 'GROUP';\n\nexport const isNavSelectorEntryACategory = (entry: NavSelectorEntry): entry is NavSelectorCategory => entry.type === 'CATEGORY';\n\n/**\n * Represent the accessibility on a node\n */\nexport type NodeAccessibility = {\n /** Number of sibling elements, itself included. Ex: there are 7 social profiles display in the group */\n ariaSetsize: number;\n /** Index starting from 1 of the element alongside its sibling */\n ariaPosinset: number;\n /** 0 to be focusable by Tab key and -1 to be focusable by keyboard with JS */\n tabIndex: number;\n /** In a tree, the deep level, starting from 1 */\n ariaLevel: number;\n};\n\n/**\n * Represent a node\n */\nexport type InternalNavSelectorBaseNode = {\n /** Unique identifier of the entry */\n uid: string;\n /** Displayed name of the entry */\n alias: string;\n accessibility: NodeAccessibility;\n /** When hidden, the entry is not displayed, used when searching an element */\n hidden: boolean;\n /** When true, you can navigate with arrow keys on this entry */\n focusable: boolean;\n};\n\n/**\n * Represent a group of entries which has been created by the user (ex: menuGroup)\n */\nexport type InternalNavSelectorGroup = {\n /** A group can only have leaves as children */\n children: InternalNavSelectorLeaf[];\n /** Picture url of the group, used when the nav selector is minified */\n childrenPictureUrlSample: { url: string | null; initial: string }[];\n /** Indicates whenever the group is folded or not */\n folded: boolean;\n /** Indicates the counter value to display when the group is folded */\n counter: number;\n /** Indicates if the counter should be display when the group is folded */\n displayCounter: boolean;\n /** Indicates if the token invalid icon should be display when the group is folded */\n displayTokenInvalid: boolean;\n /** Indicates in multi select mode if the group has some children selected */\n undeterminedSelection: boolean;\n /** Indicates if the group is selected */\n selected: boolean;\n /** Indicates if the group is selectable */\n selectable: boolean;\n type: 'GROUP';\n} & InternalNavSelectorBaseNode;\n\n/**\n * Represent a category of entries which has been created by the product to separate different kind of entries (ex: social profiles, reports, ad accounts…)\n */\nexport type InternalNavSelectorCategory = {\n /** A Category can have leaves or groups as children, you can have leaves alongside with groups */\n children: (InternalNavSelectorGroup | InternalNavSelectorLeaf)[];\n /** Indicates whenever the category is folded or not */\n folded: boolean;\n type: 'CATEGORY';\n} & InternalNavSelectorBaseNode;\n\n/**\n * Represent final entry of the nav selector\n */\nexport type InternalNavSelectorLeaf = {\n pictureUrl: string | null;\n /** Indicates if the counter could be display. The leaf should not be disabled, feature locked or has token invalid */\n counterDisplayable: boolean;\n /** Indicates if the token invalid icon should be display. So when displayable when no details or folded */\n displayCounter: boolean;\n /** Counter value to display */\n counter: number;\n /** Indicates if the token invalid icon should be display */\n displayTokenInvalid: boolean;\n /** Indicates if the feature is locked */\n displayFeatureLocked: boolean;\n /** Indicates if the leaf is disabled */\n disabled: boolean;\n /** The disabled reason to display in tooltip */\n disableReason: string | null;\n /** Indicates if the leaf is selected */\n selected: boolean;\n /** Indicates if the leaf is selectable */\n selectable: boolean;\n /** For social profiles or ad accounts, the corresponding network */\n network: AvatarNetwork | null;\n /** Indicates if the leaf foldable. So when it has details and no error status */\n foldable: boolean;\n /** Indicates if the leaf is folded */\n folded: boolean;\n /** Indicates if the leaf has details and they are displayable. So no error status */\n detailsDisplayable: boolean;\n /** Details of the leaf */\n details: InternalNavSelectorLeafDetails[];\n type: 'LEAF';\n /** Indicates if the view more section should be display for details */\n viewMoreDisplayable: boolean;\n /** Indicates if the view more or view less button is displayed */\n viewMoreDisplayed: boolean;\n /** Number of details to display when the view more is not clicked */\n viewMoreDetailsDisplayedLimit: number;\n} & InternalNavSelectorBaseNode;\n\n/**\n * Represent details of a leaf, they are used to allow to display more specific information about the leaf\n */\nexport type InternalNavSelectorLeafDetails = {\n /** Unique identifier of the node */\n uid: string;\n /** Counter to display on the detail */\n counter: number;\n /** Indicates if the counter should be display. So no error on the detail */\n displayCounter: boolean;\n /** Displayed name of the node */\n alias: string;\n /** Indicates if the detail is selected */\n selected: boolean;\n /** Indicates if we should display an error icon */\n displayError: boolean;\n /** Translated text to display in the tooltip */\n errorReason: string | null;\n type: 'LEAF_DETAILS';\n} & InternalNavSelectorBaseNode;\n\nexport type InternalNavSelectorEntry =\n | InternalNavSelectorLeaf\n | InternalNavSelectorGroup\n | InternalNavSelectorCategory\n | InternalNavSelectorLeafDetails;\n\nexport const isInternalNavSelectorEntryALeaf = (entry: InternalNavSelectorEntry): entry is InternalNavSelectorLeaf => entry.type === 'LEAF';\n\nexport const isInternalNavSelectorEntryANode = (\n entry: InternalNavSelectorEntry\n): entry is InternalNavSelectorCategory | InternalNavSelectorGroup => `children` in entry;\n\nexport const isInternalNavSelectorEntryACategory = (entry: InternalNavSelectorEntry): entry is InternalNavSelectorCategory =>\n entry.type === 'CATEGORY';\n\nexport const isInternalNavSelectorEntryAGroup = (entry: InternalNavSelectorEntry): entry is InternalNavSelectorGroup =>\n entry.type === 'GROUP';\n\nexport const isInternalNavSelectorEntryALeafDetails = (entry: InternalNavSelectorEntry): entry is InternalNavSelectorLeafDetails =>\n entry.type === 'LEAF_DETAILS';\n","import {\n InternalNavSelectorEntry,\n InternalNavSelectorGroup,\n InternalNavSelectorLeaf,\n InternalNavSelectorLeafDetails,\n isInternalNavSelectorEntryACategory,\n isInternalNavSelectorEntryAGroup,\n isInternalNavSelectorEntryALeaf,\n isInternalNavSelectorEntryALeafDetails,\n} from '../nav-selector';\n\n/**\n * NavSelectorAccessibility is a utility class that provides methods to manage the accessibility and the focusability of nav selector entries.\n */\nexport class NavSelectorAccessibility {\n /**\n * Set tabIndex to 0 for the first focusable entry and -1 for all other entries\n * @param entries nav selector entries\n */\n static resetFocus(entries: InternalNavSelectorEntry[]): InternalNavSelectorEntry[] {\n return entries.reduce((acc, entry) => {\n if (!acc.length) {\n return [{ ...entry, accessibility: { ...entry.accessibility, tabIndex: entry.focusable ? 0 : -1 } }];\n }\n\n if (acc.every(({ focusable }) => !focusable)) {\n return [...acc, { ...entry, accessibility: { ...entry.accessibility, tabIndex: entry.focusable ? 0 : -1 } }];\n }\n\n return [...acc, entry];\n }, [] as InternalNavSelectorEntry[]);\n }\n\n /**\n * Focus the given entry and set tabIndex to 0 for the given uid and -1 for all other entries\n * @param entries nav selector entries\n * @param uid the uid of the entry to focus\n */\n static focus<T extends InternalNavSelectorEntry>(entries: T[], uid: string): InternalNavSelectorEntry[] {\n return entries.map(entry => {\n if (isInternalNavSelectorEntryAGroup(entry) || isInternalNavSelectorEntryACategory(entry)) {\n return {\n ...this.focusAnEntry(entry, uid),\n children: NavSelectorAccessibility.focus(entry.children, uid),\n } as InternalNavSelectorGroup;\n }\n if (isInternalNavSelectorEntryALeaf(entry)) {\n return {\n ...this.focusAnEntry(entry, uid),\n details: entry.details.map(detail => this.focusAnEntry(detail, uid)),\n } as InternalNavSelectorLeaf;\n }\n return this.focusAnEntry(entry, uid);\n });\n }\n\n /**\n * Unfocus the given entry and set tabIndex to -1 for the given uid and 0 for all other entries\n * @param entries nav selector entries\n * @param uid the uid of the entry to unfocus\n */\n static unfocus(entries: InternalNavSelectorEntry[], uid: string): InternalNavSelectorEntry[] {\n return entries.map(entry => {\n if (isInternalNavSelectorEntryAGroup(entry) || isInternalNavSelectorEntryACategory(entry)) {\n return {\n ...this.unfocusAnEntry(entry, uid),\n children: NavSelectorAccessibility.unfocus(entry.children, uid),\n } as InternalNavSelectorGroup;\n }\n if (isInternalNavSelectorEntryALeaf(entry)) {\n return {\n ...this.unfocusAnEntry(entry, uid),\n details: entry.details.map(detail => this.unfocusAnEntry(detail, uid)),\n } as InternalNavSelectorLeaf;\n }\n return this.unfocusAnEntry(entry, uid);\n });\n }\n\n /**\n * Focus the previous entry focusable and set tabIndex to 0 for the previous focusable entry and -1 for all other entries\n *\n * If not previous entries are focusable, entries will not be modified\n *\n * @param entries nav selector entries\n */\n static focusPrevious<T extends InternalNavSelectorEntry>(entries: T[]): InternalNavSelectorEntry[] {\n const flattenEntries = this.flatten(entries);\n\n const idxFocusedId = flattenEntries.findIndex(({ accessibility }) => accessibility.tabIndex === 0);\n\n if (idxFocusedId === 0 || this.previousEntryIsFirstAndNotFocusable(flattenEntries, idxFocusedId)) {\n return entries;\n }\n\n const focusedEntry = flattenEntries[idxFocusedId];\n focusedEntry.accessibility.tabIndex = -1;\n\n for (let i = idxFocusedId - 1; i >= 0; i--) {\n const entry = flattenEntries[i];\n if (entry.focusable) {\n entry.accessibility.tabIndex = 0;\n break;\n }\n }\n\n return this.unflatten(flattenEntries);\n }\n\n /**\n * Focus the next entry focusable and set tabIndex to 0 for the next focusable entry and -1 for all other entries\n *\n * If not next entries are focusable, entries will not be modified\n *\n * @param entries nav selector entries\n */\n static focusNext<T extends InternalNavSelectorEntry>(entries: T[]): InternalNavSelectorEntry[] {\n const flattenEntries = this.flatten(entries);\n\n const focusableFlattenEntries = flattenEntries.filter(entry => entry.focusable);\n\n const idxFocusedId = focusableFlattenEntries.findIndex(({ accessibility }) => accessibility.tabIndex === 0);\n\n if (focusableFlattenEntries.length - 1 <= idxFocusedId) {\n return entries;\n }\n\n focusableFlattenEntries[idxFocusedId].accessibility.tabIndex = -1;\n\n focusableFlattenEntries[idxFocusedId + 1].accessibility.tabIndex = 0;\n\n return this.unflatten(flattenEntries);\n }\n\n private static previousEntryIsFirstAndNotFocusable(flattenEntries: InternalNavSelectorEntry[], idxFocusedId: number): boolean {\n if (idxFocusedId - 1 === 0) {\n const previous = flattenEntries[0];\n return !previous.focusable;\n }\n return false;\n }\n\n private static focusAnEntry(entry: InternalNavSelectorEntry, uid: string): InternalNavSelectorEntry {\n return { ...entry, accessibility: { ...entry.accessibility, tabIndex: entry.uid === uid ? 0 : -1 } };\n }\n\n private static unfocusAnEntry(entry: InternalNavSelectorEntry, uid: string): InternalNavSelectorEntry {\n return { ...entry, accessibility: { ...entry.accessibility, tabIndex: entry.uid === uid ? -1 : entry.accessibility.tabIndex } };\n }\n\n /**\n * Flatten the nav selector entries. It is easier to work with flat entries for the focus management as we need to know which is the previous or the next entry\n * @param entries nav selector entries\n */\n private static flatten(entries: InternalNavSelectorEntry[]): InternalNavSelectorEntry[] {\n return entries.flatMap(entry => {\n if (isInternalNavSelectorEntryAGroup(entry) || isInternalNavSelectorEntryACategory(entry)) {\n return [{ ...entry, children: [] }, ...this.flatten(entry.children)];\n }\n if (isInternalNavSelectorEntryALeaf(entry)) {\n return [{ ...entry, details: [] }, ...entry.details.map(detail => ({ ...detail }))];\n }\n return [{ ...entry }];\n });\n }\n\n /**\n * Unflatten the nav selector entries\n * @param entries nav selector entries\n */\n private static unflatten<T extends InternalNavSelectorEntry>(entries: T[]): InternalNavSelectorEntry[] {\n return entries.reduceRight((acc, entry) => {\n if (!acc.length) {\n return [entry];\n }\n if (entry.accessibility.ariaLevel < acc[0].accessibility.ariaLevel) {\n if (isInternalNavSelectorEntryALeaf(entry)) {\n return [\n {\n ...entry,\n details: acc\n .filter(it => isInternalNavSelectorEntryALeafDetails(it))\n // Force destroying the reference to the original object else Angular will not detect the change\n .map(it => ({ ...it })) as InternalNavSelectorLeafDetails[],\n },\n ...acc.filter(it => !isInternalNavSelectorEntryALeafDetails(it)),\n ];\n } else if (isInternalNavSelectorEntryAGroup(entry) || isInternalNavSelectorEntryACategory(entry)) {\n return [\n {\n ...entry,\n children: acc.filter(\n ({ accessibility }) => accessibility.ariaLevel > entry.accessibility.ariaLevel\n ) as InternalNavSelectorLeaf[],\n },\n ...acc.filter(({ accessibility }) => accessibility.ariaLevel <= entry.accessibility.ariaLevel),\n ];\n }\n }\n return [entry, ...acc];\n }, [] as InternalNavSelectorEntry[]);\n }\n}\n","import {\n InternalNavSelectorCategory,\n InternalNavSelectorEntry,\n InternalNavSelectorGroup,\n InternalNavSelectorLeaf,\n isInternalNavSelectorEntryACategory,\n isInternalNavSelectorEntryAGroup,\n isInternalNavSelectorEntryALeaf,\n isInternalNavSelectorEntryANode,\n} from '../nav-selector';\n\n/**\n * NavSelectorMultiSelect is a utility class that provides methods to select an entry in multiple mode.\n */\nexport class NavSelectorMultiSelect {\n /**\n * Select an entry in multiple mode.\n *\n * Categories are not selectable.\n *\n * Groups and leaves are selectable.\n *\n * Groups may be in undetermined state if some of their children are selected and some are not.\n * @param entries nav selector entries\n * @param entryUid the entry uid to select\n */\n static selectInMultipleMode(entries: InternalNavSelectorEntry[], entryUid: string): InternalNavSelectorEntry[] {\n return entries.map(entry => {\n if (isInternalNavSelectorEntryALeaf(entry)) {\n return this.selectALeafInMultipleMode(entry, entryUid);\n } else if (isInternalNavSelectorEntryAGroup(entry)) {\n return this.selectAGroupInMultipleMode(entry, entryUid);\n } else if (isInternalNavSelectorEntryACategory(entry)) {\n return this.selectACategoryInMultipleMode(entry, entryUid);\n }\n return entry;\n });\n }\n\n /**\n * Select only a leaf in multiple mode.\n *\n * Categories are not selectable.\n *\n * Groups may be in undetermined state if some of their children are selected and some are not.\n * @param entries nav selector entries\n * @param entryUid the entry uid to select\n */\n static selectOnlyALeafInMultipleMode<T extends InternalNavSelectorEntry>(entries: T[], entryUid: string): InternalNavSelectorEntry[] {\n return entries.map(entry => {\n if (isInternalNavSelectorEntryALeaf(entry)) {\n return {\n ...entry,\n selected: entry.uid === entryUid,\n };\n } else if (isInternalNavSelectorEntryACategory(entry)) {\n return {\n ...entry,\n children: this.selectOnlyALeafInMultipleMode(entry.children, entryUid),\n };\n } else if (isInternalNavSelectorEntryAGroup(entry)) {\n const children = entry.children.flatMap(\n child => this.selectOnlyALeafInMultipleMode([child], entryUid) as InternalNavSelectorLeaf[]\n );\n const selected = children.every(child => child.selected || (isInternalNavSelectorEntryALeaf(child) && !child.selectable));\n return {\n ...entry,\n children,\n selected,\n undeterminedSelection: !selected && children.some(child => child.selected),\n };\n }\n return entry;\n });\n }\n\n /**\n * Select all entries in multiple mode.\n *\n * Categories are not selectable.\n *\n * Groups and leaves are selectable.\n * @param entries nav selector entries\n */\n static selectAll(entries: InternalNavSelectorEntry[]): InternalNavSelectorEntry[] {\n return this.selectChildren(entries);\n }\n\n /**\n * Unselect all entries in multiple mode.\n *\n * Categories are not selectable.\n *\n * Groups and leaves are selectable.\n * @param entries nav selector entries\n */\n static unselectAll(entries: InternalNavSelectorEntry[]): InternalNavSelectorEntry[] {\n return this.unselectChildren(entries);\n }\n\n private static selectALeafInMultipleMode(leaf: InternalNavSelectorLeaf, entryUid: string): InternalNavSelectorLeaf {\n let selected = false;\n if (leaf.selectable) {\n selected = leaf.uid === entryUid ? !leaf.selected : leaf.selected;\n }\n return {\n ...leaf,\n selected,\n };\n }\n\n private static selectACategoryInMultipleMode(entry: InternalNavSelectorCategory, entryUid: string): InternalNavSelectorCategory {\n return {\n ...entry,\n children: entry.children.map(child => {\n if (isInternalNavSelectorEntryALeaf(child)) {\n return this.selectALeafInMultipleMode(child, entryUid);\n }\n return this.selectAGroupInMultipleMode(child, entryUid);\n }),\n };\n }\n\n private static selectAGroupInMultipleMode(entry: InternalNavSelectorGroup, entryUid: string): InternalNavSelectorGroup {\n if (!entry.selectable) {\n return entry;\n }\n let selected: boolean;\n let children: InternalNavSelectorLeaf[];\n let undeterminedSelection = false;\n if (entry.uid === entryUid) {\n selected = !entry.selected;\n if (selected) {\n children = this.selectLeafs(entry.children);\n } else {\n children = this.unselectLeafs(entry.children);\n }\n } else {\n children = entry.children.map(child => this.toggleSelectLeaf(child, entryUid));\n selected = children.every(child => child.selected || (isInternalNavSelectorEntryALeaf(child) && !child.selectable));\n undeterminedSelection = !selected && children.some(child => child.selected);\n }\n\n return {\n ...entry,\n children,\n selected,\n undeterminedSelection,\n };\n }\n\n private static toggleSelectLeaf(leaf: InternalNavSelectorLeaf, uid: string): InternalNavSelectorLeaf {\n if (leaf.uid === uid) {\n return {\n ...leaf,\n selected: !leaf.selected,\n };\n }\n return leaf;\n }\n\n private static selectLeafs(leafs: InternalNavSelectorLeaf[]): InternalNavSelectorLeaf[] {\n return leafs.map(leaf => ({\n ...leaf,\n selected: true,\n }));\n }\n\n private static unselectLeafs(leafs: InternalNavSelectorLeaf[]): InternalNavSelectorLeaf[] {\n return leafs.map(leaf => ({\n ...leaf,\n selected: false,\n }));\n }\n\n private static unselectChildren<T extends InternalNavSelectorEntry>(entry: T[]): InternalNavSelectorEntry[] {\n return entry.map(child => {\n if (isInternalNavSelectorEntryALeaf(child)) {\n return {\n ...child,\n selected: false,\n };\n } else if (isInternalNavSelectorEntryACategory(child)) {\n return {\n ...child,\n children: this.unselectChildren(child.children),\n };\n } else if (isInternalNavSelectorEntryANode(child)) {\n return {\n ...child,\n children: this.unselectChildren(child.children),\n selected: false,\n };\n }\n return child;\n });\n }\n\n private static selectChildren<T extends InternalNavSelectorEntry>(entry: T[]): InternalNavSelectorEntry[] {\n return entry.map(child => {\n if (isInternalNavSelectorEntryALeaf(child)) {\n return {\n ...child,\n selected: child.selectable,\n };\n } else if (isInternalNavSelectorEntryACategory(child)) {\n return {\n ...child,\n children: this.selectChildren(child.children),\n };\n } else if (isInternalNavSelectorEntryAGroup(child)) {\n return {\n ...child,\n children: this.selectChildren(child.children),\n selected: true,\n };\n }\n return child;\n });\n }\n}\n","import {\n InternalNavSelectorEntry,\n InternalNavSelectorLeaf,\n InternalNavSelectorLeafDetails,\n isInternalNavSelectorEntryALeaf,\n isInternalNavSelectorEntryANode,\n} from '../nav-selector';\n\n/**\n * NavSelectorSingleSelect is a utility class that provides methods to select a single entry in a nav selector.\n */\nexport class NavSelectorSingleSelect {\n /**\n * Selects a single entry in the nav selector.\n * @param entries nav selector entries\n * @param entryUid the entry uid to select\n */\n static select<T extends InternalNavSelectorEntry>(entries: T[], entryUid: string): InternalNavSelectorEntry[] {\n return entries.map(entry => {\n if (isInternalNavSelectorEntryALeaf(entry)) {\n return this.selectALeaf(entry, entryUid);\n } else if (isInternalNavSelectorEntryANode(entry)) {\n return {\n ...entry,\n children: entry.children.flatMap(child => this.select([child], entryUid)),\n };\n }\n return entry;\n });\n }\n\n private static selectALeaf(leaf: InternalNavSelectorLeaf, entryUid: string): InternalNavSelectorLeaf {\n if (!!leaf.details.length) {\n return this.selectALeafWithDetails(leaf, entryUid);\n }\n return this.selectALeafWithoutDetails(leaf, entryUid);\n }\n\n private static selectALeafWithDetails(leaf: InternalNavSelectorLeaf, entryUid: string): InternalNavSelectorLeaf {\n if (leaf.uid === entryUid) {\n const leafSelected = !leaf.detailsDisplayable && leaf.selectable;\n return {\n ...leaf,\n selected: leafSelected,\n accessibility: {\n ...leaf.accessibility,\n tabIndex: leafSelected ? 0 : -1,\n },\n folded: !leaf.detailsDisplayable,\n details: leaf.details.reduce((details, detail, idx) => {\n const detailSelected = leaf.detailsDisplayable && !detail.displayError && (idx === 0 || !details[idx - 1].selected);\n details.push({\n ...detail,\n selected: detailSelected,\n accessibility: {\n ...detail.accessibility,\n tabIndex: detailSelected ? 0 : -1,\n },\n });\n return details;\n }, [] as InternalNavSelectorLeafDetails[]),\n };\n }\n const details = leaf.details.map(detail => {\n const detailSelected = detail.uid === entryUid && !detail.displayError;\n return {\n ...detail,\n selected: detailSelected,\n accessibility: {\n ...detail.accessibility,\n tabIndex: detailSelected ? 0 : -1,\n },\n };\n });\n\n return {\n ...leaf,\n accessibility: {\n ...leaf.accessibility,\n tabIndex: -1,\n },\n selected: false,\n folded: !leaf.folded ? false : details.every(detail => !detail.selected),\n details,\n };\n }\n\n private static selectALeafWithoutDetails(leaf: InternalNavSelectorLeaf, entryUid: string): InternalNavSelectorLeaf {\n const selected = leaf.selectable && leaf.uid === entryUid;\n return {\n ...leaf,\n selected,\n accessibility: {\n ...leaf.accessibility,\n tabIndex: selected ? 0 : -1,\n },\n folded: true,\n };\n }\n}\n","import {\n InternalNavSelectorCategory,\n InternalNavSelectorEntry,\n InternalNavSelectorGroup,\n InternalNavSelectorLeaf,\n InternalNavSelectorLeafDetails,\n isInternalNavSelectorEntryALeaf,\n isNavSelectorEntryACategory,\n isNavSelectorEntryAGroup,\n isNavSelectorEntryALeaf,\n NavSelectorCategory,\n NavSelectorEntry,\n NavSelectorGroup,\n NavSelectorLeaf,\n NavSelectorLeafDetails,\n} from '../nav-selector';\nimport { NavSelectorAccessibility } from '../utils/nav-selector.accessibility';\nimport { NavSelectorMultiSelect } from '../utils/nav-selector.multi-select';\nimport { NavSelectorSingleSelect } from './nav-selector.single-select';\n\nconst LeafLogics = {\n DISABLED: 'DISABLED',\n FEATURE_LOCKED: 'FEATURE_LOCKED',\n TOKEN_INVALID: 'TOKEN_INVALID',\n COUNTER: 'COUNTER',\n} as const;\ntype LeafLogics = keyof typeof LeafLogics;\n\n/**\n * NavSelectorBuilder is a utility class that builds the NavSelector entries for single and multiple select modes.\n * It also checks the structure of the entries to ensure they are valid.\n */\nexport class NavSelectorBuilder {\n // /!\\/!\\ Order of logics is important /!\\/!\\\n private static LEAF_LOGICS_PRIORITY: Record<LeafLogics, (lef: NavSelectorLeaf) => boolean> = {\n [LeafLogics.DISABLED]: (leaf: NavSelectorLeaf) => leaf.disableReason !== null,\n [LeafLogics.FEATURE_LOCKED]: (leaf: NavSelectorLeaf) => leaf.featureLocked,\n [LeafLogics.TOKEN_INVALID]: (leaf: NavSelectorLeaf) => leaf.tokenInvalid,\n [LeafLogics.COUNTER]: (leaf: NavSelectorLeaf) => leaf.counter !== null,\n };\n\n /**\n * Builds the NavSelector entries for single select mode.\n * @param entries nav selector entries\n * @param selectedEntryUid selected entry uid\n * @param detailsDisplayedLimit number of details displayed limit\n */\n static build(entries: NavSelectorEntry[], selectedEntryUid: string | null, detailsDisplayedLimit: number): InternalNavSelectorEntry[] {\n this.structureChecker(entries);\n const builtEntries = this.buildEntries(entries, false, 1, detailsDisplayedLimit);\n if (selectedEntryUid) {\n return NavSelectorSingleSelect.select(builtEntries, selectedEntryUid);\n }\n return builtEntries;\n }\n\n /**\n * Builds the NavSelector entries for multiple select mode.\n * @param entries nav selector entries\n * @param selectedEntryUids selected entry uids\n * @param detailsDisplayedLimit number of details displayed limit\n */\n static buildInMultipleMode(\n entries: NavSelectorEntry[],\n selectedEntryUids: string[] | null,\n detailsDisplayedLimit: number\n ): InternalNavSelectorEntry[] {\n this.structureChecker(entries, true);\n let builtEntries = this.buildEntries(entries, true, 1, detailsDisplayedLimit);\n if (selectedEntryUids) {\n for (const selectedEntryUid of selectedEntryUids) {\n builtEntries = NavSelectorMultiSelect.selectInMultipleMode(builtEntries, selectedEntryUid);\n }\n }\n return builtEntries;\n }\n\n private static structureChecker(entries: NavSelectorEntry[], multipleModeEnabled = false): void {\n entries.forEach(entry => {\n if (isNavSelectorEntryAGroup(entry) || isNavSelectorEntryACategory(entry)) {\n this.structureChecker(entry.children, multipleModeEnabled);\n } else if (isNavSelectorEntryALeaf(entry)) {\n if (entry.details.length && multipleModeEnabled) {\n console.error(`NavSelectorBuilder: Leaf ${entry.uid} with details is not allowed in multiple mode`);\n }\n }\n });\n }\n\n private static buildEntries(\n entries: NavSelectorEntry[],\n multipleModeEnabled: boolean,\n level = 1,\n detailsDisplayedLimit: number\n ): InternalNavSelectorEntry[] {\n const newEntries = entries\n .map((entry, idx) =>\n this.buildEntry(entry, { multipleModeEnabled, level, idx, totalNumberOfEntry: entries.length, detailsDisplayedLimit })\n )\n .filter(it => it !== null);\n return NavSelectorAccessibility.resetFocus(newEntries);\n }\n\n private static buildEntry(\n entry: NavSelectorEntry,\n {\n multipleModeEnabled,\n level,\n idx,\n totalNumberOfEntry,\n detailsDisplayedLimit,\n }: { multipleModeEnabled: boolean; level: number; idx: number; totalNumberOfEntry: number; detailsDisplayedLimit: number }\n ): InternalNavSelectorEntry | null {\n if (isNavSelectorEntryALeaf(entry)) {\n return this.buildLeaf(entry, {\n multipleModeEnabled,\n level,\n idx,\n totalNumberOfLeaf: totalNumberOfEntry,\n focusable: true,\n detailsDisplayedLimit,\n });\n } else if (isNavSelectorEntryACategory(entry)) {\n return this.buildCategory(entry, {\n multipleModeEnabled,\n level,\n idx,\n totalNumberOfCategory: totalNumberOfEntry,\n detailsDisplayedLimit,\n });\n } else {\n return this.buildGroup(entry, {\n multipleModeEnabled,\n level,\n idx,\n totalNumberOfGroups: totalNumberOfEntry,\n focusable: true,\n detailsDisplayedLimit,\n });\n }\n }\n\n private static buildCategoryChildren(\n entry: NavSelectorCategory,\n {\n focusable,\n multipleModeEnabled,\n categoryLevel,\n detailsDisplayedLimit,\n }: {\n focusable: boolean;\n multipleModeEnabled: boolean;\n categoryLevel: number;\n detailsDisplayedLimit: number;\n }\n ): (InternalNavSelectorGroup | InternalNavSelectorLeaf)[] {\n return entry.children\n .map((child, idx) => {\n if (isNavSelectorEntryALeaf(child)) {\n return this.buildLeaf(child, {\n focusable,\n multipleModeEnabled,\n level: categoryLevel + 1,\n idx,\n totalNumberOfLeaf: entry.children.length,\n detailsDisplayedLimit,\n });\n } else {\n return this.buildGroup(child, {\n focusable,\n multipleModeEnabled,\n level: categoryLevel + 1,\n idx,\n totalNumberOfGroups: entry.children.length,\n detailsDisplayedLimit,\n });\n }\n })\n .filter(it => it !== null);\n }\n\n private static buildCategory(\n node: NavSelectorCategory,\n {\n multipleModeEnabled,\n level,\n idx,\n totalNumberOfCategory,\n detailsDisplayedLimit,\n }: {\n multipleModeEnabled: boolean;\n level: number;\n idx: number;\n totalNumberOfCategory: number;\n detailsDisplayedLimit: number;\n }\n ): InternalNavSelectorCategory {\n const children = this.buildCategoryChildren(node, {\n focusable: !node.folded,\n multipleModeEnabled,\n categoryLevel: level,\n detailsDisplayedLimit,\n });\n\n return {\n uid: node.uid,\n alias: node.alias,\n children,\n hidden: false,\n focusable: true,\n accessibility: {\n tabIndex: -1,\n ariaLevel: level,\n ariaPosinset: idx + 1,\n ariaSetsize: totalNumberOfCategory,\n },\n folded: node.folded,\n type: node.type,\n };\n }\n\n private static buildGroupChildren(\n entry: NavSelectorGroup,\n {\n multipleModeEnabled,\n groupLevel,\n focusable,\n detailsDisplayedLimit,\n }: { multipleModeEnabled: boolean; groupLevel: number; focusable: boolean; detailsDisplayedLimit: number }\n ): InternalNavSelectorLeaf[] {\n return entry.children\n .map((child, idx) =>\n this.buildLeaf(child, {\n multipleModeEnabled,\n level: groupLevel + 1,\n idx,\n totalNumberOfLeaf: entry.children.length,\n focusable: focusable && !entry.folded,\n detailsDisplayedLimit,\n })\n )\n .filter(it => it !== null);\n }\n\n private static buildGroup(\n node: NavSelectorGroup,\n {\n focusable,\n multipleModeEnabled,\n level,\n idx,\n totalNumberOfGroups,\n detailsDisplayedLimit,\n }: {\n focusable: boolean;\n multipleModeEnabled: boolean;\n level: number;\n idx: number;\n totalNumberOfGroups: number;\n detailsDisplayedLimit: number;\n }\n ): InternalNavSelectorGroup {\n const children = this.buildGroupChildren(node, { multipleModeEnabled, groupLevel: level, focusable, detailsDisplayedLimit });\n const displayTokenInvalid = children.some(({ displayTokenInvalid }) => displayTokenInvalid);\n\n const selectedChildrenCount = children.filter(({ selected }) => selected).length;\n\n return {\n uid: node.uid,\n alias: node.alias,\n children,\n childrenPictureUrlSample: children\n .map((child, idx) =>\n isInternalNavSelectorEntryALeaf(child) && idx < 4 ? { url: child.pictureUrl, initial: child.alias[0] } : null\n )\n .filter(it => it !== null),\n hidden: false,\n accessibility: {\n tabIndex: -1,\n ariaPosinset: idx + 1,\n ariaLevel: level,\n ariaSetsize: totalNumberOfGroups,\n },\n focusable,\n displayCounter: node.folded && children.some(child => isInternalNavSelectorEntryALeaf(child) && child.counter !== 0),\n counter: children.reduce((acc, { counter }) => acc + counter, 0),\n displayTokenInvalid,\n selected: false,\n selectable: multipleModeEnabled && children.some(({ selectable }) => selectable),\n undeterminedSelection: selectedChildrenCount !== children.length && selectedChildrenCount > 0,\n folded: node.folded,\n type: node.type,\n };\n }\n\n private static buildLeaf(\n leaf: NavSelectorLeaf,\n {\n focusable,\n multipleModeEnabled,\n level,\n idx,\n totalNumberOfLeaf,\n detailsDisplayedLimit,\n }: {\n focusable: boolean;\n multipleModeEnabled: boolean;\n level: number;\n idx: number;\n totalNumberOfLeaf: number;\n detailsDisplayedLimit: number;\n }\n ): InternalNavSelectorLeaf | null {\n if (leaf.missingPermission) {\n return null;\n }\n\n const detailsDisplayable = this.isLeafLogicValid(leaf, LeafLogics.COUNTER) && !!leaf.details.length;\n const foldable = !!leaf.details.length && detailsDisplayable;\n const folded = true;\n const counter = (leaf.details.reduce((acc, detail) => acc + (detail.counter ?? 0), 0) || leaf.counter) ?? 0;\n const counterDisplayable = counter !== 0 && this.isLeafLogicValid(leaf, LeafLogics.COUNTER);\n\n const disabled = leaf.disableReason !== null;\n\n const viewMoreDisplayable = leaf.details.length > detailsDisplayedLimit;\n\n return {\n uid: leaf.uid,\n alias: leaf.alias,\n pictureUrl: leaf.pictureUrl,\n disabled,\n disableReason: leaf.disableReason,\n hidden: false,\n focusable: focusable && !disabled,\n accessibility: {\n tabIndex: -1,\n ariaPosinset: idx + 1,\n ariaLevel: level,\n ariaSetsize: totalNumberOfLeaf,\n },\n foldable,\n folded,\n displayCounter: folded && counterDisplayable,\n counterDisplayable,\n counter,\n network: leaf.network,\n displayTokenInvalid: leaf.tokenInvalid && this.isLeafLogicValid(leaf, LeafLogics.TOKEN_INVALID, LeafLogics.COUNTER),\n displayFeatureLocked:\n leaf.featureLocked && this.isLeafLogicValid(leaf, LeafLogics.FEATURE_LOCKED, LeafLogics.TOKEN_INVALID, LeafLogics.COUNTER),\n selected: false,\n selectable: multipleModeEnabled\n ? this.isLeafLogicValid(leaf, LeafLogics.COUNTER)\n : this.isLeafLogicValid(leaf, LeafLogics.FEATURE_LOCKED, LeafLogics.TOKEN_INVALID, LeafLogics.COUNTER),\n detailsDisplayable,\n details: leaf.details.map(detail => this.buildLeafDetail(detail, level + 1, focusable && !folded)),\n type: 'LEAF',\n viewMoreDisplayable,\n viewMoreDisplayed: viewMoreDisplayable,\n viewMoreDetailsDisplayedLimit: detailsDisplayedLimit,\n };\n }\n\n private static buildLeafDetail(detail: NavSelectorLeafDetails, level: number, focusable: boolean): InternalNavSelectorLeafDetails {\n return {\n uid: detail.uid,\n counter: detail.counter ?? 0,\n displayCounter: detail.counter !== null,\n alias: detail.name,\n hidden: false,\n accessibility: {\n tabIndex: -1,\n ariaPosinset: 1,\n ariaLevel: level,\n ariaSetsize: 1,\n },\n focusable,\n selected: false,\n errorReason: detail.errorReason,\n displayError: detail.errorReason !== null,\n type: 'LEAF_DETAILS',\n };\n }\n\n private static isLeafLogicValid(leaf: NavSelectorLeaf, ...excludes: LeafLogics[]): boolean {\n return Object.entries(this.LEAF_LOGICS_PRIORITY)\n .filter(([key]) => !excludes.includes(key as LeafLogics))\n .every(([, logic]) => !logic(leaf));\n }\n}\n","import { InternalNavSelectorLeaf } from '../nav-selector';\n\nexport const isInternalNavSelectorEntryALeafFocusable = (\n leaf: InternalNavSelectorLeaf,\n { parentFolded, minified }: { parentFolded: boolean; minified: boolean }\n): boolean => {\n if (parentFolded) {\n return false;\n }\n if (minified) {\n return !leaf.disabled && !leaf.displayTokenInvalid && !leaf.displayFeatureLocked;\n }\n return !leaf.disabled;\n};\n","import {\n InternalNavSelectorEntry,\n InternalNavSelectorGroup,\n InternalNavSelectorLeaf,\n isInternalNavSelectorEntryACategory,\n isInternalNavSelectorEntryAGroup,\n isInternalNavSelectorEntryALeaf,\n isInternalNavSelectorEntryANode,\n} from '../nav-selector';\nimport { isInternalNavSelectorEntryALeafFocusable } from '../utils/leaf.utils';\nimport { NavSelectorAccessibility } from '../utils/nav-selector.accessibility';\n\n/**\n * NavSelectorFilter is a utility class that provides methods to filter entries\n */\nexport class NavSelectorFilter {\n /**\n * Filters the entries based on the search string\n *\n * The search string is normalized and lowercase and trimmed.\n *\n * If a category matches the search string, all its children are unfolded, marked as focusable, and not hidden.\n *\n * If a group matches the search string, the group is unfolded and all its children are unfolded, marked as focusable, and not hidden.\n *\n * If a leaf matches the search string, it is marked as not hidden and focusable.\n *\n * Else the entry marked as hidden and not focusable.\n *\n * It also determines whenever counter and token invalid should be displayed on groups and leaves.\n *\n * @param entries The entries to filter.\n * @param search The search string.\n * @returns The filtered entries.\n */\n static filter(entries: InternalNavSelectorEntry[], search: string): InternalNavSelectorEntry[] {\n const formattedSearch = this.cleanValue(search);\n if (!formattedSearch) {\n return entries;\n }\n return this.filterEntries(entries, formattedSearch);\n }\n\n private static filterEntries<T extends InternalNavSelectorEntry>(entries: T[], formattedSearch: string): InternalNavSelectorEntry[] {\n const newEntries = entries.map(entry => {\n if (this.matches(entry.alias, formattedSearch)) {\n return this.recursivelyUnfoldEntry(entry);\n }\n if (isInternalNavSelectorEntryANode(entry)) {\n const children = this.filterEntries(entry.children, formattedSearch);\n if (children.every(({ hidden }) => hidden)) {\n return {\n ...entry,\n children,\n hidden: true,\n };\n }\n return {\n ...entry,\n hidden: false,\n displayCounter: false,\n displayTokenInvalid: false,\n folded: false,\n children,\n };\n }\n return {\n ...entry,\n focusable: false,\n hidden: true,\n };\n });\n return NavSelectorAccessibility.resetFocus(newEntries);\n }\n\n private static recursivelyUnfoldEntry(entry: InternalNavSelectorEntry): InternalNavSelectorEntry {\n if (isInternalNavSelectorEntryAGroup(entry)) {\n const children = entry.children.map(child => this.recursivelyUnfoldEntry(child) as InternalNavSelectorLeaf);\n return {\n ...entry,\n folded: false,\n children,\n displayCounter: false,\n displayTokenInvalid: false,\n };\n } else if (isInternalNavSelectorEntryALeaf(entry)) {\n return {\n ...entry,\n hidden: false,\n focusable: isInternalNavSelectorEntryALeafFocusable(entry, { parentFolded: false, minified: false }),\n displayCounter: entry.counterDisplayable,\n };\n } else if (isInternalNavSelectorEntryACategory(entry)) {\n const children = entry.children.map(\n child => this.recursivelyUnfoldEntry(child) as InternalNavSelectorGroup | InternalNavSelectorLeaf\n );\n return {\n ...entry,\n folded: false,\n hidden: false,\n children,\n };\n }\n return entry;\n }\n\n private static matches(alias: string, formattedSearch: string): boolean {\n return this.cleanValue(alias).includes(formattedSearch);\n }\n\n private static cleanValue(value: string): string {\n return value.trim().normalize('NFKC').toLowerCase();\n }\n}\n","import {\n InternalNavSelectorCategory,\n InternalNavSelectorEntry,\n InternalNavSelectorGroup,\n InternalNavSelectorLeaf,\n isInternalNavSelectorEntryACategory,\n isInternalNavSelectorEntryAGroup,\n isInternalNavSelectorEntryALeaf,\n} from '../nav-selector';\nimport { isInternalNavSelectorEntryALeafFocusable } from '../utils/leaf.utils';\n\n/**\n * Class to handle the folding and unfolding of nav selector entries.\n */\nexport class NavSelectorFolding {\n /**\n * Toggle the folding state of an entry.\n *\n * @see {@link NavSelectorFolding.fold} and {@link NavSelectorFolding.unfold} for more information on folding and unfolding.\n *\n * @param entries nav selector entries\n * @param entryUid the entry uid to toggle\n * @param minified true if the nav selector is minified. Needed for leaf as they are not foldable in minified mode\n */\n static toggleFolding<T extends InternalNavSelectorEntry>(\n entries: T[],\n entryUid: string,\n minified: boolean\n ): InternalNavSelectorEntry[] {\n return this.toggleEntryFolding(entries, entryUid, minified);\n }\n\n /**\n * Fold an entry.\n *\n * Set unfocusable on all children of the folded entry.\n * Compute whenever the counter and token invalid should be displayed on groups and leaves.\n *\n * @param entries nav selector entries\n * @param entryUid the entry uid to fold\n * @param minified true if the nav selector is minified. Needed for leaf as they are not foldable in minified mode\n */\n static fold<T extends InternalNavSelectorEntry>(entries: T[], entryUid: string, minified: boolean): InternalNavSelectorEntry[] {\n return this.foldEntry(entries, entryUid, minified);\n }\n\n /**\n * Unfold an entry.\n *\n * Set focusable on all children of the folded entry.\n * Compute whenever the counter and token invalid should be displayed on groups and leaves.\n *\n * @param entries nav selector entries\n * @param entryUid the entry uid to unfold\n * @param minified true if the nav selector is minified. Needed for leaf as they are not foldable in minified mode\n */\n static unfold<T extends InternalNavSelectorEntry>(entries: T[], entryUid: string, minified: boolean): InternalNavSelectorEntry[] {\n return this.unfoldEntry(entries, entryUid, minified);\n }\n\n private static toggleEntryFolding<T extends InternalNavSelectorEntry>(\n entries: T[],\n entryUid: string,\n minified: boolean,\n parentFolded = false\n ): InternalNavSelectorEntry[] {\n return entries.map(entry => {\n if (isInternalNavSelectorEntryACategory(entry)) {\n if (entry.uid === entryUid) {\n const folded = !entry.folded;\n if (folded) {\n return this.foldCategory(entry, minified);\n } else {\n return this.unfoldCategory(entry, minified);\n }\n }\n return {\n ...entry,\n children: this.toggleEntryFolding(entry.children, entryUid, minified, entry.folded),\n };\n }\n if (isInternalNavSelectorEntryAGroup(entry)) {\n if (entry.uid === entryUid) {\n const folded = !entry.folded;\n if (folded) {\n return this.foldGroup(entry, minified);\n } else {\n return this.unfoldGroup(entry, minified);\n }\n }\n return {\n ...entry,\n children: this.toggleEntryFolding(entry.children, entryUid, minified, parentFolded || entry.folded),\n };\n }\n if (isInternalNavSelectorEntryALeaf(entry)) {\n if (entry.uid === entryUid) {\n const folded = !entry.folded;\n if (folded) {\n return this.foldLeaf(entry, minified);\n } else {\n return this.unfoldLeaf(entry, minified);\n }\n }\n return {\n ...entry,\n focusable: isInternalNavSelectorEntryALeafFocusable(entry, { minified, parentFolded }),\n };\n }\n return { ...entry, focusable: !parentFolded };\n });\n }\n\n private static foldEntry<T extends InternalNavSelectorEntry>(\n entries: T[],\n entryUid: string,\n minified: boolean,\n parentFolded = false\n ): InternalNavSelectorEntry[] {\n return entries.map(entry => {\n if (isInternalNavSelectorEntryACategory(entry)) {\n if (entry.uid === entryUid) {\n return this.foldCategory(entry, minified);\n }\n return {\n ...entry,\n children: this.foldEntry(entry.children, entryUid, minified, entry.folded),\n };\n }\n if (isInternalNavSelectorEntryAGroup(entry)) {\n if (entry.uid === entryUid) {\n return this.foldGroup(entry, minified);\n }\n return {\n ...entry,\n focusable: !parentFolded,\n children: this.foldEntry(entry.children, entryUid, minified, parentFolded || entry.folded),\n };\n }\n if (isInternalNavSelectorEntryALeaf(entry)) {\n if (entry.uid === entryUid) {\n return this.foldLeaf(entry, minified);\n }\n return {\n ...entry,\n focusable: isInternalNavSelectorEntryALeafFocusable(entry, { minified, parentFolded }),\n };\n }\n return { ...entry, focusable: !parentFolded };\n });\n }\n\n private static unfoldEntry<T extends InternalNavSelectorEntry>(\n entries: T[],\n entryUid: string,\n minified: boolean,\n parentFolded = false\n ): InternalNavSelectorEntry[] {\n return entries.map(entry => {\n if (isInternalNavSelectorEntryACategory(entry)) {\n if (entry.uid === entryUid) {\n return this.unfoldCategory(entry, minified);\n }\n return {\n ...entry,\n children: this.unfoldEntry(entry.children, entryUid, minified, entry.folded),\n };\n }\n if (isInternalNavSelectorEntryAGroup(entry)) {\n if (entry.uid === entryUid) {\n return this.unfoldGroup(entry, minified);\n }\n return {\n ...entry,\n children: this.unfoldEntry(entry.children, entryUid, minified, parentFolded || entry.folded),\n focusable: !parentFolded,\n };\n }\n if (isInternalNavSelectorEntryALeaf(entry)) {\n if (entry.uid === entryUid) {\n return this.unfoldLeaf(entry, minified);\n }\n return {\n ...entry,\n focusable: isInternalNavSelectorEntryALeafFocusable(entry, { minified, parentFolded }),\n };\n }\n return { ...entry, focusable: !parentFolded };\n });\n }\n\n private static foldCategory(category: InternalNavSelectorCategory, minified: boolean): InternalNavSelectorCategory {\n return {\n ...category,\n folded: true,\n children: this.foldEntry(category.children, category.uid, minified, true) as (\n | InternalNavSelectorLeaf\n | InternalNavSelectorGroup\n )[],\n };\n }\n\n private static unfoldCategory(category: InternalNavSelectorCategory, minified: boolean): InternalNavSelectorCategory {\n return {\n ...category,\n folded: false,\n children: this.unfoldEntry(category.children, category.uid, minified, false) as (\n | InternalNavSelectorLeaf\n | InternalNavSelectorGroup\n )[],\n };\n }\n\n private static foldGroup(group: InternalNavSelectorGroup, minified: boolean): InternalNavSelectorGroup {\n return {\n ...group,\n folded: true,\n children: this.foldEntry(group.children, group.uid, minified, true) as InternalNavSelectorLeaf[],\n displayCounter: !!group.counter,\n displayTokenInvalid: group.children.some(({ displayTokenInvalid }) => displayTokenInvalid),\n };\n }\n\n private static unfoldGroup(group: InternalNavSelectorGroup, minified: boolean): InternalNavSelectorGroup {\n return {\n ...group,\n folded: false,\n children: this.unfoldEntry(group.children, group.uid, minified, false) as InternalNavSelectorLeaf[],\n displayCounter: false,\n displayTokenInvalid: false,\n };\n }\n\n private static foldLeaf(leaf: InternalNavSelectorLeaf, minified: boolean): InternalNavSelectorLeaf {\n if (!leaf.foldable || minified) {\n return leaf;\n }\n return {\n ...leaf,\n displayCounter: true,\n folded: true,\n details: leaf.details.map(detail => ({ ...detail, focusable: false })),\n };\n }\n\n private static unfoldLeaf(leaf: InternalNavSelectorLeaf, minified: boolean): InternalNavSelectorLeaf {\n if (!leaf.foldable || minified) {\n return leaf;\n }\n return {\n ...leaf,\n displayCounter: false,\n folded: false,\n details: leaf.details.map((detail, idx) => ({\n ...detail,\n focusable: idx < leaf.viewMoreDetailsDisplayedLimit,\n })),\n };\n }\n}\n","import {\n InternalNavSelectorCategory,\n InternalNavSelectorEntry,\n InternalNavSelectorGroup,\n isInternalNavSelectorEntryALeafDetails,\n isInternalNavSelectorEntryANode,\n} from '../nav-selector';\nimport { isInternalNavSelectorEntryALeafFocusable } from '../utils/leaf.utils';\n\n/**\n * NavSelectorMinifying is a utility class that provides methods to apply rules on entries when minifying or expanded nav selector.\n */\nexport class NavSelectorMinifying {\n /**\n * When minifying the nav selector, compute the focusable state of the entries.\n *\n * Leaf are not focusable in any error state when minified.\n * Detail are not focusable when minified.\n *\n * @param entries The entries to minify.\n * @returns The modified entries.\n */\n static minify<T extends InternalNavSelectorEntry>(entries: T[]): InternalNavSelectorEntry[] {\n return this.compute(entries, true);\n }\n\n /**\n * When expanding the nav selector, compute the focusable state of the entries.\n *\n * Leaf are not focusable in disabled state when expanded.\n * Detail are focusable when expanded.\n *\n * @param entries The entries to minify.\n * @returns The modified entries.\n */\n static expand<T extends InternalNavSelectorEntry>(entries: T[]): InternalNavSelectorEntry[] {\n return this.compute(entries, false);\n }\n\n private static compute<T extends InternalNavSelectorEntry>(\n entries: T[],\n minified: boolean,\n parent: InternalNavSelectorGroup | InternalNavSelectorCategory | null = null\n ): InternalNavSelectorEntry[] {\n return entries.map(entry => {\n if (isInternalNavSelectorEntryALeafDetails(entry)) {\n return { ...entry, focusable: !minified };\n }\n if (isInternalNavSelectorEntryANode(entry)) {\n return {\n ...entry,\n children: this.compute(entry.children, minified, entry),\n };\n }\n\n return {\n ...entry,\n focusable: isInternalNavSelectorEntryALeafFocusable(entry, { parentFolded: parent?.folded === true, minified: minified }),\n details: this.compute(entry.details, minified),\n };\n });\n }\n}\n","import { InternalNavSelectorEntry, isInternalNavSelectorEntryALeaf, isInternalNavSelectorEntryANode } from '../nav-selector';\n\n/**\n * Utility class to handle the view more functionality on leaves\n */\nexport class NavSelectorViewMore {\n /**\n * Change the view more details displayed limit on leaves\n * @param entries nav selector entries\n * @param limit the number of details we want to display by default\n */\n static changeViewMoreDetailsDisplayedLimit<T extends InternalNavSelectorEntry>(\n entries: T[],\n limit: number\n ): InternalNavSelectorEntry[] {\n return entries.map(entry => {\n if (isInternalNavSelectorEntryANode(entry)) {\n return {\n ...entry,\n children: this.changeViewMoreDetailsDisplayedLimit(entry.children, limit),\n };\n }\n if (isInternalNavSelectorEntryALeaf(entry)) {\n const viewMoreDisplayable = entry.details.length > limit;\n return {\n ...entry,\n viewMoreDisplayed: viewMoreDisplayable,\n viewMoreDisplayable,\n viewMoreDetailsDisplayedLimit: limit,\n details: entry.details.map((detail, idx) => ({\n ...detail,\n focusable: entry.focusable && !entry.folded && idx < limit,\n })),\n };\n }\n return entry;\n });\n }\n\n /**\n * We want to display all details of the leaf\n *\n * set viewMoreDisplayed to false and set all details as focusable\n *\n * @param entries nav selector entries\n * @param leafUid the uid of the leaf we want to view all details\n */\n static viewMore<T extends InternalNavSelectorEntry>(entries: T[], leafUid: string): InternalNavSelectorEntry[] {\n return entries.map(entry => {\n if (isInternalNavSelectorEntryANode(entry)) {\n return {\n ...entry,\n children: this.viewMore(entry.children, leafUid),\n };\n }\n if (isInternalNavSelectorEntryALeaf(entry)) {\n if (entry.uid === leafUid) {\n return {\n ...entry,\n viewMoreDisplayed: false,\n details: entry.details.map(detail => ({\n ...detail,\n focusable: true,\n })),\n };\n }\n }\n return entry;\n });\n }\n\n /**\n * We want to display only the number of details of the leaf corresponding to the viewMoreDetailsDisplayedLimit\n *\n * set viewMoreDisplayed to true and set only the details with an index lower than the limit as focusable\n *\n * @param entries nav selector entries\n * @param uid the uid of the leaf we want to view all details\n */\n static viewLess<T extends InternalNavSelectorEntry>(entries: T[], uid: string): InternalNavSelectorEntry[] {\n return entries.map(entry => {\n if (isInternalNavSelectorEntryANode(entry)) {\n return {\n ...entry,\n children: this.viewLess(entry.children, uid),\n };\n }\n if (isInternalNavSelectorEntryALeaf(entry)) {\n if (entry.uid === uid) {\n return {\n ...entry,\n viewMoreDisplayed: true,\n details: entry.details.map((detail, idx) => ({\n ...detail,\n focusable: idx < entry.viewMoreDetailsDisplayedLimit,\n })),\n };\n }\n }\n return entry;\n });\n }\n}\n","import { computed, effect, Injectable, signal, TemplateRef } from '@angular/core';\nimport {\n InternalNavSelectorEntry,\n InternalNavSelectorLeaf,\n InternalNavSelectorLeafDetails,\n isInternalNavSelectorEntryALeaf,\n isInternalNavSelectorEntryANode,\n NavSelectorEntry,\n NavSelectorTranslatedTexts,\n} from './nav-selector';\nimport { NavSelectorAccessibility } from './utils/nav-selector.accessibility';\nimport { NavSelectorBuilder } from './utils/nav-selector.builder';\nimport { NavSelectorFilter } from './utils/nav-selector.filter';\nimport { NavSelectorFolding } from './utils/nav-selector.folding';\nimport { NavSelectorMinifying } from './utils/nav-selector.minifying';\nimport { NavSelectorMultiSelect } from './utils/nav-selector.multi-select';\nimport { NavSelectorSingleSelect } from './utils/nav-selector.single-select';\nimport { NavSelectorViewMore } from './utils/nav-selector.view-more';\n\n/**\n * NavSelectorState is a service that manages the state of the nav selector.\n *\n * It should be provided by the component to ensure that if many nav selectors are used in the same page, they don't share the same state.\n */\n@Injectable()\nexport class NavSelectorState {\n private entries = signal<InternalNavSelectorEntry[]>([]);\n private multipleModeEnabled = signal<boolean>(false);\n private _texts = signal<NavSelectorTranslatedTexts>({\n title: '',\n only: '',\n tokenInvalid: '',\n featureLocked: '',\n searchPlaceholder: '',\n noResults: '',\n viewMore: '',\n viewLess: '',\n });\n private lastSelectedUids = signal<string[]>([]);\n\n isMultipleModeEnabled = this.multipleModeEnabled;\n search = signal<string>('');\n filteredEntries = computed(() => NavSelectorFilter.filter(this.entries(), this.search()));\n noResults = computed(() => this.filteredEntries().every(({ hidden }) => hidden));\n texts = this._texts.asReadonly();\n\n leafActionProjection = signal<ReadonlyArray<TemplateRef<unknown>> | undefined>(undefined);\n\n expanded = signal(true);\n expandedAfterDelay = signal(true);\n\n selectedUidsChangeCallback: ((selectedUids: string[]) => void) | null = null;\n\n constructor() {\n effect(\n () => {\n const newSelectedUids = this.collectSelectedUids(this.entries());\n if (this.selectedUidsChangeCallback) {\n this.selectedUidsChangeCallback(newSelectedUids);\n }\n },\n { allowSignalWrites: true }\n );\n }\n\n updateMultiModeEnabled(enabled: boolean) {\n this.multipleModeEnabled.set(enabled);\n }\n\n updateEntries(entries: NavSelectorEntry[], initialSelectedEntryUids: string[], detailsDisplayedLimit: number) {\n if (this.multipleModeEnabled()) {\n this.entries.set(NavSelectorBuilder.buildInMultipleMode(entries, initialSelectedEntryUids, detailsDisplayedLimit));\n } else {\n this.entries.set(NavSelectorBuilder.build(entries, initialSelectedEntryUids?.[0] ?? null, detailsDisplayedLimit));\n }\n }\n\n onGroupToggleFolding(group: InternalNavSelectorEntry) {\n this.entries.update(entries => NavSelectorFolding.toggleFolding(entries, group.uid, !this.expanded()));\n }\n\n onNodeSelect(node: InternalNavSelectorEntry) {\n this.entries.update(entries => NavSelectorMultiSelect.selectInMultipleMode(entries, node.uid));\n }\n\n onLeafClicked(leaf: InternalNavSelectorLeaf) {\n if (!leaf.selectable) {\n return;\n }\n if (this.multipleModeEnabled()) {\n this.entries.update(entries => NavSelectorMultiSelect.selectInMultipleMode(entries, leaf.uid));\n } else {\n this.entries.update(entries => NavSelectorSingleSelect.select(entries, leaf.uid));\n }\n }\n\n onLeafToggleFolding(leaf: InternalNavSelectorEntry) {\n this.entries.update(entries => NavSelectorFolding.toggleFolding(entries, leaf.uid, !this.expanded()));\n }\n\n onLeafDetailClicked(leafDetail: InternalNavSelectorLeafDetails) {\n this.entries.update(entries => NavSelectorSingleSelect.select(entries, leafDetail.uid));\n }\n\n updateTexts(texts: NavSelectorTranslatedTexts) {\n this._texts.set(texts);\n }\n\n selectOnlyLeaf(leaf: InternalNavSelectorLeaf) {\n this.entries.update(entries => NavSelectorMultiSelect.selectOnlyALeafInMultipleMode(entries, leaf.uid));\n }\n\n toggleExpanded() {\n this.expanded.update(expanded => !expanded);\n this.entries.update(entries => {\n if (this.expanded()) {\n return NavSelectorMinifying.expand(entries);\n }\n return NavSelectorMinifying.minify(entries);\n });\n if (!this.expanded()) {\n setTimeout(() => this.expandedAfterDelay.set(this.expanded()), 150);\n } else {\n this.expandedAfterDelay.set(this.expanded());\n }\n }\n\n onSelectionChange(uids: string[]) {\n // Avoid infinite loop if you put unexisting uids as select will generate the same entries but with different reference\n if (JSON.stringify(uids) === JSON.stringify(this.lastSelectedUids())) {\n return;\n }\n this.lastSelectedUids.set(uids);\n const selectedUids = this.collectSelectedUids(this.entries());\n const uidToSelect = uids.filter(uid => selectedUids.every(selectedUid => selectedUid !== uid));\n const uidToUnselect = selectedUids.filter(uid => uids.every(selectedUid => selectedUid !== uid));\n\n if (!uidToSelect.length && !uidToUnselect.length) {\n return;\n }\n\n let entries = this.entries();\n\n if (this.multipleModeEnabled()) {\n for (const uid of [...uidToSelect, ...uidToUnselect]) {\n entries = NavSelectorMultiSelect.selectInMultipleMode(entries, uid);\n }\n } else {\n entries = NavSelectorSingleSelect.select(entries, uids[0]);\n }\n this.entries.set(entries);\n }\n\n registerOnSelectedUidsChange(callback: (selectedUids: string[]) => void) {\n this.selectedUidsChangeCallback = callback;\n }\n\n onArrowDown() {\n this.entries.update(entries => NavSelectorAccessibility.focusNext(entries));\n }\n\n onArrowUp() {\n this.entries.update(entries => NavSelectorAccessibility.focusPrevious(entries));\n }\n\n private collectSelectedUids(entries: InternalNavSelectorEntry[]): string[] {\n return entries.flatMap(entry => {\n if (isInternalNavSelectorEntryALeaf(entry)) {\n if (entry.details.length) {\n return entry.details.flatMap(detail => (detail.selected ? [detail.uid] : []));\n }\n return entry.selected ? [entry.uid] : [];\n } else if (isInternalNavSelectorEntryANode(entry)) {\n return this.collectSelectedUids(entry.children);\n }\n return [];\n });\n }\n\n updateLeafAction(leafActionProjection: ReadonlyArray<TemplateRef<unknown>>) {\n this.leafActionProjection.set(leafActionProjection);\n }\n\n fold(entry: InternalNavSelectorEntry) {\n this.entries.update(entries => NavSelectorFolding.fold(entries, entry.uid, !this.expanded()));\n }\n\n unfold(entry: InternalNavSelectorEntry) {\n this.entries.update(entries => NavSelectorFolding.unfold(entries, entry.uid, !this.expanded()));\n }\n\n updateDetailsDisplayedLimit(detailsDisplayedLimit: number) {\n this.entries.update(entries => NavSelectorViewMore.changeViewMoreDetailsDisplayedLimit(entries, detailsDisplayedLimit));\n }\n\n viewMore(leaf: InternalNavSelectorLeaf) {\n this.entries.update(entries => NavSelectorViewMore.viewMore(entries, leaf.uid));\n }\n\n viewLess(leaf: InternalNavSelectorLeaf) {\n this.entries.update(entries => NavSelectorViewMore.viewLess(entries, leaf.uid));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { InternalNavSelectorLeafDetails } from '../nav-selector';\nimport { NavSelectorState } from '../nav-selector.state';\n\n@Injectable()\nexport class NavSelectorLeafDetailPresenter {\n constructor(private navSelectorState: NavSelectorState) {}\n\n onLeafDetailClicked(detail: InternalNavSelectorLeafDetails) {\n this.navSelectorState.onLeafDetailClicked(detail);\n }\n}\n","import { CounterComponent } from '@agorapulse/ui-components/counter';\nimport { apErrorFill, SymbolComponent, withSymbols } from '@agorapulse/ui-symbol';\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { TreeNodeAccessibilityDirective } from '../directives/tree-node-accessibility.directive';\nimport { InternalNavSelectorLeafDetails } from '../nav-selector';\nimport { NavSelectorLeafDetailPresenter } from './nav-selector-leaf-detail.presenter';\n\n@Component({\n selector: 'ap-nav-selector-leaf-detail',\n templateUrl: './nav-selector-leaf-detail.component.html',\n styleUrls: ['./nav-selector-leaf-detail.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CounterComponent, SymbolComponent],\n providers: [withSymbols(apErrorFill), NavSelectorLeafDetailPresenter],\n host: {\n '(click)': 'onClick($event)',\n '[class.selected]': 'detail().selected && !embedded()',\n '[class.embedded]': 'embedded()',\n '(keydown.enter)': 'onClick($event)',\n '(keydown.space)': 'onClick($event)',\n },\n hostDirectives: [\n {\n directive: TreeNodeAccessibilityDirective,\n // Alias the input of the directive to detail the input detail will be used in the directive and in the component as well\n inputs: ['apTreeNodeAccessibility: detail'],\n },\n ],\n})\nexport class NavSelectorLeafDetailComponent {\n detail = input.required<InternalNavSelectorLeafDetails>();\n\n embedded = input(false);\n\n constructor(public navSelectorLeafDetailPresenter: NavSelectorLeafDetailPresenter) {}\n\n onClick($event: Event) {\n $event.stopImmediatePropagation();\n this.navSelectorLeafDetailPresenter.onLeafDetailClicked(this.detail());\n }\n}\n","<span class=\"caption\">\n {{ detail().alias }}\n</span>\n\n@if (detail().displayCounter) {\n <ap-counter\n color=\"orange\"\n size=\"normal\"\n [background]=\"false\">\n {{ detail().counter }}\n </ap-counter>\n}\n@if (detail().displayError) {\n <ap-symbol\n size=\"sm\"\n symbolId=\"error_fill\" />\n}\n","import { computed, Injectable } from '@angular/core';\nimport { InternalNavSelectorLeaf } from '../nav-selector';\nimport { NavSelectorState } from '../nav-selector.state';\n\n@Injectable()\nexport class NavSelectorLeafDetailsPresenter {\n viewMoreText = computed(() => this.navSelectorState.texts().viewMore);\n viewLessText = computed(() => this.navSelectorState.texts().viewLess);\n\n constructor(private navSelectorState: NavSelectorState) {}\n\n toggleViewMore(leaf: InternalNavSelectorLeaf) {\n if (leaf.viewMoreDisplayed) {\n this.viewMore(leaf);\n } else {\n this.viewLess(leaf);\n }\n }\n\n viewMore(leaf: InternalNavSelectorLeaf) {\n this.navSelectorState.viewMore(leaf);\n }\n\n viewLess(leaf: InternalNavSelectorLeaf) {\n this.navSelectorState.viewLess(leaf);\n }\n}\n","import { animate, keyframes, state, style, transition, trigger } from '@angular/animations';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, computed, effect, ElementRef, input, signal } from '@angular/core';\nimport { InternalNavSelectorLeaf, InternalNavSelectorLeafDetails } from '../nav-selector';\nimport { NavSelectorLeafDetailComponent } from '../nav-selector-leaf-detail/nav-selector-leaf-detail.component';\nimport { NavSelectorLeafDetailsPresenter } from '../nav-selector-leaf-details/nav-selector-leaf-details.presenter';\n\n@Component({\n selector: 'ap-nav-selector-leaf-details',\n templateUrl: './nav-selector-leaf-details.component.html',\n styleUrls: ['./nav-selector-leaf-details.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NavSelectorLeafDetailComponent],\n providers: [NavSelectorLeafDetailsPresenter],\n host: {\n '[attr.aria-expanded]': '!leaf().viewMoreDisplayable || leaf().viewMoreDisplayed',\n },\n animations: [\n /**\n * Overflow hidden is put only during the animation and on the collapsed state because if it is put on the expanded state then children’s border will be cut (hover / focus)\n */\n trigger('accordion', [\n state(\n 'collapsed',\n style({\n maxHeight: '0',\n overflow: 'hidden',\n })\n ),\n state(\n 'expanded',\n style({\n maxHeight: 'initial',\n })\n ),\n transition('collapsed => expanded', [\n animate('250ms cubic-bezier(.4, 0, .3, 1)', style({ overflow: 'hidden', maxHeight: '{{maxHeight}}' })),\n ]),\n transition('expanded => collapsed', [\n animate(\n '250ms cubic-bezier(.4, 0, .3, 1)',\n keyframes([style({ overflow: 'hidden', maxHeight: '{{maxHeight}}' }), style({ maxHeight: 0 })])\n ),\n ]),\n ]),\n ],\n})\nexport class NavSelectorLeafDetailsComponent implements AfterViewInit {\n leaf = input.required<InternalNavSelectorLeaf>();\n details = input.required<InternalNavSelectorLeafDetails[]>();\n\n firstDetails = computed(() => this.details().slice(0, this.leaf().viewMoreDetailsDisplayedLimit));\n lastDetails = computed(() => this.details().slice(this.leaf().viewMoreDetailsDisplayedLimit));\n\n viewMoreDelay = signal(false);\n\n animationState = computed(() => (this.leaf().viewMoreDisplayable && this.leaf().viewMoreDisplayed ? 'collapsed' : 'expanded'));\n\n /**\n * The height when details are all displayed\n */\n maxHeight = signal('0px');\n\n constructor(\n private el: ElementRef,\n public navSelectorLeafDetailsPresenter: NavSelectorLeafDetailsPresenter\n ) {\n effect(\n () => {\n if (this.leaf().viewMoreDisplayed) {\n setTimeout(() => this.viewMoreDelay.set(false), 150);\n } else {\n this.viewMoreDelay.set(true);\n }\n },\n { allowSignalWrites: true }\n );\n }\n\n ngAfterViewInit(): void {\n // scrollHeight = leaf + first details displayed when there is a limit\n const height = this.el.nativeElement.scrollHeight;\n // cross multiplication to determine height of remaining details\n this.maxHeight.set(`${(height * this.lastDetails().length) / this.firstDetails().length}px`);\n }\n\n toggleViewMore() {\n this.navSelectorLeafDetailsPresenter.toggleViewMore(this.leaf());\n }\n\n onSpaceOrEnter(event: Event) {\n event.stopImmediatePropagation();\n this.toggleViewMore();\n }\n}\n","@for (detail of firstDetails(); track detail.uid) {\n <div class=\"detail\">\n <div class=\"separator\">\n <div class=\"rectangle\"></div>\n </div>\n <ap-nav-selector-leaf-detail [detail]=\"detail\" />\n </div>\n}\n\n@if (leaf().viewMoreDisplayable) {\n <div\n class=\"details-container\"\n [@accordion]=\"{\n value: animationState(),\n params: {\n maxHeight: maxHeight()\n }\n }\">\n @if (viewMoreDelay()) {\n @for (detail of lastDetails(); track detail.uid) {\n <div class=\"detail\">\n <div class=\"separator\">\n <div class=\"rectangle\"></div>\n </div>\n <ap-nav-selector-leaf-detail [detail]=\"detail\" />\n </div>\n }\n }\n </div>\n\n <div class=\"detail\">\n <div class=\"separator\">\n <div class=\"rectangle\"></div>\n </div>\n <a\n tabindex=\"0\"\n role=\"button\"\n class=\"standalone view-more\"\n (keydown.space)=\"onSpaceOrEnter($event)\"\n (keydown.enter)=\"onSpaceOrEnter($event)\"\n (click)=\"toggleViewMore()\">\n @if (leaf().viewMoreDisplayed) {\n {{ navSelectorLeafDetailsPresenter.viewMoreText() }}\n } @else {\n {{ navSelectorLeafDetailsPresenter.viewLessText() }}\n }\n </a>\n </div>\n}\n","import { computed, Injectable } from '@angular/core';\nimport { InternalNavSelectorLeaf } from '../nav-selector';\nimport { NavSelectorState } from '../nav-selector.state';\n\n@Injectable()\nexport class NavSelectorLeafPresenter {\n expanded = computed(() => this.navSelectorState.expanded());\n texts = computed(() => this.navSelectorState.texts());\n isMultipleModeEnabled = computed(() => this.navSelectorState.isMultipleModeEnabled());\n leafActionProjection = computed(() => this.navSelectorState.leafActionProjection());\n expandedAfterDelay = computed(() => this.navSelectorState.expandedAfterDelay());\n\n constructor(private navSelectorState: NavSelectorState) {}\n\n onLeafClicked(leaf: InternalNavSelectorLeaf) {\n this.navSelectorState.onLeafClicked(leaf);\n }\n\n onLeafToggleFolding(leaf: InternalNavSelectorLeaf) {\n this.navSelectorState.onLeafToggleFolding(leaf);\n }\n\n selectOnlyLeaf(leaf: InternalNavSelectorLeaf) {\n this.navSelectorState.selectOnlyLeaf(leaf);\n }\n\n fold(leaf: InternalNavSelectorLeaf) {\n this.navSelectorState.fold(leaf);\n }\n\n unfold(leaf: InternalNavSelectorLeaf) {\n this.navSelectorState.unfold(leaf);\n }\n}\n","import { AvatarComponent } from '@agorapulse/ui-components/avatar';\nimport { CheckboxComponent } from '@agorapulse/ui-components/checkbox';\nimport { CounterComponent } from '@agorapulse/ui-components/counter';\nimport { TooltipDirective } from '@agorapulse/ui-components/tooltip';\nimport { apChevronDown, apChevronUp, apErrorFill, apFeatureLock, SymbolComponent, withSymbols } from '@agorapulse/ui-symbol';\nimport { apMore } from '@agorapulse/ui-symbol/icons';\nimport { animate, keyframes, state, style, transition, trigger } from '@angular/animations';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { afterNextRender, ChangeDetectionStrategy, Component, computed, effect, ElementRef, input, signal, viewChild } from '@angular/core';\nimport { MatMenu, MatMenuItem, MatMenuTrigger } from '@angular/material/menu';\nimport { TreeNodeAccessibilityDirective } from '../directives/tree-node-accessibility.directive';\nimport { InternalNavSelectorLeaf } from '../nav-selector';\nimport { NavSelectorLeafDetailComponent } from '../nav-selector-leaf-detail/nav-selector-leaf-detail.component';\nimport { NavSelectorLeafDetailsComponent } from '../nav-selector-leaf-details/nav-selector-leaf-details.component';\nimport { NavSelectorLeafPresenter } from './nav-selector-leaf.presenter';\n\n@Component({\n selector: 'ap-nav-selector-leaf',\n templateUrl: './nav-selector-leaf.component.html',\n styleUrls: ['./nav-selector-leaf.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AvatarComponent,\n CounterComponent,\n SymbolComponent,\n NavSelectorLeafDetailsComponent,\n CheckboxComponent,\n TooltipDirective,\n MatMenu,\n MatMenuTrigger,\n MatMenuItem,\n NavSelectorLeafDetailComponent,\n NavSelectorLeafDetailComponent,\n NgTemplateOutlet,\n TreeNodeAccessibilityDirective,\n ],\n providers: [withSymbols(apErrorFill, apFeatureLock, apChevronDown, apChevronUp, apMore), NavSelectorLeafPresenter],\n host: {\n '[class.minified]': '!navSelectorLeafPresenter.expanded()',\n role: 'treeitem',\n '(mouseenter)': 'mouseEntered()',\n '(mouseleave)': 'mouseLeft($event)',\n '(keydown.arrowLeft)': 'fold($event)',\n '(keydown.arrowRight)': 'unfold($event)',\n },\n animations: [\n /**\n * Overflow hidden is put only during the animation and on the collapsed state because if it is put on the expanded state then children’s border will be cut (hover / focus)\n */\n trigger('accordion', [\n state(\n 'collapsed',\n style({\n maxHeight: 0,\n overflow: 'hidden',\n })\n ),\n state(\n 'expanded',\n style({\n maxHeight: 'initial',\n })\n ),\n transition('collapsed => expanded', [\n animate('250ms cubic-bezier(.4, 0, .3, 1)', style({ overflow: 'hidden', maxHeight: '{{maxHeight}}' })),\n ]),\n transition('expanded => collapsed', [\n animate(\n '250ms cubic-bezier(.4, 0, .3, 1)',\n keyframes([style({ overflow: 'hidden', maxHeight: '{{maxHeight}}' }), style({ maxHeight: 0 })])\n ),\n ]),\n ]),\n ],\n})\nexport class NavSelectorLeafComponent {\n leaf = input.required<InternalNavSelectorLeaf>();\n\n initial = computed(() => this.leaf().alias[0].toUpperCase());\n foldSymbol = computed(() => (this.leaf().folded ? 'chevron-down' : 'chevron-up'));\n\n hovering = signal(false);\n hoveringMenu = signal(false);\n onlyButtonDisplayed = computed(\n () =>\n this.navSelectorLeafPresenter.isMultipleModeEnabled() &&\n (this.hovering() || this.leaf().accessibility.tabIndex === 0) &&\n this.leaf().selectable\n );\n\n aliasEl = viewChild<ElementRef>('alias');\n aliasBoundedClientRect = signal<{\n offsetWidth: number;\n offsetHeight: number;\n scrollWidth: number;\n scrollHeight: number;\n }>({\n offsetWidth: 0,\n offsetHeight: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n });\n\n tooltipContent = computed(() => {\n const content = [];\n\n const el = this.aliasBoundedClientRect();\n if (!this.navSelectorLeafPresenter.expanded() || el.offsetWidth < el.scrollWidth || el.offsetHeight < el.scrollHeight) {\n content.push(this.leaf().alias);\n }\n\n const disableReason = this.leaf().disableReason;\n if (disableReason) {\n content.push(disableReason);\n }\n\n if (this.leaf().displayFeatureLocked) {\n content.push(this.navSelectorLeafPresenter.texts().featureLocked);\n }\n\n if (this.leaf().displayTokenInvalid) {\n content.push(this.navSelectorLeafPresenter.texts().tokenInvalid);\n }\n\n return content.join('<br>');\n });\n tooltipDisabled = computed(() => !this.tooltipContent().length || this.leaf().detailsDisplayable);\n\n minifiedEl = viewChild<ElementRef>('minified');\n menuEl = viewChild<ElementRef>('menuContainer');\n\n menuTriggerEl = viewChild<MatMenuTrigger>('menuTrigger');\n actionMenuTriggerEl = viewChild<MatMenuTrigger>('actionMenuTrigger');\n\n foldedWithDelay = signal(false);\n\n network = computed(() => (this.leaf().network ? this.leaf().network : undefined));\n\n constructor(\n private el: ElementRef,\n public navSelectorLeafPresenter: NavSelectorLeafPresenter\n ) {\n afterNextRender(() => {\n this.maxHeight.set(`${this.el.nativeElement.scrollHeight}px`);\n\n const el = this.aliasEl()?.nativeElement;\n if (el) {\n this.aliasBoundedClientRect.set({\n offsetWidth: el.offsetWidth,\n offsetHeight: el.offsetHeight,\n scrollWidth: el.scrollWidth,\n scrollHeight: el.scrollHeight,\n });\n }\n });\n\n effect(\n () => {\n if (this.leaf().folded) {\n setTimeout(() => this.foldedWithDelay.set(true), 150);\n } else {\n this.foldedWithDelay.set(false);\n }\n },\n { allowSignalWrites: true }\n );\n }\n\n animationState = computed(() => (this.leaf().folded ? 'collapsed' : 'expanded'));\n\n maxHeight = signal('0px');\n\n onClick($event: Event) {\n $event.stopImmediatePropagation();\n this.navSelectorLeafPresenter.onLeafClicked(this.leaf());\n }\n\n toggleFolding(event: Event) {\n event.stopImmediatePropagation();\n this.navSelectorLeafPresenter.onLeafToggleFolding(this.leaf());\n }\n\n mouseEntered() {\n this.hovering.set(true);\n const menuTrigger = this.menuTriggerEl();\n if (menuTrigger && this.leaf().detailsDisplayable) {\n menuTrigger.openMenu();\n }\n }\n\n mouseLeft($event: MouseEvent) {\n this.hovering.set(false);\n const menuTrigger = this.menuTriggerEl();\n if (menuTrigger) {\n setTimeout(() => {\n this.tryCloseMenu(menuTrigger, $event);\n }, 100);\n }\n }\n\n mouseEnteredMenu() {\n this.hoveringMenu.set(true);\n }\n\n mouseLeftMenu(menuTrigger: MatMenuTrigger, $event: MouseEvent) {\n this.hoveringMenu.set(false);\n this.tryCloseMenu(menuTrigger, $event);\n }\n\n menuOpened() {\n if (!this.leaf().detailsDisplayable) {\n this.menuTriggerEl()?.closeMenu();\n }\n }\n\n onActionButtonClick($event: Event) {\n $event.stopImmediatePropagation();\n }\n\n onActionButtonKeyDownSpaceOrEnter($event: Event) {\n $event.stopImmediatePropagation();\n this.actionMenuTriggerEl()?.openMenu();\n }\n\n selectOnly(event: Event) {\n event.stopImmediatePropagation();\n this.navSelectorLeafPresenter.selectOnlyLeaf(this.leaf());\n }\n\n onCheckboxToggle() {\n this.navSelectorLeafPresenter.onLeafClicked(this.leaf());\n }\n\n onSpaceOrEnterPressed($event: Event) {\n $event.stopImmediatePropagation();\n if (document.activeElement === this.el.nativeElement.querySelector('.nav-selector-leaf')) {\n if (this.leaf().foldable) {\n this.toggleFolding($event);\n } else {\n this.navSelectorLeafPresenter.onLeafClicked(this.leaf());\n }\n }\n }\n\n fold(event: Event) {\n event.stopImmediatePropagation();\n this.navSelectorLeafPresenter.fold(this.leaf());\n }\n\n unfold(event: Event) {\n event.stopImmediatePropagation();\n this.navSelectorLeafPresenter.unfold(this.leaf());\n }\n\n private tryCloseMenu(menuTrigger: MatMenuTrigger, $event: MouseEvent) {\n if (!this.hoveringMenu()) {\n const minifiedEl = this.minifiedEl() as ElementRef;\n const minifiedBoundedClientRect = minifiedEl.nativeElement.getBoundingClientRect();\n const mouseHoveringLeaf = this.mouseIsHovering($event, minifiedBoundedClientRect);\n\n const menuEl = this.menuEl() as ElementRef;\n const menuBoundedClientRect = menuEl.nativeElement.getBoundingClientRect();\n const mouseHoveringMenu = this.mouseIsHovering($event, menuBoundedClientRect);\n\n if (!mouseHoveringLeaf && !mouseHoveringMenu) {\n menuTrigger.closeMenu();\n }\n }\n }\n\n private mouseIsHovering($event: MouseEvent, boundingClientRect: { top: number; right: number; bottom: number; left: number }): boolean {\n return (\n boundingClientRect.left <= $event.clientX &&\n $event.clientX <= boundingClientRect.right &&\n boundingClientRect.top <= $event.clientY &&\n $event.clientY <= boundingClientRect.bottom\n );\n }\n}\n","@if (navSelectorLeafPresenter.expandedAfterDelay()) {\n <div\n class=\"nav-selector-leaf\"\n apTooltipPosition=\"right\"\n role=\"treeitem\"\n [apTooltip]=\"tooltipContent()\"\n [apTooltipDisabled]=\"tooltipDisabled()\"\n [class.feature-locked]=\"leaf().displayFeatureLocked\"\n [class.selected]=\"leaf().selected\"\n [class.token-error]=\"leaf().displayTokenInvalid\"\n [class.disabled]=\"leaf().disabled\"\n [apTreeNodeAccessibility]=\"leaf()\"\n (keydown.space)=\"onSpaceOrEnterPressed($event)\"\n (keydown.enter)=\"onSpaceOrEnterPressed($event)\"\n (click)=\"onClick($event)\">\n @if (navSelectorLeafPresenter.isMultipleModeEnabled()) {\n <ap-checkbox\n [name]=\"leaf().uid\"\n [checked]=\"leaf().selected\"\n [disabled]=\"!leaf().selectable\"\n (change)=\"onCheckboxToggle()\" />\n }\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"leaf().pictureUrl ?? undefined\"\n [network]=\"$any(leaf().network)\"\n [showInitials]=\"initial()\" />\n\n <span\n #alias\n class=\"caption\">\n {{ leaf().alias }}\n </span>\n\n @if (onlyButtonDisplayed()) {\n <a\n class=\"standalone\"\n role=\"button\"\n [attr.aria-label]=\"'Select only ' + leaf().alias\"\n [attr.tabindex]=\"leaf().accessibility.tabIndex\"\n (keydown.space)=\"selectOnly($event)\"\n (keydown.enter)=\"selectOnly($event)\"\n (click)=\"selectOnly($event)\">\n {{ navSelectorLeafPresenter.texts().only }}\n </a>\n } @else {\n @if (leaf().displayCounter) {\n <ap-counter\n color=\"orange\"\n size=\"normal\"\n [background]=\"false\">\n {{ leaf().counter }}\n </ap-counter>\n }\n @if (leaf().displayTokenInvalid) {\n <ap-symbol\n size=\"sm\"\n symbolId=\"error_fill\" />\n }\n @if (leaf().displayFeatureLocked) {\n <ap-symbol\n size=\"sm\"\n symbolId=\"feature-lock\" />\n }\n\n @let actionProjection = navSelectorLeafPresenter.leafActionProjection();\n @if (actionProjection?.length) {\n <ap-symbol\n #actionMenuTrigger=\"matMenuTrigger\"\n class=\"actions-menu\"\n size=\"sm\"\n symbolId=\"more\"\n [tabindex]=\"leaf().accessibility.tabIndex\"\n [attr.aria-label]=\"'Action menu ' + leaf().alias\"\n [matMenuTriggerFor]=\"actionMenu\"\n (click)=\"onActionButtonClick($event)\"\n (keydown.space)=\"onActionButtonKeyDownSpaceOrEnter($event)\"\n (keydown.enter)=\"onActionButtonKeyDownSpaceOrEnter($event)\" />\n\n <mat-menu #actionMenu=\"matMenu\">\n @for (action of actionProjection; track action) {\n <button mat-menu-item>\n <ng-container\n [ngTemplateOutlet]=\"action\"\n [ngTemplateOutletContext]=\"{\n uid: leaf().uid\n }\" />\n </button>\n }\n </mat-menu>\n }\n\n @if (leaf().foldable) {\n <ap-symbol\n class=\"folding-button\"\n size=\"sm\"\n role=\"button\"\n [tabindex]=\"leaf().accessibility.tabIndex\"\n [attr.aria-label]=\"'Toggle ' + leaf().alias\"\n [symbolId]=\"foldSymbol()\"\n (click)=\"toggleFolding($event)\"\n (keydown.space)=\"toggleFolding($event)\"\n (keydown.enter)=\"toggleFolding($event)\" />\n }\n }\n </div>\n\n <div\n class=\"details-container\"\n [@accordion]=\"{\n value: animationState(),\n params: {\n maxHeight: maxHeight()\n }\n }\">\n @if (!foldedWithDelay()) {\n <ap-nav-selector-leaf-details [details]=\"leaf().details\" [leaf]=\"leaf()\"/>\n }\n </div>\n} @else {\n <div\n #menuTrigger=\"matMenuTrigger\"\n #minified\n class=\"nav-selector-leaf\"\n apTooltipPosition=\"right\"\n [matMenuTriggerFor]=\"menu\"\n [class.feature-locked]=\"leaf().displayFeatureLocked\"\n [class.selected]=\"leaf().selected\"\n [class.token-error]=\"leaf().displayTokenInvalid\"\n [class.disabled]=\"leaf().disabled\"\n [apTooltip]=\"tooltipContent()\"\n [apTooltipDisabled]=\"tooltipDisabled()\"\n [apTreeNodeAccessibility]=\"leaf()\"\n (menuOpened)=\"menuOpened()\"\n (keydown.space)=\"onSpaceOrEnterPressed($event)\"\n (keydown.enter)=\"onSpaceOrEnterPressed($event)\"\n (click)=\"onClick($event)\">\n @if (navSelectorLeafPresenter.isMultipleModeEnabled()) {\n <ap-checkbox\n [name]=\"leaf().uid\"\n [checked]=\"leaf().selected\"\n [disabled]=\"!leaf().selectable\" />\n }\n\n <div class=\"avatar-container\">\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"leaf().pictureUrl ?? undefined\"\n [network]=\"$any(leaf().network)\"\n [showInitials]=\"initial()\" />\n\n <div class=\"status\">\n @if (leaf().displayCounter) {\n <ap-counter\n color=\"orange\"\n size=\"normal\"\n [notif]=\"true\"\n [background]=\"true\">\n {{ leaf().counter }}\n </ap-counter>\n }\n @if (leaf().displayTokenInvalid) {\n <ap-symbol\n size=\"sm\"\n symbolId=\"error_fill\" />\n }\n @if (leaf().displayFeatureLocked) {\n <ap-symbol\n size=\"sm\"\n symbolId=\"feature-lock\" />\n }\n </div>\n </div>\n <mat-menu\n #menu=\"matMenu\"\n class=\"nav-selector-leaf-menu\"\n xPosition=\"after\"\n [hasBackdrop]=\"false\">\n <div\n #menuContainer\n [class.not-displayable]=\"!leaf().detailsDisplayable\"\n (mouseenter)=\"mouseEnteredMenu()\"\n (mouseleave)=\"mouseLeftMenu(menuTrigger, $event)\">\n <button mat-menu-item>\n <span class=\"caption-bold\">{{ leaf().alias }}</span>\n </button>\n @for (detail of leaf().details; track detail.uid) {\n <button\n mat-menu-item\n [class.selected]=\"detail.selected\">\n <ap-nav-selector-leaf-detail\n [embedded]=\"true\"\n [detail]=\"detail\" />\n </button>\n }\n </div>\n </mat-menu>\n </div>\n}\n","import { computed, Injectable } from '@angular/core';\nimport { InternalNavSelectorGroup } from '../nav-selector';\nimport { NavSelectorState } from '../nav-selector.state';\n\n@Injectable()\nexport class NavSelectorGroupPresenter {\n expanded = computed(() => this.navSelectorState.expanded());\n texts = computed(() => this.navSelectorState.texts());\n isMultipleModeEnabled = computed(() => this.navSelectorState.isMultipleModeEnabled());\n expandedAfterDelay = computed(() => this.navSelectorState.expandedAfterDelay());\n\n constructor(private navSelectorState: NavSelectorState) {}\n\n onGroupSelected(group: InternalNavSelectorGroup) {\n this.navSelectorState.onNodeSelect(group);\n }\n\n onGroupToggleFolding(group: InternalNavSelectorGroup) {\n this.navSelectorState.onGroupToggleFolding(group);\n }\n\n fold(group: InternalNavSelectorGroup) {\n this.navSelectorState.fold(group);\n }\n\n unfold(group: InternalNavSelectorGroup) {\n this.navSelectorState.unfold(group);\n }\n}\n","import { AvatarComponent } from '@agorapulse/ui-components/avatar';\nimport { CheckboxComponent } from '@agorapulse/ui-components/checkbox';\nimport { CounterComponent } from '@agorapulse/ui-components/counter';\nimport { TooltipDirective } from '@agorapulse/ui-components/tooltip';\nimport { apChevronDown, apChevronUp, apErrorFill, apFolder, SymbolComponent, withSymbols } from '@agorapulse/ui-symbol';\nimport { animate, keyframes, state, style, transition, trigger } from '@angular/animations';\nimport { afterNextRender, ChangeDetectionStrategy, Component, computed, effect, ElementRef, input, signal, viewChild } from '@angular/core';\nimport { TreeNodeAccessibilityDirective } from '../directives/tree-node-accessibility.directive';\nimport { InternalNavSelectorGroup } from '../nav-selector';\nimport { NavSelectorLeafComponent } from '../nav-selector-leaf/nav-selector-leaf.component';\nimport { NavSelectorGroupPresenter } from './nav-selector-group.presenter';\n\n@Component({\n selector: 'ap-nav-selector-group',\n templateUrl: './nav-selector-group.component.html',\n styleUrls: ['./nav-selector-group.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [withSymbols(apFolder, apErrorFill, apChevronDown, apChevronUp), NavSelectorGroupPresenter],\n imports: [\n SymbolComponent,\n CounterComponent,\n NavSelectorLeafComponent,\n CheckboxComponent,\n AvatarComponent,\n TooltipDirective,\n TreeNodeAccessibilityDirective,\n ],\n host: {\n '[class.minified]': '!navSelectorGroupPresenter.expanded()',\n '(keydown.arrowLeft)': 'fold($event)',\n '(keydown.arrowRight)': 'unfold($event)',\n },\n animations: [\n /**\n * Overflow hidden is put only during the animation and on the collapsed state because if it is put on the expanded state then children’s border will be cut (hover / focus)\n */\n trigger('accordion', [\n state(\n 'collapsed',\n style({\n maxHeight: 0,\n overflow: 'hidden',\n })\n ),\n state(\n 'expanded',\n style({\n maxHeight: 'initial',\n })\n ),\n transition('collapsed => expanded', [\n animate('250ms cubic-bezier(.4, 0, .3, 1)', style({ maxHeight: '{{maxHeight}}', overflow: 'hidden' })),\n ]),\n transition('expanded => collapsed', [\n animate(\n '250ms cubic-bezier(.4, 0, .3, 1)',\n keyframes([style({ maxHeight: '{{maxHeight}}', overflow: 'hidden' }), style({ maxHeight: 0, overflow: 'hidden' })])\n ),\n ]),\n ]),\n ],\n})\nexport class NavSelectorGroupComponent {\n group = input.required<InternalNavSelectorGroup>();\n\n foldSymbol = computed(() => (this.group().folded ? 'chevron-down' : 'chevron-up'));\n\n aliasEl = viewChild<ElementRef>('alias');\n aliasBoundedClientRect = signal<{\n offsetWidth: number;\n offsetHeight: number;\n scrollWidth: number;\n scrollHeight: number;\n }>({\n offsetWidth: 0,\n offsetHeight: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n });\n\n tooltipContent = computed(() => {\n const content = [];\n\n const el = this.aliasBoundedClientRect();\n if (!this.navSelectorGroupPresenter.expanded() || el.offsetWidth < el.scrollWidth || el.offsetHeight < el.scrollHeight) {\n content.push(this.group().alias);\n }\n\n if (this.group().displayTokenInvalid) {\n content.push(this.navSelectorGroupPresenter.texts().tokenInvalid);\n }\n\n return content.join('<br>');\n });\n tooltipDisabled = computed(() => !this.tooltipContent().length);\n\n foldedWithDelay = signal(false);\n\n animationState = computed(() => (this.group().folded ? 'collapsed' : 'expanded'));\n\n constructor(\n private el: ElementRef,\n public navSelectorGroupPresenter: NavSelectorGroupPresenter\n ) {\n afterNextRender(() => {\n this.maxHeight.set(`${this.el.nativeElement.scrollHeight}px`);\n const el = this.aliasEl()?.nativeElement;\n if (el) {\n this.aliasBoundedClientRect.set({\n offsetWidth: el.offsetWidth,\n offsetHeight: el.offsetHeight,\n scrollWidth: el.scrollWidth,\n scrollHeight: el.scrollHeight,\n });\n }\n });\n\n effect(\n () => {\n if (this.group().folded) {\n setTimeout(() => this.foldedWithDelay.set(true), 150);\n } else {\n this.foldedWithDelay.set(false);\n }\n },\n { allowSignalWrites: true }\n );\n }\n\n maxHeight = signal('0px');\n\n onKeydownSpaceOrEnter($event: Event) {\n // Prevent to toggle folding when focus is on the checkbox\n if (document.activeElement === this.el.nativeElement.querySelector('.content')) {\n this.toggleFolding($event);\n } else {\n this.navSelectorGroupPresenter.onGroupSelected(this.group());\n }\n }\n\n toggleFolding(event: Event) {\n event.stopImmediatePropagation();\n this.navSelectorGroupPresenter.onGroupToggleFolding(this.group());\n }\n\n fold(event: Event) {\n event.stopImmediatePropagation();\n this.navSelectorGroupPresenter.fold(this.group());\n }\n\n unfold(event: Event) {\n event.stopImmediatePropagation();\n this.navSelectorGroupPresenter.unfold(this.group());\n }\n}\n","@if (navSelectorGroupPresenter.expandedAfterDelay()) {\n <div\n class=\"content\"\n apTooltipPosition=\"right\"\n [apTooltip]=\"tooltipContent()\"\n [apTooltipDisabled]=\"tooltipDisabled()\"\n [apTreeNodeAccessibility]=\"group()\"\n (keydown.space)=\"onKeydownSpaceOrEnter($event)\"\n (keydown.enter)=\"onKeydownSpaceOrEnter($event)\">\n @if (navSelectorGroupPresenter.isMultipleModeEnabled()) {\n <ap-checkbox\n [name]=\"group().uid\"\n [checked]=\"group().selected\"\n [disabled]=\"!group().selectable\"\n [indeterminate]=\"group().undeterminedSelection\"\n (change)=\"navSelectorGroupPresenter.onGroupSelected(group())\" />\n }\n\n <ap-symbol\n symbolId=\"folder\"\n size=\"sm\" />\n\n <span\n #alias\n class=\"caption\">\n {{ group().alias }}\n </span>\n\n @if (group().displayTokenInvalid) {\n <ap-symbol\n symbolId=\"error_fill\"\n size=\"sm\" />\n }\n\n @if (group().displayCounter) {\n <ap-counter\n color=\"orange\"\n size=\"normal\"\n [background]=\"false\">\n {{ group().counter }}\n </ap-counter>\n }\n\n <ap-symbol\n size=\"sm\"\n class=\"folding-button\"\n [tabindex]=\"group().accessibility.tabIndex\"\n [attr.aria-label]=\"'Toggle ' + group().alias\"\n [symbolId]=\"foldSymbol()\"\n (keydown.space)=\"toggleFolding($event)\"\n (keydown.enter)=\"toggleFolding($event)\"\n (click)=\"toggleFolding($event)\" />\n </div>\n\n <div\n class=\"children-container\"\n [@accordion]=\"{\n value: animationState(),\n params: {\n maxHeight: maxHeight()\n }\n }\">\n @if (!foldedWithDelay()) {\n <div class=\"children\">\n @for (child of group().children; track child.uid) {\n @if (!child.hidden) {\n <ap-nav-selector-leaf [leaf]=\"child\" />\n }\n }\n </div>\n }\n </div>\n} @else {\n <div\n class=\"content\"\n apTooltipPosition=\"right\"\n [apTooltip]=\"tooltipContent()\"\n [apTooltipDisabled]=\"tooltipDisabled()\"\n [apTreeNodeAccessibility]=\"group()\"\n (click)=\"toggleFolding($event)\"\n (keydown.space)=\"onKeydownSpaceOrEnter($event)\"\n (keydown.enter)=\"onKeydownSpaceOrEnter($event)\">\n @if (navSelectorGroupPresenter.isMultipleModeEnabled()) {\n <ap-checkbox\n [name]=\"group().uid\"\n [checked]=\"group().selected\"\n [disabled]=\"!group().selectable\"\n [indeterminate]=\"group().undeterminedSelection\"\n (change)=\"navSelectorGroupPresenter.onGroupSelected(group())\" />\n }\n\n <div class=\"picture-url-sample-container\">\n <div class=\"picture-url-sample\">\n @for (pictureUrlSample of group().childrenPictureUrlSample; track pictureUrlSample) {\n <ap-avatar\n [size]=\"$any(12)\"\n [profilePicture]=\"pictureUrlSample.url ?? undefined\"\n [showInitials]=\"pictureUrlSample.initial\" />\n }\n\n <div class=\"status\">\n @if (group().displayCounter) {\n <ap-counter\n color=\"orange\"\n size=\"normal\"\n [notif]=\"true\"\n [background]=\"true\">\n {{ group().counter }}\n </ap-counter>\n }\n </div>\n </div>\n\n <div class=\"toggle\">\n <ap-symbol\n size=\"sm\"\n [symbolId]=\"foldSymbol()\" />\n </div>\n </div>\n </div>\n\n <div\n class=\"details-container\"\n [@accordion]=\"{\n value: animationState(),\n params: {\n maxHeight: maxHeight()\n }\n }\">\n @if (!foldedWithDelay()) {\n <div class=\"children\">\n @for (child of group().children; track child.uid) {\n @if (!child.hidden) {\n <ap-nav-selector-leaf [leaf]=\"child\" />\n }\n }\n </div>\n }\n </div>\n}\n","import { computed, Injectable } from '@angular/core';\nimport { InternalNavSelectorCategory } from '../nav-selector';\nimport { NavSelectorState } from '../nav-selector.state';\n\n@Injectable()\nexport class NavSelectorCategoryPresenter {\n expanded = computed(() => this.navSelectorState.expanded());\n expandedAfterDelay = computed(() => this.navSelectorState.expandedAfterDelay());\n\n constructor(private navSelectorState: NavSelectorState) {}\n\n toggleFolding(event: Event, category: InternalNavSelectorCategory) {\n event.stopImmediatePropagation();\n this.navSelectorState.onGroupToggleFolding(category);\n }\n\n fold(event: Event, category: InternalNavSelectorCategory) {\n event.stopImmediatePropagation();\n this.navSelectorState.fold(category);\n }\n\n unfold(event: Event, category: InternalNavSelectorCategory) {\n event.stopImmediatePropagation();\n this.navSelectorState.unfold(category);\n }\n}\n","import { apChevronDown, apChevronUp, SymbolComponent, withSymbols } from '@agorapulse/ui-symbol';\nimport { animate, keyframes, state, style, transition, trigger } from '@angular/animations';\nimport { afterNextRender, ChangeDetectionStrategy, Component, computed, effect, ElementRef, input, signal } from '@angular/core';\nimport { EventPluginsModule } from '@tinkoff/ng-event-plugins';\nimport { TreeNodeAccessibilityDirective } from '../directives/tree-node-accessibility.directive';\nimport { InternalNavSelectorCategory } from '../nav-selector';\nimport { NavSelectorGroupComponent } from '../nav-selector-group/nav-selector-group.component';\nimport { NavSelectorLeafComponent } from '../nav-selector-leaf/nav-selector-leaf.component';\nimport { NavSelectorCategoryPresenter } from './nav-selector-category.presenter';\n\n@Component({\n selector: 'ap-nav-selector-category',\n templateUrl: './nav-selector-category.component.html',\n styleUrls: ['./nav-selector-category.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NavSelectorLeafComponent, SymbolComponent, NavSelectorGroupComponent, EventPluginsModule, TreeNodeAccessibilityDirective],\n providers: [withSymbols(apChevronDown, apChevronUp), NavSelectorCategoryPresenter],\n host: {\n '[class.minified]': '!navSelectorCategoryPresenter.expanded()',\n '(keydown.arrowLeft)': 'navSelectorCategoryPresenter.fold($event, this.category())',\n '(keydown.arrowRight)': 'navSelectorCategoryPresenter.unfold($event, this.category())',\n },\n animations: [\n /**\n * Overflow hidden is put only during the animation and on the collapsed state because if it is put on the expanded state then children’s border will be cut (hover / focus)\n */\n trigger('accordion', [\n state(\n 'collapsed',\n style({\n maxHeight: 0,\n overflow: 'hidden',\n })\n ),\n state(\n 'expanded',\n style({\n maxHeight: 'initial',\n })\n ),\n transition('collapsed => expanded', [\n animate('250ms cubic-bezier(.4, 0, .3, 1)', style({ overflow: 'hidden', maxHeight: '{{maxHeight}}' })),\n ]),\n transition('expanded => collapsed', [\n animate(\n '250ms cubic-bezier(.4, 0, .3, 1)',\n keyframes([style({ maxHeight: '{{maxHeight}}' }), style({ overflow: 'hidden', maxHeight: 0 })])\n ),\n ]),\n ]),\n ],\n})\nexport class NavSelectorCategoryComponent {\n category = input.required<InternalNavSelectorCategory>();\n\n foldSymbol = computed(() => (this.category().folded ? 'chevron-down' : 'chevron-up'));\n\n foldedWithDelay = signal(false);\n\n animationState = computed(() => (this.category().folded ? 'collapsed' : 'expanded'));\n\n constructor(\n private el: ElementRef,\n public navSelectorCategoryPresenter: NavSelectorCategoryPresenter\n ) {\n afterNextRender(() => this.maxHeight.set(`${this.el.nativeElement.scrollHeight}px`));\n\n effect(\n () => {\n if (this.category().folded) {\n setTimeout(() => this.foldedWithDelay.set(true), 150);\n } else {\n this.foldedWithDelay.set(false);\n }\n },\n { allowSignalWrites: true }\n );\n }\n\n maxHeight = signal('0px');\n}\n","@if (navSelectorCategoryPresenter.expandedAfterDelay()) {\n <div\n class=\"content\"\n [apTreeNodeAccessibility]=\"category()\"\n (keydown.space.stop)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\"\n (keydown.enter)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\">\n <span class=\"caption\">{{ category().alias }}</span>\n\n <ap-symbol\n class=\"folding-button\"\n size=\"sm\"\n [attr.aria-label]=\"'Toggle ' + category().alias\"\n [symbolId]=\"foldSymbol()\"\n (click)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\"\n (keydown.space)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\"\n (keydown.enter)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\" />\n </div>\n\n <div\n class=\"children-container\"\n [@accordion]=\"{\n value: animationState(),\n params: {\n maxHeight: maxHeight()\n }\n }\">\n @if (!foldedWithDelay()) {\n <div class=\"children\">\n @for (child of category().children; track child.uid) {\n @if (!child.hidden) {\n @if (child.type === 'LEAF') {\n <ap-nav-selector-leaf [leaf]=\"child\" />\n } @else if (child.type === 'GROUP') {\n <ap-nav-selector-group [group]=\"child\" />\n }\n }\n }\n </div>\n }\n </div>\n} @else {\n <div\n class=\"content\"\n [apTreeNodeAccessibility]=\"category()\"\n (click)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\"\n (keydown.space)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\"\n (keydown.enter)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\">\n <div class=\"name-container\">\n <span class=\"caption\">{{ category().alias }}</span>\n <span>.</span>\n </div>\n\n <div class=\"toggle\">\n <ap-symbol\n size=\"sm\"\n [symbolId]=\"foldSymbol()\" />\n </div>\n </div>\n\n <div\n class=\"children-container\"\n [@accordion]=\"{\n value: animationState(),\n params: {\n maxHeight: maxHeight()\n }\n }\">\n @if (!foldedWithDelay()) {\n <div class=\"children\">\n @for (child of category().children; track child.uid) {\n @if (!child.hidden) {\n @if (child.type === 'LEAF') {\n <ap-nav-selector-leaf [leaf]=\"child\" />\n } @else if (child.type === 'GROUP') {\n <ap-nav-selector-group [group]=\"child\" />\n }\n }\n }\n </div>\n }\n </div>\n}\n","import { IconButtonComponent } from '@agorapulse/ui-components/icon-button';\nimport { InputSearchComponent } from '@agorapulse/ui-components/input-search';\nimport { apArrowExpand, apArrowReduce, apSearch, SymbolComponent, withSymbols } from '@agorapulse/ui-symbol';\nimport { animate, keyframes, state, style, transition, trigger } from '@angular/animations';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n contentChildren,\n effect,\n ElementRef,\n input,\n model,\n TemplateRef,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { EventPluginsModule } from '@tinkoff/ng-event-plugins';\nimport { NavSelectorEntry, NavSelectorTranslatedTexts } from './nav-selector';\nimport { NavSelectorCategoryComponent } from './nav-selector-category/nav-selector-category.component';\nimport { NavSelectorGroupComponent } from './nav-selector-group/nav-selector-group.component';\nimport { NavSelectorLeafComponent } from './nav-selector-leaf/nav-selector-leaf.component';\nimport { NavSelectorState } from './nav-selector.state';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'ap-nav-selector',\n templateUrl: './nav-selector.component.html',\n styleUrls: ['./nav-selector.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NavSelectorLeafComponent,\n NavSelectorGroupComponent,\n NavSelectorCategoryComponent,\n InputSearchComponent,\n FormsModule,\n SymbolComponent,\n IconButtonComponent,\n NgTemplateOutlet,\n EventPluginsModule,\n ],\n providers: [NavSelectorState, withSymbols(apArrowExpand, apArrowReduce, apSearch)],\n host: {\n '[class.minified]': '!navSelectorState.expanded()',\n role: 'tree',\n '(keydown.arrowDown)': 'onArrowDown($event)',\n '(keydown.arrowUp)': 'onArrowUp($event)',\n },\n animations: [\n trigger('expand', [\n state('expanded', style({ width: '100%' })),\n state('minified', style({ with: '64px' })),\n transition('expanded => minified', animate('250ms cubic-bezier(.4, 0, .3, 1)')),\n transition(\n 'minified => expanded',\n animate(\n '250ms cubic-bezier(.4, 0, .3, 1)',\n // Force animation to do not be with 100% instantly\n keyframes([style({ width: '64px' }), style({ width: '50%' }), style({ width: '100%' })])\n )\n ),\n ]),\n ],\n})\nexport class NavSelectorComponent {\n navSelectorEntries = input.required<NavSelectorEntry[]>();\n translatedTexts = input.required<NavSelectorTranslatedTexts>();\n multipleModeEnabled = input<boolean>(false);\n\n detailsDisplayedLimit = input<number>(Number.MAX_SAFE_INTEGER);\n\n /**\n * If true, the nav selector will be expanded by default. Even if the width of the screen is smaller than 1280px.\n */\n forceExpanded = input<boolean>(false);\n\n selectedEntryUids = model.required<string[]>();\n\n headerProjection = contentChild<TemplateRef<unknown>>('header');\n footerProjection = contentChild<TemplateRef<unknown>>('footer');\n\n displayFooter = computed(() => this.footerProjection() !== undefined);\n\n leafActionProjection = contentChildren<TemplateRef<unknown>>('leafAction');\n\n expansionState = computed(() => (this.navSelectorState.expanded() ? 'expanded' : 'minified'));\n\n componentUid = `nav-selector-${nextUniqueId++}`;\n\n constructor(\n public navSelectorState: NavSelectorState,\n private el: ElementRef\n ) {\n navSelectorState.registerOnSelectedUidsChange(selectedUids => {\n this.selectedEntryUids.set(selectedUids);\n });\n\n afterNextRender(() => {\n if (!this.forceExpanded() && document.body.clientWidth < 1200) {\n this.navSelectorState.toggleExpanded();\n }\n });\n\n effect(\n () => {\n this.navSelectorState.updateMultiModeEnabled(this.multipleModeEnabled());\n if (!this.navSelectorState.filteredEntries().length) {\n this.navSelectorState.updateEntries(this.navSelectorEntries(), this.selectedEntryUids(), this.detailsDisplayedLimit());\n }\n },\n { allowSignalWrites: true }\n );\n\n effect(\n () => {\n this.navSelectorState.updateDetailsDisplayedLimit(this.detailsDisplayedLimit());\n },\n { allowSignalWrites: true }\n );\n\n const leafActionProjectionEffect = effect(\n () => {\n if (this.leafActionProjection()) {\n this.navSelectorState.updateLeafAction(this.leafActionProjection());\n leafActionProjectionEffect.destroy();\n }\n },\n { manualCleanup: true, allowSignalWrites: true }\n );\n\n effect(\n () => {\n this.navSelectorState.onSelectionChange(this.selectedEntryUids());\n },\n { allowSignalWrites: true }\n );\n effect(\n () => {\n this.navSelectorState.updateTexts(this.translatedTexts());\n },\n { allowSignalWrites: true }\n );\n }\n\n onArrowDown($event: Event) {\n if (this.el.nativeElement.querySelector('.nav-selector__content').contains(document.activeElement)) {\n $event.stopImmediatePropagation();\n this.navSelectorState.onArrowDown();\n setTimeout(() => this.el.nativeElement.querySelector('[role=\"treeitem\"][tabindex=\"0\"]').focus());\n }\n }\n\n onArrowUp($event: Event) {\n if (this.el.nativeElement.querySelector('.nav-selector__content').contains(document.activeElement)) {\n $event.stopImmediatePropagation();\n this.navSelectorState.onArrowUp();\n setTimeout(() => this.el.nativeElement.querySelector('[role=\"treeitem\"][tabindex=\"0\"]').focus());\n }\n }\n\n protected readonly TemplateRef = TemplateRef;\n}\n","<nav [@expand]=\"expansionState()\">\n @let headerProjectionNotNull = headerProjection();\n @let footerProjectionNotNull = footerProjection();\n\n @if (navSelectorState.expandedAfterDelay()) {\n <div class=\"nav-selector__header\">\n <span class=\"h3\">{{ translatedTexts().title }}</span>\n\n <button\n type=\"button\"\n class=\"expand-button expanded\"\n (click)=\"navSelectorState.toggleExpanded()\">\n <ap-symbol\n size=\"sm\"\n symbolId=\"arrow-reduce\" />\n </button>\n\n\n @if (headerProjectionNotNull) {\n <ng-container\n [ngTemplateOutlet]=\"headerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n }\n\n <ap-input-search\n [id]=\"componentUid + '_search'\"\n class=\"nav-selector-search\"\n [placeholder]=\"translatedTexts().searchPlaceholder\"\n [ngModel]=\"navSelectorState.search()\"\n (ngModelChange)=\"navSelectorState.search.set($event ?? '')\" />\n </div>\n\n <div\n class=\"nav-selector__content\"\n role=\"tree\">\n @for (entry of navSelectorState.filteredEntries(); track entry.uid) {\n @if (!entry.hidden) {\n <div class=\"entry\">\n @if (entry.type === 'LEAF') {\n <ap-nav-selector-leaf [leaf]=\"entry\" />\n } @else if (entry.type === 'GROUP') {\n <ap-nav-selector-group [group]=\"entry\" />\n } @else if (entry.type === 'CATEGORY') {\n <ap-nav-selector-category [category]=\"$any(entry)\" />\n }\n </div>\n }\n }\n @if (navSelectorState.noResults()) {\n <div class=\"no-result\">{{ translatedTexts().noResults }}</div>\n }\n </div>\n\n @if (displayFooter() && footerProjectionNotNull) {\n <div class=\"nav-selector__footer\">\n <ng-container\n [ngTemplateOutlet]=\"footerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n </div>\n }\n } @else {\n <div class=\"nav-selector__header\">\n <button\n type=\"button\"\n class=\"expand-button\"\n (click)=\"navSelectorState.toggleExpanded()\">\n <ap-symbol\n size=\"sm\"\n symbolId=\"arrow-expand\" />\n </button>\n @if (headerProjectionNotNull) {\n <ng-container\n [ngTemplateOutlet]=\"headerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n }\n\n <ap-icon-button (onClick)=\"navSelectorState.toggleExpanded()\">\n <ap-symbol symbolId=\"search\" />\n </ap-icon-button>\n </div>\n\n <div class=\"nav-selector__content\">\n @for (entry of navSelectorState.filteredEntries(); track entry.uid) {\n @if (!entry.hidden) {\n <div class=\"entry\">\n @if (entry.type === 'LEAF') {\n <ap-nav-selector-leaf [leaf]=\"entry\" />\n } @else if (entry.type === 'GROUP') {\n <ap-nav-selector-group [group]=\"entry\" />\n } @else if (entry.type === 'CATEGORY') {\n <ap-nav-selector-category [category]=\"entry\" />\n }\n </div>\n }\n }\n </div>\n\n @if (displayFooter() && footerProjectionNotNull) {\n <div class=\"nav-selector__footer\">\n <ng-container\n [ngTemplateOutlet]=\"footerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n </div>\n }\n }\n</nav>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.NavSelectorState","i1.NavSelectorLeafDetailPresenter","i2.TreeNodeAccessibilityDirective","i1.NavSelectorLeafDetailsPresenter","i1.NavSelectorLeafPresenter","i1.NavSelectorGroupPresenter","i1.NavSelectorCategoryPresenter"],"mappings":"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"}
@@ -50,6 +50,7 @@ export { IconButtonComponent } from '@agorapulse/ui-components/icon-button';
50
50
  export { InputComponent } from '@agorapulse/ui-components/legacy/input';
51
51
  export { SelectComponent } from '@agorapulse/ui-components/legacy/select';
52
52
  export { TextareaComponent } from '@agorapulse/ui-components/legacy/textarea';
53
+ export { NavSelectorComponent } from '@agorapulse/ui-components/nav-selector';
53
54
  export { RadioComponent } from '@agorapulse/ui-components/radio';
54
55
  export { SocialButtonComponent } from '@agorapulse/ui-components/social-button';
55
56
  export { StatusComponent } from '@agorapulse/ui-components/status';
@@ -1 +1 @@
1
- {"version":3,"file":"agorapulse-ui-components.mjs","sources":["../../../libs/ui-components/src/lib/agorapulse-ui-components.module.ts","../../../libs/ui-components/index.ts","../../../libs/ui-components/agorapulse-ui-components.ts"],"sourcesContent":["// Modules\nimport { AddCommentComponent } from '@agorapulse/ui-components/add-comment';\nimport { AvatarComponent } from '@agorapulse/ui-components/avatar';\nimport { ConfirmModalComponent } from '@agorapulse/ui-components/confirm-modal';\nimport { DatepickerComponent } from '@agorapulse/ui-components/datepicker';\nimport {\n AutosizeTextareaDirective,\n DefaultImageDirective,\n EllipsisDirective,\n EqualValidatorDirective,\n FrozenGifDirective,\n MultiStyleTextDirective,\n} from '@agorapulse/ui-components/directives';\nimport { DotStepperComponent } from '@agorapulse/ui-components/dot-stepper';\nimport { InfoboxComponent } from '@agorapulse/ui-components/infobox';\nimport { LabelComponent, LabelListComponent } from '@agorapulse/ui-components/labels';\nimport { LabelsSelectorComponent } from '@agorapulse/ui-components/labels-selector';\nimport { MediaDisplayOverlayDialogComponent } from '@agorapulse/ui-components/media-display-overlay';\nimport { ModalComponent } from '@agorapulse/ui-components/modal';\nimport { DayDisabledPipe, NeoDatepickerComponent } from '@agorapulse/ui-components/neo-datepicker';\nimport { NotificationComponent } from '@agorapulse/ui-components/notification';\nimport { PaginatorButtonComponent, PaginatorComponent } from '@agorapulse/ui-components/paginator';\nimport { PasswordInputComponent } from '@agorapulse/ui-components/password-input';\nimport { PopmenuModule } from '@agorapulse/ui-components/popmenu';\nimport { SlideToggleComponent } from '@agorapulse/ui-components/slide-toggle';\nimport { SnackbarsThreadComponent } from '@agorapulse/ui-components/snackbars-thread';\nimport { StepperComponent } from '@agorapulse/ui-components/stepper';\nimport { TooltipDirective } from '@agorapulse/ui-components/tooltip';\nimport { NgModule } from '@angular/core';\nimport { MAT_TABS_CONFIG } from '@angular/material/tabs';\n\n/**\n * @deprecated for better tree-shaking, use standalone component import instead\n */\n@NgModule({\n declarations: [],\n imports: [\n // Components\n AvatarComponent,\n StepperComponent,\n ConfirmModalComponent,\n DatepickerComponent,\n DotStepperComponent,\n EllipsisDirective,\n InfoboxComponent,\n LabelListComponent,\n LabelsSelectorComponent,\n NeoDatepickerComponent,\n MediaDisplayOverlayDialogComponent,\n ModalComponent,\n PasswordInputComponent,\n LabelComponent,\n NotificationComponent,\n PaginatorComponent,\n PaginatorButtonComponent,\n SlideToggleComponent,\n SnackbarsThreadComponent,\n // Directives\n DefaultImageDirective,\n FrozenGifDirective,\n EqualValidatorDirective,\n MultiStyleTextDirective,\n TooltipDirective,\n AddCommentComponent,\n AutosizeTextareaDirective,\n // Pipes\n DayDisabledPipe,\n ],\n exports: [\n // Components\n AddCommentComponent,\n AvatarComponent,\n StepperComponent,\n ConfirmModalComponent,\n DatepickerComponent,\n NeoDatepickerComponent,\n DotStepperComponent,\n EllipsisDirective,\n InfoboxComponent,\n LabelComponent,\n LabelListComponent,\n MediaDisplayOverlayDialogComponent,\n ModalComponent,\n PasswordInputComponent,\n LabelsSelectorComponent,\n NotificationComponent,\n PaginatorComponent,\n PaginatorButtonComponent,\n SlideToggleComponent,\n SnackbarsThreadComponent,\n // Pipes\n DayDisabledPipe,\n // Directives\n AutosizeTextareaDirective,\n DefaultImageDirective,\n FrozenGifDirective,\n EqualValidatorDirective,\n MultiStyleTextDirective,\n TooltipDirective,\n // Modules\n PopmenuModule,\n ],\n providers: [\n // Disable ripple effect\n // {provide: MAT_RIPPLE_GLOBAL_OPTIONS, useValue: {disabled: true}},\n // Disable tabs animation\n { provide: MAT_TABS_CONFIG, useValue: { animationDuration: '0ms' } },\n ],\n})\nexport class AgorapulseUiComponentsModule {}\n","/*\n * Public API Surface of ui\n */\n\n// Module\nexport { PopmenuModule } from '@agorapulse/ui-components/popmenu';\nexport { AgorapulseUiComponentsModule } from './src/lib/agorapulse-ui-components.module';\n\n// Directive\nexport {\n AutosizeTextareaDirective,\n DefaultImageDirective,\n EllipsisDirective,\n EqualValidatorDirective,\n FrozenGifDirective,\n MultiStyleTextDirective,\n} from '@agorapulse/ui-components/directives';\nexport { PopmenuDirective } from '@agorapulse/ui-components/popmenu';\nexport { TooltipDirective } from '@agorapulse/ui-components/tooltip';\n\n// Component\nexport { AddCommentComponent } from '@agorapulse/ui-components/add-comment';\nexport { AutocompleteComponent } from '@agorapulse/ui-components/autocomplete';\nexport { AvatarComponent } from '@agorapulse/ui-components/avatar';\nexport { BadgeComponent } from '@agorapulse/ui-components/badge';\nexport { ButtonComponent } from '@agorapulse/ui-components/button';\nexport { CheckboxComponent } from '@agorapulse/ui-components/checkbox';\nexport { ConfirmModalComponent } from '@agorapulse/ui-components/confirm-modal';\nexport { CounterComponent } from '@agorapulse/ui-components/counter';\nexport { DatepickerComponent, DatepickerMode, I18nDatePicker, Period } from '@agorapulse/ui-components/datepicker';\nexport { DotStepperComponent } from '@agorapulse/ui-components/dot-stepper';\nexport { IconButtonComponent } from '@agorapulse/ui-components/icon-button';\nexport { InfoboxComponent } from '@agorapulse/ui-components/infobox';\nexport { LabelComponent, LabelListComponent } from '@agorapulse/ui-components/labels';\nexport { LabelsSelectorComponent } from '@agorapulse/ui-components/labels-selector';\nexport { InputComponent } from '@agorapulse/ui-components/legacy/input';\nexport { SelectComponent } from '@agorapulse/ui-components/legacy/select';\nexport { TextareaComponent } from '@agorapulse/ui-components/legacy/textarea';\nexport { MediaDisplayOverlayDialogComponent } from '@agorapulse/ui-components/media-display-overlay';\nexport { ModalComponent, ModalConfig } from '@agorapulse/ui-components/modal';\nexport {\n DayDisabledPipe,\n NeoDatePickerLocale,\n NeoDatePickerMode,\n NeoDatePickerStartsOn,\n NeoDatepickerComponent,\n} from '@agorapulse/ui-components/neo-datepicker';\nexport { NotificationComponent } from '@agorapulse/ui-components/notification';\nexport { PaginatorButtonComponent, PaginatorComponent } from '@agorapulse/ui-components/paginator';\nexport { PasswordInputComponent } from '@agorapulse/ui-components/password-input';\nexport { PopmenuComponent } from '@agorapulse/ui-components/popmenu';\nexport { RadioComponent } from '@agorapulse/ui-components/radio';\nexport { SlideToggleComponent } from '@agorapulse/ui-components/slide-toggle';\nexport { SnackbarsThreadComponent } from '@agorapulse/ui-components/snackbars-thread';\nexport { SocialButtonComponent } from '@agorapulse/ui-components/social-button';\nexport { StatusComponent } from '@agorapulse/ui-components/status';\nexport { StatusCardActor, StatusCardComponent } from '@agorapulse/ui-components/status-card';\nexport { StepperComponent } from '@agorapulse/ui-components/stepper';\nexport { TagComponent } from '@agorapulse/ui-components/tag';\nexport { ToggleComponent } from '@agorapulse/ui-components/toggle';\n\n// Service\nexport { SnackbarsThreadService } from '@agorapulse/ui-components/snackbars-thread';\n\n// Model\nexport { ConfirmModalTexts } from '@agorapulse/ui-components/confirm-modal';\nexport {\n CodeStatus,\n SnackbarTypeValues,\n SnackbarsThreadBase,\n externalSnackbarTypeAllowed,\n generateCodeStatus,\n} from '@agorapulse/ui-components/snackbars-thread';\nexport { Step } from '@agorapulse/ui-components/stepper';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agorapulse-ui-components.mjs","sources":["../../../libs/ui-components/src/lib/agorapulse-ui-components.module.ts","../../../libs/ui-components/index.ts","../../../libs/ui-components/agorapulse-ui-components.ts"],"sourcesContent":["// Modules\nimport { AddCommentComponent } from '@agorapulse/ui-components/add-comment';\nimport { AvatarComponent } from '@agorapulse/ui-components/avatar';\nimport { ConfirmModalComponent } from '@agorapulse/ui-components/confirm-modal';\nimport { DatepickerComponent } from '@agorapulse/ui-components/datepicker';\nimport {\n AutosizeTextareaDirective,\n DefaultImageDirective,\n EllipsisDirective,\n EqualValidatorDirective,\n FrozenGifDirective,\n MultiStyleTextDirective,\n} from '@agorapulse/ui-components/directives';\nimport { DotStepperComponent } from '@agorapulse/ui-components/dot-stepper';\nimport { InfoboxComponent } from '@agorapulse/ui-components/infobox';\nimport { LabelComponent, LabelListComponent } from '@agorapulse/ui-components/labels';\nimport { LabelsSelectorComponent } from '@agorapulse/ui-components/labels-selector';\nimport { MediaDisplayOverlayDialogComponent } from '@agorapulse/ui-components/media-display-overlay';\nimport { ModalComponent } from '@agorapulse/ui-components/modal';\nimport { DayDisabledPipe, NeoDatepickerComponent } from '@agorapulse/ui-components/neo-datepicker';\nimport { NotificationComponent } from '@agorapulse/ui-components/notification';\nimport { PaginatorButtonComponent, PaginatorComponent } from '@agorapulse/ui-components/paginator';\nimport { PasswordInputComponent } from '@agorapulse/ui-components/password-input';\nimport { PopmenuModule } from '@agorapulse/ui-components/popmenu';\nimport { SlideToggleComponent } from '@agorapulse/ui-components/slide-toggle';\nimport { SnackbarsThreadComponent } from '@agorapulse/ui-components/snackbars-thread';\nimport { StepperComponent } from '@agorapulse/ui-components/stepper';\nimport { TooltipDirective } from '@agorapulse/ui-components/tooltip';\nimport { NgModule } from '@angular/core';\nimport { MAT_TABS_CONFIG } from '@angular/material/tabs';\n\n/**\n * @deprecated for better tree-shaking, use standalone component import instead\n */\n@NgModule({\n declarations: [],\n imports: [\n // Components\n AvatarComponent,\n StepperComponent,\n ConfirmModalComponent,\n DatepickerComponent,\n DotStepperComponent,\n EllipsisDirective,\n InfoboxComponent,\n LabelListComponent,\n LabelsSelectorComponent,\n NeoDatepickerComponent,\n MediaDisplayOverlayDialogComponent,\n ModalComponent,\n PasswordInputComponent,\n LabelComponent,\n NotificationComponent,\n PaginatorComponent,\n PaginatorButtonComponent,\n SlideToggleComponent,\n SnackbarsThreadComponent,\n // Directives\n DefaultImageDirective,\n FrozenGifDirective,\n EqualValidatorDirective,\n MultiStyleTextDirective,\n TooltipDirective,\n AddCommentComponent,\n AutosizeTextareaDirective,\n // Pipes\n DayDisabledPipe,\n ],\n exports: [\n // Components\n AddCommentComponent,\n AvatarComponent,\n StepperComponent,\n ConfirmModalComponent,\n DatepickerComponent,\n NeoDatepickerComponent,\n DotStepperComponent,\n EllipsisDirective,\n InfoboxComponent,\n LabelComponent,\n LabelListComponent,\n MediaDisplayOverlayDialogComponent,\n ModalComponent,\n PasswordInputComponent,\n LabelsSelectorComponent,\n NotificationComponent,\n PaginatorComponent,\n PaginatorButtonComponent,\n SlideToggleComponent,\n SnackbarsThreadComponent,\n // Pipes\n DayDisabledPipe,\n // Directives\n AutosizeTextareaDirective,\n DefaultImageDirective,\n FrozenGifDirective,\n EqualValidatorDirective,\n MultiStyleTextDirective,\n TooltipDirective,\n // Modules\n PopmenuModule,\n ],\n providers: [\n // Disable ripple effect\n // {provide: MAT_RIPPLE_GLOBAL_OPTIONS, useValue: {disabled: true}},\n // Disable tabs animation\n { provide: MAT_TABS_CONFIG, useValue: { animationDuration: '0ms' } },\n ],\n})\nexport class AgorapulseUiComponentsModule {}\n","/*\n * Public API Surface of ui\n */\n\n// Module\nexport { PopmenuModule } from '@agorapulse/ui-components/popmenu';\nexport { AgorapulseUiComponentsModule } from './src/lib/agorapulse-ui-components.module';\n\n// Directive\nexport {\n AutosizeTextareaDirective,\n DefaultImageDirective,\n EllipsisDirective,\n EqualValidatorDirective,\n FrozenGifDirective,\n MultiStyleTextDirective,\n} from '@agorapulse/ui-components/directives';\nexport { PopmenuDirective } from '@agorapulse/ui-components/popmenu';\nexport { TooltipDirective } from '@agorapulse/ui-components/tooltip';\n\n// Component\nexport { AddCommentComponent } from '@agorapulse/ui-components/add-comment';\nexport { AutocompleteComponent } from '@agorapulse/ui-components/autocomplete';\nexport { AvatarComponent } from '@agorapulse/ui-components/avatar';\nexport { BadgeComponent } from '@agorapulse/ui-components/badge';\nexport { ButtonComponent } from '@agorapulse/ui-components/button';\nexport { CheckboxComponent } from '@agorapulse/ui-components/checkbox';\nexport { ConfirmModalComponent } from '@agorapulse/ui-components/confirm-modal';\nexport { CounterComponent } from '@agorapulse/ui-components/counter';\nexport { DatepickerComponent, DatepickerMode, I18nDatePicker, Period } from '@agorapulse/ui-components/datepicker';\nexport { DotStepperComponent } from '@agorapulse/ui-components/dot-stepper';\nexport { IconButtonComponent } from '@agorapulse/ui-components/icon-button';\nexport { InfoboxComponent } from '@agorapulse/ui-components/infobox';\nexport { LabelComponent, LabelListComponent } from '@agorapulse/ui-components/labels';\nexport { LabelsSelectorComponent } from '@agorapulse/ui-components/labels-selector';\nexport { InputComponent } from '@agorapulse/ui-components/legacy/input';\nexport { SelectComponent } from '@agorapulse/ui-components/legacy/select';\nexport { TextareaComponent } from '@agorapulse/ui-components/legacy/textarea';\nexport { MediaDisplayOverlayDialogComponent } from '@agorapulse/ui-components/media-display-overlay';\nexport { ModalComponent, ModalConfig } from '@agorapulse/ui-components/modal';\nexport { NavSelectorComponent } from '@agorapulse/ui-components/nav-selector'\nexport {\n DayDisabledPipe,\n NeoDatePickerLocale,\n NeoDatePickerMode,\n NeoDatePickerStartsOn,\n NeoDatepickerComponent,\n} from '@agorapulse/ui-components/neo-datepicker';\nexport { NotificationComponent } from '@agorapulse/ui-components/notification';\nexport { PaginatorButtonComponent, PaginatorComponent } from '@agorapulse/ui-components/paginator';\nexport { PasswordInputComponent } from '@agorapulse/ui-components/password-input';\nexport { PopmenuComponent } from '@agorapulse/ui-components/popmenu';\nexport { RadioComponent } from '@agorapulse/ui-components/radio';\nexport { SlideToggleComponent } from '@agorapulse/ui-components/slide-toggle';\nexport { SnackbarsThreadComponent } from '@agorapulse/ui-components/snackbars-thread';\nexport { SocialButtonComponent } from '@agorapulse/ui-components/social-button';\nexport { StatusComponent } from '@agorapulse/ui-components/status';\nexport { StatusCardActor, StatusCardComponent } from '@agorapulse/ui-components/status-card';\nexport { StepperComponent } from '@agorapulse/ui-components/stepper';\nexport { TagComponent } from '@agorapulse/ui-components/tag';\nexport { ToggleComponent } from '@agorapulse/ui-components/toggle';\n\n// Service\nexport { SnackbarsThreadService } from '@agorapulse/ui-components/snackbars-thread';\n\n// Model\nexport { ConfirmModalTexts } from '@agorapulse/ui-components/confirm-modal';\nexport {\n CodeStatus,\n SnackbarTypeValues,\n SnackbarsThreadBase,\n externalSnackbarTypeAllowed,\n generateCodeStatus,\n} from '@agorapulse/ui-components/snackbars-thread';\nexport { Step } from '@agorapulse/ui-components/stepper';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}