@acorex/components 22.4.18 → 22.4.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/acorex-components-calendar.mjs +1 -1
- package/fesm2022/acorex-components-calendar.mjs.map +1 -1
- package/fesm2022/acorex-components-combo-box.mjs +44 -2
- package/fesm2022/acorex-components-combo-box.mjs.map +1 -1
- package/fesm2022/acorex-components-comment.mjs +139 -31
- package/fesm2022/acorex-components-comment.mjs.map +1 -1
- package/fesm2022/acorex-components-data-list.mjs +1 -1
- package/fesm2022/acorex-components-data-list.mjs.map +1 -1
- package/fesm2022/acorex-components-data-table.mjs +97 -51
- package/fesm2022/acorex-components-data-table.mjs.map +1 -1
- package/fesm2022/acorex-components-decorators.mjs +2 -2
- package/fesm2022/acorex-components-decorators.mjs.map +1 -1
- package/fesm2022/acorex-components-image-editor.mjs +8 -8
- package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-kanban.mjs +1 -1
- package/fesm2022/acorex-components-kanban.mjs.map +1 -1
- package/fesm2022/acorex-components-list.mjs +1 -1
- package/fesm2022/acorex-components-list.mjs.map +1 -1
- package/fesm2022/acorex-components-lookup.mjs +40 -2
- package/fesm2022/acorex-components-lookup.mjs.map +1 -1
- package/fesm2022/acorex-components-media-viewer.mjs +1 -1
- package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
- package/fesm2022/acorex-components-paint.mjs +1 -1
- package/fesm2022/acorex-components-paint.mjs.map +1 -1
- package/fesm2022/acorex-components-scheduler.mjs +8 -8
- package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
- package/fesm2022/acorex-components-side-menu.mjs +1 -1
- package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
- package/fesm2022/acorex-components-sidebar.mjs +2 -2
- package/fesm2022/acorex-components-sidebar.mjs.map +1 -1
- package/fesm2022/acorex-components-tooltip.mjs +48 -4
- package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
- package/fesm2022/acorex-components-tree-view.mjs +1 -1
- package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
- package/package.json +3 -3
- package/types/acorex-components-combo-box.d.ts +5 -0
- package/types/acorex-components-comment.d.ts +59 -17
- package/types/acorex-components-data-table.d.ts +5 -0
- package/types/acorex-components-lookup.d.ts +5 -0
- package/types/acorex-components-tooltip.d.ts +11 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-components-comment.mjs","sources":["../../../../packages/components/comment/src/lib/comment-container/comment-container.component.ts","../../../../packages/components/comment/src/lib/comment-item-template.directive.ts","../../../../packages/components/comment/src/lib/comment-tools/comment-date/comment-date.component.ts","../../../../packages/components/comment/src/lib/comment-tools/comment-edited/comment-edited.component.ts","../../../../packages/components/comment/src/lib/comment-tools/comment-like/comment-like.component.ts","../../../../packages/components/comment/src/lib/comment-tools/comment-like/comment-like.component.html","../../../../packages/components/comment/src/lib/comment-tools/comment-reply-text/comment-reply-text.component.ts","../../../../packages/components/comment/src/lib/comment-item/comment-item.component.ts","../../../../packages/components/comment/src/lib/comment-item/comment-item.component.html","../../../../packages/components/comment/src/lib/comment-tools/comment-menu-options/comment-menu-options.component.ts","../../../../packages/components/comment/src/lib/comment-tools/comment-reply/comment-reply.component.ts","../../../../packages/components/comment/src/lib/comment-tools/comment-reply-more/comment-reply-more.component.ts","../../../../packages/components/comment/src/lib/comment-view/comment-view.component.ts","../../../../packages/components/comment/src/lib/comment-view/comment-view.component.html","../../../../packages/components/comment/src/lib/comment.module.ts","../../../../packages/components/comment/src/acorex-components-comment.ts"],"sourcesContent":["import { AXComponent } from '@acorex/cdk/common';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n contentChild,\n DOCUMENT,\n inject,\n PLATFORM_ID,\n ViewEncapsulation,\n} from '@angular/core';\n\n/**\n * A container component for displaying and managing comments.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-comment-container',\n template: `\n <ng-content select=\"ax-header\" />\n <ng-content />\n <ng-content select=\"ax-footer\" />\n `,\n styleUrl: './comment-container.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: AXComponent, useExisting: AXCommentContainerComponent }],\n host: {\n '[class.ax-has-header]': '!!projectedHeader()',\n '[class.ax-has-footer]': '!!projectedFooter()',\n },\n})\nexport class AXCommentContainerComponent {\n private document = inject(DOCUMENT);\n private platformID = inject(PLATFORM_ID);\n\n protected readonly projectedHeader = contentChild('ax-header');\n protected readonly projectedFooter = contentChild('ax-footer');\n\n /**\n * Scrolls to a specific comment reply by its ID and highlights it temporarily.\n *\n * @param id - The ID of the comment reply to scroll to\n */\n scrollToReply(id: string) {\n if (!isPlatformBrowser(this.platformID)) return;\n\n const key = String(id);\n const el =\n (this.document.querySelector(`ax-comment-item[id=\"${key}\"]`) as HTMLElement | null) ??\n (this.document.querySelector(`ax-comment-item[id=\"comment-${key}\"]`) as HTMLElement | null);\n if (!el) return;\n\n el.scrollIntoView({ behavior: 'smooth', block: 'center' });\n el.classList.add('ax-state-highlight');\n setTimeout(() => el.classList.remove('ax-state-highlight'), 1500);\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { AXCommentItemTemplateContext } from './comment.types';\n\n/**\n * Marks an `ng-template` as a custom comment item renderer.\n * When omitted, `ax-comment-view` uses the built-in layout.\n * Like and reply stay in the item actions row either way.\n *\n * @example\n * ```html\n * <ax-comment-view [datasource]=\"comments\">\n * <ng-template axCommentItem let-item>\n * <ax-avatar [color]=\"item.color\" look=\"twotone\" shape=\"rounded\">\n * <ax-text>{{ item.initials }}</ax-text>\n * </ax-avatar>\n * <ax-title>{{ item.author }}</ax-title>\n * <ax-content>{{ item.content }}</ax-content>\n * </ng-template>\n * </ax-comment-view>\n * ```\n */\n@Directive({\n selector: 'ng-template[axCommentItem]',\n})\nexport class AXCommentItemTemplateDirective {\n constructor(readonly template: TemplateRef<AXCommentItemTemplateContext>) {}\n}\n","import { AXComponent } from '@acorex/cdk/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * A component for displaying date on a comment.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-comment-date',\n template: '<ng-content />',\n styleUrl: './comment-date.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: AXComponent, useExisting: AXCommentDateComponent }],\n})\nexport class AXCommentDateComponent {}\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\n\n/**\n * Muted “edited” label shown next to the comment timestamp.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-comment-edited',\n template: `{{ '@acorex:comment.edited' | translate | async }}`,\n styleUrl: './comment-edited.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ax-comment-edited',\n '[attr.title]': 'editedAt() || null',\n '[attr.aria-label]': 'editedAt() || null',\n },\n imports: [AXTranslatorPipe, AsyncPipe],\n providers: [{ provide: AXComponent, useExisting: AXCommentEditedComponent }],\n})\nexport class AXCommentEditedComponent {\n /** Optional tooltip (for example the time the comment was last edited). */\n readonly editedAt = input<string>();\n}\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { ChangeDetectionStrategy, Component, model, ViewEncapsulation } from '@angular/core';\n\n/**\n * A component for displaying and managing likes on a comment.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-comment-like',\n templateUrl: './comment-like.component.html',\n styleUrl: './comment-like.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXDecoratorIconComponent, AXDecoratorGenericComponent],\n providers: [{ provide: AXComponent, useExisting: AXCommentLikeComponent }],\n})\nexport class AXCommentLikeComponent {\n like = model.required<boolean>();\n\n protected toggleLike() {\n this.like.update((prev) => !prev);\n }\n}\n","<button\n type=\"button\"\n class=\"ax-comment-like-button\"\n [class.ax-state-liked]=\"like()\"\n [attr.aria-pressed]=\"like()\"\n (click)=\"toggleLike()\"\n>\n <ax-icon [icon]=\"like() ? 'ax-icon ax-icon-solid ax-icon-heart' : 'ax-icon ax-icon-heart'\"></ax-icon>\n <ax-text><ng-content /></ax-text>\n</button>\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * A component for displaying the reply action on a comment.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-comment-reply-text',\n template: `\n <button type=\"button\" class=\"ax-comment-reply-button\">\n <ax-icon icon=\"ax-icon ax-icon-arrow-turn-left\"></ax-icon>\n <ax-text>{{ '@acorex:comment.reply' | translate | async }}</ax-text>\n </button>\n `,\n styleUrl: './comment-reply-text.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXDecoratorGenericComponent, AXDecoratorIconComponent, AXTranslatorPipe, AsyncPipe],\n providers: [{ provide: AXComponent, useExisting: AXCommentReplyTextComponent }],\n})\nexport class AXCommentReplyTextComponent {}\n","import { AXComponent, AXItemClickEvent, AXStyleColorType } from '@acorex/cdk/common';\nimport { AXAvatarComponent } from '@acorex/components/avatar';\nimport { AXBadgeComponent } from '@acorex/components/badge';\nimport {\n AXButtonItemComponent,\n AXButtonItemListComponent,\n type AXButtonItemListItem,\n} from '@acorex/components/button';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXDropdownButtonComponent } from '@acorex/components/dropdown-button';\nimport { AXImageComponent } from '@acorex/components/image';\nimport type { AXMenuItem } from '@acorex/components/menu';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n inject,\n input,\n model,\n output,\n TemplateRef,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXCommentDateComponent } from '../comment-tools/comment-date/comment-date.component';\nimport { AXCommentEditedComponent } from '../comment-tools/comment-edited/comment-edited.component';\nimport { AXCommentLikeComponent } from '../comment-tools/comment-like/comment-like.component';\nimport { AXCommentReplyTextComponent } from '../comment-tools/comment-reply-text/comment-reply-text.component';\nimport { AXCommentItem, AXCommentItemTemplateContext } from '../comment.types';\n\n/**\n * A component that represents an individual comment item in the comment system.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-comment-item',\n templateUrl: './comment-item.component.html',\n styleUrl: './comment-item.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AXTranslatorPipe,\n AsyncPipe,\n AXDecoratorIconComponent,\n AXDecoratorGenericComponent,\n NgTemplateOutlet,\n AXAvatarComponent,\n AXBadgeComponent,\n AXImageComponent,\n AXCommentDateComponent,\n AXCommentEditedComponent,\n AXCommentLikeComponent,\n AXCommentReplyTextComponent,\n AXDropdownButtonComponent,\n AXButtonItemListComponent,\n ],\n providers: [{ provide: AXComponent, useExisting: AXCommentItemComponent }],\n host: {\n '[class.ax-comment-item-reply]': 'isReply',\n '[class.ax-comment-item-custom]': '!!itemTemplate()',\n },\n})\nexport class AXCommentItemComponent {\n private readonly parentComment = inject(AXCommentItemComponent, { optional: true, skipSelf: true });\n\n protected readonly isReply = this.parentComment != null;\n\n private readonly projectedAvatar = contentChild(AXAvatarComponent);\n private readonly viewAvatar = viewChild(AXAvatarComponent);\n\n /** Data item used by `ax-comment-view`. When set, the default layout is rendered internally. */\n readonly item = input<AXCommentItem | null>(null);\n\n readonly replyCount = input<number>();\n\n /** Two-way bindable state controlling whether nested replies are visible. */\n readonly repliesExpanded = model(false);\n\n /** Whether replies for this item are currently being loaded. */\n readonly loading = input(false);\n\n /**\n * Custom renderer for the item body. When omitted, the default layout\n * (or projected slots) is used.\n */\n readonly itemTemplate = input<TemplateRef<AXCommentItemTemplateContext> | null>(null);\n\n /** Context passed to `itemTemplate`. */\n readonly itemContext = input<AXCommentItemTemplateContext | null>(null);\n\n readonly likeChange = output<boolean>();\n readonly replyClick = output<Event>();\n readonly actionClick = output<AXMenuItem>();\n\n protected readonly avatarSize = 48;\n\n protected readonly showDefaultDataLayout = computed(() => !!this.item() && !this.itemTemplate());\n protected readonly useProjectedSlots = computed(() => !this.item() && !this.itemTemplate());\n protected readonly itemActions = computed(() => this.item()?.actions ?? []);\n protected readonly showOverflowMenu = computed(\n () => this.showDefaultDataLayout() && this.itemActions().length > 0,\n );\n protected readonly overflowItems = computed(() => this.toButtonItems(this.itemActions()));\n\n constructor() {\n afterNextRender(() => {\n if (this.itemTemplate()) return;\n (this.projectedAvatar() ?? this.viewAvatar())?.size?.set(this.avatarSize);\n });\n }\n\n protected getColor(data: AXCommentItem): AXStyleColorType {\n return data.color ?? 'default';\n }\n\n protected showEdited(data: AXCommentItem): boolean {\n return data.edited === true;\n }\n\n protected getInitials(data: AXCommentItem): string {\n if (data.initials) return data.initials;\n return (data.author || '')\n .split(/\\s+/)\n .filter(Boolean)\n .map((part) => part[0])\n .join('')\n .slice(0, 2)\n .toUpperCase();\n }\n\n protected handleLike(liked: boolean) {\n this.likeChange.emit(liked);\n }\n\n protected handleReply(event: Event) {\n this.replyClick.emit(event);\n }\n\n protected handleOverflowClick(event: AXItemClickEvent<AXButtonItemComponent>) {\n const action =\n this.findAction(this.itemActions(), event.name) ?? {\n text: event.item?.text ?? event.name ?? '',\n name: event.name,\n data: event.data,\n };\n this.actionClick.emit(action);\n }\n\n private toButtonItems(items: AXMenuItem[]): AXButtonItemListItem[] {\n return items.map((item) => ({\n name: item.name ?? item.text,\n text: item.text,\n icon: item.icon ?? '',\n color: item.color,\n disabled: item.disabled,\n divided: item.break,\n items: item.items?.length ? this.toButtonItems(item.items) : undefined,\n }));\n }\n\n private findAction(items: AXMenuItem[], name?: string): AXMenuItem | undefined {\n if (name == null) return undefined;\n for (const item of items) {\n if ((item.name ?? item.text) === name) return item;\n const nested = item.items?.length ? this.findAction(item.items, name) : undefined;\n if (nested) return nested;\n }\n return undefined;\n }\n\n /**\n * Toggles the collapse state of the comment replies section.\n */\n toggleReplies() {\n this.repliesExpanded.update((v) => !v);\n }\n\n /**\n * Expands the nested replies section.\n */\n showReplies() {\n this.repliesExpanded.set(true);\n }\n\n /**\n * Collapses the nested replies section.\n */\n hideReplies() {\n this.repliesExpanded.set(false);\n }\n}\n","<div class=\"ax-comment-layout\">\n @if (showDefaultDataLayout()) {\n @if (item(); as data) {\n <ax-avatar [color]=\"getColor(data)\" [size]=\"avatarSize\" look=\"twotone\" shape=\"rounded\">\n @if (data.avatar) {\n <ax-image [src]=\"data.avatar\"></ax-image>\n } @else {\n <ax-text>{{ getInitials(data) }}</ax-text>\n }\n </ax-avatar>\n }\n }\n <ng-content select=\"ax-avatar\" />\n\n <div class=\"ax-comment-main\">\n @if (itemTemplate(); as tpl) {\n <div class=\"ax-comment-custom-body\">\n <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"itemContext()\" />\n </div>\n } @else if (showDefaultDataLayout()) {\n @if (item(); as data) {\n <div class=\"ax-comment-header\">\n <div class=\"ax-comment-header-meta\">\n <ax-title>{{ data.author }}</ax-title>\n @if (data.isYou) {\n <ax-badge\n class=\"ax-sm ax-pill ax-comment-you-badge\"\n look=\"twotone\"\n color=\"primary\"\n [text]=\"('@acorex:comment.you' | translate | async) ?? 'You'\"\n ></ax-badge>\n }\n @if (showEdited(data)) {\n <ax-comment-edited [editedAt]=\"data.editedAt\" />\n }\n @if (data.date) {\n <ax-comment-date>{{ data.date }}</ax-comment-date>\n }\n </div>\n @if (showOverflowMenu()) {\n <ax-dropdown-button\n class=\"ax-sm ax-comment-menu-trigger\"\n mode=\"dropdown\"\n look=\"blank\"\n [iconOnly]=\"true\"\n text=\"More\"\n >\n <ax-prefix>\n <ax-icon icon=\"ax-icon ax-icon-more-horizontal\"></ax-icon>\n </ax-prefix>\n <ax-button-item-list [items]=\"overflowItems()\" (onItemClick)=\"handleOverflowClick($event)\">\n </ax-button-item-list>\n </ax-dropdown-button>\n }\n </div>\n <div class=\"ax-comment-body\">\n <ax-content>\n <div [innerHTML]=\"data.content\"></div>\n </ax-content>\n </div>\n }\n }\n\n <div class=\"ax-comment-default\" [hidden]=\"!useProjectedSlots()\">\n <div class=\"ax-comment-header\">\n <div class=\"ax-comment-header-meta\">\n <ng-content select=\"ax-title\" />\n <ng-content select=\"ax-subtitle\" />\n <ng-content select=\"ax-badge\" />\n <ng-content select=\"ax-comment-edited\" />\n <ng-content select=\"ax-comment-date\" />\n </div>\n <ng-content select=\"ax-comment-menu-options\" />\n </div>\n <div class=\"ax-comment-body\">\n <ng-content select=\"ax-content\" />\n </div>\n </div>\n\n <div class=\"ax-comment-actions\">\n @if (item(); as data) {\n <ax-comment-like [like]=\"!!data.liked\" (likeChange)=\"handleLike($event)\">\n {{ data.likes ?? 0 }}\n </ax-comment-like>\n <ax-comment-reply-text (click)=\"handleReply($event)\"></ax-comment-reply-text>\n }\n <ng-content select=\"ax-comment-like\" />\n <ng-content select=\"ax-comment-reply-text\" />\n @if (replyCount()) {\n <button\n type=\"button\"\n class=\"ax-comment-replies-toggle\"\n [attr.aria-expanded]=\"repliesExpanded()\"\n [attr.aria-busy]=\"loading()\"\n [disabled]=\"loading()\"\n (click)=\"toggleReplies()\"\n >\n <ax-icon\n [icon]=\"\n loading()\n ? 'ax-icon ax-icon-reload'\n : repliesExpanded()\n ? 'ax-icon ax-icon-chevron-up'\n : 'ax-icon ax-icon-chevron-down'\n \"\n [class.ax-comment-loading-icon]=\"loading()\"\n ></ax-icon>\n <span>\n {{ replyCount() }}\n {{ ((replyCount() ?? 0) > 1 ? '@acorex:comment.replies' : '@acorex:comment.reply') | translate | async }}\n </span>\n </button>\n }\n </div>\n\n <div class=\"ax-comment-replies\" [hidden]=\"!(replyCount() && repliesExpanded())\">\n @if (loading()) {\n <div class=\"ax-comment-replies-loading\">\n <ax-icon icon=\"ax-icon ax-icon-reload\" class=\"ax-comment-loading-icon\"></ax-icon>\n </div>\n }\n <ng-content select=\"ax-comment-item\" />\n <ng-content select=\"ax-comment-reply-more\" />\n <ng-content />\n </div>\n </div>\n</div>\n","import { AXComponent } from '@acorex/cdk/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * A component for displaying and managing menu options on a comment.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-comment-menu-options',\n template: '<ng-content />',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: AXComponent, useExisting: AXMenuOptionsComponent }],\n})\nexport class AXMenuOptionsComponent {}\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe, isPlatformBrowser } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n DOCUMENT,\n inject,\n input,\n output,\n PLATFORM_ID,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXCommentItem } from '../../comment.types';\n\n/**\n * Composer chrome shown while writing a reply. Projects the editor below a\n * compact reply-context bar; hide the bar by leaving `item` empty.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-comment-reply',\n template: `\n @if (item(); as target) {\n <div class=\"ax-comment-reply-banner\">\n <button type=\"button\" class=\"ax-comment-reply-target\" (click)=\"revealTarget()\">\n <ax-icon\n class=\"ax-comment-reply-lead-icon\"\n icon=\"ax-icon ax-icon-arrow-turn-left\"\n aria-hidden=\"true\"\n ></ax-icon>\n <span class=\"ax-comment-reply-copy\">\n <span class=\"ax-comment-reply-label\">\n {{ '@acorex:comment.replying-to' | translate | async }}\n <span class=\"ax-comment-reply-author\">\n @if (target.isYou) {\n {{ '@acorex:comment.you' | translate | async }}\n } @else {\n {{ target.author }}\n }\n </span>\n </span>\n @if (preview(); as excerpt) {\n <span class=\"ax-comment-reply-preview\" [title]=\"excerpt\">{{ excerpt }}</span>\n }\n </span>\n </button>\n <button\n type=\"button\"\n class=\"ax-comment-reply-close\"\n [attr.aria-label]=\"'@acorex:common.general.close' | translate | async\"\n (click)=\"close()\"\n >\n <ax-icon icon=\"ax-icon ax-icon-close\" aria-hidden=\"true\"></ax-icon>\n </button>\n </div>\n }\n <div class=\"ax-comment-reply-composer\">\n <ng-content />\n </div>\n `,\n styleUrl: './comment-reply.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXDecoratorIconComponent, AXTranslatorPipe, AsyncPipe],\n providers: [{ provide: AXComponent, useExisting: AXCommentReplyComponent }],\n host: {\n class: 'ax-comment-reply',\n '[class.ax-comment-reply-open]': '!!item()',\n },\n})\nexport class AXCommentReplyComponent {\n private readonly document = inject(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly destroyRef = inject(DestroyRef);\n private highlightTimer: ReturnType<typeof setTimeout> | null = null;\n\n constructor() {\n this.destroyRef.onDestroy(() => {\n if (this.highlightTimer) clearTimeout(this.highlightTimer);\n });\n }\n\n /** Comment currently being replied to. When null, only the projected composer is shown. */\n readonly item = input<AXCommentItem | null>(null);\n\n /** Emitted when the close control on the reply banner is clicked. */\n readonly onClose = output<void>();\n\n /** Emitted when the banner is clicked to jump to the target comment. */\n readonly onTargetClick = output<string>();\n\n protected readonly preview = computed(() => this.toPreview(this.item()?.content));\n\n protected close() {\n this.onClose.emit();\n }\n\n protected revealTarget() {\n const item = this.item();\n if (!item) return;\n const id = String(item.id);\n this.onTargetClick.emit(id);\n this.scrollToComment(id);\n }\n\n private scrollToComment(id: string) {\n if (!isPlatformBrowser(this.platformId)) return;\n const el =\n (this.document.querySelector(`ax-comment-item[id=\"${id}\"]`) as HTMLElement | null) ??\n (this.document.querySelector(`ax-comment-item[id=\"comment-${id}\"]`) as HTMLElement | null);\n if (!el) return;\n\n el.scrollIntoView({ behavior: 'smooth', block: 'center' });\n el.classList.add('ax-state-highlight');\n if (this.highlightTimer) clearTimeout(this.highlightTimer);\n this.highlightTimer = setTimeout(() => {\n el.classList.remove('ax-state-highlight');\n this.highlightTimer = null;\n }, 1500);\n }\n\n private toPreview(content?: string): string {\n return String(content ?? '')\n .replace(/<[^>]+>/g, ' ')\n .replace(/ | /gi, ' ')\n .replace(/&/gi, '&')\n .replace(/</gi, '<')\n .replace(/>/gi, '>')\n .replace(/"/gi, '\"')\n .replace(/'|'/gi, \"'\")\n .replace(/\\s+/g, ' ')\n .trim();\n }\n}\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXDecoratorGenericComponent } from '@acorex/components/decorators';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * A component for displaying \"show more replies\" action on a comment.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-comment-reply-more',\n template: '<ax-text><ng-content /></ax-text>',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXDecoratorGenericComponent],\n providers: [{ provide: AXComponent, useExisting: AXCommentReplyMoreComponent }],\n})\nexport class AXCommentReplyMoreComponent {}\n","import { AXComponent } from '@acorex/cdk/common';\nimport type { AXMenuItem } from '@acorex/components/menu';\nimport { AXSkeletonComponent } from '@acorex/components/skeleton';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n computed,\n contentChild,\n effect,\n input,\n model,\n output,\n signal,\n untracked,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXCommentItemTemplateDirective } from '../comment-item-template.directive';\nimport { AXCommentItemComponent } from '../comment-item/comment-item.component';\nimport {\n AXCommentCallback,\n AXCommentDataSource,\n AXCommentItem,\n AXCommentItemTemplateContext,\n AXCommentActionEvent,\n AXCommentLikeChangeEvent,\n AXCommentRepliesToggleEvent,\n AXCommentReplyEvent,\n} from '../comment.types';\n\n/**\n * Renders a comment thread from a datasource (array or lazy callback).\n * Provide `itemTemplate` or `<ng-template axCommentItem>` to customize item UI;\n * otherwise the built-in layout is used.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-comment-view',\n templateUrl: './comment-view.component.html',\n styleUrl: './comment-view.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, AXCommentItemComponent, AXSkeletonComponent],\n providers: [{ provide: AXComponent, useExisting: AXCommentViewComponent }],\n})\nexport class AXCommentViewComponent {\n /** Comment data — a static array or a lazy-loading function. */\n readonly datasource = model<AXCommentDataSource | null>(null);\n\n /**\n * Custom item template. When omitted, the default comment layout is used.\n * You can also project `<ng-template axCommentItem>`.\n */\n readonly itemTemplate = input<TemplateRef<AXCommentItemTemplateContext>>();\n\n readonly onReply = output<AXCommentReplyEvent>();\n readonly onLikeChange = output<AXCommentLikeChangeEvent>();\n readonly onRepliesToggle = output<AXCommentRepliesToggleEvent>();\n readonly onAction = output<AXCommentActionEvent>();\n\n private readonly projectedItemTemplate = contentChild(AXCommentItemTemplateDirective);\n\n protected readonly items = signal<AXCommentItem[]>([]);\n private readonly loadingIds = signal<Set<string>>(new Set());\n private readonly _isLoading = signal(false);\n readonly isLoading = this._isLoading.asReadonly();\n\n private loadGeneration = 0;\n private syncingFromDatasource = false;\n\n private readonly isLazyDataSource = computed(() => typeof this.datasource() === 'function');\n\n protected readonly hasDatasource = computed(() => this.datasource() != null);\n\n protected readonly resolvedTemplate = computed(\n () => this.itemTemplate() ?? this.projectedItemTemplate()?.template ?? null,\n );\n\n constructor() {\n effect(() => {\n const ds = this.datasource();\n if (this.syncingFromDatasource) return;\n untracked(() => void this.applyDatasource(ds));\n });\n }\n\n /**\n * Reloads root comments from the datasource.\n *\n * @returns Promise that resolves when the reload is complete.\n */\n async reloadData(): Promise<void> {\n await this.applyDatasource(this.datasource());\n }\n\n /**\n * Appends a comment to the current root list.\n *\n * @param item - The comment to append.\n * @returns void\n */\n appendItem(item: AXCommentItem): void {\n this.items.update((list) => [...list, item]);\n }\n\n /**\n * Appends a reply under a loaded comment and expands that thread.\n *\n * @param parentId - The parent comment id.\n * @param item - The reply to append.\n * @returns Promise that resolves when any needed lazy load and the append are complete.\n */\n async appendReply(parentId: string, item: AXCommentItem): Promise<void> {\n const parent = this.findItem(parentId);\n if (!parent) return;\n if (this.canLazyLoad(parent)) {\n await this.loadReplies(parent);\n }\n parent.replies = [...(parent.replies ?? []), item];\n parent.replyCount = parent.replies.length;\n parent.repliesExpanded = true;\n this.refreshItems();\n }\n\n /**\n * Finds a comment by id in the loaded tree.\n *\n * @param id - The comment id.\n * @returns The matching item, or null if it is not loaded.\n */\n findItem(id: string): AXCommentItem | null {\n return this.findInTree(this.items(), id);\n }\n\n /**\n * Removes a comment from the loaded tree. Nested replies are removed with it.\n *\n * @param id - The comment id.\n * @returns True when the comment was found and removed.\n */\n removeItem(id: string): boolean {\n const key = String(id);\n const roots = this.items();\n if (roots.some((item) => this.getId(item) === key)) {\n this.items.set(roots.filter((item) => this.getId(item) !== key));\n this.refreshItems();\n return true;\n }\n const parent = this.findParent(roots, key);\n if (!parent?.replies?.length) return false;\n const before = parent.replies.length;\n parent.replies = parent.replies.filter((child) => this.getId(child) !== key);\n const removed = before - parent.replies.length;\n if (!removed) return false;\n parent.replyCount = Math.max(0, (parent.replyCount ?? before) - removed);\n this.refreshItems();\n return true;\n }\n\n /**\n * Patches a loaded comment in place.\n *\n * @param id - The comment id.\n * @param patch - Fields to merge onto the existing item. The original id is kept.\n * @returns The updated item, or null if it is not loaded.\n */\n updateItem(id: string, patch: Partial<AXCommentItem>): AXCommentItem | null {\n const key = String(id);\n let updated: AXCommentItem | null = null;\n\n const apply = (items: AXCommentItem[]): AXCommentItem[] | null => {\n const index = items.findIndex((item) => this.getId(item) === key);\n if (index >= 0) {\n const current = items[index];\n if (!current) return null;\n const nextItem: AXCommentItem = { ...current, ...patch, id: current.id };\n updated = nextItem;\n const next = items.slice();\n next[index] = nextItem;\n return next;\n }\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n if (!item.replies?.length) continue;\n const replies = apply(item.replies);\n if (!replies) continue;\n const next = items.slice();\n next[i] = { ...item, replies };\n return next;\n }\n return null;\n };\n\n const next = apply(this.items());\n if (!next || !updated) return null;\n this.items.set(next);\n this.refreshItems();\n return updated;\n }\n\n /**\n * Expands or collapses replies for a comment, loading them when needed.\n *\n * @param id - The comment id.\n * @param expanded - Whether replies should be visible.\n * @returns Promise that resolves when expansion and any lazy load are complete.\n */\n async setExpanded(id: string, expanded: boolean): Promise<void> {\n const item = this.findItem(id);\n if (!item) return;\n await this.setItemExpanded(item, expanded);\n }\n\n protected getId(item: AXCommentItem): string {\n return String(item.id);\n }\n\n protected getReplies(item: AXCommentItem): AXCommentItem[] {\n return item.replies ?? [];\n }\n\n protected getReplyCount(item: AXCommentItem): number {\n return item.replyCount ?? item.replies?.length ?? 0;\n }\n\n protected isExpanded(item: AXCommentItem): boolean {\n return !!item.repliesExpanded;\n }\n\n protected isItemLoading(item: AXCommentItem): boolean {\n return this.loadingIds().has(this.getId(item));\n }\n\n protected getTemplateContext(item: AXCommentItem, level: number): AXCommentItemTemplateContext {\n return {\n $implicit: item,\n item,\n level,\n repliesExpanded: this.isExpanded(item),\n replyCount: this.getReplyCount(item),\n loading: this.isItemLoading(item),\n liked: !!item.liked,\n likes: item.likes ?? 0,\n toggleReplies: () => void this.setItemExpanded(item, !this.isExpanded(item)),\n toggleLike: () => this.toggleLike(item),\n reply: (event?: Event) => this.replyTo(item, event),\n };\n }\n\n protected async onRepliesExpandedChange(item: AXCommentItem, expanded: boolean): Promise<void> {\n await this.setItemExpanded(item, expanded);\n }\n\n protected toggleLike(item: AXCommentItem, liked = !item.liked): void {\n const next = liked;\n const current = !!item.liked;\n if (next === current) {\n this.refreshItems();\n return;\n }\n item.liked = next;\n item.likes = Math.max(0, (item.likes ?? 0) + (next ? 1 : -1));\n this.refreshItems();\n this.onLikeChange.emit({\n component: this,\n item,\n liked: next,\n likes: item.likes ?? 0,\n isUserInteraction: true,\n });\n }\n\n protected replyTo(item: AXCommentItem, event?: Event): void {\n this.onReply.emit({\n component: this,\n item,\n nativeEvent: event,\n isUserInteraction: true,\n });\n }\n\n protected emitAction(item: AXCommentItem, action: AXMenuItem): void {\n this.onAction.emit({\n component: this,\n item,\n action,\n isUserInteraction: true,\n });\n }\n\n private async applyDatasource(ds: AXCommentDataSource | null): Promise<void> {\n if (ds == null) {\n this.items.set([]);\n this._isLoading.set(false);\n return;\n }\n\n if (Array.isArray(ds)) {\n this.items.set(ds);\n return;\n }\n\n await this.loadRootItems(ds);\n }\n\n private async loadRootItems(loadFn: AXCommentCallback): Promise<void> {\n const generation = ++this.loadGeneration;\n this._isLoading.set(true);\n try {\n const result = loadFn();\n const roots = result instanceof Promise ? await result : result;\n if (generation !== this.loadGeneration) return;\n this.items.set(roots);\n await this.hydrateExpanded(roots);\n } catch {\n if (generation !== this.loadGeneration) return;\n this.items.set([]);\n } finally {\n if (generation === this.loadGeneration) {\n this._isLoading.set(false);\n }\n }\n }\n\n private async hydrateExpanded(items: AXCommentItem[]): Promise<void> {\n for (const item of items) {\n if (item.repliesExpanded && this.canLazyLoad(item)) {\n await this.loadReplies(item);\n }\n const replies = this.getReplies(item);\n if (replies.length) {\n await this.hydrateExpanded(replies);\n }\n }\n }\n\n private canLazyLoad(item: AXCommentItem): boolean {\n return this.isLazyDataSource() && this.getReplyCount(item) > 0 && this.getReplies(item).length === 0;\n }\n\n private async setItemExpanded(item: AXCommentItem, expanded: boolean): Promise<void> {\n item.repliesExpanded = expanded;\n if (expanded && this.canLazyLoad(item)) {\n await this.loadReplies(item);\n }\n this.refreshItems();\n this.onRepliesToggle.emit({\n component: this,\n item,\n expanded,\n isUserInteraction: true,\n });\n }\n\n private async loadReplies(item: AXCommentItem): Promise<void> {\n const ds = this.datasource();\n if (typeof ds !== 'function') return;\n\n const id = this.getId(item);\n if (this.loadingIds().has(id) || this.getReplies(item).length > 0) return;\n\n this.loadingIds.update((set) => new Set(set).add(id));\n this.refreshItems();\n\n try {\n const result = ds(id);\n const replies = result instanceof Promise ? await result : result;\n item.replies = replies;\n item.replyCount = replies.length;\n } catch {\n item.replyCount = 0;\n } finally {\n this.loadingIds.update((set) => {\n const next = new Set(set);\n next.delete(id);\n return next;\n });\n this.refreshItems();\n }\n }\n\n private refreshItems(): void {\n const current = this.items();\n this.items.set([...current]);\n\n const ds = this.datasource();\n if (Array.isArray(ds)) {\n this.syncingFromDatasource = true;\n this.datasource.set([...current]);\n queueMicrotask(() => {\n this.syncingFromDatasource = false;\n });\n }\n }\n\n private findInTree(items: AXCommentItem[], id: string): AXCommentItem | null {\n for (const item of items) {\n if (this.getId(item) === id) return item;\n const found = this.findInTree(this.getReplies(item), id);\n if (found) return found;\n }\n return null;\n }\n\n private findParent(items: AXCommentItem[], id: string): AXCommentItem | null {\n for (const item of items) {\n const replies = this.getReplies(item);\n if (replies.some((child) => this.getId(child) === id)) return item;\n const nested = this.findParent(replies, id);\n if (nested) return nested;\n }\n return null;\n }\n}\n","@if (hasDatasource()) {\n @if (isLoading()) {\n <div class=\"ax-comment-view-skeleton\">\n @for (row of [1, 2, 3]; track row) {\n <div class=\"ax-comment-skeleton-row\">\n <ax-skeleton class=\"ax-comment-skeleton-avatar\"></ax-skeleton>\n <div class=\"ax-comment-skeleton-main\">\n <ax-skeleton class=\"ax-comment-skeleton-title\"></ax-skeleton>\n <ax-skeleton class=\"ax-comment-skeleton-body\"></ax-skeleton>\n </div>\n </div>\n }\n </div>\n } @else {\n <ng-container\n [ngTemplateOutlet]=\"itemsTpl\"\n [ngTemplateOutletContext]=\"{ items: items(), level: 0 }\"\n ></ng-container>\n }\n} @else {\n <ng-content select=\"ax-comment-item\" />\n}\n\n<ng-template #itemsTpl let-items=\"items\" let-level=\"level\">\n @for (item of items; track getId(item)) {\n <ax-comment-item\n [attr.id]=\"'comment-' + getId(item)\"\n [item]=\"item\"\n [replyCount]=\"getReplyCount(item)\"\n [repliesExpanded]=\"isExpanded(item)\"\n [loading]=\"isItemLoading(item)\"\n [itemTemplate]=\"resolvedTemplate()\"\n [itemContext]=\"resolvedTemplate() ? getTemplateContext(item, level) : null\"\n (repliesExpandedChange)=\"onRepliesExpandedChange(item, $event)\"\n (likeChange)=\"toggleLike(item, $event)\"\n (replyClick)=\"replyTo(item, $event)\"\n (actionClick)=\"emitAction(item, $event)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"itemsTpl\"\n [ngTemplateOutletContext]=\"{ items: getReplies(item), level: level + 1 }\"\n ></ng-container>\n </ax-comment-item>\n }\n</ng-template>\n","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTextAreaModule } from '@acorex/components/text-area';\nimport { AXWysiwygModule } from '@acorex/components/wysiwyg';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { NgModule } from '@angular/core';\nimport { AXCommentContainerComponent } from './comment-container/comment-container.component';\nimport { AXCommentItemTemplateDirective } from './comment-item-template.directive';\nimport { AXCommentItemComponent } from './comment-item/comment-item.component';\nimport { AXCommentDateComponent } from './comment-tools/comment-date/comment-date.component';\nimport { AXCommentEditedComponent } from './comment-tools/comment-edited/comment-edited.component';\nimport { AXCommentLikeComponent } from './comment-tools/comment-like/comment-like.component';\nimport { AXMenuOptionsComponent } from './comment-tools/comment-menu-options/comment-menu-options.component';\nimport { AXCommentReplyComponent } from './comment-tools/comment-reply/comment-reply.component';\nimport { AXCommentReplyMoreComponent } from './comment-tools/comment-reply-more/comment-reply-more.component';\nimport { AXCommentReplyTextComponent } from './comment-tools/comment-reply-text/comment-reply-text.component';\nimport { AXCommentViewComponent } from './comment-view/comment-view.component';\n\nconst COMPONENTS = [\n AXCommentViewComponent,\n AXCommentContainerComponent,\n AXCommentItemComponent,\n AXCommentLikeComponent,\n AXMenuOptionsComponent,\n AXCommentReplyComponent,\n AXCommentReplyTextComponent,\n AXCommentDateComponent,\n AXCommentEditedComponent,\n AXCommentReplyMoreComponent,\n AXCommentItemTemplateDirective,\n];\n\nconst MODULES = [\n AXDecoratorModule,\n AXWysiwygModule,\n AXBadgeModule,\n AXButtonModule,\n AXTextAreaModule,\n AXTranslationModule,\n];\n\n@NgModule({\n imports: [...MODULES, ...COMPONENTS],\n exports: [...COMPONENTS],\n})\nexport class AXCommentModule {}\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-comment.mjs","sources":["../../../../packages/components/comment/src/lib/comment-container/comment-container.component.ts","../../../../packages/components/comment/src/lib/comment-item-template.directive.ts","../../../../packages/components/comment/src/lib/comment-tools/comment-date/comment-date.component.ts","../../../../packages/components/comment/src/lib/comment-tools/comment-edited/comment-edited.component.ts","../../../../packages/components/comment/src/lib/comment-tools/comment-like/comment-like.component.ts","../../../../packages/components/comment/src/lib/comment-tools/comment-like/comment-like.component.html","../../../../packages/components/comment/src/lib/comment-tools/comment-reply-text/comment-reply-text.component.ts","../../../../packages/components/comment/src/lib/comment-item/comment-item.component.ts","../../../../packages/components/comment/src/lib/comment-item/comment-item.component.html","../../../../packages/components/comment/src/lib/comment-tools/comment-menu-options/comment-menu-options.component.ts","../../../../packages/components/comment/src/lib/comment-tools/comment-reply/comment-reply.component.ts","../../../../packages/components/comment/src/lib/comment-tools/comment-reply-more/comment-reply-more.component.ts","../../../../packages/components/comment/src/lib/comment-view/comment-thread.host.ts","../../../../packages/components/comment/src/lib/comment-view/comment-thread.component.ts","../../../../packages/components/comment/src/lib/comment-view/comment-thread.component.html","../../../../packages/components/comment/src/lib/comment-view/comment-view.component.ts","../../../../packages/components/comment/src/lib/comment-view/comment-view.component.html","../../../../packages/components/comment/src/lib/comment.module.ts","../../../../packages/components/comment/src/acorex-components-comment.ts"],"sourcesContent":["import { AXComponent } from '@acorex/cdk/common';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n contentChild,\n DOCUMENT,\n inject,\n PLATFORM_ID,\n ViewEncapsulation,\n} from '@angular/core';\n\n/**\n * A container component for displaying and managing comments.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-comment-container',\n template: `\n <ng-content select=\"ax-header\" />\n <ng-content />\n <ng-content select=\"ax-footer\" />\n `,\n styleUrl: './comment-container.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: AXComponent, useExisting: AXCommentContainerComponent }],\n host: {\n '[class.ax-has-header]': '!!projectedHeader()',\n '[class.ax-has-footer]': '!!projectedFooter()',\n },\n})\nexport class AXCommentContainerComponent {\n private document = inject(DOCUMENT);\n private platformID = inject(PLATFORM_ID);\n\n protected readonly projectedHeader = contentChild('ax-header');\n protected readonly projectedFooter = contentChild('ax-footer');\n\n /**\n * Scrolls to a specific comment reply by its ID and highlights it temporarily.\n *\n * @param id - The ID of the comment reply to scroll to\n */\n scrollToReply(id: string) {\n if (!isPlatformBrowser(this.platformID)) return;\n\n const key = String(id);\n const el =\n (this.document.querySelector(`ax-comment-item[id=\"${key}\"]`) as HTMLElement | null) ??\n (this.document.querySelector(`ax-comment-item[id=\"comment-${key}\"]`) as HTMLElement | null);\n if (!el) return;\n\n el.scrollIntoView({ behavior: 'smooth', block: 'center' });\n el.classList.add('ax-state-highlight');\n setTimeout(() => el.classList.remove('ax-state-highlight'), 1500);\n }\n}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { AXCommentItemTemplateContext } from './comment.types';\n\n/**\n * Marks an `ng-template` as a custom comment item renderer.\n * When omitted, `ax-comment-view` uses the built-in layout.\n * Like and reply stay in the item actions row either way.\n *\n * @example\n * ```html\n * <ax-comment-view [datasource]=\"comments\">\n * <ng-template axCommentItem let-item>\n * <ax-avatar [color]=\"item.color\" look=\"twotone\" shape=\"rounded\">\n * <ax-text>{{ item.initials }}</ax-text>\n * </ax-avatar>\n * <ax-title>{{ item.author }}</ax-title>\n * <ax-content>{{ item.content }}</ax-content>\n * </ng-template>\n * </ax-comment-view>\n * ```\n */\n@Directive({\n selector: 'ng-template[axCommentItem]',\n})\nexport class AXCommentItemTemplateDirective {\n constructor(readonly template: TemplateRef<AXCommentItemTemplateContext>) {}\n}\n","import { AXComponent } from '@acorex/cdk/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * A component for displaying date on a comment.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-comment-date',\n template: '<ng-content />',\n styleUrl: './comment-date.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: AXComponent, useExisting: AXCommentDateComponent }],\n})\nexport class AXCommentDateComponent {}\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\n\n/**\n * Muted “edited” label shown next to the comment timestamp.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-comment-edited',\n template: `{{ '@acorex:comment.edited' | translate | async }}`,\n styleUrl: './comment-edited.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ax-comment-edited',\n '[attr.title]': 'editedAt() || null',\n '[attr.aria-label]': 'editedAt() || null',\n },\n imports: [AXTranslatorPipe, AsyncPipe],\n providers: [{ provide: AXComponent, useExisting: AXCommentEditedComponent }],\n})\nexport class AXCommentEditedComponent {\n /** Optional tooltip (for example the time the comment was last edited). */\n readonly editedAt = input<string>();\n}\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n output,\n signal,\n untracked,\n ViewEncapsulation,\n} from '@angular/core';\n\n/**\n * A component for displaying and managing likes on a comment.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-comment-like',\n templateUrl: './comment-like.component.html',\n styleUrl: './comment-like.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXDecoratorIconComponent, AXDecoratorGenericComponent],\n providers: [{ provide: AXComponent, useExisting: AXCommentLikeComponent }],\n})\nexport class AXCommentLikeComponent {\n /** Current like state from the parent. Later parent values replace a local toggle. */\n readonly like = input.required<boolean>();\n\n readonly likeChange = output<boolean>();\n\n private readonly optimistic = signal<boolean | null>(null);\n private seenLike = false;\n private hasSeenLike = false;\n\n /** Parent value, unless the user just toggled and the parent has not caught up. */\n protected readonly pressed = computed(() => this.optimistic() ?? this.like());\n\n constructor() {\n effect(() => {\n const incoming = this.like();\n untracked(() => {\n if (!this.hasSeenLike || incoming !== this.seenLike) {\n this.hasSeenLike = true;\n this.seenLike = incoming;\n this.optimistic.set(null);\n }\n });\n });\n }\n\n protected toggleLike(): void {\n const next = !this.pressed();\n this.optimistic.set(next);\n this.likeChange.emit(next);\n }\n}\n","<button\n type=\"button\"\n class=\"ax-comment-like-button\"\n [class.ax-state-liked]=\"pressed()\"\n [attr.aria-pressed]=\"pressed()\"\n (click)=\"toggleLike()\"\n>\n <ax-icon [icon]=\"pressed() ? 'ax-icon ax-icon-solid ax-icon-heart' : 'ax-icon ax-icon-heart'\"></ax-icon>\n <ax-text><ng-content /></ax-text>\n</button>\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * A component for displaying the reply action on a comment.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-comment-reply-text',\n template: `\n <button type=\"button\" class=\"ax-comment-reply-button\">\n <ax-icon icon=\"ax-icon ax-icon-arrow-turn-left\"></ax-icon>\n <ax-text>{{ '@acorex:comment.reply' | translate | async }}</ax-text>\n </button>\n `,\n styleUrl: './comment-reply-text.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXDecoratorGenericComponent, AXDecoratorIconComponent, AXTranslatorPipe, AsyncPipe],\n providers: [{ provide: AXComponent, useExisting: AXCommentReplyTextComponent }],\n})\nexport class AXCommentReplyTextComponent {}\n","import { AXComponent, AXItemClickEvent, AXStyleColorType } from '@acorex/cdk/common';\nimport { AXAvatarComponent } from '@acorex/components/avatar';\nimport { AXBadgeComponent } from '@acorex/components/badge';\nimport {\n AXButtonItemComponent,\n AXButtonItemListComponent,\n type AXButtonItemListItem,\n} from '@acorex/components/button';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXDropdownButtonComponent } from '@acorex/components/dropdown-button';\nimport { AXImageComponent } from '@acorex/components/image';\nimport type { AXMenuItem } from '@acorex/components/menu';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n effect,\n inject,\n input,\n output,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXCommentDateComponent } from '../comment-tools/comment-date/comment-date.component';\nimport { AXCommentEditedComponent } from '../comment-tools/comment-edited/comment-edited.component';\nimport { AXCommentLikeComponent } from '../comment-tools/comment-like/comment-like.component';\nimport { AXCommentReplyTextComponent } from '../comment-tools/comment-reply-text/comment-reply-text.component';\nimport { AXCommentItem, AXCommentItemTemplateContext } from '../comment.types';\n\n/**\n * A component that represents an individual comment item in the comment system.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-comment-item',\n templateUrl: './comment-item.component.html',\n styleUrl: './comment-item.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AXTranslatorPipe,\n AsyncPipe,\n AXDecoratorIconComponent,\n AXDecoratorGenericComponent,\n NgTemplateOutlet,\n AXAvatarComponent,\n AXBadgeComponent,\n AXImageComponent,\n AXCommentDateComponent,\n AXCommentEditedComponent,\n AXCommentLikeComponent,\n AXCommentReplyTextComponent,\n AXDropdownButtonComponent,\n AXButtonItemListComponent,\n ],\n providers: [{ provide: AXComponent, useExisting: AXCommentItemComponent }],\n host: {\n '[class.ax-comment-item-reply]': 'isReply',\n '[class.ax-comment-item-custom]': '!!itemTemplate()',\n },\n})\nexport class AXCommentItemComponent {\n private readonly parentComment = inject(AXCommentItemComponent, { optional: true, skipSelf: true });\n\n protected readonly isReply = this.parentComment != null;\n\n private readonly projectedAvatar = contentChild(AXAvatarComponent);\n private readonly viewAvatar = viewChild(AXAvatarComponent);\n\n /** Data item used by `ax-comment-view`. When set, the default layout is rendered internally. */\n readonly item = input<AXCommentItem | null>(null);\n\n readonly replyCount = input<number>();\n\n /** Whether nested replies are visible. A later parent value replaces a local toggle. */\n readonly repliesExpanded = input(false);\n\n readonly repliesExpandedChange = output<boolean>();\n\n protected readonly expanded = signal(false);\n private seenExpanded = false;\n private hasSeenExpanded = false;\n\n /** Whether replies for this item are currently being loaded. */\n readonly loading = input(false);\n\n /**\n * Custom renderer for the item body. When omitted, the default layout\n * (or projected slots) is used.\n */\n readonly itemTemplate = input<TemplateRef<AXCommentItemTemplateContext> | null>(null);\n\n /** Context passed to `itemTemplate`. */\n readonly itemContext = input<AXCommentItemTemplateContext | null>(null);\n\n readonly likeChange = output<boolean>();\n readonly replyClick = output<Event>();\n readonly actionClick = output<AXMenuItem>();\n\n protected readonly avatarSize = 48;\n\n protected readonly showDefaultDataLayout = computed(() => !!this.item() && !this.itemTemplate());\n protected readonly useProjectedSlots = computed(() => !this.item() && !this.itemTemplate());\n protected readonly itemActions = computed(() => this.item()?.actions ?? []);\n protected readonly showOverflowMenu = computed(\n () => this.showDefaultDataLayout() && this.itemActions().length > 0,\n );\n protected readonly overflowItems = computed(() => this.toButtonItems(this.itemActions()));\n\n protected readonly templateContexts = computed(() => {\n const ctx = this.itemContext();\n return ctx ? [ctx] : [];\n });\n\n constructor() {\n effect(() => {\n const incoming = this.repliesExpanded();\n untracked(() => {\n if (!this.hasSeenExpanded || incoming !== this.seenExpanded) {\n this.hasSeenExpanded = true;\n this.seenExpanded = incoming;\n this.expanded.set(incoming);\n }\n });\n });\n\n afterNextRender(() => {\n if (this.itemTemplate()) return;\n (this.projectedAvatar() ?? this.viewAvatar())?.size?.set(this.avatarSize);\n });\n }\n\n /**\n * Recreates the custom item template when the rendered snapshot changes.\n * The outlet otherwise keeps the first context on screen.\n */\n protected templateContextKey(ctx: AXCommentItemTemplateContext): string {\n const item = ctx.item;\n return [\n item.id,\n item.author,\n item.content ?? '',\n item.date ?? '',\n item.edited ? 1 : 0,\n item.editedAt ?? '',\n ctx.likes,\n ctx.liked ? 1 : 0,\n ctx.replyCount,\n ctx.repliesExpanded ? 1 : 0,\n ].join('|');\n }\n\n protected getColor(data: AXCommentItem): AXStyleColorType {\n return data.color ?? 'default';\n }\n\n protected showEdited(data: AXCommentItem): boolean {\n return data.edited === true;\n }\n\n protected getInitials(data: AXCommentItem): string {\n if (data.initials) return data.initials;\n return (data.author || '')\n .split(/\\s+/)\n .filter(Boolean)\n .map((part) => part[0])\n .join('')\n .slice(0, 2)\n .toUpperCase();\n }\n\n protected handleLike(liked: boolean) {\n this.likeChange.emit(liked);\n }\n\n protected handleReply(event: Event) {\n this.replyClick.emit(event);\n }\n\n protected handleOverflowClick(event: AXItemClickEvent<AXButtonItemComponent>) {\n const action =\n this.findAction(this.itemActions(), event.name) ?? {\n text: event.item?.text ?? event.name ?? '',\n name: event.name,\n data: event.data,\n };\n this.actionClick.emit(action);\n }\n\n private toButtonItems(items: AXMenuItem[]): AXButtonItemListItem[] {\n return items.map((item) => ({\n name: item.name ?? item.text,\n text: item.text,\n icon: item.icon ?? '',\n color: item.color,\n disabled: item.disabled,\n divided: item.break,\n items: item.items?.length ? this.toButtonItems(item.items) : undefined,\n }));\n }\n\n private findAction(items: AXMenuItem[], name?: string): AXMenuItem | undefined {\n if (name == null) return undefined;\n for (const item of items) {\n if ((item.name ?? item.text) === name) return item;\n const nested = item.items?.length ? this.findAction(item.items, name) : undefined;\n if (nested) return nested;\n }\n return undefined;\n }\n\n /**\n * Toggles the collapse state of the comment replies section.\n */\n toggleReplies() {\n this.setExpanded(!this.expanded());\n }\n\n /**\n * Expands the nested replies section.\n */\n showReplies() {\n this.setExpanded(true);\n }\n\n /**\n * Collapses the nested replies section.\n */\n hideReplies() {\n this.setExpanded(false);\n }\n\n private setExpanded(expanded: boolean): void {\n this.expanded.set(expanded);\n this.repliesExpandedChange.emit(expanded);\n }\n}\n","<div class=\"ax-comment-layout\">\n @if (showDefaultDataLayout()) {\n @if (item(); as data) {\n <ax-avatar [color]=\"getColor(data)\" [size]=\"avatarSize\" look=\"twotone\" shape=\"rounded\">\n @if (data.avatar) {\n <ax-image [src]=\"data.avatar\"></ax-image>\n } @else {\n <ax-text>{{ getInitials(data) }}</ax-text>\n }\n </ax-avatar>\n }\n }\n <ng-content select=\"ax-avatar\" />\n\n <div class=\"ax-comment-main\">\n @if (itemTemplate(); as tpl) {\n @for (ctx of templateContexts(); track templateContextKey(ctx)) {\n <div class=\"ax-comment-custom-body\">\n <ng-container [ngTemplateOutlet]=\"tpl\" [ngTemplateOutletContext]=\"ctx\" />\n </div>\n }\n } @else if (showDefaultDataLayout()) {\n @if (item(); as data) {\n <div class=\"ax-comment-header\">\n <div class=\"ax-comment-header-meta\">\n <ax-title>{{ data.author }}</ax-title>\n @if (data.isYou) {\n <ax-badge\n class=\"ax-sm ax-pill ax-comment-you-badge\"\n look=\"twotone\"\n color=\"primary\"\n [text]=\"('@acorex:comment.you' | translate | async) ?? 'You'\"\n ></ax-badge>\n }\n @if (showEdited(data)) {\n <ax-comment-edited [editedAt]=\"data.editedAt\" />\n }\n @if (data.date) {\n <ax-comment-date>{{ data.date }}</ax-comment-date>\n }\n </div>\n @if (showOverflowMenu()) {\n <ax-dropdown-button\n class=\"ax-sm ax-comment-menu-trigger\"\n mode=\"dropdown\"\n look=\"blank\"\n [iconOnly]=\"true\"\n text=\"More\"\n >\n <ax-prefix>\n <ax-icon icon=\"ax-icon ax-icon-more-horizontal\"></ax-icon>\n </ax-prefix>\n <ax-button-item-list [items]=\"overflowItems()\" (onItemClick)=\"handleOverflowClick($event)\">\n </ax-button-item-list>\n </ax-dropdown-button>\n }\n </div>\n <div class=\"ax-comment-body\">\n <ax-content>\n <div [innerHTML]=\"data.content\"></div>\n </ax-content>\n </div>\n }\n }\n\n <div class=\"ax-comment-default\" [hidden]=\"!useProjectedSlots()\">\n <div class=\"ax-comment-header\">\n <div class=\"ax-comment-header-meta\">\n <ng-content select=\"ax-title\" />\n <ng-content select=\"ax-subtitle\" />\n <ng-content select=\"ax-badge\" />\n <ng-content select=\"ax-comment-edited\" />\n <ng-content select=\"ax-comment-date\" />\n </div>\n <ng-content select=\"ax-comment-menu-options\" />\n </div>\n <div class=\"ax-comment-body\">\n <ng-content select=\"ax-content\" />\n </div>\n </div>\n\n <div class=\"ax-comment-actions\">\n @if (item(); as data) {\n <ax-comment-like [like]=\"!!data.liked\" (likeChange)=\"handleLike($event)\">\n {{ data.likes ?? 0 }}\n </ax-comment-like>\n <ax-comment-reply-text (click)=\"handleReply($event)\"></ax-comment-reply-text>\n }\n <ng-content select=\"ax-comment-like\" />\n <ng-content select=\"ax-comment-reply-text\" />\n @if (replyCount()) {\n <button\n type=\"button\"\n class=\"ax-comment-replies-toggle\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-busy]=\"loading()\"\n [disabled]=\"loading()\"\n (click)=\"toggleReplies()\"\n >\n <ax-icon\n [icon]=\"\n loading()\n ? 'ax-icon ax-icon-reload'\n : expanded()\n ? 'ax-icon ax-icon-chevron-up'\n : 'ax-icon ax-icon-chevron-down'\n \"\n [class.ax-comment-loading-icon]=\"loading()\"\n ></ax-icon>\n <span>\n {{ replyCount() }}\n {{ ((replyCount() ?? 0) > 1 ? '@acorex:comment.replies' : '@acorex:comment.reply') | translate | async }}\n </span>\n </button>\n }\n </div>\n\n <div class=\"ax-comment-replies\" [hidden]=\"!(replyCount() && expanded())\">\n @if (loading()) {\n <div class=\"ax-comment-replies-loading\">\n <ax-icon icon=\"ax-icon ax-icon-reload\" class=\"ax-comment-loading-icon\"></ax-icon>\n </div>\n }\n <ng-content select=\"ax-comment-item\" />\n <ng-content select=\"ax-comment-reply-more\" />\n <ng-content />\n </div>\n </div>\n</div>\n","import { AXComponent } from '@acorex/cdk/common';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * A component for displaying and managing menu options on a comment.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-comment-menu-options',\n template: '<ng-content />',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: AXComponent, useExisting: AXMenuOptionsComponent }],\n})\nexport class AXMenuOptionsComponent {}\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe, isPlatformBrowser } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n DOCUMENT,\n inject,\n input,\n output,\n PLATFORM_ID,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXCommentItem } from '../../comment.types';\n\n/**\n * Composer chrome shown while writing a reply. Projects the editor below a\n * compact reply-context bar; hide the bar by leaving `item` empty.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-comment-reply',\n template: `\n @if (item(); as target) {\n <div class=\"ax-comment-reply-banner\">\n <button type=\"button\" class=\"ax-comment-reply-target\" (click)=\"revealTarget()\">\n <ax-icon\n class=\"ax-comment-reply-lead-icon\"\n icon=\"ax-icon ax-icon-arrow-turn-left\"\n aria-hidden=\"true\"\n ></ax-icon>\n <span class=\"ax-comment-reply-copy\">\n <span class=\"ax-comment-reply-label\">\n {{ '@acorex:comment.replying-to' | translate | async }}\n <span class=\"ax-comment-reply-author\">\n @if (target.isYou) {\n {{ '@acorex:comment.you' | translate | async }}\n } @else {\n {{ target.author }}\n }\n </span>\n </span>\n @if (preview(); as excerpt) {\n <span class=\"ax-comment-reply-preview\" [title]=\"excerpt\">{{ excerpt }}</span>\n }\n </span>\n </button>\n <button\n type=\"button\"\n class=\"ax-comment-reply-close\"\n [attr.aria-label]=\"'@acorex:common.general.close' | translate | async\"\n (click)=\"close()\"\n >\n <ax-icon icon=\"ax-icon ax-icon-close\" aria-hidden=\"true\"></ax-icon>\n </button>\n </div>\n }\n <div class=\"ax-comment-reply-composer\">\n <ng-content />\n </div>\n `,\n styleUrl: './comment-reply.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXDecoratorIconComponent, AXTranslatorPipe, AsyncPipe],\n providers: [{ provide: AXComponent, useExisting: AXCommentReplyComponent }],\n host: {\n class: 'ax-comment-reply',\n '[class.ax-comment-reply-open]': '!!item()',\n },\n})\nexport class AXCommentReplyComponent {\n private readonly document = inject(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly destroyRef = inject(DestroyRef);\n private highlightTimer: ReturnType<typeof setTimeout> | null = null;\n\n constructor() {\n this.destroyRef.onDestroy(() => {\n if (this.highlightTimer) clearTimeout(this.highlightTimer);\n });\n }\n\n /** Comment currently being replied to. When null, only the projected composer is shown. */\n readonly item = input<AXCommentItem | null>(null);\n\n /** Emitted when the close control on the reply banner is clicked. */\n readonly onClose = output<void>();\n\n /** Emitted when the banner is clicked to jump to the target comment. */\n readonly onTargetClick = output<string>();\n\n protected readonly preview = computed(() => this.toPreview(this.item()?.content));\n\n protected close() {\n this.onClose.emit();\n }\n\n protected revealTarget() {\n const item = this.item();\n if (!item) return;\n const id = String(item.id);\n this.onTargetClick.emit(id);\n this.scrollToComment(id);\n }\n\n private scrollToComment(id: string) {\n if (!isPlatformBrowser(this.platformId)) return;\n const el =\n (this.document.querySelector(`ax-comment-item[id=\"${id}\"]`) as HTMLElement | null) ??\n (this.document.querySelector(`ax-comment-item[id=\"comment-${id}\"]`) as HTMLElement | null);\n if (!el) return;\n\n el.scrollIntoView({ behavior: 'smooth', block: 'center' });\n el.classList.add('ax-state-highlight');\n if (this.highlightTimer) clearTimeout(this.highlightTimer);\n this.highlightTimer = setTimeout(() => {\n el.classList.remove('ax-state-highlight');\n this.highlightTimer = null;\n }, 1500);\n }\n\n private toPreview(content?: string): string {\n return String(content ?? '')\n .replace(/<[^>]+>/g, ' ')\n .replace(/ | /gi, ' ')\n .replace(/&/gi, '&')\n .replace(/</gi, '<')\n .replace(/>/gi, '>')\n .replace(/"/gi, '\"')\n .replace(/'|'/gi, \"'\")\n .replace(/\\s+/g, ' ')\n .trim();\n }\n}\n","import { AXComponent } from '@acorex/cdk/common';\nimport { AXDecoratorGenericComponent } from '@acorex/components/decorators';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * A component for displaying \"show more replies\" action on a comment.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-comment-reply-more',\n template: '<ax-text><ng-content /></ax-text>',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXDecoratorGenericComponent],\n providers: [{ provide: AXComponent, useExisting: AXCommentReplyMoreComponent }],\n})\nexport class AXCommentReplyMoreComponent {}\n","import type { AXMenuItem } from '@acorex/components/menu';\nimport { InjectionToken } from '@angular/core';\nimport type { AXCommentItem, AXCommentItemTemplateContext } from '../comment.types';\n\n/**\n * Callbacks the recursive thread uses from `ax-comment-view`.\n * Kept as a token so the thread component does not import the view class.\n */\nexport interface AXCommentThreadHost {\n trackItem(item: AXCommentItem): string;\n getId(item: AXCommentItem): string;\n getReplies(item: AXCommentItem): AXCommentItem[];\n getReplyCount(item: AXCommentItem): number;\n isExpanded(item: AXCommentItem): boolean;\n isItemLoading(item: AXCommentItem): boolean;\n getTemplateContext(item: AXCommentItem, level: number): AXCommentItemTemplateContext;\n onRepliesExpandedChange(item: AXCommentItem, expanded: boolean): Promise<void>;\n toggleLike(item: AXCommentItem, liked?: boolean): void;\n replyTo(item: AXCommentItem, event?: Event): void;\n emitAction(item: AXCommentItem, action: AXMenuItem): void;\n}\n\nexport const AX_COMMENT_THREAD_HOST = new InjectionToken<AXCommentThreadHost>('AX_COMMENT_THREAD_HOST');\n","import { ChangeDetectionStrategy, Component, inject, input, ViewEncapsulation } from '@angular/core';\nimport type { TemplateRef } from '@angular/core';\nimport { AXCommentItemComponent } from '../comment-item/comment-item.component';\nimport type { AXCommentItem, AXCommentItemTemplateContext } from '../comment.types';\nimport { AX_COMMENT_THREAD_HOST } from './comment-thread.host';\n\n/**\n * Renders one level of the comment tree.\n * A real component input (instead of `ngTemplateOutlet`) so OnPush checks this\n * level again whenever the parent replaces the items array.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-comment-thread',\n templateUrl: './comment-thread.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXCommentItemComponent, AXCommentThreadComponent],\n host: {\n style: 'display: contents',\n },\n})\nexport class AXCommentThreadComponent {\n protected readonly host = inject(AX_COMMENT_THREAD_HOST);\n\n readonly items = input.required<AXCommentItem[]>();\n readonly level = input(0);\n readonly itemTemplate = input<TemplateRef<AXCommentItemTemplateContext> | null>(null);\n}\n","@for (item of items(); track host.trackItem(item)) {\n <ax-comment-item\n [attr.id]=\"'comment-' + host.getId(item)\"\n [item]=\"item\"\n [replyCount]=\"host.getReplyCount(item)\"\n [repliesExpanded]=\"host.isExpanded(item)\"\n [loading]=\"host.isItemLoading(item)\"\n [itemTemplate]=\"itemTemplate()\"\n [itemContext]=\"itemTemplate() ? host.getTemplateContext(item, level()) : null\"\n (repliesExpandedChange)=\"host.onRepliesExpandedChange(item, $event)\"\n (likeChange)=\"host.toggleLike(item, $event)\"\n (replyClick)=\"host.replyTo(item, $event)\"\n (actionClick)=\"host.emitAction(item, $event)\"\n >\n <ax-comment-thread [items]=\"host.getReplies(item)\" [level]=\"level() + 1\" [itemTemplate]=\"itemTemplate()\" />\n </ax-comment-item>\n}\n","import { AXComponent } from '@acorex/cdk/common';\nimport type { AXMenuItem } from '@acorex/components/menu';\nimport { AXSkeletonComponent } from '@acorex/components/skeleton';\nimport {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n computed,\n contentChild,\n effect,\n input,\n model,\n output,\n signal,\n untracked,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXCommentItemTemplateDirective } from '../comment-item-template.directive';\nimport { AXCommentThreadComponent } from './comment-thread.component';\nimport { AX_COMMENT_THREAD_HOST, type AXCommentThreadHost } from './comment-thread.host';\nimport {\n AXCommentCallback,\n AXCommentDataSource,\n AXCommentItem,\n AXCommentItemTemplateContext,\n AXCommentActionEvent,\n AXCommentLikeChangeEvent,\n AXCommentRepliesToggleEvent,\n AXCommentReplyEvent,\n} from '../comment.types';\n\n/**\n * Renders a comment thread from a datasource (array or lazy callback).\n * Provide `itemTemplate` or `<ng-template axCommentItem>` to customize item UI;\n * otherwise the built-in layout is used.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-comment-view',\n templateUrl: './comment-view.component.html',\n styleUrl: './comment-view.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXCommentThreadComponent, AXSkeletonComponent],\n providers: [\n { provide: AXComponent, useExisting: AXCommentViewComponent },\n { provide: AX_COMMENT_THREAD_HOST, useExisting: AXCommentViewComponent },\n ],\n})\nexport class AXCommentViewComponent implements AXCommentThreadHost {\n /** Comment data — a static array or a lazy-loading function. */\n readonly datasource = model<AXCommentDataSource | null>(null);\n\n /**\n * Custom item template. When omitted, the default comment layout is used.\n * You can also project `<ng-template axCommentItem>`.\n */\n readonly itemTemplate = input<TemplateRef<AXCommentItemTemplateContext>>();\n\n readonly onReply = output<AXCommentReplyEvent>();\n readonly onLikeChange = output<AXCommentLikeChangeEvent>();\n readonly onRepliesToggle = output<AXCommentRepliesToggleEvent>();\n readonly onAction = output<AXCommentActionEvent>();\n\n private readonly projectedItemTemplate = contentChild(AXCommentItemTemplateDirective);\n\n protected readonly items = signal<AXCommentItem[]>([]);\n private readonly loadingIds = signal<Set<string>>(new Set());\n private readonly _isLoading = signal(false);\n readonly isLoading = this._isLoading.asReadonly();\n\n private loadGeneration = 0;\n private readonly emptyReplies: AXCommentItem[] = [];\n\n private readonly isLazyDataSource = computed(() => typeof this.datasource() === 'function');\n\n protected readonly hasDatasource = computed(() => this.datasource() != null);\n\n protected readonly resolvedTemplate = computed(\n () => this.itemTemplate() ?? this.projectedItemTemplate()?.template ?? null,\n );\n\n constructor() {\n effect(() => {\n const ds = this.datasource();\n untracked(() => void this.applyDatasource(ds));\n });\n }\n\n /**\n * Reloads root comments from the datasource.\n *\n * @returns Promise that resolves when the reload is complete.\n */\n async reloadData(): Promise<void> {\n await this.applyDatasource(this.datasource());\n }\n\n /**\n * Appends a comment to the current root list.\n *\n * @param item - The comment to append.\n * @returns void\n */\n appendItem(item: AXCommentItem): void {\n this.items.update((list) => [...list, item]);\n }\n\n /**\n * Appends a reply under a loaded comment and expands that thread.\n *\n * @param parentId - The parent comment id.\n * @param item - The reply to append.\n * @returns Promise that resolves when any needed lazy load and the append are complete.\n */\n async appendReply(parentId: string, item: AXCommentItem): Promise<void> {\n const parent = this.findItem(parentId);\n if (!parent) return;\n if (this.canLazyLoad(parent)) {\n await this.loadReplies(parent);\n }\n parent.replies = [...(parent.replies ?? []), item];\n parent.replyCount = parent.replies.length;\n parent.repliesExpanded = true;\n this.refreshItems();\n }\n\n /**\n * Finds a comment by id in the loaded tree.\n *\n * @param id - The comment id.\n * @returns The matching item, or null if it is not loaded.\n */\n findItem(id: string): AXCommentItem | null {\n return this.findInTree(this.items(), id);\n }\n\n /**\n * Removes a comment from the loaded tree. Nested replies are removed with it.\n *\n * @param id - The comment id.\n * @returns True when the comment was found and removed.\n */\n removeItem(id: string): boolean {\n const key = String(id);\n const roots = this.items();\n if (roots.some((item) => this.getId(item) === key)) {\n this.items.set(roots.filter((item) => this.getId(item) !== key));\n this.refreshItems();\n return true;\n }\n const parent = this.findParent(roots, key);\n if (!parent?.replies?.length) return false;\n const before = parent.replies.length;\n parent.replies = parent.replies.filter((child) => this.getId(child) !== key);\n const removed = before - parent.replies.length;\n if (!removed) return false;\n parent.replyCount = Math.max(0, (parent.replyCount ?? before) - removed);\n this.refreshItems();\n return true;\n }\n\n /**\n * Patches a loaded comment in place.\n *\n * @param id - The comment id.\n * @param patch - Fields to merge onto the existing item. The original id is kept.\n * @returns The updated item, or null if it is not loaded.\n */\n updateItem(id: string, patch: Partial<AXCommentItem>): AXCommentItem | null {\n const key = String(id);\n let updated: AXCommentItem | null = null;\n\n const apply = (items: AXCommentItem[]): AXCommentItem[] | null => {\n const index = items.findIndex((item) => this.getId(item) === key);\n if (index >= 0) {\n const current = items[index];\n if (!current) return null;\n const nextItem: AXCommentItem = { ...current, ...patch, id: current.id };\n updated = nextItem;\n const next = items.slice();\n next[index] = nextItem;\n return next;\n }\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n if (!item.replies?.length) continue;\n const replies = apply(item.replies);\n if (!replies) continue;\n const next = items.slice();\n next[i] = { ...item, replies };\n return next;\n }\n return null;\n };\n\n const next = apply(this.items());\n if (!next || !updated) return null;\n this.items.set(next);\n this.refreshItems();\n return updated;\n }\n\n /**\n * Expands or collapses replies for a comment, loading them when needed.\n *\n * @param id - The comment id.\n * @param expanded - Whether replies should be visible.\n * @returns Promise that resolves when expansion and any lazy load are complete.\n */\n async setExpanded(id: string, expanded: boolean): Promise<void> {\n const item = this.findItem(id);\n if (!item) return;\n await this.setItemExpanded(item, expanded);\n }\n\n getId(item: AXCommentItem): string {\n return String(item.id);\n }\n\n /**\n * Identity includes the fields the row renders. A same-id edit, like, or reply\n * must refresh the row instead of leaving the previous snapshot on screen.\n */\n trackItem(item: AXCommentItem): string {\n const replies = (item.replies ?? []).map((reply) => this.trackItem(reply)).join(',');\n return [\n this.getId(item),\n item.content ?? '',\n item.likes ?? 0,\n item.liked ? 1 : 0,\n item.edited ? 1 : 0,\n item.editedAt ?? '',\n item.replyCount ?? item.replies?.length ?? 0,\n item.repliesExpanded ? 1 : 0,\n replies,\n ].join(':');\n }\n\n getReplies(item: AXCommentItem): AXCommentItem[] {\n return item.replies?.length ? item.replies : this.emptyReplies;\n }\n\n getReplyCount(item: AXCommentItem): number {\n return item.replyCount ?? item.replies?.length ?? 0;\n }\n\n isExpanded(item: AXCommentItem): boolean {\n return !!item.repliesExpanded;\n }\n\n isItemLoading(item: AXCommentItem): boolean {\n return this.loadingIds().has(this.getId(item));\n }\n\n getTemplateContext(item: AXCommentItem, level: number): AXCommentItemTemplateContext {\n return {\n $implicit: item,\n item,\n level,\n repliesExpanded: this.isExpanded(item),\n replyCount: this.getReplyCount(item),\n loading: this.isItemLoading(item),\n liked: !!item.liked,\n likes: item.likes ?? 0,\n toggleReplies: () => void this.setItemExpanded(item, !this.isExpanded(item)),\n toggleLike: () => this.toggleLike(item),\n reply: (event?: Event) => this.replyTo(item, event),\n };\n }\n\n async onRepliesExpandedChange(item: AXCommentItem, expanded: boolean): Promise<void> {\n await this.setItemExpanded(item, expanded);\n }\n\n toggleLike(item: AXCommentItem, liked = !item.liked): void {\n const next = liked;\n const current = !!item.liked;\n if (next === current) {\n this.refreshItems();\n return;\n }\n item.liked = next;\n item.likes = Math.max(0, (item.likes ?? 0) + (next ? 1 : -1));\n this.refreshItems();\n this.onLikeChange.emit({\n component: this,\n item,\n liked: next,\n likes: item.likes ?? 0,\n isUserInteraction: true,\n });\n }\n\n replyTo(item: AXCommentItem, event?: Event): void {\n this.onReply.emit({\n component: this,\n item,\n nativeEvent: event,\n isUserInteraction: true,\n });\n }\n\n emitAction(item: AXCommentItem, action: AXMenuItem): void {\n this.onAction.emit({\n component: this,\n item,\n action,\n isUserInteraction: true,\n });\n }\n\n private async applyDatasource(ds: AXCommentDataSource | null): Promise<void> {\n if (ds == null) {\n this.items.set([]);\n this._isLoading.set(false);\n return;\n }\n\n if (Array.isArray(ds)) {\n this.items.set(ds.slice());\n return;\n }\n\n await this.loadRootItems(ds);\n }\n\n private async loadRootItems(loadFn: AXCommentCallback): Promise<void> {\n const generation = ++this.loadGeneration;\n this._isLoading.set(true);\n try {\n const result = loadFn();\n const roots = result instanceof Promise ? await result : result;\n if (generation !== this.loadGeneration) return;\n this.items.set(roots);\n await this.hydrateExpanded(roots);\n } catch {\n if (generation !== this.loadGeneration) return;\n this.items.set([]);\n } finally {\n if (generation === this.loadGeneration) {\n this._isLoading.set(false);\n }\n }\n }\n\n private async hydrateExpanded(items: AXCommentItem[]): Promise<void> {\n for (const item of items) {\n if (item.repliesExpanded && this.canLazyLoad(item)) {\n await this.loadReplies(item);\n }\n const replies = this.getReplies(item);\n if (replies.length) {\n await this.hydrateExpanded(replies);\n }\n }\n }\n\n private canLazyLoad(item: AXCommentItem): boolean {\n return this.isLazyDataSource() && this.getReplyCount(item) > 0 && this.getReplies(item).length === 0;\n }\n\n private async setItemExpanded(item: AXCommentItem, expanded: boolean): Promise<void> {\n item.repliesExpanded = expanded;\n if (expanded && this.canLazyLoad(item)) {\n await this.loadReplies(item);\n }\n this.refreshItems();\n this.onRepliesToggle.emit({\n component: this,\n item,\n expanded,\n isUserInteraction: true,\n });\n }\n\n private async loadReplies(item: AXCommentItem): Promise<void> {\n const ds = this.datasource();\n if (typeof ds !== 'function') return;\n\n const id = this.getId(item);\n if (this.loadingIds().has(id) || this.getReplies(item).length > 0) return;\n\n this.loadingIds.update((set) => new Set(set).add(id));\n this.refreshItems();\n\n try {\n const result = ds(id);\n const replies = result instanceof Promise ? await result : result;\n item.replies = replies;\n item.replyCount = replies.length;\n } catch {\n item.replyCount = 0;\n } finally {\n this.loadingIds.update((set) => {\n const next = new Set(set);\n next.delete(id);\n return next;\n });\n this.refreshItems();\n }\n }\n\n private refreshItems(): void {\n // Keep the parent datasource as the source of truth. Writing it back here\n // used to drop the next array the parent pushed in.\n this.items.set(this.items().slice());\n }\n\n private findInTree(items: AXCommentItem[], id: string): AXCommentItem | null {\n for (const item of items) {\n if (this.getId(item) === id) return item;\n const found = this.findInTree(this.getReplies(item), id);\n if (found) return found;\n }\n return null;\n }\n\n private findParent(items: AXCommentItem[], id: string): AXCommentItem | null {\n for (const item of items) {\n const replies = this.getReplies(item);\n if (replies.some((child) => this.getId(child) === id)) return item;\n const nested = this.findParent(replies, id);\n if (nested) return nested;\n }\n return null;\n }\n}\n","@if (hasDatasource()) {\n @if (isLoading()) {\n <div class=\"ax-comment-view-skeleton\">\n @for (row of [1, 2, 3]; track row) {\n <div class=\"ax-comment-skeleton-row\">\n <ax-skeleton class=\"ax-comment-skeleton-avatar\"></ax-skeleton>\n <div class=\"ax-comment-skeleton-main\">\n <ax-skeleton class=\"ax-comment-skeleton-title\"></ax-skeleton>\n <ax-skeleton class=\"ax-comment-skeleton-body\"></ax-skeleton>\n </div>\n </div>\n }\n </div>\n } @else {\n <ax-comment-thread [items]=\"items()\" [level]=\"0\" [itemTemplate]=\"resolvedTemplate()\" />\n }\n} @else {\n <ng-content select=\"ax-comment-item\" />\n}\n","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTextAreaModule } from '@acorex/components/text-area';\nimport { AXWysiwygModule } from '@acorex/components/wysiwyg';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { NgModule } from '@angular/core';\nimport { AXCommentContainerComponent } from './comment-container/comment-container.component';\nimport { AXCommentItemTemplateDirective } from './comment-item-template.directive';\nimport { AXCommentItemComponent } from './comment-item/comment-item.component';\nimport { AXCommentDateComponent } from './comment-tools/comment-date/comment-date.component';\nimport { AXCommentEditedComponent } from './comment-tools/comment-edited/comment-edited.component';\nimport { AXCommentLikeComponent } from './comment-tools/comment-like/comment-like.component';\nimport { AXMenuOptionsComponent } from './comment-tools/comment-menu-options/comment-menu-options.component';\nimport { AXCommentReplyComponent } from './comment-tools/comment-reply/comment-reply.component';\nimport { AXCommentReplyMoreComponent } from './comment-tools/comment-reply-more/comment-reply-more.component';\nimport { AXCommentReplyTextComponent } from './comment-tools/comment-reply-text/comment-reply-text.component';\nimport { AXCommentViewComponent } from './comment-view/comment-view.component';\n\nconst COMPONENTS = [\n AXCommentViewComponent,\n AXCommentContainerComponent,\n AXCommentItemComponent,\n AXCommentLikeComponent,\n AXMenuOptionsComponent,\n AXCommentReplyComponent,\n AXCommentReplyTextComponent,\n AXCommentDateComponent,\n AXCommentEditedComponent,\n AXCommentReplyMoreComponent,\n AXCommentItemTemplateDirective,\n];\n\nconst MODULES = [\n AXDecoratorModule,\n AXWysiwygModule,\n AXBadgeModule,\n AXButtonModule,\n AXTextAreaModule,\n AXTranslationModule,\n];\n\n@NgModule({\n imports: [...MODULES, ...COMPONENTS],\n exports: [...COMPONENTS],\n})\nexport class AXCommentModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -375,7 +375,7 @@ class AXDataListComponent extends MXValueComponent {
|
|
|
375
375
|
return this.showItemTooltip() && !!this.getItemTooltip(item);
|
|
376
376
|
}
|
|
377
377
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXDataListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
378
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: AXDataListComponent, isStandalone: true, selector: "ax-data-list", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, showCheckbox: { classPropertyName: "showCheckbox", publicName: "showCheckbox", isSignal: true, isRequired: false, transformFunction: null }, itemHeight: { classPropertyName: "itemHeight", publicName: "itemHeight", isSignal: true, isRequired: false, transformFunction: null }, isItemTruncated: { classPropertyName: "isItemTruncated", publicName: "isItemTruncated", isSignal: true, isRequired: false, transformFunction: null }, showItemTooltip: { classPropertyName: "showItemTooltip", publicName: "showItemTooltip", isSignal: true, isRequired: false, transformFunction: null }, disabledField: { classPropertyName: "disabledField", publicName: "disabledField", isSignal: true, isRequired: false, transformFunction: null }, tooltipField: { classPropertyName: "tooltipField", publicName: "tooltipField", isSignal: true, isRequired: false, transformFunction: null }, textField: { classPropertyName: "textField", publicName: "textField", isSignal: true, isRequired: false, transformFunction: null }, descriptionField: { classPropertyName: "descriptionField", publicName: "descriptionField", isSignal: true, isRequired: false, transformFunction: null }, levelField: { classPropertyName: "levelField", publicName: "levelField", isSignal: true, isRequired: false, transformFunction: null }, childrenField: { classPropertyName: "childrenField", publicName: "childrenField", isSignal: true, isRequired: false, transformFunction: null }, expandedField: { classPropertyName: "expandedField", publicName: "expandedField", isSignal: true, isRequired: false, transformFunction: null }, itemTemplate: { classPropertyName: "itemTemplate", publicName: "itemTemplate", isSignal: true, isRequired: false, transformFunction: null }, emptyTemplate: { classPropertyName: "emptyTemplate", publicName: "emptyTemplate", isSignal: true, isRequired: false, transformFunction: null }, loadingTemplate: { classPropertyName: "loadingTemplate", publicName: "loadingTemplate", isSignal: true, isRequired: false, transformFunction: null }, selectionModel: { classPropertyName: "selectionModel", publicName: "selectionModel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange", itemClick: "itemClick", itemDoubleClick: "itemDoubleClick", expandChange: "expandChange", selectionModel: "selectionModelChange" }, viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-data-list\" [class.ax-data-list--loading]=\"loading()\">\n <!-- Loading State -->\n @if (loading()) {\n <div class=\"ax-data-list__loading\">\n <ng-container *ngTemplateOutlet=\"loadingTemplate() || defaultLoadingTemplate\"></ng-container>\n </div>\n }\n\n <!-- Empty State -->\n @if (isEmpty()) {\n <div class=\"ax-data-list__empty\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate() || defaultEmptyTemplate\"></ng-container>\n </div>\n }\n\n <!-- List Content -->\n @if (hasItems() && listDataSource !== null) {\n <div class=\"ax-data-list__content\">\n <cdk-virtual-scroll-viewport\n [itemSize]=\"itemHeight()\"\n class=\"ax-data-list__viewport\"\n [class.ax-data-list__viewport--truncated]=\"isItemTruncated()\"\n >\n <ng-container *cdkVirtualFor=\"let item of listDataSource; let i = index; trackBy: trackByFn\">\n @if (item) {\n <div\n class=\"ax-data-list__item\"\n [class.ax-data-list__item--selected]=\"isItemSelected(item)\"\n [class.ax-data-list__item--disabled]=\"isItemDisabled(item)\"\n [class.ax-data-list__item--focused]=\"focusedIndex() === i\"\n [class]=\"'ax-data-list__item--level-' + getItemLevel(item)\"\n [style.height.px]=\"itemHeight()\"\n (click)=\"onItemClick(item, $event)\"\n (dblclick)=\"onItemDoubleClick(item)\"\n (keydown)=\"onKeyDown($event, item, i)\"\n tabindex=\"0\"\n role=\"listitem\"\n [attr.aria-selected]=\"isItemSelected(item)\"\n [attr.aria-disabled]=\"isItemDisabled(item)\"\n [attr.aria-level]=\"getItemLevel(item) + 1\"\n >\n <!-- Checkbox -->\n @if (showCheckboxes()) {\n <div class=\"ax-data-list__checkbox\" (click)=\"onCheckboxClick($event)\">\n <ax-check-box\n [value]=\"isItemSelected(item)\"\n [disabled]=\"isItemDisabled(item)\"\n (valueChange)=\"onCheckboxChange(item, $event)\"\n >\n </ax-check-box>\n </div>\n }\n\n <!-- Expand/Collapse Button for Tree Items -->\n @if (hasChildren(item)) {\n <div\n class=\"ax-data-list__expand-button\"\n [class.ax-data-list__expand-button--expanded]=\"isExpanded(item)\"\n (click)=\"toggleExpanded(item, $event)\"\n role=\"button\"\n tabindex=\"0\"\n [attr.aria-expanded]=\"isExpanded(item)\"\n >\n <svg class=\"ax-data-list__expand-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M7 10l5 5 5-5z\" />\n </svg>\n </div>\n }\n\n <!-- Item Content -->\n <div class=\"ax-data-list__content-wrapper\">\n <!-- Custom Item Template -->\n @if (itemTemplate()) {\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate();\n context: {\n $implicit: item,\n index: i,\n selected: isItemSelected(item),\n disabled: isItemDisabled(item),\n }\n \"\n ></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"defaultItemTemplate\"></ng-container>\n }\n\n <!-- Default Item Template -->\n <ng-template #defaultItemTemplate>\n <div\n class=\"ax-data-list__text\"\n [class.ax-data-list__text--truncated]=\"isItemTruncated()\"\n [axTooltip]=\"shouldShowTooltip(item) ? getItemTooltip(item) : null\"\n [axTooltipDisabled]=\"!shouldShowTooltip(item)\"\n >\n {{ getItemText(item) }}\n </div>\n\n @if (getItemDescription(item)) {\n <div\n class=\"ax-data-list__description\"\n [class.ax-data-list__description--truncated]=\"isItemTruncated()\"\n >\n {{ getItemDescription(item) }}\n </div>\n }\n </ng-template>\n </div>\n </div>\n } @else {\n <!-- Loading skeleton for null items -->\n <div class=\"ax-data-list__item ax-data-list__item--loading\" [style.height.px]=\"itemHeight()\">\n <div class=\"ax-data-list__loading-skeleton\">\n <div class=\"ax-data-list__skeleton-checkbox\"></div>\n <div class=\"ax-data-list__skeleton-content\">\n <div class=\"ax-data-list__skeleton-text\"></div>\n <div class=\"ax-data-list__skeleton-description\"></div>\n </div>\n </div>\n </div>\n }\n </ng-container>\n </cdk-virtual-scroll-viewport>\n </div>\n }\n</div>\n\n<!-- Default Loading Template -->\n<ng-template #defaultLoadingTemplate>\n <div class=\"ax-data-list__loading-default\">\n <div class=\"ax-data-list__loading-spinner\"></div>\n <span>Loading...</span>\n </div>\n</ng-template>\n\n<!-- Default Empty Template -->\n<ng-template #defaultEmptyTemplate>\n <div class=\"ax-data-list__empty-default\">\n <svg class=\"ax-data-list__empty-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path\n d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-5 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z\"\n />\n </svg>\n <span>No items to display</span>\n </div>\n</ng-template>\n", styles: ["@layer properties;@layer components{.ax-data-list{display:flex;height:100%;width:100%;flex-direction:column;overflow:hidden;background:var(--ax-color-background, #ffffff);border:1px solid var(--ax-color-border, #e5e7eb);border-radius:var(--ax-border-radius, .375rem)}.ax-data-list.ax-data-list--loading .ax-data-list__content{pointer-events:none;opacity:60%}.ax-data-list .ax-data-list__loading{display:flex;min-height:calc(var(--spacing, .25rem) * 50);align-items:center;justify-content:center;padding:calc(var(--spacing, .25rem) * 8)}.ax-data-list .ax-data-list__loading-default{display:flex;flex-direction:column;align-items:center;gap:calc(var(--spacing, .25rem) * 4);color:var(--ax-color-text-secondary, #6b7280)}.ax-data-list .ax-data-list__loading-spinner{width:calc(var(--spacing, .25rem) * 8);height:calc(var(--spacing, .25rem) * 8);border-radius:calc(infinity * 1px);border:2px solid var(--ax-color-border, #e5e7eb);border-top:2px solid var(--ax-color-primary, #3b82f6);animation:spin 1s linear infinite}.ax-data-list .ax-data-list__empty{display:flex;min-height:calc(var(--spacing, .25rem) * 50);align-items:center;justify-content:center;padding:calc(var(--spacing, .25rem) * 8)}.ax-data-list .ax-data-list__empty-default{display:flex;flex-direction:column;align-items:center;gap:calc(var(--spacing, .25rem) * 4);text-align:center;color:var(--ax-color-text-secondary, #6b7280)}.ax-data-list .ax-data-list__empty-icon{width:calc(var(--spacing, .25rem) * 12);height:calc(var(--spacing, .25rem) * 12);opacity:50%}.ax-data-list .ax-data-list__content{flex:1;overflow:hidden}.ax-data-list .ax-data-list__viewport{width:100%;height:100%}.ax-data-list .ax-data-list__viewport.ax-data-list__viewport--truncated .ax-data-list__text,.ax-data-list .ax-data-list__viewport.ax-data-list__viewport--truncated .ax-data-list__description{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ax-data-list .ax-data-list__item{position:relative;display:flex;cursor:pointer;align-items:center;padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 2);transition:all .15s ease-in-out;border-bottom:1px solid var(--ax-color-border-light, #f3f4f6)}.ax-data-list .ax-data-list__item:hover:not(.ax-data-list__item--disabled){background-color:var(--ax-color-hover, #f9fafb)}.ax-data-list .ax-data-list__item:focus{outline:2px solid var(--ax-color-primary, #3b82f6);outline-offset:-2px}.ax-data-list .ax-data-list__item.ax-data-list__item--selected{background-color:var(--ax-color-primary-light, #dbeafe);color:var(--ax-color-primary, #3b82f6);border-color:var(--ax-color-primary, #3b82f6)}.ax-data-list .ax-data-list__item.ax-data-list__item--selected:hover{background-color:var(--ax-color-primary-light-hover, #bfdbfe)}.ax-data-list .ax-data-list__item.ax-data-list__item--disabled{cursor:not-allowed;opacity:60%;background-color:var(--ax-color-disabled, #f9fafb);color:var(--ax-color-text-disabled, #9ca3af)}.ax-data-list .ax-data-list__item.ax-data-list__item--disabled:hover{background-color:var(--ax-color-disabled, #f9fafb)}.ax-data-list .ax-data-list__item.ax-data-list__item--focused{background-color:var(--ax-color-focus, #eff6ff);outline:2px solid var(--ax-color-primary, #3b82f6);outline-offset:-2px}.ax-data-list .ax-data-list__item.ax-data-list__item--loading{pointer-events:none;cursor:default;background-color:var(--ax-color-background, #ffffff)}.ax-data-list .ax-data-list__item.ax-data-list__item--loading:hover{background-color:var(--ax-color-background, #ffffff)}.ax-data-list .ax-data-list__item.ax-data-list__item--level-0{padding-inline-start:calc(var(--spacing, .25rem) * 4)}.ax-data-list .ax-data-list__item.ax-data-list__item--level-1{padding-inline-start:calc(var(--spacing, .25rem) * 10)}.ax-data-list .ax-data-list__item.ax-data-list__item--level-2{padding-inline-start:calc(var(--spacing, .25rem) * 16)}.ax-data-list .ax-data-list__item.ax-data-list__item--level-3{padding-inline-start:5.5rem}.ax-data-list .ax-data-list__item.ax-data-list__item--level-4{padding-inline-start:calc(var(--spacing, .25rem) * 28)}.ax-data-list .ax-data-list__item.ax-data-list__item--level-5{padding-inline-start:8.5rem}.ax-data-list .ax-data-list__checkbox{margin-inline-end:calc(var(--spacing, .25rem) * 3);flex-shrink:0}.ax-data-list .ax-data-list__expand-button{margin-inline-end:calc(var(--spacing, .25rem) * 2);display:flex;width:calc(var(--spacing, .25rem) * 6);height:calc(var(--spacing, .25rem) * 6);flex-shrink:0;cursor:pointer;align-items:center;justify-content:center;border-radius:.25rem;transition:all .15s ease-in-out}.ax-data-list .ax-data-list__expand-button:hover{background-color:var(--ax-color-hover, #f3f4f6)}.ax-data-list .ax-data-list__expand-button:focus{outline:2px solid var(--ax-color-primary, #3b82f6);outline-offset:2px}.ax-data-list .ax-data-list__expand-button.ax-data-list__expand-button--expanded .ax-data-list__expand-icon{rotate:90deg}.ax-data-list .ax-data-list__expand-icon{width:calc(var(--spacing, .25rem) * 4);height:calc(var(--spacing, .25rem) * 4);transition:transform .15s ease-in-out;color:var(--ax-color-text-secondary, #6b7280)}.ax-data-list .ax-data-list__content-wrapper{display:flex;min-width:calc(var(--spacing, .25rem) * 0);flex:1;flex-direction:column;gap:calc(var(--spacing, .25rem) * 1)}.ax-data-list .ax-data-list__text{--tw-leading: calc(var(--spacing, .25rem) * 5);line-height:calc(var(--spacing, .25rem) * 5);--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);color:var(--ax-color-text, #111827)}.ax-data-list .ax-data-list__text.ax-data-list__text--truncated{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ax-data-list .ax-data-list__description{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-leading: calc(var(--spacing, .25rem) * 5);line-height:calc(var(--spacing, .25rem) * 5);color:var(--ax-color-text-secondary, #6b7280)}.ax-data-list .ax-data-list__description.ax-data-list__description--truncated{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ax-data-list__loading-skeleton{display:flex;width:100%;align-items:center;gap:calc(var(--spacing, .25rem) * 3)}.ax-data-list__skeleton-checkbox{width:calc(var(--spacing, .25rem) * 4);height:calc(var(--spacing, .25rem) * 4);flex-shrink:0;border-radius:.25rem;background:linear-gradient(90deg,#f3f4f6 25%,#e5e7eb,#f3f4f6 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}.ax-data-list__skeleton-content{display:flex;flex:1;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.ax-data-list__skeleton-text{height:calc(var(--spacing, .25rem) * 4);width:80%;border-radius:.25rem;background:linear-gradient(90deg,#f3f4f6 25%,#e5e7eb,#f3f4f6 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}.ax-data-list__skeleton-description{height:calc(var(--spacing, .25rem) * 3);width:calc(3/5 * 100%);border-radius:.25rem;background:linear-gradient(90deg,#f3f4f6 25%,#e5e7eb,#f3f4f6 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@media(max-width:768px){.ax-data-list .ax-data-list__item{padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 3)}.ax-data-list .ax-data-list__item.ax-data-list__item--level-1{padding-inline-start:calc(var(--spacing, .25rem) * 8)}.ax-data-list .ax-data-list__item.ax-data-list__item--level-2{padding-inline-start:calc(var(--spacing, .25rem) * 12)}.ax-data-list .ax-data-list__item.ax-data-list__item--level-3{padding-inline-start:calc(var(--spacing, .25rem) * 16)}.ax-data-list .ax-data-list__item.ax-data-list__item--level-4{padding-inline-start:calc(var(--spacing, .25rem) * 20)}.ax-data-list .ax-data-list__item.ax-data-list__item--level-5{padding-inline-start:calc(var(--spacing, .25rem) * 24)}.ax-data-list .ax-data-list__checkbox{margin-inline-end:calc(var(--spacing, .25rem) * 2)}.ax-data-list .ax-data-list__expand-button{margin-inline-end:calc(var(--spacing, .25rem) * 1)}}@media(prefers-contrast:high){.ax-data-list{border-width:2px}.ax-data-list .ax-data-list__item{border-bottom-width:2px}.ax-data-list .ax-data-list__item:focus{outline-width:3px}.ax-data-list .ax-data-list__item.ax-data-list__item--selected{border-width:2px}.ax-data-list .ax-data-list__expand-button:focus{outline-width:3px}}@media(prefers-reduced-motion:reduce){.ax-data-list .ax-data-list__item,.ax-data-list .ax-data-list__expand-icon{transition:none}.ax-data-list .ax-data-list__loading-spinner{animation:none}}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@keyframes spin{to{transform:rotate(360deg)}}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-leading: initial;--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i2.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i2.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i2.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: AXTooltipDirective, selector: "[axTooltip]", inputs: ["axTooltipDisabled", "axTooltip", "axTooltipContext", "axTooltipPlacement", "axTooltipOffsetX", "axTooltipOffsetY", "axTooltipOpenAfter", "axTooltipCloseAfter"] }, { kind: "component", type: AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "isLoading", "indeterminate"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
378
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: AXDataListComponent, isStandalone: true, selector: "ax-data-list", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, showCheckbox: { classPropertyName: "showCheckbox", publicName: "showCheckbox", isSignal: true, isRequired: false, transformFunction: null }, itemHeight: { classPropertyName: "itemHeight", publicName: "itemHeight", isSignal: true, isRequired: false, transformFunction: null }, isItemTruncated: { classPropertyName: "isItemTruncated", publicName: "isItemTruncated", isSignal: true, isRequired: false, transformFunction: null }, showItemTooltip: { classPropertyName: "showItemTooltip", publicName: "showItemTooltip", isSignal: true, isRequired: false, transformFunction: null }, disabledField: { classPropertyName: "disabledField", publicName: "disabledField", isSignal: true, isRequired: false, transformFunction: null }, tooltipField: { classPropertyName: "tooltipField", publicName: "tooltipField", isSignal: true, isRequired: false, transformFunction: null }, textField: { classPropertyName: "textField", publicName: "textField", isSignal: true, isRequired: false, transformFunction: null }, descriptionField: { classPropertyName: "descriptionField", publicName: "descriptionField", isSignal: true, isRequired: false, transformFunction: null }, levelField: { classPropertyName: "levelField", publicName: "levelField", isSignal: true, isRequired: false, transformFunction: null }, childrenField: { classPropertyName: "childrenField", publicName: "childrenField", isSignal: true, isRequired: false, transformFunction: null }, expandedField: { classPropertyName: "expandedField", publicName: "expandedField", isSignal: true, isRequired: false, transformFunction: null }, itemTemplate: { classPropertyName: "itemTemplate", publicName: "itemTemplate", isSignal: true, isRequired: false, transformFunction: null }, emptyTemplate: { classPropertyName: "emptyTemplate", publicName: "emptyTemplate", isSignal: true, isRequired: false, transformFunction: null }, loadingTemplate: { classPropertyName: "loadingTemplate", publicName: "loadingTemplate", isSignal: true, isRequired: false, transformFunction: null }, selectionModel: { classPropertyName: "selectionModel", publicName: "selectionModel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange", itemClick: "itemClick", itemDoubleClick: "itemDoubleClick", expandChange: "expandChange", selectionModel: "selectionModelChange" }, viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-data-list\" [class.ax-data-list--loading]=\"loading()\">\n <!-- Loading State -->\n @if (loading()) {\n <div class=\"ax-data-list__loading\">\n <ng-container *ngTemplateOutlet=\"loadingTemplate() || defaultLoadingTemplate\"></ng-container>\n </div>\n }\n\n <!-- Empty State -->\n @if (isEmpty()) {\n <div class=\"ax-data-list__empty\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate() || defaultEmptyTemplate\"></ng-container>\n </div>\n }\n\n <!-- List Content -->\n @if (hasItems() && listDataSource !== null) {\n <div class=\"ax-data-list__content\">\n <cdk-virtual-scroll-viewport\n [itemSize]=\"itemHeight()\"\n class=\"ax-data-list__viewport\"\n [class.ax-data-list__viewport--truncated]=\"isItemTruncated()\"\n >\n <ng-container *cdkVirtualFor=\"let item of listDataSource; let i = index; trackBy: trackByFn\">\n @if (item) {\n <div\n class=\"ax-data-list__item\"\n [class.ax-data-list__item--selected]=\"isItemSelected(item)\"\n [class.ax-data-list__item--disabled]=\"isItemDisabled(item)\"\n [class.ax-data-list__item--focused]=\"focusedIndex() === i\"\n [class]=\"'ax-data-list__item--level-' + getItemLevel(item)\"\n [style.height.px]=\"itemHeight()\"\n (click)=\"onItemClick(item, $event)\"\n (dblclick)=\"onItemDoubleClick(item)\"\n (keydown)=\"onKeyDown($event, item, i)\"\n tabindex=\"0\"\n role=\"listitem\"\n [attr.aria-selected]=\"isItemSelected(item)\"\n [attr.aria-disabled]=\"isItemDisabled(item)\"\n [attr.aria-level]=\"getItemLevel(item) + 1\"\n >\n <!-- Checkbox -->\n @if (showCheckboxes()) {\n <div class=\"ax-data-list__checkbox\" (click)=\"onCheckboxClick($event)\">\n <ax-check-box\n [value]=\"isItemSelected(item)\"\n [disabled]=\"isItemDisabled(item)\"\n (valueChange)=\"onCheckboxChange(item, $event)\"\n >\n </ax-check-box>\n </div>\n }\n\n <!-- Expand/Collapse Button for Tree Items -->\n @if (hasChildren(item)) {\n <div\n class=\"ax-data-list__expand-button\"\n [class.ax-data-list__expand-button--expanded]=\"isExpanded(item)\"\n (click)=\"toggleExpanded(item, $event)\"\n role=\"button\"\n tabindex=\"0\"\n [attr.aria-expanded]=\"isExpanded(item)\"\n >\n <svg class=\"ax-data-list__expand-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M7 10l5 5 5-5z\" />\n </svg>\n </div>\n }\n\n <!-- Item Content -->\n <div class=\"ax-data-list__content-wrapper\">\n <!-- Custom Item Template -->\n @if (itemTemplate()) {\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate();\n context: {\n $implicit: item,\n index: i,\n selected: isItemSelected(item),\n disabled: isItemDisabled(item),\n }\n \"\n ></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"defaultItemTemplate\"></ng-container>\n }\n\n <!-- Default Item Template -->\n <ng-template #defaultItemTemplate>\n <div\n class=\"ax-data-list__text\"\n [class.ax-data-list__text--truncated]=\"isItemTruncated()\"\n [axTooltip]=\"shouldShowTooltip(item) ? getItemTooltip(item) : null\"\n [axTooltipDisabled]=\"!shouldShowTooltip(item)\"\n >\n {{ getItemText(item) }}\n </div>\n\n @if (getItemDescription(item)) {\n <div\n class=\"ax-data-list__description\"\n [class.ax-data-list__description--truncated]=\"isItemTruncated()\"\n >\n {{ getItemDescription(item) }}\n </div>\n }\n </ng-template>\n </div>\n </div>\n } @else {\n <!-- Loading skeleton for null items -->\n <div class=\"ax-data-list__item ax-data-list__item--loading\" [style.height.px]=\"itemHeight()\">\n <div class=\"ax-data-list__loading-skeleton\">\n <div class=\"ax-data-list__skeleton-checkbox\"></div>\n <div class=\"ax-data-list__skeleton-content\">\n <div class=\"ax-data-list__skeleton-text\"></div>\n <div class=\"ax-data-list__skeleton-description\"></div>\n </div>\n </div>\n </div>\n }\n </ng-container>\n </cdk-virtual-scroll-viewport>\n </div>\n }\n</div>\n\n<!-- Default Loading Template -->\n<ng-template #defaultLoadingTemplate>\n <div class=\"ax-data-list__loading-default\">\n <div class=\"ax-data-list__loading-spinner\"></div>\n <span>Loading...</span>\n </div>\n</ng-template>\n\n<!-- Default Empty Template -->\n<ng-template #defaultEmptyTemplate>\n <div class=\"ax-data-list__empty-default\">\n <svg class=\"ax-data-list__empty-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path\n d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-5 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z\"\n />\n </svg>\n <span>No items to display</span>\n </div>\n</ng-template>\n", styles: ["@layer properties;@layer components{.ax-data-list{display:flex;height:100%;width:100%;flex-direction:column;overflow:hidden;background:var(--ax-color-background, #ffffff);border:1px solid var(--ax-color-border, #e5e7eb);border-radius:var(--ax-border-radius, .375rem)}.ax-data-list.ax-data-list--loading .ax-data-list__content{pointer-events:none;opacity:60%}.ax-data-list .ax-data-list__loading{display:flex;min-height:calc(var(--spacing, .25rem) * 50);align-items:center;justify-content:center;padding:calc(var(--spacing, .25rem) * 8)}.ax-data-list .ax-data-list__loading-default{display:flex;flex-direction:column;align-items:center;gap:calc(var(--spacing, .25rem) * 4);color:var(--ax-color-text-secondary, #6b7280)}.ax-data-list .ax-data-list__loading-spinner{width:calc(var(--spacing, .25rem) * 8);height:calc(var(--spacing, .25rem) * 8);border-radius:calc(infinity * 1px);border:2px solid var(--ax-color-border, #e5e7eb);border-top:2px solid var(--ax-color-primary, #3b82f6);animation:spin 1s linear infinite}.ax-data-list .ax-data-list__empty{display:flex;min-height:calc(var(--spacing, .25rem) * 50);align-items:center;justify-content:center;padding:calc(var(--spacing, .25rem) * 8)}.ax-data-list .ax-data-list__empty-default{display:flex;flex-direction:column;align-items:center;gap:calc(var(--spacing, .25rem) * 4);text-align:center;color:var(--ax-color-text-secondary, #6b7280)}.ax-data-list .ax-data-list__empty-icon{width:calc(var(--spacing, .25rem) * 12);height:calc(var(--spacing, .25rem) * 12);opacity:50%}.ax-data-list .ax-data-list__content{flex:1;overflow:hidden}.ax-data-list .ax-data-list__viewport{width:100%;height:100%}.ax-data-list .ax-data-list__viewport.ax-data-list__viewport--truncated .ax-data-list__text,.ax-data-list .ax-data-list__viewport.ax-data-list__viewport--truncated .ax-data-list__description{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ax-data-list .ax-data-list__item{position:relative;display:flex;cursor:pointer;align-items:center;padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 2);transition:all .15s ease-in-out;border-bottom:1px solid var(--ax-color-border-light, #f3f4f6)}.ax-data-list .ax-data-list__item:hover:not(.ax-data-list__item--disabled){background-color:var(--ax-color-hover, #f9fafb)}.ax-data-list .ax-data-list__item:focus{outline:2px solid var(--ax-color-primary, #3b82f6);outline-offset:-2px}.ax-data-list .ax-data-list__item.ax-data-list__item--selected{background-color:var(--ax-color-primary-light, #dbeafe);color:var(--ax-color-primary, #3b82f6);border-color:var(--ax-color-primary, #3b82f6)}.ax-data-list .ax-data-list__item.ax-data-list__item--selected:hover{background-color:var(--ax-color-primary-light-hover, #bfdbfe)}.ax-data-list .ax-data-list__item.ax-data-list__item--disabled{cursor:not-allowed;opacity:60%;background-color:var(--ax-color-disabled, #f9fafb);color:var(--ax-color-text-disabled, #9ca3af)}.ax-data-list .ax-data-list__item.ax-data-list__item--disabled:hover{background-color:var(--ax-color-disabled, #f9fafb)}.ax-data-list .ax-data-list__item.ax-data-list__item--focused{background-color:var(--ax-color-focus, #eff6ff);outline:2px solid var(--ax-color-primary, #3b82f6);outline-offset:-2px}.ax-data-list .ax-data-list__item.ax-data-list__item--loading{pointer-events:none;cursor:default;background-color:var(--ax-color-background, #ffffff)}.ax-data-list .ax-data-list__item.ax-data-list__item--loading:hover{background-color:var(--ax-color-background, #ffffff)}.ax-data-list .ax-data-list__item.ax-data-list__item--level-0{padding-inline-start:calc(var(--spacing, .25rem) * 4)}.ax-data-list .ax-data-list__item.ax-data-list__item--level-1{padding-inline-start:calc(var(--spacing, .25rem) * 10)}.ax-data-list .ax-data-list__item.ax-data-list__item--level-2{padding-inline-start:calc(var(--spacing, .25rem) * 16)}.ax-data-list .ax-data-list__item.ax-data-list__item--level-3{padding-inline-start:5.5rem}.ax-data-list .ax-data-list__item.ax-data-list__item--level-4{padding-inline-start:calc(var(--spacing, .25rem) * 28)}.ax-data-list .ax-data-list__item.ax-data-list__item--level-5{padding-inline-start:8.5rem}.ax-data-list .ax-data-list__checkbox{margin-inline-end:calc(var(--spacing, .25rem) * 3);flex-shrink:0}.ax-data-list .ax-data-list__expand-button{margin-inline-end:calc(var(--spacing, .25rem) * 2);display:flex;width:calc(var(--spacing, .25rem) * 6);height:calc(var(--spacing, .25rem) * 6);flex-shrink:0;cursor:pointer;align-items:center;justify-content:center;border-radius:.25rem;transition:all .15s ease-in-out}.ax-data-list .ax-data-list__expand-button:hover{background-color:var(--ax-color-hover, #f3f4f6)}.ax-data-list .ax-data-list__expand-button:focus{outline:2px solid var(--ax-color-primary, #3b82f6);outline-offset:2px}.ax-data-list .ax-data-list__expand-button.ax-data-list__expand-button--expanded .ax-data-list__expand-icon{rotate:90deg}.ax-data-list .ax-data-list__expand-icon{width:calc(var(--spacing, .25rem) * 4);height:calc(var(--spacing, .25rem) * 4);transition:transform .15s ease-in-out;color:var(--ax-color-text-secondary, #6b7280)}.ax-data-list .ax-data-list__content-wrapper{display:flex;min-width:calc(var(--spacing, .25rem) * 0);flex:1;flex-direction:column;gap:calc(var(--spacing, .25rem) * 1)}.ax-data-list .ax-data-list__text{--tw-leading: calc(var(--spacing, .25rem) * 5);line-height:calc(var(--spacing, .25rem) * 5);--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);color:var(--ax-color-text, #111827)}.ax-data-list .ax-data-list__text.ax-data-list__text--truncated{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ax-data-list .ax-data-list__description{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-leading: calc(var(--spacing, .25rem) * 5);line-height:calc(var(--spacing, .25rem) * 5);color:var(--ax-color-text-secondary, #6b7280)}.ax-data-list .ax-data-list__description.ax-data-list__description--truncated{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ax-data-list__loading-skeleton{display:flex;width:100%;align-items:center;gap:calc(var(--spacing, .25rem) * 3)}.ax-data-list__skeleton-checkbox{width:calc(var(--spacing, .25rem) * 4);height:calc(var(--spacing, .25rem) * 4);flex-shrink:0;border-radius:.25rem;background:linear-gradient(90deg,#f3f4f6 25%,#e5e7eb,#f3f4f6 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}.ax-data-list__skeleton-content{display:flex;flex:1;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.ax-data-list__skeleton-text{height:calc(var(--spacing, .25rem) * 4);width:80%;border-radius:.25rem;background:linear-gradient(90deg,#f3f4f6 25%,#e5e7eb,#f3f4f6 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}.ax-data-list__skeleton-description{height:calc(var(--spacing, .25rem) * 3);width:calc(3/5 * 100%);border-radius:.25rem;background:linear-gradient(90deg,#f3f4f6 25%,#e5e7eb,#f3f4f6 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@media(max-width:768px){.ax-data-list .ax-data-list__item{padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 3)}.ax-data-list .ax-data-list__item.ax-data-list__item--level-1{padding-inline-start:calc(var(--spacing, .25rem) * 8)}.ax-data-list .ax-data-list__item.ax-data-list__item--level-2{padding-inline-start:calc(var(--spacing, .25rem) * 12)}.ax-data-list .ax-data-list__item.ax-data-list__item--level-3{padding-inline-start:calc(var(--spacing, .25rem) * 16)}.ax-data-list .ax-data-list__item.ax-data-list__item--level-4{padding-inline-start:calc(var(--spacing, .25rem) * 20)}.ax-data-list .ax-data-list__item.ax-data-list__item--level-5{padding-inline-start:calc(var(--spacing, .25rem) * 24)}.ax-data-list .ax-data-list__checkbox{margin-inline-end:calc(var(--spacing, .25rem) * 2)}.ax-data-list .ax-data-list__expand-button{margin-inline-end:calc(var(--spacing, .25rem) * 1)}}@media(prefers-contrast:high){.ax-data-list{border-width:2px}.ax-data-list .ax-data-list__item{border-bottom-width:2px}.ax-data-list .ax-data-list__item:focus{outline-width:3px}.ax-data-list .ax-data-list__item.ax-data-list__item--selected{border-width:2px}.ax-data-list .ax-data-list__expand-button:focus{outline-width:3px}}@media(prefers-reduced-motion:reduce){.ax-data-list .ax-data-list__item,.ax-data-list .ax-data-list__expand-icon{transition:none}.ax-data-list .ax-data-list__loading-spinner{animation:none}}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@keyframes spin{to{transform:rotate(360deg)}}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-leading: initial;--tw-font-weight: initial}}}\n/*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i2.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i2.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i2.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: AXTooltipDirective, selector: "[axTooltip]", inputs: ["axTooltipDisabled", "axTooltip", "axTooltipContext", "axTooltipOverflowOnly", "axTooltipPlacement", "axTooltipOffsetX", "axTooltipOffsetY", "axTooltipOpenAfter", "axTooltipCloseAfter"] }, { kind: "component", type: AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "isLoading", "indeterminate"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
379
379
|
}
|
|
380
380
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: AXDataListComponent, decorators: [{
|
|
381
381
|
type: Component,
|