@acorex/components 21.0.2-next.14 → 21.0.2-next.15

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.
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-side-menu.mjs","sources":["../../../../packages/components/side-menu/src/lib/side-menu-item/side-menu-item.component.ts","../../../../packages/components/side-menu/src/lib/side-menu-item/side-menu-item.component.html","../../../../packages/components/side-menu/src/lib/side-menu.component.ts","../../../../packages/components/side-menu/src/lib/side-menu.component.html","../../../../packages/components/side-menu/src/lib/side-menu.directive.ts","../../../../packages/components/side-menu/src/lib/side-menu.module.ts","../../../../packages/components/side-menu/src/acorex-components-side-menu.ts"],"sourcesContent":["import { AXClickEvent, AXComponent, AXRippleDirective, MXInteractiveComponent } from '@acorex/cdk/common';\nimport { AXLoadingComponent } from '@acorex/components/loading';\nimport { AXTooltipModule } from '@acorex/components/tooltip';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { IsActiveMatchOptions, RouterLink, RouterLinkActive, UrlTree } from '@angular/router';\n\nexport class AXSideMenuItemClickEvent extends AXClickEvent {\n handled = false;\n}\n\n@Component({\n selector: 'ax-side-menu-item',\n inputs: ['disabled'],\n templateUrl: './side-menu-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { ngSkipHydration: 'true' },\n imports: [\n AXRippleDirective,\n RouterLink,\n RouterLinkActive,\n NgTemplateOutlet,\n AXLoadingComponent,\n AsyncPipe,\n AXTranslatorPipe,\n AXTooltipModule,\n ],\n providers: [{ provide: AXComponent, useExisting: AXSideMenuItemComponent }],\n})\nexport class AXSideMenuItemComponent extends MXInteractiveComponent {\n text = model('');\n active = model(false);\n isLoading = model(false);\n isCollapsed = model(true);\n onClick = output<AXSideMenuItemClickEvent>();\n tooltipStatus = signal(false);\n tooltipText = input('');\n\n private elem = inject(ElementRef);\n\n readonly toggleOnClick = input(true);\n\n readonly href = input<string | null>();\n\n readonly routerLink = input<string | any[] | UrlTree | null>();\n readonly routerLinkActive = input<string | string[]>('ax-state-active');\n readonly routerLinkActiveOptions = input<{ exact: boolean } | IsActiveMatchOptions>({ exact: false });\n\n readonly target = input<'_blank' | '_self' | '_parent' | '_top'>('_self');\n\n private childItems = contentChildren(AXSideMenuItemComponent, { descendants: true });\n\n protected hasChild = signal(false);\n\n #childCheckEffect = effect(() => {\n if (this.childItems().length) this.checkForChildren();\n });\n\n /** Run after view (and ngTemplateOutlet-created nested items) is in the DOM. */\n #initChildren = afterNextRender(() => {\n this.checkForChildren();\n });\n\n private checkForChildren() {\n const childrenContainer = this.elem.nativeElement.querySelector('.ax-side-children-content');\n if (childrenContainer) {\n // contentChildren does not see items created by ngTemplateOutlet (embedded views).\n // Query DOM for any nested ax-side-menu-item so recursive menus work (Angular 21+).\n const domChildren = childrenContainer.querySelectorAll('ax-side-menu-item');\n const hasChildren = this.childItems().length > 0 || domChildren.length > 0;\n this.hasChild.set(hasChildren);\n } else {\n this.hasChild.set(this.childItems().length > 0);\n }\n }\n\n protected _handleClickEvent(e: MouseEvent) {\n if (this.disabled || this.isLoading()) return;\n const event = {\n component: this,\n htmlElement: this.getHostElement(),\n nativeEvent: e,\n handled: false,\n };\n this.onClick.emit(event);\n if (!event.handled && this.toggleOnClick()) {\n this.toggle();\n }\n e.stopPropagation();\n }\n\n toggle() {\n this.isCollapsed.update((prev) => !prev);\n }\n\n open() {\n this.isCollapsed.set(true);\n }\n\n close() {\n this.isCollapsed.set(false);\n }\n}\n","<div [axTooltip]=\"tooltipStatus() ? tooltipText() : null\">\n <ng-content select=\"ax-title\"></ng-content>\n @if (routerLink()) {\n <a\n [axRipple]\n [target]=\"target()\"\n class=\"ax-side-item\"\n [routerLink]=\"routerLink()\"\n (click)=\"_handleClickEvent($event)\"\n [class.ax-state-disabled]=\"disabled\"\n [routerLinkActive]=\"routerLinkActive()\"\n [routerLinkActiveOptions]=\"routerLinkActiveOptions()\"\n >\n <ng-container [ngTemplateOutlet]=\"menuItemContent\"></ng-container>\n </a>\n } @else if (href()) {\n <a\n [axRipple]\n [href]=\"href()\"\n [target]=\"target()\"\n class=\"ax-side-item\"\n [class.ax-state-active]=\"active()\"\n (click)=\"_handleClickEvent($event)\"\n [class.ax-state-disabled]=\"disabled\"\n >\n <ng-container [ngTemplateOutlet]=\"menuItemContent\"></ng-container>\n </a>\n } @else {\n <div\n [axRipple]\n class=\"ax-side-item\"\n [class.ax-state-active]=\"active()\"\n (click)=\"_handleClickEvent($event)\"\n [class.ax-state-disabled]=\"disabled\"\n >\n <ng-container [ngTemplateOutlet]=\"menuItemContent\"></ng-container>\n </div>\n }\n\n <div class=\"ax-side-children\" [class.ax-collapsed]=\"isCollapsed()\" [class.ax-empty]=\"!hasChild() && !isLoading()\">\n @if (isLoading()) {\n <p>{{ '@acorex:common.status.loading' | translate | async }}</p>\n } @else {\n <div class=\"ax-side-children-content\">\n <ng-content select=\"ax-side-menu-item, ng-container\"></ng-content>\n </div>\n }\n </div>\n\n <ng-content select=\"ax-divider\"></ng-content>\n <ng-template #menuItemContent>\n <div class=\"ax-start-side\">\n <ng-content select=\"ax-prefix\"></ng-content>\n @if (text()) {\n <span>{{ text() }}</span>\n }\n <ng-content select=\"ax-text\"></ng-content>\n <div class=\"ax-inside-text\">\n <ng-content></ng-content>\n </div>\n </div>\n <div class=\"ax-end-side\">\n <ng-content select=\"ax-suffix\"></ng-content>\n @if (hasChild() && !isLoading() && toggleOnClick()) {\n <span class=\"ax-icon ax-icon-chevron-right arrow-icon\" [class.arrow-icon-expand]=\"!isCollapsed()\"> </span>\n }\n @if (isLoading()) {\n <ax-loading></ax-loading>\n }\n </div>\n </ng-template>\n</div>\n","import { AXComponent, NXComponent } from '@acorex/cdk/common';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n effect,\n ElementRef,\n HostBinding,\n inject,\n input,\n model,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { IsActiveMatchOptions, RouterLink, RouterLinkActive, UrlTree } from '@angular/router';\nimport { AXSideMenuItemComponent } from './side-menu-item/side-menu-item.component';\n\nexport type AXSideMenuLook = 'pills' | 'with-line' | 'with-line-color' | 'default';\nexport type AXSideMenuLocation = 'start' | 'end';\nexport type AXSideMenuItem = {\n title?: string;\n routerLink?: string | any[] | UrlTree;\n routerLinkActive?: string | string[];\n routerLinkActiveOptions?: { exact: boolean } | IsActiveMatchOptions;\n href?: string;\n target?: '_blank' | '_self' | '_parent' | '_top';\n text: string;\n active?: boolean;\n disabled?: boolean;\n isLoading?: boolean;\n isCollapsed?: boolean;\n icon?: string;\n data?: unknown;\n suffixText?: string;\n toggleOnClick?: boolean;\n items?: AXSideMenuItem[];\n};\n\n/**\n * @category\n * A component for displaying a side menu with customizable content.\n */\n@Component({\n selector: 'ax-side-menu',\n templateUrl: './side-menu.component.html',\n styleUrls: ['./side-menu.component.compiled.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n NgTemplateOutlet,\n AXDecoratorGenericComponent,\n AXSideMenuItemComponent,\n RouterLink,\n RouterLinkActive,\n AXDecoratorIconComponent,\n ],\n providers: [{ provide: AXComponent, useExisting: AXSideMenuComponent }],\n})\nexport class AXSideMenuComponent extends NXComponent {\n items = model<AXSideMenuItem[]>();\n readonly look = input<AXSideMenuLook>('pills');\n readonly location = input<AXSideMenuLocation>('start');\n readonly mode = input<'full' | 'compact'>('full');\n children = contentChildren(AXSideMenuItemComponent, { descendants: true });\n private elementRef = inject<ElementRef<any>>(ElementRef);\n private firstLevelItems = signal<AXSideMenuItemComponent[]>([]);\n\n #init = afterNextRender(() => {\n const allChildren = this.children();\n const hostElement = this.elementRef.nativeElement;\n\n const filter = allChildren.filter((item) => {\n const itemElement = item.getHostElement();\n\n // Check if the item is nested inside another side-menu-item\n // by looking for a parent ax-side-menu-item element\n const parentMenuItem = itemElement.closest('ax-side-menu-item');\n\n // If there's a parent menu item, this item is nested (not first level)\n if (parentMenuItem && parentMenuItem !== itemElement) {\n return false;\n }\n\n // Check if the item is within the side-menu host element\n // and not nested inside another side-menu-item's children container\n return hostElement.contains(itemElement) && !itemElement.closest('.ax-side-children-content');\n });\n this.firstLevelItems.set(filter);\n\n filter.forEach((item) => {\n item.getHostElement().querySelector('.ax-side-item').classList.add('first-level');\n });\n });\n\n #eff = effect(() => {\n if (this.mode() === 'compact') {\n this.firstLevelItems().forEach((item) => {\n item.tooltipStatus.set(true);\n });\n } else {\n this.firstLevelItems().forEach((item) => {\n item.tooltipStatus.set(false);\n });\n }\n });\n\n /** @ignore */\n @HostBinding('class')\n private get __hostClass(): string[] {\n return [`ax-look-${this.look()}`, `ax-location-${this.location()}`, `ax-mode-${this.mode()}`];\n }\n}\n","<ng-content select=\"ax-side-menu-item,ax-title,ng-container,ng-content\"></ng-content>\n\n@for (node of items(); track node) {\n <ng-container [ngTemplateOutlet]=\"Recursion\" [ngTemplateOutletContext]=\"{ $implicit: node }\"> </ng-container>\n}\n<ng-template #Recursion let-item>\n @if (item.title) {\n <ax-title>{{ item.title }}</ax-title>\n }\n @if (item.routerLink) {\n <ax-side-menu-item\n [text]=\"item.text\"\n [target]=\"item.target\"\n [disabled]=\"item.disabled\"\n [isLoading]=\"item.isLoading\"\n [routerLink]=\"item.routerLink\"\n [isCollapsed]=\"item.isCollapsed\"\n [toggleOnClick]=\"item.toggleOnClick\"\n [routerLinkActive]=\"item.routerLinkActive\"\n [routerLinkActiveOptions]=\"item.routerLinkActiveOptions\"\n >\n <ng-container [ngTemplateOutlet]=\"sideMenuItemContent\"></ng-container>\n </ax-side-menu-item>\n } @else if (item.href) {\n <ax-side-menu-item\n [text]=\"item.text\"\n [href]=\"item.href\"\n [target]=\"item.target\"\n [active]=\"item.active\"\n [disabled]=\"item.disabled\"\n [isLoading]=\"item.isLoading\"\n [isCollapsed]=\"item.isCollapsed\"\n [toggleOnClick]=\"item.toggleOnClick\"\n >\n <ng-container [ngTemplateOutlet]=\"sideMenuItemContent\"></ng-container>\n </ax-side-menu-item>\n } @else {\n <ax-side-menu-item\n [text]=\"item.text\"\n [active]=\"item.active\"\n [disabled]=\"item.disabled\"\n [isLoading]=\"item.isLoading\"\n [isCollapsed]=\"item.isCollapsed\"\n [toggleOnClick]=\"item.toggleOnClick\"\n >\n <ng-container [ngTemplateOutlet]=\"sideMenuItemContent\"></ng-container>\n </ax-side-menu-item>\n }\n\n <ng-template #sideMenuItemContent>\n <ax-prefix>\n @if (item.icon) {\n <ax-icon [icon]=\"item.icon\"> </ax-icon>\n }\n </ax-prefix>\n @if (item.data) {\n <ax-text>{{ item.data }}</ax-text>\n }\n @if (item.suffixText) {\n <ax-suffix>\n <ax-text>{{ item.suffixText }}</ax-text>\n </ax-suffix>\n }\n @for (child of item.items; track child) {\n <ng-container [ngTemplateOutlet]=\"Recursion\" [ngTemplateOutletContext]=\"{ $implicit: child }\"></ng-container>\n }\n </ng-template>\n</ng-template>\n","import { AXOutlineContainerDirective, outlineItemType } from '@acorex/cdk/outline';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { afterNextRender, Directive, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { isEqual } from 'lodash-es';\nimport { distinctUntilChanged, map } from 'rxjs';\nimport { AXSideMenuComponent, AXSideMenuItem } from './side-menu.component';\n\n@Directive({\n selector: '[axOutlineSideMenu]',\n exportAs: 'axOutlineSideMenu',\n providers: [AXUnsubscriber],\n})\nexport class AXOutlineSideMenuDirective {\n private router = inject(Router);\n private unsubscriber = inject(AXUnsubscriber);\n private sideMenu = inject(AXSideMenuComponent);\n private container = inject(AXOutlineContainerDirective);\n\n #anr = afterNextRender(() => {\n this.container.outlineItems$\n .pipe(\n this.unsubscriber.takeUntilDestroy,\n map((items) => {\n if (!items || items.length === 0) return [];\n return this.buildNestedMenuItems(items);\n }),\n distinctUntilChanged(isEqual),\n )\n .subscribe((menuItems) => {\n this.updateSideMenu(menuItems);\n });\n });\n\n private updateSideMenu(newMenuItems: AXSideMenuItem[]): void {\n const currentMenuItems = this.sideMenu.items();\n const newSignature = this.getStructuralSignature(newMenuItems);\n const currentSignature = this.getStructuralSignature(currentMenuItems || []);\n\n if (newSignature !== currentSignature) {\n this.sideMenu.items.set(newMenuItems);\n return;\n }\n\n const currentComponents = this.sideMenu.children();\n const newActiveItem = this.flattenMenuItems(newMenuItems).find((item) => item.active);\n const currentActiveComponent = currentComponents.find((c) => c.active());\n if (newActiveItem?.href === currentActiveComponent?.href()) {\n return;\n }\n currentActiveComponent?.active.set(false);\n if (newActiveItem) {\n const componentToActivate = currentComponents.find((c) => c.href() === newActiveItem.href);\n componentToActivate?.active.set(true);\n }\n }\n\n /**\n * Creates a string signature that represents the tree structure of the menu.\n * Example: \"href1(href1.1,href1.2),href2,href3\"\n * This will be different for a flat list vs. a nested list.\n */\n private getStructuralSignature(items: AXSideMenuItem[]): string {\n return items\n .map((item) => {\n let signature = item.href || '';\n if (item.items && item.items.length > 0) {\n signature += `(${this.getStructuralSignature(item.items)})`;\n }\n return signature;\n })\n .join(',');\n }\n\n private flattenMenuItems(items: AXSideMenuItem[]): AXSideMenuItem[] {\n return items.reduce((acc, item) => {\n acc.push(item);\n if (item.items) {\n acc.push(...this.flattenMenuItems(item.items));\n }\n return acc;\n }, [] as AXSideMenuItem[]);\n }\n\n private textReplace(item: outlineItemType): string {\n const text = item.el.textContent;\n if (item.hasAnchor) {\n const newStr = text?.slice(0, -1);\n return newStr?.trim() || '';\n }\n return text?.trim() || '';\n }\n\n private buildNestedMenuItems(items: outlineItemType[]): AXSideMenuItem[] {\n const menuItemsMap = new Map<string, AXSideMenuItem>();\n const rootItems: AXSideMenuItem[] = [];\n items.forEach((item) => {\n const menuItem: AXSideMenuItem = {\n items: [],\n target: '_self',\n active: item.active,\n toggleOnClick: false,\n text: this.textReplace(item),\n href: `${this.router.url.split('#')[0]}#${item.id}`,\n };\n menuItemsMap.set(item.id, menuItem);\n });\n items.forEach((item) => {\n const menuItem = menuItemsMap.get(item.id);\n if (!menuItem) return;\n if (item.parentId) {\n const parentMenuItem = menuItemsMap.get(item.parentId);\n if (parentMenuItem) {\n parentMenuItem.items?.push(menuItem);\n } else {\n console.warn(`Outline item with id \"${item.id}\" has a parentId \"${item.parentId}\" that does not exist.`);\n rootItems.push(menuItem);\n }\n } else {\n rootItems.push(menuItem);\n }\n });\n return rootItems;\n }\n}\n","import { AXCommonModule, AXRippleDirective } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { AXSideMenuItemComponent } from './side-menu-item/side-menu-item.component';\nimport { AXSideMenuComponent } from './side-menu.component';\nimport { AXOutlineSideMenuDirective } from './side-menu.directive';\n\nconst COMPONENT = [AXSideMenuComponent, AXSideMenuItemComponent, AXOutlineSideMenuDirective];\nconst MODULES = [\n CommonModule,\n AXCommonModule,\n AXRippleDirective,\n AXLoadingModule,\n AXTranslationModule,\n RouterLink,\n RouterLinkActive,\n AXDecoratorModule,\n];\n\n@NgModule({\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXSideMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-side-menu.mjs","sources":["../../../../packages/components/side-menu/src/lib/side-menu-item/side-menu-item.component.ts","../../../../packages/components/side-menu/src/lib/side-menu-item/side-menu-item.component.html","../../../../packages/components/side-menu/src/lib/side-menu.component.ts","../../../../packages/components/side-menu/src/lib/side-menu.component.html","../../../../packages/components/side-menu/src/lib/side-menu.directive.ts","../../../../packages/components/side-menu/src/lib/side-menu.module.ts","../../../../packages/components/side-menu/src/acorex-components-side-menu.ts"],"sourcesContent":["import { AXClickEvent, AXComponent, AXRippleDirective, MXInteractiveComponent } from '@acorex/cdk/common';\nimport { AXLoadingComponent } from '@acorex/components/loading';\nimport { AXTooltipModule } from '@acorex/components/tooltip';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n effect,\n ElementRef,\n inject,\n input,\n model,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { IsActiveMatchOptions, RouterLink, RouterLinkActive, UrlTree } from '@angular/router';\n\nexport class AXSideMenuItemClickEvent extends AXClickEvent {\n handled = false;\n}\n\n@Component({\n selector: 'ax-side-menu-item',\n inputs: ['disabled'],\n templateUrl: './side-menu-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { ngSkipHydration: 'true' },\n imports: [\n AXRippleDirective,\n RouterLink,\n RouterLinkActive,\n NgTemplateOutlet,\n AXLoadingComponent,\n AsyncPipe,\n AXTranslatorPipe,\n AXTooltipModule,\n ],\n providers: [{ provide: AXComponent, useExisting: AXSideMenuItemComponent }],\n})\nexport class AXSideMenuItemComponent extends MXInteractiveComponent {\n text = model('');\n active = model(false);\n isLoading = model(false);\n isCollapsed = model(true);\n onClick = output<AXSideMenuItemClickEvent>();\n tooltipStatus = signal(false);\n tooltipText = input('');\n\n private elem = inject(ElementRef);\n\n readonly toggleOnClick = input(true);\n\n readonly href = input<string | null>();\n\n readonly routerLink = input<string | any[] | UrlTree | null>();\n readonly routerLinkActive = input<string | string[]>('ax-state-active');\n readonly routerLinkActiveOptions = input<{ exact: boolean } | IsActiveMatchOptions>({ exact: false });\n\n readonly target = input<'_blank' | '_self' | '_parent' | '_top'>('_self');\n\n private childItems = contentChildren(AXSideMenuItemComponent, { descendants: true });\n\n protected hasChild = signal(false);\n\n #childCheckEffect = effect(() => {\n if (this.childItems().length) this.checkForChildren();\n });\n\n /** Run after view (and ngTemplateOutlet-created nested items) is in the DOM. */\n #initChildren = afterNextRender(() => {\n this.checkForChildren();\n });\n\n private checkForChildren() {\n const childrenContainer = this.elem.nativeElement.querySelector('.ax-side-children-content');\n if (childrenContainer) {\n // contentChildren does not see items created by ngTemplateOutlet (embedded views).\n // Query DOM for any nested ax-side-menu-item so recursive menus work (Angular 21+).\n const domChildren = childrenContainer.querySelectorAll('ax-side-menu-item');\n const hasChildren = this.childItems().length > 0 || domChildren.length > 0;\n this.hasChild.set(hasChildren);\n } else {\n this.hasChild.set(this.childItems().length > 0);\n }\n }\n\n protected _handleClickEvent(e: MouseEvent) {\n if (this.disabled || this.isLoading()) return;\n const event = {\n component: this,\n htmlElement: this.getHostElement(),\n nativeEvent: e,\n handled: false,\n };\n this.onClick.emit(event);\n if (!event.handled && this.toggleOnClick()) {\n this.toggle();\n }\n e.stopPropagation();\n }\n\n toggle() {\n this.isCollapsed.update((prev) => !prev);\n }\n\n open() {\n this.isCollapsed.set(true);\n }\n\n close() {\n this.isCollapsed.set(false);\n }\n}\n","<div [axTooltip]=\"tooltipStatus() ? tooltipText() : null\">\n <ng-content select=\"ax-title\"></ng-content>\n @if (routerLink()) {\n <a\n [axRipple]\n [target]=\"target()\"\n class=\"ax-side-item\"\n [routerLink]=\"routerLink()\"\n (click)=\"_handleClickEvent($event)\"\n [class.ax-state-disabled]=\"disabled\"\n [routerLinkActive]=\"routerLinkActive()\"\n [routerLinkActiveOptions]=\"routerLinkActiveOptions()\"\n >\n <ng-container [ngTemplateOutlet]=\"menuItemContent\"></ng-container>\n </a>\n } @else if (href()) {\n <a\n [axRipple]\n [href]=\"href()\"\n [target]=\"target()\"\n class=\"ax-side-item\"\n [class.ax-state-active]=\"active()\"\n (click)=\"_handleClickEvent($event)\"\n [class.ax-state-disabled]=\"disabled\"\n >\n <ng-container [ngTemplateOutlet]=\"menuItemContent\"></ng-container>\n </a>\n } @else {\n <div\n [axRipple]\n class=\"ax-side-item\"\n [class.ax-state-active]=\"active()\"\n (click)=\"_handleClickEvent($event)\"\n [class.ax-state-disabled]=\"disabled\"\n >\n <ng-container [ngTemplateOutlet]=\"menuItemContent\"></ng-container>\n </div>\n }\n\n <div class=\"ax-side-children\" [class.ax-collapsed]=\"isCollapsed()\" [class.ax-empty]=\"!hasChild() && !isLoading()\">\n @if (isLoading()) {\n <p>{{ '@acorex:common.status.loading' | translate | async }}</p>\n } @else {\n <div class=\"ax-side-children-content\">\n <ng-content select=\"ax-side-menu-item, ng-container\"></ng-content>\n </div>\n }\n </div>\n\n <ng-content select=\"ax-divider\"></ng-content>\n <ng-template #menuItemContent>\n <div class=\"ax-start-side\">\n <ng-content select=\"ax-prefix\"></ng-content>\n @if (text()) {\n <span>{{ text() }}</span>\n }\n <ng-content select=\"ax-text\"></ng-content>\n <div class=\"ax-inside-text\">\n <ng-content></ng-content>\n </div>\n </div>\n <div class=\"ax-end-side\">\n <ng-content select=\"ax-suffix\"></ng-content>\n @if (hasChild() && !isLoading() && toggleOnClick()) {\n <span class=\"ax-icon ax-icon-chevron-right arrow-icon\" [class.arrow-icon-expand]=\"!isCollapsed()\"> </span>\n }\n @if (isLoading()) {\n <ax-loading></ax-loading>\n }\n </div>\n </ng-template>\n</div>\n","import { AXComponent, NXComponent } from '@acorex/cdk/common';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { DOCUMENT, isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport {\n afterRenderEffect,\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n effect,\n ElementRef,\n HostBinding,\n inject,\n input,\n model,\n PLATFORM_ID,\n Renderer2,\n ViewEncapsulation,\n} from '@angular/core';\nimport { IsActiveMatchOptions, RouterLink, RouterLinkActive, UrlTree } from '@angular/router';\nimport { AXSideMenuItemComponent } from './side-menu-item/side-menu-item.component';\n\nexport type AXSideMenuLook = 'pills' | 'with-line' | 'with-line-color' | 'default';\nexport type AXSideMenuLocation = 'start' | 'end';\nexport type AXSideMenuItem = {\n title?: string;\n routerLink?: string | any[] | UrlTree;\n routerLinkActive?: string | string[];\n routerLinkActiveOptions?: { exact: boolean } | IsActiveMatchOptions;\n href?: string;\n target?: '_blank' | '_self' | '_parent' | '_top';\n text: string;\n active?: boolean;\n disabled?: boolean;\n isLoading?: boolean;\n isCollapsed?: boolean;\n icon?: string;\n data?: unknown;\n suffixText?: string;\n toggleOnClick?: boolean;\n items?: AXSideMenuItem[];\n};\n\n/**\n * @category\n * A component for displaying a side menu with customizable content.\n */\n@Component({\n selector: 'ax-side-menu',\n templateUrl: './side-menu.component.html',\n styleUrls: ['./side-menu.component.compiled.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n NgTemplateOutlet,\n AXDecoratorGenericComponent,\n AXSideMenuItemComponent,\n RouterLink,\n RouterLinkActive,\n AXDecoratorIconComponent,\n ],\n providers: [{ provide: AXComponent, useExisting: AXSideMenuComponent }],\n})\nexport class AXSideMenuComponent extends NXComponent {\n items = model<AXSideMenuItem[]>();\n readonly look = input<AXSideMenuLook>('pills');\n readonly location = input<AXSideMenuLocation>('start');\n readonly mode = input<'full' | 'compact'>('full');\n children = contentChildren(AXSideMenuItemComponent, { descendants: true });\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private document = inject(DOCUMENT);\n private platformId = inject(PLATFORM_ID);\n private renderer = inject(Renderer2);\n\n // Re-tag on every render and react to items/mode changes so dynamic menus and items\n // produced via `ngTemplateOutlet` (which `contentChildren` cannot see) stay in sync.\n #init = afterRenderEffect(() => {\n this.items();\n this.mode();\n this.children();\n\n this.elementRef.nativeElement.querySelectorAll<HTMLElement>('ax-side-menu-item').forEach((el) => {\n const inner = el.querySelector<HTMLElement>('.ax-side-item');\n if (!inner) return;\n const isNested = !!el.parentElement?.closest('.ax-side-children-content');\n inner.classList.toggle('first-level', !isNested);\n });\n });\n\n #eff = effect(() => {\n const isCompact = this.mode() === 'compact';\n this.children().forEach((item) => {\n const isFirstLevel = !item.getHostElement().parentElement?.closest('.ax-side-children-content');\n item.tooltipStatus.set(isCompact && isFirstLevel);\n });\n });\n\n // In compact mode, first-level items render their submenu as an absolutely positioned\n // flyout. Close any open first-level item when the user clicks anywhere outside the menu.\n #outsideClickEff = effect((onCleanup) => {\n if (!isPlatformBrowser(this.platformId)) return;\n if (this.mode() !== 'compact') return;\n\n const host = this.elementRef.nativeElement;\n const unlisten = this.renderer.listen(this.document, 'click', (event: MouseEvent) => {\n const target = event.target as Node | null;\n if (!target || host.contains(target)) return;\n this.#closeFirstLevelItems();\n });\n\n onCleanup(() => unlisten());\n });\n\n #closeFirstLevelItems() {\n this.children().forEach((item) => {\n const isFirstLevel = !item.getHostElement().parentElement?.closest('.ax-side-children-content');\n if (isFirstLevel && !item.isCollapsed()) {\n item.isCollapsed.set(true);\n }\n });\n }\n\n /** @ignore */\n @HostBinding('class')\n private get __hostClass(): string[] {\n return [`ax-look-${this.look()}`, `ax-location-${this.location()}`, `ax-mode-${this.mode()}`];\n }\n}\n","<ng-content select=\"ax-side-menu-item,ax-title,ng-container,ng-content\"></ng-content>\n\n@for (node of items(); track node) {\n <ng-container [ngTemplateOutlet]=\"Recursion\" [ngTemplateOutletContext]=\"{ $implicit: node }\"> </ng-container>\n}\n<ng-template #Recursion let-item>\n @if (item.title) {\n <ax-title>{{ item.title }}</ax-title>\n }\n @if (item.routerLink) {\n <ax-side-menu-item\n [text]=\"item.text\"\n [target]=\"item.target\"\n [disabled]=\"item.disabled\"\n [isLoading]=\"item.isLoading\"\n [routerLink]=\"item.routerLink\"\n [isCollapsed]=\"item.isCollapsed\"\n [toggleOnClick]=\"item.toggleOnClick\"\n [routerLinkActive]=\"item.routerLinkActive\"\n [routerLinkActiveOptions]=\"item.routerLinkActiveOptions\"\n >\n <ng-container [ngTemplateOutlet]=\"sideMenuItemContent\"></ng-container>\n </ax-side-menu-item>\n } @else if (item.href) {\n <ax-side-menu-item\n [text]=\"item.text\"\n [href]=\"item.href\"\n [target]=\"item.target\"\n [active]=\"item.active\"\n [disabled]=\"item.disabled\"\n [isLoading]=\"item.isLoading\"\n [isCollapsed]=\"item.isCollapsed\"\n [toggleOnClick]=\"item.toggleOnClick\"\n >\n <ng-container [ngTemplateOutlet]=\"sideMenuItemContent\"></ng-container>\n </ax-side-menu-item>\n } @else {\n <ax-side-menu-item\n [text]=\"item.text\"\n [active]=\"item.active\"\n [disabled]=\"item.disabled\"\n [isLoading]=\"item.isLoading\"\n [isCollapsed]=\"item.isCollapsed\"\n [toggleOnClick]=\"item.toggleOnClick\"\n >\n <ng-container [ngTemplateOutlet]=\"sideMenuItemContent\"></ng-container>\n </ax-side-menu-item>\n }\n\n <ng-template #sideMenuItemContent>\n <ax-prefix>\n @if (item.icon) {\n <ax-icon [icon]=\"item.icon\"> </ax-icon>\n }\n </ax-prefix>\n @if (item.data) {\n <ax-text>{{ item.data }}</ax-text>\n }\n @if (item.suffixText) {\n <ax-suffix>\n <ax-text>{{ item.suffixText }}</ax-text>\n </ax-suffix>\n }\n @for (child of item.items; track child) {\n <ng-container [ngTemplateOutlet]=\"Recursion\" [ngTemplateOutletContext]=\"{ $implicit: child }\"></ng-container>\n }\n </ng-template>\n</ng-template>\n","import { AXOutlineContainerDirective, outlineItemType } from '@acorex/cdk/outline';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { afterNextRender, Directive, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { isEqual } from 'lodash-es';\nimport { distinctUntilChanged, map } from 'rxjs';\nimport { AXSideMenuComponent, AXSideMenuItem } from './side-menu.component';\n\n@Directive({\n selector: '[axOutlineSideMenu]',\n exportAs: 'axOutlineSideMenu',\n providers: [AXUnsubscriber],\n})\nexport class AXOutlineSideMenuDirective {\n private router = inject(Router);\n private unsubscriber = inject(AXUnsubscriber);\n private sideMenu = inject(AXSideMenuComponent);\n private container = inject(AXOutlineContainerDirective);\n\n #anr = afterNextRender(() => {\n this.container.outlineItems$\n .pipe(\n this.unsubscriber.takeUntilDestroy,\n map((items) => {\n if (!items || items.length === 0) return [];\n return this.buildNestedMenuItems(items);\n }),\n distinctUntilChanged(isEqual),\n )\n .subscribe((menuItems) => {\n this.updateSideMenu(menuItems);\n });\n });\n\n private updateSideMenu(newMenuItems: AXSideMenuItem[]): void {\n const currentMenuItems = this.sideMenu.items();\n const newSignature = this.getStructuralSignature(newMenuItems);\n const currentSignature = this.getStructuralSignature(currentMenuItems || []);\n\n if (newSignature !== currentSignature) {\n this.sideMenu.items.set(newMenuItems);\n return;\n }\n\n const currentComponents = this.sideMenu.children();\n const newActiveItem = this.flattenMenuItems(newMenuItems).find((item) => item.active);\n const currentActiveComponent = currentComponents.find((c) => c.active());\n if (newActiveItem?.href === currentActiveComponent?.href()) {\n return;\n }\n currentActiveComponent?.active.set(false);\n if (newActiveItem) {\n const componentToActivate = currentComponents.find((c) => c.href() === newActiveItem.href);\n componentToActivate?.active.set(true);\n }\n }\n\n /**\n * Creates a string signature that represents the tree structure of the menu.\n * Example: \"href1(href1.1,href1.2),href2,href3\"\n * This will be different for a flat list vs. a nested list.\n */\n private getStructuralSignature(items: AXSideMenuItem[]): string {\n return items\n .map((item) => {\n let signature = item.href || '';\n if (item.items && item.items.length > 0) {\n signature += `(${this.getStructuralSignature(item.items)})`;\n }\n return signature;\n })\n .join(',');\n }\n\n private flattenMenuItems(items: AXSideMenuItem[]): AXSideMenuItem[] {\n return items.reduce((acc, item) => {\n acc.push(item);\n if (item.items) {\n acc.push(...this.flattenMenuItems(item.items));\n }\n return acc;\n }, [] as AXSideMenuItem[]);\n }\n\n private textReplace(item: outlineItemType): string {\n const text = item.el.textContent;\n if (item.hasAnchor) {\n const newStr = text?.slice(0, -1);\n return newStr?.trim() || '';\n }\n return text?.trim() || '';\n }\n\n private buildNestedMenuItems(items: outlineItemType[]): AXSideMenuItem[] {\n const menuItemsMap = new Map<string, AXSideMenuItem>();\n const rootItems: AXSideMenuItem[] = [];\n items.forEach((item) => {\n const menuItem: AXSideMenuItem = {\n items: [],\n target: '_self',\n active: item.active,\n toggleOnClick: false,\n text: this.textReplace(item),\n href: `${this.router.url.split('#')[0]}#${item.id}`,\n };\n menuItemsMap.set(item.id, menuItem);\n });\n items.forEach((item) => {\n const menuItem = menuItemsMap.get(item.id);\n if (!menuItem) return;\n if (item.parentId) {\n const parentMenuItem = menuItemsMap.get(item.parentId);\n if (parentMenuItem) {\n parentMenuItem.items?.push(menuItem);\n } else {\n console.warn(`Outline item with id \"${item.id}\" has a parentId \"${item.parentId}\" that does not exist.`);\n rootItems.push(menuItem);\n }\n } else {\n rootItems.push(menuItem);\n }\n });\n return rootItems;\n }\n}\n","import { AXCommonModule, AXRippleDirective } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { AXSideMenuItemComponent } from './side-menu-item/side-menu-item.component';\nimport { AXSideMenuComponent } from './side-menu.component';\nimport { AXOutlineSideMenuDirective } from './side-menu.directive';\n\nconst COMPONENT = [AXSideMenuComponent, AXSideMenuItemComponent, AXOutlineSideMenuDirective];\nconst MODULES = [\n CommonModule,\n AXCommonModule,\n AXRippleDirective,\n AXLoadingModule,\n AXTranslationModule,\n RouterLink,\n RouterLinkActive,\n AXDecoratorModule,\n];\n\n@NgModule({\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXSideMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@acorex/components",
3
- "version": "21.0.2-next.14",
3
+ "version": "21.0.2-next.15",
4
4
  "peerDependencies": {
5
- "@acorex/core": "21.0.2-next.14",
6
- "@acorex/cdk": "21.0.2-next.14",
5
+ "@acorex/core": "21.0.2-next.15",
6
+ "@acorex/cdk": "21.0.2-next.15",
7
7
  "polytype": ">=0.17.0",
8
8
  "angular-imask": ">=7.6.1",
9
9
  "gridstack": ">=12.0.0",
@@ -506,27 +506,6 @@ interface AXConversationStatus {
506
506
  /** Last seen timestamp (for private chats when offline) */
507
507
  lastSeen?: Date;
508
508
  }
509
- /**
510
- * Conversation permissions
511
- */
512
- interface AXConversationPermissions {
513
- /** Can send messages */
514
- canSendMessages: boolean;
515
- /** Can send media */
516
- canSendMedia: boolean;
517
- /** Can add members (groups) */
518
- canAddMembers: boolean;
519
- /** Can remove members (groups) */
520
- canRemoveMembers: boolean;
521
- /** Can change conversation info */
522
- canEditInfo: boolean;
523
- /** Can pin messages */
524
- canPinMessages: boolean;
525
- /** Can delete messages */
526
- canDeleteMessages: boolean;
527
- /** Custom permissions */
528
- custom?: Record<string, boolean>;
529
- }
530
509
  /**
531
510
  * Conversation settings
532
511
  */
@@ -587,8 +566,6 @@ interface AXConversation {
587
566
  unreadMentions?: number;
588
567
  /** Current status (typing, presence, etc.) */
589
568
  status: AXConversationStatus;
590
- /** User permissions in this conversation */
591
- permissions: AXConversationPermissions;
592
569
  /** User-specific settings */
593
570
  settings: AXConversationSettings;
594
571
  /** Pinned messages IDs */
@@ -672,8 +649,8 @@ declare class AXComposerComponent implements OnDestroy {
672
649
  private readonly translation;
673
650
  /** Access registry through conversation service */
674
651
  private get registry();
675
- /** Input element reference */
676
- private readonly inputElementRef;
652
+ /** Composer text area reference */
653
+ private readonly textAreaRef;
677
654
  /** Draft text - use service */
678
655
  readonly draftText: _angular_core.WritableSignal<string>;
679
656
  /** Attachments - use service */
@@ -767,6 +744,8 @@ declare class AXComposerComponent implements OnDestroy {
767
744
  startEdit(message: any): void;
768
745
  /** Start replying to a message */
769
746
  startReply(message: AXMessage): void;
747
+ /** Focus the native textarea inside ax-text-area */
748
+ private focusTextArea;
770
749
  /** Handle action click */
771
750
  onActionClick(actionId: string, event?: MouseEvent): Promise<void>;
772
751
  /** Check if action is enabled */
@@ -1548,6 +1527,9 @@ declare class AXComposerService {
1548
1527
  readonly attachments: _angular_core.WritableSignal<File[]>;
1549
1528
  /** Show typing indicator */
1550
1529
  readonly showTypingIndicator: _angular_core.WritableSignal<boolean>;
1530
+ /** Incremented to request focus on the composer text area (handled by AXComposerComponent). */
1531
+ private readonly _focusRequest;
1532
+ readonly focusRequest: _angular_core.Signal<number>;
1551
1533
  /** Input placeholder */
1552
1534
  readonly placeholder: _angular_core.Signal<string>;
1553
1535
  /** Number of input rows */
@@ -1570,6 +1552,8 @@ declare class AXComposerService {
1570
1552
  readonly rightMenuActions: _angular_core.Signal<AXComposerAction[]>;
1571
1553
  startReply(message: AXMessage): void;
1572
1554
  startEdit(message: AXMessage): void;
1555
+ /** Focus the composer text area when the composer component is mounted. */
1556
+ focusComposer(): void;
1573
1557
  clear(): void;
1574
1558
  sendTypingIndicator(conversationId: string): Promise<void>;
1575
1559
  sendMessage(command: AXSendMessageCommand): Promise<void>;
@@ -1970,8 +1954,6 @@ interface AXParticipantUpdate {
1970
1954
  userId: string;
1971
1955
  /** New role */
1972
1956
  role?: AXUserRole;
1973
- /** Custom permissions */
1974
- permissions?: Record<string, boolean>;
1975
1957
  }
1976
1958
  /**
1977
1959
  * Abstract Conversation Management API
@@ -2130,7 +2112,7 @@ declare abstract class AXConversationApi {
2130
2112
  */
2131
2113
  abstract leaveConversation(conversationId: string): Promise<void>;
2132
2114
  /**
2133
- * Update participant role/permissions
2115
+ * Update participant role
2134
2116
  *
2135
2117
  * @param conversationId - Conversation ID
2136
2118
  * @param update - Participant update data
@@ -2211,22 +2193,6 @@ declare abstract class AXConversationApi {
2211
2193
  * @throws {AXApiError} If request fails
2212
2194
  */
2213
2195
  abstract getConversationTags(conversationId: string): Promise<string[]>;
2214
- /**
2215
- * Get conversation permissions for current user
2216
- *
2217
- * @param conversationId - Conversation ID
2218
- * @returns User permissions
2219
- * @throws {AXApiError} If request fails
2220
- */
2221
- abstract getConversationPermissions(conversationId: string): Promise<Record<string, boolean>>;
2222
- /**
2223
- * Update conversation permissions
2224
- *
2225
- * @param conversationId - Conversation ID
2226
- * @param permissions - Permissions to update
2227
- * @throws {AXApiError} If update fails
2228
- */
2229
- abstract updateConversationPermissions(conversationId: string, permissions: Record<string, boolean>): Promise<void>;
2230
2196
  /**
2231
2197
  * Save draft message for conversation
2232
2198
  *
@@ -4437,8 +4403,6 @@ declare class AXConversationIndexedDbConversationApi extends AXConversationApi {
4437
4403
  addConversationTags(_conversationId: string, _tags: string[]): Promise<void>;
4438
4404
  removeConversationTags(_conversationId: string, _tags: string[]): Promise<void>;
4439
4405
  getConversationTags(_conversationId: string): Promise<string[]>;
4440
- getConversationPermissions(_conversationId: string): Promise<Record<string, boolean>>;
4441
- updateConversationPermissions(_conversationId: string, _permissions: Record<string, boolean>): Promise<void>;
4442
4406
  saveDraft(_conversationId: string, _draft: string): Promise<void>;
4443
4407
  getDraft(_conversationId: string): Promise<string | null>;
4444
4408
  clearDraft(_conversationId: string): Promise<void>;
@@ -5993,35 +5957,6 @@ declare const URL_ERRORS: {
5993
5957
  readonly message: "Invalid URL format";
5994
5958
  };
5995
5959
  };
5996
- /**
5997
- * Permission errors
5998
- */
5999
- declare const PERMISSION_ERRORS: {
6000
- readonly CANNOT_SEND_MESSAGES: {
6001
- readonly code: "PERMISSION.CANNOT_SEND_MESSAGES";
6002
- readonly message: "You do not have permission to send messages";
6003
- };
6004
- readonly CANNOT_SEND_MEDIA: {
6005
- readonly code: "PERMISSION.CANNOT_SEND_MEDIA";
6006
- readonly message: "You do not have permission to send media";
6007
- };
6008
- readonly CANNOT_ADD_MEMBERS: {
6009
- readonly code: "PERMISSION.CANNOT_ADD_MEMBERS";
6010
- readonly message: "You do not have permission to add members";
6011
- };
6012
- readonly CANNOT_REMOVE_MEMBERS: {
6013
- readonly code: "PERMISSION.CANNOT_REMOVE_MEMBERS";
6014
- readonly message: "You do not have permission to remove members";
6015
- };
6016
- readonly CANNOT_EDIT_INFO: {
6017
- readonly code: "PERMISSION.CANNOT_EDIT_INFO";
6018
- readonly message: "You do not have permission to edit conversation info";
6019
- };
6020
- readonly CANNOT_DELETE_MESSAGES: {
6021
- readonly code: "PERMISSION.CANNOT_DELETE_MESSAGES";
6022
- readonly message: "You do not have permission to delete messages";
6023
- };
6024
- };
6025
5960
  /**
6026
5961
  * All error messages combined
6027
5962
  */
@@ -6186,32 +6121,6 @@ declare const ERROR_MESSAGES: {
6186
6121
  readonly message: "Invalid URL format";
6187
6122
  };
6188
6123
  };
6189
- readonly PERMISSION: {
6190
- readonly CANNOT_SEND_MESSAGES: {
6191
- readonly code: "PERMISSION.CANNOT_SEND_MESSAGES";
6192
- readonly message: "You do not have permission to send messages";
6193
- };
6194
- readonly CANNOT_SEND_MEDIA: {
6195
- readonly code: "PERMISSION.CANNOT_SEND_MEDIA";
6196
- readonly message: "You do not have permission to send media";
6197
- };
6198
- readonly CANNOT_ADD_MEMBERS: {
6199
- readonly code: "PERMISSION.CANNOT_ADD_MEMBERS";
6200
- readonly message: "You do not have permission to add members";
6201
- };
6202
- readonly CANNOT_REMOVE_MEMBERS: {
6203
- readonly code: "PERMISSION.CANNOT_REMOVE_MEMBERS";
6204
- readonly message: "You do not have permission to remove members";
6205
- };
6206
- readonly CANNOT_EDIT_INFO: {
6207
- readonly code: "PERMISSION.CANNOT_EDIT_INFO";
6208
- readonly message: "You do not have permission to edit conversation info";
6209
- };
6210
- readonly CANNOT_DELETE_MESSAGES: {
6211
- readonly code: "PERMISSION.CANNOT_DELETE_MESSAGES";
6212
- readonly message: "You do not have permission to delete messages";
6213
- };
6214
- };
6215
6124
  };
6216
6125
  /**
6217
6126
  * Helper function to format error message with parameters
@@ -6238,7 +6147,7 @@ declare function getErrorMessage(code: string, params?: Record<string, string |
6238
6147
  * Type for error codes
6239
6148
  * Useful for type-safe error handling
6240
6149
  */
6241
- type AXErrorCode = typeof MESSAGE_ERRORS[keyof typeof MESSAGE_ERRORS]['code'] | typeof FILE_ERRORS[keyof typeof FILE_ERRORS]['code'] | typeof USER_ERRORS[keyof typeof USER_ERRORS]['code'] | typeof CONVERSATION_ERRORS[keyof typeof CONVERSATION_ERRORS]['code'] | typeof CONNECTION_ERRORS[keyof typeof CONNECTION_ERRORS]['code'] | typeof LOCATION_ERRORS[keyof typeof LOCATION_ERRORS]['code'] | typeof URL_ERRORS[keyof typeof URL_ERRORS]['code'] | typeof PERMISSION_ERRORS[keyof typeof PERMISSION_ERRORS]['code'];
6150
+ type AXErrorCode = typeof MESSAGE_ERRORS[keyof typeof MESSAGE_ERRORS]['code'] | typeof FILE_ERRORS[keyof typeof FILE_ERRORS]['code'] | typeof USER_ERRORS[keyof typeof USER_ERRORS]['code'] | typeof CONVERSATION_ERRORS[keyof typeof CONVERSATION_ERRORS]['code'] | typeof CONNECTION_ERRORS[keyof typeof CONNECTION_ERRORS]['code'] | typeof LOCATION_ERRORS[keyof typeof LOCATION_ERRORS]['code'] | typeof URL_ERRORS[keyof typeof URL_ERRORS]['code'];
6242
6151
 
6243
- export { AXAudioInfoBarBannerComponent, AXAudioPickerComponent, AXAudioRendererComponent, AXBaseRegistry, AXComposerActionRegistry, AXComposerComponent, AXComposerPopupComponent, AXComposerService, AXComposerTabRegistry, AXConversation2Module, AXConversationAiApiKey, AXConversationAiResponderService, AXConversationApi, AXConversationContainerComponent, AXConversationContainerDirective, AXConversationDateUtilsService, AXConversationIndexedDbConversationApi, AXConversationIndexedDbMessageAiApi, AXConversationIndexedDbMessageApi, AXConversationIndexedDbRealtimeApi, AXConversationIndexedDbStorage, AXConversationIndexedDbStores, AXConversationIndexedDbUserApi, AXConversationInfoPanelComponent, AXConversationItemActionRegistry, AXConversationMessageRendererStateComponent, AXConversationMessageUtilsService, AXConversationService, AXConversationSharedStorage, AXConversationTabRegistry, AXEmojiTabComponent, AXErrorHandlerService, AXFallbackRendererComponent, AXFilePickerComponent, AXFileRendererComponent, AXFileUploadService, AXForwardMessageDialogComponent, AXImagePickerComponent, AXImageRendererComponent, AXInfiniteScrollDirective, AXInfoBarActionRegistry, AXInfoBarComponent, AXInfoBarSearchComponent, AXInfoBarService, AXLocationPickerComponent, AXLocationRendererComponent, AXMessageActionRegistry, AXMessageApi, AXMessageListComponent, AXMessageListNoActiveDefaultComponent, AXMessageListService, AXMessageRendererRegistry, AXNewConversationDialogComponent, AXPickerFooterComponent, AXPickerHeaderComponent, AXRealtimeApi, AXRegistryService, AXSidebarComponent, AXSidebarService, AXStickerRendererComponent, AXStickerTabComponent, AXSystemRendererComponent, AXTextRendererComponent, AXUserApi, AXVideoInfoBarBannerComponent, AXVideoPickerComponent, AXVideoRendererComponent, AXVoiceInfoBarBannerComponent, AXVoiceRecorderComponent, AXVoiceRendererComponent, AX_CONVERSATION_AUDIO_RENDERER, AX_CONVERSATION_COMPOSER_AUDIO_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_TAB, AX_CONVERSATION_COMPOSER_FILE_ACTION, AX_CONVERSATION_COMPOSER_IMAGE_ACTION, AX_CONVERSATION_COMPOSER_LOCATION_ACTION, AX_CONVERSATION_COMPOSER_STICKER_TAB, AX_CONVERSATION_COMPOSER_VIDEO_ACTION, AX_CONVERSATION_COMPOSER_VOICE_RECORDING_ACTION, AX_CONVERSATION_FALLBACK_RENDERER, AX_CONVERSATION_FILE_RENDERER, AX_CONVERSATION_IMAGE_RENDERER, AX_CONVERSATION_INFO_BAR_ARCHIVE_ACTION, AX_CONVERSATION_INFO_BAR_BLOCK_ACTION, AX_CONVERSATION_INFO_BAR_DELETE_ACTION, AX_CONVERSATION_INFO_BAR_DIVIDER, AX_CONVERSATION_INFO_BAR_INFO_ACTION, AX_CONVERSATION_INFO_BAR_MUTE_ACTION, AX_CONVERSATION_INFO_BAR_SEARCH_ACTION, AX_CONVERSATION_ITEM_BLOCK_ACTION, AX_CONVERSATION_ITEM_DELETE_ACTION, AX_CONVERSATION_ITEM_DIVIDER, AX_CONVERSATION_ITEM_MARK_READ_ACTION, AX_CONVERSATION_ITEM_MUTE_ACTION, AX_CONVERSATION_ITEM_PIN_ACTION, AX_CONVERSATION_LOCATION_RENDERER, AX_CONVERSATION_MESSAGE_COPY_ACTION, AX_CONVERSATION_MESSAGE_DELETE_ACTION, AX_CONVERSATION_MESSAGE_EDIT_ACTION, AX_CONVERSATION_MESSAGE_FORWARD_ACTION, AX_CONVERSATION_MESSAGE_REPLY_ACTION, AX_CONVERSATION_STICKER_RENDERER, AX_CONVERSATION_SYSTEM_RENDERER, AX_CONVERSATION_TAB_ALL, AX_CONVERSATION_TAB_ARCHIVED, AX_CONVERSATION_TAB_BOT, AX_CONVERSATION_TAB_CHANNELS, AX_CONVERSATION_TAB_GROUPS, AX_CONVERSATION_TAB_PRIVATE, AX_CONVERSATION_TAB_UNREAD, AX_CONVERSATION_TEXT_RENDERER, AX_CONVERSATION_VIDEO_RENDERER, AX_CONVERSATION_VOICE_RENDERER, AX_DEFAULT_CONVERSATION_CONFIG, AX_STICKER_API_KEY, CONNECTION_ERRORS, CONVERSATION_CONFIG, CONVERSATION_ERRORS, DEFAULT_COMPOSER_ACTIONS, DEFAULT_COMPOSER_TABS, DEFAULT_CONVERSATION_ITEM_ACTIONS, DEFAULT_CONVERSATION_TABS, DEFAULT_INFO_BAR_ACTIONS, DEFAULT_MESSAGE_ACTIONS, DEFAULT_MESSAGE_RENDERERS, ERROR_HANDLER_CONFIG, ERROR_MESSAGES, FILE_ERRORS, LOCATION_ERRORS, MESSAGE_ERRORS, PERMISSION_ERRORS, REGISTRY_CONFIG, URL_ERRORS, USER_ERRORS, axConversationIndexedDbStorage, conversationSharedStorage, formatErrorMessage, getDefaultConversationItemActions, getErrorMessage, mergeWithDefaults, provideConversation, sanitizeInput, validateConversationId, validateEmail, validateFile, validateLatitude, validateLongitude, validateMessagePayload, validateMessageText, validateMessageType, validateUrl, validateUserId, validateUserIds };
6244
- export type { AXApiError, AXAudioPayload, AXBlockReportReason, AXCallEvent, AXComposerAction, AXComposerActionComponent, AXComposerActionContext, AXComposerActiveComponent, AXComposerTab, AXConnectionEvent, AXConnectionOptions, AXConnectionStatus, AXConversation, AXConversationAiResponderConfig, AXConversationConfig, AXConversationCreateData, AXConversationError, AXConversationFilter, AXConversationFilters, AXConversationItemAction, AXConversationItemActionContext, AXConversationMetadata, AXConversationOptions, AXConversationPermissions, AXConversationSettings, AXConversationSettingsUpdate, AXConversationSort, AXConversationStatus, AXConversationTab, AXConversationType, AXConversationUpdateData, AXDeleteMessageCommand, AXEditMessageCommand, AXErrorCode, AXErrorHandlerConfig, AXErrorMessage, AXErrorSeverity, AXFilePayload, AXFileValidationResult, AXGroupedReaction, AXImagePayload, AXInfoBarAction, AXInfoBarActionComponent, AXInfoBarActionContext, AXInfoBarActiveBanner, AXInfoBarActiveComponent, AXLink, AXLinkPreview, AXLocationPayload, AXMention, AXMessage, AXMessageAction, AXMessageActionContext, AXMessageAvatarTemplateContext, AXMessageForwardData, AXMessageInfoBarBannerComponent, AXMessageListEmptyComponent, AXMessagePayload, AXMessageRenderer, AXMessageRendererCapabilities, AXMessageRendererComponent, AXMessageRendererContentState, AXMessageRendererState, AXMessageSearchFilters, AXMessageStatus, AXMessageType, AXNotificationEvent, AXPaginatedResult, AXPagination, AXParticipant, AXParticipantRole, AXParticipantStatus, AXParticipantUpdate, AXPinnedMessage, AXPollOption, AXPollPayload, AXPresenceStatus, AXPresenceUpdate, AXReaction, AXReadReceipt, AXRegistryConfiguration, AXRegistryItem, AXSendMessageCommand, AXStickerPayload, AXSystemPayload, AXTextFormat, AXTextPayload, AXTypingIndicator, AXUserProfileUpdate, AXUserRole, AXUserSearchFilters, AXValidationResult, AXVideoPayload, AXVoicePayload, DropdownMenuItem, FilePreview };
6152
+ export { AXAudioInfoBarBannerComponent, AXAudioPickerComponent, AXAudioRendererComponent, AXBaseRegistry, AXComposerActionRegistry, AXComposerComponent, AXComposerPopupComponent, AXComposerService, AXComposerTabRegistry, AXConversation2Module, AXConversationAiApiKey, AXConversationAiResponderService, AXConversationApi, AXConversationContainerComponent, AXConversationContainerDirective, AXConversationDateUtilsService, AXConversationIndexedDbConversationApi, AXConversationIndexedDbMessageAiApi, AXConversationIndexedDbMessageApi, AXConversationIndexedDbRealtimeApi, AXConversationIndexedDbStorage, AXConversationIndexedDbStores, AXConversationIndexedDbUserApi, AXConversationInfoPanelComponent, AXConversationItemActionRegistry, AXConversationMessageRendererStateComponent, AXConversationMessageUtilsService, AXConversationService, AXConversationSharedStorage, AXConversationTabRegistry, AXEmojiTabComponent, AXErrorHandlerService, AXFallbackRendererComponent, AXFilePickerComponent, AXFileRendererComponent, AXFileUploadService, AXForwardMessageDialogComponent, AXImagePickerComponent, AXImageRendererComponent, AXInfiniteScrollDirective, AXInfoBarActionRegistry, AXInfoBarComponent, AXInfoBarSearchComponent, AXInfoBarService, AXLocationPickerComponent, AXLocationRendererComponent, AXMessageActionRegistry, AXMessageApi, AXMessageListComponent, AXMessageListNoActiveDefaultComponent, AXMessageListService, AXMessageRendererRegistry, AXNewConversationDialogComponent, AXPickerFooterComponent, AXPickerHeaderComponent, AXRealtimeApi, AXRegistryService, AXSidebarComponent, AXSidebarService, AXStickerRendererComponent, AXStickerTabComponent, AXSystemRendererComponent, AXTextRendererComponent, AXUserApi, AXVideoInfoBarBannerComponent, AXVideoPickerComponent, AXVideoRendererComponent, AXVoiceInfoBarBannerComponent, AXVoiceRecorderComponent, AXVoiceRendererComponent, AX_CONVERSATION_AUDIO_RENDERER, AX_CONVERSATION_COMPOSER_AUDIO_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_TAB, AX_CONVERSATION_COMPOSER_FILE_ACTION, AX_CONVERSATION_COMPOSER_IMAGE_ACTION, AX_CONVERSATION_COMPOSER_LOCATION_ACTION, AX_CONVERSATION_COMPOSER_STICKER_TAB, AX_CONVERSATION_COMPOSER_VIDEO_ACTION, AX_CONVERSATION_COMPOSER_VOICE_RECORDING_ACTION, AX_CONVERSATION_FALLBACK_RENDERER, AX_CONVERSATION_FILE_RENDERER, AX_CONVERSATION_IMAGE_RENDERER, AX_CONVERSATION_INFO_BAR_ARCHIVE_ACTION, AX_CONVERSATION_INFO_BAR_BLOCK_ACTION, AX_CONVERSATION_INFO_BAR_DELETE_ACTION, AX_CONVERSATION_INFO_BAR_DIVIDER, AX_CONVERSATION_INFO_BAR_INFO_ACTION, AX_CONVERSATION_INFO_BAR_MUTE_ACTION, AX_CONVERSATION_INFO_BAR_SEARCH_ACTION, AX_CONVERSATION_ITEM_BLOCK_ACTION, AX_CONVERSATION_ITEM_DELETE_ACTION, AX_CONVERSATION_ITEM_DIVIDER, AX_CONVERSATION_ITEM_MARK_READ_ACTION, AX_CONVERSATION_ITEM_MUTE_ACTION, AX_CONVERSATION_ITEM_PIN_ACTION, AX_CONVERSATION_LOCATION_RENDERER, AX_CONVERSATION_MESSAGE_COPY_ACTION, AX_CONVERSATION_MESSAGE_DELETE_ACTION, AX_CONVERSATION_MESSAGE_EDIT_ACTION, AX_CONVERSATION_MESSAGE_FORWARD_ACTION, AX_CONVERSATION_MESSAGE_REPLY_ACTION, AX_CONVERSATION_STICKER_RENDERER, AX_CONVERSATION_SYSTEM_RENDERER, AX_CONVERSATION_TAB_ALL, AX_CONVERSATION_TAB_ARCHIVED, AX_CONVERSATION_TAB_BOT, AX_CONVERSATION_TAB_CHANNELS, AX_CONVERSATION_TAB_GROUPS, AX_CONVERSATION_TAB_PRIVATE, AX_CONVERSATION_TAB_UNREAD, AX_CONVERSATION_TEXT_RENDERER, AX_CONVERSATION_VIDEO_RENDERER, AX_CONVERSATION_VOICE_RENDERER, AX_DEFAULT_CONVERSATION_CONFIG, AX_STICKER_API_KEY, CONNECTION_ERRORS, CONVERSATION_CONFIG, CONVERSATION_ERRORS, DEFAULT_COMPOSER_ACTIONS, DEFAULT_COMPOSER_TABS, DEFAULT_CONVERSATION_ITEM_ACTIONS, DEFAULT_CONVERSATION_TABS, DEFAULT_INFO_BAR_ACTIONS, DEFAULT_MESSAGE_ACTIONS, DEFAULT_MESSAGE_RENDERERS, ERROR_HANDLER_CONFIG, ERROR_MESSAGES, FILE_ERRORS, LOCATION_ERRORS, MESSAGE_ERRORS, REGISTRY_CONFIG, URL_ERRORS, USER_ERRORS, axConversationIndexedDbStorage, conversationSharedStorage, formatErrorMessage, getDefaultConversationItemActions, getErrorMessage, mergeWithDefaults, provideConversation, sanitizeInput, validateConversationId, validateEmail, validateFile, validateLatitude, validateLongitude, validateMessagePayload, validateMessageText, validateMessageType, validateUrl, validateUserId, validateUserIds };
6153
+ export type { AXApiError, AXAudioPayload, AXBlockReportReason, AXCallEvent, AXComposerAction, AXComposerActionComponent, AXComposerActionContext, AXComposerActiveComponent, AXComposerTab, AXConnectionEvent, AXConnectionOptions, AXConnectionStatus, AXConversation, AXConversationAiResponderConfig, AXConversationConfig, AXConversationCreateData, AXConversationError, AXConversationFilter, AXConversationFilters, AXConversationItemAction, AXConversationItemActionContext, AXConversationMetadata, AXConversationOptions, AXConversationSettings, AXConversationSettingsUpdate, AXConversationSort, AXConversationStatus, AXConversationTab, AXConversationType, AXConversationUpdateData, AXDeleteMessageCommand, AXEditMessageCommand, AXErrorCode, AXErrorHandlerConfig, AXErrorMessage, AXErrorSeverity, AXFilePayload, AXFileValidationResult, AXGroupedReaction, AXImagePayload, AXInfoBarAction, AXInfoBarActionComponent, AXInfoBarActionContext, AXInfoBarActiveBanner, AXInfoBarActiveComponent, AXLink, AXLinkPreview, AXLocationPayload, AXMention, AXMessage, AXMessageAction, AXMessageActionContext, AXMessageAvatarTemplateContext, AXMessageForwardData, AXMessageInfoBarBannerComponent, AXMessageListEmptyComponent, AXMessagePayload, AXMessageRenderer, AXMessageRendererCapabilities, AXMessageRendererComponent, AXMessageRendererContentState, AXMessageRendererState, AXMessageSearchFilters, AXMessageStatus, AXMessageType, AXNotificationEvent, AXPaginatedResult, AXPagination, AXParticipant, AXParticipantRole, AXParticipantStatus, AXParticipantUpdate, AXPinnedMessage, AXPollOption, AXPollPayload, AXPresenceStatus, AXPresenceUpdate, AXReaction, AXReadReceipt, AXRegistryConfiguration, AXRegistryItem, AXSendMessageCommand, AXStickerPayload, AXSystemPayload, AXTextFormat, AXTextPayload, AXTypingIndicator, AXUserProfileUpdate, AXUserRole, AXUserSearchFilters, AXValidationResult, AXVideoPayload, AXVoicePayload, DropdownMenuItem, FilePreview };
@@ -74,7 +74,9 @@ declare class AXSideMenuComponent extends NXComponent {
74
74
  readonly mode: _angular_core.InputSignal<"full" | "compact">;
75
75
  children: _angular_core.Signal<readonly AXSideMenuItemComponent[]>;
76
76
  private elementRef;
77
- private firstLevelItems;
77
+ private document;
78
+ private platformId;
79
+ private renderer;
78
80
  /** @ignore */
79
81
  private get __hostClass();
80
82
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXSideMenuComponent, never>;