@rt-tools/ui-kit 0.0.21 → 0.0.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rt-tools-ui-kit.mjs","sources":["../../../projects/ui-kit/src/lib/ui-kit/modal/modal.component.ts","../../../projects/ui-kit/src/lib/ui-kit/modal/modal.component.html","../../../projects/ui-kit/src/lib/ui-kit/modal/modal.types.ts","../../../projects/ui-kit/src/lib/ui-kit/modal/modal.service.ts","../../../projects/ui-kit/src/lib/ui-kit/scrollable/scrollable-container.component.ts","../../../projects/ui-kit/src/lib/ui-kit/scrollable/scrollable-container.component.html","../../../projects/ui-kit/src/lib/ui-kit/side-menu/menu-sub-item/rtui-side-menu-sub-item.component.ts","../../../projects/ui-kit/src/lib/ui-kit/side-menu/menu-sub-item/rtui-side-menu-sub-item.component.html","../../../projects/ui-kit/src/lib/ui-kit/side-menu/menu/rtui-side-menu.component.ts","../../../projects/ui-kit/src/lib/ui-kit/side-menu/menu/rtui-side-menu.component.html","../../../projects/ui-kit/src/lib/ui-kit/spinner/spinner.component.ts","../../../projects/ui-kit/src/lib/ui-kit/spinner/spinner.component.html","../../../projects/ui-kit/src/lib/ui-kit/aside/aside.types.ts","../../../projects/ui-kit/src/lib/ui-kit/aside/aside.enums.ts","../../../projects/ui-kit/src/lib/ui-kit/aside/components/panel/aside-panel.component.ts","../../../projects/ui-kit/src/lib/ui-kit/aside/components/panel/aside-panel.component.html","../../../projects/ui-kit/src/lib/ui-kit/aside/aside.service.ts","../../../projects/ui-kit/src/lib/ui-kit/toolbar/toolbar.component.ts","../../../projects/ui-kit/src/lib/ui-kit/toolbar/toolbar.component.html","../../../projects/ui-kit/src/lib/ui-kit/aside/components/error-notification/aside-error-box.component.ts","../../../projects/ui-kit/src/lib/ui-kit/aside/components/error-notification/aside-error-box.component.html","../../../projects/ui-kit/src/lib/ui-kit/aside/components/container/aside-container.component.ts","../../../projects/ui-kit/src/lib/ui-kit/aside/components/container/aside-container.component.html","../../../projects/ui-kit/src/lib/ui-kit/icon/rtui-icon.component.ts","../../../projects/ui-kit/src/lib/ui-kit/icon/rtui-icon.component.html","../../../projects/ui-kit/src/lib/ui-kit/buttons/unified-button/rtui-button.component.ts","../../../projects/ui-kit/src/lib/ui-kit/buttons/unified-button/rtui-button.component.html","../../../projects/ui-kit/src/lib/ui-kit/buttons/multi-button/rtui-multi-button.component.ts","../../../projects/ui-kit/src/lib/ui-kit/buttons/multi-button/rtui-multi-button.component.html","../../../projects/ui-kit/src/lib/ui-kit/header/header.component.ts","../../../projects/ui-kit/src/lib/ui-kit/header/header.component.html","../../../projects/ui-kit/src/lib/ui-kit/table/components/clear-search-button/rtui-clear-button.component.ts","../../../projects/ui-kit/src/lib/ui-kit/table/components/clear-search-button/rtui-clear-button.component.html","../../../projects/ui-kit/src/lib/ui-kit/table/util/default-pagination.ts","../../../projects/ui-kit/src/lib/ui-kit/table/components/pagination-view/rtui-pagination.component.ts","../../../projects/ui-kit/src/lib/ui-kit/table/components/pagination-view/rtui-pagination.component.html","../../../projects/ui-kit/src/lib/ui-kit/table/util/table-stop-row-click-attribute.const.ts","../../../projects/ui-kit/src/lib/ui-kit/table/util/table-column.interface.ts","../../../projects/ui-kit/src/lib/ui-kit/table/util/table-component.interface.ts","../../../projects/ui-kit/src/lib/ui-kit/table/util/table-config.service.ts","../../../projects/ui-kit/src/lib/ui-kit/table/util/common-selectors.directive.ts","../../../projects/ui-kit/src/lib/ui-kit/table/util/dynamic-list-selectors.directive.ts","../../../projects/ui-kit/src/lib/ui-kit/table/util/table-selectors.directive.ts","../../../projects/ui-kit/src/lib/ui-kit/table/util/index.ts","../../../projects/ui-kit/src/lib/ui-kit/table/components/table-base-cell/table-base-cell.component.ts","../../../projects/ui-kit/src/lib/ui-kit/table/components/table-base-cell/table-base-cell.component.html","../../../projects/ui-kit/src/lib/ui-kit/table/components/table-header-cell/table-header-cell.component.ts","../../../projects/ui-kit/src/lib/ui-kit/table/components/table-header-cell/table-header-cell.component.html","../../../projects/ui-kit/src/lib/ui-kit/table/components/table-header-filter-cell/table-header-filter-cell.component.ts","../../../projects/ui-kit/src/lib/ui-kit/table/components/table-header-filter-cell/table-header-filter-cell.component.html","../../../projects/ui-kit/src/lib/ui-kit/table/directives/rtui-stop-table-row-click.directive.ts","../../../projects/ui-kit/src/lib/ui-kit/table/directives/rtui-table-row-click-directive.ts","../../../projects/ui-kit/src/lib/ui-kit/table/components/table/rtui-table.component.ts","../../../projects/ui-kit/src/lib/ui-kit/table/components/table/rtui-table.component.html","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/actions/rtui-dynamic-selector-list-actions.component.ts","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/actions/rtui-dynamic-selector-list-actions.component.html","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/dynamic-selectors-directive.ts","../../../projects/ui-kit/src/lib/ui-kit/toggle/toggle-size.type.enum.ts","../../../projects/ui-kit/src/lib/ui-kit/toggle/rtui-toggle.component.ts","../../../projects/ui-kit/src/lib/ui-kit/toggle/rtui-toggle.component.html","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/multi-selector-popup/rtui-multi-selector-popup.component.ts","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/multi-selector-popup/rtui-multi-selector-popup.component.html","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/placeholder/rtui-dynamic-selector-placeholder.component.ts","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/placeholder/rtui-dynamic-selector-placeholder.component.html","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/selected-list/rtui-dynamic-selector-selected-list.component.ts","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/selected-list/rtui-dynamic-selector-selected-list.component.html","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/dynamic-selector/rtui-dynamic-selector.component.ts","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/dynamic-selector/rtui-dynamic-selector.component.html","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/dynamic-input/rtui-dynamic-input.component.ts","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/dynamic-input/rtui-dynamic-input.component.html","../../../projects/ui-kit/src/lib/ui-kit/table/components/table-config-aside/rt-table-config-aside.component.ts","../../../projects/ui-kit/src/lib/ui-kit/table/components/table-config-aside/rt-table-config-aside.component.html","../../../projects/ui-kit/src/lib/ui-kit/table/components/table-container/table-container.component.ts","../../../projects/ui-kit/src/lib/ui-kit/table/components/table-container/table-container.component.html","../../../projects/ui-kit/src/lib/ui-kit/table/dynamic-list.component.ts","../../../projects/ui-kit/src/lib/ui-kit/table/dynamic-list.component.html","../../../projects/ui-kit/src/lib/ui-kit/popover/rtui-popover-container.component.ts","../../../projects/ui-kit/src/lib/ui-kit/popover/rtui-popover-container.component.html","../../../projects/ui-kit/src/lib/ui-kit/popover/rt-popover.directive.ts","../../../projects/ui-kit/src/lib/ui-kit/action-bar/components/bar/rtui-action-bar.component.ts","../../../projects/ui-kit/src/lib/ui-kit/action-bar/components/bar/rtui-action-bar.component.html","../../../projects/ui-kit/src/lib/ui-kit/action-bar/rt-action-bar.service.ts","../../../projects/ui-kit/src/lib/ui-kit/action-bar/components/container/rtui-action-bar-container.component.ts","../../../projects/ui-kit/src/lib/ui-kit/action-bar/components/container/rtui-action-bar-container.component.html","../../../projects/ui-kit/src/lib/ui-kit/providers.ts","../../../projects/ui-kit/src/lib/ui-kit/snack-bar/snack-bar.compontent.ts","../../../projects/ui-kit/src/lib/ui-kit/snack-bar/snack-bar.component.html","../../../projects/ui-kit/src/lib/ui-kit/snack-bar/rt-snack-bar.service.ts","../../../projects/ui-kit/src/lib/ui-kit/animation/progress.animation.ts","../../../projects/ui-kit/src/lib/ui-kit/info-badge/badge-info-enum.ts","../../../projects/ui-kit/src/lib/ui-kit/info-badge/calculate-text-color-based-on-back.ts","../../../projects/ui-kit/src/lib/ui-kit/info-badge/info-badge.component.ts","../../../projects/ui-kit/src/lib/ui-kit/info-badge/info-badge.component.html","../../../projects/ui-kit/src/lib/ui-kit/info-badge/info-badge-types.enum.ts","../../../projects/ui-kit/src/lib/ui-kit/file-uploader/rtui-file-upload.component.ts","../../../projects/ui-kit/src/lib/ui-kit/file-uploader/rtui-file-upload.component.html","../../../projects/ui-kit/src/lib/ui-kit/image-uploader/image-uploader/rtui-image-upload.component.ts","../../../projects/ui-kit/src/lib/ui-kit/image-uploader/image-uploader/rtui-image-upload.component.html","../../../projects/ui-kit/src/lib/ui-kit/theme/rtui-theme.types.ts","../../../projects/ui-kit/src/lib/ui-kit/theme/rtui-theme.service.ts","../../../projects/ui-kit/src/lib/ui-kit/theme/rtui-theme.directive.ts","../../../projects/ui-kit/src/public-api.ts","../../../projects/ui-kit/src/rt-tools-ui-kit.ts"],"sourcesContent":["import { NgClass, NgComponentOutlet, NgStyle } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostBinding, inject, OnInit } from '@angular/core';\nimport { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { BlockDirective, ElemDirective } from '@rt-tools/core';\nimport { checkIsMatchingValues, SanitizePipe } from '@rt-tools/utils';\nimport { IModal } from './modal.types';\n\n@Component({\n selector: 'rtui-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'rtui-modal' },\n imports: [\n NgStyle,\n NgClass,\n NgComponentOutlet,\n ReactiveFormsModule,\n SanitizePipe,\n\n // material\n MatDialogModule,\n MatInputModule,\n MatSelectModule,\n MatButtonModule,\n MatIcon,\n\n // BEM\n BlockDirective,\n ElemDirective,\n ],\n})\nexport class RtuiModalComponent<T> implements OnInit {\n public readonly data: IModal.Data<T> = inject(MAT_DIALOG_DATA);\n readonly #dialogRef: MatDialogRef<RtuiModalComponent<T>> = inject(MatDialogRef<RtuiModalComponent<T>>);\n\n public control: FormControl | undefined;\n public selectControl: FormControl | undefined;\n\n public readonly bemBlock: string = 'rtui-modal';\n\n @HostBinding('class')\n public get hostClasses(): Record<string, boolean> {\n return {\n [this.bemBlock]: true,\n };\n }\n\n public ngOnInit(): void {\n if (Boolean(this.data.select)) {\n this.selectControl = new FormControl(null, Validators.required);\n }\n\n if (Boolean(this.data.textArea)) {\n this.control = new FormControl(this.data.textArea?.value);\n }\n\n if (Boolean(this.data.input)) {\n this.control = new FormControl(this.data.input?.value, Validators.required);\n\n if (this.data.input?.sample) {\n this.control.addValidators(checkIsMatchingValues(this.data.input.sample));\n }\n }\n }\n\n public onClose(button: IModal.Button<T>): void {\n this.#dialogRef.close({\n value: Boolean(this.data.select) && button.assignSelectedValue ? this.selectControl?.value : button.value,\n message: Boolean(this.control) ? this.control?.value : null,\n });\n }\n}\n","<ng-container rtBlock=\"rtui-modal\">\n @if (data.title) {\n <div rtElem=\"title\" mat-dialog-title>\n @if (data.icon) {\n <h2>\n <mat-icon [ngStyle]=\"data.icon.style\">\n {{ data.icon.value }}\n </mat-icon>\n </h2>\n }\n\n <h1>{{ data.title }}</h1>\n </div>\n }\n\n <mat-dialog-content>\n @if (data.text) {\n <div rtElem=\"text\" [innerHTML]=\"data.text | sanitize\"></div>\n }\n\n @if (data.confirmation) {\n <div rtElem=\"confirmation\" [innerHTML]=\"data.confirmation | sanitize\"></div>\n }\n\n @if (data.input) {\n <div rtElem=\"input\">{{ data.input.label }}</div>\n\n <mat-form-field [appearance]=\"'outline'\">\n <input matInput type=\"text\" autocomplete=\"off\" [formControl]=\"control!\" />\n </mat-form-field>\n }\n\n @if (data.textArea) {\n <mat-form-field rtElem=\"textarea\">\n <textarea matInput [formControl]=\"control!\" [placeholder]=\"data.textArea.placeholder\"></textarea>\n </mat-form-field>\n }\n\n @if (data.select) {\n <mat-form-field rtElem=\"select\">\n @if (data.select.label) {\n <mat-label>{{ data.select.label }}</mat-label>\n }\n\n <mat-select required [formControl]=\"selectControl!\">\n <mat-option>--</mat-option>\n @for (option of data.select.value; track option?.name ?? option) {\n <mat-option [value]=\"option?.value\">\n {{ option?.name }}\n </mat-option>\n }\n </mat-select>\n\n @if (data.select.hint && selectControl?.hasError('required')) {\n <mat-error>{{ data.select.hint }}</mat-error>\n }\n </mat-form-field>\n }\n\n @if (data?.component) {\n <ng-container *ngComponentOutlet=\"data!.component!\" />\n }\n </mat-dialog-content>\n\n <mat-dialog-actions [attr.align]=\"data.buttonsAlign\">\n @for (button of data.buttons; track button.text) {\n @switch (button.appearance) {\n @case ('raised') {\n <button\n mat-flat-button\n type=\"button\"\n [ngClass]=\"button.className\"\n [color]=\"button.color\"\n [disabled]=\"button.validateSelect && (selectControl?.invalid || control?.invalid)\"\n [ngStyle]=\"button.style\"\n (click)=\"onClose(button)\">\n {{ button.text }}\n </button>\n }\n\n @case ('flat') {\n <button\n mat-flat-button\n type=\"button\"\n [color]=\"button.color\"\n [disabled]=\"button.validateSelect && (selectControl?.invalid || control?.invalid)\"\n [ngStyle]=\"button.style\"\n (click)=\"onClose(button)\">\n {{ button.text }}\n </button>\n }\n\n @case ('stroked') {\n <button\n mat-stroked-button\n type=\"button\"\n [color]=\"button.color\"\n [disabled]=\"button.validateSelect && (selectControl?.invalid || control?.invalid)\"\n [ngStyle]=\"button.style\"\n (click)=\"onClose(button)\">\n {{ button.text }}\n </button>\n }\n\n @case ('fab') {\n <button\n mat-fab\n type=\"button\"\n [color]=\"button.color\"\n [disabled]=\"button.validateSelect && (selectControl?.invalid || control?.invalid)\"\n [ngStyle]=\"button.style\"\n (click)=\"onClose(button)\">\n {{ button.text }}\n </button>\n }\n\n @case ('mini-fab') {\n <button\n mat-mini-fab\n type=\"button\"\n [color]=\"button.color\"\n [disabled]=\"button.validateSelect && (selectControl?.invalid || control?.invalid)\"\n [ngStyle]=\"button.style\"\n (click)=\"onClose(button)\">\n {{ button.text }}\n </button>\n }\n\n @default {\n <button\n mat-button\n type=\"button\"\n [color]=\"button.color\"\n [disabled]=\"button.validateSelect && (selectControl?.invalid || control?.invalid)\"\n [ngStyle]=\"button.style\"\n (click)=\"onClose(button)\">\n {{ button.text }}\n </button>\n }\n }\n }\n </mat-dialog-actions>\n</ng-container>\n","import { Type } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { Observable } from 'rxjs';\n\nimport { Nullable } from '@rt-tools/core';\n\n// Modal enums\nexport enum MODAL_WINDOW_SIZE_ENUM {\n SM = '25rem',\n MD = '45rem',\n LG = '65rem',\n FULL = '100%',\n}\n\nexport type ModalWindowSizeType =\n | MODAL_WINDOW_SIZE_ENUM.SM\n | MODAL_WINDOW_SIZE_ENUM.MD\n | MODAL_WINDOW_SIZE_ENUM.LG\n | MODAL_WINDOW_SIZE_ENUM.FULL;\n\n// Modal data interfaces\nexport interface Icon {\n value: string;\n style?: { [className: string]: string };\n}\n\nexport interface NameValueType<N = string, V = string> {\n name: N;\n value: V;\n}\n\nexport interface Select<T> {\n value: Array<NameValueType<string, T>>;\n label?: string;\n hint?: string;\n}\n\nexport namespace IModal {\n export interface Button<T> {\n text: string;\n color?: ThemePalette;\n value: Nullable<T>;\n appearance?: 'standard' | 'raised' | 'flat' | 'stroked' | 'fab' | 'mini-fab';\n validateSelect?: boolean;\n assignSelectedValue?: boolean;\n style?: { [className: string]: string };\n className?: string;\n }\n\n export interface Data<T> {\n buttonsAlign: 'start' | 'center' | 'end';\n buttons: Array<Button<T>>;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n component?: Type<any>;\n icon?: Icon;\n title?: string;\n text?: string;\n confirmation?: string;\n input?: {\n label: string;\n placeholder: string;\n value: string;\n sample?: string;\n };\n textArea?: {\n value: string;\n placeholder: string;\n };\n select?: Select<T>;\n }\n\n export interface DataAnswer<T> {\n value: T;\n message: string;\n }\n\n export type ConfirmResponsePredicate<T> = (answer: Nullable<IModal.DataAnswer<T>>) => boolean;\n\n export interface ConfirmResponse<T> {\n on(predicate: ConfirmResponsePredicate<T>): Observable<Nullable<IModal.DataAnswer<T>>>;\n\n onCancel(cancel?: ConfirmResponsePredicate<T>): Observable<Nullable<IModal.DataAnswer<T>>>;\n\n onConfirm(confirm?: ConfirmResponsePredicate<T>): Observable<Nullable<IModal.DataAnswer<T>>>;\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\nimport { Observable, ReplaySubject, share } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { Nullable } from '@rt-tools/core';\nimport { MODAL_WINDOW_SIZE_ENUM } from './modal.types';\nimport { RtuiModalComponent } from './modal.component';\nimport { IModal } from './modal.types';\n\n@Injectable()\nexport class RtModalService {\n readonly #dialogRef: MatDialog = inject(MatDialog);\n readonly #defaultConfig: MatDialogConfig = {\n width: MODAL_WINDOW_SIZE_ENUM.MD,\n autoFocus: false,\n closeOnNavigation: true,\n };\n\n public confirm<T>(data: IModal.Data<T>, config?: MatDialogConfig): Observable<Nullable<IModal.DataAnswer<T>>> {\n const dialogRef: MatDialogRef<RtuiModalComponent<T>, IModal.DataAnswer<T>> = this.#dialogRef.open<\n RtuiModalComponent<T>,\n IModal.Data<T>,\n IModal.DataAnswer<T>\n >(RtuiModalComponent, {\n ...this.#defaultConfig,\n ...config,\n data,\n });\n\n return dialogRef.afterClosed();\n }\n\n public with<T>(data: IModal.Data<T>, config?: MatDialogConfig): IModal.ConfirmResponse<T> {\n /** Replacement for deprecated multicasting operators (https://github.com/ReactiveX/rxjs/issues/6452) */\n const subject$: ReplaySubject<Nullable<IModal.DataAnswer<T>>> = new ReplaySubject<Nullable<IModal.DataAnswer<T>>>(1);\n const result$: Observable<Nullable<IModal.DataAnswer<T>>> = this.confirm(data, config).pipe(\n share({\n connector: () => subject$,\n resetOnError: false,\n resetOnComplete: false,\n resetOnRefCountZero: true,\n })\n );\n\n const defaultCancel: IModal.ConfirmResponsePredicate<T> = (answer: Nullable<IModal.DataAnswer<T>>) =>\n !(Boolean(answer) && Boolean(answer?.value));\n\n const defaultConfirm: IModal.ConfirmResponsePredicate<T> = (answer: Nullable<IModal.DataAnswer<T>>) =>\n Boolean(answer) && Boolean(answer?.value);\n\n return {\n onCancel: (cancel: IModal.ConfirmResponsePredicate<T> = defaultCancel) =>\n result$.pipe(filter((answer: Nullable<IModal.DataAnswer<T>>) => cancel(answer))),\n onConfirm: (confirm: IModal.ConfirmResponsePredicate<T> = defaultConfirm) =>\n result$.pipe(filter((answer: Nullable<IModal.DataAnswer<T>>) => confirm(answer))),\n on: (predicate: IModal.ConfirmResponsePredicate<T>) =>\n result$.pipe(filter((answer: Nullable<IModal.DataAnswer<T>>) => predicate(answer))),\n };\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, contentChild, Directive, Signal, TemplateRef, Type } from '@angular/core';\n\nimport { BlockDirective, ElemDirective, Nullable } from '@rt-tools/core';\n\n@Directive({\n selector: '[rtuiScrollableHeader]',\n})\nexport class RtuiScrollableContainerHeaderDirective {}\n\n@Directive({\n selector: '[rtuiScrollableContent]',\n})\nexport class RtuiScrollableContainerContentDirective {}\n\n@Directive({\n selector: '[rtuiScrollableFooter]',\n})\nexport class RtuiScrollableContainerFooterDirective {}\n\n@Component({\n selector: 'rtui-scrollable',\n templateUrl: './scrollable-container.component.html',\n styleUrls: ['./scrollable-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [BlockDirective, ElemDirective, NgTemplateOutlet],\n})\nexport class RtuiScrollableContainerComponent {\n public readonly headerTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiScrollableContainerHeaderDirective, {\n read: TemplateRef,\n });\n public readonly contentTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiScrollableContainerContentDirective, {\n read: TemplateRef,\n });\n public readonly footerTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiScrollableContainerFooterDirective, {\n read: TemplateRef,\n });\n}\n","<ng-container rtBlock=\"rtui-scrollable\">\n @if (headerTpl()) {\n <div rtElem=\"header\">\n <ng-container *ngTemplateOutlet=\"headerTpl() ?? null\" />\n </div>\n }\n\n @if (contentTpl()) {\n <div rtElem=\"content\">\n <ng-container *ngTemplateOutlet=\"contentTpl() ?? null\" />\n </div>\n }\n\n @if (footerTpl()) {\n <div rtElem=\"footer\">\n <ng-container *ngTemplateOutlet=\"footerTpl() ?? null\" />\n </div>\n }\n</ng-container>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n} from '@angular/core';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatListItem, MatListItemIcon, MatListItemTitle, MatNavList } from '@angular/material/list';\nimport { MAT_TOOLTIP_DEFAULT_OPTIONS, MatTooltip } from '@angular/material/tooltip';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable } from '@rt-tools/core';\nimport { RtHideTooltipDirective, RtIconOutlinedDirective } from '@rt-tools/utils';\nimport { ISideMenu } from '../side-menu.types';\nimport { RtuiSideMenuComponent } from '../menu/rtui-side-menu.component';\n\n@Component({\n selector: 'rtui-side-menu-sub-item',\n templateUrl: './rtui-side-menu-sub-item.component.html',\n styleUrls: ['./rtui-side-menu-sub-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n MatIcon,\n MatListItem,\n MatNavList,\n MatListItemIcon,\n MatListItemTitle,\n MatExpansionModule,\n MatTooltip,\n\n // directives\n BlockDirective,\n ElemDirective,\n ModDirective,\n RtIconOutlinedDirective,\n RtHideTooltipDirective,\n ],\n providers: [\n {\n provide: MAT_TOOLTIP_DEFAULT_OPTIONS,\n useValue: {\n disableTooltipInteractivity: true,\n },\n },\n ],\n})\nexport class RtuiSideMenuSubItemComponent {\n public readonly menuRef: RtuiSideMenuComponent = inject(RtuiSideMenuComponent);\n\n public item: InputSignal<ISideMenu.Item> = input.required<ISideMenu.Item>();\n public isMobile: InputSignalWithTransform<Nullable<boolean>, Nullable<boolean>> = input<Nullable<boolean>, Nullable<boolean>>(false, {\n transform: booleanAttribute,\n });\n public isSubMenuXScrollEnabled: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n public isSubMenuIconsOutlined: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n public isSubMenuButtonIconsOutlined: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n public isSubMenuTooltipsShown: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n\n public readonly clickSubMenuAction: OutputEmitterRef<{ item: ISideMenu.Item; event: MouseEvent }> = output<{\n item: ISideMenu.Item;\n event: MouseEvent;\n }>();\n public readonly clickSubMenuAdditionalAction: OutputEmitterRef<{ data: ISideMenu.ItemData; event: MouseEvent }> = output<{\n data: ISideMenu.ItemData;\n event: MouseEvent;\n }>();\n\n public onClickSubMenu(item: ISideMenu.Item, event: MouseEvent): void {\n this.clickSubMenuAction.emit({ item, event });\n }\n\n public onClickSubMenuAdditional(data: ISideMenu.ItemData, event: MouseEvent): void {\n this.clickSubMenuAdditionalAction.emit({ data, event });\n }\n}\n","@if (item()) {\n <ng-container *ngTemplateOutlet=\"listElemTpl; context: { $implicit: item() }\" />\n}\n\n<ng-template #listElemTpl let-item>\n @if (item?.link) {\n <mat-list-item\n rtBlock=\"rtui-side-menu-sub-item\"\n [rtMod]=\"{ fixed: isSubMenuXScrollEnabled() }\"\n [id]=\"item.id\"\n [activated]=\"menuRef.activeMenuIds().includes(item.id)\"\n (click)=\"onClickSubMenu(item, $event)\">\n @if (item?.icon) {\n <mat-icon matListItemIcon rtElem=\"icon\" [rtIconOutlined]=\"isSubMenuIconsOutlined()\">{{ item.icon }}</mat-icon>\n }\n\n @if (item?.name) {\n <div rtBlock=\"rtui-side-menu-sub-item-title\">\n <div\n #titleTpl\n rtElem=\"text\"\n matTooltipPosition=\"above\"\n [matTooltip]=\"item.name\"\n [matTooltipDisabled]=\"!isSubMenuTooltipsShown() || isMobile()\"\n [rtHideTooltipDirective]=\"titleTpl\"\n [isTooltipShown]=\"isSubMenuTooltipsShown() && !isMobile()\">\n {{ item.name }}\n </div>\n\n @if (item?.iconButton?.icon) {\n <div rtBlock=\"rtui-side-menu-sub-item-title-button\">\n <mat-icon\n rtElem=\"icon\"\n [rtIconOutlined]=\"isSubMenuButtonIconsOutlined()\"\n (click)=\"onClickSubMenuAdditional(item.iconButton?.data, $event); $event.stopPropagation()\">\n {{ item.iconButton.icon }}\n </mat-icon>\n </div>\n }\n </div>\n }\n </mat-list-item>\n } @else if (item?.submenu?.length) {\n <mat-expansion-panel\n #panel\n rtBlock=\"rtui-side-menu-expand-sub-item\"\n [rtMod]=\"{ fixed: isSubMenuXScrollEnabled() }\"\n [expanded]=\"menuRef.activeMenuIds().includes(item.id)\">\n <mat-expansion-panel-header\n rtBlock=\"rtui-side-menu-expand-sub-item-header\"\n [rtMod]=\"{ activated: menuRef.activeMenuIds().includes(item.id) }\">\n @if (item?.icon) {\n <mat-icon matListItemIcon rtElem=\"icon\" [rtIconOutlined]=\"isSubMenuIconsOutlined()\">{{ item.icon }}</mat-icon>\n }\n\n @if (item?.name) {\n <div\n #headerTitleTpl\n matListItemTitle\n rtElem=\"title\"\n matTooltipPosition=\"above\"\n [matTooltip]=\"item.name\"\n [matTooltipDisabled]=\"!isSubMenuTooltipsShown() || isMobile()\"\n [rtHideTooltipDirective]=\"headerTitleTpl\"\n [isTooltipShown]=\"isSubMenuTooltipsShown() && !isMobile()\">\n {{ item.name }}\n </div>\n }\n </mat-expansion-panel-header>\n\n @if (panel?.expanded) {\n <mat-nav-list>\n @for (item of item?.submenu; track i; let i = $index) {\n <ng-container *ngTemplateOutlet=\"listElemTpl; context: { $implicit: item }\" />\n }\n </mat-nav-list>\n }\n </mat-expansion-panel>\n }\n</ng-template>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n Directive,\n input,\n InputSignal,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n Signal,\n signal,\n TemplateRef,\n Type,\n viewChild,\n WritableSignal,\n} from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatListItem, MatListItemIcon, MatNavList } from '@angular/material/list';\nimport { MatDrawer, MatSidenavModule } from '@angular/material/sidenav';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable } from '@rt-tools/core';\nimport { RtIconOutlinedDirective, RtNavigationDirective, RtScrollToElementDirective, transformArrayInput } from '@rt-tools/utils';\nimport { ISideMenu } from '../side-menu.types';\nimport {\n RtuiScrollableContainerComponent,\n RtuiScrollableContainerContentDirective,\n RtuiScrollableContainerFooterDirective,\n RtuiScrollableContainerHeaderDirective,\n} from '../../scrollable';\nimport { RtuiSideMenuSubItemComponent } from '../menu-sub-item/rtui-side-menu-sub-item.component';\n\n@Directive({\n selector: '[rtuiSideMenuHeader]',\n})\nexport class RtuiSideMenuHeaderDirective {}\n\n@Directive({\n selector: '[rtuiSideMenuFooter]',\n})\nexport class RtuiSideMenuFooterDirective {}\n\n@Component({\n selector: 'rtui-side-menu',\n templateUrl: './rtui-side-menu.component.html',\n styleUrls: ['./rtui-side-menu.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n MatSidenavModule,\n MatIcon,\n MatListItem,\n MatNavList,\n MatListItemIcon,\n\n // directives\n BlockDirective,\n ElemDirective,\n ModDirective,\n RtuiScrollableContainerHeaderDirective,\n RtuiScrollableContainerContentDirective,\n RtuiScrollableContainerFooterDirective,\n RtScrollToElementDirective,\n RtIconOutlinedDirective,\n RtNavigationDirective,\n\n // components\n RtuiScrollableContainerComponent,\n RtuiSideMenuSubItemComponent,\n ],\n})\nexport class RtuiSideMenuComponent {\n public readonly headerTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiSideMenuHeaderDirective, {\n read: TemplateRef,\n });\n public readonly footerTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiSideMenuFooterDirective, {\n read: TemplateRef,\n });\n public readonly subMenuRef: Signal<Nullable<MatDrawer>> = viewChild(MatDrawer);\n\n public readonly backToMainMenuButton: Signal<ISideMenu.Item> = signal({ id: 0, icon: 'arrow_back', name: 'Main Menu', link: ' ' });\n public readonly selectedItem: WritableSignal<Nullable<ISideMenu.Item>> = signal(null);\n public readonly selectedSubMenu: WritableSignal<Nullable<ISideMenu.Item[]>> = signal(null);\n\n public activeMenuIds: InputSignal<Array<string | number>> = input.required();\n public menuItems: InputSignalWithTransform<ISideMenu.Item[], ISideMenu.Item[]> = input<ISideMenu.Item[], ISideMenu.Item[]>([], {\n transform: (value: ISideMenu.Item[]) => transformArrayInput(value),\n });\n public isMobile: InputSignalWithTransform<Nullable<boolean>, Nullable<boolean>> = input<Nullable<boolean>, Nullable<boolean>>(false, {\n transform: booleanAttribute,\n });\n public isSubMenuXScrollEnabled: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(true, {\n transform: booleanAttribute,\n });\n public isMainMenuIconsOutlined: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n public isSubMenuIconsOutlined: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n public isSubMenuButtonIconsOutlined: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n public isSubMenuTooltipsShown: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n\n public activeMenuId: Signal<number | string> = computed(() => {\n return this.activeMenuIds()?.length ? this.activeMenuIds()[this.activeMenuIds()?.length - 1] : '';\n });\n\n public readonly closeMobileMenuAction: OutputEmitterRef<void> = output<void>();\n public readonly clickSubMenuAction: OutputEmitterRef<{ item: ISideMenu.Item; event: MouseEvent }> = output<{\n item: ISideMenu.Item;\n event: MouseEvent;\n }>();\n public readonly clickSubMenuAdditionalAction: OutputEmitterRef<{ data: ISideMenu.ItemData; event: MouseEvent }> = output<{\n data: ISideMenu.ItemData;\n event: MouseEvent;\n }>();\n\n public onClickMenu(item: ISideMenu.Item): void {\n this.selectedItem.set(item);\n\n if (item?.submenu) {\n this.selectedSubMenu.set(item.submenu);\n this.#openSubMenu();\n } else if (this.selectedSubMenu()) {\n this.closeSubMenu();\n }\n\n if (item?.link) {\n this.closeMobileMenu();\n }\n }\n\n public onClickSubMenu({ item, event }: { item: ISideMenu.Item; event: MouseEvent }): void {\n if (item?.link) {\n this.clickSubMenuAction.emit({ item, event });\n this.closeSubMenu();\n this.closeMobileMenu();\n }\n }\n\n public onBackToMainMenu(): void {\n this.selectedItem.set(null);\n this.selectedSubMenu.set(null);\n }\n\n public toggleSubMenu(item?: ISideMenu.Item): void {\n if (item?.submenu) {\n this.selectedSubMenu.set(item.submenu);\n this.#openSubMenu();\n } else if (this.selectedItem()?.submenu) {\n this.selectedSubMenu.set(this.selectedItem()?.submenu);\n } else {\n this.closeSubMenu();\n }\n }\n\n public closeSubMenu(): void {\n this.selectedItem.set(null);\n this.selectedSubMenu.set(null);\n this.subMenuRef()?.close().then();\n }\n\n public closeMobileMenu(): void {\n if (this.isMobile()) {\n this.closeMobileMenuAction.emit();\n }\n }\n\n public clickSubMenuAdditional({ data, event }: { data: ISideMenu.ItemData; event: MouseEvent }): void {\n this.clickSubMenuAdditionalAction.emit({ data, event });\n }\n\n #openSubMenu(): void {\n this.subMenuRef()?.open().then();\n }\n}\n","@if (isMobile()) {\n <rtui-scrollable rtBlock=\"rtui-mobile-side-menu\">\n @if (headerTpl()) {\n <ng-container *rtuiScrollableHeader>\n <ng-container *ngTemplateOutlet=\"headerTpl() ?? null\" />\n </ng-container>\n }\n\n @if (menuItems().length) {\n <ng-container *rtuiScrollableContent>\n <mat-nav-list\n rtBlock=\"rtui-mobile-side-menu-list\"\n [rtMod]=\"{ scrollable: selectedSubMenu()?.length && isSubMenuXScrollEnabled() }\">\n @if (selectedSubMenu()?.length) {\n <div rtElem=\"sub\" [rtScrollToElement]=\"activeMenuId()\" [elements]=\"selectedSubMenu() ?? []\">\n <rtui-side-menu-sub-item\n [item]=\"backToMainMenuButton()\"\n [isMobile]=\"isMobile()\"\n (clickSubMenuAction)=\"onBackToMainMenu()\" />\n\n @for (item of selectedSubMenu(); track i; let i = $index) {\n <rtui-side-menu-sub-item\n [item]=\"item\"\n [isMobile]=\"isMobile()\"\n [isSubMenuXScrollEnabled]=\"isSubMenuXScrollEnabled()\"\n [isSubMenuIconsOutlined]=\"isSubMenuIconsOutlined()\"\n [isSubMenuButtonIconsOutlined]=\"isSubMenuButtonIconsOutlined()\"\n [isSubMenuTooltipsShown]=\"isSubMenuTooltipsShown()\"\n (clickSubMenuAction)=\"onClickSubMenu($event)\"\n (clickSubMenuAdditionalAction)=\"clickSubMenuAdditional($event)\" />\n }\n </div>\n } @else {\n <div rtBlock=\"rtui-mobile-side-menu-list-main\">\n @for (item of menuItems(); track i; let i = $index) {\n <mat-list-item\n rtBlock=\"rtui-mobile-side-menu-item\"\n [rtNavigationDirective]=\"item?.link\"\n [activated]=\"selectedItem() === item || (!selectedItem() && activeMenuIds().includes(item.id))\"\n (click)=\"onClickMenu(item)\">\n @if (item?.icon) {\n <mat-icon matListItemIcon rtElem=\"icon\" [rtIconOutlined]=\"isMainMenuIconsOutlined()\">\n {{ item.icon }}\n </mat-icon>\n }\n\n @if (item?.name) {\n <div rtBlock=\"rtui-mobile-side-menu-item-title\">\n <div rtElem=\"text\">{{ item.name }}</div>\n\n @if (item?.iconButton?.icon) {\n <div rtBlock=\"rtui-mobile-side-menu-item-title-button\">\n <mat-icon rtElem=\"icon\">{{ item.iconButton?.icon }}</mat-icon>\n </div>\n }\n </div>\n }\n </mat-list-item>\n }\n </div>\n }\n </mat-nav-list>\n </ng-container>\n }\n\n @if (footerTpl()) {\n <ng-container *rtuiScrollableFooter>\n <ng-container *ngTemplateOutlet=\"footerTpl() ?? null\" />\n </ng-container>\n }\n </rtui-scrollable>\n} @else {\n <rtui-scrollable rtBlock=\"rtui-side-menu\">\n @if (headerTpl()) {\n <ng-container *rtuiScrollableHeader>\n <ng-container *ngTemplateOutlet=\"headerTpl() ?? null\" />\n </ng-container>\n }\n\n @if (menuItems().length) {\n <ng-container *rtuiScrollableContent>\n <mat-nav-list rtElem=\"list\">\n @for (item of menuItems(); track i; let i = $index) {\n <a\n rtBlock=\"rtui-side-menu-item\"\n [rtNavigationDirective]=\"item?.link\"\n (mouseenter)=\"toggleSubMenu(item)\"\n (click)=\"onClickMenu(item)\">\n @if (item?.icon) {\n <mat-list-item\n rtBlock=\"rtui-side-menu-item-button\"\n [activated]=\"selectedItem() === item || (!selectedItem() && activeMenuIds().includes(item.id))\">\n <div rtElem=\"icon\">\n <mat-icon [rtIconOutlined]=\"isMainMenuIconsOutlined()\">{{ item.icon }}</mat-icon>\n </div>\n </mat-list-item>\n }\n\n @if (item?.name) {\n <div rtElem=\"title\">{{ item.name }}</div>\n }\n </a>\n }\n </mat-nav-list>\n </ng-container>\n }\n\n @if (footerTpl()) {\n <ng-container *rtuiScrollableFooter>\n <ng-container *ngTemplateOutlet=\"footerTpl() ?? null\" />\n </ng-container>\n }\n </rtui-scrollable>\n\n <mat-drawer-container\n rtBlock=\"rtui-sub-side-menu\"\n [rtMod]=\"{ opened: subMenuRef()?.opened }\"\n [hasBackdrop]=\"true\"\n (backdropClick)=\"closeSubMenu()\">\n <mat-drawer rtBlock=\"rtui-sub-side-menu-content\" mode=\"side\" position=\"start\" (mouseleave)=\"toggleSubMenu()\">\n <rtui-scrollable>\n <ng-container *rtuiScrollableContent>\n @if (subMenuRef()?.opened && selectedSubMenu()?.length) {\n <mat-nav-list\n rtElem=\"list\"\n [rtMod]=\"{ scrollable: isSubMenuXScrollEnabled() }\"\n [rtScrollToElement]=\"activeMenuId()\"\n [elements]=\"selectedSubMenu() ?? []\">\n @for (item of selectedSubMenu(); track i; let i = $index) {\n <rtui-side-menu-sub-item\n [item]=\"item\"\n [isMobile]=\"isMobile()\"\n [isSubMenuXScrollEnabled]=\"isSubMenuXScrollEnabled()\"\n [isSubMenuIconsOutlined]=\"isSubMenuIconsOutlined()\"\n [isSubMenuButtonIconsOutlined]=\"isSubMenuButtonIconsOutlined()\"\n [isSubMenuTooltipsShown]=\"isSubMenuTooltipsShown()\"\n (clickSubMenuAction)=\"onClickSubMenu($event)\"\n (clickSubMenuAdditionalAction)=\"clickSubMenuAdditional($event)\" />\n }\n </mat-nav-list>\n }\n </ng-container>\n </rtui-scrollable>\n </mat-drawer>\n </mat-drawer-container>\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, input, InputSignalWithTransform, numberAttribute } from '@angular/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\n@Component({\n selector: 'rtui-spinner',\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss'],\n imports: [MatProgressSpinnerModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RtuiSpinnerComponent {\n public diameter: InputSignalWithTransform<number, number> = input<number, number>(32, {\n transform: numberAttribute,\n });\n public showBox: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(true, {\n transform: booleanAttribute,\n });\n public showBackground: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n}\n","<div class=\"c-spinner c-spinner__container\" [class.c-spinner__container--bgr-color]=\"showBackground()\">\n <div class=\"c-spinner__wrapper\" [class.c-spinner__wrapper--bgr-color]=\"showBox()\">\n <mat-spinner [diameter]=\"diameter()\" />\n </div>\n</div>\n","import { ComponentType, OverlayRef } from '@angular/cdk/overlay';\nimport { InjectionToken } from '@angular/core';\n\nimport { Subject } from 'rxjs';\n\nexport type AsidePositions = 'left' | 'right';\n\nexport class AsideRef<DATA, ANSWER> {\n constructor(\n private answer: Subject<ANSWER | null>,\n public overlayRef: OverlayRef,\n public component: ComponentType<unknown>,\n public position: AsidePositions,\n public data: DATA\n ) {}\n\n public close(answer?: ANSWER): void {\n this.answer.next(answer ?? null);\n }\n}\n\nexport const ASIDE_REF: InjectionToken<AsideRef<object, object>> = new InjectionToken<AsideRef<object, object>>('ASIDE_REF');\n\nexport const ddServices: Array<{ provide: string; useValue: unknown }> = [\n { provide: 'ddData', useValue: undefined },\n { provide: 'ddAnswer', useValue: undefined },\n { provide: 'ddOverlay', useValue: undefined },\n];\n","export enum ASIDE_BUTTONS_ENUM {\n USER_ACTIVE = 'User active',\n USER_INACTIVE = 'User inactive',\n DELETE = 'Delete',\n RESET = 'Reset',\n}\n\nexport type AsideButtonsType =\n | ASIDE_BUTTONS_ENUM.USER_ACTIVE\n | ASIDE_BUTTONS_ENUM.USER_INACTIVE\n | ASIDE_BUTTONS_ENUM.DELETE\n | ASIDE_BUTTONS_ENUM.RESET;\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { AsyncPipe } from '@angular/common';\nimport { Component, HostBinding, inject, Injector, ViewEncapsulation } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { ASIDE_REF, AsidePositions, AsideRef } from '../../aside.types';\n\n@Component({\n selector: 'rtui-aside-panel',\n templateUrl: './aside-panel.component.html',\n styleUrls: ['./aside-panel.component.scss'],\n encapsulation: ViewEncapsulation.None,\n imports: [AsyncPipe, PortalModule],\n animations: [\n trigger('aside', [\n state('enter-left', style({ transform: 'none' })),\n transition('* => enter-left', [\n style({ transform: 'translateX(-100%)' }),\n animate('200ms ease-in', style({ transform: 'translateX(0%)' })),\n ]),\n transition('enter-left => *', animate('200ms ease-in', style({ transform: 'translateX(-100%)' }))),\n state('enter-right', style({ transform: 'none' })),\n transition('* => enter-right', [\n style({ transform: 'translateX(100%)' }),\n animate('200ms ease-in', style({ transform: 'translateX(0%)' })),\n ]),\n transition('enter-right => *', animate('200ms ease-in', style({ transform: 'translateX(100%)' }))),\n ]),\n ],\n})\nexport class RtuiAsidePanelComponent {\n readonly #asideRef: AsideRef<object, object> = inject(ASIDE_REF);\n readonly #breakpointObserver: BreakpointObserver = inject(BreakpointObserver);\n\n @HostBinding('@aside') protected _state: string = `enter-${this.#asideRef.position}`;\n\n public portal: ComponentPortal<unknown> = this.#createPortal(this.#asideRef);\n public position: AsidePositions = this.#asideRef.position;\n public isSmall$: Observable<boolean> = this.#breakpointObserver\n .observe(['(max-width: 1023px)'])\n .pipe(map((result: BreakpointState) => result.matches));\n\n public close(): void {\n this.#asideRef.close();\n }\n\n public startExitAnimation(): void {\n this._state = `exit-${this.#asideRef.position}`;\n }\n\n #createPortal<D, R>(asideRef: AsideRef<D, R>): ComponentPortal<unknown> {\n const injector: Injector = Injector.create({\n providers: [\n {\n provide: ASIDE_REF,\n useValue: asideRef,\n },\n ],\n });\n\n return new ComponentPortal(asideRef.component, null, injector);\n }\n}\n","<div\n class=\"c-aside\"\n [class.position-left]=\"position === 'left'\"\n [class.position-right]=\"position === 'right'\"\n [class.full-screen]=\"isSmall$ | async\">\n <ng-container *cdkPortalOutlet=\"portal\" />\n</div>\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\nimport { ComponentRef, inject, Injectable, Injector } from '@angular/core';\nimport { Event, NavigationEnd, Router } from '@angular/router';\nimport { merge, Observable, of, Subject } from 'rxjs';\nimport { delay, filter, take, tap } from 'rxjs/operators';\n\nimport { ASIDE_REF, AsidePositions, AsideRef } from './aside.types';\nimport { RtuiAsidePanelComponent } from './components/panel/aside-panel.component';\n\n@Injectable()\nexport class RtAsideService {\n readonly #overlay: Overlay = inject(Overlay);\n readonly #router: Router = inject(Router);\n\n /**\n * Opens an aside panel with a specified component, position, and data.\n *\n * @template COMPONENT - The type of the component to display in the aside panel.\n * @template DATA - The type of the data to pass to the component.\n * @template ANSWER - The type of the response expected from the aside panel.\n *\n * @param component - The component to render inside the aside panel.\n * @param position - The position (left or right) where the aside panel should appear.\n * @param data - The data to pass to the component in the aside panel.\n *\n * @returns An observable that emits the response from the aside panel when it is closed.\n */\n public Open<COMPONENT = null, DATA = null, ANSWER = null>(\n component: ComponentType<COMPONENT>,\n position: AsidePositions,\n data: DATA\n ): Observable<ANSWER | null> {\n const answer: Subject<ANSWER | null> = new Subject<ANSWER | null>();\n const overlayRef: OverlayRef = this.#createOverlay(position);\n const asideRef: AsideRef<DATA, ANSWER> = new AsideRef<DATA, ANSWER>(answer, overlayRef, component, position, data);\n const portal: ComponentPortal<RtuiAsidePanelComponent> = this.#createPortal(asideRef);\n const componentRef: ComponentRef<RtuiAsidePanelComponent> = overlayRef.attach(portal);\n\n merge(\n overlayRef.backdropClick(),\n overlayRef.keydownEvents().pipe(filter((keyEvent: KeyboardEvent): boolean => keyEvent.key === 'Escape')),\n this.#router.events.pipe(filter((e: Event): boolean => e instanceof NavigationEnd)),\n answer.pipe(delay(10))\n )\n .pipe(\n // The aside closes on the first of these events — terminate so the merged\n // hot sources (router/backdrop/keydown) don't keep the subscription alive.\n take(1),\n tap((): void => {\n componentRef.instance.startExitAnimation();\n overlayRef.detach();\n answer.complete();\n }),\n delay(300)\n )\n .subscribe(() => {\n overlayRef.dispose();\n });\n\n return answer ? answer.asObservable() : of(null);\n }\n\n /**\n * Creates an `OverlayConfig` object to configure the overlay's position, scroll behavior, and backdrop.\n *\n * @param position - The position (left or right) where the aside panel should appear.\n *\n * @returns An `OverlayConfig` object with the specified settings.\n */\n #createOverlayConfig(position: AsidePositions): OverlayConfig {\n const config: Partial<OverlayConfig> = {\n width: 'auto',\n scrollStrategy: this.#overlay.scrollStrategies.block(),\n positionStrategy: this.#overlay.position().global().left(),\n hasBackdrop: true,\n };\n\n if (position === 'left') {\n config.positionStrategy = this.#overlay.position().global().left();\n } else if (position === 'right') {\n config.positionStrategy = this.#overlay.position().global().right();\n }\n\n return new OverlayConfig(config);\n }\n\n /**\n * Creates and returns an `OverlayRef` object that represents the overlay to be displayed.\n *\n * @param position - The position (left or right) where the aside panel should appear.\n *\n * @returns An `OverlayRef` object that manages the overlay's lifecycle.\n */\n #createOverlay(position: AsidePositions): OverlayRef {\n const overlayConfig: OverlayConfig = this.#createOverlayConfig(position);\n return this.#overlay.create(overlayConfig);\n }\n\n /**\n * Creates a `ComponentPortal` for the `RtuiAsidePanelComponent`, injecting the `AsideRef` instance.\n *\n * @template D - The type of data passed to the aside component.\n * @template R - The type of the response expected from the aside component.\n *\n * @param asideRef - The `AsideRef` instance containing the data and component for the aside panel.\n *\n * @returns A `ComponentPortal` that can be attached to an overlay.\n */\n #createPortal<D, R>(asideRef: AsideRef<D, R>): ComponentPortal<RtuiAsidePanelComponent> {\n const injector: Injector = Injector.create({\n providers: [\n {\n provide: ASIDE_REF,\n useValue: asideRef,\n },\n ],\n });\n\n return new ComponentPortal(RtuiAsidePanelComponent, null, injector);\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n Directive,\n input,\n InputSignalWithTransform,\n Signal,\n TemplateRef,\n Type,\n} from '@angular/core';\nimport { MatToolbar } from '@angular/material/toolbar';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable } from '@rt-tools/core';\n\n@Directive({\n selector: '[rtuiToolbarLeft]',\n})\nexport class RtuiToolbarLeftDirective {}\n\n@Directive({\n selector: '[rtuiToolbarCenter]',\n})\nexport class RtuiToolbarCenterDirective {}\n\n@Directive({\n selector: '[rtuiToolbarRight]',\n})\nexport class RtuiToolbarRightDirective {}\n\n@Component({\n selector: 'rtui-toolbar',\n templateUrl: './toolbar.component.html',\n styleUrls: ['./toolbar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatToolbar, NgTemplateOutlet, BlockDirective, ElemDirective, ModDirective],\n})\nexport class RtuiToolbarComponent {\n public isVisibleToolbar: Signal<boolean> = input(true);\n\n public readonly leftToolTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiToolbarLeftDirective, {\n read: TemplateRef,\n });\n public readonly centerToolTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiToolbarCenterDirective, {\n read: TemplateRef,\n });\n public readonly rightToolTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiToolbarRightDirective, {\n read: TemplateRef,\n });\n public sticky: InputSignalWithTransform<Nullable<boolean>, boolean> = input<Nullable<boolean>, boolean>(false, {\n transform: booleanAttribute,\n });\n}\n","@if ((leftToolTpl() || centerToolTpl() || rightToolTpl()) && isVisibleToolbar()) {\n <mat-toolbar rtBlock=\"toolbar\" [rtMod]=\"{ sticky: sticky() }\">\n <div rtBlock=\"bars\">\n @if (leftToolTpl()) {\n <div rtElem=\"bar\" rtMod=\"left\">\n <ng-template *ngTemplateOutlet=\"leftToolTpl() ?? null\" />\n </div>\n }\n\n <div rtElem=\"bar\" rtMod=\"center\">\n <ng-template *ngTemplateOutlet=\"centerToolTpl() ?? null\" />\n </div>\n\n @if (rightToolTpl()) {\n <div rtElem=\"bar\" rtMod=\"right\">\n <ng-template *ngTemplateOutlet=\"rightToolTpl() ?? null\" />\n </div>\n }\n </div>\n </mat-toolbar>\n}\n","import { Clipboard } from '@angular/cdk/clipboard';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, inject, input, InputSignal, signal, WritableSignal } from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\n\nimport { BlockDirective, ElemDirective, Nullable } from '@rt-tools/core';\n\n@Component({\n selector: 'rtui-aside-error-box',\n templateUrl: './aside-error-box.component.html',\n styleUrls: ['./aside-error-box.component.scss'],\n imports: [\n MatIcon,\n MatButton,\n\n // bem\n BlockDirective,\n ElemDirective,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AsideErrorBoxComponent {\n readonly #clipboard: Clipboard = inject(Clipboard);\n\n public error: InputSignal<Nullable<HttpErrorResponse>> = input.required();\n\n public isErrorCopied: WritableSignal<boolean> = signal(false);\n\n public onCopyToClipboard(): void {\n const errorTime: string = `Error time: ${new Date().toDateString()}_${new Date().toTimeString()};`;\n this.#clipboard.copy(errorTime + 'Error info: ' + JSON.stringify(this.error()));\n this.isErrorCopied.set(true);\n setTimeout(() => this.isErrorCopied.set(false), 1000);\n }\n}\n","<div rtBlock=\"aside-error-box\">\n <div rtElem=\"title\">Request Error</div>\n\n <button\n type=\"button\"\n rtBlock=\"aside-error-box-button\"\n class=\"c-button c-button--txt-base--size-sm\"\n [class.--complete]=\"isErrorCopied()\"\n (click)=\"onCopyToClipboard()\">\n @if (isErrorCopied()) {\n <mat-icon rtElem=\"icon\">done</mat-icon>\n }\n\n <div rtElem=\"title\">{{ isErrorCopied() ? 'Copied' : 'Copy error info' }}</div>\n </button>\n</div>\n","import { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n Directive,\n input,\n InputSignal,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n Signal,\n TemplateRef,\n Type,\n} from '@angular/core';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { RouterLink } from '@angular/router';\n\nimport { BlockDirective, ElemDirective, Nullable } from '@rt-tools/core';\nimport { transformArrayInput } from '@rt-tools/utils';\nimport { AsideButtonsType } from '../../aside.enums';\nimport { IAside } from '../../aside.interfaces';\nimport {\n RtuiScrollableContainerComponent,\n RtuiScrollableContainerContentDirective,\n RtuiScrollableContainerFooterDirective,\n RtuiScrollableContainerHeaderDirective,\n} from '../../../scrollable';\nimport { RtuiSpinnerComponent } from '../../../spinner';\nimport { RtuiToolbarCenterDirective, RtuiToolbarComponent, RtuiToolbarLeftDirective, RtuiToolbarRightDirective } from '../../../toolbar';\nimport { AsideErrorBoxComponent } from '../error-notification/aside-error-box.component';\n\n@Directive({\n selector: '[rtuiAsideHeader]',\n})\nexport class RtuiAsideContainerHeaderDirective {}\n\n@Component({\n selector: 'rtui-aside-container',\n templateUrl: './aside-container.component.html',\n styleUrls: ['./aside-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n RouterLink,\n NgTemplateOutlet,\n\n // material\n MatIcon,\n CdkTrapFocus,\n MatIconButton,\n MatTooltip,\n MatButton,\n\n // standalone components\n AsideErrorBoxComponent,\n RtuiSpinnerComponent,\n RtuiScrollableContainerComponent,\n RtuiToolbarComponent,\n\n // directives\n RtuiScrollableContainerHeaderDirective,\n RtuiScrollableContainerContentDirective,\n RtuiScrollableContainerFooterDirective,\n RtuiToolbarLeftDirective,\n RtuiToolbarCenterDirective,\n RtuiToolbarRightDirective,\n\n // bem\n BlockDirective,\n ElemDirective,\n ],\n host: {\n class: 'c-aside',\n },\n})\nexport class RtuiAsideContainerComponent {\n public title: InputSignal<Nullable<string>> = input<Nullable<string>>(null);\n public isMobile: InputSignalWithTransform<Nullable<boolean>, boolean> = input.required<Nullable<boolean>, boolean>({\n transform: booleanAttribute,\n });\n public isSubmitButtonDisabled: InputSignalWithTransform<boolean, boolean> = input.required<boolean, boolean>({\n transform: booleanAttribute,\n });\n public isFooterShown: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(true, {\n transform: booleanAttribute,\n });\n\n public pending: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n public isRequestErrorShown: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n public headerActionsButtons: InputSignalWithTransform<IAside.HeaderActionButton[], IAside.HeaderActionButton[]> = input<\n IAside.HeaderActionButton[],\n IAside.HeaderActionButton[]\n >([], {\n transform: (value: IAside.HeaderActionButton[]) => transformArrayInput(value),\n });\n\n public requestError: InputSignal<Nullable<HttpErrorResponse>> = input<Nullable<HttpErrorResponse>>(null);\n public submitButtonTitle: InputSignal<string> = input<string>('Save');\n public cancelButtonTitle: InputSignal<string> = input<string>('Discard Changes');\n public submitButtonTooltip: InputSignal<string> = input<string>('');\n\n public readonly submitAction: OutputEmitterRef<void> = output<void>();\n public readonly cancelAction: OutputEmitterRef<void> = output<void>();\n public readonly headerAction: OutputEmitterRef<AsideButtonsType> = output<AsideButtonsType>();\n\n public readonly headerTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiAsideContainerHeaderDirective, {\n read: TemplateRef,\n });\n\n public onSubmit(): void {\n this.submitAction.emit();\n }\n\n public onCancel(): void {\n this.cancelAction.emit();\n }\n\n public onHeaderActionClick(buttonName: AsideButtonsType): void {\n this.headerAction.emit(buttonName);\n }\n}\n","@if (pending()) {\n <rtui-spinner [showBackground]=\"true\" />\n}\n\n<rtui-scrollable cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <ng-container *rtuiScrollableHeader>\n <div rtBlock=\"c-aside-header\">\n <rtui-toolbar>\n <ng-container *rtuiToolbarLeft>\n <button\n rtBlock=\"back-button\"\n aria-label=\"Icon-button\"\n mat-icon-button\n matTooltip=\"Go back\"\n matTooltipClass=\"custom-tooltip\"\n matTooltipPosition=\"below\"\n [matTooltipDisabled]=\"isMobile()\"\n [disableRipple]=\"true\"\n (click)=\"onCancel()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n </ng-container>\n\n <ng-container *rtuiToolbarCenter>\n <div rtBlock=\"c-aside-title\">\n @if (headerTpl()) {\n <ng-container *ngTemplateOutlet=\"headerTpl() ?? null\" />\n } @else {\n {{ title() }}\n }\n </div>\n </ng-container>\n\n <ng-container *rtuiToolbarRight>\n <div rtBlock=\"c-aside-actions\">\n @if (headerActionsButtons()?.length) {\n @for (button of headerActionsButtons(); track button) {\n <button\n rtElem=\"action\"\n aria-label=\"Icon-button\"\n mat-icon-button\n matTooltipClass=\"custom-tooltip\"\n matTooltipPosition=\"left\"\n [matTooltip]=\"button.tooltip\"\n [matTooltipDisabled]=\"isMobile()\"\n [disableRipple]=\"true\"\n [disabled]=\"button?.disabled\"\n (click)=\"onHeaderActionClick(button.name)\">\n <mat-icon [style.color]=\"button.color\">{{ button.icon }}</mat-icon>\n </button>\n }\n }\n </div>\n </ng-container>\n </rtui-toolbar>\n\n @if (isRequestErrorShown()) {\n <rtui-aside-error-box [error]=\"requestError()\" />\n }\n </div>\n </ng-container>\n\n <ng-container *rtuiScrollableContent>\n <div rtBlock=\"c-aside-content\">\n <ng-content />\n </div>\n </ng-container>\n\n @if (isFooterShown()) {\n <ng-container *rtuiScrollableFooter>\n <div rtBlock=\"c-aside-footer\">\n <div rtBlock=\"c-aside-footer-btn\">\n <button cdkFocusInitial mat-button type=\"button\" (click)=\"onCancel()\">\n {{ cancelButtonTitle() }}\n </button>\n </div>\n\n <div rtBlock=\"c-aside-footer-btn\">\n <button\n mat-flat-button\n type=\"button\"\n matTooltipClass=\"custom-tooltip\"\n matTooltipPosition=\"left\"\n [matTooltip]=\"submitButtonTooltip()\"\n [matTooltipDisabled]=\"!isSubmitButtonDisabled() || isMobile()\"\n [disabled]=\"isSubmitButtonDisabled()\"\n (click)=\"onSubmit()\">\n <div rtElem=\"title\">{{ submitButtonTitle() }}</div>\n </button>\n </div>\n </div>\n </ng-container>\n }\n</rtui-scrollable>\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n InputSignal,\n InputSignalWithTransform,\n Signal,\n ViewEncapsulation,\n WritableSignal,\n booleanAttribute,\n computed,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nimport { RtIconOutlinedDirective, transformStringInput } from '@rt-tools/utils';\n\nexport type RtuiIconSizeType = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | '3xl';\nexport type RtuiIconThemeType =\n | 'inherit'\n | 'primary'\n | 'primary-strong'\n | 'neutral'\n | 'disabled'\n | 'muted'\n | 'white'\n | 'danger'\n | 'success';\n\nconst MATERIAL_SYMBOLS_FONT: string = 'Material Symbols Outlined';\nconst fontLoaded: WritableSignal<boolean> = signal<boolean>(false);\n\n@Component({\n selector: 'rtui-icon',\n templateUrl: './rtui-icon.component.html',\n styleUrl: './rtui-icon.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n // material\n MatIcon,\n\n // directives\n RtIconOutlinedDirective,\n ],\n hostDirectives: [\n {\n directive: MatTooltip,\n inputs: ['matTooltip: tooltip', 'matTooltipPosition: tooltipPosition', 'matTooltipDisabled: tooltipDisabled'],\n },\n ],\n host: {\n class: 'rtui-icon',\n '[class]': 'hostClasses()',\n },\n})\nexport class RtuiIconComponent {\n readonly #document: Document = inject(DOCUMENT);\n\n protected readonly fontLoaded: Signal<boolean> = fontLoaded.asReadonly();\n protected readonly hostClasses: Signal<string> = computed(() => {\n const classes: string[] = [`rtui-icon--size-${this.size()}`, `rtui-icon--theme-${this.theme()}`];\n\n if (this.rotate()) {\n classes.push('rtui-icon--rotate');\n }\n\n if (!this.fontLoaded()) {\n classes.push('rtui-icon--loading');\n }\n\n return classes.join(' ');\n });\n\n public readonly size: InputSignal<RtuiIconSizeType> = input<RtuiIconSizeType>('md');\n public readonly theme: InputSignal<RtuiIconThemeType> = input<RtuiIconThemeType>('inherit');\n public readonly glyph: InputSignalWithTransform<string, unknown> = input<string, unknown>('', { transform: transformStringInput });\n public readonly outlined: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n public readonly rotate: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n constructor() {\n if (!fontLoaded()) {\n this.#checkFontLoaded();\n }\n }\n\n #checkFontLoaded(): void {\n const fonts: FontFaceSet = this.#document.fonts;\n\n if (fonts.check(`1rem \"${MATERIAL_SYMBOLS_FONT}\"`)) {\n fontLoaded.set(true);\n return;\n }\n\n fonts.ready.then(() => {\n fontLoaded.set(true);\n });\n }\n}\n","<mat-icon [rtIconOutlined]=\"outlined()\">\n @if (glyph()) {\n {{ glyph() }}\n } @else {\n <ng-content />\n }\n</mat-icon>\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport {\n ChangeDetectionStrategy,\n Component,\n InputSignal,\n InputSignalWithTransform,\n OutputEmitterRef,\n Signal,\n booleanAttribute,\n computed,\n input,\n output,\n} from '@angular/core';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nimport { BlockDirective, ElemDirective, ModDirective } from '@rt-tools/core';\nimport { transformStringInput } from '@rt-tools/utils';\n\nimport { RtuiIconComponent, RtuiIconSizeType } from '../../icon';\nimport { RtuiSpinnerComponent } from '../../spinner';\n\nexport namespace IRtuiButton {\n export type Type = 'icon' | 'fab' | 'pill';\n export type Variant = 'default' | 'primary' | 'danger' | 'success' | 'warning' | 'accent';\n export type Size = 'xs' | 'sm' | 'md' | 'lg';\n export type Radius = 'none' | 'sm' | 'md' | 'lg' | 'full';\n export type Appearance = 'solid' | 'outline' | 'light' | 'text';\n export type IconPosition = 'start' | 'end';\n}\n\n@Component({\n selector: 'rtui-button',\n templateUrl: './rtui-button.component.html',\n styleUrl: './rtui-button.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n // rt-tools\n BlockDirective,\n ElemDirective,\n ModDirective,\n RtuiSpinnerComponent,\n\n // components\n RtuiIconComponent,\n ],\n hostDirectives: [\n {\n directive: MatTooltip,\n inputs: [\n 'matTooltip: tooltip',\n 'matTooltipPosition: tooltipPosition',\n 'matTooltipDisabled: tooltipDisabled',\n 'matTooltipClass: tooltipClass',\n ],\n },\n ],\n host: {\n '[class.rtui-button-full]': 'fullWidth()',\n },\n})\nexport class RtuiButtonComponent {\n protected readonly resolvedIconSize: Signal<RtuiIconSizeType> = computed(() => {\n const iconSize: RtuiIconSizeType | undefined = this.iconSize();\n\n if (iconSize) {\n return iconSize;\n }\n\n const sizeMap: Record<IRtuiButton.Size, RtuiIconSizeType> = {\n xs: 'xs',\n sm: 'sm',\n md: 'sm',\n lg: 'md',\n };\n return sizeMap[this.size()];\n });\n protected readonly spinnerSize: Signal<number> = computed(() => {\n const sizeMap: Record<IRtuiButton.Size, number> = {\n xs: 12,\n sm: 16,\n md: 20,\n lg: 24,\n };\n return this.spinnerDiameter() ?? sizeMap[this.size()];\n });\n protected readonly modifiers: Signal<Record<string, boolean>> = computed(() => ({\n [`type-${this.type()}`]: true,\n [`variant-${this.variant()}`]: true,\n [`size-${this.size()}`]: true,\n [`radius-${this.radius()}`]: true,\n [`appearance-${this.appearance()}`]: !!this.appearance(),\n loading: this.loading(),\n disabled: this.disabled(),\n }));\n\n public readonly type: InputSignal<IRtuiButton.Type> = input<IRtuiButton.Type>('icon');\n public readonly variant: InputSignal<IRtuiButton.Variant> = input<IRtuiButton.Variant>('default');\n public readonly appearance: InputSignal<IRtuiButton.Appearance | undefined> = input<IRtuiButton.Appearance>();\n public readonly size: InputSignal<IRtuiButton.Size> = input<IRtuiButton.Size>('md');\n public readonly radius: InputSignal<IRtuiButton.Radius> = input<IRtuiButton.Radius>('full');\n public readonly icon: InputSignalWithTransform<string, unknown> = input<string, unknown>('', { transform: transformStringInput });\n public readonly iconPosition: InputSignal<IRtuiButton.IconPosition> = input<IRtuiButton.IconPosition>('start');\n public readonly iconSize: InputSignal<RtuiIconSizeType | undefined> = input<RtuiIconSizeType>();\n public readonly text: InputSignalWithTransform<string, unknown> = input<string, unknown>('', { transform: transformStringInput });\n public readonly loading: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n public readonly disabled: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n public readonly outlined: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n public readonly fullWidth: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n public readonly spinnerDiameter: InputSignal<number | undefined> = input<number>();\n\n public readonly clicked: OutputEmitterRef<void> = output<void>();\n\n protected onClick(): void {\n if (!this.loading() && !this.disabled()) {\n this.clicked.emit();\n }\n }\n}\n","@switch (type()) {\n @case ('pill') {\n <button type=\"button\" rtBlock=\"rtui-button\" [rtMod]=\"modifiers()\" [disabled]=\"disabled() || loading()\" (click)=\"onClick()\">\n @if (loading()) {\n <rtui-spinner rtElem=\"spinner\" [diameter]=\"spinnerSize()\" [showBox]=\"false\" />\n } @else {\n @if (icon() && iconPosition() === 'start') {\n <rtui-icon rtElem=\"icon\" [glyph]=\"icon()\" [size]=\"resolvedIconSize()\" [outlined]=\"outlined()\" />\n }\n @if (text()) {\n <span rtElem=\"text\">{{ text() }}</span>\n }\n <ng-content />\n @if (icon() && iconPosition() === 'end') {\n <rtui-icon rtElem=\"icon\" [glyph]=\"icon()\" [size]=\"resolvedIconSize()\" [outlined]=\"outlined()\" />\n }\n }\n </button>\n }\n @default {\n <button type=\"button\" rtBlock=\"rtui-button\" [rtMod]=\"modifiers()\" [disabled]=\"disabled() || loading()\" (click)=\"onClick()\">\n @if (loading()) {\n <rtui-spinner rtElem=\"spinner\" [diameter]=\"spinnerSize()\" [showBox]=\"false\" />\n } @else {\n <rtui-icon rtElem=\"icon\" [glyph]=\"icon()\" [size]=\"resolvedIconSize()\" [outlined]=\"outlined()\" />\n }\n </button>\n }\n}\n","import { TitleCasePipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n InputSignalWithTransform,\n ModelSignal,\n OutputEmitterRef,\n input,\n model,\n output,\n} from '@angular/core';\nimport { BlockDirective, ElemDirective, ModDirective } from '@rt-tools/core';\nimport { transformArrayInput } from '@rt-tools/utils';\n\n@Component({\n selector: 'rtui-multi-button',\n templateUrl: 'rtui-multi-button.component.html',\n styleUrls: ['rtui-multi-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n // pipes\n TitleCasePipe,\n // rt-tools\n BlockDirective,\n ElemDirective,\n ModDirective,\n ],\n})\nexport class RtuiMultiButtonComponent {\n public actions: InputSignalWithTransform<string[], string[]> = input<string[], string[]>([], {\n transform: (value: string[]) => transformArrayInput(value),\n });\n public activeAction: ModelSignal<string> = model<string>('');\n\n public readonly changeActiveAction: OutputEmitterRef<string> = output<string>();\n\n public onSetActiveAction(action: string): void {\n if (action !== this.activeAction()) {\n this.activeAction.set(action);\n this.changeActiveAction.emit(this.activeAction());\n }\n }\n}\n","@if (actions()?.length) {\n <div rtBlock=\"rtui-multibutton-actions\">\n @for (action of actions(); track action) {\n <button rtElem=\"action\" type=\"button\" [rtMod]=\"{ active: action === activeAction() }\" (click)=\"onSetActiveAction(action)\">\n {{ action | titlecase }}\n </button>\n }\n </div>\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n Directive,\n input,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n Signal,\n TemplateRef,\n Type,\n} from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatToolbar } from '@angular/material/toolbar';\n\nimport { BlockDirective, ElemDirective, Nullable } from '@rt-tools/core';\nimport { RtuiToolbarCenterDirective, RtuiToolbarComponent, RtuiToolbarLeftDirective, RtuiToolbarRightDirective } from '../toolbar';\n\n@Directive({\n selector: '[rtuiHeaderLeft]',\n})\nexport class RtuiHeaderLeftDirective {}\n\n@Directive({\n selector: '[rtuiHeaderCenter]',\n})\nexport class RtuiHeaderCenterDirective {}\n\n@Directive({\n selector: '[rtuiHeaderRight]',\n})\nexport class RtuiHeaderRightDirective {}\n\n@Component({\n selector: 'rtui-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n\n // Material\n MatToolbar,\n MatIconButton,\n MatIcon,\n\n // BEM\n BlockDirective,\n ElemDirective,\n\n // Ui-kit\n RtuiToolbarComponent,\n RtuiToolbarLeftDirective,\n RtuiToolbarCenterDirective,\n RtuiToolbarRightDirective,\n ],\n})\nexport class RtuiHeaderComponent {\n public isMobile: InputSignalWithTransform<Nullable<boolean>, Nullable<boolean>> = input<Nullable<boolean>, Nullable<boolean>>(false, {\n transform: booleanAttribute,\n });\n public isMobileMenuButtonShown: InputSignalWithTransform<Nullable<boolean>, Nullable<boolean>> = input<\n Nullable<boolean>,\n Nullable<boolean>\n >(true, {\n transform: booleanAttribute,\n });\n\n public readonly leftHeaderTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiHeaderLeftDirective, {\n read: TemplateRef,\n });\n public readonly centerHeaderTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiHeaderCenterDirective, {\n read: TemplateRef,\n });\n public readonly rightHeaderTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiHeaderRightDirective, {\n read: TemplateRef,\n });\n\n public readonly openMobileMenuAction: OutputEmitterRef<void> = output<void>();\n\n public openSideMenu(): void {\n if (this.isMobile() && this.isMobileMenuButtonShown()) {\n this.openMobileMenuAction.emit();\n }\n }\n}\n","<rtui-toolbar>\n <ng-container *rtuiToolbarLeft>\n @if (isMobile() && isMobileMenuButtonShown()) {\n <button mat-icon-button rtBlock=\"mobile-menu-button\" (click)=\"openSideMenu()\">\n <mat-icon>menu</mat-icon>\n </button>\n }\n\n @if (leftHeaderTpl()) {\n <ng-template *ngTemplateOutlet=\"leftHeaderTpl() ?? null\" />\n }\n </ng-container>\n\n @if (centerHeaderTpl()) {\n <ng-container *rtuiToolbarCenter>\n <ng-template *ngTemplateOutlet=\"centerHeaderTpl() ?? null\" />\n </ng-container>\n }\n\n @if (rightHeaderTpl()) {\n <ng-container *rtuiToolbarRight>\n <ng-template *ngTemplateOutlet=\"rightHeaderTpl() ?? null\" />\n </ng-container>\n }\n</rtui-toolbar>\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n input,\n InputSignal,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n} from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip, TooltipPosition } from '@angular/material/tooltip';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable } from '@rt-tools/core';\nimport { isString } from '@rt-tools/utils';\n\n@Component({\n selector: 'rtui-clear-button',\n templateUrl: './rtui-clear-button.component.html',\n styleUrls: ['./rtui-clear-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n // Material\n MatIcon,\n MatIconButton,\n MatTooltip,\n\n // BEM\n BlockDirective,\n ElemDirective,\n ModDirective,\n ],\n})\nexport class RtuiClearButtonComponent {\n readonly #defaultTooltipPosition: TooltipPosition = 'above';\n\n public isMobile: InputSignalWithTransform<Nullable<boolean>, boolean> = input<Nullable<boolean>, boolean>(false, {\n transform: booleanAttribute,\n });\n public isButtonShown: InputSignalWithTransform<Nullable<boolean>, boolean> = input<Nullable<boolean>, boolean>(true, {\n transform: booleanAttribute,\n });\n public tooltip: InputSignalWithTransform<Nullable<string>, string> = input<Nullable<string>, string>(null, {\n transform: (value: Nullable<string>) => (isString(value) ? value.trim() : ''),\n });\n public tooltipPosition: InputSignal<TooltipPosition> = input(this.#defaultTooltipPosition);\n\n public readonly keydownAction: OutputEmitterRef<void> = output<void>();\n public readonly clickAction: OutputEmitterRef<void> = output<void>();\n\n public onKeydown(): void {\n this.keydownAction.emit();\n }\n\n public onClick(): void {\n this.clickAction.emit();\n }\n}\n","<button\n rtBlock=\"rtui-clear-button\"\n [rtMod]=\"{ invisible: !isButtonShown() }\"\n [matTooltip]=\"tooltip() ?? ''\"\n [matTooltipPosition]=\"tooltipPosition()\"\n [matTooltipDisabled]=\"isMobile()\"\n (keydown)=\"onKeydown()\"\n (click)=\"onClick()\">\n <mat-icon rtElem=\"icon\">close</mat-icon>\n</button>\n","import { PageModel } from '@rt-tools/utils';\n\nexport const DEFAULT_PAGE_SIZE: number = 20;\n\nexport const DEFAULT_PAGE_MODEL: Readonly<PageModel> = Object.freeze({\n pageNumber: 1,\n pageSize: DEFAULT_PAGE_SIZE,\n totalCount: 0,\n\n hasNext: false,\n hasPrev: false,\n});\n","import {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n HostListener,\n inject,\n Injector,\n input,\n InputSignal,\n InputSignalWithTransform,\n OnInit,\n output,\n OutputEmitterRef,\n Signal,\n signal,\n viewChild,\n WritableSignal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormBuilder, FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable, WINDOW } from '@rt-tools/core';\nimport { isNumber, PageModel } from '@rt-tools/utils';\nimport { DEFAULT_PAGE_SIZE } from '../../util/default-pagination';\n\n@Component({\n selector: 'rtui-pagination',\n templateUrl: './rtui-pagination.component.html',\n styleUrls: ['./rtui-pagination.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ReactiveFormsModule, BlockDirective, ElemDirective, ModDirective],\n})\nexport class RtuiPaginationComponent implements OnInit, AfterViewInit {\n readonly #injector: Injector = inject(Injector);\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n readonly #fb: FormBuilder = inject(FormBuilder);\n readonly #windowRef: Window = inject(WINDOW);\n\n /** Current Page Model */\n public currentPageModel: InputSignal<PageModel> = input.required();\n /** Indicates is mobile view */\n public isMobile: InputSignalWithTransform<Nullable<boolean>, boolean> = input.required<Nullable<boolean>, boolean>({\n transform: booleanAttribute,\n });\n\n /** Output action when Page Model changed */\n public readonly pageModelChange: OutputEmitterRef<Partial<PageModel>> = output<Partial<PageModel>>();\n\n /** Form control for selected page size */\n public control: FormControl<number> = this.#fb.nonNullable.control(DEFAULT_PAGE_SIZE);\n public readonly divider: Signal<string> = signal('...');\n /** Page size options */\n public readonly pageSizes: Signal<number[]> = computed(() => {\n return [10, 20, 40, 50].filter(\n (el: number) => el / 2 <= this.currentPageModel()?.totalCount || el === this.currentPageModel()?.pageSize\n );\n });\n /** Array of current page numbers */\n public readonly numbers: WritableSignal<Array<number | string>> = signal([]);\n /** Page Model for compare */\n public readonly previousPageModel: WritableSignal<Nullable<PageModel>> = signal(null);\n /** Value of full content width */\n public readonly minContentFitWidth: WritableSignal<number> = signal(0);\n /** Indicates is content clipped */\n public readonly isContentClipped: WritableSignal<boolean> = signal(false);\n\n /** Container template ref */\n public readonly containerRef: Signal<Nullable<ElementRef<HTMLElement>>> = viewChild<ElementRef<HTMLElement>>('containerRef');\n\n /** Set 'isContentClipped' when widow resize */\n @HostListener('window:resize')\n public onResize(): void {\n if (this.isContentClipped() && this.#windowRef?.innerWidth && this.minContentFitWidth() + 36 < this.#windowRef.innerWidth) {\n this.isContentClipped.set(false);\n } else if (!this.isContentClipped() && this.#windowRef.innerWidth && this.minContentFitWidth() + 36 > this.#windowRef.innerWidth) {\n this.isContentClipped.set(true);\n }\n this.#setMinContentFitWidth();\n }\n\n public ngOnInit(): void {\n this.numbers.set(this.#fillArray());\n this.control.patchValue(this.currentPageModel()?.pageSize ?? DEFAULT_PAGE_SIZE, { emitEvent: false });\n\n this.control.valueChanges.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe((value: number) => {\n this.changePageSize(value);\n });\n\n /** Update Page Model */\n effect(\n () => {\n if (Boolean(this.currentPageModel()) && Boolean(this.previousPageModel())) {\n this.numbers.set(this.#fillArray());\n this.#setMinContentFitWidth();\n }\n this.previousPageModel.set(this.currentPageModel());\n },\n { injector: this.#injector }\n );\n }\n\n /** Set 'isContentClipped' on init */\n public ngAfterViewInit(): void {\n const currentContainerWidth: Nullable<number> = this.containerRef()?.nativeElement?.scrollWidth;\n\n if (currentContainerWidth && this.#windowRef?.innerWidth) {\n this.minContentFitWidth.set(currentContainerWidth);\n this.isContentClipped.set(currentContainerWidth > this.#windowRef.innerWidth);\n }\n }\n\n /** Action for change Page Model */\n public changePageSize(pageSize: number): void {\n const current_total: number = Math.ceil(this.currentPageModel().totalCount / pageSize);\n const previous_total: number = Math.ceil(this.currentPageModel().totalCount / this.currentPageModel().pageSize);\n const correction: number = Math.floor(\n ((previous_total - this.currentPageModel().pageNumber) * this.currentPageModel().pageSize) / pageSize\n );\n\n this.pageModelChange.emit({ pageNumber: current_total - correction, pageSize });\n }\n\n /** Action for select page */\n public onChangePageNumber(pageNumber: string | number): void {\n if (isNumber(pageNumber)) {\n if (!this.currentPageModel().hasNext && this.currentPageModel().pageNumber <= pageNumber) {\n return;\n }\n\n if (!this.currentPageModel().hasPrev && this.currentPageModel().pageNumber >= pageNumber) {\n return;\n }\n\n this.pageModelChange.emit({ pageNumber });\n }\n }\n\n /** Fill the array width current page numbers */\n #fillArray(): Array<number | string> {\n const current: number = this.currentPageModel().pageNumber;\n const total: number = Math.ceil(this.currentPageModel().totalCount / this.currentPageModel().pageSize);\n const result: Array<number | string> = Array(total)\n .fill(0, 0, total)\n .map((x: number | string, i: number) => i + 1);\n\n if (total <= 6) {\n return result;\n } else {\n if (current < 3 || current > total - 2) {\n return result.slice(0, 3).concat(this.divider(), ...result.slice(total - 3, total));\n }\n\n if (current === 3) {\n return result.slice(0, 4).concat(this.divider(), ...result.slice(total - 2, total));\n }\n\n if (current === 4) {\n return result.slice(0, 5).concat(this.divider(), ...result.slice(total - 1, total));\n }\n\n if (current > 4 && current <= total - 4) {\n return result\n .slice(0, 1)\n .concat(this.divider(), current - 1, current, current + 1, this.divider(), ...result.slice(total - 1, total));\n }\n\n if (current === total - 3) {\n return result.slice(0, 1).concat(this.divider(), ...result.slice(total - 5, total));\n }\n\n if (current === total - 2) {\n return result.slice(0, 2).concat(this.divider(), ...result.slice(total - 4, total));\n }\n\n return [];\n }\n }\n\n /** Set 'isContentClipped' when content changed */\n #setMinContentFitWidth(): void {\n const currentContainerWidth: Nullable<number> = this.containerRef()?.nativeElement?.scrollWidth;\n\n if (currentContainerWidth && this.minContentFitWidth() && this.minContentFitWidth() < currentContainerWidth) {\n this.minContentFitWidth.set(currentContainerWidth);\n }\n }\n}\n","@if (currentPageModel().totalCount > pageSizes()[0]) {\n <div #containerRef rtBlock=\"pagination-container\" [rtMod]=\"{ clipped: isContentClipped() && !isMobile() }\">\n <div rtBlock=\"paging\" [rtMod]=\"{ clipped: isContentClipped() && !isMobile() }\">\n <div\n rtElem=\"item\"\n role=\"button\"\n tabindex=\"0\"\n [rtMod]=\"{ enabled: currentPageModel()?.hasPrev }\"\n [class.c-pagination__paging-item--disabled]=\"!currentPageModel().hasPrev\"\n (click)=\"onChangePageNumber(currentPageModel().pageNumber - 1)\"\n (keydown)=\"onChangePageNumber(currentPageModel().pageNumber - 1)\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15.5 8.5H0.5\" stroke=\"currentColor\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M5.5 3.5L0.5 8.5L5.5 13.5\"\n stroke=\"currentColor\"\n stroke-miterlimit=\"10\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n\n @if (isMobile()) {\n <div rtElem=\"item\" rtMod=\"active\" role=\"button\" tabindex=\"1\">\n <span rtElem=\"item-label\">{{ currentPageModel().pageNumber }}</span>\n </div>\n } @else {\n @for (number of numbers(); track $index) {\n <div\n rtElem=\"item\"\n role=\"button\"\n tabindex=\"1\"\n [rtMod]=\"{\n active: currentPageModel().pageNumber === number,\n divider: number === divider(),\n enabled: number !== divider() && currentPageModel().pageNumber !== number,\n }\"\n (click)=\"onChangePageNumber(number)\"\n (keydown)=\"onChangePageNumber(number)\">\n <span rtElem=\"item-label\">{{ number }}</span>\n </div>\n }\n }\n\n <div\n rtElem=\"item\"\n role=\"button\"\n tabindex=\"3\"\n [rtMod]=\"{ enabled: currentPageModel()?.hasNext }\"\n (click)=\"onChangePageNumber(currentPageModel().pageNumber + 1)\"\n (keydown)=\"onChangePageNumber(currentPageModel().pageNumber + 1)\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0.5 8.5H15.5\" stroke=\"currentColor\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M10.5 3.5L15.5 8.5L10.5 13.5\"\n stroke=\"currentColor\"\n stroke-miterlimit=\"10\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n </div>\n\n <div rtBlock=\"page-size-toggle\" [rtMod]=\"{ clipped: isContentClipped() && !isMobile() }\">\n @if (!isMobile()) {\n <div rtElem=\"title\">Items per page:</div>\n }\n\n <select rtElem=\"selector\" [formControl]=\"control\">\n @for (size of pageSizes(); track $index) {\n <option [value]=\"size\">{{ size }}</option>\n }\n </select>\n </div>\n </div>\n}\n","export const RTUI_TABLE_STOP_ROW_CLICK_ATTRIBUTE: string = 'rtui-table-stop-row-click-attribute';\n","import { FormControl } from '@angular/forms';\n\nimport { FilterOperatorType, SortModel } from '@rt-tools/utils';\n\nexport enum TABLE_COLUMN_TYPES_ENUM {\n DATE = 'date',\n PERCENT = 'percent',\n ARRAY = 'array',\n BOOLEAN = 'boolean',\n TEXT = 'text',\n CURRENCY = 'currency',\n CUSTOM = 'custom',\n}\n\nexport enum TABLE_COLUMN_FILTER_TYPES_ENUM {\n TEXT = 'text',\n NUMBER = 'number',\n SELECT = 'select',\n DATE = 'date',\n}\n\nexport enum TEXT_CELL_COLOR_ENUM {\n NEUTRAL = 'neutral',\n DANGER = 'danger',\n WARNING = 'warning',\n SUCCESS = 'success',\n EMPTY = 'empty',\n}\n\nexport namespace ITable {\n export type TextCellColor =\n | TEXT_CELL_COLOR_ENUM.NEUTRAL\n | TEXT_CELL_COLOR_ENUM.DANGER\n | TEXT_CELL_COLOR_ENUM.WARNING\n | TEXT_CELL_COLOR_ENUM.SUCCESS\n | TEXT_CELL_COLOR_ENUM.EMPTY;\n\n export type Type =\n | TABLE_COLUMN_TYPES_ENUM.DATE\n | TABLE_COLUMN_TYPES_ENUM.PERCENT\n | TABLE_COLUMN_TYPES_ENUM.ARRAY\n | TABLE_COLUMN_TYPES_ENUM.BOOLEAN\n | TABLE_COLUMN_TYPES_ENUM.TEXT\n | TABLE_COLUMN_TYPES_ENUM.CURRENCY\n | TABLE_COLUMN_TYPES_ENUM.CUSTOM;\n\n export type FilterType =\n | TABLE_COLUMN_FILTER_TYPES_ENUM.TEXT\n | TABLE_COLUMN_FILTER_TYPES_ENUM.NUMBER\n | TABLE_COLUMN_FILTER_TYPES_ENUM.SELECT\n | TABLE_COLUMN_FILTER_TYPES_ENUM.DATE;\n\n export interface Column<T = Record<string, unknown>> extends Record<string, unknown> {\n align: 'right' | 'left' | 'center';\n propName: keyof T;\n type: Type;\n copyable: boolean;\n header: Header;\n\n sorting?: SortModel<NonNullable<Extract<keyof T, string>>>;\n filtering?: boolean;\n filteringMultiple?: boolean;\n copyBtnAlign?: 'right' | 'left';\n\n width?: string;\n minWidth?: string;\n\n icon?: Icon;\n iconTransform?: (value: T[keyof T]) => string;\n href?: string;\n className?: string;\n tooltip?: string;\n transform?: (value: T[keyof T]) => string | number;\n\n // Additional properties for filters\n filterType?: FilterType;\n defaultFilterOperator?: FilterOperatorType;\n filterOperators?: FilterOperatorType[];\n filterSelectOptions?: string[];\n\n // Additional properties for table configuration service\n displayName?: string;\n orderIndex?: number;\n hidden?: boolean;\n fixed?: boolean;\n }\n\n export interface ColumnFilter {\n propName: string;\n value: string;\n }\n\n export interface Header {\n align: 'right' | 'left' | 'center';\n label: string;\n\n className?: string;\n tooltip?: string;\n icon?: Icon;\n }\n\n export interface Icon {\n glyph: string;\n\n color?: TextCellColor;\n tooltip?: string;\n visible?: boolean;\n placement?: 'left' | 'right';\n outlined?: boolean;\n }\n\n export namespace Config {\n export interface Data<T> {\n isVerticalScrollbarShown: boolean;\n isHorizontalScrollbarShown: boolean;\n columns: Array<ITable.Column<T>>;\n }\n\n export interface Form<T> {\n isVerticalScrollbarShown: FormControl<boolean>;\n isHorizontalScrollbarShown: FormControl<boolean>;\n columns: FormControl<(keyof T)[]>;\n }\n }\n}\n","import { InjectionToken, Signal, TemplateRef, WritableSignal } from '@angular/core';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { Nullable } from '@rt-tools/core';\nimport { FilterModel, SortModel } from '@rt-tools/utils';\nimport { ITable } from './table-column.interface';\n\nexport const RTUI_TABLE_COMPONENT_TOKEN: InjectionToken<IRtuiTable<Record<string, unknown>, string, string>> = new InjectionToken<\n IRtuiTable<Record<string, unknown>, Extract<keyof Record<string, unknown>, string>, Extract<keyof Record<string, unknown>, string>>\n>('RtuiTableComponent');\n\nexport interface IRtuiTable<\n ENTITY_TYPE extends Record<string, unknown>,\n SORT_PROPERTY extends Extract<keyof ENTITY_TYPE, string>,\n KEY extends Extract<keyof ENTITY_TYPE, string>,\n> {\n columns: Signal<Array<ITable.Column<ENTITY_TYPE>>>;\n customCellsTpl: Signal<\n Nullable<{\n getTemplateByPropName(propName: keyof ENTITY_TYPE): TemplateRef<{ $implicit: ENTITY_TYPE }>;\n }>\n >;\n rowActionsTpl: Signal<Nullable<TemplateRef<{ $implicit: ENTITY_TYPE }>>>;\n additionalRowActionsTpl: Signal<Nullable<TemplateRef<unknown>>>;\n\n isMobile: Signal<boolean>;\n isTableRowsClickable: Signal<boolean>;\n keyExp: Signal<NonNullable<KEY>>;\n entities: Signal<ENTITY_TYPE[]>;\n currentSortModel: Signal<Nullable<SortModel<SORT_PROPERTY>>>;\n appearance: Signal<MatFormFieldAppearance>;\n filterAppearance: Signal<MatFormFieldAppearance>;\n filterModel: Signal<FilterModel<KEY>[]>;\n isFiltersShown: Signal<boolean>;\n selectedEntitiesIds: WritableSignal<ENTITY_TYPE[KEY][]>;\n isPageEntitiesSelected: WritableSignal<boolean>;\n isPageEntitiesIndeterminate: WritableSignal<boolean>;\n isMultiSelect: WritableSignal<boolean>;\n isSelectorsColumnShown: WritableSignal<boolean>;\n isSelectorsColumnDisabled: WritableSignal<boolean>;\n activeRowIndex: WritableSignal<Nullable<number>>;\n\n onSortChange(sortModel: SortModel): void;\n onFilterChange(filterModel: FilterModel<KEY>[]): void;\n onMenuOpen(index: number): void;\n onMenuClose(): void;\n onRowClick(row: ENTITY_TYPE, event: MouseEvent): void;\n onRowDoubleClick(row: ENTITY_TYPE): void;\n onToggleEntity(entity: ENTITY_TYPE, checked: boolean): void;\n onTogglePageEntities(checked: boolean): void;\n}\n","import { DestroyRef, Injectable, Signal, WritableSignal, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { take } from 'rxjs/operators';\n\nimport { IDBStorageService, Nullable } from '@rt-tools/core';\nimport { areArraysEqual } from '@rt-tools/utils';\nimport { ITable } from './index';\n\n@Injectable()\nexport class RtTableConfigService<ENTITY_TYPE> {\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n readonly #iDBStorageService: IDBStorageService<{\n isVerticalScrollbarShown: boolean;\n isHorizontalScrollbarShown: boolean;\n columns: Array<Partial<ITable.Column<ENTITY_TYPE>>>;\n }> = inject(IDBStorageService);\n\n #tableConfig: WritableSignal<ITable.Config.Data<ENTITY_TYPE>> = signal({\n isVerticalScrollbarShown: false,\n isHorizontalScrollbarShown: false,\n columns: [],\n });\n public readonly tableConfig: Signal<ITable.Config.Data<ENTITY_TYPE>> = this.#tableConfig.asReadonly();\n\n public initConfig(storageKey: string, config: Array<ITable.Column<ENTITY_TYPE>>): void {\n this.#iDBStorageService\n .get(storageKey)\n .pipe(take(1), takeUntilDestroyed(this.#destroyRef))\n .subscribe(\n (\n savedConfig: Nullable<{\n isVerticalScrollbarShown: boolean;\n isHorizontalScrollbarShown: boolean;\n columns: Array<Partial<ITable.Column<ENTITY_TYPE>>>;\n }>\n ) => {\n if (savedConfig?.columns && this.#checkIsSavedConfigConsistent(config, savedConfig.columns)) {\n const updatedColumns: Array<ITable.Column<ENTITY_TYPE> & { orderIndex: number }> = savedConfig?.columns.map(\n (el: Partial<ITable.Column<ENTITY_TYPE> & { orderIndex: number }>) => {\n const oldConfigIem: Nullable<ITable.Column<ENTITY_TYPE>> = config.find(\n (item: ITable.Column<ENTITY_TYPE>) => el.propName === item.propName\n );\n return {\n ...(oldConfigIem as ITable.Column<ENTITY_TYPE>),\n displayName: oldConfigIem?.header?.label?.length ? oldConfigIem.header.label : el?.propName?.toString(),\n propName: el.propName as keyof ENTITY_TYPE,\n width: el?.width ?? 'auto',\n orderIndex: el?.orderIndex ?? 0,\n hidden: !!el?.hidden,\n fixed: !!el?.fixed,\n };\n }\n );\n this.#tableConfig.set({\n isVerticalScrollbarShown: !!savedConfig?.isVerticalScrollbarShown,\n isHorizontalScrollbarShown: !!savedConfig?.isHorizontalScrollbarShown,\n columns: updatedColumns,\n });\n } else {\n this.#tableConfig.set({\n isVerticalScrollbarShown: false,\n isHorizontalScrollbarShown: true,\n columns: config.map((el: ITable.Column<ENTITY_TYPE>, index: number) => ({\n ...el,\n orderIndex: index,\n displayName: el?.header?.label?.length ? el.header.label : el.propName.toString(),\n })),\n });\n }\n }\n );\n }\n\n public updateConfig(storageKey: string, config: ITable.Config.Data<ENTITY_TYPE>): void {\n const idbConfigColumns: Array<Partial<ITable.Column<ENTITY_TYPE>>> = config.columns.map((el: ITable.Column<ENTITY_TYPE>) => ({\n displayName: el.header.label ?? el.propName.toString(),\n propName: el.propName,\n width: el?.width ?? 'auto',\n orderIndex: el?.orderIndex ?? 0,\n hidden: !!el?.hidden,\n fixed: !!el?.fixed,\n }));\n this.#iDBStorageService\n .set(storageKey, { ...config, columns: idbConfigColumns })\n .pipe(take(1), takeUntilDestroyed(this.#destroyRef))\n .subscribe();\n this.#tableConfig.set(config);\n }\n\n public deleteConfig(storageKey: string): void {\n this.#iDBStorageService.remove(storageKey).pipe(take(1), takeUntilDestroyed(this.#destroyRef)).subscribe();\n }\n\n #checkIsSavedConfigConsistent(\n defaultConfig: Array<ITable.Column<ENTITY_TYPE>>,\n savedConfig: Array<Partial<ITable.Column<ENTITY_TYPE>>>\n ): boolean {\n return (\n !!defaultConfig?.length &&\n !!savedConfig?.length &&\n defaultConfig.length === savedConfig.length &&\n areArraysEqual(\n defaultConfig.map((el: ITable.Column<ENTITY_TYPE>) => el.propName).sort(),\n savedConfig.map((el: Partial<ITable.Column<ENTITY_TYPE>>) => el.propName).sort()\n )\n );\n }\n}\n","import { booleanAttribute, Directive, input, InputSignalWithTransform, signal, WritableSignal } from '@angular/core';\n\nimport { transformArrayInput } from '@rt-tools/utils';\n\n@Directive()\nexport class RtCommonSelectorsDirective<ENTITY_TYPE extends Record<string, unknown>, KEY extends Extract<keyof ENTITY_TYPE, string>> {\n /** Indicates is multiselect available */\n public isMultiSelect: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is 'Select all' checkbox shown */\n public isSelectorColumnShown: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is selectors column disabled */\n public isSelectorsColumnDisabled: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n /** Selected entities Ids on init */\n public selectedEntitiesKeys: InputSignalWithTransform<ENTITY_TYPE[KEY][], ENTITY_TYPE[KEY][]> = input<\n ENTITY_TYPE[KEY][],\n ENTITY_TYPE[KEY][]\n >([], {\n transform: (value: ENTITY_TYPE[KEY][]) => transformArrayInput(value),\n });\n\n /** Key of ENTITY_TYPE for compare entities */\n public readonly keyExp: WritableSignal<NonNullable<KEY>> = signal('id' as NonNullable<KEY>);\n /** Current list of entities */\n public readonly entities: WritableSignal<ENTITY_TYPE[]> = signal([]);\n\n /** Add page entities to list exclude duplicates */\n public addPageEntitiesToListExcludeDuplicates(list: ENTITY_TYPE[]): ENTITY_TYPE[] {\n return [...list, ...this.entities()].filter((el: ENTITY_TYPE, index: number, self: ENTITY_TYPE[]) => {\n return index === self.findIndex((_: ENTITY_TYPE) => _[this.keyExp()] === el[this.keyExp()]);\n });\n }\n\n /** Remove page entities from list */\n public removePageEntitiesFromList(list: ENTITY_TYPE[]): ENTITY_TYPE[] {\n const removedEntitiesIds: ENTITY_TYPE[KEY][] = this.entities().map((el: ENTITY_TYPE) => el[this.keyExp()]);\n return list.filter((el: ENTITY_TYPE) => !removedEntitiesIds.includes(el[this.keyExp()]));\n }\n\n /** Check is one of page entities exist in selected entities */\n public isOneExistOnPage(selectedEntitiesIds: ENTITY_TYPE[KEY][]): boolean {\n return !!this.entities().find((el: ENTITY_TYPE) => selectedEntitiesIds.includes(el[this.keyExp()]));\n }\n\n /** Check is all page entities exist in selected entities */\n public isAllExistOnPage(selectedEntitiesIds: ENTITY_TYPE[KEY][]): boolean {\n return !this.entities().find((el: ENTITY_TYPE) => !selectedEntitiesIds.includes(el[this.keyExp()]));\n }\n}\n","import {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n inject,\n Injector,\n input,\n InputSignalWithTransform,\n OnInit,\n Signal,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { filter, switchMap, take } from 'rxjs/operators';\n\nimport { RtuiDynamicListComponent } from '../dynamic-list.component';\nimport { RtCommonSelectorsDirective } from './common-selectors.directive';\n\n@Directive({\n selector: 'rtui-dynamic-list[rtDynamicListSelectorsDirective]',\n})\nexport class RtDynamicListSelectorsDirective<\n ENTITY_TYPE extends Record<string, unknown>,\n SORT_PROPERTY extends Extract<keyof ENTITY_TYPE, string>,\n KEY extends Extract<keyof ENTITY_TYPE, string>,\n>\n extends RtCommonSelectorsDirective<ENTITY_TYPE, KEY>\n implements OnInit\n{\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n readonly #injector: Injector = inject(Injector);\n readonly #dynamicListRef: RtuiDynamicListComponent<ENTITY_TYPE, SORT_PROPERTY, KEY> =\n inject<RtuiDynamicListComponent<ENTITY_TYPE, SORT_PROPERTY, KEY>>(RtuiDynamicListComponent);\n\n /** Indicates is multiselect extended mod available (use selected and excluded lists) */\n public isMultiSelectExtendedMod: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is 'Select all' checkbox shown */\n public isSelectAllSelectorShown: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(true, {\n transform: booleanAttribute,\n });\n\n /** List of selected entities for processing */\n #selectedEntities: WritableSignal<ENTITY_TYPE[]> = signal([]);\n /** List of excluded entities for processing */\n #excludedEntities: WritableSignal<ENTITY_TYPE[]> = signal([]);\n /** Indicates is 'Select all' checkbox selected for processing */\n #isAllEntitiesSelected: WritableSignal<boolean> = signal(false);\n /** Indicates is all page entities checkbox selected for processing */\n #isPageEntitiesSelected: WritableSignal<boolean> = signal(false);\n /** Indicates is page entities checkbox indeterminate for processing */\n #isPageEntitiesIndeterminate: WritableSignal<boolean> = signal(false);\n /** Indicates is multi select extended mod enabled for processing */\n #isMultiSelectExtendedModEnabled: WritableSignal<boolean> = signal(false);\n\n /** List of selected entities */\n public readonly selectedEntities: Signal<ENTITY_TYPE[]> = this.#selectedEntities.asReadonly();\n /** List of excluded entities */\n public readonly excludedEntities: Signal<ENTITY_TYPE[]> = this.#excludedEntities.asReadonly();\n /** List of selected entities ids */\n public readonly selectedEntitiesIds: Signal<ENTITY_TYPE[KEY][]> = computed(() => {\n return this.selectedEntities().map((el: ENTITY_TYPE) => el[this.keyExp()]);\n });\n /** List of excluded entities ids */\n public readonly excludedEntitiesIds: Signal<ENTITY_TYPE[KEY][]> = computed(() => {\n return this.excludedEntities().map((el: ENTITY_TYPE) => el[this.keyExp()]);\n });\n /** Indicates is 'Select All' checkbox selected */\n public readonly isAllEntitiesSelected: Signal<boolean> = this.#isAllEntitiesSelected.asReadonly();\n /** Indicates is all page entities checkbox selected */\n public readonly isPageEntitiesSelected: Signal<boolean> = this.#isPageEntitiesSelected.asReadonly();\n /** Indicates is page entities checkbox indeterminate */\n public readonly isPageEntitiesIndeterminate: Signal<boolean> = this.#isPageEntitiesIndeterminate.asReadonly();\n /** Indicates is multi select extended mod enabled */\n public readonly isMultiSelectExtendedModEnabled: Signal<boolean> = this.#isMultiSelectExtendedModEnabled.asReadonly();\n\n public ngOnInit(): void {\n /** Set current key */\n this.keyExp.set(this.#dynamicListRef.keyExp());\n\n /** Set current, selected and excluded entities lists and update selectors states */\n toObservable(this.#dynamicListRef?.entities, { injector: this.#injector })\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe((list: ENTITY_TYPE[]) => {\n this.entities.set(list);\n\n if (this.isMultiSelectExtendedModEnabled()) {\n this.#selectedEntities.update((selected: ENTITY_TYPE[]) => {\n return this.addPageEntitiesToListExcludeDuplicates(selected).filter(\n (el: ENTITY_TYPE) => !this.excludedEntitiesIds().includes(el[this.keyExp()])\n );\n });\n this.#isAllEntitiesSelected.set(!this.excludedEntities().length);\n }\n\n this.setExistingEntitiesState();\n });\n\n /** Set initial selected entities */\n toObservable(this.entities, { injector: this.#injector })\n .pipe(\n filter((list: ENTITY_TYPE[]) => !!list?.length),\n take(1),\n switchMap(() =>\n toObservable(this.selectedEntitiesKeys, { injector: this.#injector }).pipe(\n filter((list: ENTITY_TYPE[KEY][]) => !!list?.length),\n take(1)\n )\n ),\n takeUntilDestroyed(this.#destroyRef)\n )\n .subscribe(() => {\n this.#selectedEntities.set(\n this.entities().filter((el: ENTITY_TYPE) => this.selectedEntitiesKeys().includes(el[this.keyExp()]))\n );\n this.setExistingEntitiesState();\n });\n\n /** Update selectors states and list of selected entities ids in children components */\n effect(\n () => {\n if (this.#dynamicListRef?.tableContainerTpl() && this.#dynamicListRef?.tableTpl() && this.selectedEntities()) {\n this.#dynamicListRef?.tableContainerTpl()?.isAllEntitiesSelected.set(this.isAllEntitiesSelected());\n this.#dynamicListRef?.tableContainerTpl()?.isAllEntitiesIndeterminate.set(!!this.selectedEntities()?.length);\n this.#dynamicListRef?.tableContainerTpl()?.selectedEntitiesCount.set(this.selectedEntities()?.length);\n this.#dynamicListRef?.tableTpl()?.selectedEntitiesIds.set(this.selectedEntitiesIds());\n this.#dynamicListRef?.tableTpl()?.isPageEntitiesSelected.set(this.isPageEntitiesSelected());\n this.#dynamicListRef?.tableTpl()?.isPageEntitiesIndeterminate.set(this.isPageEntitiesIndeterminate());\n }\n },\n { injector: this.#injector }\n );\n\n /** Table container config */\n effect(\n () => {\n /** Set 'onToggleAllEntities' method in TableContainerComponent */\n if (this.#dynamicListRef.tableContainerTpl()?.onToggleAllEntities) {\n this.#dynamicListRef.tableContainerTpl()!.onToggleAllEntities = (checked: boolean): void =>\n this.toggleAllEntities(checked);\n }\n },\n { injector: this.#injector }\n );\n effect(\n () => {\n /** Set 'isMultiSelect' indicator state in TableContainerComponent */\n if (\n this.#dynamicListRef?.tableContainerTpl() &&\n this.#dynamicListRef?.tableContainerTpl()?.isMultiSelect() !== this.isMultiSelect()\n ) {\n this.#dynamicListRef?.tableContainerTpl()?.isMultiSelect.set(this.isMultiSelect());\n }\n },\n { injector: this.#injector }\n );\n effect(\n () => {\n /** Set 'isSelectAllSelectorShown' indicator state in TableContainerComponent */\n if (\n this.#dynamicListRef?.tableContainerTpl() &&\n this.#dynamicListRef?.tableContainerTpl()?.isSelectAllSelectorShown() !== this.isSelectAllSelectorShown()\n ) {\n this.#dynamicListRef?.tableContainerTpl()?.isSelectAllSelectorShown.set(this.isSelectAllSelectorShown());\n }\n },\n { injector: this.#injector }\n );\n\n effect(\n () => {\n /** Set 'isSelectAllSelectorDisabled' indicator state in TableContainerComponent */\n if (\n this.#dynamicListRef?.tableContainerTpl() &&\n this.#dynamicListRef?.tableContainerTpl()?.isSelectAllSelectorDisabled() !== this.isSelectorsColumnDisabled()\n ) {\n this.#dynamicListRef?.tableContainerTpl()?.isSelectAllSelectorDisabled.set(this.isSelectorsColumnDisabled());\n }\n },\n { injector: this.#injector }\n );\n\n /** Table config */\n effect(\n () => {\n /** Set 'isMultiSelect' indicator state in TableComponent */\n if (this.#dynamicListRef?.tableTpl()?.isMultiSelect() !== this.isMultiSelect()) {\n this.#dynamicListRef?.tableTpl()?.isMultiSelect.set(this.isMultiSelect());\n }\n },\n { injector: this.#injector }\n );\n effect(\n () => {\n /** Set 'onToggleExistingEntities' and 'onToggleEntity' methods and 'isSelectorsColumnShown' indicator state in TableComponent */\n if (this.#dynamicListRef.tableTpl()) {\n this.#dynamicListRef.tableTpl()?.isSelectorsColumnShown.set(true);\n\n this.#dynamicListRef.tableTpl()!.onToggleEntity = (entity: ENTITY_TYPE, checked: boolean): void =>\n this.toggleEntity(entity, checked);\n\n this.#dynamicListRef.tableTpl()!.onTogglePageEntities = (checked: boolean): void => this.togglePageEntities(checked);\n }\n },\n { injector: this.#injector }\n );\n effect(\n () => {\n /** Set 'isSelectorsColumnDisabled' indicator state in TableComponent */\n if (\n this.#dynamicListRef?.tableTpl() &&\n this.#dynamicListRef?.tableTpl()?.isSelectorsColumnDisabled() !== this.isSelectorsColumnDisabled()\n ) {\n this.#dynamicListRef?.tableTpl()?.isSelectorsColumnDisabled.set(this.isSelectorsColumnDisabled());\n }\n },\n { injector: this.#injector }\n );\n }\n\n /** Change selected entities list and 'isAllEntitiesSelected' indicator state */\n public toggleAllEntities(checked: boolean): void {\n this.#isAllEntitiesSelected.set(checked);\n\n if (this.isMultiSelectExtendedMod()) {\n this.#isMultiSelectExtendedModEnabled.set(checked);\n }\n\n if (checked) {\n this.#selectedEntities.set(this.entities());\n this.#isPageEntitiesSelected.set(true);\n this.#isPageEntitiesIndeterminate.set(true);\n } else {\n this.#selectedEntities.set([]);\n this.#isPageEntitiesSelected.set(false);\n this.#isPageEntitiesIndeterminate.set(false);\n }\n }\n\n /** Change selected and excluded lists, set 'isPageEntitiesSelected' and 'isAllEntitiesSelected' indicators states */\n public togglePageEntities(checked: boolean): void {\n /** Set 'isPageEntitiesSelected' indicator state */\n this.#isPageEntitiesSelected.set(checked);\n\n if (checked) {\n /** Add page entities to selected list */\n this.#selectedEntities.update((selected: ENTITY_TYPE[]) => this.addPageEntitiesToListExcludeDuplicates(selected));\n\n /** Remove page entities from excluded list */\n if (this.isMultiSelectExtendedModEnabled()) {\n this.#excludedEntities.update((selected: ENTITY_TYPE[]) => this.removePageEntitiesFromList(selected));\n\n /** Set 'isAllEntitiesSelected' indicator state */\n this.#isAllEntitiesSelected.set(!this.excludedEntities()?.length);\n }\n } else {\n /** Remove page entities from selected list */\n this.#selectedEntities.update((selected: ENTITY_TYPE[]) => this.removePageEntitiesFromList(selected));\n\n /** Add page entities to excluded list */\n if (this.isMultiSelectExtendedModEnabled()) {\n this.#excludedEntities.update((selected: ENTITY_TYPE[]) => this.addPageEntitiesToListExcludeDuplicates(selected));\n }\n /** Set 'isAllEntitiesSelected' indicator state */\n this.#isAllEntitiesSelected.set(false);\n }\n\n /** Set 'isPageEntitiesIndeterminate' indicator state */\n this.#isPageEntitiesIndeterminate.set(this.isOneExistOnPage(this.selectedEntitiesIds()));\n }\n\n /** Change selected and excluded lists and set is existing selected and is all selected states */\n public toggleEntity(entity: ENTITY_TYPE, checked: boolean): void {\n /** Set one entity in selected list if not multi select mod */\n if (!this.isMultiSelect()) {\n this.#selectedEntities.set([entity]);\n return;\n }\n\n const updatedSelectedList: ENTITY_TYPE[] = [];\n const updatedExcludedList: ENTITY_TYPE[] = [];\n\n /** Fill updatedSelectedList */\n this.selectedEntities().forEach((el: ENTITY_TYPE) => updatedSelectedList.push(el));\n\n /** Fill updatedExcludedList */\n if (this.isMultiSelectExtendedModEnabled()) {\n this.excludedEntities().forEach((el: ENTITY_TYPE) => updatedExcludedList.push(el));\n }\n\n if (checked) {\n /** Add entity to selected list */\n updatedSelectedList.push(entity);\n\n /** Remove entity from excluded list */\n if (this.isMultiSelectExtendedModEnabled()) {\n const index: number = this.excludedEntitiesIds().indexOf(entity[this.keyExp()]);\n updatedExcludedList.splice(index, 1);\n }\n } else {\n /** Remove entity from selected list */\n const index: number = this.selectedEntitiesIds().indexOf(entity[this.keyExp()]);\n updatedSelectedList.splice(index, 1);\n\n /** Add entity to excluded list */\n if (this.isMultiSelectExtendedModEnabled()) {\n updatedExcludedList.push(entity);\n }\n\n /** Set 'isAllEntitiesSelected' indicator state */\n this.#isAllEntitiesSelected.set(false);\n }\n\n /** Change selected list */\n this.#selectedEntities.set(updatedSelectedList);\n\n /** Change excluded list */\n if (this.isMultiSelectExtendedModEnabled()) {\n this.#excludedEntities.set(updatedExcludedList);\n\n /** Set 'isAllEntitiesSelected' indicator state */\n this.#isAllEntitiesSelected.set(!this.excludedEntities()?.length);\n }\n\n /** Set 'isPageEntitiesSelected' and 'isPageEntitiesIndeterminate' indicators states */\n if (updatedSelectedList?.length) {\n this.#isPageEntitiesSelected.set(this.isAllExistOnPage(this.selectedEntitiesIds()));\n this.#isPageEntitiesIndeterminate.set(true);\n } else {\n this.#isPageEntitiesSelected.set(false);\n this.#isPageEntitiesIndeterminate.set(this.isOneExistOnPage(this.selectedEntitiesIds()));\n }\n }\n\n /** Clear selected list */\n public clearSelectedList(): void {\n this.#selectedEntities.set([]);\n this.#isPageEntitiesSelected.set(false);\n this.#isPageEntitiesIndeterminate.set(false);\n this.#isAllEntitiesSelected.set(false);\n }\n\n /** Clear excluded list */\n public clearExcludedList(): void {\n this.#excludedEntities.set([]);\n }\n\n /** Set is existing selected and indeterminate state */\n public setExistingEntitiesState(): void {\n this.#isPageEntitiesSelected.set(this.isAllExistOnPage(this.selectedEntitiesIds()));\n this.#isPageEntitiesIndeterminate.set(this.isOneExistOnPage(this.selectedEntitiesIds()));\n }\n}\n","import { computed, DestroyRef, Directive, effect, inject, Injector, OnInit, Signal, signal, WritableSignal } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { filter, switchMap, take } from 'rxjs/operators';\n\nimport { RtuiTableComponent } from '../components';\nimport { RtCommonSelectorsDirective } from './common-selectors.directive';\n\n@Directive({\n selector: 'rtui-table[rtTableSelectorsDirective]',\n})\nexport class RtTableSelectorsDirective<\n ENTITY_TYPE extends Record<string, unknown>,\n SORT_PROPERTY extends Extract<keyof ENTITY_TYPE, string>,\n KEY extends Extract<keyof ENTITY_TYPE, string>,\n>\n extends RtCommonSelectorsDirective<ENTITY_TYPE, KEY>\n implements OnInit\n{\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n readonly #injector: Injector = inject(Injector);\n readonly #tableRef: RtuiTableComponent<ENTITY_TYPE, SORT_PROPERTY, KEY> =\n inject<RtuiTableComponent<ENTITY_TYPE, SORT_PROPERTY, KEY>>(RtuiTableComponent);\n\n /** List of selected entities for processing */\n #selectedEntities: WritableSignal<ENTITY_TYPE[]> = signal([]);\n /** List of excluded entities for processing */\n /** Indicates is all page entities checkbox selected for processing */\n #isPageEntitiesSelected: WritableSignal<boolean> = signal(false);\n /** Indicates is page entities checkbox indeterminate for processing */\n #isPageEntitiesIndeterminate: WritableSignal<boolean> = signal(false);\n\n /** List of selected entities */\n public readonly selectedEntities: Signal<ENTITY_TYPE[]> = this.#selectedEntities.asReadonly();\n /** List of selected entities ids */\n public readonly selectedEntitiesIds: Signal<ENTITY_TYPE[KEY][]> = computed(() => {\n return this.selectedEntities().map((el: ENTITY_TYPE) => el[this.keyExp()]);\n });\n /** Indicates is all page entities checkbox selected */\n public readonly isPageEntitiesSelected: Signal<boolean> = this.#isPageEntitiesSelected.asReadonly();\n /** Indicates is page entities checkbox indeterminate */\n public readonly isPageEntitiesIndeterminate: Signal<boolean> = this.#isPageEntitiesIndeterminate.asReadonly();\n\n public ngOnInit(): void {\n /** Set current key */\n this.keyExp.set(this.#tableRef.keyExp());\n\n /** Set current, selected and excluded entities lists and update selectors states */\n toObservable(this.#tableRef?.entities, { injector: this.#injector })\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe((list: ENTITY_TYPE[]) => {\n this.entities.set(list);\n });\n\n /** Set initial selected entities */\n toObservable(this.entities, { injector: this.#injector })\n .pipe(\n filter((list: ENTITY_TYPE[]) => !!list?.length),\n take(1),\n switchMap(() =>\n toObservable(this.selectedEntitiesKeys, { injector: this.#injector }).pipe(\n filter((list: ENTITY_TYPE[KEY][]) => !!list?.length),\n take(1)\n )\n ),\n takeUntilDestroyed(this.#destroyRef)\n )\n .subscribe(() => {\n this.#selectedEntities.set(\n this.entities().filter((el: ENTITY_TYPE) => this.selectedEntitiesKeys().includes(el[this.keyExp()]))\n );\n this.setExistingEntitiesState();\n });\n\n /** Update selectors states and list of selected entities ids in children components */\n effect(\n () => {\n if (this.#tableRef && this.selectedEntities()) {\n this.#tableRef?.selectedEntitiesIds.set(this.selectedEntitiesIds());\n this.#tableRef?.isPageEntitiesSelected.set(this.isPageEntitiesSelected());\n this.#tableRef?.isPageEntitiesIndeterminate.set(this.isPageEntitiesIndeterminate());\n }\n },\n { injector: this.#injector }\n );\n\n /** Table config */\n effect(\n () => {\n /** Set 'isMultiSelect' indicator state in TableComponent */\n if (this.#tableRef?.isMultiSelect() !== this.isMultiSelect()) {\n this.#tableRef?.isMultiSelect.set(this.isMultiSelect());\n }\n },\n { injector: this.#injector }\n );\n effect(\n () => {\n /** Set 'onToggleExistingEntities' and 'onToggleEntity' methods and 'isSelectorsColumnShown' indicator state in TableComponent */\n if (this.#tableRef) {\n this.#tableRef?.isSelectorsColumnShown.set(this.isSelectorColumnShown());\n this.#tableRef.onToggleEntity = (entity: ENTITY_TYPE, checked: boolean): void => this.toggleEntity(entity, checked);\n this.#tableRef.onTogglePageEntities = (checked: boolean): void => this.togglePageEntities(checked);\n }\n },\n { injector: this.#injector }\n );\n effect(\n () => {\n /** Set 'isSelectorsColumnDisabled' indicator state in TableComponent */\n if (this.#tableRef?.isSelectorsColumnDisabled() !== this.isSelectorsColumnDisabled()) {\n this.#tableRef?.isSelectorsColumnDisabled.set(this.isSelectorsColumnDisabled());\n }\n },\n { injector: this.#injector }\n );\n }\n\n /** Change selected and excluded lists, set 'isPageEntitiesSelected' and 'isAllEntitiesSelected' indicators states */\n public togglePageEntities(checked: boolean): void {\n /** Set 'isPageEntitiesSelected' indicator state */\n this.#isPageEntitiesSelected.set(checked);\n\n if (checked) {\n /** Add page entities to selected list */\n this.#selectedEntities.update((selected: ENTITY_TYPE[]) => this.addPageEntitiesToListExcludeDuplicates(selected));\n } else {\n /** Remove page entities from selected list */\n this.#selectedEntities.update((selected: ENTITY_TYPE[]) => this.removePageEntitiesFromList(selected));\n }\n\n /** Set 'isPageEntitiesIndeterminate' indicator state */\n this.#isPageEntitiesIndeterminate.set(this.isOneExistOnPage(this.selectedEntitiesIds()));\n }\n\n /** Change selected and excluded lists and set is existing selected and is all selected states */\n public toggleEntity(entity: ENTITY_TYPE, checked: boolean): void {\n /** Set one entity in selected list if not multi select mod */\n if (!this.isMultiSelect()) {\n this.#selectedEntities.set([entity]);\n return;\n }\n\n const updatedSelectedList: ENTITY_TYPE[] = [];\n\n /** Fill updatedSelectedList */\n this.selectedEntities().forEach((el: ENTITY_TYPE) => updatedSelectedList.push(el));\n\n if (checked) {\n /** Add entity to selected list */\n updatedSelectedList.push(entity);\n } else {\n /** Remove entity from selected list */\n const index: number = this.selectedEntitiesIds().indexOf(entity[this.keyExp()]);\n updatedSelectedList.splice(index, 1);\n }\n\n /** Change selected list */\n this.#selectedEntities.set(updatedSelectedList);\n\n /** Set 'isPageEntitiesSelected' and 'isPageEntitiesIndeterminate' indicators states */\n if (updatedSelectedList?.length) {\n this.#isPageEntitiesSelected.set(this.isAllExistOnPage(this.selectedEntitiesIds()));\n this.#isPageEntitiesIndeterminate.set(true);\n } else {\n this.#isPageEntitiesSelected.set(false);\n this.#isPageEntitiesIndeterminate.set(this.isOneExistOnPage(this.selectedEntitiesIds()));\n }\n }\n\n /** Clear selected list */\n public clearSelectedList(): void {\n this.#selectedEntities.set([]);\n this.#isPageEntitiesSelected.set(false);\n this.#isPageEntitiesIndeterminate.set(false);\n }\n\n /** Set is existing selected and indeterminate state */\n public setExistingEntitiesState(): void {\n this.#isPageEntitiesSelected.set(this.isAllExistOnPage(this.selectedEntitiesIds()));\n this.#isPageEntitiesIndeterminate.set(this.isOneExistOnPage(this.selectedEntitiesIds()));\n }\n}\n","// const\nexport * from './table-stop-row-click-attribute.const';\n\n// models\nexport * from './default-pagination';\nexport * from './table-column.interface';\nexport * from './table-component.interface';\n\n// services\nexport * from './table-config.service';\n\n// directives\nexport * from './dynamic-list-selectors.directive';\nexport * from './table-selectors.directive';\n","import { Clipboard } from '@angular/cdk/clipboard';\n\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n HostBinding,\n HostListener,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n Signal,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable } from '@rt-tools/core';\nimport { EmptyToDashPipe, isNumber, isString, RtHideTooltipDirective, RtIconOutlinedDirective } from '@rt-tools/utils';\nimport { ITable } from '../../util/table-column.interface';\n\n@Component({\n selector: 'rtui-table-base-cell',\n templateUrl: './table-base-cell.component.html',\n styleUrls: ['./table-base-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n // material\n MatIcon,\n MatTooltip,\n\n // directives\n BlockDirective,\n ElemDirective,\n ModDirective,\n RtIconOutlinedDirective,\n RtHideTooltipDirective,\n\n // pipes\n EmptyToDashPipe,\n ],\n})\nexport class TableBaseCellComponent<T = { [key: string]: unknown }> {\n readonly #clipboard: Clipboard = inject(Clipboard);\n readonly #sanitizer: DomSanitizer = inject(DomSanitizer);\n\n protected readonly cellValue: Signal<T[keyof T] | string | number> = computed(() => {\n const transformFn: Nullable<(value: T[keyof T]) => string | number> = this.column()?.transform;\n return transformFn ? transformFn(this.row()[this.column().propName]) : this.row()[this.column().propName];\n });\n protected readonly cellIconStyle: Signal<SafeStyle | undefined> = computed(() => {\n const transformFn: ((value: T[keyof T]) => string) | undefined = this.column()?.iconTransform;\n return transformFn ? this.#sanitizer.bypassSecurityTrustStyle(transformFn(this.row()[this.column().propName])) : undefined;\n });\n protected readonly tooltipValue: Signal<string> = computed(() => this.#covertCellValueToString(this.cellValue()));\n protected readonly isMouseOver: WritableSignal<boolean> = signal(false);\n protected readonly isCopied: WritableSignal<boolean> = signal(false);\n\n public row: InputSignal<T> = input.required();\n public column: InputSignal<ITable.Column<T>> = input.required();\n public isMobile: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n @HostBinding('style')\n public get style(): SafeStyle | undefined {\n let style: string = '';\n\n if (this.column().width !== undefined) {\n style += `width: ${this.column().width};`;\n }\n\n if (this.column().minWidth !== undefined) {\n style += `min-width: ${this.column().minWidth};`;\n }\n\n return !!style.length ? this.#sanitizer.bypassSecurityTrustStyle(style) : undefined;\n }\n\n public get copyBtnPosition(): string {\n const { copyBtnAlign, align } = this.column();\n return copyBtnAlign || (align === 'right' ? 'left' : 'right');\n }\n\n @HostListener('mouseover')\n public onMouseOver(): void {\n this.isMouseOver.set(true);\n }\n\n @HostListener('mouseout')\n public onMouseOut(): void {\n this.isMouseOver.set(false);\n }\n\n public onCopyToClipboard(): void {\n if (this.column().copyable) {\n this.#clipboard.copy(this.#covertCellValueToString(this.cellValue()));\n this.isCopied.set(true);\n setTimeout(() => this.isCopied.set(false), 2000);\n }\n }\n\n #covertCellValueToString(value: T[keyof T] | string | number): string {\n if (isString(value)) {\n return value;\n } else if (isNumber(value)) {\n return value.toString();\n } else {\n return JSON.stringify(value);\n }\n }\n}\n","<ng-container rtBlock=\"base-cell\">\n @if (column()?.icon?.placement === 'left') {\n <mat-icon rtElem=\"prefix\" [rtIconOutlined]=\"!!column().icon?.outlined\" [style]=\"cellIconStyle()\">\n {{ column().icon?.glyph }}\n </mat-icon>\n }\n\n <div rtElem=\"title\" [rtMod]=\"{ align: column().align }\">\n <div\n #titleTpl\n rtElem=\"title-text\"\n matTooltipClass=\"custom-tooltip\"\n matTooltipPosition=\"above\"\n [rtHideTooltipDirective]=\"titleTpl\"\n [isTooltipShown]=\"!isMobile()\"\n [matTooltip]=\"column()?.tooltip ?? tooltipValue()\"\n [matTooltipDisabled]=\"isMobile()\">\n {{ cellValue() | emptyToDash }}\n </div>\n </div>\n\n @if (column()?.icon?.placement === 'right') {\n <mat-icon rtElem=\"suffix\" [rtIconOutlined]=\"!!column().icon?.outlined\" [style]=\"cellIconStyle()\">\n {{ column().icon?.glyph }}\n </mat-icon>\n }\n\n @if (column()?.copyable) {\n <button\n type=\"button\"\n rtBlock=\"base-cell\"\n rtElem=\"copy-button\"\n class=\"c-button c-button--txt-base\"\n matTooltipPosition=\"above\"\n [rtMod]=\"{\n position: copyBtnPosition,\n complete: isCopied(),\n visible: isMobile() || isMouseOver(),\n }\"\n [matTooltip]=\"isCopied() ? 'Copied!' : 'Copy'\"\n [matTooltipDisabled]=\"isMobile()\"\n (mousedown)=\"onCopyToClipboard(); $event.stopPropagation()\">\n <mat-icon rtElem=\"copy-icon\" [rtIconOutlined]=\"true\">{{ isCopied() ? 'done' : 'content_copy' }}</mat-icon>\n </button>\n }\n</ng-container>\n","import { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostBinding,\n HostListener,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n numberAttribute,\n output,\n OutputEmitterRef,\n Signal,\n} from '@angular/core';\nimport { MatIconButton, MatMiniFabButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable } from '@rt-tools/core';\nimport { LIST_SORT_ORDER_ENUM, ListSortOrderType, RtIconOutlinedDirective, SortModel } from '@rt-tools/utils';\nimport { ITable } from '../../util/table-column.interface';\n\n@Component({\n selector: 'rtui-table-header-cell',\n templateUrl: './table-header-cell.component.html',\n styleUrls: ['./table-header-cell.component.scss'],\n imports: [\n NgClass,\n\n // Material\n MatIcon,\n MatIconButton,\n MatTooltip,\n MatMiniFabButton,\n\n // Bem\n BlockDirective,\n ElemDirective,\n ModDirective,\n\n // Directives\n RtIconOutlinedDirective,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RtuiTableHeaderCellComponent {\n readonly #sanitizer: DomSanitizer = inject(DomSanitizer);\n protected readonly sortOrderTypes: typeof LIST_SORT_ORDER_ENUM = LIST_SORT_ORDER_ENUM;\n\n public headerModel: InputSignal<ITable.Header> = input.required<ITable.Header>();\n public sortModel: InputSignal<Nullable<SortModel<string>>> = input.required<Nullable<SortModel<string>>>();\n public currentSortModel: InputSignal<Nullable<SortModel<string>>> = input.required<Nullable<SortModel<string>>>();\n public headerDataEllipsisMaxLines: InputSignalWithTransform<number, number> = input<number, number>(1, {\n transform: numberAttribute,\n });\n\n public readonly sortChange: OutputEmitterRef<SortModel<string>> = output<SortModel<string>>();\n\n public readonly active: Signal<boolean> = computed(() => {\n return (\n !!this.currentSortModel()?.propertyName &&\n !!this.sortModel()?.propertyName &&\n this.currentSortModel()?.propertyName === this.sortModel()?.propertyName\n );\n });\n\n @HostBinding('style')\n protected get style(): SafeStyle {\n return this.#sanitizer.bypassSecurityTrustStyle(`text-align: ${this.headerModel().align};`);\n }\n\n @HostListener('click')\n protected handleClick(): void {\n const sortPropertyName: Nullable<string> = this.sortModel()?.propertyName;\n\n if (sortPropertyName) {\n this.sortChange.emit({\n propertyName: sortPropertyName,\n sortDirection: this.getNextSortOrder(),\n });\n }\n }\n\n private getNextSortOrder(): ListSortOrderType {\n if (this.currentSortModel()?.sortDirection?.toLowerCase() === LIST_SORT_ORDER_ENUM.ASC) {\n return LIST_SORT_ORDER_ENUM.DESC;\n }\n\n return LIST_SORT_ORDER_ENUM.ASC;\n }\n}\n","<div rtBlock=\"header-cell-label\" [rtMod]=\"{ align: headerModel().align }\">\n @if (headerModel()?.icon?.placement === 'left') {\n <mat-icon rtElem=\"prefix\" [rtIconOutlined]=\"!!headerModel().icon?.outlined\" [style.color]=\"headerModel().icon?.color\">\n {{ headerModel().icon?.glyph }}\n </mat-icon>\n }\n\n <div rtElem=\"text\" [matTooltip]=\"headerModel()?.tooltip ?? ''\" [ngClass]=\"headerModel()?.className\">\n {{ headerModel().label }}\n </div>\n\n @if (headerModel()?.icon?.placement === 'right') {\n <mat-icon rtElem=\"suffix\" [rtIconOutlined]=\"!!headerModel().icon?.outlined\" [style.color]=\"headerModel().icon?.color\">\n {{ headerModel().icon?.glyph }}\n </mat-icon>\n }\n</div>\n\n@if (sortModel()) {\n <div rtBlock=\"header-cell-icons\" [rtMod]=\"{ active: active() }\">\n <div\n rtElem=\"icon\"\n [rtMod]=\"{\n active: active() && currentSortModel()?.sortDirection?.toLowerCase() === sortOrderTypes.DESC,\n first: true,\n }\"></div>\n\n <div\n rtElem=\"icon\"\n [rtMod]=\"{\n active: active() && currentSortModel()?.sortDirection?.toLowerCase() === sortOrderTypes.ASC,\n second: true,\n }\"></div>\n </div>\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n inject,\n Injector,\n input,\n InputSignal,\n InputSignalWithTransform,\n OnInit,\n output,\n OutputEmitterRef,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatDatepicker, MatDatepickerInput, MatDatepickerModule, MatDatepickerToggle } from '@angular/material/datepicker';\n\nimport {\n FILTER_OPERATOR_TYPE_ENUM,\n FILTER_OPERATORS,\n FilterModel,\n FilterOperatorType,\n RtIconOutlinedDirective,\n transformArrayInput,\n isString,\n} from '@rt-tools/utils';\nimport { ITable, TABLE_COLUMN_FILTER_TYPES_ENUM } from '../../util/table-column.interface';\nimport { MatFormField, MatFormFieldAppearance, MatSuffix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { MatMenu, MatMenuItem, MatMenuTrigger } from '@angular/material/menu';\nimport { MatOption, provideNativeDateAdapter } from '@angular/material/core';\nimport { MatSelect } from '@angular/material/select';\nimport { TitleCasePipe } from '@angular/common';\nimport { isDate } from '@rt-tools/utils';\nimport { RtuiClearButtonComponent } from '../clear-search-button/rtui-clear-button.component';\nimport { BlockDirective } from '@rt-tools/core';\nimport { MatTooltip } from '@angular/material/tooltip';\n\n@Component({\n selector: 'rtui-table-header-filter-cell',\n templateUrl: './table-header-filter-cell.component.html',\n styleUrls: ['./table-header-filter-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [provideNativeDateAdapter()],\n imports: [\n FormsModule,\n\n // Material\n MatIcon,\n MatIconButton,\n MatSuffix,\n MatDatepickerModule,\n MatFormField,\n MatInput,\n MatMenu,\n MatMenuTrigger,\n MatMenuItem,\n MatDatepickerToggle,\n MatDatepicker,\n MatDatepickerInput,\n MatSelect,\n MatOption,\n MatTooltip,\n\n // Pipes\n TitleCasePipe,\n\n // Directives\n RtIconOutlinedDirective,\n BlockDirective,\n\n // Components\n RtuiClearButtonComponent,\n ],\n})\nexport class RtuiTableHeaderFilterCellComponent<\n ENTITY_TYPE extends Record<string, unknown>,\n KEY extends Extract<keyof ENTITY_TYPE, string>,\n> implements OnInit {\n readonly #injector: Injector = inject(Injector);\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n\n protected readonly filterTypes: typeof TABLE_COLUMN_FILTER_TYPES_ENUM = TABLE_COLUMN_FILTER_TYPES_ENUM;\n protected readonly filterOperatorTypes: typeof FILTER_OPERATOR_TYPE_ENUM = FILTER_OPERATOR_TYPE_ENUM;\n\n /** Current elements appearance */\n public appearance: InputSignal<MatFormFieldAppearance> = input.required();\n /** Filter property */\n public filterProperty: InputSignalWithTransform<KEY, unknown> = input.required<KEY, unknown>({\n transform: (value: unknown): KEY => (isString(value) ? value : value?.toString) as KEY,\n });\n /** Filter cell type */\n public filterType: InputSignal<ITable.FilterType> = input.required();\n /** Current filter model from store */\n public filterModel: InputSignalWithTransform<FilterModel<KEY>[], FilterModel<KEY>[]> = input.required<\n FilterModel<KEY>[],\n FilterModel<KEY>[]\n >({\n transform: (value: FilterModel<KEY>[]) => transformArrayInput(value),\n });\n /** Filter property */\n public defaultFilterOperator: InputSignalWithTransform<FilterOperatorType, FilterOperatorType> = input.required<\n FilterOperatorType,\n FilterOperatorType\n >({\n transform: (value: FilterOperatorType): FilterOperatorType =>\n value && FILTER_OPERATORS.includes(value) ? value : FILTER_OPERATOR_TYPE_ENUM.EQUALS,\n });\n /** Available filter operators */\n public filterOperators: InputSignalWithTransform<FilterOperatorType[], FilterOperatorType[]> = input<\n FilterOperatorType[],\n FilterOperatorType[]\n >([], {\n transform: (value: FilterOperatorType[]) => transformArrayInput(value),\n });\n /** List of selected filter models */\n public filterSelectOptions: InputSignalWithTransform<string[], string[]> = input<string[], string[]>([], {\n transform: (value: string[]) => transformArrayInput(value),\n });\n /** Indicates is mobile view */\n public isMobile: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** Filter change output action */\n public readonly filterChange: OutputEmitterRef<FilterModel<KEY>[]> = output<FilterModel<KEY>[]>();\n\n public readonly currentFilter: WritableSignal<FilterModel<KEY>> = signal({\n propertyName: '' as KEY,\n operatorType: FILTER_OPERATOR_TYPE_ENUM.EQUALS,\n value: '',\n });\n\n public ngOnInit(): void {\n toObservable(this.filterModel, { injector: this.#injector })\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe((filterModel: FilterModel<KEY>[]) => {\n this.currentFilter.set(\n filterModel?.length && filterModel.find((el: FilterModel<KEY>) => el.propertyName === this.filterProperty())\n ? (filterModel.find((el: FilterModel<KEY>) => el.propertyName === this.filterProperty()) as FilterModel<KEY>)\n : {\n operatorType: this.defaultFilterOperator(),\n propertyName: this.filterProperty(),\n value: '',\n }\n );\n });\n }\n\n /** Change filter value */\n public onFilterValueChange(value: number | string | Date): void {\n if (value === this.currentFilter().value) {\n return;\n }\n\n let updatedFilterModel: FilterModel<KEY>[] = this.filterModel();\n\n if (updatedFilterModel.find((el: FilterModel<KEY>) => el.propertyName === this.filterProperty())) {\n if (value) {\n updatedFilterModel = updatedFilterModel.map((el: FilterModel<KEY>) =>\n el.propertyName === this.filterProperty()\n ? {\n ...el,\n value: isDate(value) ? value.toISOString() : value,\n }\n : el\n );\n } else {\n updatedFilterModel = updatedFilterModel.filter((el: FilterModel<KEY>) => el.propertyName !== this.filterProperty());\n }\n this.filterChange.emit(updatedFilterModel);\n } else if (value) {\n updatedFilterModel.push({\n propertyName: this.filterProperty(),\n operatorType: this.currentFilter().operatorType,\n value: isDate(value) ? value.toISOString() : value,\n });\n this.filterChange.emit(updatedFilterModel);\n }\n\n this.currentFilter.update((filter: FilterModel<KEY>) => ({\n ...filter,\n value: isDate(value) ? value.toISOString() : value,\n }));\n }\n\n /** Change filter operator */\n public onFilterOperatorChange(operatorType: FilterOperatorType): void {\n if (operatorType === this.currentFilter().operatorType) {\n return;\n }\n\n let updatedFilterModel: FilterModel<KEY>[] = this.filterModel();\n\n if (updatedFilterModel.find((el: FilterModel<KEY>) => el.propertyName === this.filterProperty())) {\n updatedFilterModel = updatedFilterModel.map((el: FilterModel<KEY>) =>\n el.propertyName === this.filterProperty()\n ? {\n ...el,\n operatorType,\n }\n : el\n );\n this.filterChange.emit(updatedFilterModel);\n } else if (this.currentFilter().value) {\n updatedFilterModel.push({\n propertyName: this.filterProperty(),\n operatorType: operatorType,\n value: this.currentFilter().value,\n });\n this.filterChange.emit(updatedFilterModel);\n }\n\n this.currentFilter.update((filter: FilterModel<KEY>) => ({ ...filter, operatorType }));\n }\n}\n","@if (filterOperators()?.length) {\n <button\n aria-label=\"Icon-button for a context menu\"\n mat-icon-button\n matTooltipPosition=\"left\"\n [matTooltip]=\"currentFilter().operatorType | titlecase\"\n [matTooltipDisabled]=\"isMobile()\"\n [matMenuTriggerFor]=\"menuTpl\"\n (click)=\"$event.stopPropagation()\"\n (mousedown)=\"$event.stopPropagation()\">\n <mat-icon [rtIconOutlined]=\"true\">\n @switch (currentFilter().operatorType) {\n @case (filterOperatorTypes.EQUALS) {\n drag_handle\n }\n @case (filterOperatorTypes.NOT_EQUALS) {\n block\n }\n @case (filterOperatorTypes.CONTAINS) {\n more_horiz\n }\n @case (filterOperatorTypes.GREATER_THAN) {\n chevron_right\n }\n @case (filterOperatorTypes.LESS_THAN) {\n chevron_left\n }\n }\n </mat-icon>\n </button>\n\n <mat-menu #menuTpl=\"matMenu\" xPosition=\"before\">\n @if (filterOperators().includes(filterOperatorTypes.EQUALS) && currentFilter()?.operatorType !== filterOperatorTypes.EQUALS) {\n <div mat-menu-item (click)=\"onFilterOperatorChange(filterOperatorTypes.EQUALS)\">\n <mat-icon class=\"material-icons-outlined\" rtIconOutlined>drag_handle</mat-icon>\n <span>Equal</span>\n </div>\n }\n @if (\n filterOperators().includes(filterOperatorTypes.NOT_EQUALS) && currentFilter()?.operatorType !== filterOperatorTypes.NOT_EQUALS\n ) {\n <div mat-menu-item (click)=\"onFilterOperatorChange(filterOperatorTypes.NOT_EQUALS)\">\n <mat-icon [rtIconOutlined]=\"true\">block</mat-icon>\n <span>Not equal</span>\n </div>\n }\n @if (filterOperators().includes(filterOperatorTypes.CONTAINS) && currentFilter()?.operatorType !== filterOperatorTypes.CONTAINS) {\n <div mat-menu-item (click)=\"onFilterOperatorChange(filterOperatorTypes.CONTAINS)\">\n <mat-icon [rtIconOutlined]=\"true\">more_horiz</mat-icon>\n <span>Contains</span>\n </div>\n }\n @if (\n filterOperators().includes(filterOperatorTypes.GREATER_THAN) &&\n currentFilter()?.operatorType !== filterOperatorTypes.GREATER_THAN\n ) {\n <div mat-menu-item (click)=\"onFilterOperatorChange(filterOperatorTypes.GREATER_THAN)\">\n <mat-icon [rtIconOutlined]=\"true\">chevron_right</mat-icon>\n <span>More than</span>\n </div>\n }\n @if (filterOperators().includes(filterOperatorTypes.LESS_THAN) && currentFilter()?.operatorType !== filterOperatorTypes.LESS_THAN) {\n <div mat-menu-item (click)=\"onFilterOperatorChange(filterOperatorTypes.LESS_THAN)\">\n <mat-icon [rtIconOutlined]=\"true\">chevron_left</mat-icon>\n <span>Less than</span>\n </div>\n }\n </mat-menu>\n}\n\n@switch (filterType()) {\n @case (filterTypes.TEXT) {\n <mat-form-field rtBlock=\"table-header-cell-filter-input\" subscriptSizing=\"dynamic\" [appearance]=\"appearance()\">\n <input\n #input\n matInput\n type=\"text\"\n placeholder=\"Type in filter value\"\n [value]=\"currentFilter().value\"\n (keydown.enter)=\"onFilterValueChange(input.value)\"\n (focusout)=\"onFilterValueChange(input.value)\" />\n\n <rtui-clear-button matSuffix [isButtonShown]=\"!!currentFilter().value\" (clickAction)=\"onFilterValueChange('')\" />\n </mat-form-field>\n }\n @case (filterTypes.NUMBER) {\n <mat-form-field rtBlock=\"table-header-cell-filter-input\" subscriptSizing=\"dynamic\" [appearance]=\"appearance()\">\n <input\n #input\n matInput\n type=\"number\"\n placeholder=\"Type in filter value\"\n [value]=\"currentFilter().value\"\n (keydown.enter)=\"onFilterValueChange(input.value)\"\n (focusout)=\"onFilterValueChange(input.value)\" />\n\n <rtui-clear-button matSuffix [isButtonShown]=\"!!currentFilter().value\" (clickAction)=\"onFilterValueChange('')\" />\n </mat-form-field>\n }\n @case (filterTypes.DATE) {\n <button\n aria-label=\"Icon-button for clear filter\"\n mat-icon-button\n matTooltipPosition=\"left\"\n matTooltip=\"Clear filter\"\n [matTooltipDisabled]=\"isMobile()\"\n [disabled]=\"!currentFilter().value\"\n (click)=\"onFilterValueChange('')\">\n <mat-icon [rtIconOutlined]=\"true\">close</mat-icon>\n </button>\n\n <mat-form-field rtBlock=\"table-header-cell-filter-input\" subscriptSizing=\"dynamic\" [appearance]=\"appearance()\">\n <input\n matInput\n placeholder=\"1/1/2025\"\n [matDatepicker]=\"picker\"\n [ngModel]=\"currentFilter().value\"\n (ngModelChange)=\"onFilterValueChange($event)\" />\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n }\n @case (filterTypes.SELECT) {\n <button\n aria-label=\"Icon-button for clear filter\"\n mat-icon-button\n matTooltipPosition=\"left\"\n matTooltip=\"Clear filter\"\n [matTooltipDisabled]=\"isMobile()\"\n [disabled]=\"!currentFilter().value\"\n (click)=\"onFilterValueChange('')\">\n <mat-icon [rtIconOutlined]=\"true\">close</mat-icon>\n </button>\n\n <mat-form-field rtBlock=\"table-header-cell-filter-input\" subscriptSizing=\"dynamic\" [appearance]=\"appearance()\">\n <mat-select placeholder=\"Chose filter\" [value]=\"currentFilter().value\" (selectionChange)=\"onFilterValueChange($event.value)\">\n @for (item of filterSelectOptions(); track item) {\n <mat-option [value]=\"item\">{{ item | titlecase }}</mat-option>\n } @empty {\n <mat-option [value]=\"null\">No options available</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n}\n","import { Directive, ElementRef, inject, OnInit } from '@angular/core';\n\nimport { PlatformService } from '@rt-tools/core';\nimport { RTUI_TABLE_STOP_ROW_CLICK_ATTRIBUTE } from '../util';\n\n@Directive({\n standalone: true,\n selector: '[rtStopTableRowClick]',\n})\nexport class RtuiStopTableRowClickDirective implements OnInit {\n readonly #platformService: PlatformService = inject(PlatformService);\n readonly #elementRef: ElementRef<HTMLElement> = inject(ElementRef<HTMLElement>);\n\n public ngOnInit(): void {\n if (this.#platformService.isPlatformBrowser) {\n this.#elementRef.nativeElement.setAttribute(RTUI_TABLE_STOP_ROW_CLICK_ATTRIBUTE, '');\n }\n }\n}\n","import { Directive, inject, input, InputSignal, InputSignalWithTransform, HostListener, booleanAttribute } from '@angular/core';\nimport { BooleanInput } from '@angular/cdk/coercion';\n\nimport { IRtuiTable, RTUI_TABLE_COMPONENT_TOKEN, RTUI_TABLE_STOP_ROW_CLICK_ATTRIBUTE } from '../util';\n\n@Directive({\n selector: '[rtuiTableRowClickDirective]',\n})\nexport class RtuiTableRowClickDirective<\n ENTITY_TYPE extends Record<string, unknown>,\n SORT_PROPERTY extends Extract<keyof ENTITY_TYPE, string>,\n KEY extends Extract<keyof ENTITY_TYPE, string>,\n> {\n readonly #tableComponent: IRtuiTable<ENTITY_TYPE, SORT_PROPERTY, KEY> = inject(RTUI_TABLE_COMPONENT_TOKEN) as IRtuiTable<\n ENTITY_TYPE,\n SORT_PROPERTY,\n KEY\n >;\n\n /** Row entity */\n public readonly entity: InputSignal<ENTITY_TYPE> = input.required({\n alias: 'rtuiTableRowClickDirective',\n });\n\n /** Enabled flag */\n public isTableRowClickable: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n\n @HostListener('mousedown', ['$event'])\n public onMouseDown(event: MouseEvent): void {\n if (!this.isTableRowClickable() || (event.target as HTMLElement).closest(`[${RTUI_TABLE_STOP_ROW_CLICK_ATTRIBUTE}]`)) {\n event.stopPropagation();\n return;\n }\n this.#tableComponent.onRowClick(this.entity(), event);\n }\n\n @HostListener('dblclick', ['$event'])\n public onDoubleClick(event: MouseEvent): void {\n if (!this.isTableRowClickable() || (event.target as HTMLElement).closest(`[${RTUI_TABLE_STOP_ROW_CLICK_ATTRIBUTE}]`)) {\n event.stopPropagation();\n return;\n }\n this.#tableComponent.onRowDoubleClick(this.entity());\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewChecked,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n Directive,\n ElementRef,\n forwardRef,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n Signal,\n signal,\n TemplateRef,\n viewChild,\n WritableSignal,\n} from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatMenu, MatMenuTrigger } from '@angular/material/menu';\nimport { MatRadioButton } from '@angular/material/radio';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable } from '@rt-tools/core';\nimport { FILTER_OPERATOR_TYPE_ENUM, FilterModel, RtIconOutlinedDirective, SortModel, transformArrayInput } from '@rt-tools/utils';\nimport { IRtuiTable, ITable, RTUI_TABLE_COMPONENT_TOKEN, RtTableConfigService, TABLE_COLUMN_TYPES_ENUM } from '../../util';\nimport { TableBaseCellComponent } from '../table-base-cell/table-base-cell.component';\nimport { RtuiTableHeaderCellComponent } from '../table-header-cell/table-header-cell.component';\nimport { RtuiTableHeaderFilterCellComponent } from '../table-header-filter-cell/table-header-filter-cell.component';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { RtuiTableRowClickDirective } from '../../directives';\n\n/** Directive for custom table cells */\n@Directive({\n selector: '[rtuiCustomTableCellsDirective]',\n})\nexport class RtuiCustomTableCellsDirective<ENTITY_TYPE> {\n public cellsTemplates: InputSignal<{\n [K in keyof ENTITY_TYPE]: TemplateRef<{ $implicit: ENTITY_TYPE }>;\n }> = input.required({\n alias: 'rtuiCustomTableCellsDirective',\n });\n\n public getTemplateByPropName(propName: keyof ENTITY_TYPE): TemplateRef<{ $implicit: ENTITY_TYPE }> {\n return this.cellsTemplates()[propName];\n }\n}\n\n/** Directive for row actions located inside a row menu button */\n@Directive({\n selector: '[rtuiTabletRowActionsDirective]',\n})\nexport class RtuiTableRowActionsDirective {}\n\n/** Directive for row actions located outside a row menu button */\n@Directive({\n selector: '[rtuiTableAdditionalRowActionsDirective]',\n})\nexport class RtuiTableAdditionalRowActionsDirective {}\n\n@Component({\n selector: 'rtui-table',\n templateUrl: './rtui-table.component.html',\n styleUrls: ['./rtui-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n\n // material\n MatIconButton,\n MatMenuTrigger,\n MatIcon,\n MatMenu,\n MatCheckbox,\n MatRadioButton,\n\n // directives\n BlockDirective,\n ElemDirective,\n ModDirective,\n RtIconOutlinedDirective,\n RtuiTableRowClickDirective,\n\n // components\n RtuiTableHeaderCellComponent,\n TableBaseCellComponent,\n RtuiTableHeaderFilterCellComponent,\n ],\n providers: [\n {\n provide: RTUI_TABLE_COMPONENT_TOKEN,\n useExisting: forwardRef(() => RtuiTableComponent),\n },\n ],\n})\nexport class RtuiTableComponent<\n ENTITY_TYPE extends Record<string, unknown>,\n SORT_PROPERTY extends Extract<keyof ENTITY_TYPE, string>,\n KEY extends Extract<keyof ENTITY_TYPE, string>,\n>\n implements IRtuiTable<ENTITY_TYPE, SORT_PROPERTY, KEY>, AfterViewChecked\n{\n protected readonly rowActions: Signal<Nullable<ElementRef<HTMLElement>>> = viewChild<ElementRef<HTMLElement>>('rowActions');\n protected readonly rowActionsHeaderPaddingHelper: Signal<Nullable<ElementRef<HTMLElement>>> =\n viewChild<ElementRef<HTMLElement>>('rowActionsHeaderPaddingHelper');\n protected readonly rowActionsPaddingHelper: Signal<Nullable<ElementRef<HTMLElement>>> =\n viewChild<ElementRef<HTMLElement>>('rowActionsRowPaddingHelper');\n\n readonly #tableConfigService: RtTableConfigService<ENTITY_TYPE> = inject(RtTableConfigService);\n\n protected readonly columnTypes: typeof TABLE_COLUMN_TYPES_ENUM = TABLE_COLUMN_TYPES_ENUM;\n protected readonly filterOperators: typeof FILTER_OPERATOR_TYPE_ENUM = FILTER_OPERATOR_TYPE_ENUM;\n\n /** Indicates is mobile view */\n public isMobile: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates are table rows clickable */\n public isTableRowsClickable: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Key of ENTITY_TYPE for compare entities */\n public keyExp: InputSignal<NonNullable<KEY>> = input('id' as NonNullable<KEY>);\n\n /** List of entities */\n public entities: InputSignalWithTransform<ENTITY_TYPE[], ENTITY_TYPE[]> = input.required<ENTITY_TYPE[], ENTITY_TYPE[]>({\n transform: (value: ENTITY_TYPE[]) => transformArrayInput(value),\n });\n /** Current page model from store */\n public currentSortModel: InputSignal<Nullable<SortModel<SORT_PROPERTY>>> = input.required();\n /** Current elements appearance */\n public appearance: InputSignal<MatFormFieldAppearance> = input.required({\n transform: (value: MatFormFieldAppearance) => (value === 'fill' ? 'fill' : 'outline'),\n });\n /** Filter inputs appearance */\n public filterAppearance: InputSignal<MatFormFieldAppearance> = input<MatFormFieldAppearance>('outline');\n /** Current filter model from store */\n public filterModel: InputSignalWithTransform<FilterModel<KEY>[], FilterModel<KEY>[]> = input<FilterModel<KEY>[], FilterModel<KEY>[]>(\n [],\n {\n transform: (value: FilterModel<KEY>[]) => transformArrayInput(value),\n }\n );\n /** Indicates is filters shown */\n public isFiltersShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** Row click output action */\n public readonly rowClick: OutputEmitterRef<NonNullable<{ row: ENTITY_TYPE; event: MouseEvent }>> =\n output<NonNullable<{ row: ENTITY_TYPE; event: MouseEvent }>>();\n /** Row doubleClick output action */\n public readonly rowDoubleClick: OutputEmitterRef<NonNullable<ENTITY_TYPE>> = output<NonNullable<ENTITY_TYPE>>();\n /** Sort change output action */\n public readonly sortChange: OutputEmitterRef<SortModel<SORT_PROPERTY>> = output<SortModel<SORT_PROPERTY>>();\n /** Filter change output action */\n public readonly filterChange: OutputEmitterRef<FilterModel<KEY>[]> = output<FilterModel<KEY>[]>();\n\n /** Columns config for table */\n public columns: Signal<Array<ITable.Column<ENTITY_TYPE>>> = computed(() => {\n return this.#tableConfigService.tableConfig().columns;\n });\n\n /** Custom cells template */\n public readonly customCellsTpl: Signal<Nullable<RtuiCustomTableCellsDirective<ENTITY_TYPE>>> =\n contentChild(RtuiCustomTableCellsDirective);\n /** Row actions template */\n public readonly rowActionsTpl: Signal<\n Nullable<\n TemplateRef<{\n $implicit: ENTITY_TYPE;\n }>\n >\n > = contentChild(RtuiTableRowActionsDirective, {\n read: TemplateRef,\n });\n /** Additional row actions template */\n public readonly additionalRowActionsTpl: Signal<Nullable<TemplateRef<RtuiTableAdditionalRowActionsDirective>>> = contentChild(\n RtuiTableAdditionalRowActionsDirective,\n {\n read: TemplateRef,\n }\n );\n\n /** Fields specified by the directive */\n /** List of selected entities ids */\n public readonly selectedEntitiesIds: WritableSignal<ENTITY_TYPE[KEY][]> = signal([]);\n /** Indicates are all page entities selected */\n public readonly isPageEntitiesSelected: WritableSignal<boolean> = signal(false);\n /** Indicates are some page entities selected */\n public readonly isPageEntitiesIndeterminate: WritableSignal<boolean> = signal(false);\n /** Indicates is multiselect mod enabled */\n public readonly isMultiSelect: WritableSignal<boolean> = signal(true);\n /** Indicates is selectors column shown */\n public readonly isSelectorsColumnShown: WritableSignal<boolean> = signal(false);\n /** Indicates is selectors column disabled */\n public readonly isSelectorsColumnDisabled: WritableSignal<boolean> = signal(false);\n /** Current row index */\n public readonly activeRowIndex: WritableSignal<Nullable<number>> = signal(null);\n\n public ngAfterViewChecked(): void {\n this.#setPaddingHelperWidth();\n }\n\n /** Sort change output action */\n public onSortChange(sortModel: SortModel<string>): void {\n // TODO: add type guard\n this.sortChange.emit(sortModel as SortModel<SORT_PROPERTY>);\n }\n\n /** Filter change output action */\n public onFilterChange(filterModel: FilterModel<KEY>[]): void {\n this.filterChange.emit(filterModel);\n }\n\n /** Open row actions menu */\n public onMenuOpen(index: number): void {\n this.activeRowIndex.set(index);\n }\n\n /** Close the row actions menu */\n public onMenuClose(): void {\n this.activeRowIndex.set(null);\n }\n\n /** Row click output actions */\n public onRowClick(row: NonNullable<ENTITY_TYPE>, event: MouseEvent): void {\n this.rowClick.emit({ row, event });\n }\n\n /** Row doubleClick output action */\n public onRowDoubleClick(row: NonNullable<ENTITY_TYPE>): void {\n this.rowDoubleClick.emit(row);\n }\n\n /** Empty methods set in selectors directive */\n public onToggleEntity: (entity: ENTITY_TYPE, checked: boolean) => void = (): void => {\n return;\n };\n public onTogglePageEntities: (checked: boolean) => void = (): void => {\n return;\n };\n\n /**\n * Updates the width of padding helpers dynamically to match the width of `rowActions`.\n * Ensures that the width of `rowActionsHeaderPaddingHelper` and `rowActionsPaddingHelper`\n * is consistent with the current `rowActions` width.\n */\n #setPaddingHelperWidth(): void {\n if (this.rowActions()) {\n const rowActionsWidth: number = this.rowActions()?.nativeElement.offsetWidth || 0;\n\n const headerWidth: number = parseInt(this.rowActionsHeaderPaddingHelper()?.nativeElement?.style.width || '0', 10);\n const paddingWidth: number = parseInt(this.rowActionsPaddingHelper()?.nativeElement?.style.width || '0', 10);\n\n if (rowActionsWidth !== headerWidth || rowActionsWidth !== paddingWidth) {\n const headerEl: Nullable<HTMLElement> = this.rowActionsHeaderPaddingHelper()?.nativeElement;\n const paddingEl: Nullable<HTMLElement> = this.rowActionsPaddingHelper()?.nativeElement;\n\n if (headerEl) {\n headerEl.style.width = `${rowActionsWidth}px`;\n }\n\n if (paddingEl) {\n paddingEl.style.width = `${rowActionsWidth}px`;\n }\n }\n }\n }\n}\n","<table rtBlock=\"c-table\">\n <thead>\n <tr>\n @if (isSelectorsColumnShown()) {\n <th\n rtElem=\"cell\"\n rtMod=\"selectable\"\n (mousedown)=\"$event.stopPropagation()\"\n (click)=\"$event.stopPropagation()\"\n (dblclick)=\"$event.stopPropagation()\">\n @if (isMultiSelect()) {\n <mat-checkbox\n [disabled]=\"isSelectorsColumnDisabled()\"\n [checked]=\"isPageEntitiesSelected()\"\n [indeterminate]=\"isPageEntitiesIndeterminate() && !isPageEntitiesSelected()\"\n (change)=\"onTogglePageEntities($event.checked)\" />\n }\n </th>\n }\n\n @for (column of columns(); track column.propName) {\n @if (!column?.hidden) {\n <th\n rtElem=\"cell\"\n [rtMod]=\"{ sortable: column?.sorting }\"\n (mousedown)=\"$event.stopPropagation()\"\n (click)=\"$event.stopPropagation()\"\n (dblclick)=\"$event.stopPropagation()\">\n <rtui-table-header-cell\n [headerModel]=\"column.header\"\n [sortModel]=\"column?.sorting\"\n [currentSortModel]=\"currentSortModel()\"\n (sortChange)=\"onSortChange($event)\" />\n </th>\n }\n }\n\n @if (rowActionsTpl() || additionalRowActionsTpl()) {\n <th\n #rowActionsHeaderPaddingHelper\n rtElem=\"cell\"\n (mousedown)=\"$event.stopPropagation()\"\n (click)=\"$event.stopPropagation()\"\n (dblclick)=\"$event.stopPropagation()\">\n Actions\n </th>\n }\n </tr>\n\n @if (isFiltersShown()) {\n <tr>\n @if (isSelectorsColumnShown()) {\n <th rtElem=\"cell\" rtMod=\"filterable, empty\"></th>\n }\n\n @for (column of columns(); track column.propName) {\n @if (!column?.hidden && column.filterType) {\n <th rtElem=\"cell\" rtMod=\"filterable\">\n <rtui-table-header-filter-cell\n [appearance]=\"filterAppearance()\"\n [filterProperty]=\"column.propName\"\n [filterType]=\"column.filterType\"\n [defaultFilterOperator]=\"column?.defaultFilterOperator || filterOperators.EQUALS\"\n [filterOperators]=\"column.filterOperators || []\"\n [filterSelectOptions]=\"column.filterSelectOptions || []\"\n [filterModel]=\"filterModel()\"\n (filterChange)=\"onFilterChange($event)\" />\n </th>\n } @else if (!column?.hidden) {\n <th rtElem=\"cell\" rtMod=\"filterable\"></th>\n }\n }\n\n @if (rowActionsTpl() || additionalRowActionsTpl()) {\n <th rtElem=\"cell\" rtMod=\"filterable\"></th>\n }\n </tr>\n }\n </thead>\n\n <tbody>\n @for (row of entities(); track i; let i = $index) {\n <tr\n rtElem=\"row\"\n [rtuiTableRowClickDirective]=\"row\"\n [isTableRowClickable]=\"isTableRowsClickable()\"\n [rtMod]=\"{\n clickable: isTableRowsClickable(),\n active: activeRowIndex() === i,\n }\">\n @if (isSelectorsColumnShown()) {\n <td\n rtElem=\"cell\"\n (click)=\"$event.stopPropagation()\"\n (mousedown)=\"$event.stopPropagation()\"\n (dblclick)=\"$event.stopPropagation()\">\n @if (isMultiSelect()) {\n <mat-checkbox\n [disabled]=\"isSelectorsColumnDisabled()\"\n [checked]=\"selectedEntitiesIds().includes(row[keyExp()])\"\n (change)=\"onToggleEntity(row, $event.checked)\" />\n } @else {\n <mat-radio-button\n [disabled]=\"isSelectorsColumnDisabled()\"\n [checked]=\"selectedEntitiesIds().includes(row[keyExp()])\"\n (change)=\"onToggleEntity(row, true)\" />\n }\n </td>\n }\n\n @for (column of columns(); track column.propName) {\n @if (!column?.hidden) {\n <td rtElem=\"cell\" [rtMod]=\"{ copyable: column?.copyable }\">\n @switch (column?.type) {\n @case (columnTypes.CUSTOM) {\n @if (customCellsTpl() && customCellsTpl()?.getTemplateByPropName(column.propName)) {\n <ng-template\n *ngTemplateOutlet=\"\n customCellsTpl()?.getTemplateByPropName(column.propName) || null;\n context: { $implicit: row }\n \" />\n }\n }\n @default {\n <rtui-table-base-cell [row]=\"row\" [column]=\"column\" [isMobile]=\"isMobile()\" />\n }\n }\n </td>\n }\n }\n\n @if (rowActionsTpl() || additionalRowActionsTpl()) {\n <div rtBlock=\"c-table-actions\" [rtMod]=\"{ hidden: activeRowIndex() !== i }\">\n <div rtElem=\"container\" #rowActions>\n @if (additionalRowActionsTpl()) {\n <ng-template *ngTemplateOutlet=\"additionalRowActionsTpl() || null; context: { $implicit: row }\" />\n }\n\n @if (rowActionsTpl()) {\n <button\n rtElem=\"action\"\n aria-label=\"Icon-button for a context menu\"\n mat-icon-button\n [disableRipple]=\"true\"\n [matMenuTriggerFor]=\"menuTpl\"\n (menuOpened)=\"onMenuOpen(i)\"\n (menuClosed)=\"onMenuClose()\"\n (click)=\"$event.stopPropagation()\"\n (mousedown)=\"$event.stopPropagation()\">\n <mat-icon [rtIconOutlined]=\"true\">more_vert</mat-icon>\n </button>\n\n <mat-menu #menuTpl=\"matMenu\" xPosition=\"before\">\n <ng-template *ngTemplateOutlet=\"rowActionsTpl() || null; context: { $implicit: row }\" />\n </mat-menu>\n }\n </div>\n </div>\n\n <div #rowActionsRowPaddingHelper></div>\n }\n </tr>\n }\n </tbody>\n</table>\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n input,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n} from '@angular/core';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable } from '@rt-tools/core';\nimport { RtIconOutlinedDirective } from '@rt-tools/utils';\n\n@Component({\n selector: 'rtui-dynamic-selector-list-actions',\n templateUrl: './rtui-dynamic-selector-list-actions.component.html',\n styleUrls: ['./rtui-dynamic-selector-list-actions.component.scss'],\n imports: [MatIcon, MatButton, RtIconOutlinedDirective, BlockDirective, ElemDirective, ModDirective, MatIconButton, MatTooltip],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RtuiDynamicSelectorListActionsComponent {\n public isMobile: InputSignalWithTransform<Nullable<boolean>, Nullable<boolean>> = input.required<Nullable<boolean>, Nullable<boolean>>({\n transform: booleanAttribute,\n });\n public isResetButtonDisabled: InputSignalWithTransform<boolean, boolean> = input.required<boolean, boolean>({\n transform: booleanAttribute,\n });\n public isClearButtonDisabled: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n public disabled: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n\n public readonly resetAction: OutputEmitterRef<void> = output<void>();\n public readonly clearAction: OutputEmitterRef<void> = output<void>();\n\n public onReset(): void {\n this.resetAction.emit();\n }\n\n public onClear(): void {\n this.clearAction.emit();\n }\n}\n","<ng-container rtBlock=\"rtui-dynamic-selector-list-actions\">\n <div rtElem=\"control\">\n <button\n mat-icon-button\n type=\"button\"\n rtElem=\"item\"\n matTooltip=\"Reset to initial list\"\n matTooltipClass=\"custom-tooltip\"\n matTooltipPosition=\"left\"\n [rtMod]=\"{ active: !isResetButtonDisabled() && !disabled() }\"\n [disabled]=\"isResetButtonDisabled() || disabled()\"\n [matTooltipDisabled]=\"isMobile()\"\n (click)=\"onReset()\">\n <mat-icon rtElem=\"item-icon\" [rtIconOutlined]=\"true\">refresh</mat-icon>\n </button>\n </div>\n\n <div rtElem=\"control\">\n <button\n mat-icon-button\n type=\"button\"\n rtElem=\"item\"\n matTooltip=\"Clear list\"\n matTooltipClass=\"custom-tooltip\"\n matTooltipPosition=\"above\"\n [rtMod]=\"{ active: !disabled() && !isClearButtonDisabled() }\"\n [matTooltipDisabled]=\"isMobile()\"\n [disabled]=\"disabled() || isClearButtonDisabled()\"\n (click)=\"onClear()\">\n <mat-icon rtElem=\"item-icon\" [rtIconOutlined]=\"true\">delete_forever</mat-icon>\n </button>\n </div>\n</ng-container>\n","import { booleanAttribute, Directive, input, InputSignal, InputSignalWithTransform } from '@angular/core';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { Nullable } from '@rt-tools/core';\nimport { transformStringInput } from '@rt-tools/utils';\n\n@Directive()\nexport abstract class RtuiDynamicSelectorsDirective {\n /** Indicates if mobile view */\n public isMobile: InputSignalWithTransform<Nullable<boolean>, boolean> = input.required<Nullable<boolean>, boolean>({\n transform: booleanAttribute,\n });\n /** Selections control button title */\n public buttonTitle: InputSignalWithTransform<string, string> = input<string, string>('Add', {\n transform: transformStringInput,\n });\n /** Indicates if only one option can be chosen */\n public isSingleSelection: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is selector disabled */\n public disabled: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is break string pipe used */\n public useNameBreaking: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is title case pipe used */\n public useTitleCase: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n public isPlaceholderIconOutlined: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is delete entity button from the selected list shown */\n public isDeleteButtonShown: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is list of items draggable */\n public isListDraggable: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n /** Placeholder icon */\n public placeholderIcon: InputSignalWithTransform<string, string> = input<string, string>('', {\n transform: transformStringInput,\n });\n /** Placeholder description */\n public placeholderDescription: InputSignalWithTransform<string, string> = input<string, string>('', {\n transform: transformStringInput,\n });\n /** Material elements appearance */\n public appearance: InputSignal<MatFormFieldAppearance> = input('fill' as MatFormFieldAppearance);\n}\n","export enum TOGGLE_SIZE_TYPE_ENUM {\n SM = 'sm',\n MD = 'md',\n}\n\nexport type ToggleSizeType = TOGGLE_SIZE_TYPE_ENUM.SM | TOGGLE_SIZE_TYPE_ENUM.MD;\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n effect,\n forwardRef,\n inject,\n Injector,\n input,\n InputSignal,\n InputSignalWithTransform,\n OnInit,\n Signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { MatTooltip, TooltipPosition } from '@angular/material/tooltip';\nimport { noop } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable } from '@rt-tools/core';\nimport { BreakpointService } from '@rt-tools/utils';\nimport { TOGGLE_SIZE_TYPE_ENUM, ToggleSizeType } from './toggle-size.type.enum';\nimport { BooleanInput } from '@angular/cdk/coercion';\n\n@Component({\n selector: 'rtui-toggle',\n templateUrl: './rtui-toggle.component.html',\n styleUrls: ['./rtui-toggle.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RtuiToggleComponent),\n multi: true,\n },\n BreakpointService,\n ],\n imports: [\n ReactiveFormsModule,\n MatTooltip,\n\n // directives\n BlockDirective,\n ElemDirective,\n ModDirective,\n ],\n})\nexport class RtuiToggleComponent implements OnInit, ControlValueAccessor {\n readonly #injector: Injector = inject(Injector);\n readonly #cdr: ChangeDetectorRef = inject(ChangeDetectorRef);\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n readonly #breakpointService: BreakpointService = inject(BreakpointService);\n\n public formControl: FormControl<boolean> = new FormControl<boolean>(false, { nonNullable: true });\n\n public label: InputSignal<Nullable<string>> = input();\n public tooltip: InputSignal<string> = input('');\n public size: InputSignal<ToggleSizeType> = input<ToggleSizeType>(TOGGLE_SIZE_TYPE_ENUM.MD);\n public tooltipPosition: InputSignal<TooltipPosition> = input<TooltipPosition>('above');\n public isDisabled: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n public tooltipDisabled: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n public readonly isMobile: Signal<Nullable<boolean>> = this.#breakpointService.isMobile;\n\n #onTouched: () => void = noop;\n #onChanged: (value: boolean) => void = noop;\n\n public ngOnInit(): void {\n this.formControl.valueChanges\n .pipe(\n filter(() => typeof this.#onChanged === 'function'),\n takeUntilDestroyed(this.#destroyRef)\n )\n .subscribe((value: boolean) => {\n this.#onChanged(value);\n });\n\n this.formControl.statusChanges\n .pipe(\n filter(() => typeof this.#onTouched === 'function'),\n takeUntilDestroyed(this.#destroyRef)\n )\n .subscribe(() => this.#onTouched());\n\n effect(\n () => {\n if (this.formControl.disabled !== this.isDisabled()) {\n this.setDisabledState();\n }\n },\n { injector: this.#injector }\n );\n }\n\n // ––––––––––––– Value Accessor –––––––––––––––\n public writeValue(value: boolean): void {\n this.formControl.patchValue(value, { emitEvent: false });\n this.#cdr.markForCheck();\n }\n\n public registerOnChange(fn: () => void): void {\n this.#onChanged = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.#onTouched = fn;\n }\n\n public setDisabledState(): void {\n if (this.isDisabled()) {\n this.formControl.disable();\n } else {\n this.formControl.enable();\n }\n\n this.#cdr.markForCheck();\n }\n}\n","<label\n rtBlock=\"rtui-toggle-container\"\n [rtMod]=\"{ disabled: isDisabled() }\"\n [matTooltipPosition]=\"tooltipPosition()\"\n [matTooltip]=\"tooltip()\"\n [matTooltipDisabled]=\"!tooltip() || isMobile() || tooltipDisabled()\">\n <div rtBlock=\"rtui-toggle\" rtMod=\"{{ size() }}\">\n <input type=\"checkbox\" rtElem=\"check\" [formControl]=\"formControl\" />\n\n <b rtElem=\"switch\"></b>\n\n <b rtElem=\"track\"></b>\n </div>\n\n @if (label()) {\n <div rtElem=\"label\" [rtMod]=\"{ active: formControl.value }\">{{ label() }}</div>\n }\n</label>\n","import {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n InputSignal,\n InputSignalWithTransform,\n OnInit,\n output,\n OutputEmitterRef,\n Signal,\n signal,\n untracked,\n viewChild,\n WritableSignal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButton } from '@angular/material/button';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatFormField, MatFormFieldAppearance, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { MatRadioButton } from '@angular/material/radio';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { RouterLink } from '@angular/router';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable } from '@rt-tools/core';\nimport {\n BreakStringPipe,\n DeviceDetectorService,\n EntityToStringPipe,\n OSTypes,\n RtIconOutlinedDirective,\n RtScrollDirective,\n transformArrayInput,\n} from '@rt-tools/utils';\nimport { RtuiSpinnerComponent } from '../../../spinner';\nimport { RtuiClearButtonComponent } from '../../../table';\nimport { RtuiToggleComponent } from '../../../toggle';\nimport { BooleanInput } from '@angular/cdk/coercion';\n\n@Component({\n selector: 'rtui-multi-selector-popup',\n templateUrl: './rtui-multi-selector-popup.component.html',\n styleUrls: ['./rtui-multi-selector-popup.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n // Material\n MatButton,\n MatTooltip,\n MatFormField,\n MatIcon,\n MatInput,\n MatPrefix,\n MatSuffix,\n MatCheckbox,\n MatRadioButton,\n MatProgressSpinner,\n BreakStringPipe,\n ReactiveFormsModule,\n RouterLink,\n FormsModule,\n\n // directives\n BlockDirective,\n ElemDirective,\n ModDirective,\n RtScrollDirective,\n RtIconOutlinedDirective,\n\n // components\n RtuiClearButtonComponent,\n RtuiToggleComponent,\n RtuiSpinnerComponent,\n EntityToStringPipe,\n ],\n providers: [DeviceDetectorService],\n})\nexport class RtuiMultiSelectorPopupComponent<ENTITY extends Record<string, unknown>, KEY extends Extract<keyof ENTITY, string>>\n implements OnInit, AfterViewInit\n{\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n readonly #injector: Injector = inject(Injector);\n readonly #deviceService: DeviceDetectorService = inject(DeviceDetectorService);\n\n protected readonly oSTypes: typeof OSTypes = OSTypes;\n\n /** Indicates is mobile view */\n public isMobile: InputSignalWithTransform<Nullable<boolean>, Nullable<boolean>> = input.required<Nullable<boolean>, Nullable<boolean>>({\n transform: booleanAttribute,\n });\n public entitiesToSelect: InputSignalWithTransform<ENTITY[], ENTITY[]> = input.required<ENTITY[], ENTITY[]>({\n transform: (value: unknown) => transformArrayInput(value),\n });\n /** Material elements appearance */\n public appearance: InputSignal<MatFormFieldAppearance> = input.required();\n /** A model's field which should be used for http-requests */\n public keyExp: InputSignal<KEY> = input.required();\n /** A model's field which should be shown in ui */\n public displayExp: InputSignal<KEY> = input.required();\n /** Init search term value */\n public searchTerm: InputSignal<string> = input<string>('');\n /** Navigation button title */\n public navigateButtonTitle: InputSignal<string> = input<string>('');\n /** Navigation button link */\n public navigateLink: InputSignal<string> = input<string>('');\n /** Indicates if only one option can be chosen */\n public isSingleSelection: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is change multi select mode toggle shown */\n public isMultiToggleShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is Select all button shown */\n public isSelectAllButtonShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Indicates that a list of entities is being loading */\n public loading: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates that a list of entities is being fetching */\n public fetching: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is BreakStringPipe used */\n public useNameBreaking: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates lazy loading is used */\n public isLazyLoad: InputSignalWithTransform<Nullable<boolean>, boolean> = input<Nullable<boolean>, boolean>(false, {\n transform: booleanAttribute,\n });\n /** Indicates local search is used */\n public isLocalSearch: InputSignalWithTransform<Nullable<boolean>, boolean> = input<Nullable<boolean>, boolean>(true, {\n transform: booleanAttribute,\n });\n\n /** Send output selected entities ids */\n public readonly submitAction: OutputEmitterRef<ENTITY[KEY][]> = output<ENTITY[KEY][]>();\n /** Close popup action */\n public readonly closeAction: OutputEmitterRef<void> = output<void>();\n /** Output search action */\n public readonly searchAction: OutputEmitterRef<string> = output<string>();\n /** Output scroll action, needed for lazy loading */\n public readonly scrollAction: OutputEmitterRef<void> = output<void>();\n /** Output temporary selection action, needed for store values */\n public readonly temporarySelectAction: OutputEmitterRef<ENTITY[]> = output<ENTITY[]>();\n\n /** Search input Ref for set focus on init */\n public readonly searchInputRef: Signal<Nullable<ElementRef<HTMLInputElement>>> =\n viewChild<ElementRef<HTMLInputElement>>('searchInputTpl');\n\n /** Form control for search */\n public readonly searchControl: FormControl<Nullable<string>> = new FormControl('');\n /** Form control for select */\n public readonly selectionControl: FormControl<ENTITY[KEY][]> = new FormControl<ENTITY[KEY][]>([], { nonNullable: true });\n /** Entities filtered by local search */\n public readonly filteredEntities: WritableSignal<ENTITY[]> = signal([]);\n /** Selected entities */\n public readonly selectedEntities: WritableSignal<ENTITY[]> = signal([]);\n /** Indicates is all available entities has been selected */\n public readonly isAllSelected: WritableSignal<boolean> = signal(false);\n /** Indicates is multi selection mode enabled */\n public readonly isMultiSelection: WritableSignal<boolean> = signal(true);\n /** Indicates is macOS used */\n public readonly isMacOS: Signal<boolean> = signal(this.#deviceService.getOS() === this.oSTypes.MAC_OS);\n\n public ngOnInit(): void {\n /** Clear previous temp selection */\n this.temporarySelectAction.emit([]);\n\n /** Filter list of entities by search */\n this.searchControl.valueChanges\n .pipe(debounceTime(this.isLocalSearch() ? 0 : 500), takeUntilDestroyed(this.#destroyRef))\n .subscribe((value: Nullable<string>): void => {\n const selectedEntities: ENTITY[] = this.entitiesToSelect().filter((el: ENTITY) => {\n return this.selectionControl.value.includes(el[this.keyExp()]);\n });\n this.selectedEntities.set(selectedEntities);\n this.temporarySelectAction.emit(selectedEntities);\n\n if (value && this.isLocalSearch()) {\n const searchTerms: string[] = value.toLowerCase().trim().split(' ');\n\n this.filteredEntities.set(\n this.entitiesToSelect().filter((el: ENTITY) => {\n return (\n (typeof el[this.displayExp()] === 'string' || typeof el[this.displayExp()] === 'number') &&\n searchTerms.every(\n (term: string) =>\n el[this.displayExp()]?.toString().toLowerCase().includes(term) &&\n !this.selectedEntities().includes(el)\n )\n );\n })\n );\n } else if (this.isLocalSearch()) {\n this.filteredEntities.set(this.entitiesToSelect());\n } else if (value !== null && typeof value === 'string') {\n this.searchAction.emit(value);\n }\n });\n\n /** Set entitiesToSelect list and isAllSelected checkbox state */\n effect(\n () => {\n if (this.entitiesToSelect() && Array.isArray(this.entitiesToSelect())) {\n if (this.searchControl?.value) {\n const filteredEntities: ENTITY[] = this.entitiesToSelect().filter((el: ENTITY) => {\n return !this.selectionControl.value.includes(el[this.keyExp()]);\n });\n this.filteredEntities.set(filteredEntities);\n } else {\n this.filteredEntities.set(this.entitiesToSelect());\n }\n\n this.isAllSelected.set(\n this.searchControl?.value\n ? this.selectionControl.value?.length - untracked(() => this.selectedEntities()?.length) ===\n untracked(() => this.filteredEntities()?.length)\n : this.selectionControl.value?.length === untracked(() => this.filteredEntities()?.length)\n );\n }\n },\n { injector: this.#injector }\n );\n }\n\n /** Set focus on search input */\n public ngAfterViewInit(): void {\n if (this.searchInputRef) {\n this.searchInputRef()?.nativeElement.focus();\n }\n\n /**\n * Reset search term left over from a previous open. Deferred from `ngOnInit` to\n * `ngAfterViewInit` because emitting `searchAction` synchronously in `ngOnInit`\n * triggers a parent state update during the same change-detection tick in which\n * the host `cdkConnectedOverlay` is attaching. The cascade detaches/reattaches\n * the overlay's origin reference before its position strategy has computed the\n * connected coordinates, leaving the popup pinned at (0, 0). By the time\n * `ngAfterViewInit` runs the overlay is positioned, so a downstream re-fetch is\n * safe.\n */\n if (this.searchTerm()) {\n this.onClearSearch();\n }\n }\n\n /** Change Multi election mode */\n public toggleMultiSelection(): void {\n this.isMultiSelection.update((value: boolean) => !value);\n }\n\n /** Toggle select all */\n public toggleSelectAll(value: boolean): void {\n this.isAllSelected.set(value);\n\n if (this.isAllSelected() && this.searchControl.value) {\n this.selectionControl.patchValue([\n ...this.selectedEntities().map((el: ENTITY) => el[this.keyExp()]),\n ...this.filteredEntities().map((el: ENTITY) => el[this.keyExp()]),\n ]);\n } else if (this.isAllSelected()) {\n this.selectionControl.patchValue(this.filteredEntities().map((el: ENTITY) => el[this.keyExp()]));\n } else {\n this.selectionControl.patchValue([]);\n }\n }\n\n /** Update selectionControl and isAllSelected checkbox state */\n public itemToggle(entity: ENTITY, checked: boolean): void {\n if (checked) {\n this.selectionControl.patchValue([...this.selectionControl.value, entity[this.keyExp()]]);\n } else {\n this.selectionControl.patchValue(\n this.selectionControl.value.filter((el: ENTITY[KEY]): boolean => {\n return el !== entity[this.keyExp()];\n })\n );\n }\n\n this.isAllSelected.set(\n this.searchControl.value\n ? this.selectionControl.value?.length - this.selectedEntities()?.length === this.filteredEntities()?.length\n : this.selectionControl.value?.length === this.filteredEntities()?.length\n );\n }\n\n /** Proceed select action in multi selection mode */\n public onToggleItem(event: MouseEvent, entity: ENTITY, checked: boolean): void {\n const multipleSelectionEnabled: boolean = this.isMacOS() ? event.metaKey : event.ctrlKey;\n\n if ((!this.isMultiSelection() && !multipleSelectionEnabled) || this.isSingleSelection()) {\n this.toggleSelectAll(false);\n }\n\n this.itemToggle(entity, checked);\n }\n\n /** Proceed select action in single selection mode */\n public onToggleSingleItem(entity: ENTITY, checked: boolean): void {\n this.toggleSelectAll(false);\n this.itemToggle(entity, checked);\n }\n\n /** Output action, selected entities ids */\n public onSubmit(): void {\n if (this.selectionControl.value?.length) {\n this.submitAction.emit(this.selectionControl.value);\n }\n }\n\n /** Close popup */\n public onClose(): void {\n this.closeAction.emit();\n }\n\n /** Clear search */\n public onClearSearch(): void {\n if (!this.isLocalSearch()) {\n this.searchAction.emit('');\n }\n this.searchControl.patchValue(null);\n }\n\n /** Scroll action, needed for lazy loading mode */\n public scroll(): void {\n this.scrollAction.emit();\n }\n}\n","<div\n rtBlock=\"rtui-multi-selector-header\"\n [rtMod]=\"{ simple: isSingleSelection() || !filteredEntities().length || filteredEntities().length <= 1 }\">\n <mat-form-field subscriptSizing=\"dynamic\" [appearance]=\"appearance()\">\n <input #searchInputTpl matInput placeholder=\"Search...\" type=\"text\" [formControl]=\"searchControl\" />\n\n <mat-icon matPrefix rtIconOutlined>search</mat-icon>\n\n <rtui-clear-button matSuffix [isButtonShown]=\"!!searchControl.value\" (clickAction)=\"onClearSearch()\" />\n </mat-form-field>\n\n @if (!isSingleSelection() && filteredEntities().length > 1 && !loading()) {\n <div rtElem=\"controls\">\n @if (isMultiToggleShown()) {\n <div rtElem=\"controls-item\" rtMod=\"first\">\n <rtui-toggle label=\"Multi selection\" [ngModel]=\"this.isMultiSelection()\" (ngModelChange)=\"toggleMultiSelection()\" />\n\n @if (!isMobile()) {\n <mat-icon\n rtElem=\"controls-item-icon\"\n matTooltipPosition=\"above\"\n [rtIconOutlined]=\"true\"\n [matTooltip]=\"\n isMacOS() ? 'Also for multi selection use COMMAND button' : 'Also for multi selection use CTRL button'\n \">\n info\n </mat-icon>\n }\n\n @if (isMobile()) {\n <div rtElem=\"controls-item-info\">\n {{ isMacOS() ? 'Also for multi selection use COMMAND button' : 'Also for multi selection use CTRL button' }}\n </div>\n }\n </div>\n }\n\n @if (isSelectAllButtonShown()) {\n <div rtElem=\"controls-item\" rtMod=\"last\">\n <mat-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"!isAllSelected() && selectionControl.value.length > 0\"\n (change)=\"toggleSelectAll($event.checked)\">\n <div rtElem=\"controls-item-title\">Select all</div>\n </mat-checkbox>\n </div>\n }\n </div>\n }\n</div>\n\n@if ((filteredEntities()?.length || selectedEntities().length) && !loading()) {\n <div rtBlock=\"rtui-multi-selector-options\" rtScrollDirective [active]=\"!!isLazyLoad() && !fetching()\" (scrollAction)=\"scroll()\">\n @if (searchControl.value && selectedEntities()) {\n @for (entity of selectedEntities(); track entity[displayExp()]; let i = $index) {\n @if (isSingleSelection()) {\n <mat-radio-button\n rtElem=\"item\"\n [rtMod]=\"{ separated: i === selectedEntities().length - 1 }\"\n [checked]=\"selectionControl.value.includes(entity[keyExp()])\"\n (change)=\"onToggleSingleItem(entity, !selectionControl.value.includes(entity[keyExp()]))\">\n <div rtElem=\"item-title\">\n @if (useNameBreaking()) {\n {{ entity[displayExp()] | entityToString | breakString }}\n } @else {\n {{ entity[displayExp()] }}\n }\n </div>\n </mat-radio-button>\n } @else {\n <mat-checkbox\n rtElem=\"item\"\n [rtMod]=\"{ separated: i === selectedEntities().length - 1 }\"\n [checked]=\"selectionControl.value.includes(entity[keyExp()])\"\n (click)=\"onToggleItem($event, entity, !selectionControl.value.includes(entity[keyExp()]))\">\n <div rtElem=\"item-title\">\n @if (useNameBreaking()) {\n {{ entity[displayExp()] | entityToString | breakString }}\n } @else {\n {{ entity[displayExp()] }}\n }\n </div>\n </mat-checkbox>\n }\n }\n }\n\n @if (filteredEntities()) {\n @for (entity of filteredEntities(); track entity[displayExp()]) {\n @if (isSingleSelection()) {\n <mat-radio-button\n rtElem=\"item\"\n [checked]=\"selectionControl.value.includes(entity[keyExp()])\"\n (change)=\"onToggleSingleItem(entity, !selectionControl.value.includes(entity[keyExp()]))\">\n <div rtElem=\"item-title\">\n @if (useNameBreaking()) {\n {{ entity[displayExp()] | entityToString | breakString }}\n } @else {\n {{ entity[displayExp()] }}\n }\n </div>\n </mat-radio-button>\n } @else {\n <mat-checkbox\n rtElem=\"item\"\n [checked]=\"selectionControl.value.includes(entity[keyExp()])\"\n (click)=\"onToggleItem($event, entity, !selectionControl.value.includes(entity[keyExp()]))\">\n <div rtElem=\"item-title\">\n @if (useNameBreaking()) {\n {{ entity[displayExp()] | entityToString | breakString }}\n } @else {\n {{ entity[displayExp()] }}\n }\n </div>\n </mat-checkbox>\n }\n }\n }\n\n @if (fetching()) {\n <div rtElem=\"loader\">\n <mat-spinner [diameter]=\"20\" />\n </div>\n }\n </div>\n} @else {\n <div rtBlock=\"rtui-multi-selector-placeholder\">\n @if (loading()) {\n <rtui-spinner />\n } @else {\n <mat-icon rtElem=\"icon\" rtIconOutlined>search</mat-icon>\n\n <div rtElem=\"title\">No Results</div>\n }\n </div>\n}\n\n<div rtBlock=\"rtui-multi-selector-footer\" [rtMod]=\"{ full: !!navigateLink() && !!navigateButtonTitle() }\">\n @if (navigateLink() && navigateButtonTitle()) {\n <a rtElem=\"nav-action\" [routerLink]=\"navigateLink()\">{{ navigateButtonTitle() }}</a>\n }\n\n <div rtElem=\"base-actions\">\n <button mat-button type=\"button\" rtBlock=\"c-button\" (click)=\"onClose()\">Cancel</button>\n\n <button\n mat-flat-button\n type=\"button\"\n rtBlock=\"c-button\"\n [disabled]=\"!selectionControl.value?.length || loading()\"\n (click)=\"onSubmit()\">\n SUBMIT\n </button>\n </div>\n</div>\n","import { CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n input,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n} from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\n\nimport { BlockDirective, ElemDirective, ModDirective } from '@rt-tools/core';\nimport { RtIconOutlinedDirective, transformStringInput } from '@rt-tools/utils';\n\n@Component({\n selector: 'rtui-dynamic-selector-placeholder',\n templateUrl: './rtui-dynamic-selector-placeholder.component.html',\n styleUrls: ['./rtui-dynamic-selector-placeholder.component.scss'],\n imports: [MatIcon, MatButton, CdkOverlayOrigin, RtIconOutlinedDirective, BlockDirective, ElemDirective, ModDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RtuiDynamicSelectorPlaceholderComponent {\n public icon: InputSignalWithTransform<string, string> = input<string, string>('', {\n transform: transformStringInput,\n });\n public description: InputSignalWithTransform<string, string> = input<string, string>('', {\n transform: transformStringInput,\n });\n public buttonTitle: InputSignalWithTransform<string, string> = input<string, string>('Add', {\n transform: transformStringInput,\n });\n public isButtonShow: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(true, {\n transform: booleanAttribute,\n });\n public disabled: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n public isIconOutlined: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n\n public readonly submitAction: OutputEmitterRef<CdkOverlayOrigin> = output<CdkOverlayOrigin>();\n\n public onSubmit(trigger: CdkOverlayOrigin): void {\n this.submitAction.emit(trigger);\n }\n}\n","<ng-container rtBlock=\"rtui-dynamic-selector-placeholder\">\n @if (icon()) {\n <mat-icon rtElem=\"icon\" [rtMod]=\"{ warn: !isButtonShow() }\" [rtIconOutlined]=\"isIconOutlined()\">{{ icon() }}</mat-icon>\n }\n\n @if (description()) {\n <div rtElem=\"description\">{{ description() }}</div>\n }\n\n @if (isButtonShow()) {\n <button\n #trigger=\"cdkOverlayOrigin\"\n cdkOverlayOrigin\n mat-flat-button\n type=\"button\"\n rtBlock=\"c-button\"\n [disabled]=\"disabled()\"\n (click)=\"onSubmit(trigger)\">\n <mat-icon rtIconOutlined>add</mat-icon>\n\n {{ buttonTitle() }}\n </button>\n }\n</ng-container>\n","import { CdkDrag, CdkDragDrop, CdkDragHandle, CdkDropList } from '@angular/cdk/drag-drop';\nimport { NgTemplateOutlet, TitleCasePipe } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n Directive,\n input,\n InputSignal,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n signal,\n Signal,\n TemplateRef,\n viewChild,\n WritableSignal,\n} from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable } from '@rt-tools/core';\nimport { BreakStringPipe, EntityToStringPipe, RtHideTooltipDirective, RtIconOutlinedDirective, transformArrayInput } from '@rt-tools/utils';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormField, MatInput } from '@angular/material/input';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\n/** Directive for row actions located outside a row menu button */\n@Directive({\n selector: '[rtuiDynamicSelectorItemAdditionalControlDirective]',\n})\nexport class RtuiDynamicSelectorItemAdditionalControlDirective {}\n\n/** Directive for custom item title template */\n@Directive({\n selector: '[rtuiDynamicSelectorItemTitleDirective]',\n})\nexport class RtuiDynamicSelectorItemTitleDirective {}\n\n@Component({\n selector: 'rtui-dynamic-selector-selected-list',\n templateUrl: './rtui-dynamic-selector-selected-list.component.html',\n styleUrls: ['./rtui-dynamic-selector-selected-list.component.scss'],\n imports: [\n NgTemplateOutlet,\n FormsModule,\n ReactiveFormsModule,\n\n // material\n MatIconButton,\n MatIcon,\n MatTooltip,\n MatInput,\n MatFormField,\n\n // drag and drop\n CdkDropList,\n CdkDrag,\n CdkDragHandle,\n\n // directives\n RtIconOutlinedDirective,\n RtHideTooltipDirective,\n BlockDirective,\n ElemDirective,\n ModDirective,\n\n // pipes\n EntityToStringPipe,\n BreakStringPipe,\n TitleCasePipe,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RtuiDynamicSelectorSelectedListComponent<ENTITY extends Record<string, unknown>, KEY extends Extract<keyof ENTITY, string>> {\n protected readonly editedItemIndex: WritableSignal<Nullable<number>> = signal(null);\n\n public readonly inputRef: Signal<Nullable<MatInput>> = viewChild(MatInput);\n\n /** Indicates if mobile view */\n public isMobile: InputSignalWithTransform<boolean, BooleanInput> = input.required<boolean, BooleanInput>({\n transform: booleanAttribute,\n });\n /** A model's field, which should be used for http-requests */\n public keyExp: InputSignal<KEY> = input.required();\n /** A model's field, which should be shown in ui */\n public displayExp: InputSignal<KEY> = input.required();\n /** Array of selected entities */\n public selectedEntities: InputSignalWithTransform<ENTITY[], ENTITY[]> = input.required<ENTITY[], ENTITY[]>({\n transform: (value: unknown) => transformArrayInput(value),\n });\n /** Entity keys that can't be changed */\n public readonlyEntitiesKeys: InputSignalWithTransform<ENTITY[KEY][], ENTITY[KEY][]> = input<ENTITY[KEY][], ENTITY[KEY][]>([], {\n transform: (value: ENTITY[KEY][]) => transformArrayInput(value),\n });\n /** Indicates is a list of items draggable */\n public isListDraggable: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is break string pipe used */\n public useNameBreaking: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is title case pipe used */\n public useTitleCase: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is deleting entity button from the selected list shown */\n public isDeleteButtonShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is items editable */\n public isItemsEditable: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Material elements appearance */\n public appearance: InputSignal<MatFormFieldAppearance> = input('fill' as MatFormFieldAppearance);\n\n public readonly deleteFromSelectedAction: OutputEmitterRef<ENTITY[KEY]> = output<ENTITY[KEY]>();\n public readonly dropAction: OutputEmitterRef<CdkDragDrop<ENTITY[]>> = output<CdkDragDrop<ENTITY[]>>();\n public readonly changeValueAction: OutputEmitterRef<{ prev: ENTITY[KEY]; new: string }> = output<{ prev: ENTITY[KEY]; new: string }>();\n\n /** Additional control for entity */\n public readonly additionalControlTpl: Signal<Nullable<TemplateRef<{ $implicit: ENTITY }>>> = contentChild(\n RtuiDynamicSelectorItemAdditionalControlDirective,\n {\n read: TemplateRef,\n }\n );\n /** Custom item title template */\n public readonly itemTitleTpl: Signal<Nullable<TemplateRef<{ $implicit: ENTITY }>>> = contentChild(\n RtuiDynamicSelectorItemTitleDirective,\n {\n read: TemplateRef,\n }\n );\n\n protected onDelete(value: ENTITY[KEY]): void {\n this.deleteFromSelectedAction.emit(value);\n }\n\n protected onDrop(event: CdkDragDrop<ENTITY[]>): void {\n if (event.currentIndex !== event.previousIndex) {\n this.dropAction.emit(event);\n }\n }\n\n protected changeValue(prev: ENTITY[KEY]): void {\n this.changeValueAction.emit({ prev, new: this.inputRef()?.value || '' });\n this.setEditModState(null);\n }\n\n protected setEditModState(index: Nullable<number>): void {\n this.editedItemIndex.set(index);\n }\n}\n","<ng-container rtBlock=\"rtui-dynamic-selector\">\n <div rtElem=\"list\" cdkDropList (cdkDropListDropped)=\"onDrop($event)\">\n @for (entity of selectedEntities(); track entity[displayExp()]; let i = $index) {\n <div cdkDrag rtElem=\"item\" [rtMod]=\"{ draggable: isListDraggable() }\" [cdkDragDisabled]=\"!isListDraggable()\">\n @if (isListDraggable()) {\n <div rtElem=\"item-mover\">\n <div rtElem=\"item-control\">\n <button\n cdkDragHandle\n mat-icon-button\n type=\"button\"\n rtElem=\"item-control-button\"\n rtMod=\"draggable\"\n matTooltip=\"Hold button to drag\"\n matTooltipPosition=\"right\"\n [matTooltipDisabled]=\"isMobile()\">\n <mat-icon [rtIconOutlined]=\"true\">open_with</mat-icon>\n </button>\n </div>\n </div>\n }\n\n @if (editedItemIndex() === i) {\n <mat-form-field rtElem=\"item-input\" subscriptSizing=\"dynamic\" [appearance]=\"appearance()\">\n <input matInput type=\"text\" [value]=\"entity[displayExp()]\" (keydown.enter)=\"changeValue(entity[displayExp()])\" />\n </mat-form-field>\n } @else if (itemTitleTpl()) {\n <ng-container *ngTemplateOutlet=\"itemTitleTpl() || null; context: { $implicit: entity }\" />\n } @else {\n <span\n #titleTpl\n rtElem=\"item-title\"\n matTooltipPosition=\"above\"\n [rtHideTooltipDirective]=\"titleTpl\"\n [isTooltipShown]=\"!isMobile()\"\n [matTooltip]=\"\n useNameBreaking()\n ? (entity[displayExp()] | entityToString | breakString)\n : (entity[displayExp()] | entityToString)\n \"\n [matTooltipDisabled]=\"isMobile()\">\n @if (useNameBreaking()) {\n {{\n useTitleCase()\n ? (entity[displayExp()] | entityToString | breakString | titlecase)\n : (entity[displayExp()] | entityToString | breakString)\n }}\n } @else {\n {{ useTitleCase() ? (entity[displayExp()] | entityToString | titlecase) : entity[displayExp()] }}\n }\n </span>\n }\n\n <div rtElem=\"item-controls\">\n @if (additionalControlTpl()) {\n <ng-container *ngTemplateOutlet=\"additionalControlTpl() || null; context: { $implicit: entity }\" />\n }\n\n @if (isItemsEditable()) {\n @if (editedItemIndex() === i) {\n <div rtElem=\"item-control\">\n <button\n mat-icon-button\n type=\"button\"\n rtElem=\"item-control-button\"\n matTooltipPosition=\"left\"\n matTooltip=\"Reset\"\n [matTooltipDisabled]=\"isMobile()\"\n (click)=\"setEditModState(null)\">\n <mat-icon [rtIconOutlined]=\"true\">refresh</mat-icon>\n </button>\n </div>\n }\n\n <div rtElem=\"item-control\">\n <button\n mat-icon-button\n type=\"button\"\n rtElem=\"item-control-button\"\n matTooltipPosition=\"right\"\n [matTooltip]=\"editedItemIndex() === i ? 'Apply' : 'Edit item'\"\n [matTooltipDisabled]=\"isMobile()\"\n (click)=\"editedItemIndex() === i ? changeValue(entity[displayExp()]) : setEditModState(i)\">\n <mat-icon [rtIconOutlined]=\"true\">{{ editedItemIndex() === i ? 'done' : 'edit' }}</mat-icon>\n </button>\n </div>\n }\n\n @if (isDeleteButtonShown()) {\n <div rtElem=\"item-control\">\n <button\n mat-icon-button\n type=\"button\"\n rtElem=\"item-control-button\"\n matTooltip=\"Remove the Item from the List\"\n matTooltipPosition=\"left\"\n [rtMod]=\"{ active: !readonlyEntitiesKeys().includes(entity[keyExp()]) }\"\n [matTooltipDisabled]=\"isMobile()\"\n [disabled]=\"readonlyEntitiesKeys().includes(entity[keyExp()])\"\n (click)=\"onDelete(entity[keyExp()])\">\n <mat-icon [rtIconOutlined]=\"true\">delete</mat-icon>\n </button>\n </div>\n }\n </div>\n </div>\n }\n </div>\n</ng-container>\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n Directive,\n effect,\n forwardRef,\n inject,\n Injector,\n input,\n InputSignal,\n InputSignalWithTransform,\n model,\n ModelSignal,\n OnInit,\n output,\n OutputEmitterRef,\n Signal,\n signal,\n TemplateRef,\n untracked,\n WritableSignal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport {\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { noop } from 'rxjs';\nimport { distinctUntilChanged, filter } from 'rxjs/operators';\n\nimport { BlockDirective, ElemDirective, Nullable } from '@rt-tools/core';\nimport {\n areArraysEqual,\n areArraysEqualUnordered,\n checkIsEntityInArrayByKey,\n OVERLAY_POSITIONS,\n RtEscapeKeyDirective,\n sortByAlphabet,\n transformArrayInput,\n} from '@rt-tools/utils';\nimport { RtuiDynamicSelectorListActionsComponent } from '../actions/rtui-dynamic-selector-list-actions.component';\nimport { RtuiDynamicSelectorsDirective } from '../dynamic-selectors-directive';\nimport { RtuiMultiSelectorPopupComponent } from '../multi-selector-popup/rtui-multi-selector-popup.component';\nimport { RtuiDynamicSelectorPlaceholderComponent } from '../placeholder/rtui-dynamic-selector-placeholder.component';\nimport {\n RtuiDynamicSelectorItemAdditionalControlDirective,\n RtuiDynamicSelectorItemTitleDirective,\n RtuiDynamicSelectorSelectedListComponent,\n} from '../selected-list/rtui-dynamic-selector-selected-list.component';\nimport { BooleanInput } from '@angular/cdk/coercion';\n\ninterface FormModel {\n autocompleteControl: FormControl<Nullable<string>>;\n}\n\n/** Directive for row actions located outside a row menu button */\n@Directive({\n selector: '[rtuiDynamicSelectorAdditionalControlDirective]',\n})\nexport class RtuiDynamicSelectorAdditionalControlDirective {}\n\n/** Directive for custom item title template, projected from rtui-dynamic-selector down to selected-list */\n@Directive({\n selector: '[rtuiDynamicSelectorItemTitleProjectionDirective]',\n})\nexport class RtuiDynamicSelectorItemTitleProjectionDirective {}\n\n@Component({\n selector: 'rtui-dynamic-selector',\n templateUrl: './rtui-dynamic-selector.component.html',\n styleUrls: ['./rtui-dynamic-selector.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ReactiveFormsModule,\n NgTemplateOutlet,\n CdkOverlayOrigin,\n CdkConnectedOverlay,\n\n // directives\n BlockDirective,\n ElemDirective,\n RtEscapeKeyDirective,\n RtuiDynamicSelectorItemAdditionalControlDirective,\n RtuiDynamicSelectorItemTitleDirective,\n\n // components\n RtuiMultiSelectorPopupComponent,\n RtuiDynamicSelectorPlaceholderComponent,\n RtuiDynamicSelectorListActionsComponent,\n RtuiDynamicSelectorSelectedListComponent,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RtuiDynamicSelectorComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: RtuiDynamicSelectorComponent,\n multi: true,\n },\n ],\n})\nexport class RtuiDynamicSelectorComponent<ENTITY extends Record<string, unknown>, KEY extends Extract<keyof ENTITY, string>>\n extends RtuiDynamicSelectorsDirective\n implements ControlValueAccessor, Validator, OnInit\n{\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n readonly #injector: Injector = inject(Injector);\n readonly #fb: FormBuilder = inject(FormBuilder);\n\n /** Config for overlay selector */\n protected readonly connectedOverlayPositions: ConnectedPosition[] = [...OVERLAY_POSITIONS];\n\n public form: FormGroup<FormModel> = this.#fb.group<FormModel>({\n autocompleteControl: this.#fb.control<Nullable<string>>(null), // used only for UI\n });\n /** Target element for overlay selector */\n public selectedOverlayTrigger: Nullable<CdkOverlayOrigin> = null;\n\n /** A model's field which should be used for http-requests */\n public keyExp: InputSignal<KEY> = input.required();\n /** A model's field which should be shown in ui */\n public displayExp: InputSignal<KEY> = input.required();\n /** All entities available entities */\n public entities: InputSignalWithTransform<ENTITY[], ENTITY[]> = input.required<ENTITY[], ENTITY[]>({\n transform: (value: unknown) => transformArrayInput(value),\n });\n /** Navigation button title for popup actions */\n public navigateButtonTitle: InputSignal<string> = input<string>('');\n /** Navigation button link for popup actions */\n public navigateLink: InputSignal<string> = input<string>('');\n /** Entity keys that can't be changed */\n public readonlyEntitiesKeys: InputSignalWithTransform<ENTITY[KEY][], ENTITY[KEY][]> = input<ENTITY[KEY][], ENTITY[KEY][]>([], {\n transform: (value: ENTITY[KEY][]) => transformArrayInput(value),\n });\n /** Selected entities */\n public chosenEntities: ModelSignal<ENTITY[]> = model<ENTITY[]>([]);\n /** Indicates is selection available */\n public isSelectionAvailable: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is placeholder shown */\n public isPlaceholderShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates that a list of entities is being loading */\n public loading: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates that a list of entities is being pending */\n public pending: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates that a list of entities is being fetching */\n public fetching: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates lazy loading is used */\n public isLazyLoad: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates local search is used */\n public isLocalSearch: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is change multi select mode toggle shown */\n public isMultiToggleShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is Select all button shown */\n public isSelectAllButtonShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is Open popup button shown */\n public isOpenPopupButtonShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Init search term value */\n public searchTerm: InputSignal<string> = input('');\n /** Indicates that an additional control has been changed */\n public additionalControlChanged: InputSignal<boolean> = input(false);\n /** Custom sort function for entities list in popup */\n public sortFn: InputSignal<Nullable<(a: ENTITY, b: ENTITY) => number>> = input<Nullable<(a: ENTITY, b: ENTITY) => number>>(null);\n\n /** Output search action */\n public readonly searchAction: OutputEmitterRef<string> = output<string>();\n /** Output scroll action, needed for lazy loading */\n public readonly scrollAction: OutputEmitterRef<void> = output<void>();\n /** Output temporary selection action, needed for store values */\n public readonly temporarySelectAction: OutputEmitterRef<ENTITY[]> = output<ENTITY[]>();\n /** Output reset list to initial value action */\n public readonly resetAction: OutputEmitterRef<void> = output<void>();\n /** Output selection change action */\n public readonly selectionChangeAction: OutputEmitterRef<ENTITY[]> = output<ENTITY[]>();\n\n /** List of entities for local processing */\n readonly #entities: WritableSignal<ENTITY[]> = signal([]);\n readonly #autocompleteControlValue: WritableSignal<string> = signal('');\n /** Initial entities ids */\n readonly #initialEntityIds: WritableSignal<Array<ENTITY[KEY]>> = signal([]);\n /** Current selected entities ids */\n readonly #selectedEntityIds: WritableSignal<Array<ENTITY[KEY]>> = signal([]);\n /** Current selected entities */\n public readonly selectedEntities: Signal<ENTITY[]> = computed(() => {\n return this.#selectedEntityIds()\n .map((id: ENTITY[KEY]) => this.entities().find((el: ENTITY) => id === el[this.keyExp()]))\n .filter((el: Nullable<ENTITY>): el is ENTITY => !!el);\n });\n /** Indicates is popup selector visible */\n public readonly isSelectionControlShown: WritableSignal<boolean> = signal(false);\n /** Indicates is no data */\n public readonly isNoDataPlaceholderShown: Signal<boolean> = computed(() => {\n return !this.selectedEntities().length && !this.searchTerm() && (!this.entitiesToSelect()?.length || !this.isSelectionAvailable());\n });\n /** Indicates reset selected button is disabled */\n public readonly isResetButtonDisabled: Signal<boolean> = computed(() => {\n return areArraysEqual(this.#selectedEntityIds(), this.#initialEntityIds()) && !this.additionalControlChanged();\n });\n /** Indicates clear selected button is disabled */\n public readonly isClearButtonDisabled: Signal<boolean> = computed(() => {\n return areArraysEqualUnordered(this.#selectedEntityIds(), this.readonlyEntitiesKeys()) && !this.additionalControlChanged();\n });\n /** Entities can be chosen, except selected on init */\n public readonly entitiesToSelect: Signal<ENTITY[]> = computed(() => {\n return this.#entities()\n .filter((entity: ENTITY) => !checkIsEntityInArrayByKey<ENTITY, KEY>(this.selectedEntities(), entity, this.keyExp()))\n .filter((entity: ENTITY) => {\n return (\n (typeof entity[this.displayExp()] === 'string' || typeof entity[this.displayExp()] === 'number') &&\n entity[this.displayExp()]?.toString().toLowerCase().includes(this.#autocompleteControlValue().toLowerCase())\n );\n })\n .sort((a: ENTITY, b: ENTITY) => {\n return this.sortFn() ? this.sortFn()!(a, b) : sortByAlphabet(a, b, this.displayExp());\n });\n });\n\n /** Additional control for entity */\n public readonly additionalControlTpl: Signal<Nullable<TemplateRef<{ $implicit: ENTITY }>>> = contentChild(\n RtuiDynamicSelectorAdditionalControlDirective,\n {\n read: TemplateRef,\n }\n );\n /** Custom item title template */\n public readonly itemTitleTpl: Signal<Nullable<TemplateRef<{ $implicit: ENTITY }>>> = contentChild(\n RtuiDynamicSelectorItemTitleProjectionDirective,\n {\n read: TemplateRef,\n }\n );\n\n /** Selected entities ids for compare */\n #selectedEntityIdsForCompare: Array<ENTITY[KEY]> = [];\n /** Indicates is selector init */\n #isFormInit: boolean = false;\n\n /** Value accessor actions */\n #onTouched: () => void = noop;\n #onChanged: (value: Array<ENTITY[KEY]>) => void = noop;\n\n public ngOnInit(): void {\n this.form.controls.autocompleteControl.valueChanges\n .pipe(distinctUntilChanged(), takeUntilDestroyed(this.#destroyRef))\n .subscribe((value: Nullable<string>): void => {\n this.#autocompleteControlValue.set(value || '');\n });\n\n this.form.statusChanges\n .pipe(\n filter(() => typeof this.#onTouched === 'function'),\n takeUntilDestroyed(this.#destroyRef)\n )\n .subscribe((): void => {\n this.#onTouched();\n });\n\n /** Set list of selected entities if parent use ModelSignal instead of FormControl */\n toObservable(this.chosenEntities, { injector: this.#injector })\n .pipe(\n filter((list: ENTITY[]) => !!list?.length),\n takeUntilDestroyed(this.#destroyRef)\n )\n .subscribe((list: ENTITY[]) => {\n const chosenListIds: ReadonlyArray<ENTITY[KEY]> = list.map((entity: ENTITY) => entity[this.keyExp()]);\n const selectedEntityIds: ReadonlyArray<ENTITY[KEY]> = this.#selectedEntityIds();\n const chosenListIdsForCompare: ENTITY[KEY][] = [...chosenListIds].sort();\n const selectedEntityIdsForCompare: ENTITY[KEY][] = [...selectedEntityIds].sort();\n\n if (!areArraysEqual(chosenListIdsForCompare, selectedEntityIdsForCompare)) {\n this.#selectedEntityIds.set([...chosenListIds]);\n this.#initialEntityIds.set([...chosenListIds]);\n }\n });\n\n /** Set list of selected entities ids for compare */\n effect(\n () => {\n const selectedEntityIds: Array<ENTITY[KEY]> = this.selectedEntities().map((entity: ENTITY) => {\n return entity[this.keyExp()];\n });\n\n if (!areArraysEqual(this.#selectedEntityIdsForCompare, selectedEntityIds) && this.#isFormInit) {\n this.#selectedEntityIdsForCompare = selectedEntityIds;\n this.#changeControlValue(selectedEntityIds);\n this.chosenEntities.set(untracked(() => this.selectedEntities()));\n this.selectionChangeAction.emit(untracked(() => this.selectedEntities()));\n } else if (!this.#isFormInit && this.#entities().length) {\n this.#selectedEntityIdsForCompare = selectedEntityIds;\n this.#isFormInit = true;\n }\n },\n { injector: this.#injector }\n );\n\n /** Set list of values */\n effect(\n () => {\n if (this.entities() && Array.isArray(this.entities())) {\n if (!areArraysEqual(this.entities(), this.#entities())) {\n this.#entities.set(this.entities());\n }\n }\n },\n { injector: this.#injector }\n );\n }\n\n // ––––––––––––– Value Accessor –––––––––––––––\n\n public writeValue(value: Array<ENTITY[KEY]>): void {\n if (Array.isArray(value)) {\n if (value.length) {\n this.#selectedEntityIds.set(value);\n this.#initialEntityIds.set(value);\n }\n }\n }\n\n public registerOnChange(fn: (value: Array<ENTITY[KEY]>) => void): void {\n this.#onChanged = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.#onTouched = fn;\n }\n\n public validate(): ValidationErrors | null {\n return this.form.valid ? null : { formInvalid: true };\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this.#onTouched = fn;\n }\n\n // ––––––––––––– Actions –––––––––––––––\n\n /** Show popup selector */\n public showSelectionControl(trigger: CdkOverlayOrigin): void {\n this.selectedOverlayTrigger = trigger;\n this.isSelectionControlShown.set(true);\n }\n\n /** Hide popup selector */\n public hideSelectionControl(): void {\n this.isSelectionControlShown.set(false);\n }\n\n /** Add entity to or delete entity from list of selected */\n public toggleEntity(keyValue: ENTITY[KEY]): void {\n const entity: Nullable<ENTITY> = this.entities().find((entity: ENTITY) => {\n return entity[this.keyExp()] === keyValue;\n });\n\n if (!entity) {\n return;\n }\n\n const isRemoveSelected: boolean = !!this.selectedEntities().find((selectedEntity: ENTITY) => {\n return selectedEntity[this.keyExp()] === keyValue;\n });\n\n if (isRemoveSelected) {\n this.#selectedEntityIds.update((selectedEntityIds: ENTITY[KEY][]) => {\n return selectedEntityIds.filter((id: ENTITY[KEY]) => {\n return id !== keyValue;\n });\n });\n } else {\n this.#selectedEntityIds.update((selectedEntityIds: ENTITY[KEY][]) => {\n return [...selectedEntityIds, entity[this.keyExp()]];\n });\n\n this.form.controls.autocompleteControl.setValue(null);\n this.hideSelectionControl();\n }\n }\n\n /** Clear list of selected entities ids */\n public clearList(): void {\n this.#selectedEntityIds.update((list: ENTITY[KEY][]) => {\n return list.filter((el: ENTITY[KEY]) => this.readonlyEntitiesKeys().includes(el));\n });\n }\n\n /** Reset list of selected entities ids to init value */\n public resetList(): void {\n this.#selectedEntityIds.set([...this.#initialEntityIds()]);\n this.resetAction.emit();\n }\n\n /** Proceed selected entities ids */\n public select(values: ENTITY[KEY][]): void {\n if (this.isSingleSelection()) {\n const entity: Nullable<ENTITY> = this.entities().find((entity: ENTITY) => {\n return entity[this.keyExp()] === values[0];\n });\n\n if (entity) {\n this.#selectedEntityIds.set([entity[this.keyExp()]]);\n this.hideSelectionControl();\n }\n } else {\n values.forEach((value: ENTITY[KEY]) => this.toggleEntity(value));\n }\n }\n\n /** Scroll action, needed for lazy load mode */\n public scroll(): void {\n this.scrollAction.emit();\n }\n\n /** Search action */\n public search(searchTerm: string): void {\n this.searchAction.emit(searchTerm);\n }\n\n /** Set temporary selection, needed for lazy load mode */\n public setTemporarySelection(values: ENTITY[]): void {\n this.temporarySelectAction.emit(values);\n }\n\n /** Proceed move items in list */\n public onDrop(event: CdkDragDrop<ENTITY[]>): void {\n const updatedList: ENTITY[] = untracked(() => this.selectedEntities());\n moveItemInArray(updatedList, event.previousIndex, event.currentIndex);\n this.#entities.set(updatedList);\n this.#selectedEntityIds.set(updatedList.map((el: ENTITY) => el[this.keyExp()]));\n }\n\n // ––––––––––––– Private Methods –––––––––––––––\n\n /** Emit change control action */\n #changeControlValue(selectedEntityIds: Array<ENTITY[KEY]>): void {\n if (Array.isArray(selectedEntityIds) && typeof this.#onChanged === 'function') {\n this.#onChanged(selectedEntityIds);\n }\n }\n}\n","<form [formGroup]=\"form\">\n <ng-container rtBlock=\"rtui-dynamic-selector\">\n @if (isNoDataPlaceholderShown()) {\n <rtui-dynamic-selector-placeholder\n description=\"There are no available items to choose\"\n icon=\"warning\"\n [isButtonShow]=\"false\"\n [isIconOutlined]=\"true\" />\n } @else {\n <rtui-dynamic-selector-selected-list\n [isMobile]=\"isMobile()\"\n [keyExp]=\"keyExp()\"\n [displayExp]=\"displayExp()\"\n [selectedEntities]=\"selectedEntities()\"\n [readonlyEntitiesKeys]=\"readonlyEntitiesKeys()\"\n [isListDraggable]=\"isListDraggable()\"\n [useNameBreaking]=\"useNameBreaking()\"\n [useTitleCase]=\"useTitleCase()\"\n [isDeleteButtonShown]=\"isDeleteButtonShown()\"\n (dropAction)=\"onDrop($event)\"\n (deleteFromSelectedAction)=\"toggleEntity($event)\">\n @if (additionalControlTpl()) {\n <ng-container *rtuiDynamicSelectorItemAdditionalControlDirective=\"let entity\">\n <ng-template *ngTemplateOutlet=\"additionalControlTpl() || null; context: { $implicit: entity }\" />\n </ng-container>\n }\n\n @if (itemTitleTpl()) {\n <ng-container *rtuiDynamicSelectorItemTitleDirective=\"let entity\">\n <ng-template *ngTemplateOutlet=\"itemTitleTpl() || null; context: { $implicit: entity }\" />\n </ng-container>\n }\n </rtui-dynamic-selector-selected-list>\n\n @if ((entitiesToSelect()?.length || !isLocalSearch()) && isSelectionAvailable()) {\n @if (isPlaceholderShown()) {\n <rtui-dynamic-selector-placeholder\n [icon]=\"placeholderIcon()\"\n [description]=\"placeholderDescription()\"\n [buttonTitle]=\"buttonTitle()\"\n [disabled]=\"disabled()\"\n [isIconOutlined]=\"isPlaceholderIconOutlined()\"\n (submitAction)=\"showSelectionControl($event)\" />\n } @else {\n <div rtElem=\"actions\">\n @if (isOpenPopupButtonShown() && this.entitiesToSelect()?.length) {\n <button\n #trigger=\"cdkOverlayOrigin\"\n cdkOverlayOrigin\n type=\"button\"\n class=\"c-button c-button--txt-base--size-sm\"\n [class.--disabled]=\"disabled()\"\n [disabled]=\"disabled()\"\n (click)=\"showSelectionControl(trigger)\">\n {{ buttonTitle() }}\n </button>\n }\n\n <ng-template [ngTemplateOutlet]=\"listActionsTpl\" />\n </div>\n }\n\n @if (selectedOverlayTrigger) {\n <ng-template\n rtEscapeKey\n cdkConnectedOverlay\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayOpen]=\"isSelectionControlShown()\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n [cdkConnectedOverlayOrigin]=\"selectedOverlayTrigger\"\n [cdkConnectedOverlayPositions]=\"connectedOverlayPositions\"\n (backdropClick)=\"hideSelectionControl()\"\n (escapeKeyAction)=\"hideSelectionControl()\">\n <rtui-multi-selector-popup\n [navigateButtonTitle]=\"navigateButtonTitle()\"\n [navigateLink]=\"navigateLink()\"\n [entitiesToSelect]=\"entitiesToSelect()\"\n [appearance]=\"appearance()\"\n [keyExp]=\"keyExp()\"\n [displayExp]=\"displayExp()\"\n [isMobile]=\"isMobile()\"\n [isSingleSelection]=\"isSingleSelection()\"\n [isSelectAllButtonShown]=\"isSelectAllButtonShown()\"\n [loading]=\"loading()\"\n [fetching]=\"fetching()\"\n [useNameBreaking]=\"useNameBreaking()\"\n [searchTerm]=\"searchTerm()\"\n [isLazyLoad]=\"isLazyLoad()\"\n [isLocalSearch]=\"isLocalSearch()\"\n [isMultiToggleShown]=\"isMultiToggleShown()\"\n (searchAction)=\"search($event)\"\n (scrollAction)=\"scroll()\"\n (temporarySelectAction)=\"setTemporarySelection($event)\"\n (closeAction)=\"hideSelectionControl()\"\n (submitAction)=\"select($event)\" />\n </ng-template>\n }\n } @else if (isSelectionAvailable()) {\n <div rtElem=\"actions\">\n <ng-template [ngTemplateOutlet]=\"listActionsTpl\" />\n </div>\n }\n }\n </ng-container>\n</form>\n\n<ng-template #listActionsTpl>\n <rtui-dynamic-selector-list-actions\n [isMobile]=\"isMobile()\"\n [disabled]=\"disabled()\"\n [isResetButtonDisabled]=\"isResetButtonDisabled()\"\n [isClearButtonDisabled]=\"isClearButtonDisabled()\"\n (resetAction)=\"resetList()\"\n (clearAction)=\"clearList()\" />\n</ng-template>\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n DestroyRef,\n Directive,\n forwardRef,\n inject,\n input,\n InputSignalWithTransform,\n model,\n ModelSignal,\n OnInit,\n Signal,\n signal,\n TemplateRef,\n untracked,\n WritableSignal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatInput, MatLabel } from '@angular/material/input';\nimport { noop } from 'rxjs';\nimport { distinctUntilChanged, filter } from 'rxjs/operators';\n\nimport { BlockDirective, ElemDirective, Nullable } from '@rt-tools/core';\nimport { areArraysEqual, transformArrayInput, transformStringInput } from '@rt-tools/utils';\nimport {\n RtuiDynamicSelectorItemAdditionalControlDirective,\n RtuiDynamicSelectorListActionsComponent,\n RtuiDynamicSelectorPlaceholderComponent,\n RtuiDynamicSelectorSelectedListComponent,\n} from '../.';\nimport { RtuiDynamicSelectorsDirective } from '../dynamic-selectors-directive';\nimport { BooleanInput } from '@angular/cdk/coercion';\n\ninterface FormModel {\n control: FormControl<string[]>;\n controlForUi: FormControl<Nullable<string>>;\n}\n\n/** Directive for row actions located outside a row menu button */\n@Directive({\n selector: '[rtuiDynamicInputAdditionalControlDirective]',\n})\nexport class RtuiDynamicInputAdditionalControlDirective {}\n\n@Component({\n selector: 'rtui-dynamic-input',\n templateUrl: './rtui-dynamic-input.component.html',\n styleUrls: ['./rtui-dynamic-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n ReactiveFormsModule,\n\n // material\n MatFormField,\n MatLabel,\n MatInput,\n\n // directives\n BlockDirective,\n ElemDirective,\n RtuiDynamicSelectorItemAdditionalControlDirective,\n\n // components\n RtuiDynamicSelectorPlaceholderComponent,\n RtuiDynamicSelectorListActionsComponent,\n RtuiDynamicSelectorSelectedListComponent,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RtuiDynamicInputComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: RtuiDynamicInputComponent,\n multi: true,\n },\n ],\n})\nexport class RtuiDynamicInputComponent extends RtuiDynamicSelectorsDirective implements ControlValueAccessor, Validator, OnInit {\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n readonly #fb: FormBuilder = inject(FormBuilder);\n\n public form: FormGroup<FormModel> = this.#fb.group<FormModel>({\n control: this.#fb.nonNullable.control<string[]>([]),\n controlForUi: this.#fb.control<Nullable<string>>(null), // used only for UI\n });\n\n /** Indicates is placeholder shown */\n public isPlaceholderShown: ModelSignal<Nullable<boolean>> = model<Nullable<boolean>>(true);\n /** Indicates is inputs-editable */\n public isInputsEditable: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Input label */\n public inputLabel: InputSignalWithTransform<string, unknown> = input<string, unknown>('', {\n transform: transformStringInput,\n });\n /** Input placeholder */\n public inputPlaceholder: InputSignalWithTransform<string, unknown> = input<string, unknown>('', {\n transform: transformStringInput,\n });\n /** Entity keys that can't be changed */\n public readonlyEntitiesKeys: InputSignalWithTransform<string[], string[]> = input<string[], string[]>([], {\n transform: (value: string[]) => transformArrayInput(value),\n });\n\n /** Array of selected entities */\n public readonly selectedEntities: WritableSignal<Array<{ id: string }>> = signal([]);\n /** Indicates is input control shown */\n public readonly isInputControlShown: WritableSignal<boolean> = signal(false);\n /** Indicates the reset changes button is disabled */\n public readonly isResetButtonDisabled: WritableSignal<boolean> = signal(false);\n\n /** Initial entities */\n readonly #initialEntities: WritableSignal<string[]> = signal([]);\n\n /** Additional control for entity */\n public readonly additionalControlTpl: Signal<Nullable<TemplateRef<{ $implicit: string }>>> = contentChild(\n RtuiDynamicInputAdditionalControlDirective,\n {\n read: TemplateRef,\n }\n );\n\n #onTouched: () => void = noop;\n #onChanged: (value: string[]) => void = noop;\n\n public ngOnInit(): void {\n this.form.controls.control.valueChanges\n .pipe(\n filter((value: string[]) => Array.isArray(value) && typeof this.#onChanged === 'function'),\n distinctUntilChanged(),\n takeUntilDestroyed(this.#destroyRef)\n )\n .subscribe((value: string[]): void => {\n this.#onChanged(value);\n this.#setResetListButtonState(value);\n this.selectedEntities.set(value.map((el: string) => ({ id: el })));\n });\n\n this.form.controls.control.statusChanges\n .pipe(\n filter(() => typeof this.#onTouched === 'function'),\n takeUntilDestroyed(this.#destroyRef)\n )\n .subscribe((): void => {\n this.#onTouched();\n });\n }\n\n // ––––––––––––– Value Accessor –––––––––––––––\n\n public writeValue(value: string[]): void {\n if (Array.isArray(value)) {\n if (value.length) {\n this.hideSelectionControl();\n this.form.controls.control.setValue(value, { emitEvent: false });\n this.#initialEntities.set(value);\n this.selectedEntities.set(value.map((el: string) => ({ id: el })));\n this.#setResetListButtonState(value);\n } else {\n this.showSelectionControl();\n }\n }\n }\n\n public registerOnChange(fn: (value: string[]) => void): void {\n this.#onChanged = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.#onTouched = fn;\n }\n\n public validate(): ValidationErrors | null {\n return this.form.valid ? null : { formInvalid: true };\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this.#onTouched = fn;\n }\n\n // ––––––––––––– Actions –––––––––––––––\n\n /** Hide placeholder */\n public hidePlaceholder(): void {\n this.showSelectionControl();\n this.isPlaceholderShown.set(false);\n }\n\n /** Show control */\n public showSelectionControl(): void {\n this.isInputControlShown.set(true);\n }\n\n /** Hide control */\n public hideSelectionControl(): void {\n this.isInputControlShown.set(false);\n }\n\n /** Clear list of selected entities ids */\n public clearList(): void {\n this.form.controls.control.setValue([]);\n }\n\n /** Reset a list of selected entities ids to init value */\n public resetList(): void {\n this.form.controls.control.setValue(this.#initialEntities());\n this.hideSelectionControl();\n }\n\n /** Add or delete entity */\n public toggleEntity(keyValue: string): void {\n if (keyValue) {\n const selectedEntityIds: string[] = this.form.value.control || [];\n\n if (selectedEntityIds.includes(keyValue)) {\n this.form.controls.control.setValue(selectedEntityIds.filter((id: string) => id !== keyValue));\n } else {\n this.form.controls.control.setValue([...selectedEntityIds, keyValue]);\n }\n }\n }\n\n /** Change entity value */\n public changeEntity(data: { prev: string; new: string }): void {\n this.form.controls.control.setValue(this.form.controls.control.value.map((el: string) => (el === data.prev ? data.new : el)));\n }\n\n /** Add new item */\n public onAddEntity(): void {\n if (this.form.controls.controlForUi.value && this.form.controls.control.value.includes(this.form.controls.controlForUi.value)) {\n this.form.controls.controlForUi.setValue(null);\n this.hideSelectionControl();\n } else if (this.form.controls.controlForUi.value) {\n this.toggleEntity(this.form.controls.controlForUi.value);\n this.form.controls.controlForUi.setValue(null);\n this.hideSelectionControl();\n }\n }\n\n /** Process move items in a list */\n public onDrop(event: CdkDragDrop<Array<{ id: string }>>): void {\n const updatedList: Array<{ id: string }> = untracked(() => this.selectedEntities());\n moveItemInArray(updatedList, event.previousIndex, event.currentIndex);\n this.form.controls.control.patchValue(updatedList.map((el: { id: string }) => el.id));\n }\n\n /** Set the reset list button state */\n #setResetListButtonState(value: string[]): void {\n this.isResetButtonDisabled.set(areArraysEqual(this.#initialEntities(), value));\n }\n}\n","<form [formGroup]=\"form\">\n <ng-container rtBlock=\"rtui-dynamic-selector\">\n @if (isPlaceholderShown()) {\n <rtui-dynamic-selector-placeholder\n [icon]=\"placeholderIcon()\"\n [description]=\"placeholderDescription()\"\n [buttonTitle]=\"buttonTitle()\"\n [isIconOutlined]=\"isPlaceholderIconOutlined()\"\n (submitAction)=\"hidePlaceholder()\" />\n } @else {\n <rtui-dynamic-selector-selected-list\n keyExp=\"id\"\n displayExp=\"id\"\n [appearance]=\"appearance()\"\n [isMobile]=\"isMobile()\"\n [selectedEntities]=\"selectedEntities()\"\n [readonlyEntitiesKeys]=\"readonlyEntitiesKeys()\"\n [isListDraggable]=\"isListDraggable()\"\n [useNameBreaking]=\"useNameBreaking()\"\n [isDeleteButtonShown]=\"isDeleteButtonShown()\"\n [isItemsEditable]=\"isInputsEditable()\"\n (changeValueAction)=\"changeEntity($event)\"\n (dropAction)=\"onDrop($event)\"\n (deleteFromSelectedAction)=\"toggleEntity($event)\">\n @if (additionalControlTpl()) {\n <ng-container *rtuiDynamicSelectorItemAdditionalControlDirective=\"let entity\">\n <ng-template *ngTemplateOutlet=\"additionalControlTpl() || null; context: { $implicit: entity }\" />\n </ng-container>\n }\n </rtui-dynamic-selector-selected-list>\n\n @if (isInputControlShown()) {\n <mat-form-field [appearance]=\"appearance()\" [style.width.%]=\"100\">\n <mat-label>{{ inputLabel() }}</mat-label>\n\n <input\n matInput\n type=\"text\"\n formControlName=\"controlForUi\"\n [placeholder]=\"inputPlaceholder()\"\n (keydown.enter)=\"onAddEntity()\"\n (focusout)=\"onAddEntity()\" />\n </mat-form-field>\n }\n\n <div rtElem=\"actions\">\n @if (!isInputControlShown() && !isSingleSelection()) {\n <button type=\"button\" class=\"c-button c-button--txt-base--size-sm\" (click)=\"showSelectionControl()\">\n {{ buttonTitle() }}\n </button>\n }\n\n <rtui-dynamic-selector-list-actions\n [isMobile]=\"isMobile()\"\n [isResetButtonDisabled]=\"isResetButtonDisabled()\"\n [isClearButtonDisabled]=\"!form.controls.control.value?.length\"\n (resetAction)=\"resetList()\"\n (clearAction)=\"clearList()\" />\n </div>\n }\n </ng-container>\n</form>\n","import { ChangeDetectionStrategy, Component, computed, DestroyRef, inject, OnInit, Signal, signal, WritableSignal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nimport { BlockDirective, ElemDirective, Nullable } from '@rt-tools/core';\nimport { areArraysEqual, BreakpointService, RtIconOutlinedDirective } from '@rt-tools/utils';\nimport { ASIDE_REF, AsideRef } from '../../../aside/aside.types';\nimport { RtuiAsideContainerComponent, RtuiAsideContainerHeaderDirective } from '../../../aside';\nimport { RtuiDynamicSelectorAdditionalControlDirective, RtuiDynamicSelectorComponent } from '../../../dynamic-selectors';\nimport { RtuiToggleComponent } from '../../../toggle';\nimport { ITable } from '../../util';\n\n@Component({\n selector: 'rtui-test-aside',\n templateUrl: './rt-table-config-aside.component.html',\n styleUrls: ['./rt-table-config-aside.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ReactiveFormsModule,\n MatTooltip,\n MatIcon,\n MatIconButton,\n\n // directives\n BlockDirective,\n ElemDirective,\n RtuiAsideContainerHeaderDirective,\n RtuiDynamicSelectorAdditionalControlDirective,\n RtIconOutlinedDirective,\n\n // standalone components\n RtuiAsideContainerComponent,\n RtuiDynamicSelectorComponent,\n RtuiToggleComponent,\n ],\n providers: [BreakpointService],\n})\nexport class RtTableConfigAsideComponent<ENTITY_TYPE> implements OnInit {\n readonly #breakpointService: BreakpointService = inject(BreakpointService);\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n readonly #fb: FormBuilder = inject(FormBuilder);\n\n public form: FormGroup<ITable.Config.Form<ENTITY_TYPE>> = this.#fb.group({\n isVerticalScrollbarShown: this.#fb.nonNullable.control<boolean>(false),\n isHorizontalScrollbarShown: this.#fb.nonNullable.control<boolean>(false),\n columns: this.#fb.nonNullable.control<(keyof ENTITY_TYPE)[]>([]),\n });\n\n public readonly asideRef: AsideRef<ITable.Config.Data<ENTITY_TYPE>, ITable.Config.Data<ENTITY_TYPE>> = inject(ASIDE_REF) as AsideRef<\n ITable.Config.Data<ENTITY_TYPE>,\n ITable.Config.Data<ENTITY_TYPE>\n >;\n\n public readonly selectedColumns: WritableSignal<ITable.Column<ENTITY_TYPE>[]> = signal(this.asideRef.data.columns);\n public readonly isMobile: Signal<boolean> = computed(() => {\n return !!this.#breakpointService.isMobile();\n });\n public readonly isVisibilityChanged: Signal<boolean> = computed(() => {\n const initValues: (keyof ENTITY_TYPE)[] = this.asideRef.data.columns\n .filter((el: ITable.Column<ENTITY_TYPE>) => el.hidden)\n .map((el: ITable.Column<ENTITY_TYPE>) => el.propName);\n const currentValues: (keyof ENTITY_TYPE)[] = this.selectedColumns()\n .filter((el: ITable.Column<ENTITY_TYPE>) => el.hidden)\n .map((el: ITable.Column<ENTITY_TYPE>) => el.propName);\n return !areArraysEqual(initValues.sort(), currentValues.sort());\n });\n public readonly isOrderChanged: Signal<boolean> = computed(() => {\n const initValues: (keyof ENTITY_TYPE)[] = this.asideRef.data.columns.map((el: ITable.Column<ENTITY_TYPE>) => el.propName);\n const currentValues: (keyof ENTITY_TYPE)[] = this.selectedColumns().map((el: ITable.Column<ENTITY_TYPE>) => el.propName);\n return !areArraysEqual(initValues, currentValues);\n });\n\n public ngOnInit(): void {\n this.form.patchValue(\n {\n isVerticalScrollbarShown: this.asideRef.data?.isVerticalScrollbarShown,\n isHorizontalScrollbarShown: this.asideRef.data?.isHorizontalScrollbarShown,\n columns: this.asideRef.data.columns.map((el: ITable.Column<ENTITY_TYPE>) => el.propName),\n },\n { emitEvent: false }\n );\n this.form.valueChanges.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe(\n (\n value: Partial<{\n isVerticalScrollbarShown: boolean;\n isHorizontalScrollbarShown: boolean;\n columns: (keyof ENTITY_TYPE)[];\n }>\n ) => {\n const updatedList: (ITable.Column<ENTITY_TYPE> & { orderIndex: number })[] = [];\n value?.columns?.forEach((item: keyof ENTITY_TYPE, index: number) => {\n const currentItem: Nullable<ITable.Column<ENTITY_TYPE>> = this.selectedColumns().find(\n (el: ITable.Column<ENTITY_TYPE>) => el.propName === item\n );\n if (currentItem) {\n updatedList.push({ ...currentItem, orderIndex: index });\n }\n });\n this.selectedColumns.set(\n updatedList.sort(\n (a: ITable.Column<ENTITY_TYPE> & { orderIndex: number }, b: ITable.Column<ENTITY_TYPE> & { orderIndex: number }) =>\n a.orderIndex - b.orderIndex\n )\n );\n }\n );\n }\n\n public save(): void {\n this.asideRef.close({\n isVerticalScrollbarShown: this.form.controls.isVerticalScrollbarShown.value,\n isHorizontalScrollbarShown: this.form.controls.isHorizontalScrollbarShown.value,\n columns: this.selectedColumns(),\n });\n }\n\n public cancel(): void {\n this.asideRef.close();\n }\n\n public visibilityChange(entity: ITable.Column<ENTITY_TYPE>): void {\n this.selectedColumns.update((list: ITable.Column<ENTITY_TYPE>[]) => {\n return list.map((el: ITable.Column<ENTITY_TYPE>) => {\n return entity.propName === el.propName ? { ...el, hidden: !el.hidden } : el;\n });\n });\n }\n}\n","<rtui-aside-container\n [isMobile]=\"isMobile()\"\n [pending]=\"false\"\n [isSubmitButtonDisabled]=\"!isVisibilityChanged() && !isOrderChanged() && !form.dirty\"\n (submitAction)=\"save()\"\n (cancelAction)=\"cancel()\">\n <ng-container *rtuiAsideHeader rtBlock=\"c-aside-title\">\n <div rtElem=\"txt\">Edit table configuration</div>\n <div rtElem=\"addition\">Change columns visibility and order, show(hide) scrollbar</div>\n </ng-container>\n <form rtBlock=\"c-form\" [formGroup]=\"form\">\n <div rtElem=\"item\">\n <div rtElem=\"controls\">\n <!-- Vertical scrollbar -->\n <div rtElem=\"control-item\">\n <rtui-toggle formControlName=\"isVerticalScrollbarShown\" label=\"Vertical scrollbar shown\" />\n </div>\n </div>\n\n <div rtElem=\"controls\">\n <!-- Horizontal scrollbar -->\n <div rtElem=\"control-item\">\n <rtui-toggle formControlName=\"isHorizontalScrollbarShown\" label=\"Horizontal scrollbar shown\" />\n </div>\n </div>\n\n <div rtElem=\"controls\">\n <!-- Columns config -->\n <div rtElem=\"control-item\">\n <rtui-dynamic-selector\n keyExp=\"propName\"\n displayExp=\"displayName\"\n formControlName=\"columns\"\n [entities]=\"selectedColumns()\"\n [isMobile]=\"isMobile()\"\n [useNameBreaking]=\"true\"\n [useTitleCase]=\"true\"\n [isSelectionAvailable]=\"false\"\n [isDeleteButtonShown]=\"false\"\n [isListDraggable]=\"true\">\n <ng-container *rtuiDynamicSelectorAdditionalControlDirective=\"let entity\" rtBlock=\"rtui-dynamic-selector\">\n <div rtElem=\"item-control\">\n <button\n mat-icon-button\n type=\"button\"\n aria-label=\"Icon-button for visibility indication\"\n rtElem=\"item-control-button\"\n matTooltip=\"{{ entity.hidden ? 'Hidden, click to show' : 'Shown, click to hide' }}\"\n matTooltipPosition=\"left\"\n [matTooltipDisabled]=\"isMobile()\"\n (click)=\"visibilityChange(entity)\">\n <mat-icon [rtIconOutlined]=\"true\">\n {{ entity.hidden ? 'visibility_off' : 'visibility' }}\n </mat-icon>\n </button>\n </div>\n </ng-container>\n </rtui-dynamic-selector>\n </div>\n </div>\n </div>\n </form>\n</rtui-aside-container>\n","import { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n DestroyRef,\n Directive,\n effect,\n inject,\n Injector,\n input,\n InputSignal,\n InputSignalWithTransform,\n OnInit,\n output,\n OutputEmitterRef,\n Signal,\n signal,\n TemplateRef,\n Type,\n WritableSignal,\n} from '@angular/core';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatMiniFabButton } from '@angular/material/button';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatFormField, MatFormFieldAppearance, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { debounceTime, distinctUntilChanged, filter, map } from 'rxjs/operators';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable, PlatformService, WINDOW } from '@rt-tools/core';\nimport { BreakpointService, isString, PageModel, RtIconOutlinedDirective, transformStringInput } from '@rt-tools/utils';\nimport { RtAsideService } from '../../../aside';\nimport { RtuiHeaderCenterDirective } from '../../../header';\nimport {\n RtuiScrollableContainerComponent,\n RtuiScrollableContainerContentDirective,\n RtuiScrollableContainerHeaderDirective,\n} from '../../../scrollable';\nimport { RtuiSpinnerComponent } from '../../../spinner';\nimport { RtuiToolbarComponent, RtuiToolbarLeftDirective, RtuiToolbarRightDirective } from '../../../toolbar';\nimport { ITable, RtTableConfigService } from '../../util';\nimport { RtuiClearButtonComponent } from '../clear-search-button/rtui-clear-button.component';\nimport { RtuiPaginationComponent } from '../pagination-view/rtui-pagination.component';\nimport { RtTableConfigAsideComponent } from '../table-config-aside/rt-table-config-aside.component';\n\n@Directive({\n selector: '[rtuiTableToolbarSelectorsDirective]',\n})\nexport class RtuiTableToolbarSelectorsDirective {}\n\n@Directive({\n selector: '[rtuiTableToolbarActionsDirective]',\n})\nexport class RtuiTableToolbarActionsDirective {}\n\n@Component({\n selector: 'rtui-table-container',\n templateUrl: './table-container.component.html',\n styleUrls: ['./table-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ReactiveFormsModule,\n NgTemplateOutlet,\n\n // Material\n MatIcon,\n MatFormField,\n MatInput,\n MatPrefix,\n MatSuffix,\n MatMiniFabButton,\n MatTooltip,\n MatCheckbox,\n\n // Standalone components\n RtuiPaginationComponent,\n RtuiClearButtonComponent,\n RtuiToolbarComponent,\n RtuiScrollableContainerComponent,\n RtuiSpinnerComponent,\n\n // Bem\n BlockDirective,\n ElemDirective,\n ModDirective,\n\n // Directives\n RtuiToolbarRightDirective,\n RtuiHeaderCenterDirective,\n RtuiScrollableContainerContentDirective,\n RtuiScrollableContainerHeaderDirective,\n RtIconOutlinedDirective,\n RtuiToolbarLeftDirective,\n ],\n providers: [BreakpointService, RtAsideService, PlatformService],\n})\nexport class RtuiTableContainerComponent<ENTITY_TYPE> implements OnInit {\n readonly #documentRef: Document = inject(DOCUMENT);\n readonly #windowRef: Window = inject(WINDOW);\n readonly #platformService: PlatformService = inject(PlatformService);\n readonly #sanitizer: DomSanitizer = inject(DomSanitizer);\n readonly #injector: Injector = inject(Injector);\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n readonly #breakpointService: BreakpointService = inject(BreakpointService);\n readonly #asideService: RtAsideService = inject(RtAsideService);\n readonly #tableConfigService: RtTableConfigService<ENTITY_TYPE> = inject(RtTableConfigService);\n\n readonly #style: Nullable<CSSStyleDeclaration> = this.#documentRef?.documentElement?.style;\n\n public appearance: InputSignal<MatFormFieldAppearance> = input.required();\n /** Table config storage key */\n public tableConfigStorageKey: InputSignalWithTransform<string, string> = input.required<string, string>({\n transform: transformStringInput,\n });\n /** Current page model from store */\n public pageModel: InputSignal<PageModel> = input.required();\n /** Indicates is mobile view */\n public isMobile: InputSignalWithTransform<boolean, BooleanInput> = input.required<boolean, BooleanInput>({\n transform: booleanAttribute,\n });\n /** Indicates is loading in progress */\n public loading: InputSignalWithTransform<boolean, BooleanInput> = input.required<boolean, BooleanInput>({\n transform: booleanAttribute,\n });\n /** Indicates is fetching in progress */\n public fetching: InputSignalWithTransform<boolean, BooleanInput> = input.required<boolean, BooleanInput>({\n transform: booleanAttribute,\n });\n /** Indicates is placeholder shown */\n public isPlaceholderShown: InputSignalWithTransform<boolean, BooleanInput> = input.required<boolean, BooleanInput>({\n transform: booleanAttribute,\n });\n /** Indicates is pagination shown */\n public isPaginationShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is the refresh button shown */\n public isRefreshButtonShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is a table config button shown */\n public isTableConfigButtonShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is toolbar buttons outlined */\n public isToolbarActionsIconsOutlined: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is filters shown */\n public isFiltersShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is filters empty */\n public isFiltersEmpty: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Current search term from store */\n public searchTerm: InputSignalWithTransform<Nullable<string>, Nullable<string>> = input<Nullable<string>, Nullable<string>>('', {\n transform: (value: Nullable<string>) => (isString(value) ? value.trim() : ''),\n });\n\n /** Current placeholder icon */\n public placeholderIcon: InputSignal<string> = input<string>('search');\n /** Current placeholder title */\n public placeholderTitle: InputSignal<string> = input<string>('No Data Found');\n\n /** Indicates is a small tablet view */\n public readonly isSmallTablet: Signal<Nullable<boolean>> = this.#breakpointService.isSmallTablet;\n /** Config for table */\n public readonly tableConfig: Signal<ITable.Config.Data<ENTITY_TYPE>> = this.#tableConfigService.tableConfig;\n\n /** Page model change output action */\n public readonly pageModelChange: OutputEmitterRef<Partial<PageModel>> = output<Partial<PageModel>>();\n /** Search change output action */\n public readonly searchChange: OutputEmitterRef<Nullable<string>> = output<Nullable<string>>();\n /** Refresh output action */\n public readonly refreshAction: OutputEmitterRef<void> = output<void>();\n /** Clear filters output action */\n public readonly clearFiltersAction: OutputEmitterRef<void> = output<void>();\n\n /** Toolbar selectors template */\n public readonly toolbarSelectorsTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiTableToolbarSelectorsDirective, {\n read: TemplateRef,\n });\n /** Toolbar actions template */\n public readonly toolbarActionsTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiTableToolbarActionsDirective, {\n read: TemplateRef,\n });\n\n /** Fields specified by the directive */\n /** Indicates is multiselect mod enabled */\n public readonly isMultiSelect: WritableSignal<boolean> = signal(false);\n /** Indicates is 'Select All' selector shown */\n public readonly isSelectAllSelectorShown: WritableSignal<boolean> = signal(true);\n /** Indicates is 'Select All' selector disabled */\n public readonly isSelectAllSelectorDisabled: WritableSignal<boolean> = signal(false);\n /** Indicates is all entities selected */\n public readonly isAllEntitiesSelected: WritableSignal<boolean> = signal(false);\n /** Indicates is all entities indeterminate */\n public readonly isAllEntitiesIndeterminate: WritableSignal<boolean> = signal(false);\n /** Current selected entities count */\n public readonly selectedEntitiesCount: WritableSignal<number> = signal(0);\n\n /** Control for search */\n public readonly searchControl: FormControl<Nullable<string>> = new FormControl(null);\n\n public ngOnInit(): void {\n /** Set scrollbar initial styles by config */\n effect(\n () => {\n if (this.tableConfig().columns.length) {\n this.#setScrollbarsVisibility();\n }\n },\n { injector: this.#injector }\n );\n\n this.searchControl.patchValue(this.searchTerm(), { emitEvent: false });\n\n this.searchControl.valueChanges\n .pipe(\n debounceTime(500),\n distinctUntilChanged(),\n map((value: Nullable<string>) => (!!value ? value.trim() : value)),\n takeUntilDestroyed(this.#destroyRef)\n )\n .subscribe((value: Nullable<string>) => {\n if (value !== null) {\n this.searchChange.emit(value);\n }\n });\n }\n\n /** Page model change output action */\n public onPageModelChange(pageModel: Partial<PageModel>): void {\n this.pageModelChange.emit(pageModel);\n }\n\n /** Clear search control and search change output action */\n public onClearSearch(): void {\n this.searchControl.patchValue(null);\n this.searchChange.emit('');\n }\n\n /** Refresh output action */\n public onRefresh(): void {\n if (!this.isPaginationShown()) {\n this.onClearSearch();\n }\n\n this.refreshAction.emit();\n }\n\n /** Clear filters output action */\n public onClearFilters(): void {\n this.clearFiltersAction.emit();\n }\n\n /** Open table config aside */\n public onOpenConfigAside(): void {\n this.#asideService\n .Open<RtTableConfigAsideComponent<ENTITY_TYPE>, ITable.Config.Data<ENTITY_TYPE>, ITable.Config.Data<ENTITY_TYPE>>(\n RtTableConfigAsideComponent,\n 'right',\n this.tableConfig()\n )\n .pipe(filter(Boolean), takeUntilDestroyed(this.#destroyRef))\n .subscribe((value: ITable.Config.Data<ENTITY_TYPE>) => {\n /** Save updated table config */\n this.#tableConfigService.updateConfig(this.tableConfigStorageKey(), value);\n this.#setScrollbarsVisibility();\n });\n }\n\n /** Empty method, set in selectors directive */\n public onToggleAllEntities: (checked: boolean) => void = (): void => {\n return;\n };\n\n /** Set scrollbar styles by config */\n #setScrollbarsVisibility(): void {\n const vertical: string = this.tableConfig().isVerticalScrollbarShown ? '12px' : '0';\n const horizontal: string = this.tableConfig().isHorizontalScrollbarShown ? '12px' : '0';\n\n if (this.#platformService?.isPlatformBrowser && this.#windowRef && this.#style) {\n const safeVerticalValue: Nullable<string> = this.#sanitizer.sanitize(0, vertical);\n const safeHorizontalValue: Nullable<string> = this.#sanitizer.sanitize(0, horizontal);\n this.#style.setProperty('--rt-table-container-content-scrollbar-vertical-width', safeVerticalValue);\n this.#style.setProperty('--rt-table-container-content-scrollbar-horizontal-height', safeHorizontalValue);\n }\n }\n}\n","@if (loading()) {\n <rtui-spinner />\n} @else {\n @if (fetching()) {\n <rtui-spinner [showBackground]=\"true\" />\n }\n <ng-container rtBlock=\"table-container\">\n <rtui-scrollable>\n <ng-container *rtuiScrollableHeader>\n <rtui-toolbar>\n @if (isSmallTablet() && !isPlaceholderShown() && (isMultiSelect() || toolbarSelectorsTpl())) {\n <ng-container *rtuiToolbarLeft>\n <ng-template *ngTemplateOutlet=\"selectorsTpl\" />\n </ng-container>\n }\n\n <ng-container *rtuiToolbarRight>\n <div rtElem=\"toolbar\">\n <div rtElem=\"toolbar-actions\" [rtMod]=\"{ end: isMultiSelect() ?? toolbarSelectorsTpl() }\">\n @if (!isSmallTablet() && !isPlaceholderShown() && (isMultiSelect() || toolbarSelectorsTpl())) {\n <ng-template *ngTemplateOutlet=\"selectorsTpl\" />\n }\n\n @if (toolbarActionsTpl()) {\n <ng-template *ngTemplateOutlet=\"toolbarActionsTpl() ?? null\" />\n\n <div rtElem=\"toolbar-actions-divider\"></div>\n }\n\n @if (isFiltersShown()) {\n <button\n mat-mini-fab\n type=\"button\"\n aria-label=\"Icon-button for clear filters\"\n class=\"c-button c-button--fab\"\n matTooltip=\"Clear filters\"\n matTooltipPosition=\"below\"\n [matTooltipDisabled]=\"isMobile()\"\n [disabled]=\"isFiltersEmpty()\"\n (click)=\"onClearFilters()\">\n <mat-icon [rtIconOutlined]=\"isToolbarActionsIconsOutlined()\">block</mat-icon>\n </button>\n }\n\n @if (isRefreshButtonShown()) {\n <button\n mat-mini-fab\n type=\"button\"\n aria-label=\"Icon-button for table refresh\"\n class=\"c-button c-button--fab\"\n matTooltip=\"Refresh\"\n matTooltipPosition=\"below\"\n [matTooltipDisabled]=\"isMobile()\"\n (click)=\"onRefresh()\">\n <mat-icon [rtIconOutlined]=\"isToolbarActionsIconsOutlined()\">sync</mat-icon>\n </button>\n }\n\n @if (isTableConfigButtonShown()) {\n <button\n mat-mini-fab\n type=\"button\"\n aria-label=\"Icon-button for table config\"\n class=\"c-button c-button--fab\"\n matTooltip=\"Table configuration\"\n matTooltipPosition=\"below\"\n [matTooltipDisabled]=\"isMobile()\"\n (click)=\"onOpenConfigAside()\">\n <mat-icon [rtIconOutlined]=\"isToolbarActionsIconsOutlined()\">view_column</mat-icon>\n </button>\n }\n </div>\n\n @if ((isPlaceholderShown() && searchControl.value) || !isPlaceholderShown() || searchControl.dirty) {\n <div rtElem=\"toolbar-search\">\n <mat-form-field subscriptSizing=\"dynamic\" [appearance]=\"appearance()\" [style.width.%]=\"100\">\n <input matInput placeholder=\"Search...\" type=\"text\" [formControl]=\"searchControl\" />\n\n <mat-icon matPrefix [rtIconOutlined]=\"true\">search</mat-icon>\n\n <rtui-clear-button\n matSuffix\n [isButtonShown]=\"!!searchControl.value\"\n (clickAction)=\"onClearSearch()\" />\n </mat-form-field>\n </div>\n }\n </div>\n </ng-container>\n </rtui-toolbar>\n </ng-container>\n\n <ng-container *rtuiScrollableContent>\n @if (!isPlaceholderShown() || pageModel()?.totalCount) {\n <div rtElem=\"content\">\n <ng-content />\n </div>\n\n @if (isPaginationShown()) {\n <div rtElem=\"pagination\">\n <rtui-pagination\n [isMobile]=\"!!isMobile()\"\n [currentPageModel]=\"pageModel()\"\n (pageModelChange)=\"onPageModelChange($event)\" />\n </div>\n }\n } @else {\n <div rtElem=\"placeholder\">\n <mat-icon rtElem=\"placeholder-icon\" [rtIconOutlined]=\"true\">{{ placeholderIcon() }}</mat-icon>\n\n <div rtElem=\"placeholder-title\">{{ placeholderTitle() }}</div>\n </div>\n }\n </ng-container>\n </rtui-scrollable>\n\n <ng-template #selectorsTpl>\n <div rtElem=\"selectors\">\n @if (isMultiSelect()) {\n @if (isSelectAllSelectorShown()) {\n <mat-checkbox\n [checked]=\"isAllEntitiesSelected()\"\n [indeterminate]=\"!isAllEntitiesSelected() && isAllEntitiesIndeterminate()\"\n [disabled]=\"isSelectAllSelectorDisabled()\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"onToggleAllEntities($event.checked)\">\n <div rtElem=\"selectors-label\">Select all</div>\n </mat-checkbox>\n } @else {\n <div rtElem=\"selectors-counter\">Selected: {{ selectedEntitiesCount() }}</div>\n }\n }\n\n @if (toolbarSelectorsTpl()) {\n <ng-template *ngTemplateOutlet=\"toolbarSelectorsTpl() ?? null\" />\n }\n </div>\n </ng-template>\n </ng-container>\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n Directive,\n input,\n InputSignal,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n Signal,\n TemplateRef,\n Type,\n viewChild,\n} from '@angular/core';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { Nullable } from '@rt-tools/core';\nimport { FilterModel, PageModel, SortModel, transformArrayInput, transformStringInput } from '@rt-tools/utils';\nimport {\n RtuiCustomTableCellsDirective,\n RtuiTableAdditionalRowActionsDirective,\n RtuiTableComponent,\n RtuiTableRowActionsDirective,\n} from './components';\nimport {\n RtuiTableContainerComponent,\n RtuiTableToolbarActionsDirective,\n RtuiTableToolbarSelectorsDirective,\n} from './components/table-container/table-container.component';\nimport { BooleanInput } from '@angular/cdk/coercion';\n\n/** Directive for selectors of the toolbar located on the left side */\n@Directive({\n selector: '[rtuiDynamicListToolbarSelectorsDirective]',\n})\nexport class RtuiDynamicListToolbarSelectorsDirective {}\n\n/** Directive for actions of the toolbar located on the right side */\n@Directive({\n selector: '[rtuiDynamicListToolbarActionsDirective]',\n})\nexport class RtuiDynamicListToolbarActionsDirective {}\n\n/** Directive for custom table cells */\n@Directive({\n selector: '[rtuiDynamicListCustomTableCellsDirective]',\n})\nexport class RtuiDynamicListCustomTableCellsDirective<ENTITY_TYPE> {\n public cellsTemplates: InputSignal<{ [K in keyof ENTITY_TYPE]: TemplateRef<{ $implicit: ENTITY_TYPE }> }> = input.required({\n alias: 'rtuiDynamicListCustomTableCellsDirective',\n });\n}\n\n/** Directive for row actions located inside a row menu button */\n@Directive({\n selector: '[rtuiDynamicListRowActionsDirective]',\n})\nexport class RtuiDynamicListRowActionsDirective {}\n\n/** Directive for row actions located outside a row menu button */\n@Directive({\n selector: '[rtuiDynamicListRowAdditionalActionsDirective]',\n})\nexport class RtuiDynamicListRowAdditionalActionsDirective {}\n\n@Component({\n selector: 'rtui-dynamic-list',\n templateUrl: './dynamic-list.component.html',\n styleUrls: ['./dynamic-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n\n // Directives\n RtuiTableToolbarActionsDirective,\n RtuiTableRowActionsDirective,\n RtuiTableToolbarSelectorsDirective,\n RtuiTableAdditionalRowActionsDirective,\n\n // Ui-kit\n RtuiTableContainerComponent,\n RtuiTableComponent,\n RtuiCustomTableCellsDirective,\n ],\n})\nexport class RtuiDynamicListComponent<\n ENTITY_TYPE extends Record<string, unknown>,\n SORT_PROPERTY extends Extract<keyof ENTITY_TYPE, string>,\n KEY extends Extract<keyof ENTITY_TYPE, string>,\n> {\n /** Table config storage key */\n public tableConfigStorageKey: InputSignalWithTransform<string, unknown> = input.required<string, unknown>({\n transform: transformStringInput,\n });\n /** Indicates is mobile view */\n public isMobile: InputSignalWithTransform<Nullable<boolean>, BooleanInput> = input<Nullable<boolean>, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is loading in progress */\n public loading: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is fetching in progress */\n public fetching: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates are table rows clickable */\n public isTableRowsClickable: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is pagination shown */\n public isPaginationShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is the refresh button shown */\n public isRefreshButtonShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is a table config button shown */\n public isTableConfigButtonShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is toolbar buttons outlined */\n public isToolbarActionsIconsOutlined: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Key of ENTITY_TYPE for compare entities */\n public keyExp: InputSignal<NonNullable<KEY>> = input('id' as NonNullable<KEY>);\n /** List of entities */\n public entities: InputSignalWithTransform<ENTITY_TYPE[], ENTITY_TYPE[]> = input.required<ENTITY_TYPE[], ENTITY_TYPE[]>({\n transform: (value: ENTITY_TYPE[]) => transformArrayInput(value),\n });\n\n /** Current page model from store */\n public pageModel: InputSignal<PageModel> = input.required();\n /** Current search term from store */\n public searchTerm: InputSignal<Nullable<string>> = input.required();\n /** Current sort model from store */\n public currentSortModel: InputSignal<Nullable<SortModel<NonNullable<KEY>>>> = input.required();\n /** Inputs appearance */\n public appearance: InputSignal<MatFormFieldAppearance> = input.required({\n transform: (value: MatFormFieldAppearance) => (value === 'fill' ? 'fill' : 'outline'),\n });\n /** Filter inputs appearance */\n public filterAppearance: InputSignal<MatFormFieldAppearance> = input<MatFormFieldAppearance>('outline');\n /** Current filter model from store */\n public filterModel: InputSignalWithTransform<FilterModel<KEY>[], FilterModel<KEY>[]> = input<FilterModel<KEY>[], FilterModel<KEY>[]>(\n [],\n {\n transform: (value: FilterModel<KEY>[]) => transformArrayInput(value),\n }\n );\n /** Indicates is filters shown */\n public isFiltersShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** Sort model change output action */\n public readonly sortChange: OutputEmitterRef<SortModel<NonNullable<KEY>>> = output<SortModel<NonNullable<KEY>>>();\n /** Page model change output action */\n public readonly pageModelChange: OutputEmitterRef<Partial<PageModel>> = output<Partial<PageModel>>();\n /** Search change output action */\n public readonly searchChange: OutputEmitterRef<Nullable<string>> = output<Nullable<string>>();\n /** Refresh output action */\n public readonly refresh: OutputEmitterRef<void> = output<void>();\n /** Clear filters output action */\n public readonly clearFiltersAction: OutputEmitterRef<void> = output<void>();\n /** Row click output action */\n public readonly rowClick: OutputEmitterRef<NonNullable<{ row: ENTITY_TYPE; event: MouseEvent }>> =\n output<NonNullable<{ row: ENTITY_TYPE; event: MouseEvent }>>();\n /** Row doubleClick output action */\n public readonly rowDoubleClick: OutputEmitterRef<NonNullable<ENTITY_TYPE>> = output<NonNullable<ENTITY_TYPE>>();\n /** Filter change output action */\n public readonly filterChange: OutputEmitterRef<FilterModel<KEY>[]> = output<FilterModel<KEY>[]>();\n\n /** Toolbar selectors template */\n public readonly toolbarSelectorsTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(\n RtuiDynamicListToolbarSelectorsDirective,\n {\n read: TemplateRef,\n }\n );\n /** Toolbar actions template */\n public readonly toolbarActionsTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiDynamicListToolbarActionsDirective, {\n read: TemplateRef,\n });\n /** Custom cells template */\n public readonly customCellsTpl: Signal<Nullable<RtuiDynamicListCustomTableCellsDirective<{ $implicit: ENTITY_TYPE }>>> = contentChild(\n RtuiDynamicListCustomTableCellsDirective\n );\n /** Row actions template */\n public readonly rowActionsTpl: Signal<Nullable<TemplateRef<{ $implicit: ENTITY_TYPE }>>> = contentChild(\n RtuiDynamicListRowActionsDirective,\n {\n read: TemplateRef,\n }\n );\n /** Additional row actions template */\n public readonly additionalRowActionsTpl: Signal<Nullable<TemplateRef<{ $implicit: ENTITY_TYPE }>>> = contentChild(\n RtuiDynamicListRowAdditionalActionsDirective,\n {\n read: TemplateRef,\n }\n );\n\n /** Table container for selectors directive usage */\n public readonly tableContainerTpl: Signal<Nullable<RtuiTableContainerComponent<ENTITY_TYPE>>> =\n viewChild<RtuiTableContainerComponent<ENTITY_TYPE>>(RtuiTableContainerComponent);\n /** Table selector for selectors directive usage */\n public readonly tableTpl: Signal<Nullable<RtuiTableComponent<ENTITY_TYPE, SORT_PROPERTY, KEY>>> =\n viewChild<RtuiTableComponent<ENTITY_TYPE, SORT_PROPERTY, KEY>>(RtuiTableComponent);\n\n /** Search change output action */\n public onSearchChange(value: Nullable<string>): void {\n this.searchChange.emit(value);\n }\n\n /** Sort change output action */\n public onSortChange(sortModel: SortModel<NonNullable<KEY>>): void {\n this.sortChange.emit(sortModel);\n }\n\n /** Page model change output action */\n public onPageModelChange(pageModel: Partial<PageModel>): void {\n this.pageModelChange.emit(pageModel);\n }\n\n /** Filter change output action */\n public onFilterChange(filterModel: FilterModel<KEY>[]): void {\n this.filterChange.emit(filterModel);\n }\n\n /** Refresh output action */\n public onRefresh(): void {\n this.refresh.emit();\n }\n\n /** Clear filters output action */\n public onClearFilters(): void {\n this.clearFiltersAction.emit();\n }\n\n /** Row click output action */\n public onRowClick({ row, event }: { row: ENTITY_TYPE; event: MouseEvent }): void {\n this.rowClick.emit({ row, event });\n }\n\n /** Row doubleClick output action */\n public onRowDoubleClick(row: ENTITY_TYPE): void {\n this.rowDoubleClick.emit(row);\n }\n}\n","<rtui-table-container\n [tableConfigStorageKey]=\"tableConfigStorageKey()\"\n [loading]=\"loading()\"\n [fetching]=\"fetching()\"\n [isMobile]=\"isMobile()\"\n [pageModel]=\"pageModel()\"\n [isPlaceholderShown]=\"!entities()?.length && !filterModel()?.length\"\n [isToolbarActionsIconsOutlined]=\"isToolbarActionsIconsOutlined()\"\n [isRefreshButtonShown]=\"isRefreshButtonShown()\"\n [isTableConfigButtonShown]=\"isTableConfigButtonShown()\"\n [isFiltersShown]=\"isFiltersShown()\"\n [isFiltersEmpty]=\"!filterModel()?.length\"\n [appearance]=\"appearance()\"\n [searchTerm]=\"searchTerm()\"\n (refreshAction)=\"onRefresh()\"\n (clearFiltersAction)=\"onClearFilters()\"\n (pageModelChange)=\"onPageModelChange($event)\"\n (searchChange)=\"onSearchChange($event)\">\n @if (toolbarSelectorsTpl()) {\n <ng-container *rtuiTableToolbarSelectorsDirective>\n <ng-template *ngTemplateOutlet=\"toolbarSelectorsTpl() || null\" />\n </ng-container>\n }\n\n @if (toolbarActionsTpl()) {\n <ng-container *rtuiTableToolbarActionsDirective>\n <ng-template *ngTemplateOutlet=\"toolbarActionsTpl() || null\" />\n </ng-container>\n }\n\n <rtui-table\n [appearance]=\"appearance()\"\n [keyExp]=\"keyExp()\"\n [entities]=\"entities()\"\n [isMobile]=\"isMobile()\"\n [filterModel]=\"filterModel()\"\n [isTableRowsClickable]=\"isTableRowsClickable()\"\n [currentSortModel]=\"currentSortModel()\"\n [isFiltersShown]=\"isFiltersShown()\"\n (filterChange)=\"onFilterChange($event)\"\n (rowClick)=\"onRowClick($event)\"\n (rowDoubleClick)=\"onRowDoubleClick($event)\"\n (sortChange)=\"onSortChange($event)\">\n @if (customCellsTpl() && customCellsTpl()?.cellsTemplates()) {\n <ng-container *rtuiCustomTableCellsDirective=\"customCellsTpl()?.cellsTemplates()!\" />\n }\n\n @if (additionalRowActionsTpl()) {\n <ng-container *rtuiTableAdditionalRowActionsDirective=\"let row\">\n <ng-template *ngTemplateOutlet=\"additionalRowActionsTpl() || null; context: { $implicit: row }\" />\n </ng-container>\n }\n\n @if (rowActionsTpl()) {\n <ng-container *rtuiTabletRowActionsDirective=\"let row\">\n <ng-template *ngTemplateOutlet=\"rowActionsTpl() || null; context: { $implicit: row }\" />\n </ng-container>\n }\n </rtui-table>\n</rtui-table-container>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostBinding, inject, input, InputSignalWithTransform, TemplateRef } from '@angular/core';\nimport { DomSanitizer, SafeValue } from '@angular/platform-browser';\n\nimport { Nullable } from '@rt-tools/core';\nimport { isString } from '@rt-tools/utils';\n\n@Component({\n selector: 'rtui-popover-container',\n templateUrl: './rtui-popover-container.component.html',\n styleUrls: ['./rtui-popover-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n})\nexport class RtuiPopoverContainerComponent {\n readonly #sanitizer: DomSanitizer = inject(DomSanitizer);\n\n public popoverTemplate: InputSignalWithTransform<Nullable<TemplateRef<HTMLElement>>, Nullable<TemplateRef<HTMLElement>>> = input<\n Nullable<TemplateRef<HTMLElement>>,\n Nullable<TemplateRef<HTMLElement>>\n >(undefined, {\n transform: (value: Nullable<TemplateRef<HTMLElement>>) => value ?? null,\n });\n\n public popoverClass: InputSignalWithTransform<Nullable<string>, string | undefined> = input<Nullable<string>, string | undefined>(\n undefined,\n {\n transform: (value: unknown) => (isString(value) ? value : undefined),\n }\n );\n\n @HostBinding('class')\n public get className(): SafeValue {\n return this.#sanitizer.sanitize(1, this.popoverClass() as string) as SafeValue;\n }\n}\n","<ng-container *ngTemplateOutlet=\"popoverTemplate() || null\" />\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { DOCUMENT } from '@angular/common';\nimport {\n booleanAttribute,\n ComponentRef,\n Directive,\n ElementRef,\n HostListener,\n inject,\n Injector,\n input,\n InputSignalWithTransform,\n numberAttribute,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { computePosition, ComputePositionReturn, flip, offset, shift } from '@floating-ui/dom';\n\nimport { Nullable, PlatformService, WINDOW } from '@rt-tools/core';\nimport { RtuiPopoverContainerComponent } from './rtui-popover-container.component';\n\nexport type MenuItemTrigger = 'click' | 'hover';\n\n@Directive({\n selector: '[rtPopover]',\n providers: [PlatformService],\n})\nexport class RtPopoverDirective implements OnInit, OnDestroy {\n readonly #windowRef: Window = inject(WINDOW);\n readonly #injector: Injector = inject(Injector);\n readonly #hostRef: ElementRef = inject(ElementRef);\n readonly #documentRef: Document = inject(DOCUMENT);\n readonly #platformService: PlatformService = inject(PlatformService);\n readonly #componentFactoryResolver: ViewContainerRef = inject(ViewContainerRef);\n\n #popoverContainerRef?: ComponentRef<RtuiPopoverContainerComponent> | null;\n #popoverElement?: HTMLElement;\n #hasPopoverHover: boolean = false;\n #hasHostHover: boolean = false;\n\n public xOffset: InputSignalWithTransform<number, NumberInput> = input<number, NumberInput>(0, { transform: numberAttribute });\n public yOffset: InputSignalWithTransform<number, NumberInput> = input<number, NumberInput>(-20, { transform: numberAttribute });\n public trigger: InputSignalWithTransform<MenuItemTrigger, MenuItemTrigger> = input<MenuItemTrigger, MenuItemTrigger>('hover', {\n transform: (value: unknown) => (value === 'click' ? 'click' : 'hover'),\n });\n public template: InputSignalWithTransform<Nullable<TemplateRef<HTMLElement>>, Nullable<TemplateRef<HTMLElement>>> = input<\n Nullable<TemplateRef<HTMLElement>>,\n Nullable<TemplateRef<HTMLElement>>\n >(null, {\n transform: (value: Nullable<TemplateRef<HTMLElement>>) => value || null,\n });\n public isMouseHoverAllowed: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n\n @HostListener('document:click', ['$event.target'])\n public onClick(element: EventTarget | null): void {\n if (this.trigger() === 'click') {\n if (this.#hostRef.nativeElement.contains(element)) {\n this.#show();\n } else {\n this.#hide();\n }\n }\n }\n\n @HostListener('mouseenter')\n public onMouseEnter(): void {\n if (this.trigger() === 'hover') {\n this.#hasHostHover = true;\n this.#show();\n }\n }\n\n @HostListener('mouseleave')\n public onMouseLeave(): void {\n this.#hasHostHover = false;\n this.#handleMouseLeave();\n }\n\n public ngOnInit(): void {\n if (this.#platformService.isPlatformBrowser) {\n this.#windowRef.addEventListener('scroll', this.#hide.bind(this));\n }\n }\n\n public ngOnDestroy(): void {\n this.onMouseLeave();\n }\n\n #show(): void {\n if (!this.#platformService.isPlatformBrowser || this.#popoverContainerRef) {\n return;\n }\n this.#popoverContainerRef = this.#componentFactoryResolver.createComponent(RtuiPopoverContainerComponent, {\n injector: this.#injector,\n });\n\n this.#popoverContainerRef.instance.popoverTemplate = this.template || null;\n\n this.#popoverElement = this.#popoverContainerRef.location.nativeElement;\n\n if (this.#popoverElement) {\n this.#documentRef.body.appendChild(this.#popoverElement);\n this.#popoverElement.addEventListener('mouseenter', () => {\n this.#hasPopoverHover = true;\n });\n this.#popoverElement.addEventListener('mouseleave', () => {\n this.#hasPopoverHover = false;\n this.#handleMouseLeave();\n });\n }\n this.#updateTooltipPosition();\n this.#popoverContainerRef.hostView.detectChanges();\n }\n\n #updateTooltipPosition(): void {\n if (!this.#hostRef?.nativeElement || !this.#popoverElement) {\n return;\n }\n\n computePosition(this.#hostRef.nativeElement, this.#popoverElement, {\n placement: 'bottom-start',\n middleware: [offset(14), flip(), shift({ padding: 0 })],\n }).then((computePosition: ComputePositionReturn) => {\n const x: number = computePosition.x + this.xOffset();\n const y: number = computePosition.y + this.yOffset();\n\n if (this.#popoverElement) {\n Object.assign(this.#popoverElement.style, {\n left: `${x}px`,\n top: `${y}px`,\n opacity: 1,\n visibility: 'visible',\n 'z-index': 2,\n });\n }\n });\n }\n\n #handleMouseLeave(): void {\n if (this.trigger() === 'hover') {\n if (!this.#popoverContainerRef) {\n return;\n }\n if (!this.isMouseHoverAllowed()) {\n this.#hide();\n return;\n }\n setTimeout(() => {\n this.#hide();\n }, 50);\n }\n }\n\n #hide(): void {\n if (!this.#hasPopoverHover && !this.#hasHostHover && this.#popoverContainerRef) {\n Object.assign(this.#popoverContainerRef.location.nativeElement.style, {\n opacity: 0,\n });\n this.#popoverContainerRef.destroy();\n this.#popoverContainerRef = null;\n }\n }\n}\n","import { NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, InputSignal, output, OutputEmitterRef, Signal } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\n\nimport { BlockDirective, ElemDirective } from '@rt-tools/core';\nimport { BreakpointService, EmptyToDashPipe, RtIconOutlinedDirective } from '@rt-tools/utils';\nimport { RtPopoverDirective } from '../../../popover/rt-popover.directive';\nimport { IRtActionBar } from '../../action-bar-config.interface';\n\n@Component({\n selector: 'rtui-action-bar',\n templateUrl: 'rtui-action-bar.component.html',\n styleUrls: ['rtui-action-bar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n NgStyle,\n // material\n MatIcon,\n // rt-tools\n BlockDirective,\n ElemDirective,\n EmptyToDashPipe,\n RtIconOutlinedDirective,\n RtPopoverDirective,\n ],\n providers: [BreakpointService],\n})\nexport class RtuiActionBarComponent {\n readonly #breakpointService: BreakpointService = inject(BreakpointService);\n\n public config: InputSignal<IRtActionBar.Config> = input.required();\n\n public readonly closeAction: OutputEmitterRef<void> = output<void>();\n\n public readonly isTablet: Signal<boolean> = computed(() => !!this.#breakpointService.isTablet());\n\n public onClose(): void {\n this.closeAction.emit();\n }\n\n public onAction(button: IRtActionBar.Button): void {\n if (button?.action) {\n button.action();\n this.onClose();\n }\n }\n}\n","<div rtBlock=\"rtui-action-bar\">\n <div rtElem=\"counter\">\n {{ 'Selected: ' + config().selected + ' out of ' + config().total | emptyToDash }}\n </div>\n\n @if (config().buttons?.length) {\n <div rtElem=\"actions\">\n @for (btn of config().buttons; track i; let i = $index) {\n @if (btn?.menu) {\n @let menu = btn.menu;\n <ng-template #actionMenuWrapperTpl>\n <ng-container *ngTemplateOutlet=\"actionMenuTpl; context: { $implicit: menu }\" />\n </ng-template>\n\n <div rtPopover rtElem=\"action\" [trigger]=\"'click'\" [template]=\"actionMenuWrapperTpl\" [ngStyle]=\"btn?.styles\">\n <ng-template *ngTemplateOutlet=\"buttonContentTpl; context: { $implicit: btn }\" />\n </div>\n } @else {\n <div rtElem=\"action\" [ngStyle]=\"btn?.styles\" (click)=\"onAction(btn)\">\n <ng-template *ngTemplateOutlet=\"buttonContentTpl; context: { $implicit: btn }\" />\n </div>\n }\n }\n </div>\n }\n\n <div rtElem=\"close-button\" (click)=\"onClose()\">\n <svg width=\"11\" height=\"11\" viewBox=\"0 0 11 11\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10.7071 0.293C10.5196 0.105529 10.2652 0.000213623 10.0001 0.000213623C9.73492 0.000213623 9.48061 0.105529 9.29308 0.293L6.00008 3.586L2.70708 0.293C2.51848 0.110842 2.26588 0.0100477 2.00368 0.0123261C1.74148 0.0146045 1.49067 0.119773 1.30526 0.305182C1.11985 0.49059 1.01469 0.741402 1.01241 1.0036C1.01013 1.2658 1.11092 1.5184 1.29308 1.707L4.58608 5L1.29308 8.293C1.19757 8.38525 1.12139 8.49559 1.06898 8.6176C1.01657 8.7396 0.988985 8.87082 0.987831 9.0036C0.986677 9.13638 1.01198 9.26806 1.06226 9.39095C1.11254 9.51385 1.18679 9.6255 1.28069 9.71939C1.37458 9.81329 1.48623 9.88754 1.60913 9.93782C1.73202 9.9881 1.8637 10.0134 1.99648 10.0123C2.12926 10.0111 2.26048 9.98351 2.38249 9.9311C2.50449 9.87869 2.61483 9.80251 2.70708 9.707L6.00008 6.414L9.29308 9.707C9.48168 9.88916 9.73429 9.98995 9.99648 9.98767C10.2587 9.9854 10.5095 9.88023 10.6949 9.69482C10.8803 9.50941 10.9855 9.2586 10.9878 8.9964C10.99 8.7342 10.8892 8.4816 10.7071 8.293L7.41408 5L10.7071 1.707C10.8946 1.51947 10.9999 1.26516 10.9999 1C10.9999 0.734836 10.8946 0.480528 10.7071 0.293Z\"\n fill=\"currentColor\" />\n </svg>\n </div>\n</div>\n\n<ng-template #actionMenuTpl let-menu>\n <div rtBlock=\"rtui-action-bar-action-menu\">\n @for (btn of menu; track i; let i = $index) {\n <div rtElem=\"action\" (click)=\"onAction(btn)\">\n <ng-template *ngTemplateOutlet=\"buttonContentTpl; context: { $implicit: btn }\" />\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #buttonContentTpl let-btn>\n @if (btn?.icon) {\n <mat-icon [rtIconOutlined]=\"true\">{{ btn.icon }}</mat-icon>\n }\n\n @if (!isTablet() || (isTablet() && !btn?.icon)) {\n <div>{{ btn.title }}</div>\n }\n</ng-template>\n","import { Injectable, signal, WritableSignal } from '@angular/core';\n\nimport { IRtActionBar } from './action-bar-config.interface';\n\n@Injectable()\nexport class RtActionBarService {\n public config: WritableSignal<IRtActionBar.Config> = signal({ buttons: [] });\n\n public setActions(buttons: IRtActionBar.Button[]): void {\n this.config.set({ buttons });\n }\n\n public setCounts(selected: number, total: number): void {\n this.config.set({ ...this.config(), selected, total });\n }\n\n public closeActionBar(): void {\n this.config.set({ ...this.config(), selected: 0, total: 0 });\n }\n}\n","import { animate, keyframes, state, style, transition, trigger } from '@angular/animations';\nimport { Component, inject, Signal } from '@angular/core';\n\nimport { IRtActionBar } from '../../action-bar-config.interface';\nimport { RtActionBarService } from '../../rt-action-bar.service';\nimport { RtuiActionBarComponent } from '../bar/rtui-action-bar.component';\n\n@Component({\n selector: 'rtui-action-bar-container',\n templateUrl: 'rtui-action-bar-container.component.html',\n styleUrls: ['rtui-action-bar-container.component.scss'],\n imports: [RtuiActionBarComponent],\n animations: [\n trigger('barState', [\n state('opened', style({ transform: 'translateY(0)' })),\n transition('void => *', [\n animate(\n 300,\n keyframes([\n style({ opacity: 0, transform: 'translateY(100%)', offset: 0 }),\n style({ opacity: 1, transform: 'translateY(-15px)', offset: 0.3 }),\n style({ opacity: 1, transform: 'translateY(0)', offset: 1.0 }),\n ])\n ),\n ]),\n transition('* => void', [\n animate(\n 300,\n keyframes([\n style({ opacity: 1, transform: 'translateY(0)', offset: 0 }),\n style({ opacity: 1, transform: 'translateY(-15px)', offset: 0.7 }),\n style({ opacity: 0, transform: 'translateY(100%)', offset: 1.0 }),\n ])\n ),\n ]),\n ]),\n ],\n})\nexport class RtuiActionBarContainerComponent {\n readonly #actionBarService: RtActionBarService = inject(RtActionBarService);\n\n public readonly config: Signal<IRtActionBar.Config> = this.#actionBarService.config;\n\n public closeBar(): void {\n this.#actionBarService.closeActionBar();\n }\n}\n","@if (config()?.selected) {\n <rtui-action-bar [@barState]=\"'opened'\" [config]=\"config()\" (closeAction)=\"closeBar()\" />\n}\n","import { Provider } from '@angular/core';\n\nimport { RtActionBarService } from './action-bar';\nimport { RtAsideService } from './aside';\n\n/**\n * Returns a set of the necessary dependency injection providers for managing the UI.\n *\n * ```typescript\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideRtUi()\n * ]\n * });\n * ```\n *\n * @publicApi\n */\nexport function provideRtUi(): Provider[] {\n return [RtAsideService, RtActionBarService];\n}\n","import { animate, AnimationBuilder, AnimationFactory, AnimationPlayer, style } from '@angular/animations';\nimport { afterNextRender, ChangeDetectionStrategy, Component, ElementRef, HostListener, inject, Signal, viewChild } from '@angular/core';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MAT_SNACK_BAR_DATA, MatSnackBarRef } from '@angular/material/snack-bar';\n\nimport { BlockDirective, ElemDirective, Nullable } from '@rt-tools/core';\nimport { RtIconOutlinedDirective } from '@rt-tools/utils';\nimport { IRtSnackBar } from './snack-bar-config.interface';\n\n@Component({\n selector: 'rtui-snack-bar',\n templateUrl: './snack-bar.component.html',\n styleUrls: ['./snack-bar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatButton, MatIconButton, MatIcon, ElemDirective, BlockDirective, RtIconOutlinedDirective],\n})\nexport class RtuiSnackBarComponent {\n public readonly data: IRtSnackBar.Data = inject(MAT_SNACK_BAR_DATA);\n readonly #snackBarRef: MatSnackBarRef<RtuiSnackBarComponent> = inject(MatSnackBarRef<RtuiSnackBarComponent>);\n readonly #animationBuilder: AnimationBuilder = inject(AnimationBuilder);\n\n public player: AnimationPlayer | undefined;\n\n public readonly progressTplRef: Signal<Nullable<ElementRef<HTMLElement>>> = viewChild<ElementRef<HTMLElement>>('progressTpl');\n\n constructor() {\n afterNextRender(() => {\n if (this.data.isProgressBarShown && this.data.duration) {\n this.#startAnimation();\n }\n });\n }\n\n @HostListener('mouseover')\n public onMouseOver(): void {\n this.#pauseAnimation();\n }\n\n @HostListener('mouseout')\n public onMouseOut(): void {\n this.#resumeAnimation();\n }\n\n public dismiss(): void {\n this.#snackBarRef.dismissWithAction();\n }\n\n public close(): void {\n this.#snackBarRef.dismiss();\n }\n\n #startAnimation(): void {\n const element: HTMLElement | undefined = this.progressTplRef()?.nativeElement;\n\n if (element) {\n const factory: AnimationFactory = this.#animationBuilder.build([\n style({ width: '100%', 'clip-path': 'polygon(0 0, 100% 0, 100% 100%, 0 100%)' }),\n animate('{{ time }} linear', style({ width: '0', 'clip-path': 'polygon(0 0, 0 0, 0 100%, 0 100%)' })),\n ]);\n\n this.player = factory.create(element, { params: { time: this.data.duration + 'ms' } });\n this.player.onDone(() => this.close());\n this.player.play();\n }\n }\n\n #pauseAnimation(): void {\n this.player?.pause();\n }\n\n #resumeAnimation(): void {\n this.player?.play();\n }\n}\n","<ng-container rtBlock=\"rt-snack-bar\">\n <div rtElem=\"content\">\n @if (data.icon) {\n <div rtElem=\"content-icon-wrapper\">\n <mat-icon rtElem=\"content-icon\" rtIconOutlined>{{ data.icon }}</mat-icon>\n </div>\n }\n\n <div rtElem=\"content-message\">{{ data.message }}</div>\n </div>\n\n @if (data.action) {\n <button rtElem=\"action-button\" mat-button (click)=\"dismiss()\">{{ data.action }}</button>\n }\n\n <button rtElem=\"close-button\" color=\"accent\" mat-icon-button type=\"button\" (click)=\"close()\">\n <mat-icon rtElem=\"close-button-icon\">close</mat-icon>\n </button>\n\n @if (data.isProgressBarShown && data.duration) {\n <div #progressTpl rtElem=\"progress\"></div>\n }\n</ng-container>\n","import { Injectable, inject } from '@angular/core';\nimport { MatSnackBar, MatSnackBarRef } from '@angular/material/snack-bar';\n\nimport { IRtSnackBar } from './snack-bar-config.interface';\nimport { RtuiSnackBarComponent } from './snack-bar.compontent';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RtSnackBarService {\n readonly #snackBar: MatSnackBar = inject(MatSnackBar);\n private readonly defaultConfig: Readonly<IRtSnackBar.Config> = {\n duration: 5000,\n };\n\n public default(message: string, config: IRtSnackBar.Config = {}): MatSnackBarRef<RtuiSnackBarComponent> {\n const fullConfig: IRtSnackBar.Config = { ...this.defaultConfig, ...config };\n return this.#snackBar.openFromComponent(RtuiSnackBarComponent, {\n ...config,\n duration: fullConfig?.isProgressBarShown ? undefined : fullConfig.duration,\n data: { message, ...fullConfig },\n });\n }\n\n public warning(message: string, config: IRtSnackBar.Config = {}): MatSnackBarRef<RtuiSnackBarComponent> {\n const fullConfig: IRtSnackBar.Config = { ...this.defaultConfig, ...config };\n return this.#snackBar.openFromComponent(RtuiSnackBarComponent, {\n ...config,\n duration: fullConfig?.isProgressBarShown ? undefined : fullConfig.duration,\n panelClass: config.isColoredBackground ? 'snack-bar-warning-colored' : 'snack-bar-warning',\n data: { message, ...fullConfig, icon: config.icon || 'warning' },\n });\n }\n\n public danger(message: string, config: IRtSnackBar.Config = {}): MatSnackBarRef<RtuiSnackBarComponent> {\n const fullConfig: IRtSnackBar.Config = { ...this.defaultConfig, ...config };\n return this.#snackBar.openFromComponent(RtuiSnackBarComponent, {\n ...config,\n duration: fullConfig?.isProgressBarShown ? undefined : fullConfig.duration,\n panelClass: config.isColoredBackground ? 'snack-bar-danger-colored' : 'snack-bar-danger',\n data: { message, ...fullConfig, icon: config.icon || 'error' },\n });\n }\n\n public success(message: string, config: IRtSnackBar.Config = {}): MatSnackBarRef<RtuiSnackBarComponent> {\n const fullConfig: IRtSnackBar.Config = { ...this.defaultConfig, ...config };\n return this.#snackBar.openFromComponent(RtuiSnackBarComponent, {\n ...config,\n duration: fullConfig?.isProgressBarShown ? undefined : fullConfig.duration,\n panelClass: config.isColoredBackground ? 'snack-bar-success-colored' : 'snack-bar-success',\n data: { message, ...fullConfig, icon: config.icon || 'check' },\n });\n }\n\n public dismiss(): void {\n this.#snackBar.dismiss();\n }\n}\n","import { animate, AnimationTriggerMetadata, state, style, transition, trigger } from '@angular/animations';\n\nexport const progressIncreaseAnimation: AnimationTriggerMetadata[] = [\n trigger('progressIncreaseAnimation', [\n state(\n 'start',\n style({\n width: '100%',\n })\n ),\n state(\n 'end',\n style({\n width: '0',\n })\n ),\n transition('start => end', [animate('0ms')]),\n transition('end => start', [animate('{{ time }}')]),\n ]),\n];\n\nexport const progressDecreaseAnimation: AnimationTriggerMetadata[] = [\n trigger('progressDecreaseAnimation', [\n state(\n 'start',\n style({\n width: '0',\n })\n ),\n state(\n 'end',\n style({\n width: '100%',\n })\n ),\n transition('start => end', [animate('0ms')]),\n transition('end => start', [animate('{{ time }}')]),\n ]),\n];\n","export enum INFO_BADGE_SIZE_ENUM {\n LARGE = 'l',\n MEDIUM = 'm',\n SMALL = 's',\n}\n\nexport type IInfoBadgeSizeType = INFO_BADGE_SIZE_ENUM.LARGE | INFO_BADGE_SIZE_ENUM.MEDIUM | INFO_BADGE_SIZE_ENUM.SMALL;\n","export function darkenHexColor(hex: string, percent: number): string {\n /**\n * returns a darkened color depending on the color and percentage\n */\n hex = hex.replace(/^#/, '');\n\n if (hex.length === 3) {\n hex = hex\n .split('')\n .map((char: string) => char + char)\n .join('');\n }\n\n let r: number = parseInt(hex.substring(0, 2), 16);\n let g: number = parseInt(hex.substring(2, 4), 16);\n let b: number = parseInt(hex.substring(4, 6), 16);\n\n r = Math.floor(r * (1 - percent / 100));\n g = Math.floor(g * (1 - percent / 100));\n b = Math.floor(b * (1 - percent / 100));\n\n return `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;\n}\n\nexport function getColorBasedOnBackground(backgroundColor: string): string {\n backgroundColor = backgroundColor.substring(1);\n const r: number = parseInt(backgroundColor.substring(0, 2), 16);\n const g: number = parseInt(backgroundColor.substring(2, 4), 16);\n const b: number = parseInt(backgroundColor.substring(4, 6), 16);\n\n const srgb: number[] = [r / 255, g / 255, b / 255];\n const x: number[] = srgb.map((i: number): number => {\n if (i <= 0.04045) {\n return i / 12.92;\n } else {\n return Math.pow((i + 0.055) / 1.055, 2.4);\n }\n });\n\n const L: number = 0.2126 * x[0] + 0.7152 * x[1] + 0.0722 * x[2];\n\n /**\n * if the background color is light, it returns a darkened value, otherwise it is light\n */\n\n if (L > 0.179) {\n return darkenHexColor(backgroundColor, 50);\n }\n return '#fff';\n}\n","import { NgClass, NgStyle } from '@angular/common';\nimport {\n AfterContentChecked,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n InputSignal,\n InputSignalWithTransform,\n Signal,\n signal,\n viewChild,\n WritableSignal,\n} from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nimport { BlockDirective, ElemDirective, Nullable } from '@rt-tools/core';\nimport { POSITION_ENUM } from '@rt-tools/utils';\nimport { IInfoBadgeSizeType, INFO_BADGE_SIZE_ENUM } from './badge-info-enum';\nimport { IconSideType } from './icon-side.type';\n\n@Component({\n selector: 'rtui-info-badge',\n templateUrl: './info-badge.component.html',\n styleUrl: './info-badge.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatTooltip, NgClass, MatIcon, NgStyle, BlockDirective, ElemDirective],\n})\nexport class RtuiInfoBadgeComponent implements AfterContentChecked {\n public size: InputSignal<IInfoBadgeSizeType> = input.required();\n public text: InputSignal<string> = input.required();\n public glyph: InputSignal<string> = input('');\n public iconSide: InputSignal<IconSideType> = input<IconSideType>(POSITION_ENUM.RIGHT);\n public isFontBold: InputSignal<boolean> = input(false);\n public isMobile: InputSignalWithTransform<Nullable<boolean>, boolean> = input.required<Nullable<boolean>, boolean>({\n transform: booleanAttribute,\n });\n public isTitleCollapsed: WritableSignal<boolean> = signal(false);\n public readonly contentRef: Signal<ElementRef<HTMLElement> | undefined> = viewChild('content');\n\n public get badgeClass(): { [key: string]: boolean | string } {\n return {\n 'size-l': this.size() === INFO_BADGE_SIZE_ENUM.LARGE,\n 'size-m': this.size() === INFO_BADGE_SIZE_ENUM.MEDIUM,\n 'size-s': this.size() === INFO_BADGE_SIZE_ENUM.SMALL,\n bold: this.isFontBold(),\n };\n }\n\n public get iconStyles(): { [key: string]: string } {\n return {\n order: this.iconSide() === POSITION_ENUM.LEFT ? '-1' : '0',\n 'min-width': 'fit-content',\n };\n }\n\n public ngAfterContentChecked(): void {\n setTimeout(() => {\n this.checkEllipsis();\n }, 500);\n }\n\n public checkEllipsis(): void {\n const element: HTMLElement | undefined = this.contentRef()?.nativeElement;\n\n if (element) {\n if (element.scrollWidth > element.offsetWidth) {\n this.isTitleCollapsed.set(true);\n }\n }\n }\n}\n","<div\n rtBlock=\"c-info-badge\"\n matTooltipClass=\"custom-tooltip\"\n matTooltipPosition=\"above\"\n [matTooltip]=\"text()\"\n [ngClass]=\"badgeClass\"\n [matTooltipDisabled]=\"!isTitleCollapsed() || isMobile()\">\n <div rtElem=\"content\" #content>{{ text() }}</div>\n @if (glyph()) {\n <mat-icon [ngStyle]=\"iconStyles\">{{ glyph() }}</mat-icon>\n }\n</div>\n","export enum INFO_BADGE_TYPE_ENUM {\n SUCCESS = 'success',\n INFO = 'info',\n WARNING = 'warning',\n PRIMARY = 'primary',\n DISABLED = 'disabled',\n}\n\nexport type InfoBadgeType =\n | INFO_BADGE_TYPE_ENUM.SUCCESS\n | INFO_BADGE_TYPE_ENUM.INFO\n | INFO_BADGE_TYPE_ENUM.WARNING\n | INFO_BADGE_TYPE_ENUM.PRIMARY\n | INFO_BADGE_TYPE_ENUM.DISABLED;\n","import { ChangeDetectionStrategy, Component, input, InputSignal, output, OutputEmitterRef, signal, WritableSignal } from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\n\nimport { BlockDirective, ElemDirective } from '@rt-tools/core';\nimport { RtIconOutlinedDirective } from '@rt-tools/utils';\n\n@Component({\n selector: 'rtui-file-upload',\n templateUrl: './rtui-file-upload.component.html',\n styleUrls: ['./rtui-file-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatButton,\n MatIcon,\n\n // directives\n ElemDirective,\n BlockDirective,\n RtIconOutlinedDirective,\n ],\n host: {\n '[class.--dragged]': 'isDragOver()',\n '(dragover)': 'onDragOver($event)',\n '(dragleave)': 'onDragLeave($event)',\n '(drop)': 'onDrop($event)',\n },\n})\nexport class RtuiFileUploadComponent {\n public isIconOutlined: InputSignal<boolean> = input(true);\n\n public readonly uploadFile: OutputEmitterRef<File> = output<File>();\n\n public readonly isDragOver: WritableSignal<boolean> = signal(false);\n\n public onDragOver(event: DragEvent): void {\n event?.preventDefault();\n this.isDragOver.set(true);\n }\n\n public onDragLeave(event: DragEvent): void {\n event?.preventDefault();\n this.isDragOver.set(false);\n }\n\n public onDrop(event: DragEvent): void {\n event?.preventDefault();\n this.isDragOver.set(false);\n if (event.dataTransfer && event.dataTransfer.files.length > 0) {\n this.uploadFile.emit(event.dataTransfer.files[0]);\n }\n }\n\n public onFileSelect(event: Event): void {\n const input: HTMLInputElement = event.target as HTMLInputElement;\n if (input.files && input.files.length > 0) {\n this.uploadFile.emit(input.files[0]);\n }\n }\n}\n","<ng-container rtBlock=\"file-upload\">\n <mat-icon rtElem=\"icon\" [rtIconOutlined]=\"isIconOutlined()\">backup</mat-icon>\n\n <div rtElem=\"title\">Drag and drop your file here or</div>\n\n <input #uploadInput hidden type=\"file\" (change)=\"onFileSelect($event)\" />\n\n <button rtBlock=\"c-button\" mat-button color=\"accent\" (click)=\"uploadInput.click()\">Choose file</button>\n</ng-container>\n","import { DOCUMENT } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n model,\n ModelSignal,\n output,\n OutputEmitterRef,\n signal,\n WritableSignal,\n computed,\n Signal,\n} from '@angular/core';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip, TooltipPosition } from '@angular/material/tooltip';\nimport { ImageCroppedEvent, ImageCropperComponent } from 'ngx-image-cropper';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable } from '@rt-tools/core';\nimport { RtIconOutlinedDirective, transformStringInput } from '@rt-tools/utils';\nimport { RtuiFileUploadComponent } from '../../file-uploader';\nimport { RtuiSpinnerComponent } from '../../spinner';\nimport { BooleanInput } from '@angular/cdk/coercion';\n\nexport type IImageUploadFormat = 'png' | 'jpeg' | 'webp';\n\n@Component({\n selector: 'rtui-image-upload',\n templateUrl: './rtui-image-upload.component.html',\n styleUrls: ['./rtui-image-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n // material\n MatIcon,\n MatButton,\n MatIconButton,\n MatTooltip,\n\n // cropper\n ImageCropperComponent,\n\n // rt-tools\n ElemDirective,\n ModDirective,\n BlockDirective,\n RtuiSpinnerComponent,\n RtuiFileUploadComponent,\n RtIconOutlinedDirective,\n ],\n})\nexport class RtuiImageUploadComponent {\n readonly #documentRef: Document = inject(DOCUMENT);\n\n readonly #formats: Record<string, IImageUploadFormat> = {\n ['png']: 'png',\n ['jpg']: 'jpeg',\n ['jpeg']: 'jpeg',\n ['webp']: 'webp',\n };\n readonly #originalMimeType: WritableSignal<string | null> = signal(null);\n protected readonly imageFormat: Signal<IImageUploadFormat> = computed((): IImageUploadFormat => {\n const type: Nullable<string> = this.#originalMimeType();\n return this.#formats[type?.toLowerCase() || ''] || 'png';\n });\n\n public imageUrl: ModelSignal<Nullable<string>> = model.required<Nullable<string>>();\n public isMobile: InputSignalWithTransform<boolean, boolean> = input.required<boolean, boolean>({\n transform: booleanAttribute,\n });\n public fileName: InputSignalWithTransform<string, string> = input<string, string>('image', {\n transform: transformStringInput,\n });\n public isActive: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n public isSaveButtonShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n public isDownloadButtonEnabled: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n public isTooltipDisabled: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n public isActionsShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n public loading: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n public tooltip: InputSignal<string> = input<string>('');\n public tooltipPosition: InputSignal<TooltipPosition> = input<TooltipPosition>('above');\n public imageQuality: InputSignal<number> = input<number>(92);\n\n public originalImage: WritableSignal<File | undefined> = signal(undefined);\n public croppedImage: WritableSignal<Nullable<File>> = signal(null);\n public tempImage: WritableSignal<Nullable<string>> = signal(null);\n\n public readonly imageChanged: OutputEmitterRef<File> = output<File>();\n public readonly save: OutputEmitterRef<void> = output<void>();\n\n public onFileSelect(event: Event): void {\n const input: HTMLInputElement = event.target as HTMLInputElement;\n\n if (input?.files?.length) {\n this.#originalMimeType.set(input.files[0].type);\n this.originalImage.set(input.files[0]);\n }\n }\n\n public onImageCropped(event: ImageCroppedEvent): void {\n if (event?.blob) {\n const croppedFile: File = new File([event.blob], this.fileName(), {\n type: event.blob.type,\n });\n\n this.croppedImage.set(croppedFile);\n this.tempImage.set(event.objectUrl);\n\n if (!this.isActionsShown() && event?.objectUrl) {\n this.imageChanged.emit(croppedFile);\n this.imageUrl.set(event.objectUrl);\n }\n }\n }\n\n public onFileUpload(file: File): void {\n this.#originalMimeType.set(file.type);\n this.originalImage.set(file);\n }\n\n public onApply(): void {\n if (this.croppedImage()) {\n this.imageChanged.emit(this.croppedImage() as File);\n }\n\n this.imageUrl.set(this.tempImage());\n this.originalImage.set(undefined);\n }\n\n public onCancel(): void {\n this.originalImage.set(undefined);\n this.croppedImage.set(null);\n this.tempImage.set(null);\n }\n\n public onDownloadImage(): void {\n if (this.imageUrl() && this.isDownloadButtonEnabled()) {\n const imageUrl: string = this.imageUrl() as string;\n const link: HTMLAnchorElement = this.#documentRef.createElement('a');\n link.href = imageUrl;\n link.download = 'Image';\n this.#documentRef.body.appendChild(link);\n link.click();\n this.#documentRef.body.removeChild(link);\n }\n\n this.save.emit();\n }\n}\n","@if (loading()) {\n <rtui-spinner />\n} @else if (originalImage()) {\n <div rtBlock=\"rtui-image-cropper\">\n <image-cropper\n alignImage=\"center\"\n [format]=\"imageFormat()\"\n [imageQuality]=\"imageQuality()\"\n [allowMoveImage]=\"true\"\n [maintainAspectRatio]=\"false\"\n [imageFile]=\"originalImage()\"\n (imageCropped)=\"onImageCropped($event)\" />\n\n @if (isActionsShown()) {\n <div rtElem=\"actions\">\n <button rtBlock=\"c-button\" mat-button color=\"accent\" (click)=\"onCancel()\">Cancel</button>\n <button mat-flat-button (click)=\"onApply()\">Apply</button>\n </div>\n }\n </div>\n} @else {\n <input #uploadInput hidden type=\"file\" accept=\".jpg,.jpeg,.png,.webp\" (change)=\"onFileSelect($event)\" />\n\n @if (imageUrl()) {\n <div rtBlock=\"rtui-image-container\">\n <img\n rtElem=\"image\"\n role=\"button\"\n tabindex=\"0\"\n alt=\"img\"\n matTooltipClass=\"custom-tooltip\"\n [matTooltip]=\"tooltip()\"\n [matTooltipPosition]=\"tooltipPosition()\"\n [matTooltipDisabled]=\"isMobile() || !tooltip() || !isActive() || isTooltipDisabled()\"\n [rtMod]=\"{ active: isActive() }\"\n [src]=\"imageUrl()\"\n (click)=\"uploadInput.click()\"\n (keydown.enter)=\"uploadInput.click()\" />\n\n @if (isSaveButtonShown()) {\n <button\n rtElem=\"action\"\n mat-icon-button\n aria-label=\"Download image\"\n matTooltip=\"Download image\"\n matTooltipPosition=\"above\"\n [matTooltipDisabled]=\"isMobile()\"\n (click)=\"onDownloadImage()\">\n <mat-icon rtIconOutlined>download</mat-icon>\n </button>\n }\n </div>\n } @else {\n <rtui-file-upload (uploadFile)=\"onFileUpload($event)\" />\n }\n}\n","export enum RT_THEME_ENUM {\n LIGHT = 'light',\n DARK = 'dark',\n AUTO = 'auto',\n}\n\nexport type RtThemeType = `${RT_THEME_ENUM}`;\n\nexport const RT_THEME_STORAGE_KEY: string = 'rt-theme';\nexport const RT_DARK_CLASS: string = 'rt-dark';\nexport const RT_THEME_AUTO_CLASS: string = 'rt-theme-auto';\nexport const RT_THEME_ATTRIBUTE: string = 'data-rt-theme';\n\n/**\n * Accent roles whose `--rt-color-{role}-{0..100}` indirection rows a custom\n * color scheme may override. The semantic accent tier\n * (`--rt-bg/text/icon/border-accent-*`) derives entirely from these rows.\n */\nexport enum RT_ACCENT_ROLE_ENUM {\n PRIMARY = 'primary',\n INFO = 'info',\n SUCCESS = 'success',\n WARNING = 'warning',\n DANGER = 'danger',\n BRAND = 'brand',\n}\n\nexport type RtAccentRole = `${RT_ACCENT_ROLE_ENUM}`;\n\n/**\n * A brand palette: per accent role, a tonal ramp mapping tone step (0–100)\n * to a CSS color. One ramp serves both light and dark (the mode picks the tone).\n * Partial ramps are allowed — unset tones keep the rt-tools defaults.\n *\n * @example\n * const teal: RtColorSchemeRamp = {\n * primary: { 20: '#b3e3e1', 40: '#5cb8b5', 60: '#1a9d99', 100: '#008582' },\n * brand: { 20: '#e8e8e8', 100: '#008582' },\n * };\n */\nexport type RtColorSchemeRamp = Partial<Record<RtAccentRole, Record<number, string>>>;\n\n/** `'default'`/`null` clears the active scheme (back to the rt-tools palette). */\nexport const RT_DEFAULT_SCHEME: string = 'default';\nexport const RT_COLOR_SCHEME_STORAGE_KEY: string = 'rt-color-scheme';\nexport const RT_SCHEME_ATTRIBUTE: string = 'data-rt-scheme';\n","import { DOCUMENT } from '@angular/common';\nimport { effect, inject, Injectable, Signal, signal, WritableSignal } from '@angular/core';\n\nimport { LOCAL_STORAGE, PlatformService } from '@rt-tools/core';\n\nimport {\n RT_ACCENT_ROLE_ENUM,\n RT_COLOR_SCHEME_STORAGE_KEY,\n RT_DARK_CLASS,\n RT_DEFAULT_SCHEME,\n RT_SCHEME_ATTRIBUTE,\n RT_THEME_AUTO_CLASS,\n RT_THEME_ENUM,\n RT_THEME_STORAGE_KEY,\n RtColorSchemeRamp,\n RtThemeType,\n} from './rtui-theme.types';\n\n/**\n * Global theme + color-scheme switcher for the rt-tools design tokens.\n *\n * **Theme** (`light`/`dark`/`auto`): applies `.rt-dark` / `.rt-theme-auto` to\n * `<html>`; semantic tokens (`--rt-*`) adapt through `color-scheme` + `light-dark()`.\n * Persisted to localStorage (`rt-theme`). `auto` follows the OS preference.\n *\n * **Color scheme** (brand palette): toggles `data-rt-scheme=\"<name>\"` on `<html>`,\n * which activates a `[data-rt-scheme]` block (emitted by the `rt.color-scheme` Sass\n * mixin or injected at runtime via {@link registerColorScheme}). It overrides only\n * the accent-role rows `--rt-color-{role}-{N}`, so the whole accent layer recolors\n * while semantic token names stay stable. Orthogonal to light/dark; persisted to\n * localStorage (`rt-color-scheme`).\n */\n@Injectable({ providedIn: 'root' })\nexport class RtThemeService {\n readonly #document: Document = inject(DOCUMENT);\n readonly #platformService: PlatformService = inject(PlatformService);\n // falls back to the native localStorage when the app does not call provideRtStorage()\n readonly #storage: Storage | null = inject(LOCAL_STORAGE, { optional: true }) ?? this.#document.defaultView?.localStorage ?? null;\n\n readonly #theme: WritableSignal<RtThemeType> = signal<RtThemeType>(this.#restore());\n readonly #colorScheme: WritableSignal<string | null> = signal<string | null>(this.#restoreScheme());\n\n public readonly theme: Signal<RtThemeType> = this.#theme.asReadonly();\n public readonly colorScheme: Signal<string | null> = this.#colorScheme.asReadonly();\n\n constructor() {\n effect((): void => {\n this.#apply(this.#theme());\n });\n\n effect((): void => {\n this.#applyScheme(this.#colorScheme());\n });\n }\n\n public setTheme(theme: RtThemeType): void {\n this.#theme.set(theme);\n\n if (this.#platformService.isPlatformBrowser && this.#storage) {\n this.#storage.setItem(RT_THEME_STORAGE_KEY, theme);\n }\n }\n\n /** Toggles between light and dark (auto resolves to its opposite visual state). */\n public toggle(): void {\n this.setTheme(this.#isDarkApplied() ? RT_THEME_ENUM.LIGHT : RT_THEME_ENUM.DARK);\n }\n\n /**\n * Activates a registered color scheme by name, or clears it with `null`/`'default'`.\n * Orthogonal to the light/dark theme; persisted to localStorage.\n */\n public setColorScheme(name: string | null): void {\n const normalized: string | null = !name || name === RT_DEFAULT_SCHEME ? null : name;\n this.#colorScheme.set(normalized);\n\n if (this.#platformService.isPlatformBrowser && this.#storage) {\n if (normalized) {\n this.#storage.setItem(RT_COLOR_SCHEME_STORAGE_KEY, normalized);\n } else {\n this.#storage.removeItem(RT_COLOR_SCHEME_STORAGE_KEY);\n }\n }\n }\n\n /**\n * Injects (or replaces) a color scheme's `[data-rt-scheme]` block at runtime —\n * the JS twin of the `rt.color-scheme` Sass mixin. Browser-only (no-op on server;\n * for SSR/brand-critical schemes prefer the Sass path). Does not activate the\n * scheme — call {@link setColorScheme} afterwards.\n */\n public registerColorScheme(name: string, ramp: RtColorSchemeRamp): void {\n this.#validateRamp(name, ramp);\n\n if (!this.#platformService.isPlatformBrowser) {\n return;\n }\n\n const id: string = `rt-color-scheme-${name}`;\n const existing: HTMLElement | null = this.#document.getElementById(id);\n const style: HTMLStyleElement = (existing as HTMLStyleElement | null) ?? this.#document.createElement('style');\n\n style.id = id;\n style.textContent = this.#buildSchemeCss(name, ramp);\n\n if (!existing) {\n this.#document.head.appendChild(style);\n }\n }\n\n #restore(): RtThemeType {\n if (!this.#platformService.isPlatformBrowser || !this.#storage) {\n return RT_THEME_ENUM.LIGHT;\n }\n\n const stored: string | null = this.#storage.getItem(RT_THEME_STORAGE_KEY);\n\n return Object.values(RT_THEME_ENUM).includes(stored as RT_THEME_ENUM) ? (stored as RtThemeType) : RT_THEME_ENUM.LIGHT;\n }\n\n #restoreScheme(): string | null {\n if (!this.#platformService.isPlatformBrowser || !this.#storage) {\n return null;\n }\n\n const stored: string | null = this.#storage.getItem(RT_COLOR_SCHEME_STORAGE_KEY);\n\n return stored && stored !== RT_DEFAULT_SCHEME ? stored : null;\n }\n\n #apply(theme: RtThemeType): void {\n if (!this.#platformService.isPlatformBrowser) {\n return;\n }\n\n const classList: DOMTokenList = this.#document.documentElement.classList;\n\n classList.toggle(RT_DARK_CLASS, theme === RT_THEME_ENUM.DARK);\n classList.toggle(RT_THEME_AUTO_CLASS, theme === RT_THEME_ENUM.AUTO);\n }\n\n #applyScheme(name: string | null): void {\n if (!this.#platformService.isPlatformBrowser) {\n return;\n }\n\n const root: HTMLElement = this.#document.documentElement;\n\n if (name) {\n root.setAttribute(RT_SCHEME_ATTRIBUTE, name);\n } else {\n root.removeAttribute(RT_SCHEME_ATTRIBUTE);\n }\n }\n\n /**\n * Validates a ramp the same way the `rt.color-scheme` Sass mixin does — unknown\n * role or out-of-range tone (must be an integer 0–100) throws. Keeps the JS twin\n * at parity with the build-time generator instead of silently emitting bad rows.\n */\n #validateRamp(name: string, ramp: RtColorSchemeRamp): void {\n if (!name || name === RT_DEFAULT_SCHEME) {\n throw new Error(`registerColorScheme: name must be a non-empty string other than '${RT_DEFAULT_SCHEME}'.`);\n }\n\n const roles: string[] = Object.values(RT_ACCENT_ROLE_ENUM);\n\n for (const role of Object.keys(ramp)) {\n if (!roles.includes(role)) {\n throw new Error(`registerColorScheme(\"${name}\"): unknown role \"${role}\". Allowed roles: ${roles.join(', ')}.`);\n }\n\n for (const tone of Object.keys(ramp[role as RT_ACCENT_ROLE_ENUM] ?? {})) {\n const step: number = Number(tone);\n\n if (!Number.isInteger(step) || step < 0 || step > 100) {\n throw new Error(`registerColorScheme(\"${name}\"): role \"${role}\" tone \"${tone}\" must be an integer 0–100.`);\n }\n }\n }\n }\n\n /** Builds the `:root[data-rt-scheme=\"<name>\"] { --rt-color-{role}-{N}: … }` block (mirrors the Sass mixin). */\n #buildSchemeCss(name: string, ramp: RtColorSchemeRamp): string {\n const declarations: string = Object.entries(ramp)\n .flatMap(([role, tones]: [string, Record<number, string> | undefined]): string[] =>\n Object.entries(tones ?? {}).map(([tone, value]: [string, string]): string => `--rt-color-${role}-${tone}:${value};`)\n )\n .join('');\n\n return `:root[${RT_SCHEME_ATTRIBUTE}=\"${name}\"]{${declarations}}`;\n }\n\n #isDarkApplied(): boolean {\n if (this.#theme() === RT_THEME_ENUM.AUTO) {\n return this.#platformService.isPlatformBrowser && this.#document.defaultView\n ? this.#document.defaultView.matchMedia('(prefers-color-scheme: dark)').matches\n : false;\n }\n\n return this.#theme() === RT_THEME_ENUM.DARK;\n }\n}\n","import { Directive, input, InputSignal } from '@angular/core';\n\nimport { RtThemeType } from './rtui-theme.types';\n\n/**\n * Local theme context (GMT `data-theme` analogue).\n *\n * Sets `data-rt-theme` on the host, re-scoping all adaptive `--rt-*` tokens\n * inside the subtree through `color-scheme` + `light-dark()`:\n *\n * ```html\n * <!-- dark promo card inside a light page -->\n * <section [rtTheme]=\"'dark'\">…</section>\n * ```\n *\n * Note: `color` is inherited as a resolved value — re-apply text tokens\n * on elements inside the context (e.g. `color: var(--rt-text-base-primary)`).\n */\n@Directive({\n standalone: true,\n selector: '[rtTheme]',\n host: {\n '[attr.data-rt-theme]': 'rtTheme() || null',\n },\n})\nexport class RtThemeDirective {\n public readonly rtTheme: InputSignal<RtThemeType | ''> = input<RtThemeType | ''>('');\n}\n","/**\n * Public API Surface of rt-tools\n */\n\n// ui-kit\nexport * from './lib/ui-kit/modal';\nexport * from './lib/ui-kit/scrollable';\nexport * from './lib/ui-kit/side-menu';\nexport * from './lib/ui-kit/spinner';\nexport * from './lib/ui-kit/aside';\nexport * from './lib/ui-kit/buttons';\nexport * from './lib/ui-kit/icon';\nexport * from './lib/ui-kit/toolbar';\nexport * from './lib/ui-kit/header';\nexport * from './lib/ui-kit/table';\nexport * from './lib/ui-kit/providers';\nexport * from './lib/ui-kit/snack-bar';\nexport * from './lib/ui-kit/animation';\nexport * from './lib/ui-kit/info-badge';\nexport * from './lib/ui-kit/toggle';\nexport * from './lib/ui-kit/file-uploader';\nexport * from './lib/ui-kit/dynamic-selectors';\nexport * from './lib/ui-kit/image-uploader';\nexport * from './lib/ui-kit/popover';\nexport * from './lib/ui-kit/action-bar';\nexport * from './lib/ui-kit/theme';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","MatFormField"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rt-tools-ui-kit.mjs","sources":["../../../projects/ui-kit/src/lib/ui-kit/modal/modal.component.ts","../../../projects/ui-kit/src/lib/ui-kit/modal/modal.component.html","../../../projects/ui-kit/src/lib/ui-kit/modal/modal.types.ts","../../../projects/ui-kit/src/lib/ui-kit/modal/modal.service.ts","../../../projects/ui-kit/src/lib/ui-kit/scrollable/scrollable-container.component.ts","../../../projects/ui-kit/src/lib/ui-kit/scrollable/scrollable-container.component.html","../../../projects/ui-kit/src/lib/ui-kit/side-menu/menu-sub-item/rtui-side-menu-sub-item.component.ts","../../../projects/ui-kit/src/lib/ui-kit/side-menu/menu-sub-item/rtui-side-menu-sub-item.component.html","../../../projects/ui-kit/src/lib/ui-kit/side-menu/menu/rtui-side-menu.component.ts","../../../projects/ui-kit/src/lib/ui-kit/side-menu/menu/rtui-side-menu.component.html","../../../projects/ui-kit/src/lib/ui-kit/spinner/spinner.component.ts","../../../projects/ui-kit/src/lib/ui-kit/spinner/spinner.component.html","../../../projects/ui-kit/src/lib/ui-kit/aside/aside.types.ts","../../../projects/ui-kit/src/lib/ui-kit/aside/aside.enums.ts","../../../projects/ui-kit/src/lib/ui-kit/aside/components/panel/aside-panel.component.ts","../../../projects/ui-kit/src/lib/ui-kit/aside/components/panel/aside-panel.component.html","../../../projects/ui-kit/src/lib/ui-kit/aside/aside.service.ts","../../../projects/ui-kit/src/lib/ui-kit/toolbar/toolbar.component.ts","../../../projects/ui-kit/src/lib/ui-kit/toolbar/toolbar.component.html","../../../projects/ui-kit/src/lib/ui-kit/aside/components/error-notification/aside-error-box.component.ts","../../../projects/ui-kit/src/lib/ui-kit/aside/components/error-notification/aside-error-box.component.html","../../../projects/ui-kit/src/lib/ui-kit/aside/components/container/aside-container.component.ts","../../../projects/ui-kit/src/lib/ui-kit/aside/components/container/aside-container.component.html","../../../projects/ui-kit/src/lib/ui-kit/icon/rtui-icon.component.ts","../../../projects/ui-kit/src/lib/ui-kit/icon/rtui-icon.component.html","../../../projects/ui-kit/src/lib/ui-kit/buttons/unified-button/rtui-button.component.ts","../../../projects/ui-kit/src/lib/ui-kit/buttons/unified-button/rtui-button.component.html","../../../projects/ui-kit/src/lib/ui-kit/buttons/multi-button/rtui-multi-button.component.ts","../../../projects/ui-kit/src/lib/ui-kit/buttons/multi-button/rtui-multi-button.component.html","../../../projects/ui-kit/src/lib/ui-kit/header/header.component.ts","../../../projects/ui-kit/src/lib/ui-kit/header/header.component.html","../../../projects/ui-kit/src/lib/ui-kit/table/components/clear-search-button/rtui-clear-button.component.ts","../../../projects/ui-kit/src/lib/ui-kit/table/components/clear-search-button/rtui-clear-button.component.html","../../../projects/ui-kit/src/lib/ui-kit/table/util/default-pagination.ts","../../../projects/ui-kit/src/lib/ui-kit/table/components/pagination-view/rtui-pagination.component.ts","../../../projects/ui-kit/src/lib/ui-kit/table/components/pagination-view/rtui-pagination.component.html","../../../projects/ui-kit/src/lib/ui-kit/table/util/table-stop-row-click-attribute.const.ts","../../../projects/ui-kit/src/lib/ui-kit/table/util/table-column.interface.ts","../../../projects/ui-kit/src/lib/ui-kit/table/util/table-component.interface.ts","../../../projects/ui-kit/src/lib/ui-kit/table/util/table-config.service.ts","../../../projects/ui-kit/src/lib/ui-kit/table/util/common-selectors.directive.ts","../../../projects/ui-kit/src/lib/ui-kit/table/util/dynamic-list-selectors.directive.ts","../../../projects/ui-kit/src/lib/ui-kit/table/util/table-selectors.directive.ts","../../../projects/ui-kit/src/lib/ui-kit/table/util/index.ts","../../../projects/ui-kit/src/lib/ui-kit/table/components/table-base-cell/table-base-cell.component.ts","../../../projects/ui-kit/src/lib/ui-kit/table/components/table-base-cell/table-base-cell.component.html","../../../projects/ui-kit/src/lib/ui-kit/table/components/table-header-cell/table-header-cell.component.ts","../../../projects/ui-kit/src/lib/ui-kit/table/components/table-header-cell/table-header-cell.component.html","../../../projects/ui-kit/src/lib/ui-kit/table/components/table-header-filter-cell/table-header-filter-cell.component.ts","../../../projects/ui-kit/src/lib/ui-kit/table/components/table-header-filter-cell/table-header-filter-cell.component.html","../../../projects/ui-kit/src/lib/ui-kit/table/directives/rtui-stop-table-row-click.directive.ts","../../../projects/ui-kit/src/lib/ui-kit/table/directives/rtui-table-row-click-directive.ts","../../../projects/ui-kit/src/lib/ui-kit/table/components/table/rtui-table.component.ts","../../../projects/ui-kit/src/lib/ui-kit/table/components/table/rtui-table.component.html","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/actions/rtui-dynamic-selector-list-actions.component.ts","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/actions/rtui-dynamic-selector-list-actions.component.html","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/dynamic-selectors-directive.ts","../../../projects/ui-kit/src/lib/ui-kit/toggle/toggle-size.type.enum.ts","../../../projects/ui-kit/src/lib/ui-kit/toggle/rtui-toggle.component.ts","../../../projects/ui-kit/src/lib/ui-kit/toggle/rtui-toggle.component.html","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/multi-selector-popup/rtui-multi-selector-popup.component.ts","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/multi-selector-popup/rtui-multi-selector-popup.component.html","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/placeholder/rtui-dynamic-selector-placeholder.component.ts","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/placeholder/rtui-dynamic-selector-placeholder.component.html","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/selected-list/rtui-dynamic-selector-selected-list.component.ts","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/selected-list/rtui-dynamic-selector-selected-list.component.html","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/dynamic-selector/rtui-dynamic-selector.component.ts","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/dynamic-selector/rtui-dynamic-selector.component.html","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/dynamic-input/rtui-dynamic-input.component.ts","../../../projects/ui-kit/src/lib/ui-kit/dynamic-selectors/components/dynamic-input/rtui-dynamic-input.component.html","../../../projects/ui-kit/src/lib/ui-kit/table/components/table-config-aside/rt-table-config-aside.component.ts","../../../projects/ui-kit/src/lib/ui-kit/table/components/table-config-aside/rt-table-config-aside.component.html","../../../projects/ui-kit/src/lib/ui-kit/table/components/table-container/table-container.component.ts","../../../projects/ui-kit/src/lib/ui-kit/table/components/table-container/table-container.component.html","../../../projects/ui-kit/src/lib/ui-kit/table/dynamic-list.component.ts","../../../projects/ui-kit/src/lib/ui-kit/table/dynamic-list.component.html","../../../projects/ui-kit/src/lib/ui-kit/popover/rtui-popover-container.component.ts","../../../projects/ui-kit/src/lib/ui-kit/popover/rtui-popover-container.component.html","../../../projects/ui-kit/src/lib/ui-kit/popover/rt-popover.directive.ts","../../../projects/ui-kit/src/lib/ui-kit/action-bar/components/bar/rtui-action-bar.component.ts","../../../projects/ui-kit/src/lib/ui-kit/action-bar/components/bar/rtui-action-bar.component.html","../../../projects/ui-kit/src/lib/ui-kit/action-bar/rt-action-bar.service.ts","../../../projects/ui-kit/src/lib/ui-kit/action-bar/components/container/rtui-action-bar-container.component.ts","../../../projects/ui-kit/src/lib/ui-kit/action-bar/components/container/rtui-action-bar-container.component.html","../../../projects/ui-kit/src/lib/ui-kit/providers.ts","../../../projects/ui-kit/src/lib/ui-kit/snack-bar/snack-bar.compontent.ts","../../../projects/ui-kit/src/lib/ui-kit/snack-bar/snack-bar.component.html","../../../projects/ui-kit/src/lib/ui-kit/snack-bar/rt-snack-bar.service.ts","../../../projects/ui-kit/src/lib/ui-kit/animation/progress.animation.ts","../../../projects/ui-kit/src/lib/ui-kit/info-badge/badge-info-enum.ts","../../../projects/ui-kit/src/lib/ui-kit/info-badge/calculate-text-color-based-on-back.ts","../../../projects/ui-kit/src/lib/ui-kit/info-badge/info-badge.component.ts","../../../projects/ui-kit/src/lib/ui-kit/info-badge/info-badge.component.html","../../../projects/ui-kit/src/lib/ui-kit/info-badge/info-badge-types.enum.ts","../../../projects/ui-kit/src/lib/ui-kit/file-uploader/rtui-file-upload.component.ts","../../../projects/ui-kit/src/lib/ui-kit/file-uploader/rtui-file-upload.component.html","../../../projects/ui-kit/src/lib/ui-kit/image-uploader/image-uploader/rtui-image-upload.component.ts","../../../projects/ui-kit/src/lib/ui-kit/image-uploader/image-uploader/rtui-image-upload.component.html","../../../projects/ui-kit/src/lib/ui-kit/theme/rtui-theme.types.ts","../../../projects/ui-kit/src/lib/ui-kit/theme/rtui-theme.service.ts","../../../projects/ui-kit/src/lib/ui-kit/theme/rtui-theme.directive.ts","../../../projects/ui-kit/src/public-api.ts","../../../projects/ui-kit/src/rt-tools-ui-kit.ts"],"sourcesContent":["import { NgClass, NgComponentOutlet, NgStyle } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostBinding, inject, OnInit } from '@angular/core';\nimport { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { BlockDirective, ElemDirective } from '@rt-tools/core';\nimport { checkIsMatchingValues, SanitizePipe } from '@rt-tools/utils';\nimport { IModal } from './modal.types';\n\n@Component({\n selector: 'rtui-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'rtui-modal' },\n imports: [\n NgStyle,\n NgClass,\n NgComponentOutlet,\n ReactiveFormsModule,\n SanitizePipe,\n\n // material\n MatDialogModule,\n MatInputModule,\n MatSelectModule,\n MatButtonModule,\n MatIcon,\n\n // BEM\n BlockDirective,\n ElemDirective,\n ],\n})\nexport class RtuiModalComponent<T> implements OnInit {\n public readonly data: IModal.Data<T> = inject(MAT_DIALOG_DATA);\n readonly #dialogRef: MatDialogRef<RtuiModalComponent<T>> = inject(MatDialogRef<RtuiModalComponent<T>>);\n\n public control: FormControl | undefined;\n public selectControl: FormControl | undefined;\n\n public readonly bemBlock: string = 'rtui-modal';\n\n @HostBinding('class')\n public get hostClasses(): Record<string, boolean> {\n return {\n [this.bemBlock]: true,\n };\n }\n\n public ngOnInit(): void {\n if (Boolean(this.data.select)) {\n this.selectControl = new FormControl(null, Validators.required);\n }\n\n if (Boolean(this.data.textArea)) {\n this.control = new FormControl(this.data.textArea?.value);\n }\n\n if (Boolean(this.data.input)) {\n this.control = new FormControl(this.data.input?.value, Validators.required);\n\n if (this.data.input?.sample) {\n this.control.addValidators(checkIsMatchingValues(this.data.input.sample));\n }\n }\n }\n\n public onClose(button: IModal.Button<T>): void {\n this.#dialogRef.close({\n value: Boolean(this.data.select) && button.assignSelectedValue ? this.selectControl?.value : button.value,\n message: Boolean(this.control) ? this.control?.value : null,\n });\n }\n}\n","<ng-container rtBlock=\"rtui-modal\">\n @if (data.title) {\n <div rtElem=\"title\" mat-dialog-title>\n @if (data.icon) {\n <h2>\n <mat-icon [ngStyle]=\"data.icon.style\">\n {{ data.icon.value }}\n </mat-icon>\n </h2>\n }\n\n <h1>{{ data.title }}</h1>\n </div>\n }\n\n <mat-dialog-content>\n @if (data.text) {\n <div rtElem=\"text\" [innerHTML]=\"data.text | sanitize\"></div>\n }\n\n @if (data.confirmation) {\n <div rtElem=\"confirmation\" [innerHTML]=\"data.confirmation | sanitize\"></div>\n }\n\n @if (data.input) {\n <div rtElem=\"input\">{{ data.input.label }}</div>\n\n <mat-form-field [appearance]=\"'outline'\">\n <input matInput type=\"text\" autocomplete=\"off\" [formControl]=\"control!\" />\n </mat-form-field>\n }\n\n @if (data.textArea) {\n <mat-form-field rtElem=\"textarea\">\n <textarea matInput [formControl]=\"control!\" [placeholder]=\"data.textArea.placeholder\"></textarea>\n </mat-form-field>\n }\n\n @if (data.select) {\n <mat-form-field rtElem=\"select\">\n @if (data.select.label) {\n <mat-label>{{ data.select.label }}</mat-label>\n }\n\n <mat-select required [formControl]=\"selectControl!\">\n <mat-option>--</mat-option>\n @for (option of data.select.value; track option?.name ?? option) {\n <mat-option [value]=\"option?.value\">\n {{ option?.name }}\n </mat-option>\n }\n </mat-select>\n\n @if (data.select.hint && selectControl?.hasError('required')) {\n <mat-error>{{ data.select.hint }}</mat-error>\n }\n </mat-form-field>\n }\n\n @if (data?.component) {\n <ng-container *ngComponentOutlet=\"data!.component!\" />\n }\n </mat-dialog-content>\n\n <mat-dialog-actions [attr.align]=\"data.buttonsAlign\">\n @for (button of data.buttons; track button.text) {\n @switch (button.appearance) {\n @case ('raised') {\n <button\n mat-flat-button\n type=\"button\"\n [ngClass]=\"button.className\"\n [color]=\"button.color\"\n [disabled]=\"button.validateSelect && (selectControl?.invalid || control?.invalid)\"\n [ngStyle]=\"button.style\"\n (click)=\"onClose(button)\">\n {{ button.text }}\n </button>\n }\n\n @case ('flat') {\n <button\n mat-flat-button\n type=\"button\"\n [color]=\"button.color\"\n [disabled]=\"button.validateSelect && (selectControl?.invalid || control?.invalid)\"\n [ngStyle]=\"button.style\"\n (click)=\"onClose(button)\">\n {{ button.text }}\n </button>\n }\n\n @case ('stroked') {\n <button\n mat-stroked-button\n type=\"button\"\n [color]=\"button.color\"\n [disabled]=\"button.validateSelect && (selectControl?.invalid || control?.invalid)\"\n [ngStyle]=\"button.style\"\n (click)=\"onClose(button)\">\n {{ button.text }}\n </button>\n }\n\n @case ('fab') {\n <button\n mat-fab\n type=\"button\"\n [color]=\"button.color\"\n [disabled]=\"button.validateSelect && (selectControl?.invalid || control?.invalid)\"\n [ngStyle]=\"button.style\"\n (click)=\"onClose(button)\">\n {{ button.text }}\n </button>\n }\n\n @case ('mini-fab') {\n <button\n mat-mini-fab\n type=\"button\"\n [color]=\"button.color\"\n [disabled]=\"button.validateSelect && (selectControl?.invalid || control?.invalid)\"\n [ngStyle]=\"button.style\"\n (click)=\"onClose(button)\">\n {{ button.text }}\n </button>\n }\n\n @default {\n <button\n mat-button\n type=\"button\"\n [color]=\"button.color\"\n [disabled]=\"button.validateSelect && (selectControl?.invalid || control?.invalid)\"\n [ngStyle]=\"button.style\"\n (click)=\"onClose(button)\">\n {{ button.text }}\n </button>\n }\n }\n }\n </mat-dialog-actions>\n</ng-container>\n","import { Type } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { Observable } from 'rxjs';\n\nimport { Nullable } from '@rt-tools/core';\n\n// Modal enums\nexport enum MODAL_WINDOW_SIZE_ENUM {\n SM = '25rem',\n MD = '45rem',\n LG = '65rem',\n FULL = '100%',\n}\n\nexport type ModalWindowSizeType =\n | MODAL_WINDOW_SIZE_ENUM.SM\n | MODAL_WINDOW_SIZE_ENUM.MD\n | MODAL_WINDOW_SIZE_ENUM.LG\n | MODAL_WINDOW_SIZE_ENUM.FULL;\n\n// Modal data interfaces\nexport interface Icon {\n value: string;\n style?: { [className: string]: string };\n}\n\nexport interface NameValueType<N = string, V = string> {\n name: N;\n value: V;\n}\n\nexport interface Select<T> {\n value: Array<NameValueType<string, T>>;\n label?: string;\n hint?: string;\n}\n\nexport namespace IModal {\n export interface Button<T> {\n text: string;\n color?: ThemePalette;\n value: Nullable<T>;\n appearance?: 'standard' | 'raised' | 'flat' | 'stroked' | 'fab' | 'mini-fab';\n validateSelect?: boolean;\n assignSelectedValue?: boolean;\n style?: { [className: string]: string };\n className?: string;\n }\n\n export interface Data<T> {\n buttonsAlign: 'start' | 'center' | 'end';\n buttons: Array<Button<T>>;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n component?: Type<any>;\n icon?: Icon;\n title?: string;\n text?: string;\n confirmation?: string;\n input?: {\n label: string;\n placeholder: string;\n value: string;\n sample?: string;\n };\n textArea?: {\n value: string;\n placeholder: string;\n };\n select?: Select<T>;\n }\n\n export interface DataAnswer<T> {\n value: T;\n message: string;\n }\n\n export type ConfirmResponsePredicate<T> = (answer: Nullable<IModal.DataAnswer<T>>) => boolean;\n\n export interface ConfirmResponse<T> {\n on(predicate: ConfirmResponsePredicate<T>): Observable<Nullable<IModal.DataAnswer<T>>>;\n\n onCancel(cancel?: ConfirmResponsePredicate<T>): Observable<Nullable<IModal.DataAnswer<T>>>;\n\n onConfirm(confirm?: ConfirmResponsePredicate<T>): Observable<Nullable<IModal.DataAnswer<T>>>;\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\nimport { Observable, ReplaySubject, share } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { Nullable } from '@rt-tools/core';\nimport { MODAL_WINDOW_SIZE_ENUM } from './modal.types';\nimport { RtuiModalComponent } from './modal.component';\nimport { IModal } from './modal.types';\n\n@Injectable()\nexport class RtModalService {\n readonly #dialogRef: MatDialog = inject(MatDialog);\n readonly #defaultConfig: MatDialogConfig = {\n width: MODAL_WINDOW_SIZE_ENUM.MD,\n autoFocus: false,\n closeOnNavigation: true,\n };\n\n public confirm<T>(data: IModal.Data<T>, config?: MatDialogConfig): Observable<Nullable<IModal.DataAnswer<T>>> {\n const dialogRef: MatDialogRef<RtuiModalComponent<T>, IModal.DataAnswer<T>> = this.#dialogRef.open<\n RtuiModalComponent<T>,\n IModal.Data<T>,\n IModal.DataAnswer<T>\n >(RtuiModalComponent, {\n ...this.#defaultConfig,\n ...config,\n data,\n });\n\n return dialogRef.afterClosed();\n }\n\n public with<T>(data: IModal.Data<T>, config?: MatDialogConfig): IModal.ConfirmResponse<T> {\n /** Replacement for deprecated multicasting operators (https://github.com/ReactiveX/rxjs/issues/6452) */\n const subject$: ReplaySubject<Nullable<IModal.DataAnswer<T>>> = new ReplaySubject<Nullable<IModal.DataAnswer<T>>>(1);\n const result$: Observable<Nullable<IModal.DataAnswer<T>>> = this.confirm(data, config).pipe(\n share({\n connector: () => subject$,\n resetOnError: false,\n resetOnComplete: false,\n resetOnRefCountZero: true,\n })\n );\n\n const defaultCancel: IModal.ConfirmResponsePredicate<T> = (answer: Nullable<IModal.DataAnswer<T>>) =>\n !(Boolean(answer) && Boolean(answer?.value));\n\n const defaultConfirm: IModal.ConfirmResponsePredicate<T> = (answer: Nullable<IModal.DataAnswer<T>>) =>\n Boolean(answer) && Boolean(answer?.value);\n\n return {\n onCancel: (cancel: IModal.ConfirmResponsePredicate<T> = defaultCancel) =>\n result$.pipe(filter((answer: Nullable<IModal.DataAnswer<T>>) => cancel(answer))),\n onConfirm: (confirm: IModal.ConfirmResponsePredicate<T> = defaultConfirm) =>\n result$.pipe(filter((answer: Nullable<IModal.DataAnswer<T>>) => confirm(answer))),\n on: (predicate: IModal.ConfirmResponsePredicate<T>) =>\n result$.pipe(filter((answer: Nullable<IModal.DataAnswer<T>>) => predicate(answer))),\n };\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, contentChild, Directive, Signal, TemplateRef, Type } from '@angular/core';\n\nimport { BlockDirective, ElemDirective, Nullable } from '@rt-tools/core';\n\n@Directive({\n selector: '[rtuiScrollableHeader]',\n})\nexport class RtuiScrollableContainerHeaderDirective {}\n\n@Directive({\n selector: '[rtuiScrollableContent]',\n})\nexport class RtuiScrollableContainerContentDirective {}\n\n@Directive({\n selector: '[rtuiScrollableFooter]',\n})\nexport class RtuiScrollableContainerFooterDirective {}\n\n@Component({\n selector: 'rtui-scrollable',\n templateUrl: './scrollable-container.component.html',\n styleUrls: ['./scrollable-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [BlockDirective, ElemDirective, NgTemplateOutlet],\n})\nexport class RtuiScrollableContainerComponent {\n public readonly headerTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiScrollableContainerHeaderDirective, {\n read: TemplateRef,\n });\n public readonly contentTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiScrollableContainerContentDirective, {\n read: TemplateRef,\n });\n public readonly footerTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiScrollableContainerFooterDirective, {\n read: TemplateRef,\n });\n}\n","<ng-container rtBlock=\"rtui-scrollable\">\n @if (headerTpl()) {\n <div rtElem=\"header\">\n <ng-container *ngTemplateOutlet=\"headerTpl() ?? null\" />\n </div>\n }\n\n @if (contentTpl()) {\n <div rtElem=\"content\">\n <ng-container *ngTemplateOutlet=\"contentTpl() ?? null\" />\n </div>\n }\n\n @if (footerTpl()) {\n <div rtElem=\"footer\">\n <ng-container *ngTemplateOutlet=\"footerTpl() ?? null\" />\n </div>\n }\n</ng-container>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n} from '@angular/core';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatListItem, MatListItemIcon, MatListItemTitle, MatNavList } from '@angular/material/list';\nimport { MAT_TOOLTIP_DEFAULT_OPTIONS, MatTooltip } from '@angular/material/tooltip';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable } from '@rt-tools/core';\nimport { RtHideTooltipDirective, RtIconOutlinedDirective } from '@rt-tools/utils';\nimport { ISideMenu } from '../side-menu.types';\nimport { RtuiSideMenuComponent } from '../menu/rtui-side-menu.component';\n\n@Component({\n selector: 'rtui-side-menu-sub-item',\n templateUrl: './rtui-side-menu-sub-item.component.html',\n styleUrls: ['./rtui-side-menu-sub-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n MatIcon,\n MatListItem,\n MatNavList,\n MatListItemIcon,\n MatListItemTitle,\n MatExpansionModule,\n MatTooltip,\n\n // directives\n BlockDirective,\n ElemDirective,\n ModDirective,\n RtIconOutlinedDirective,\n RtHideTooltipDirective,\n ],\n providers: [\n {\n provide: MAT_TOOLTIP_DEFAULT_OPTIONS,\n useValue: {\n disableTooltipInteractivity: true,\n },\n },\n ],\n})\nexport class RtuiSideMenuSubItemComponent {\n public readonly menuRef: RtuiSideMenuComponent = inject(RtuiSideMenuComponent);\n\n public item: InputSignal<ISideMenu.Item> = input.required<ISideMenu.Item>();\n public isMobile: InputSignalWithTransform<Nullable<boolean>, Nullable<boolean>> = input<Nullable<boolean>, Nullable<boolean>>(false, {\n transform: booleanAttribute,\n });\n public isSubMenuXScrollEnabled: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n public isSubMenuIconsOutlined: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n public isSubMenuButtonIconsOutlined: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n public isSubMenuTooltipsShown: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n\n public readonly clickSubMenuAction: OutputEmitterRef<{ item: ISideMenu.Item; event: MouseEvent }> = output<{\n item: ISideMenu.Item;\n event: MouseEvent;\n }>();\n public readonly clickSubMenuAdditionalAction: OutputEmitterRef<{ data: ISideMenu.ItemData; event: MouseEvent }> = output<{\n data: ISideMenu.ItemData;\n event: MouseEvent;\n }>();\n\n public onClickSubMenu(item: ISideMenu.Item, event: MouseEvent): void {\n this.clickSubMenuAction.emit({ item, event });\n }\n\n public onClickSubMenuAdditional(data: ISideMenu.ItemData, event: MouseEvent): void {\n this.clickSubMenuAdditionalAction.emit({ data, event });\n }\n}\n","@if (item()) {\n <ng-container *ngTemplateOutlet=\"listElemTpl; context: { $implicit: item() }\" />\n}\n\n<ng-template #listElemTpl let-item>\n @if (item?.link) {\n <mat-list-item\n rtBlock=\"rtui-side-menu-sub-item\"\n [rtMod]=\"{ fixed: isSubMenuXScrollEnabled() }\"\n [id]=\"item.id\"\n [activated]=\"menuRef.activeMenuIds().includes(item.id)\"\n (click)=\"onClickSubMenu(item, $event)\">\n @if (item?.icon) {\n <mat-icon matListItemIcon rtElem=\"icon\" [rtIconOutlined]=\"isSubMenuIconsOutlined()\">{{ item.icon }}</mat-icon>\n }\n\n @if (item?.name) {\n <div rtBlock=\"rtui-side-menu-sub-item-title\">\n <div\n #titleTpl\n rtElem=\"text\"\n matTooltipPosition=\"above\"\n [matTooltip]=\"item.name\"\n [matTooltipDisabled]=\"!isSubMenuTooltipsShown() || isMobile()\"\n [rtHideTooltipDirective]=\"titleTpl\"\n [isTooltipShown]=\"isSubMenuTooltipsShown() && !isMobile()\">\n {{ item.name }}\n </div>\n\n @if (item?.iconButton?.icon) {\n <div rtBlock=\"rtui-side-menu-sub-item-title-button\">\n <mat-icon\n rtElem=\"icon\"\n [rtIconOutlined]=\"isSubMenuButtonIconsOutlined()\"\n (click)=\"onClickSubMenuAdditional(item.iconButton?.data, $event); $event.stopPropagation()\">\n {{ item.iconButton.icon }}\n </mat-icon>\n </div>\n }\n </div>\n }\n </mat-list-item>\n } @else if (item?.submenu?.length) {\n <mat-expansion-panel\n #panel\n rtBlock=\"rtui-side-menu-expand-sub-item\"\n [rtMod]=\"{ fixed: isSubMenuXScrollEnabled() }\"\n [expanded]=\"menuRef.activeMenuIds().includes(item.id)\">\n <mat-expansion-panel-header\n rtBlock=\"rtui-side-menu-expand-sub-item-header\"\n [rtMod]=\"{ activated: menuRef.activeMenuIds().includes(item.id) }\">\n @if (item?.icon) {\n <mat-icon matListItemIcon rtElem=\"icon\" [rtIconOutlined]=\"isSubMenuIconsOutlined()\">{{ item.icon }}</mat-icon>\n }\n\n @if (item?.name) {\n <div\n #headerTitleTpl\n matListItemTitle\n rtElem=\"title\"\n matTooltipPosition=\"above\"\n [matTooltip]=\"item.name\"\n [matTooltipDisabled]=\"!isSubMenuTooltipsShown() || isMobile()\"\n [rtHideTooltipDirective]=\"headerTitleTpl\"\n [isTooltipShown]=\"isSubMenuTooltipsShown() && !isMobile()\">\n {{ item.name }}\n </div>\n }\n </mat-expansion-panel-header>\n\n @if (panel?.expanded) {\n <mat-nav-list>\n @for (item of item?.submenu; track i; let i = $index) {\n <ng-container *ngTemplateOutlet=\"listElemTpl; context: { $implicit: item }\" />\n }\n </mat-nav-list>\n }\n </mat-expansion-panel>\n }\n</ng-template>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n Directive,\n input,\n InputSignal,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n Signal,\n signal,\n TemplateRef,\n Type,\n viewChild,\n WritableSignal,\n} from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatListItem, MatListItemIcon, MatNavList } from '@angular/material/list';\nimport { MatDrawer, MatSidenavModule } from '@angular/material/sidenav';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable } from '@rt-tools/core';\nimport { RtIconOutlinedDirective, RtNavigationDirective, RtScrollToElementDirective, transformArrayInput } from '@rt-tools/utils';\nimport { ISideMenu } from '../side-menu.types';\nimport {\n RtuiScrollableContainerComponent,\n RtuiScrollableContainerContentDirective,\n RtuiScrollableContainerFooterDirective,\n RtuiScrollableContainerHeaderDirective,\n} from '../../scrollable';\nimport { RtuiSideMenuSubItemComponent } from '../menu-sub-item/rtui-side-menu-sub-item.component';\n\n@Directive({\n selector: '[rtuiSideMenuHeader]',\n})\nexport class RtuiSideMenuHeaderDirective {}\n\n@Directive({\n selector: '[rtuiSideMenuFooter]',\n})\nexport class RtuiSideMenuFooterDirective {}\n\n@Component({\n selector: 'rtui-side-menu',\n templateUrl: './rtui-side-menu.component.html',\n styleUrls: ['./rtui-side-menu.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n MatSidenavModule,\n MatIcon,\n MatListItem,\n MatNavList,\n MatListItemIcon,\n\n // directives\n BlockDirective,\n ElemDirective,\n ModDirective,\n RtuiScrollableContainerHeaderDirective,\n RtuiScrollableContainerContentDirective,\n RtuiScrollableContainerFooterDirective,\n RtScrollToElementDirective,\n RtIconOutlinedDirective,\n RtNavigationDirective,\n\n // components\n RtuiScrollableContainerComponent,\n RtuiSideMenuSubItemComponent,\n ],\n})\nexport class RtuiSideMenuComponent {\n public readonly headerTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiSideMenuHeaderDirective, {\n read: TemplateRef,\n });\n public readonly footerTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiSideMenuFooterDirective, {\n read: TemplateRef,\n });\n public readonly subMenuRef: Signal<Nullable<MatDrawer>> = viewChild(MatDrawer);\n\n public readonly backToMainMenuButton: Signal<ISideMenu.Item> = signal({ id: 0, icon: 'arrow_back', name: 'Main Menu', link: ' ' });\n public readonly selectedItem: WritableSignal<Nullable<ISideMenu.Item>> = signal(null);\n public readonly selectedSubMenu: WritableSignal<Nullable<ISideMenu.Item[]>> = signal(null);\n\n public activeMenuIds: InputSignal<Array<string | number>> = input.required();\n public menuItems: InputSignalWithTransform<ISideMenu.Item[], ISideMenu.Item[]> = input<ISideMenu.Item[], ISideMenu.Item[]>([], {\n transform: (value: ISideMenu.Item[]) => transformArrayInput(value),\n });\n public isMobile: InputSignalWithTransform<Nullable<boolean>, Nullable<boolean>> = input<Nullable<boolean>, Nullable<boolean>>(false, {\n transform: booleanAttribute,\n });\n public isSubMenuXScrollEnabled: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(true, {\n transform: booleanAttribute,\n });\n public isMainMenuIconsOutlined: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n public isSubMenuIconsOutlined: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n public isSubMenuButtonIconsOutlined: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n public isSubMenuTooltipsShown: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n\n public activeMenuId: Signal<number | string> = computed(() => {\n return this.activeMenuIds()?.length ? this.activeMenuIds()[this.activeMenuIds()?.length - 1] : '';\n });\n\n public readonly closeMobileMenuAction: OutputEmitterRef<void> = output<void>();\n public readonly clickSubMenuAction: OutputEmitterRef<{ item: ISideMenu.Item; event: MouseEvent }> = output<{\n item: ISideMenu.Item;\n event: MouseEvent;\n }>();\n public readonly clickSubMenuAdditionalAction: OutputEmitterRef<{ data: ISideMenu.ItemData; event: MouseEvent }> = output<{\n data: ISideMenu.ItemData;\n event: MouseEvent;\n }>();\n\n public onClickMenu(item: ISideMenu.Item): void {\n this.selectedItem.set(item);\n\n if (item?.submenu) {\n this.selectedSubMenu.set(item.submenu);\n this.#openSubMenu();\n } else if (this.selectedSubMenu()) {\n this.closeSubMenu();\n }\n\n if (item?.link) {\n this.closeMobileMenu();\n }\n }\n\n public onClickSubMenu({ item, event }: { item: ISideMenu.Item; event: MouseEvent }): void {\n if (item?.link) {\n this.clickSubMenuAction.emit({ item, event });\n this.closeSubMenu();\n this.closeMobileMenu();\n }\n }\n\n public onBackToMainMenu(): void {\n this.selectedItem.set(null);\n this.selectedSubMenu.set(null);\n }\n\n public toggleSubMenu(item?: ISideMenu.Item): void {\n if (item?.submenu) {\n this.selectedSubMenu.set(item.submenu);\n this.#openSubMenu();\n } else if (this.selectedItem()?.submenu) {\n this.selectedSubMenu.set(this.selectedItem()?.submenu);\n } else {\n this.closeSubMenu();\n }\n }\n\n public closeSubMenu(): void {\n this.selectedItem.set(null);\n this.selectedSubMenu.set(null);\n this.subMenuRef()?.close().then();\n }\n\n public closeMobileMenu(): void {\n if (this.isMobile()) {\n this.closeMobileMenuAction.emit();\n }\n }\n\n public clickSubMenuAdditional({ data, event }: { data: ISideMenu.ItemData; event: MouseEvent }): void {\n this.clickSubMenuAdditionalAction.emit({ data, event });\n }\n\n #openSubMenu(): void {\n this.subMenuRef()?.open().then();\n }\n}\n","@if (isMobile()) {\n <rtui-scrollable rtBlock=\"rtui-mobile-side-menu\">\n @if (headerTpl()) {\n <ng-container *rtuiScrollableHeader>\n <ng-container *ngTemplateOutlet=\"headerTpl() ?? null\" />\n </ng-container>\n }\n\n @if (menuItems().length) {\n <ng-container *rtuiScrollableContent>\n <mat-nav-list\n rtBlock=\"rtui-mobile-side-menu-list\"\n [rtMod]=\"{ scrollable: selectedSubMenu()?.length && isSubMenuXScrollEnabled() }\">\n @if (selectedSubMenu()?.length) {\n <div rtElem=\"sub\" [rtScrollToElement]=\"activeMenuId()\" [elements]=\"selectedSubMenu() ?? []\">\n <rtui-side-menu-sub-item\n [item]=\"backToMainMenuButton()\"\n [isMobile]=\"isMobile()\"\n (clickSubMenuAction)=\"onBackToMainMenu()\" />\n\n @for (item of selectedSubMenu(); track i; let i = $index) {\n <rtui-side-menu-sub-item\n [item]=\"item\"\n [isMobile]=\"isMobile()\"\n [isSubMenuXScrollEnabled]=\"isSubMenuXScrollEnabled()\"\n [isSubMenuIconsOutlined]=\"isSubMenuIconsOutlined()\"\n [isSubMenuButtonIconsOutlined]=\"isSubMenuButtonIconsOutlined()\"\n [isSubMenuTooltipsShown]=\"isSubMenuTooltipsShown()\"\n (clickSubMenuAction)=\"onClickSubMenu($event)\"\n (clickSubMenuAdditionalAction)=\"clickSubMenuAdditional($event)\" />\n }\n </div>\n } @else {\n <div rtBlock=\"rtui-mobile-side-menu-list-main\">\n @for (item of menuItems(); track i; let i = $index) {\n <mat-list-item\n rtBlock=\"rtui-mobile-side-menu-item\"\n [rtNavigationDirective]=\"item?.link\"\n [activated]=\"selectedItem() === item || (!selectedItem() && activeMenuIds().includes(item.id))\"\n (click)=\"onClickMenu(item)\">\n @if (item?.icon) {\n <mat-icon matListItemIcon rtElem=\"icon\" [rtIconOutlined]=\"isMainMenuIconsOutlined()\">\n {{ item.icon }}\n </mat-icon>\n }\n\n @if (item?.name) {\n <div rtBlock=\"rtui-mobile-side-menu-item-title\">\n <div rtElem=\"text\">{{ item.name }}</div>\n\n @if (item?.iconButton?.icon) {\n <div rtBlock=\"rtui-mobile-side-menu-item-title-button\">\n <mat-icon rtElem=\"icon\">{{ item.iconButton?.icon }}</mat-icon>\n </div>\n }\n </div>\n }\n </mat-list-item>\n }\n </div>\n }\n </mat-nav-list>\n </ng-container>\n }\n\n @if (footerTpl()) {\n <ng-container *rtuiScrollableFooter>\n <ng-container *ngTemplateOutlet=\"footerTpl() ?? null\" />\n </ng-container>\n }\n </rtui-scrollable>\n} @else {\n <rtui-scrollable rtBlock=\"rtui-side-menu\">\n @if (headerTpl()) {\n <ng-container *rtuiScrollableHeader>\n <ng-container *ngTemplateOutlet=\"headerTpl() ?? null\" />\n </ng-container>\n }\n\n @if (menuItems().length) {\n <ng-container *rtuiScrollableContent>\n <mat-nav-list rtElem=\"list\">\n @for (item of menuItems(); track i; let i = $index) {\n <a\n rtBlock=\"rtui-side-menu-item\"\n [rtNavigationDirective]=\"item?.link\"\n (mouseenter)=\"toggleSubMenu(item)\"\n (click)=\"onClickMenu(item)\">\n @if (item?.icon) {\n <mat-list-item\n rtBlock=\"rtui-side-menu-item-button\"\n [activated]=\"selectedItem() === item || (!selectedItem() && activeMenuIds().includes(item.id))\">\n <div rtElem=\"icon\">\n <mat-icon [rtIconOutlined]=\"isMainMenuIconsOutlined()\">{{ item.icon }}</mat-icon>\n </div>\n </mat-list-item>\n }\n\n @if (item?.name) {\n <div rtElem=\"title\">{{ item.name }}</div>\n }\n </a>\n }\n </mat-nav-list>\n </ng-container>\n }\n\n @if (footerTpl()) {\n <ng-container *rtuiScrollableFooter>\n <ng-container *ngTemplateOutlet=\"footerTpl() ?? null\" />\n </ng-container>\n }\n </rtui-scrollable>\n\n <mat-drawer-container\n rtBlock=\"rtui-sub-side-menu\"\n [rtMod]=\"{ opened: subMenuRef()?.opened }\"\n [hasBackdrop]=\"true\"\n (backdropClick)=\"closeSubMenu()\">\n <mat-drawer rtBlock=\"rtui-sub-side-menu-content\" mode=\"side\" position=\"start\" (mouseleave)=\"toggleSubMenu()\">\n <rtui-scrollable>\n <ng-container *rtuiScrollableContent>\n @if (subMenuRef()?.opened && selectedSubMenu()?.length) {\n <mat-nav-list\n rtElem=\"list\"\n [rtMod]=\"{ scrollable: isSubMenuXScrollEnabled() }\"\n [rtScrollToElement]=\"activeMenuId()\"\n [elements]=\"selectedSubMenu() ?? []\">\n @for (item of selectedSubMenu(); track i; let i = $index) {\n <rtui-side-menu-sub-item\n [item]=\"item\"\n [isMobile]=\"isMobile()\"\n [isSubMenuXScrollEnabled]=\"isSubMenuXScrollEnabled()\"\n [isSubMenuIconsOutlined]=\"isSubMenuIconsOutlined()\"\n [isSubMenuButtonIconsOutlined]=\"isSubMenuButtonIconsOutlined()\"\n [isSubMenuTooltipsShown]=\"isSubMenuTooltipsShown()\"\n (clickSubMenuAction)=\"onClickSubMenu($event)\"\n (clickSubMenuAdditionalAction)=\"clickSubMenuAdditional($event)\" />\n }\n </mat-nav-list>\n }\n </ng-container>\n </rtui-scrollable>\n </mat-drawer>\n </mat-drawer-container>\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, input, InputSignalWithTransform, numberAttribute } from '@angular/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\n@Component({\n selector: 'rtui-spinner',\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss'],\n imports: [MatProgressSpinnerModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RtuiSpinnerComponent {\n public diameter: InputSignalWithTransform<number, number> = input<number, number>(32, {\n transform: numberAttribute,\n });\n public showBox: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(true, {\n transform: booleanAttribute,\n });\n public showBackground: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n}\n","<div class=\"c-spinner c-spinner__container\" [class.c-spinner__container--bgr-color]=\"showBackground()\">\n <div class=\"c-spinner__wrapper\" [class.c-spinner__wrapper--bgr-color]=\"showBox()\">\n <mat-spinner [diameter]=\"diameter()\" />\n </div>\n</div>\n","import { ComponentType, OverlayRef } from '@angular/cdk/overlay';\nimport { InjectionToken } from '@angular/core';\n\nimport { Subject } from 'rxjs';\n\nexport type AsidePositions = 'left' | 'right';\n\nexport class AsideRef<DATA, ANSWER> {\n constructor(\n private answer: Subject<ANSWER | null>,\n public overlayRef: OverlayRef,\n public component: ComponentType<unknown>,\n public position: AsidePositions,\n public data: DATA\n ) {}\n\n public close(answer?: ANSWER): void {\n this.answer.next(answer ?? null);\n }\n}\n\nexport const ASIDE_REF: InjectionToken<AsideRef<object, object>> = new InjectionToken<AsideRef<object, object>>('ASIDE_REF');\n\nexport const ddServices: Array<{ provide: string; useValue: unknown }> = [\n { provide: 'ddData', useValue: undefined },\n { provide: 'ddAnswer', useValue: undefined },\n { provide: 'ddOverlay', useValue: undefined },\n];\n","export enum ASIDE_BUTTONS_ENUM {\n USER_ACTIVE = 'User active',\n USER_INACTIVE = 'User inactive',\n DELETE = 'Delete',\n RESET = 'Reset',\n}\n\nexport type AsideButtonsType =\n | ASIDE_BUTTONS_ENUM.USER_ACTIVE\n | ASIDE_BUTTONS_ENUM.USER_INACTIVE\n | ASIDE_BUTTONS_ENUM.DELETE\n | ASIDE_BUTTONS_ENUM.RESET;\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { AsyncPipe } from '@angular/common';\nimport { Component, HostBinding, inject, Injector, ViewEncapsulation } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { ASIDE_REF, AsidePositions, AsideRef } from '../../aside.types';\n\n@Component({\n selector: 'rtui-aside-panel',\n templateUrl: './aside-panel.component.html',\n styleUrls: ['./aside-panel.component.scss'],\n encapsulation: ViewEncapsulation.None,\n imports: [AsyncPipe, PortalModule],\n animations: [\n trigger('aside', [\n state('enter-left', style({ transform: 'none' })),\n transition('* => enter-left', [\n style({ transform: 'translateX(-100%)' }),\n animate('200ms ease-in', style({ transform: 'translateX(0%)' })),\n ]),\n transition('enter-left => *', animate('200ms ease-in', style({ transform: 'translateX(-100%)' }))),\n state('enter-right', style({ transform: 'none' })),\n transition('* => enter-right', [\n style({ transform: 'translateX(100%)' }),\n animate('200ms ease-in', style({ transform: 'translateX(0%)' })),\n ]),\n transition('enter-right => *', animate('200ms ease-in', style({ transform: 'translateX(100%)' }))),\n ]),\n ],\n})\nexport class RtuiAsidePanelComponent {\n readonly #asideRef: AsideRef<object, object> = inject(ASIDE_REF);\n readonly #breakpointObserver: BreakpointObserver = inject(BreakpointObserver);\n\n @HostBinding('@aside') protected _state: string = `enter-${this.#asideRef.position}`;\n\n public portal: ComponentPortal<unknown> = this.#createPortal(this.#asideRef);\n public position: AsidePositions = this.#asideRef.position;\n public isSmall$: Observable<boolean> = this.#breakpointObserver\n .observe(['(max-width: 1023px)'])\n .pipe(map((result: BreakpointState) => result.matches));\n\n public close(): void {\n this.#asideRef.close();\n }\n\n public startExitAnimation(): void {\n this._state = `exit-${this.#asideRef.position}`;\n }\n\n #createPortal<D, R>(asideRef: AsideRef<D, R>): ComponentPortal<unknown> {\n const injector: Injector = Injector.create({\n providers: [\n {\n provide: ASIDE_REF,\n useValue: asideRef,\n },\n ],\n });\n\n return new ComponentPortal(asideRef.component, null, injector);\n }\n}\n","<div\n class=\"c-aside\"\n [class.position-left]=\"position === 'left'\"\n [class.position-right]=\"position === 'right'\"\n [class.full-screen]=\"isSmall$ | async\">\n <ng-container *cdkPortalOutlet=\"portal\" />\n</div>\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\nimport { ComponentRef, inject, Injectable, Injector } from '@angular/core';\nimport { Event, NavigationEnd, Router } from '@angular/router';\nimport { merge, Observable, of, Subject } from 'rxjs';\nimport { delay, filter, take, tap } from 'rxjs/operators';\n\nimport { ASIDE_REF, AsidePositions, AsideRef } from './aside.types';\nimport { RtuiAsidePanelComponent } from './components/panel/aside-panel.component';\n\n@Injectable()\nexport class RtAsideService {\n readonly #overlay: Overlay = inject(Overlay);\n readonly #router: Router = inject(Router);\n\n /**\n * Opens an aside panel with a specified component, position, and data.\n *\n * @template COMPONENT - The type of the component to display in the aside panel.\n * @template DATA - The type of the data to pass to the component.\n * @template ANSWER - The type of the response expected from the aside panel.\n *\n * @param component - The component to render inside the aside panel.\n * @param position - The position (left or right) where the aside panel should appear.\n * @param data - The data to pass to the component in the aside panel.\n *\n * @returns An observable that emits the response from the aside panel when it is closed.\n */\n public Open<COMPONENT = null, DATA = null, ANSWER = null>(\n component: ComponentType<COMPONENT>,\n position: AsidePositions,\n data: DATA\n ): Observable<ANSWER | null> {\n const answer: Subject<ANSWER | null> = new Subject<ANSWER | null>();\n const overlayRef: OverlayRef = this.#createOverlay(position);\n const asideRef: AsideRef<DATA, ANSWER> = new AsideRef<DATA, ANSWER>(answer, overlayRef, component, position, data);\n const portal: ComponentPortal<RtuiAsidePanelComponent> = this.#createPortal(asideRef);\n const componentRef: ComponentRef<RtuiAsidePanelComponent> = overlayRef.attach(portal);\n\n merge(\n overlayRef.backdropClick(),\n overlayRef.keydownEvents().pipe(filter((keyEvent: KeyboardEvent): boolean => keyEvent.key === 'Escape')),\n this.#router.events.pipe(filter((e: Event): boolean => e instanceof NavigationEnd)),\n answer.pipe(delay(10))\n )\n .pipe(\n // The aside closes on the first of these events — terminate so the merged\n // hot sources (router/backdrop/keydown) don't keep the subscription alive.\n take(1),\n tap((): void => {\n componentRef.instance.startExitAnimation();\n overlayRef.detach();\n answer.complete();\n }),\n delay(300)\n )\n .subscribe(() => {\n overlayRef.dispose();\n });\n\n return answer ? answer.asObservable() : of(null);\n }\n\n /**\n * Creates an `OverlayConfig` object to configure the overlay's position, scroll behavior, and backdrop.\n *\n * @param position - The position (left or right) where the aside panel should appear.\n *\n * @returns An `OverlayConfig` object with the specified settings.\n */\n #createOverlayConfig(position: AsidePositions): OverlayConfig {\n const config: Partial<OverlayConfig> = {\n width: 'auto',\n scrollStrategy: this.#overlay.scrollStrategies.block(),\n positionStrategy: this.#overlay.position().global().left(),\n hasBackdrop: true,\n };\n\n if (position === 'left') {\n config.positionStrategy = this.#overlay.position().global().left();\n } else if (position === 'right') {\n config.positionStrategy = this.#overlay.position().global().right();\n }\n\n return new OverlayConfig(config);\n }\n\n /**\n * Creates and returns an `OverlayRef` object that represents the overlay to be displayed.\n *\n * @param position - The position (left or right) where the aside panel should appear.\n *\n * @returns An `OverlayRef` object that manages the overlay's lifecycle.\n */\n #createOverlay(position: AsidePositions): OverlayRef {\n const overlayConfig: OverlayConfig = this.#createOverlayConfig(position);\n return this.#overlay.create(overlayConfig);\n }\n\n /**\n * Creates a `ComponentPortal` for the `RtuiAsidePanelComponent`, injecting the `AsideRef` instance.\n *\n * @template D - The type of data passed to the aside component.\n * @template R - The type of the response expected from the aside component.\n *\n * @param asideRef - The `AsideRef` instance containing the data and component for the aside panel.\n *\n * @returns A `ComponentPortal` that can be attached to an overlay.\n */\n #createPortal<D, R>(asideRef: AsideRef<D, R>): ComponentPortal<RtuiAsidePanelComponent> {\n const injector: Injector = Injector.create({\n providers: [\n {\n provide: ASIDE_REF,\n useValue: asideRef,\n },\n ],\n });\n\n return new ComponentPortal(RtuiAsidePanelComponent, null, injector);\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n Directive,\n input,\n InputSignalWithTransform,\n Signal,\n TemplateRef,\n Type,\n} from '@angular/core';\nimport { MatToolbar } from '@angular/material/toolbar';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable } from '@rt-tools/core';\n\n@Directive({\n selector: '[rtuiToolbarLeft]',\n})\nexport class RtuiToolbarLeftDirective {}\n\n@Directive({\n selector: '[rtuiToolbarCenter]',\n})\nexport class RtuiToolbarCenterDirective {}\n\n@Directive({\n selector: '[rtuiToolbarRight]',\n})\nexport class RtuiToolbarRightDirective {}\n\n@Component({\n selector: 'rtui-toolbar',\n templateUrl: './toolbar.component.html',\n styleUrls: ['./toolbar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatToolbar, NgTemplateOutlet, BlockDirective, ElemDirective, ModDirective],\n})\nexport class RtuiToolbarComponent {\n public isVisibleToolbar: Signal<boolean> = input(true);\n\n public readonly leftToolTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiToolbarLeftDirective, {\n read: TemplateRef,\n });\n public readonly centerToolTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiToolbarCenterDirective, {\n read: TemplateRef,\n });\n public readonly rightToolTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiToolbarRightDirective, {\n read: TemplateRef,\n });\n public sticky: InputSignalWithTransform<Nullable<boolean>, boolean> = input<Nullable<boolean>, boolean>(false, {\n transform: booleanAttribute,\n });\n}\n","@if ((leftToolTpl() || centerToolTpl() || rightToolTpl()) && isVisibleToolbar()) {\n <mat-toolbar rtBlock=\"toolbar\" [rtMod]=\"{ sticky: sticky() }\">\n <div rtBlock=\"bars\">\n @if (leftToolTpl()) {\n <div rtElem=\"bar\" rtMod=\"left\">\n <ng-template *ngTemplateOutlet=\"leftToolTpl() ?? null\" />\n </div>\n }\n\n <div rtElem=\"bar\" rtMod=\"center\">\n <ng-template *ngTemplateOutlet=\"centerToolTpl() ?? null\" />\n </div>\n\n @if (rightToolTpl()) {\n <div rtElem=\"bar\" rtMod=\"right\">\n <ng-template *ngTemplateOutlet=\"rightToolTpl() ?? null\" />\n </div>\n }\n </div>\n </mat-toolbar>\n}\n","import { Clipboard } from '@angular/cdk/clipboard';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { ChangeDetectionStrategy, Component, inject, input, InputSignal, signal, WritableSignal } from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\n\nimport { BlockDirective, ElemDirective, Nullable } from '@rt-tools/core';\n\n@Component({\n selector: 'rtui-aside-error-box',\n templateUrl: './aside-error-box.component.html',\n styleUrls: ['./aside-error-box.component.scss'],\n imports: [\n MatIcon,\n MatButton,\n\n // bem\n BlockDirective,\n ElemDirective,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AsideErrorBoxComponent {\n readonly #clipboard: Clipboard = inject(Clipboard);\n\n public error: InputSignal<Nullable<HttpErrorResponse>> = input.required();\n\n public isErrorCopied: WritableSignal<boolean> = signal(false);\n\n public onCopyToClipboard(): void {\n const errorTime: string = `Error time: ${new Date().toDateString()}_${new Date().toTimeString()};`;\n this.#clipboard.copy(errorTime + 'Error info: ' + JSON.stringify(this.error()));\n this.isErrorCopied.set(true);\n setTimeout(() => this.isErrorCopied.set(false), 1000);\n }\n}\n","<div rtBlock=\"aside-error-box\">\n <div rtElem=\"title\">Request Error</div>\n\n <button\n type=\"button\"\n rtBlock=\"aside-error-box-button\"\n class=\"c-button c-button--txt-base--size-sm\"\n [class.--complete]=\"isErrorCopied()\"\n (click)=\"onCopyToClipboard()\">\n @if (isErrorCopied()) {\n <mat-icon rtElem=\"icon\">done</mat-icon>\n }\n\n <div rtElem=\"title\">{{ isErrorCopied() ? 'Copied' : 'Copy error info' }}</div>\n </button>\n</div>\n","import { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n Directive,\n input,\n InputSignal,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n Signal,\n TemplateRef,\n Type,\n} from '@angular/core';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { RouterLink } from '@angular/router';\n\nimport { BlockDirective, ElemDirective, Nullable } from '@rt-tools/core';\nimport { transformArrayInput } from '@rt-tools/utils';\nimport { AsideButtonsType } from '../../aside.enums';\nimport { IAside } from '../../aside.interfaces';\nimport {\n RtuiScrollableContainerComponent,\n RtuiScrollableContainerContentDirective,\n RtuiScrollableContainerFooterDirective,\n RtuiScrollableContainerHeaderDirective,\n} from '../../../scrollable';\nimport { RtuiSpinnerComponent } from '../../../spinner';\nimport { RtuiToolbarCenterDirective, RtuiToolbarComponent, RtuiToolbarLeftDirective, RtuiToolbarRightDirective } from '../../../toolbar';\nimport { AsideErrorBoxComponent } from '../error-notification/aside-error-box.component';\n\n@Directive({\n selector: '[rtuiAsideHeader]',\n})\nexport class RtuiAsideContainerHeaderDirective {}\n\n@Component({\n selector: 'rtui-aside-container',\n templateUrl: './aside-container.component.html',\n styleUrls: ['./aside-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n RouterLink,\n NgTemplateOutlet,\n\n // material\n MatIcon,\n CdkTrapFocus,\n MatIconButton,\n MatTooltip,\n MatButton,\n\n // standalone components\n AsideErrorBoxComponent,\n RtuiSpinnerComponent,\n RtuiScrollableContainerComponent,\n RtuiToolbarComponent,\n\n // directives\n RtuiScrollableContainerHeaderDirective,\n RtuiScrollableContainerContentDirective,\n RtuiScrollableContainerFooterDirective,\n RtuiToolbarLeftDirective,\n RtuiToolbarCenterDirective,\n RtuiToolbarRightDirective,\n\n // bem\n BlockDirective,\n ElemDirective,\n ],\n host: {\n class: 'c-aside',\n },\n})\nexport class RtuiAsideContainerComponent {\n public title: InputSignal<Nullable<string>> = input<Nullable<string>>(null);\n public isMobile: InputSignalWithTransform<Nullable<boolean>, boolean> = input.required<Nullable<boolean>, boolean>({\n transform: booleanAttribute,\n });\n public isSubmitButtonDisabled: InputSignalWithTransform<boolean, boolean> = input.required<boolean, boolean>({\n transform: booleanAttribute,\n });\n public isFooterShown: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(true, {\n transform: booleanAttribute,\n });\n\n public pending: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n public isRequestErrorShown: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n public headerActionsButtons: InputSignalWithTransform<IAside.HeaderActionButton[], IAside.HeaderActionButton[]> = input<\n IAside.HeaderActionButton[],\n IAside.HeaderActionButton[]\n >([], {\n transform: (value: IAside.HeaderActionButton[]) => transformArrayInput(value),\n });\n\n public requestError: InputSignal<Nullable<HttpErrorResponse>> = input<Nullable<HttpErrorResponse>>(null);\n public submitButtonTitle: InputSignal<string> = input<string>('Save');\n public cancelButtonTitle: InputSignal<string> = input<string>('Discard Changes');\n public submitButtonTooltip: InputSignal<string> = input<string>('');\n\n public readonly submitAction: OutputEmitterRef<void> = output<void>();\n public readonly cancelAction: OutputEmitterRef<void> = output<void>();\n public readonly headerAction: OutputEmitterRef<AsideButtonsType> = output<AsideButtonsType>();\n\n public readonly headerTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiAsideContainerHeaderDirective, {\n read: TemplateRef,\n });\n\n public onSubmit(): void {\n this.submitAction.emit();\n }\n\n public onCancel(): void {\n this.cancelAction.emit();\n }\n\n public onHeaderActionClick(buttonName: AsideButtonsType): void {\n this.headerAction.emit(buttonName);\n }\n}\n","@if (pending()) {\n <rtui-spinner [showBackground]=\"true\" />\n}\n\n<rtui-scrollable cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <ng-container *rtuiScrollableHeader>\n <div rtBlock=\"c-aside-header\">\n <rtui-toolbar>\n <ng-container *rtuiToolbarLeft>\n <button\n rtBlock=\"back-button\"\n aria-label=\"Icon-button\"\n mat-icon-button\n matTooltip=\"Go back\"\n matTooltipClass=\"custom-tooltip\"\n matTooltipPosition=\"below\"\n [matTooltipDisabled]=\"isMobile()\"\n [disableRipple]=\"true\"\n (click)=\"onCancel()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n </ng-container>\n\n <ng-container *rtuiToolbarCenter>\n <div rtBlock=\"c-aside-title\">\n @if (headerTpl()) {\n <ng-container *ngTemplateOutlet=\"headerTpl() ?? null\" />\n } @else {\n {{ title() }}\n }\n </div>\n </ng-container>\n\n <ng-container *rtuiToolbarRight>\n <div rtBlock=\"c-aside-actions\">\n @if (headerActionsButtons()?.length) {\n @for (button of headerActionsButtons(); track button) {\n <button\n rtElem=\"action\"\n aria-label=\"Icon-button\"\n mat-icon-button\n matTooltipClass=\"custom-tooltip\"\n matTooltipPosition=\"left\"\n [matTooltip]=\"button.tooltip\"\n [matTooltipDisabled]=\"isMobile()\"\n [disableRipple]=\"true\"\n [disabled]=\"button?.disabled\"\n (click)=\"onHeaderActionClick(button.name)\">\n <mat-icon [style.color]=\"button.color\">{{ button.icon }}</mat-icon>\n </button>\n }\n }\n </div>\n </ng-container>\n </rtui-toolbar>\n\n @if (isRequestErrorShown()) {\n <rtui-aside-error-box [error]=\"requestError()\" />\n }\n </div>\n </ng-container>\n\n <ng-container *rtuiScrollableContent>\n <div rtBlock=\"c-aside-content\">\n <ng-content />\n </div>\n </ng-container>\n\n @if (isFooterShown()) {\n <ng-container *rtuiScrollableFooter>\n <div rtBlock=\"c-aside-footer\">\n <div rtBlock=\"c-aside-footer-btn\">\n <button cdkFocusInitial mat-button type=\"button\" (click)=\"onCancel()\">\n {{ cancelButtonTitle() }}\n </button>\n </div>\n\n <div rtBlock=\"c-aside-footer-btn\">\n <button\n mat-flat-button\n type=\"button\"\n matTooltipClass=\"custom-tooltip\"\n matTooltipPosition=\"left\"\n [matTooltip]=\"submitButtonTooltip()\"\n [matTooltipDisabled]=\"!isSubmitButtonDisabled() || isMobile()\"\n [disabled]=\"isSubmitButtonDisabled()\"\n (click)=\"onSubmit()\">\n <div rtElem=\"title\">{{ submitButtonTitle() }}</div>\n </button>\n </div>\n </div>\n </ng-container>\n }\n</rtui-scrollable>\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n InputSignal,\n InputSignalWithTransform,\n Signal,\n ViewEncapsulation,\n WritableSignal,\n booleanAttribute,\n computed,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nimport { RtIconOutlinedDirective, transformStringInput } from '@rt-tools/utils';\n\nexport type RtuiIconSizeType = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | '3xl';\nexport type RtuiIconThemeType =\n | 'inherit'\n | 'primary'\n | 'primary-strong'\n | 'neutral'\n | 'disabled'\n | 'muted'\n | 'white'\n | 'danger'\n | 'success';\n\nconst MATERIAL_SYMBOLS_FONT: string = 'Material Symbols Outlined';\nconst fontLoaded: WritableSignal<boolean> = signal<boolean>(false);\n\n@Component({\n selector: 'rtui-icon',\n templateUrl: './rtui-icon.component.html',\n styleUrl: './rtui-icon.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n // material\n MatIcon,\n\n // directives\n RtIconOutlinedDirective,\n ],\n hostDirectives: [\n {\n directive: MatTooltip,\n inputs: ['matTooltip: tooltip', 'matTooltipPosition: tooltipPosition', 'matTooltipDisabled: tooltipDisabled'],\n },\n ],\n host: {\n class: 'rtui-icon',\n '[class]': 'hostClasses()',\n },\n})\nexport class RtuiIconComponent {\n readonly #document: Document = inject(DOCUMENT);\n\n protected readonly fontLoaded: Signal<boolean> = fontLoaded.asReadonly();\n protected readonly hostClasses: Signal<string> = computed(() => {\n const classes: string[] = [`rtui-icon--size-${this.size()}`, `rtui-icon--theme-${this.theme()}`];\n\n if (this.rotate()) {\n classes.push('rtui-icon--rotate');\n }\n\n if (!this.fontLoaded()) {\n classes.push('rtui-icon--loading');\n }\n\n return classes.join(' ');\n });\n\n public readonly size: InputSignal<RtuiIconSizeType> = input<RtuiIconSizeType>('md');\n public readonly theme: InputSignal<RtuiIconThemeType> = input<RtuiIconThemeType>('inherit');\n public readonly glyph: InputSignalWithTransform<string, unknown> = input<string, unknown>('', { transform: transformStringInput });\n public readonly outlined: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n public readonly rotate: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n constructor() {\n if (!fontLoaded()) {\n this.#checkFontLoaded();\n }\n }\n\n #checkFontLoaded(): void {\n const fonts: FontFaceSet = this.#document.fonts;\n\n if (fonts.check(`1rem \"${MATERIAL_SYMBOLS_FONT}\"`)) {\n fontLoaded.set(true);\n return;\n }\n\n fonts.ready.then(() => {\n fontLoaded.set(true);\n });\n }\n}\n","<mat-icon [rtIconOutlined]=\"outlined()\">\n @if (glyph()) {\n {{ glyph() }}\n } @else {\n <ng-content />\n }\n</mat-icon>\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport {\n ChangeDetectionStrategy,\n Component,\n InputSignal,\n InputSignalWithTransform,\n OutputEmitterRef,\n Signal,\n booleanAttribute,\n computed,\n input,\n output,\n} from '@angular/core';\nimport { MatRipple } from '@angular/material/core';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nimport { BlockDirective, ElemDirective, ModDirective } from '@rt-tools/core';\nimport { transformStringInput } from '@rt-tools/utils';\n\nimport { RtuiIconComponent, RtuiIconSizeType } from '../../icon';\nimport { RtuiSpinnerComponent } from '../../spinner';\n\nexport namespace IRtuiButton {\n export type Type = 'icon' | 'fab' | 'pill';\n export type Variant = 'default' | 'primary' | 'danger' | 'success' | 'warning' | 'accent';\n export type Size = 'xs' | 'sm' | 'md' | 'lg';\n export type Radius = 'none' | 'sm' | 'md' | 'lg' | 'full';\n export type Appearance = 'solid' | 'outline' | 'light' | 'text';\n export type IconPosition = 'start' | 'end';\n}\n\n@Component({\n selector: 'rtui-button',\n templateUrl: './rtui-button.component.html',\n styleUrl: './rtui-button.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n // rt-tools\n BlockDirective,\n ElemDirective,\n ModDirective,\n RtuiSpinnerComponent,\n\n // components\n RtuiIconComponent,\n\n // material\n MatRipple,\n ],\n hostDirectives: [\n {\n directive: MatTooltip,\n inputs: [\n 'matTooltip: tooltip',\n 'matTooltipPosition: tooltipPosition',\n 'matTooltipDisabled: tooltipDisabled',\n 'matTooltipClass: tooltipClass',\n ],\n },\n ],\n host: {\n '[class.rtui-button-full]': 'fullWidth()',\n },\n})\nexport class RtuiButtonComponent {\n protected readonly resolvedIconSize: Signal<RtuiIconSizeType> = computed(() => {\n const iconSize: RtuiIconSizeType | undefined = this.iconSize();\n\n if (iconSize) {\n return iconSize;\n }\n\n const sizeMap: Record<IRtuiButton.Size, RtuiIconSizeType> = {\n xs: 'xs',\n sm: 'sm',\n md: 'sm',\n lg: 'md',\n };\n return sizeMap[this.size()];\n });\n protected readonly spinnerSize: Signal<number> = computed(() => {\n const sizeMap: Record<IRtuiButton.Size, number> = {\n xs: 12,\n sm: 16,\n md: 20,\n lg: 24,\n };\n return this.spinnerDiameter() ?? sizeMap[this.size()];\n });\n protected readonly modifiers: Signal<Record<string, boolean>> = computed(() => ({\n [`type-${this.type()}`]: true,\n [`variant-${this.variant()}`]: true,\n [`size-${this.size()}`]: true,\n [`radius-${this.radius()}`]: true,\n [`appearance-${this.appearance()}`]: !!this.appearance(),\n loading: this.loading(),\n disabled: this.disabled(),\n }));\n\n public readonly type: InputSignal<IRtuiButton.Type> = input<IRtuiButton.Type>('icon');\n public readonly variant: InputSignal<IRtuiButton.Variant> = input<IRtuiButton.Variant>('default');\n public readonly appearance: InputSignal<IRtuiButton.Appearance | undefined> = input<IRtuiButton.Appearance>();\n public readonly size: InputSignal<IRtuiButton.Size> = input<IRtuiButton.Size>('md');\n public readonly radius: InputSignal<IRtuiButton.Radius> = input<IRtuiButton.Radius>('full');\n public readonly icon: InputSignalWithTransform<string, unknown> = input<string, unknown>('', { transform: transformStringInput });\n public readonly iconPosition: InputSignal<IRtuiButton.IconPosition> = input<IRtuiButton.IconPosition>('start');\n public readonly iconSize: InputSignal<RtuiIconSizeType | undefined> = input<RtuiIconSizeType>();\n public readonly text: InputSignalWithTransform<string, unknown> = input<string, unknown>('', { transform: transformStringInput });\n public readonly loading: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n public readonly disabled: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n public readonly outlined: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n public readonly fullWidth: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n public readonly spinnerDiameter: InputSignal<number | undefined> = input<number>();\n\n public readonly clicked: OutputEmitterRef<void> = output<void>();\n\n protected onClick(): void {\n if (!this.loading() && !this.disabled()) {\n this.clicked.emit();\n }\n }\n}\n","@switch (type()) {\n @case ('pill') {\n <button\n type=\"button\"\n rtBlock=\"rtui-button\"\n matRipple\n [rtMod]=\"modifiers()\"\n [matRippleDisabled]=\"disabled() || loading()\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"onClick()\">\n @if (loading()) {\n <rtui-spinner rtElem=\"spinner\" [diameter]=\"spinnerSize()\" [showBox]=\"false\" />\n } @else {\n @if (icon() && iconPosition() === 'start') {\n <rtui-icon rtElem=\"icon\" [glyph]=\"icon()\" [size]=\"resolvedIconSize()\" [outlined]=\"outlined()\" />\n }\n @if (text()) {\n <span rtElem=\"text\">{{ text() }}</span>\n }\n <ng-content />\n @if (icon() && iconPosition() === 'end') {\n <rtui-icon rtElem=\"icon\" [glyph]=\"icon()\" [size]=\"resolvedIconSize()\" [outlined]=\"outlined()\" />\n }\n }\n </button>\n }\n @default {\n <button\n type=\"button\"\n rtBlock=\"rtui-button\"\n matRipple\n [rtMod]=\"modifiers()\"\n [matRippleDisabled]=\"disabled() || loading()\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"onClick()\">\n @if (loading()) {\n <rtui-spinner rtElem=\"spinner\" [diameter]=\"spinnerSize()\" [showBox]=\"false\" />\n } @else {\n <rtui-icon rtElem=\"icon\" [glyph]=\"icon()\" [size]=\"resolvedIconSize()\" [outlined]=\"outlined()\" />\n }\n </button>\n }\n}\n","import { TitleCasePipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n InputSignalWithTransform,\n ModelSignal,\n OutputEmitterRef,\n input,\n model,\n output,\n} from '@angular/core';\nimport { BlockDirective, ElemDirective, ModDirective } from '@rt-tools/core';\nimport { transformArrayInput } from '@rt-tools/utils';\n\n@Component({\n selector: 'rtui-multi-button',\n templateUrl: 'rtui-multi-button.component.html',\n styleUrls: ['rtui-multi-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n // pipes\n TitleCasePipe,\n // rt-tools\n BlockDirective,\n ElemDirective,\n ModDirective,\n ],\n})\nexport class RtuiMultiButtonComponent {\n public actions: InputSignalWithTransform<string[], string[]> = input<string[], string[]>([], {\n transform: (value: string[]) => transformArrayInput(value),\n });\n public activeAction: ModelSignal<string> = model<string>('');\n\n public readonly changeActiveAction: OutputEmitterRef<string> = output<string>();\n\n public onSetActiveAction(action: string): void {\n if (action !== this.activeAction()) {\n this.activeAction.set(action);\n this.changeActiveAction.emit(this.activeAction());\n }\n }\n}\n","@if (actions()?.length) {\n <div rtBlock=\"rtui-multibutton-actions\">\n @for (action of actions(); track action) {\n <button rtElem=\"action\" type=\"button\" [rtMod]=\"{ active: action === activeAction() }\" (click)=\"onSetActiveAction(action)\">\n {{ action | titlecase }}\n </button>\n }\n </div>\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n Directive,\n input,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n Signal,\n TemplateRef,\n Type,\n} from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatToolbar } from '@angular/material/toolbar';\n\nimport { BlockDirective, ElemDirective, Nullable } from '@rt-tools/core';\nimport { RtuiToolbarCenterDirective, RtuiToolbarComponent, RtuiToolbarLeftDirective, RtuiToolbarRightDirective } from '../toolbar';\n\n@Directive({\n selector: '[rtuiHeaderLeft]',\n})\nexport class RtuiHeaderLeftDirective {}\n\n@Directive({\n selector: '[rtuiHeaderCenter]',\n})\nexport class RtuiHeaderCenterDirective {}\n\n@Directive({\n selector: '[rtuiHeaderRight]',\n})\nexport class RtuiHeaderRightDirective {}\n\n@Component({\n selector: 'rtui-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n\n // Material\n MatToolbar,\n MatIconButton,\n MatIcon,\n\n // BEM\n BlockDirective,\n ElemDirective,\n\n // Ui-kit\n RtuiToolbarComponent,\n RtuiToolbarLeftDirective,\n RtuiToolbarCenterDirective,\n RtuiToolbarRightDirective,\n ],\n})\nexport class RtuiHeaderComponent {\n public isMobile: InputSignalWithTransform<Nullable<boolean>, Nullable<boolean>> = input<Nullable<boolean>, Nullable<boolean>>(false, {\n transform: booleanAttribute,\n });\n public isMobileMenuButtonShown: InputSignalWithTransform<Nullable<boolean>, Nullable<boolean>> = input<\n Nullable<boolean>,\n Nullable<boolean>\n >(true, {\n transform: booleanAttribute,\n });\n\n public readonly leftHeaderTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiHeaderLeftDirective, {\n read: TemplateRef,\n });\n public readonly centerHeaderTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiHeaderCenterDirective, {\n read: TemplateRef,\n });\n public readonly rightHeaderTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiHeaderRightDirective, {\n read: TemplateRef,\n });\n\n public readonly openMobileMenuAction: OutputEmitterRef<void> = output<void>();\n\n public openSideMenu(): void {\n if (this.isMobile() && this.isMobileMenuButtonShown()) {\n this.openMobileMenuAction.emit();\n }\n }\n}\n","<rtui-toolbar>\n <ng-container *rtuiToolbarLeft>\n @if (isMobile() && isMobileMenuButtonShown()) {\n <button mat-icon-button rtBlock=\"mobile-menu-button\" (click)=\"openSideMenu()\">\n <mat-icon>menu</mat-icon>\n </button>\n }\n\n @if (leftHeaderTpl()) {\n <ng-template *ngTemplateOutlet=\"leftHeaderTpl() ?? null\" />\n }\n </ng-container>\n\n @if (centerHeaderTpl()) {\n <ng-container *rtuiToolbarCenter>\n <ng-template *ngTemplateOutlet=\"centerHeaderTpl() ?? null\" />\n </ng-container>\n }\n\n @if (rightHeaderTpl()) {\n <ng-container *rtuiToolbarRight>\n <ng-template *ngTemplateOutlet=\"rightHeaderTpl() ?? null\" />\n </ng-container>\n }\n</rtui-toolbar>\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n input,\n InputSignal,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n} from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip, TooltipPosition } from '@angular/material/tooltip';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable } from '@rt-tools/core';\nimport { isString } from '@rt-tools/utils';\n\n@Component({\n selector: 'rtui-clear-button',\n templateUrl: './rtui-clear-button.component.html',\n styleUrls: ['./rtui-clear-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n // Material\n MatIcon,\n MatIconButton,\n MatTooltip,\n\n // BEM\n BlockDirective,\n ElemDirective,\n ModDirective,\n ],\n})\nexport class RtuiClearButtonComponent {\n readonly #defaultTooltipPosition: TooltipPosition = 'above';\n\n public isMobile: InputSignalWithTransform<Nullable<boolean>, boolean> = input<Nullable<boolean>, boolean>(false, {\n transform: booleanAttribute,\n });\n public isButtonShown: InputSignalWithTransform<Nullable<boolean>, boolean> = input<Nullable<boolean>, boolean>(true, {\n transform: booleanAttribute,\n });\n public tooltip: InputSignalWithTransform<Nullable<string>, string> = input<Nullable<string>, string>(null, {\n transform: (value: Nullable<string>) => (isString(value) ? value.trim() : ''),\n });\n public tooltipPosition: InputSignal<TooltipPosition> = input(this.#defaultTooltipPosition);\n\n public readonly keydownAction: OutputEmitterRef<void> = output<void>();\n public readonly clickAction: OutputEmitterRef<void> = output<void>();\n\n public onKeydown(): void {\n this.keydownAction.emit();\n }\n\n public onClick(): void {\n this.clickAction.emit();\n }\n}\n","<button\n rtBlock=\"rtui-clear-button\"\n [rtMod]=\"{ invisible: !isButtonShown() }\"\n [matTooltip]=\"tooltip() ?? ''\"\n [matTooltipPosition]=\"tooltipPosition()\"\n [matTooltipDisabled]=\"isMobile()\"\n (keydown)=\"onKeydown()\"\n (click)=\"onClick()\">\n <mat-icon rtElem=\"icon\">close</mat-icon>\n</button>\n","import { PageModel } from '@rt-tools/utils';\n\nexport const DEFAULT_PAGE_SIZE: number = 20;\n\nexport const DEFAULT_PAGE_MODEL: Readonly<PageModel> = Object.freeze({\n pageNumber: 1,\n pageSize: DEFAULT_PAGE_SIZE,\n totalCount: 0,\n\n hasNext: false,\n hasPrev: false,\n});\n","import {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n HostListener,\n inject,\n Injector,\n input,\n InputSignal,\n InputSignalWithTransform,\n OnInit,\n output,\n OutputEmitterRef,\n Signal,\n signal,\n viewChild,\n WritableSignal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormBuilder, FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable, WINDOW } from '@rt-tools/core';\nimport { isNumber, PageModel } from '@rt-tools/utils';\nimport { DEFAULT_PAGE_SIZE } from '../../util/default-pagination';\n\n@Component({\n selector: 'rtui-pagination',\n templateUrl: './rtui-pagination.component.html',\n styleUrls: ['./rtui-pagination.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ReactiveFormsModule, BlockDirective, ElemDirective, ModDirective],\n})\nexport class RtuiPaginationComponent implements OnInit, AfterViewInit {\n readonly #injector: Injector = inject(Injector);\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n readonly #fb: FormBuilder = inject(FormBuilder);\n readonly #windowRef: Window = inject(WINDOW);\n\n /** Current Page Model */\n public currentPageModel: InputSignal<PageModel> = input.required();\n /** Indicates is mobile view */\n public isMobile: InputSignalWithTransform<Nullable<boolean>, boolean> = input.required<Nullable<boolean>, boolean>({\n transform: booleanAttribute,\n });\n\n /** Output action when Page Model changed */\n public readonly pageModelChange: OutputEmitterRef<Partial<PageModel>> = output<Partial<PageModel>>();\n\n /** Form control for selected page size */\n public control: FormControl<number> = this.#fb.nonNullable.control(DEFAULT_PAGE_SIZE);\n public readonly divider: Signal<string> = signal('...');\n /** Page size options */\n public readonly pageSizes: Signal<number[]> = computed(() => {\n return [10, 20, 40, 50].filter(\n (el: number) => el / 2 <= this.currentPageModel()?.totalCount || el === this.currentPageModel()?.pageSize\n );\n });\n /** Array of current page numbers */\n public readonly numbers: WritableSignal<Array<number | string>> = signal([]);\n /** Page Model for compare */\n public readonly previousPageModel: WritableSignal<Nullable<PageModel>> = signal(null);\n /** Value of full content width */\n public readonly minContentFitWidth: WritableSignal<number> = signal(0);\n /** Indicates is content clipped */\n public readonly isContentClipped: WritableSignal<boolean> = signal(false);\n\n /** Container template ref */\n public readonly containerRef: Signal<Nullable<ElementRef<HTMLElement>>> = viewChild<ElementRef<HTMLElement>>('containerRef');\n\n /** Set 'isContentClipped' when widow resize */\n @HostListener('window:resize')\n public onResize(): void {\n if (this.isContentClipped() && this.#windowRef?.innerWidth && this.minContentFitWidth() + 36 < this.#windowRef.innerWidth) {\n this.isContentClipped.set(false);\n } else if (!this.isContentClipped() && this.#windowRef.innerWidth && this.minContentFitWidth() + 36 > this.#windowRef.innerWidth) {\n this.isContentClipped.set(true);\n }\n this.#setMinContentFitWidth();\n }\n\n public ngOnInit(): void {\n this.numbers.set(this.#fillArray());\n this.control.patchValue(this.currentPageModel()?.pageSize ?? DEFAULT_PAGE_SIZE, { emitEvent: false });\n\n this.control.valueChanges.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe((value: number) => {\n this.changePageSize(value);\n });\n\n /** Update Page Model */\n effect(\n () => {\n if (Boolean(this.currentPageModel()) && Boolean(this.previousPageModel())) {\n this.numbers.set(this.#fillArray());\n this.#setMinContentFitWidth();\n }\n this.previousPageModel.set(this.currentPageModel());\n },\n { injector: this.#injector }\n );\n }\n\n /** Set 'isContentClipped' on init */\n public ngAfterViewInit(): void {\n const currentContainerWidth: Nullable<number> = this.containerRef()?.nativeElement?.scrollWidth;\n\n if (currentContainerWidth && this.#windowRef?.innerWidth) {\n this.minContentFitWidth.set(currentContainerWidth);\n this.isContentClipped.set(currentContainerWidth > this.#windowRef.innerWidth);\n }\n }\n\n /** Action for change Page Model */\n public changePageSize(pageSize: number): void {\n const current_total: number = Math.ceil(this.currentPageModel().totalCount / pageSize);\n const previous_total: number = Math.ceil(this.currentPageModel().totalCount / this.currentPageModel().pageSize);\n const correction: number = Math.floor(\n ((previous_total - this.currentPageModel().pageNumber) * this.currentPageModel().pageSize) / pageSize\n );\n\n this.pageModelChange.emit({ pageNumber: current_total - correction, pageSize });\n }\n\n /** Action for select page */\n public onChangePageNumber(pageNumber: string | number): void {\n if (isNumber(pageNumber)) {\n if (!this.currentPageModel().hasNext && this.currentPageModel().pageNumber <= pageNumber) {\n return;\n }\n\n if (!this.currentPageModel().hasPrev && this.currentPageModel().pageNumber >= pageNumber) {\n return;\n }\n\n this.pageModelChange.emit({ pageNumber });\n }\n }\n\n /** Fill the array width current page numbers */\n #fillArray(): Array<number | string> {\n const current: number = this.currentPageModel().pageNumber;\n const total: number = Math.ceil(this.currentPageModel().totalCount / this.currentPageModel().pageSize);\n const result: Array<number | string> = Array(total)\n .fill(0, 0, total)\n .map((x: number | string, i: number) => i + 1);\n\n if (total <= 6) {\n return result;\n } else {\n if (current < 3 || current > total - 2) {\n return result.slice(0, 3).concat(this.divider(), ...result.slice(total - 3, total));\n }\n\n if (current === 3) {\n return result.slice(0, 4).concat(this.divider(), ...result.slice(total - 2, total));\n }\n\n if (current === 4) {\n return result.slice(0, 5).concat(this.divider(), ...result.slice(total - 1, total));\n }\n\n if (current > 4 && current <= total - 4) {\n return result\n .slice(0, 1)\n .concat(this.divider(), current - 1, current, current + 1, this.divider(), ...result.slice(total - 1, total));\n }\n\n if (current === total - 3) {\n return result.slice(0, 1).concat(this.divider(), ...result.slice(total - 5, total));\n }\n\n if (current === total - 2) {\n return result.slice(0, 2).concat(this.divider(), ...result.slice(total - 4, total));\n }\n\n return [];\n }\n }\n\n /** Set 'isContentClipped' when content changed */\n #setMinContentFitWidth(): void {\n const currentContainerWidth: Nullable<number> = this.containerRef()?.nativeElement?.scrollWidth;\n\n if (currentContainerWidth && this.minContentFitWidth() && this.minContentFitWidth() < currentContainerWidth) {\n this.minContentFitWidth.set(currentContainerWidth);\n }\n }\n}\n","@if (currentPageModel().totalCount > pageSizes()[0]) {\n <div #containerRef rtBlock=\"pagination-container\" [rtMod]=\"{ clipped: isContentClipped() && !isMobile() }\">\n <div rtBlock=\"paging\" [rtMod]=\"{ clipped: isContentClipped() && !isMobile() }\">\n <div\n rtElem=\"item\"\n role=\"button\"\n tabindex=\"0\"\n [rtMod]=\"{ enabled: currentPageModel()?.hasPrev }\"\n [class.c-pagination__paging-item--disabled]=\"!currentPageModel().hasPrev\"\n (click)=\"onChangePageNumber(currentPageModel().pageNumber - 1)\"\n (keydown)=\"onChangePageNumber(currentPageModel().pageNumber - 1)\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15.5 8.5H0.5\" stroke=\"currentColor\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M5.5 3.5L0.5 8.5L5.5 13.5\"\n stroke=\"currentColor\"\n stroke-miterlimit=\"10\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n\n @if (isMobile()) {\n <div rtElem=\"item\" rtMod=\"active\" role=\"button\" tabindex=\"1\">\n <span rtElem=\"item-label\">{{ currentPageModel().pageNumber }}</span>\n </div>\n } @else {\n @for (number of numbers(); track $index) {\n <div\n rtElem=\"item\"\n role=\"button\"\n tabindex=\"1\"\n [rtMod]=\"{\n active: currentPageModel().pageNumber === number,\n divider: number === divider(),\n enabled: number !== divider() && currentPageModel().pageNumber !== number,\n }\"\n (click)=\"onChangePageNumber(number)\"\n (keydown)=\"onChangePageNumber(number)\">\n <span rtElem=\"item-label\">{{ number }}</span>\n </div>\n }\n }\n\n <div\n rtElem=\"item\"\n role=\"button\"\n tabindex=\"3\"\n [rtMod]=\"{ enabled: currentPageModel()?.hasNext }\"\n (click)=\"onChangePageNumber(currentPageModel().pageNumber + 1)\"\n (keydown)=\"onChangePageNumber(currentPageModel().pageNumber + 1)\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0.5 8.5H15.5\" stroke=\"currentColor\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path\n d=\"M10.5 3.5L15.5 8.5L10.5 13.5\"\n stroke=\"currentColor\"\n stroke-miterlimit=\"10\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n </div>\n\n <div rtBlock=\"page-size-toggle\" [rtMod]=\"{ clipped: isContentClipped() && !isMobile() }\">\n @if (!isMobile()) {\n <div rtElem=\"title\">Items per page:</div>\n }\n\n <select rtElem=\"selector\" [formControl]=\"control\">\n @for (size of pageSizes(); track $index) {\n <option [value]=\"size\">{{ size }}</option>\n }\n </select>\n </div>\n </div>\n}\n","export const RTUI_TABLE_STOP_ROW_CLICK_ATTRIBUTE: string = 'rtui-table-stop-row-click-attribute';\n","import { FormControl } from '@angular/forms';\n\nimport { FilterOperatorType, SortModel } from '@rt-tools/utils';\n\nexport enum TABLE_COLUMN_TYPES_ENUM {\n DATE = 'date',\n PERCENT = 'percent',\n ARRAY = 'array',\n BOOLEAN = 'boolean',\n TEXT = 'text',\n CURRENCY = 'currency',\n CUSTOM = 'custom',\n}\n\nexport enum TABLE_COLUMN_FILTER_TYPES_ENUM {\n TEXT = 'text',\n NUMBER = 'number',\n SELECT = 'select',\n DATE = 'date',\n}\n\nexport enum TEXT_CELL_COLOR_ENUM {\n NEUTRAL = 'neutral',\n DANGER = 'danger',\n WARNING = 'warning',\n SUCCESS = 'success',\n EMPTY = 'empty',\n}\n\nexport namespace ITable {\n export type TextCellColor =\n | TEXT_CELL_COLOR_ENUM.NEUTRAL\n | TEXT_CELL_COLOR_ENUM.DANGER\n | TEXT_CELL_COLOR_ENUM.WARNING\n | TEXT_CELL_COLOR_ENUM.SUCCESS\n | TEXT_CELL_COLOR_ENUM.EMPTY;\n\n export type Type =\n | TABLE_COLUMN_TYPES_ENUM.DATE\n | TABLE_COLUMN_TYPES_ENUM.PERCENT\n | TABLE_COLUMN_TYPES_ENUM.ARRAY\n | TABLE_COLUMN_TYPES_ENUM.BOOLEAN\n | TABLE_COLUMN_TYPES_ENUM.TEXT\n | TABLE_COLUMN_TYPES_ENUM.CURRENCY\n | TABLE_COLUMN_TYPES_ENUM.CUSTOM;\n\n export type FilterType =\n | TABLE_COLUMN_FILTER_TYPES_ENUM.TEXT\n | TABLE_COLUMN_FILTER_TYPES_ENUM.NUMBER\n | TABLE_COLUMN_FILTER_TYPES_ENUM.SELECT\n | TABLE_COLUMN_FILTER_TYPES_ENUM.DATE;\n\n export interface Column<T = Record<string, unknown>> extends Record<string, unknown> {\n align: 'right' | 'left' | 'center';\n propName: keyof T;\n type: Type;\n copyable: boolean;\n header: Header;\n\n sorting?: SortModel<NonNullable<Extract<keyof T, string>>>;\n filtering?: boolean;\n filteringMultiple?: boolean;\n copyBtnAlign?: 'right' | 'left';\n\n width?: string;\n minWidth?: string;\n\n icon?: Icon;\n iconTransform?: (value: T[keyof T]) => string;\n href?: string;\n className?: string;\n tooltip?: string;\n transform?: (value: T[keyof T]) => string | number;\n\n // Additional properties for filters\n filterType?: FilterType;\n defaultFilterOperator?: FilterOperatorType;\n filterOperators?: FilterOperatorType[];\n filterSelectOptions?: string[];\n\n // Additional properties for table configuration service\n displayName?: string;\n orderIndex?: number;\n hidden?: boolean;\n fixed?: boolean;\n }\n\n export interface ColumnFilter {\n propName: string;\n value: string;\n }\n\n export interface Header {\n align: 'right' | 'left' | 'center';\n label: string;\n\n className?: string;\n tooltip?: string;\n icon?: Icon;\n }\n\n export interface Icon {\n glyph: string;\n\n color?: TextCellColor;\n tooltip?: string;\n visible?: boolean;\n placement?: 'left' | 'right';\n outlined?: boolean;\n }\n\n export namespace Config {\n export interface Data<T> {\n isVerticalScrollbarShown: boolean;\n isHorizontalScrollbarShown: boolean;\n columns: Array<ITable.Column<T>>;\n }\n\n export interface Form<T> {\n isVerticalScrollbarShown: FormControl<boolean>;\n isHorizontalScrollbarShown: FormControl<boolean>;\n columns: FormControl<(keyof T)[]>;\n }\n }\n}\n","import { InjectionToken, Signal, TemplateRef, WritableSignal } from '@angular/core';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { Nullable } from '@rt-tools/core';\nimport { FilterModel, SortModel } from '@rt-tools/utils';\nimport { ITable } from './table-column.interface';\n\nexport const RTUI_TABLE_COMPONENT_TOKEN: InjectionToken<IRtuiTable<Record<string, unknown>, string, string>> = new InjectionToken<\n IRtuiTable<Record<string, unknown>, Extract<keyof Record<string, unknown>, string>, Extract<keyof Record<string, unknown>, string>>\n>('RtuiTableComponent');\n\nexport interface IRtuiTable<\n ENTITY_TYPE extends Record<string, unknown>,\n SORT_PROPERTY extends Extract<keyof ENTITY_TYPE, string>,\n KEY extends Extract<keyof ENTITY_TYPE, string>,\n> {\n columns: Signal<Array<ITable.Column<ENTITY_TYPE>>>;\n customCellsTpl: Signal<\n Nullable<{\n getTemplateByPropName(propName: keyof ENTITY_TYPE): TemplateRef<{ $implicit: ENTITY_TYPE }>;\n }>\n >;\n rowActionsTpl: Signal<Nullable<TemplateRef<{ $implicit: ENTITY_TYPE }>>>;\n additionalRowActionsTpl: Signal<Nullable<TemplateRef<unknown>>>;\n\n isMobile: Signal<boolean>;\n isTableRowsClickable: Signal<boolean>;\n keyExp: Signal<NonNullable<KEY>>;\n entities: Signal<ENTITY_TYPE[]>;\n currentSortModel: Signal<Nullable<SortModel<SORT_PROPERTY>>>;\n appearance: Signal<MatFormFieldAppearance>;\n filterAppearance: Signal<MatFormFieldAppearance>;\n filterModel: Signal<FilterModel<KEY>[]>;\n isFiltersShown: Signal<boolean>;\n selectedEntitiesIds: WritableSignal<ENTITY_TYPE[KEY][]>;\n isPageEntitiesSelected: WritableSignal<boolean>;\n isPageEntitiesIndeterminate: WritableSignal<boolean>;\n isMultiSelect: WritableSignal<boolean>;\n isSelectorsColumnShown: WritableSignal<boolean>;\n isSelectorsColumnDisabled: WritableSignal<boolean>;\n activeRowIndex: WritableSignal<Nullable<number>>;\n\n onSortChange(sortModel: SortModel): void;\n onFilterChange(filterModel: FilterModel<KEY>[]): void;\n onMenuOpen(index: number): void;\n onMenuClose(): void;\n onRowClick(row: ENTITY_TYPE, event: MouseEvent): void;\n onRowDoubleClick(row: ENTITY_TYPE): void;\n onToggleEntity(entity: ENTITY_TYPE, checked: boolean): void;\n onTogglePageEntities(checked: boolean): void;\n}\n","import { DestroyRef, Injectable, Signal, WritableSignal, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { take } from 'rxjs/operators';\n\nimport { IDBStorageService, Nullable } from '@rt-tools/core';\nimport { areArraysEqual } from '@rt-tools/utils';\nimport { ITable } from './index';\n\n@Injectable()\nexport class RtTableConfigService<ENTITY_TYPE> {\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n readonly #iDBStorageService: IDBStorageService<{\n isVerticalScrollbarShown: boolean;\n isHorizontalScrollbarShown: boolean;\n columns: Array<Partial<ITable.Column<ENTITY_TYPE>>>;\n }> = inject(IDBStorageService);\n\n #tableConfig: WritableSignal<ITable.Config.Data<ENTITY_TYPE>> = signal({\n isVerticalScrollbarShown: false,\n isHorizontalScrollbarShown: false,\n columns: [],\n });\n public readonly tableConfig: Signal<ITable.Config.Data<ENTITY_TYPE>> = this.#tableConfig.asReadonly();\n\n public initConfig(storageKey: string, config: Array<ITable.Column<ENTITY_TYPE>>): void {\n this.#iDBStorageService\n .get(storageKey)\n .pipe(take(1), takeUntilDestroyed(this.#destroyRef))\n .subscribe(\n (\n savedConfig: Nullable<{\n isVerticalScrollbarShown: boolean;\n isHorizontalScrollbarShown: boolean;\n columns: Array<Partial<ITable.Column<ENTITY_TYPE>>>;\n }>\n ) => {\n if (savedConfig?.columns && this.#checkIsSavedConfigConsistent(config, savedConfig.columns)) {\n const updatedColumns: Array<ITable.Column<ENTITY_TYPE> & { orderIndex: number }> = savedConfig?.columns.map(\n (el: Partial<ITable.Column<ENTITY_TYPE> & { orderIndex: number }>) => {\n const oldConfigIem: Nullable<ITable.Column<ENTITY_TYPE>> = config.find(\n (item: ITable.Column<ENTITY_TYPE>) => el.propName === item.propName\n );\n return {\n ...(oldConfigIem as ITable.Column<ENTITY_TYPE>),\n displayName: oldConfigIem?.header?.label?.length ? oldConfigIem.header.label : el?.propName?.toString(),\n propName: el.propName as keyof ENTITY_TYPE,\n width: el?.width ?? 'auto',\n orderIndex: el?.orderIndex ?? 0,\n hidden: !!el?.hidden,\n fixed: !!el?.fixed,\n };\n }\n );\n this.#tableConfig.set({\n isVerticalScrollbarShown: !!savedConfig?.isVerticalScrollbarShown,\n isHorizontalScrollbarShown: !!savedConfig?.isHorizontalScrollbarShown,\n columns: updatedColumns,\n });\n } else {\n this.#tableConfig.set({\n isVerticalScrollbarShown: false,\n isHorizontalScrollbarShown: true,\n columns: config.map((el: ITable.Column<ENTITY_TYPE>, index: number) => ({\n ...el,\n orderIndex: index,\n displayName: el?.header?.label?.length ? el.header.label : el.propName.toString(),\n })),\n });\n }\n }\n );\n }\n\n public updateConfig(storageKey: string, config: ITable.Config.Data<ENTITY_TYPE>): void {\n const idbConfigColumns: Array<Partial<ITable.Column<ENTITY_TYPE>>> = config.columns.map((el: ITable.Column<ENTITY_TYPE>) => ({\n displayName: el.header.label ?? el.propName.toString(),\n propName: el.propName,\n width: el?.width ?? 'auto',\n orderIndex: el?.orderIndex ?? 0,\n hidden: !!el?.hidden,\n fixed: !!el?.fixed,\n }));\n this.#iDBStorageService\n .set(storageKey, { ...config, columns: idbConfigColumns })\n .pipe(take(1), takeUntilDestroyed(this.#destroyRef))\n .subscribe();\n this.#tableConfig.set(config);\n }\n\n public deleteConfig(storageKey: string): void {\n this.#iDBStorageService.remove(storageKey).pipe(take(1), takeUntilDestroyed(this.#destroyRef)).subscribe();\n }\n\n #checkIsSavedConfigConsistent(\n defaultConfig: Array<ITable.Column<ENTITY_TYPE>>,\n savedConfig: Array<Partial<ITable.Column<ENTITY_TYPE>>>\n ): boolean {\n return (\n !!defaultConfig?.length &&\n !!savedConfig?.length &&\n defaultConfig.length === savedConfig.length &&\n areArraysEqual(\n defaultConfig.map((el: ITable.Column<ENTITY_TYPE>) => el.propName).sort(),\n savedConfig.map((el: Partial<ITable.Column<ENTITY_TYPE>>) => el.propName).sort()\n )\n );\n }\n}\n","import { booleanAttribute, Directive, input, InputSignalWithTransform, signal, WritableSignal } from '@angular/core';\n\nimport { transformArrayInput } from '@rt-tools/utils';\n\n@Directive()\nexport class RtCommonSelectorsDirective<ENTITY_TYPE extends Record<string, unknown>, KEY extends Extract<keyof ENTITY_TYPE, string>> {\n /** Indicates is multiselect available */\n public isMultiSelect: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is 'Select all' checkbox shown */\n public isSelectorColumnShown: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is selectors column disabled */\n public isSelectorsColumnDisabled: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n /** Selected entities Ids on init */\n public selectedEntitiesKeys: InputSignalWithTransform<ENTITY_TYPE[KEY][], ENTITY_TYPE[KEY][]> = input<\n ENTITY_TYPE[KEY][],\n ENTITY_TYPE[KEY][]\n >([], {\n transform: (value: ENTITY_TYPE[KEY][]) => transformArrayInput(value),\n });\n\n /** Key of ENTITY_TYPE for compare entities */\n public readonly keyExp: WritableSignal<NonNullable<KEY>> = signal('id' as NonNullable<KEY>);\n /** Current list of entities */\n public readonly entities: WritableSignal<ENTITY_TYPE[]> = signal([]);\n\n /** Add page entities to list exclude duplicates */\n public addPageEntitiesToListExcludeDuplicates(list: ENTITY_TYPE[]): ENTITY_TYPE[] {\n return [...list, ...this.entities()].filter((el: ENTITY_TYPE, index: number, self: ENTITY_TYPE[]) => {\n return index === self.findIndex((_: ENTITY_TYPE) => _[this.keyExp()] === el[this.keyExp()]);\n });\n }\n\n /** Remove page entities from list */\n public removePageEntitiesFromList(list: ENTITY_TYPE[]): ENTITY_TYPE[] {\n const removedEntitiesIds: ENTITY_TYPE[KEY][] = this.entities().map((el: ENTITY_TYPE) => el[this.keyExp()]);\n return list.filter((el: ENTITY_TYPE) => !removedEntitiesIds.includes(el[this.keyExp()]));\n }\n\n /** Check is one of page entities exist in selected entities */\n public isOneExistOnPage(selectedEntitiesIds: ENTITY_TYPE[KEY][]): boolean {\n return !!this.entities().find((el: ENTITY_TYPE) => selectedEntitiesIds.includes(el[this.keyExp()]));\n }\n\n /** Check is all page entities exist in selected entities */\n public isAllExistOnPage(selectedEntitiesIds: ENTITY_TYPE[KEY][]): boolean {\n return !this.entities().find((el: ENTITY_TYPE) => !selectedEntitiesIds.includes(el[this.keyExp()]));\n }\n}\n","import {\n booleanAttribute,\n computed,\n DestroyRef,\n Directive,\n effect,\n inject,\n Injector,\n input,\n InputSignalWithTransform,\n OnInit,\n Signal,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { filter, switchMap, take } from 'rxjs/operators';\n\nimport { RtuiDynamicListComponent } from '../dynamic-list.component';\nimport { RtCommonSelectorsDirective } from './common-selectors.directive';\n\n@Directive({\n selector: 'rtui-dynamic-list[rtDynamicListSelectorsDirective]',\n})\nexport class RtDynamicListSelectorsDirective<\n ENTITY_TYPE extends Record<string, unknown>,\n SORT_PROPERTY extends Extract<keyof ENTITY_TYPE, string>,\n KEY extends Extract<keyof ENTITY_TYPE, string>,\n>\n extends RtCommonSelectorsDirective<ENTITY_TYPE, KEY>\n implements OnInit\n{\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n readonly #injector: Injector = inject(Injector);\n readonly #dynamicListRef: RtuiDynamicListComponent<ENTITY_TYPE, SORT_PROPERTY, KEY> =\n inject<RtuiDynamicListComponent<ENTITY_TYPE, SORT_PROPERTY, KEY>>(RtuiDynamicListComponent);\n\n /** Indicates is multiselect extended mod available (use selected and excluded lists) */\n public isMultiSelectExtendedMod: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is 'Select all' checkbox shown */\n public isSelectAllSelectorShown: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(true, {\n transform: booleanAttribute,\n });\n\n /** List of selected entities for processing */\n #selectedEntities: WritableSignal<ENTITY_TYPE[]> = signal([]);\n /** List of excluded entities for processing */\n #excludedEntities: WritableSignal<ENTITY_TYPE[]> = signal([]);\n /** Indicates is 'Select all' checkbox selected for processing */\n #isAllEntitiesSelected: WritableSignal<boolean> = signal(false);\n /** Indicates is all page entities checkbox selected for processing */\n #isPageEntitiesSelected: WritableSignal<boolean> = signal(false);\n /** Indicates is page entities checkbox indeterminate for processing */\n #isPageEntitiesIndeterminate: WritableSignal<boolean> = signal(false);\n /** Indicates is multi select extended mod enabled for processing */\n #isMultiSelectExtendedModEnabled: WritableSignal<boolean> = signal(false);\n\n /** List of selected entities */\n public readonly selectedEntities: Signal<ENTITY_TYPE[]> = this.#selectedEntities.asReadonly();\n /** List of excluded entities */\n public readonly excludedEntities: Signal<ENTITY_TYPE[]> = this.#excludedEntities.asReadonly();\n /** List of selected entities ids */\n public readonly selectedEntitiesIds: Signal<ENTITY_TYPE[KEY][]> = computed(() => {\n return this.selectedEntities().map((el: ENTITY_TYPE) => el[this.keyExp()]);\n });\n /** List of excluded entities ids */\n public readonly excludedEntitiesIds: Signal<ENTITY_TYPE[KEY][]> = computed(() => {\n return this.excludedEntities().map((el: ENTITY_TYPE) => el[this.keyExp()]);\n });\n /** Indicates is 'Select All' checkbox selected */\n public readonly isAllEntitiesSelected: Signal<boolean> = this.#isAllEntitiesSelected.asReadonly();\n /** Indicates is all page entities checkbox selected */\n public readonly isPageEntitiesSelected: Signal<boolean> = this.#isPageEntitiesSelected.asReadonly();\n /** Indicates is page entities checkbox indeterminate */\n public readonly isPageEntitiesIndeterminate: Signal<boolean> = this.#isPageEntitiesIndeterminate.asReadonly();\n /** Indicates is multi select extended mod enabled */\n public readonly isMultiSelectExtendedModEnabled: Signal<boolean> = this.#isMultiSelectExtendedModEnabled.asReadonly();\n\n public ngOnInit(): void {\n /** Set current key */\n this.keyExp.set(this.#dynamicListRef.keyExp());\n\n /** Set current, selected and excluded entities lists and update selectors states */\n toObservable(this.#dynamicListRef?.entities, { injector: this.#injector })\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe((list: ENTITY_TYPE[]) => {\n this.entities.set(list);\n\n if (this.isMultiSelectExtendedModEnabled()) {\n this.#selectedEntities.update((selected: ENTITY_TYPE[]) => {\n return this.addPageEntitiesToListExcludeDuplicates(selected).filter(\n (el: ENTITY_TYPE) => !this.excludedEntitiesIds().includes(el[this.keyExp()])\n );\n });\n this.#isAllEntitiesSelected.set(!this.excludedEntities().length);\n }\n\n this.setExistingEntitiesState();\n });\n\n /** Set initial selected entities */\n toObservable(this.entities, { injector: this.#injector })\n .pipe(\n filter((list: ENTITY_TYPE[]) => !!list?.length),\n take(1),\n switchMap(() =>\n toObservable(this.selectedEntitiesKeys, { injector: this.#injector }).pipe(\n filter((list: ENTITY_TYPE[KEY][]) => !!list?.length),\n take(1)\n )\n ),\n takeUntilDestroyed(this.#destroyRef)\n )\n .subscribe(() => {\n this.#selectedEntities.set(\n this.entities().filter((el: ENTITY_TYPE) => this.selectedEntitiesKeys().includes(el[this.keyExp()]))\n );\n this.setExistingEntitiesState();\n });\n\n /** Update selectors states and list of selected entities ids in children components */\n effect(\n () => {\n if (this.#dynamicListRef?.tableContainerTpl() && this.#dynamicListRef?.tableTpl() && this.selectedEntities()) {\n this.#dynamicListRef?.tableContainerTpl()?.isAllEntitiesSelected.set(this.isAllEntitiesSelected());\n this.#dynamicListRef?.tableContainerTpl()?.isAllEntitiesIndeterminate.set(!!this.selectedEntities()?.length);\n this.#dynamicListRef?.tableContainerTpl()?.selectedEntitiesCount.set(this.selectedEntities()?.length);\n this.#dynamicListRef?.tableTpl()?.selectedEntitiesIds.set(this.selectedEntitiesIds());\n this.#dynamicListRef?.tableTpl()?.isPageEntitiesSelected.set(this.isPageEntitiesSelected());\n this.#dynamicListRef?.tableTpl()?.isPageEntitiesIndeterminate.set(this.isPageEntitiesIndeterminate());\n }\n },\n { injector: this.#injector }\n );\n\n /** Table container config */\n effect(\n () => {\n /** Set 'onToggleAllEntities' method in TableContainerComponent */\n if (this.#dynamicListRef.tableContainerTpl()?.onToggleAllEntities) {\n this.#dynamicListRef.tableContainerTpl()!.onToggleAllEntities = (checked: boolean): void =>\n this.toggleAllEntities(checked);\n }\n },\n { injector: this.#injector }\n );\n effect(\n () => {\n /** Set 'isMultiSelect' indicator state in TableContainerComponent */\n if (\n this.#dynamicListRef?.tableContainerTpl() &&\n this.#dynamicListRef?.tableContainerTpl()?.isMultiSelect() !== this.isMultiSelect()\n ) {\n this.#dynamicListRef?.tableContainerTpl()?.isMultiSelect.set(this.isMultiSelect());\n }\n },\n { injector: this.#injector }\n );\n effect(\n () => {\n /** Set 'isSelectAllSelectorShown' indicator state in TableContainerComponent */\n if (\n this.#dynamicListRef?.tableContainerTpl() &&\n this.#dynamicListRef?.tableContainerTpl()?.isSelectAllSelectorShown() !== this.isSelectAllSelectorShown()\n ) {\n this.#dynamicListRef?.tableContainerTpl()?.isSelectAllSelectorShown.set(this.isSelectAllSelectorShown());\n }\n },\n { injector: this.#injector }\n );\n\n effect(\n () => {\n /** Set 'isSelectAllSelectorDisabled' indicator state in TableContainerComponent */\n if (\n this.#dynamicListRef?.tableContainerTpl() &&\n this.#dynamicListRef?.tableContainerTpl()?.isSelectAllSelectorDisabled() !== this.isSelectorsColumnDisabled()\n ) {\n this.#dynamicListRef?.tableContainerTpl()?.isSelectAllSelectorDisabled.set(this.isSelectorsColumnDisabled());\n }\n },\n { injector: this.#injector }\n );\n\n /** Table config */\n effect(\n () => {\n /** Set 'isMultiSelect' indicator state in TableComponent */\n if (this.#dynamicListRef?.tableTpl()?.isMultiSelect() !== this.isMultiSelect()) {\n this.#dynamicListRef?.tableTpl()?.isMultiSelect.set(this.isMultiSelect());\n }\n },\n { injector: this.#injector }\n );\n effect(\n () => {\n /** Set 'onToggleExistingEntities' and 'onToggleEntity' methods and 'isSelectorsColumnShown' indicator state in TableComponent */\n if (this.#dynamicListRef.tableTpl()) {\n this.#dynamicListRef.tableTpl()?.isSelectorsColumnShown.set(true);\n\n this.#dynamicListRef.tableTpl()!.onToggleEntity = (entity: ENTITY_TYPE, checked: boolean): void =>\n this.toggleEntity(entity, checked);\n\n this.#dynamicListRef.tableTpl()!.onTogglePageEntities = (checked: boolean): void => this.togglePageEntities(checked);\n }\n },\n { injector: this.#injector }\n );\n effect(\n () => {\n /** Set 'isSelectorsColumnDisabled' indicator state in TableComponent */\n if (\n this.#dynamicListRef?.tableTpl() &&\n this.#dynamicListRef?.tableTpl()?.isSelectorsColumnDisabled() !== this.isSelectorsColumnDisabled()\n ) {\n this.#dynamicListRef?.tableTpl()?.isSelectorsColumnDisabled.set(this.isSelectorsColumnDisabled());\n }\n },\n { injector: this.#injector }\n );\n }\n\n /** Change selected entities list and 'isAllEntitiesSelected' indicator state */\n public toggleAllEntities(checked: boolean): void {\n this.#isAllEntitiesSelected.set(checked);\n\n if (this.isMultiSelectExtendedMod()) {\n this.#isMultiSelectExtendedModEnabled.set(checked);\n }\n\n if (checked) {\n this.#selectedEntities.set(this.entities());\n this.#isPageEntitiesSelected.set(true);\n this.#isPageEntitiesIndeterminate.set(true);\n } else {\n this.#selectedEntities.set([]);\n this.#isPageEntitiesSelected.set(false);\n this.#isPageEntitiesIndeterminate.set(false);\n }\n }\n\n /** Change selected and excluded lists, set 'isPageEntitiesSelected' and 'isAllEntitiesSelected' indicators states */\n public togglePageEntities(checked: boolean): void {\n /** Set 'isPageEntitiesSelected' indicator state */\n this.#isPageEntitiesSelected.set(checked);\n\n if (checked) {\n /** Add page entities to selected list */\n this.#selectedEntities.update((selected: ENTITY_TYPE[]) => this.addPageEntitiesToListExcludeDuplicates(selected));\n\n /** Remove page entities from excluded list */\n if (this.isMultiSelectExtendedModEnabled()) {\n this.#excludedEntities.update((selected: ENTITY_TYPE[]) => this.removePageEntitiesFromList(selected));\n\n /** Set 'isAllEntitiesSelected' indicator state */\n this.#isAllEntitiesSelected.set(!this.excludedEntities()?.length);\n }\n } else {\n /** Remove page entities from selected list */\n this.#selectedEntities.update((selected: ENTITY_TYPE[]) => this.removePageEntitiesFromList(selected));\n\n /** Add page entities to excluded list */\n if (this.isMultiSelectExtendedModEnabled()) {\n this.#excludedEntities.update((selected: ENTITY_TYPE[]) => this.addPageEntitiesToListExcludeDuplicates(selected));\n }\n /** Set 'isAllEntitiesSelected' indicator state */\n this.#isAllEntitiesSelected.set(false);\n }\n\n /** Set 'isPageEntitiesIndeterminate' indicator state */\n this.#isPageEntitiesIndeterminate.set(this.isOneExistOnPage(this.selectedEntitiesIds()));\n }\n\n /** Change selected and excluded lists and set is existing selected and is all selected states */\n public toggleEntity(entity: ENTITY_TYPE, checked: boolean): void {\n /** Set one entity in selected list if not multi select mod */\n if (!this.isMultiSelect()) {\n this.#selectedEntities.set([entity]);\n return;\n }\n\n const updatedSelectedList: ENTITY_TYPE[] = [];\n const updatedExcludedList: ENTITY_TYPE[] = [];\n\n /** Fill updatedSelectedList */\n this.selectedEntities().forEach((el: ENTITY_TYPE) => updatedSelectedList.push(el));\n\n /** Fill updatedExcludedList */\n if (this.isMultiSelectExtendedModEnabled()) {\n this.excludedEntities().forEach((el: ENTITY_TYPE) => updatedExcludedList.push(el));\n }\n\n if (checked) {\n /** Add entity to selected list */\n updatedSelectedList.push(entity);\n\n /** Remove entity from excluded list */\n if (this.isMultiSelectExtendedModEnabled()) {\n const index: number = this.excludedEntitiesIds().indexOf(entity[this.keyExp()]);\n updatedExcludedList.splice(index, 1);\n }\n } else {\n /** Remove entity from selected list */\n const index: number = this.selectedEntitiesIds().indexOf(entity[this.keyExp()]);\n updatedSelectedList.splice(index, 1);\n\n /** Add entity to excluded list */\n if (this.isMultiSelectExtendedModEnabled()) {\n updatedExcludedList.push(entity);\n }\n\n /** Set 'isAllEntitiesSelected' indicator state */\n this.#isAllEntitiesSelected.set(false);\n }\n\n /** Change selected list */\n this.#selectedEntities.set(updatedSelectedList);\n\n /** Change excluded list */\n if (this.isMultiSelectExtendedModEnabled()) {\n this.#excludedEntities.set(updatedExcludedList);\n\n /** Set 'isAllEntitiesSelected' indicator state */\n this.#isAllEntitiesSelected.set(!this.excludedEntities()?.length);\n }\n\n /** Set 'isPageEntitiesSelected' and 'isPageEntitiesIndeterminate' indicators states */\n if (updatedSelectedList?.length) {\n this.#isPageEntitiesSelected.set(this.isAllExistOnPage(this.selectedEntitiesIds()));\n this.#isPageEntitiesIndeterminate.set(true);\n } else {\n this.#isPageEntitiesSelected.set(false);\n this.#isPageEntitiesIndeterminate.set(this.isOneExistOnPage(this.selectedEntitiesIds()));\n }\n }\n\n /** Clear selected list */\n public clearSelectedList(): void {\n this.#selectedEntities.set([]);\n this.#isPageEntitiesSelected.set(false);\n this.#isPageEntitiesIndeterminate.set(false);\n this.#isAllEntitiesSelected.set(false);\n }\n\n /** Clear excluded list */\n public clearExcludedList(): void {\n this.#excludedEntities.set([]);\n }\n\n /** Set is existing selected and indeterminate state */\n public setExistingEntitiesState(): void {\n this.#isPageEntitiesSelected.set(this.isAllExistOnPage(this.selectedEntitiesIds()));\n this.#isPageEntitiesIndeterminate.set(this.isOneExistOnPage(this.selectedEntitiesIds()));\n }\n}\n","import { computed, DestroyRef, Directive, effect, inject, Injector, OnInit, Signal, signal, WritableSignal } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { filter, switchMap, take } from 'rxjs/operators';\n\nimport { RtuiTableComponent } from '../components';\nimport { RtCommonSelectorsDirective } from './common-selectors.directive';\n\n@Directive({\n selector: 'rtui-table[rtTableSelectorsDirective]',\n})\nexport class RtTableSelectorsDirective<\n ENTITY_TYPE extends Record<string, unknown>,\n SORT_PROPERTY extends Extract<keyof ENTITY_TYPE, string>,\n KEY extends Extract<keyof ENTITY_TYPE, string>,\n>\n extends RtCommonSelectorsDirective<ENTITY_TYPE, KEY>\n implements OnInit\n{\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n readonly #injector: Injector = inject(Injector);\n readonly #tableRef: RtuiTableComponent<ENTITY_TYPE, SORT_PROPERTY, KEY> =\n inject<RtuiTableComponent<ENTITY_TYPE, SORT_PROPERTY, KEY>>(RtuiTableComponent);\n\n /** List of selected entities for processing */\n #selectedEntities: WritableSignal<ENTITY_TYPE[]> = signal([]);\n /** List of excluded entities for processing */\n /** Indicates is all page entities checkbox selected for processing */\n #isPageEntitiesSelected: WritableSignal<boolean> = signal(false);\n /** Indicates is page entities checkbox indeterminate for processing */\n #isPageEntitiesIndeterminate: WritableSignal<boolean> = signal(false);\n\n /** List of selected entities */\n public readonly selectedEntities: Signal<ENTITY_TYPE[]> = this.#selectedEntities.asReadonly();\n /** List of selected entities ids */\n public readonly selectedEntitiesIds: Signal<ENTITY_TYPE[KEY][]> = computed(() => {\n return this.selectedEntities().map((el: ENTITY_TYPE) => el[this.keyExp()]);\n });\n /** Indicates is all page entities checkbox selected */\n public readonly isPageEntitiesSelected: Signal<boolean> = this.#isPageEntitiesSelected.asReadonly();\n /** Indicates is page entities checkbox indeterminate */\n public readonly isPageEntitiesIndeterminate: Signal<boolean> = this.#isPageEntitiesIndeterminate.asReadonly();\n\n public ngOnInit(): void {\n /** Set current key */\n this.keyExp.set(this.#tableRef.keyExp());\n\n /** Set current, selected and excluded entities lists and update selectors states */\n toObservable(this.#tableRef?.entities, { injector: this.#injector })\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe((list: ENTITY_TYPE[]) => {\n this.entities.set(list);\n });\n\n /** Set initial selected entities */\n toObservable(this.entities, { injector: this.#injector })\n .pipe(\n filter((list: ENTITY_TYPE[]) => !!list?.length),\n take(1),\n switchMap(() =>\n toObservable(this.selectedEntitiesKeys, { injector: this.#injector }).pipe(\n filter((list: ENTITY_TYPE[KEY][]) => !!list?.length),\n take(1)\n )\n ),\n takeUntilDestroyed(this.#destroyRef)\n )\n .subscribe(() => {\n this.#selectedEntities.set(\n this.entities().filter((el: ENTITY_TYPE) => this.selectedEntitiesKeys().includes(el[this.keyExp()]))\n );\n this.setExistingEntitiesState();\n });\n\n /** Update selectors states and list of selected entities ids in children components */\n effect(\n () => {\n if (this.#tableRef && this.selectedEntities()) {\n this.#tableRef?.selectedEntitiesIds.set(this.selectedEntitiesIds());\n this.#tableRef?.isPageEntitiesSelected.set(this.isPageEntitiesSelected());\n this.#tableRef?.isPageEntitiesIndeterminate.set(this.isPageEntitiesIndeterminate());\n }\n },\n { injector: this.#injector }\n );\n\n /** Table config */\n effect(\n () => {\n /** Set 'isMultiSelect' indicator state in TableComponent */\n if (this.#tableRef?.isMultiSelect() !== this.isMultiSelect()) {\n this.#tableRef?.isMultiSelect.set(this.isMultiSelect());\n }\n },\n { injector: this.#injector }\n );\n effect(\n () => {\n /** Set 'onToggleExistingEntities' and 'onToggleEntity' methods and 'isSelectorsColumnShown' indicator state in TableComponent */\n if (this.#tableRef) {\n this.#tableRef?.isSelectorsColumnShown.set(this.isSelectorColumnShown());\n this.#tableRef.onToggleEntity = (entity: ENTITY_TYPE, checked: boolean): void => this.toggleEntity(entity, checked);\n this.#tableRef.onTogglePageEntities = (checked: boolean): void => this.togglePageEntities(checked);\n }\n },\n { injector: this.#injector }\n );\n effect(\n () => {\n /** Set 'isSelectorsColumnDisabled' indicator state in TableComponent */\n if (this.#tableRef?.isSelectorsColumnDisabled() !== this.isSelectorsColumnDisabled()) {\n this.#tableRef?.isSelectorsColumnDisabled.set(this.isSelectorsColumnDisabled());\n }\n },\n { injector: this.#injector }\n );\n }\n\n /** Change selected and excluded lists, set 'isPageEntitiesSelected' and 'isAllEntitiesSelected' indicators states */\n public togglePageEntities(checked: boolean): void {\n /** Set 'isPageEntitiesSelected' indicator state */\n this.#isPageEntitiesSelected.set(checked);\n\n if (checked) {\n /** Add page entities to selected list */\n this.#selectedEntities.update((selected: ENTITY_TYPE[]) => this.addPageEntitiesToListExcludeDuplicates(selected));\n } else {\n /** Remove page entities from selected list */\n this.#selectedEntities.update((selected: ENTITY_TYPE[]) => this.removePageEntitiesFromList(selected));\n }\n\n /** Set 'isPageEntitiesIndeterminate' indicator state */\n this.#isPageEntitiesIndeterminate.set(this.isOneExistOnPage(this.selectedEntitiesIds()));\n }\n\n /** Change selected and excluded lists and set is existing selected and is all selected states */\n public toggleEntity(entity: ENTITY_TYPE, checked: boolean): void {\n /** Set one entity in selected list if not multi select mod */\n if (!this.isMultiSelect()) {\n this.#selectedEntities.set([entity]);\n return;\n }\n\n const updatedSelectedList: ENTITY_TYPE[] = [];\n\n /** Fill updatedSelectedList */\n this.selectedEntities().forEach((el: ENTITY_TYPE) => updatedSelectedList.push(el));\n\n if (checked) {\n /** Add entity to selected list */\n updatedSelectedList.push(entity);\n } else {\n /** Remove entity from selected list */\n const index: number = this.selectedEntitiesIds().indexOf(entity[this.keyExp()]);\n updatedSelectedList.splice(index, 1);\n }\n\n /** Change selected list */\n this.#selectedEntities.set(updatedSelectedList);\n\n /** Set 'isPageEntitiesSelected' and 'isPageEntitiesIndeterminate' indicators states */\n if (updatedSelectedList?.length) {\n this.#isPageEntitiesSelected.set(this.isAllExistOnPage(this.selectedEntitiesIds()));\n this.#isPageEntitiesIndeterminate.set(true);\n } else {\n this.#isPageEntitiesSelected.set(false);\n this.#isPageEntitiesIndeterminate.set(this.isOneExistOnPage(this.selectedEntitiesIds()));\n }\n }\n\n /** Clear selected list */\n public clearSelectedList(): void {\n this.#selectedEntities.set([]);\n this.#isPageEntitiesSelected.set(false);\n this.#isPageEntitiesIndeterminate.set(false);\n }\n\n /** Set is existing selected and indeterminate state */\n public setExistingEntitiesState(): void {\n this.#isPageEntitiesSelected.set(this.isAllExistOnPage(this.selectedEntitiesIds()));\n this.#isPageEntitiesIndeterminate.set(this.isOneExistOnPage(this.selectedEntitiesIds()));\n }\n}\n","// const\nexport * from './table-stop-row-click-attribute.const';\n\n// models\nexport * from './default-pagination';\nexport * from './table-column.interface';\nexport * from './table-component.interface';\n\n// services\nexport * from './table-config.service';\n\n// directives\nexport * from './dynamic-list-selectors.directive';\nexport * from './table-selectors.directive';\n","import { Clipboard } from '@angular/cdk/clipboard';\n\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n HostBinding,\n HostListener,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n Signal,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable } from '@rt-tools/core';\nimport { EmptyToDashPipe, isNumber, isString, RtHideTooltipDirective, RtIconOutlinedDirective } from '@rt-tools/utils';\nimport { ITable } from '../../util/table-column.interface';\n\n@Component({\n selector: 'rtui-table-base-cell',\n templateUrl: './table-base-cell.component.html',\n styleUrls: ['./table-base-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n // material\n MatIcon,\n MatTooltip,\n\n // directives\n BlockDirective,\n ElemDirective,\n ModDirective,\n RtIconOutlinedDirective,\n RtHideTooltipDirective,\n\n // pipes\n EmptyToDashPipe,\n ],\n})\nexport class TableBaseCellComponent<T = { [key: string]: unknown }> {\n readonly #clipboard: Clipboard = inject(Clipboard);\n readonly #sanitizer: DomSanitizer = inject(DomSanitizer);\n\n protected readonly cellValue: Signal<T[keyof T] | string | number> = computed(() => {\n const transformFn: Nullable<(value: T[keyof T]) => string | number> = this.column()?.transform;\n return transformFn ? transformFn(this.row()[this.column().propName]) : this.row()[this.column().propName];\n });\n protected readonly cellIconStyle: Signal<SafeStyle | undefined> = computed(() => {\n const transformFn: ((value: T[keyof T]) => string) | undefined = this.column()?.iconTransform;\n return transformFn ? this.#sanitizer.bypassSecurityTrustStyle(transformFn(this.row()[this.column().propName])) : undefined;\n });\n protected readonly tooltipValue: Signal<string> = computed(() => this.#covertCellValueToString(this.cellValue()));\n protected readonly isMouseOver: WritableSignal<boolean> = signal(false);\n protected readonly isCopied: WritableSignal<boolean> = signal(false);\n\n public row: InputSignal<T> = input.required();\n public column: InputSignal<ITable.Column<T>> = input.required();\n public isMobile: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n @HostBinding('style')\n public get style(): SafeStyle | undefined {\n let style: string = '';\n\n if (this.column().width !== undefined) {\n style += `width: ${this.column().width};`;\n }\n\n if (this.column().minWidth !== undefined) {\n style += `min-width: ${this.column().minWidth};`;\n }\n\n return !!style.length ? this.#sanitizer.bypassSecurityTrustStyle(style) : undefined;\n }\n\n public get copyBtnPosition(): string {\n const { copyBtnAlign, align } = this.column();\n return copyBtnAlign || (align === 'right' ? 'left' : 'right');\n }\n\n @HostListener('mouseover')\n public onMouseOver(): void {\n this.isMouseOver.set(true);\n }\n\n @HostListener('mouseout')\n public onMouseOut(): void {\n this.isMouseOver.set(false);\n }\n\n public onCopyToClipboard(): void {\n if (this.column().copyable) {\n this.#clipboard.copy(this.#covertCellValueToString(this.cellValue()));\n this.isCopied.set(true);\n setTimeout(() => this.isCopied.set(false), 2000);\n }\n }\n\n #covertCellValueToString(value: T[keyof T] | string | number): string {\n if (isString(value)) {\n return value;\n } else if (isNumber(value)) {\n return value.toString();\n } else {\n return JSON.stringify(value);\n }\n }\n}\n","<ng-container rtBlock=\"base-cell\">\n @if (column()?.icon?.placement === 'left') {\n <mat-icon rtElem=\"prefix\" [rtIconOutlined]=\"!!column().icon?.outlined\" [style]=\"cellIconStyle()\">\n {{ column().icon?.glyph }}\n </mat-icon>\n }\n\n <div rtElem=\"title\" [rtMod]=\"{ align: column().align }\">\n <div\n #titleTpl\n rtElem=\"title-text\"\n matTooltipClass=\"custom-tooltip\"\n matTooltipPosition=\"above\"\n [rtHideTooltipDirective]=\"titleTpl\"\n [isTooltipShown]=\"!isMobile()\"\n [matTooltip]=\"column()?.tooltip ?? tooltipValue()\"\n [matTooltipDisabled]=\"isMobile()\">\n {{ cellValue() | emptyToDash }}\n </div>\n </div>\n\n @if (column()?.icon?.placement === 'right') {\n <mat-icon rtElem=\"suffix\" [rtIconOutlined]=\"!!column().icon?.outlined\" [style]=\"cellIconStyle()\">\n {{ column().icon?.glyph }}\n </mat-icon>\n }\n\n @if (column()?.copyable) {\n <button\n type=\"button\"\n rtBlock=\"base-cell\"\n rtElem=\"copy-button\"\n class=\"c-button c-button--txt-base\"\n matTooltipPosition=\"above\"\n [rtMod]=\"{\n position: copyBtnPosition,\n complete: isCopied(),\n visible: isMobile() || isMouseOver(),\n }\"\n [matTooltip]=\"isCopied() ? 'Copied!' : 'Copy'\"\n [matTooltipDisabled]=\"isMobile()\"\n (mousedown)=\"onCopyToClipboard(); $event.stopPropagation()\">\n <mat-icon rtElem=\"copy-icon\" [rtIconOutlined]=\"true\">{{ isCopied() ? 'done' : 'content_copy' }}</mat-icon>\n </button>\n }\n</ng-container>\n","import { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostBinding,\n HostListener,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n numberAttribute,\n output,\n OutputEmitterRef,\n Signal,\n} from '@angular/core';\nimport { MatIconButton, MatMiniFabButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable } from '@rt-tools/core';\nimport { LIST_SORT_ORDER_ENUM, ListSortOrderType, RtIconOutlinedDirective, SortModel } from '@rt-tools/utils';\nimport { ITable } from '../../util/table-column.interface';\n\n@Component({\n selector: 'rtui-table-header-cell',\n templateUrl: './table-header-cell.component.html',\n styleUrls: ['./table-header-cell.component.scss'],\n imports: [\n NgClass,\n\n // Material\n MatIcon,\n MatIconButton,\n MatTooltip,\n MatMiniFabButton,\n\n // Bem\n BlockDirective,\n ElemDirective,\n ModDirective,\n\n // Directives\n RtIconOutlinedDirective,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RtuiTableHeaderCellComponent {\n readonly #sanitizer: DomSanitizer = inject(DomSanitizer);\n protected readonly sortOrderTypes: typeof LIST_SORT_ORDER_ENUM = LIST_SORT_ORDER_ENUM;\n\n public headerModel: InputSignal<ITable.Header> = input.required<ITable.Header>();\n public sortModel: InputSignal<Nullable<SortModel<string>>> = input.required<Nullable<SortModel<string>>>();\n public currentSortModel: InputSignal<Nullable<SortModel<string>>> = input.required<Nullable<SortModel<string>>>();\n public headerDataEllipsisMaxLines: InputSignalWithTransform<number, number> = input<number, number>(1, {\n transform: numberAttribute,\n });\n\n public readonly sortChange: OutputEmitterRef<SortModel<string>> = output<SortModel<string>>();\n\n public readonly active: Signal<boolean> = computed(() => {\n return (\n !!this.currentSortModel()?.propertyName &&\n !!this.sortModel()?.propertyName &&\n this.currentSortModel()?.propertyName === this.sortModel()?.propertyName\n );\n });\n\n @HostBinding('style')\n protected get style(): SafeStyle {\n return this.#sanitizer.bypassSecurityTrustStyle(`text-align: ${this.headerModel().align};`);\n }\n\n @HostListener('click')\n protected handleClick(): void {\n const sortPropertyName: Nullable<string> = this.sortModel()?.propertyName;\n\n if (sortPropertyName) {\n this.sortChange.emit({\n propertyName: sortPropertyName,\n sortDirection: this.getNextSortOrder(),\n });\n }\n }\n\n private getNextSortOrder(): ListSortOrderType {\n if (this.currentSortModel()?.sortDirection?.toLowerCase() === LIST_SORT_ORDER_ENUM.ASC) {\n return LIST_SORT_ORDER_ENUM.DESC;\n }\n\n return LIST_SORT_ORDER_ENUM.ASC;\n }\n}\n","<div rtBlock=\"header-cell-label\" [rtMod]=\"{ align: headerModel().align }\">\n @if (headerModel()?.icon?.placement === 'left') {\n <mat-icon rtElem=\"prefix\" [rtIconOutlined]=\"!!headerModel().icon?.outlined\" [style.color]=\"headerModel().icon?.color\">\n {{ headerModel().icon?.glyph }}\n </mat-icon>\n }\n\n <div rtElem=\"text\" [matTooltip]=\"headerModel()?.tooltip ?? ''\" [ngClass]=\"headerModel()?.className\">\n {{ headerModel().label }}\n </div>\n\n @if (headerModel()?.icon?.placement === 'right') {\n <mat-icon rtElem=\"suffix\" [rtIconOutlined]=\"!!headerModel().icon?.outlined\" [style.color]=\"headerModel().icon?.color\">\n {{ headerModel().icon?.glyph }}\n </mat-icon>\n }\n</div>\n\n@if (sortModel()) {\n <div rtBlock=\"header-cell-icons\" [rtMod]=\"{ active: active() }\">\n <div\n rtElem=\"icon\"\n [rtMod]=\"{\n active: active() && currentSortModel()?.sortDirection?.toLowerCase() === sortOrderTypes.DESC,\n first: true,\n }\"></div>\n\n <div\n rtElem=\"icon\"\n [rtMod]=\"{\n active: active() && currentSortModel()?.sortDirection?.toLowerCase() === sortOrderTypes.ASC,\n second: true,\n }\"></div>\n </div>\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n inject,\n Injector,\n input,\n InputSignal,\n InputSignalWithTransform,\n OnInit,\n output,\n OutputEmitterRef,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatDatepicker, MatDatepickerInput, MatDatepickerModule, MatDatepickerToggle } from '@angular/material/datepicker';\n\nimport {\n FILTER_OPERATOR_TYPE_ENUM,\n FILTER_OPERATORS,\n FilterModel,\n FilterOperatorType,\n RtIconOutlinedDirective,\n transformArrayInput,\n isString,\n} from '@rt-tools/utils';\nimport { ITable, TABLE_COLUMN_FILTER_TYPES_ENUM } from '../../util/table-column.interface';\nimport { MatFormField, MatFormFieldAppearance, MatSuffix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { MatMenu, MatMenuItem, MatMenuTrigger } from '@angular/material/menu';\nimport { MatOption, provideNativeDateAdapter } from '@angular/material/core';\nimport { MatSelect } from '@angular/material/select';\nimport { TitleCasePipe } from '@angular/common';\nimport { isDate } from '@rt-tools/utils';\nimport { RtuiClearButtonComponent } from '../clear-search-button/rtui-clear-button.component';\nimport { BlockDirective } from '@rt-tools/core';\nimport { MatTooltip } from '@angular/material/tooltip';\n\n@Component({\n selector: 'rtui-table-header-filter-cell',\n templateUrl: './table-header-filter-cell.component.html',\n styleUrls: ['./table-header-filter-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [provideNativeDateAdapter()],\n imports: [\n FormsModule,\n\n // Material\n MatIcon,\n MatIconButton,\n MatSuffix,\n MatDatepickerModule,\n MatFormField,\n MatInput,\n MatMenu,\n MatMenuTrigger,\n MatMenuItem,\n MatDatepickerToggle,\n MatDatepicker,\n MatDatepickerInput,\n MatSelect,\n MatOption,\n MatTooltip,\n\n // Pipes\n TitleCasePipe,\n\n // Directives\n RtIconOutlinedDirective,\n BlockDirective,\n\n // Components\n RtuiClearButtonComponent,\n ],\n})\nexport class RtuiTableHeaderFilterCellComponent<\n ENTITY_TYPE extends Record<string, unknown>,\n KEY extends Extract<keyof ENTITY_TYPE, string>,\n> implements OnInit {\n readonly #injector: Injector = inject(Injector);\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n\n protected readonly filterTypes: typeof TABLE_COLUMN_FILTER_TYPES_ENUM = TABLE_COLUMN_FILTER_TYPES_ENUM;\n protected readonly filterOperatorTypes: typeof FILTER_OPERATOR_TYPE_ENUM = FILTER_OPERATOR_TYPE_ENUM;\n\n /** Current elements appearance */\n public appearance: InputSignal<MatFormFieldAppearance> = input.required();\n /** Filter property */\n public filterProperty: InputSignalWithTransform<KEY, unknown> = input.required<KEY, unknown>({\n transform: (value: unknown): KEY => (isString(value) ? value : value?.toString) as KEY,\n });\n /** Filter cell type */\n public filterType: InputSignal<ITable.FilterType> = input.required();\n /** Current filter model from store */\n public filterModel: InputSignalWithTransform<FilterModel<KEY>[], FilterModel<KEY>[]> = input.required<\n FilterModel<KEY>[],\n FilterModel<KEY>[]\n >({\n transform: (value: FilterModel<KEY>[]) => transformArrayInput(value),\n });\n /** Filter property */\n public defaultFilterOperator: InputSignalWithTransform<FilterOperatorType, FilterOperatorType> = input.required<\n FilterOperatorType,\n FilterOperatorType\n >({\n transform: (value: FilterOperatorType): FilterOperatorType =>\n value && FILTER_OPERATORS.includes(value) ? value : FILTER_OPERATOR_TYPE_ENUM.EQUALS,\n });\n /** Available filter operators */\n public filterOperators: InputSignalWithTransform<FilterOperatorType[], FilterOperatorType[]> = input<\n FilterOperatorType[],\n FilterOperatorType[]\n >([], {\n transform: (value: FilterOperatorType[]) => transformArrayInput(value),\n });\n /** List of selected filter models */\n public filterSelectOptions: InputSignalWithTransform<string[], string[]> = input<string[], string[]>([], {\n transform: (value: string[]) => transformArrayInput(value),\n });\n /** Indicates is mobile view */\n public isMobile: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** Filter change output action */\n public readonly filterChange: OutputEmitterRef<FilterModel<KEY>[]> = output<FilterModel<KEY>[]>();\n\n public readonly currentFilter: WritableSignal<FilterModel<KEY>> = signal({\n propertyName: '' as KEY,\n operatorType: FILTER_OPERATOR_TYPE_ENUM.EQUALS,\n value: '',\n });\n\n public ngOnInit(): void {\n toObservable(this.filterModel, { injector: this.#injector })\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe((filterModel: FilterModel<KEY>[]) => {\n this.currentFilter.set(\n filterModel?.length && filterModel.find((el: FilterModel<KEY>) => el.propertyName === this.filterProperty())\n ? (filterModel.find((el: FilterModel<KEY>) => el.propertyName === this.filterProperty()) as FilterModel<KEY>)\n : {\n operatorType: this.defaultFilterOperator(),\n propertyName: this.filterProperty(),\n value: '',\n }\n );\n });\n }\n\n /** Change filter value */\n public onFilterValueChange(value: number | string | Date): void {\n if (value === this.currentFilter().value) {\n return;\n }\n\n let updatedFilterModel: FilterModel<KEY>[] = this.filterModel();\n\n if (updatedFilterModel.find((el: FilterModel<KEY>) => el.propertyName === this.filterProperty())) {\n if (value) {\n updatedFilterModel = updatedFilterModel.map((el: FilterModel<KEY>) =>\n el.propertyName === this.filterProperty()\n ? {\n ...el,\n value: isDate(value) ? value.toISOString() : value,\n }\n : el\n );\n } else {\n updatedFilterModel = updatedFilterModel.filter((el: FilterModel<KEY>) => el.propertyName !== this.filterProperty());\n }\n this.filterChange.emit(updatedFilterModel);\n } else if (value) {\n updatedFilterModel.push({\n propertyName: this.filterProperty(),\n operatorType: this.currentFilter().operatorType,\n value: isDate(value) ? value.toISOString() : value,\n });\n this.filterChange.emit(updatedFilterModel);\n }\n\n this.currentFilter.update((filter: FilterModel<KEY>) => ({\n ...filter,\n value: isDate(value) ? value.toISOString() : value,\n }));\n }\n\n /** Change filter operator */\n public onFilterOperatorChange(operatorType: FilterOperatorType): void {\n if (operatorType === this.currentFilter().operatorType) {\n return;\n }\n\n let updatedFilterModel: FilterModel<KEY>[] = this.filterModel();\n\n if (updatedFilterModel.find((el: FilterModel<KEY>) => el.propertyName === this.filterProperty())) {\n updatedFilterModel = updatedFilterModel.map((el: FilterModel<KEY>) =>\n el.propertyName === this.filterProperty()\n ? {\n ...el,\n operatorType,\n }\n : el\n );\n this.filterChange.emit(updatedFilterModel);\n } else if (this.currentFilter().value) {\n updatedFilterModel.push({\n propertyName: this.filterProperty(),\n operatorType: operatorType,\n value: this.currentFilter().value,\n });\n this.filterChange.emit(updatedFilterModel);\n }\n\n this.currentFilter.update((filter: FilterModel<KEY>) => ({ ...filter, operatorType }));\n }\n}\n","@if (filterOperators()?.length) {\n <button\n aria-label=\"Icon-button for a context menu\"\n mat-icon-button\n matTooltipPosition=\"left\"\n [matTooltip]=\"currentFilter().operatorType | titlecase\"\n [matTooltipDisabled]=\"isMobile()\"\n [matMenuTriggerFor]=\"menuTpl\"\n (click)=\"$event.stopPropagation()\"\n (mousedown)=\"$event.stopPropagation()\">\n <mat-icon [rtIconOutlined]=\"true\">\n @switch (currentFilter().operatorType) {\n @case (filterOperatorTypes.EQUALS) {\n drag_handle\n }\n @case (filterOperatorTypes.NOT_EQUALS) {\n block\n }\n @case (filterOperatorTypes.CONTAINS) {\n more_horiz\n }\n @case (filterOperatorTypes.GREATER_THAN) {\n chevron_right\n }\n @case (filterOperatorTypes.LESS_THAN) {\n chevron_left\n }\n }\n </mat-icon>\n </button>\n\n <mat-menu #menuTpl=\"matMenu\" xPosition=\"before\">\n @if (filterOperators().includes(filterOperatorTypes.EQUALS) && currentFilter()?.operatorType !== filterOperatorTypes.EQUALS) {\n <div mat-menu-item (click)=\"onFilterOperatorChange(filterOperatorTypes.EQUALS)\">\n <mat-icon class=\"material-icons-outlined\" rtIconOutlined>drag_handle</mat-icon>\n <span>Equal</span>\n </div>\n }\n @if (\n filterOperators().includes(filterOperatorTypes.NOT_EQUALS) && currentFilter()?.operatorType !== filterOperatorTypes.NOT_EQUALS\n ) {\n <div mat-menu-item (click)=\"onFilterOperatorChange(filterOperatorTypes.NOT_EQUALS)\">\n <mat-icon [rtIconOutlined]=\"true\">block</mat-icon>\n <span>Not equal</span>\n </div>\n }\n @if (filterOperators().includes(filterOperatorTypes.CONTAINS) && currentFilter()?.operatorType !== filterOperatorTypes.CONTAINS) {\n <div mat-menu-item (click)=\"onFilterOperatorChange(filterOperatorTypes.CONTAINS)\">\n <mat-icon [rtIconOutlined]=\"true\">more_horiz</mat-icon>\n <span>Contains</span>\n </div>\n }\n @if (\n filterOperators().includes(filterOperatorTypes.GREATER_THAN) &&\n currentFilter()?.operatorType !== filterOperatorTypes.GREATER_THAN\n ) {\n <div mat-menu-item (click)=\"onFilterOperatorChange(filterOperatorTypes.GREATER_THAN)\">\n <mat-icon [rtIconOutlined]=\"true\">chevron_right</mat-icon>\n <span>More than</span>\n </div>\n }\n @if (filterOperators().includes(filterOperatorTypes.LESS_THAN) && currentFilter()?.operatorType !== filterOperatorTypes.LESS_THAN) {\n <div mat-menu-item (click)=\"onFilterOperatorChange(filterOperatorTypes.LESS_THAN)\">\n <mat-icon [rtIconOutlined]=\"true\">chevron_left</mat-icon>\n <span>Less than</span>\n </div>\n }\n </mat-menu>\n}\n\n@switch (filterType()) {\n @case (filterTypes.TEXT) {\n <mat-form-field rtBlock=\"table-header-cell-filter-input\" subscriptSizing=\"dynamic\" [appearance]=\"appearance()\">\n <input\n #input\n matInput\n type=\"text\"\n placeholder=\"Type in filter value\"\n [value]=\"currentFilter().value\"\n (keydown.enter)=\"onFilterValueChange(input.value)\"\n (focusout)=\"onFilterValueChange(input.value)\" />\n\n <rtui-clear-button matSuffix [isButtonShown]=\"!!currentFilter().value\" (clickAction)=\"onFilterValueChange('')\" />\n </mat-form-field>\n }\n @case (filterTypes.NUMBER) {\n <mat-form-field rtBlock=\"table-header-cell-filter-input\" subscriptSizing=\"dynamic\" [appearance]=\"appearance()\">\n <input\n #input\n matInput\n type=\"number\"\n placeholder=\"Type in filter value\"\n [value]=\"currentFilter().value\"\n (keydown.enter)=\"onFilterValueChange(input.value)\"\n (focusout)=\"onFilterValueChange(input.value)\" />\n\n <rtui-clear-button matSuffix [isButtonShown]=\"!!currentFilter().value\" (clickAction)=\"onFilterValueChange('')\" />\n </mat-form-field>\n }\n @case (filterTypes.DATE) {\n <button\n aria-label=\"Icon-button for clear filter\"\n mat-icon-button\n matTooltipPosition=\"left\"\n matTooltip=\"Clear filter\"\n [matTooltipDisabled]=\"isMobile()\"\n [disabled]=\"!currentFilter().value\"\n (click)=\"onFilterValueChange('')\">\n <mat-icon [rtIconOutlined]=\"true\">close</mat-icon>\n </button>\n\n <mat-form-field rtBlock=\"table-header-cell-filter-input\" subscriptSizing=\"dynamic\" [appearance]=\"appearance()\">\n <input\n matInput\n placeholder=\"1/1/2025\"\n [matDatepicker]=\"picker\"\n [ngModel]=\"currentFilter().value\"\n (ngModelChange)=\"onFilterValueChange($event)\" />\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n }\n @case (filterTypes.SELECT) {\n <button\n aria-label=\"Icon-button for clear filter\"\n mat-icon-button\n matTooltipPosition=\"left\"\n matTooltip=\"Clear filter\"\n [matTooltipDisabled]=\"isMobile()\"\n [disabled]=\"!currentFilter().value\"\n (click)=\"onFilterValueChange('')\">\n <mat-icon [rtIconOutlined]=\"true\">close</mat-icon>\n </button>\n\n <mat-form-field rtBlock=\"table-header-cell-filter-input\" subscriptSizing=\"dynamic\" [appearance]=\"appearance()\">\n <mat-select placeholder=\"Chose filter\" [value]=\"currentFilter().value\" (selectionChange)=\"onFilterValueChange($event.value)\">\n @for (item of filterSelectOptions(); track item) {\n <mat-option [value]=\"item\">{{ item | titlecase }}</mat-option>\n } @empty {\n <mat-option [value]=\"null\">No options available</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n}\n","import { Directive, ElementRef, inject, OnInit } from '@angular/core';\n\nimport { PlatformService } from '@rt-tools/core';\nimport { RTUI_TABLE_STOP_ROW_CLICK_ATTRIBUTE } from '../util';\n\n@Directive({\n standalone: true,\n selector: '[rtStopTableRowClick]',\n})\nexport class RtuiStopTableRowClickDirective implements OnInit {\n readonly #platformService: PlatformService = inject(PlatformService);\n readonly #elementRef: ElementRef<HTMLElement> = inject(ElementRef<HTMLElement>);\n\n public ngOnInit(): void {\n if (this.#platformService.isPlatformBrowser) {\n this.#elementRef.nativeElement.setAttribute(RTUI_TABLE_STOP_ROW_CLICK_ATTRIBUTE, '');\n }\n }\n}\n","import { Directive, inject, input, InputSignal, InputSignalWithTransform, HostListener, booleanAttribute } from '@angular/core';\nimport { BooleanInput } from '@angular/cdk/coercion';\n\nimport { IRtuiTable, RTUI_TABLE_COMPONENT_TOKEN, RTUI_TABLE_STOP_ROW_CLICK_ATTRIBUTE } from '../util';\n\n@Directive({\n selector: '[rtuiTableRowClickDirective]',\n})\nexport class RtuiTableRowClickDirective<\n ENTITY_TYPE extends Record<string, unknown>,\n SORT_PROPERTY extends Extract<keyof ENTITY_TYPE, string>,\n KEY extends Extract<keyof ENTITY_TYPE, string>,\n> {\n readonly #tableComponent: IRtuiTable<ENTITY_TYPE, SORT_PROPERTY, KEY> = inject(RTUI_TABLE_COMPONENT_TOKEN) as IRtuiTable<\n ENTITY_TYPE,\n SORT_PROPERTY,\n KEY\n >;\n\n /** Row entity */\n public readonly entity: InputSignal<ENTITY_TYPE> = input.required({\n alias: 'rtuiTableRowClickDirective',\n });\n\n /** Enabled flag */\n public isTableRowClickable: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n\n @HostListener('mousedown', ['$event'])\n public onMouseDown(event: MouseEvent): void {\n if (!this.isTableRowClickable() || (event.target as HTMLElement).closest(`[${RTUI_TABLE_STOP_ROW_CLICK_ATTRIBUTE}]`)) {\n event.stopPropagation();\n return;\n }\n this.#tableComponent.onRowClick(this.entity(), event);\n }\n\n @HostListener('dblclick', ['$event'])\n public onDoubleClick(event: MouseEvent): void {\n if (!this.isTableRowClickable() || (event.target as HTMLElement).closest(`[${RTUI_TABLE_STOP_ROW_CLICK_ATTRIBUTE}]`)) {\n event.stopPropagation();\n return;\n }\n this.#tableComponent.onRowDoubleClick(this.entity());\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewChecked,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n Directive,\n ElementRef,\n forwardRef,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n Signal,\n signal,\n TemplateRef,\n viewChild,\n WritableSignal,\n} from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatMenu, MatMenuTrigger } from '@angular/material/menu';\nimport { MatRadioButton } from '@angular/material/radio';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable } from '@rt-tools/core';\nimport { FILTER_OPERATOR_TYPE_ENUM, FilterModel, RtIconOutlinedDirective, SortModel, transformArrayInput } from '@rt-tools/utils';\nimport { IRtuiTable, ITable, RTUI_TABLE_COMPONENT_TOKEN, RtTableConfigService, TABLE_COLUMN_TYPES_ENUM } from '../../util';\nimport { TableBaseCellComponent } from '../table-base-cell/table-base-cell.component';\nimport { RtuiTableHeaderCellComponent } from '../table-header-cell/table-header-cell.component';\nimport { RtuiTableHeaderFilterCellComponent } from '../table-header-filter-cell/table-header-filter-cell.component';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { RtuiTableRowClickDirective } from '../../directives';\n\n/** Directive for custom table cells */\n@Directive({\n selector: '[rtuiCustomTableCellsDirective]',\n})\nexport class RtuiCustomTableCellsDirective<ENTITY_TYPE> {\n public cellsTemplates: InputSignal<{\n [K in keyof ENTITY_TYPE]: TemplateRef<{ $implicit: ENTITY_TYPE }>;\n }> = input.required({\n alias: 'rtuiCustomTableCellsDirective',\n });\n\n public getTemplateByPropName(propName: keyof ENTITY_TYPE): TemplateRef<{ $implicit: ENTITY_TYPE }> {\n return this.cellsTemplates()[propName];\n }\n}\n\n/** Directive for row actions located inside a row menu button */\n@Directive({\n selector: '[rtuiTabletRowActionsDirective]',\n})\nexport class RtuiTableRowActionsDirective {}\n\n/** Directive for row actions located outside a row menu button */\n@Directive({\n selector: '[rtuiTableAdditionalRowActionsDirective]',\n})\nexport class RtuiTableAdditionalRowActionsDirective {}\n\n@Component({\n selector: 'rtui-table',\n templateUrl: './rtui-table.component.html',\n styleUrls: ['./rtui-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n\n // material\n MatIconButton,\n MatMenuTrigger,\n MatIcon,\n MatMenu,\n MatCheckbox,\n MatRadioButton,\n\n // directives\n BlockDirective,\n ElemDirective,\n ModDirective,\n RtIconOutlinedDirective,\n RtuiTableRowClickDirective,\n\n // components\n RtuiTableHeaderCellComponent,\n TableBaseCellComponent,\n RtuiTableHeaderFilterCellComponent,\n ],\n providers: [\n {\n provide: RTUI_TABLE_COMPONENT_TOKEN,\n useExisting: forwardRef(() => RtuiTableComponent),\n },\n ],\n})\nexport class RtuiTableComponent<\n ENTITY_TYPE extends Record<string, unknown>,\n SORT_PROPERTY extends Extract<keyof ENTITY_TYPE, string>,\n KEY extends Extract<keyof ENTITY_TYPE, string>,\n>\n implements IRtuiTable<ENTITY_TYPE, SORT_PROPERTY, KEY>, AfterViewChecked\n{\n protected readonly rowActions: Signal<Nullable<ElementRef<HTMLElement>>> = viewChild<ElementRef<HTMLElement>>('rowActions');\n protected readonly rowActionsHeaderPaddingHelper: Signal<Nullable<ElementRef<HTMLElement>>> =\n viewChild<ElementRef<HTMLElement>>('rowActionsHeaderPaddingHelper');\n protected readonly rowActionsPaddingHelper: Signal<Nullable<ElementRef<HTMLElement>>> =\n viewChild<ElementRef<HTMLElement>>('rowActionsRowPaddingHelper');\n\n readonly #tableConfigService: RtTableConfigService<ENTITY_TYPE> = inject(RtTableConfigService);\n\n protected readonly columnTypes: typeof TABLE_COLUMN_TYPES_ENUM = TABLE_COLUMN_TYPES_ENUM;\n protected readonly filterOperators: typeof FILTER_OPERATOR_TYPE_ENUM = FILTER_OPERATOR_TYPE_ENUM;\n\n /** Indicates is mobile view */\n public isMobile: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates are table rows clickable */\n public isTableRowsClickable: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Key of ENTITY_TYPE for compare entities */\n public keyExp: InputSignal<NonNullable<KEY>> = input('id' as NonNullable<KEY>);\n\n /** List of entities */\n public entities: InputSignalWithTransform<ENTITY_TYPE[], ENTITY_TYPE[]> = input.required<ENTITY_TYPE[], ENTITY_TYPE[]>({\n transform: (value: ENTITY_TYPE[]) => transformArrayInput(value),\n });\n /** Current page model from store */\n public currentSortModel: InputSignal<Nullable<SortModel<SORT_PROPERTY>>> = input.required();\n /** Current elements appearance */\n public appearance: InputSignal<MatFormFieldAppearance> = input.required({\n transform: (value: MatFormFieldAppearance) => (value === 'fill' ? 'fill' : 'outline'),\n });\n /** Filter inputs appearance */\n public filterAppearance: InputSignal<MatFormFieldAppearance> = input<MatFormFieldAppearance>('outline');\n /** Current filter model from store */\n public filterModel: InputSignalWithTransform<FilterModel<KEY>[], FilterModel<KEY>[]> = input<FilterModel<KEY>[], FilterModel<KEY>[]>(\n [],\n {\n transform: (value: FilterModel<KEY>[]) => transformArrayInput(value),\n }\n );\n /** Indicates is filters shown */\n public isFiltersShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** Row click output action */\n public readonly rowClick: OutputEmitterRef<NonNullable<{ row: ENTITY_TYPE; event: MouseEvent }>> =\n output<NonNullable<{ row: ENTITY_TYPE; event: MouseEvent }>>();\n /** Row doubleClick output action */\n public readonly rowDoubleClick: OutputEmitterRef<NonNullable<ENTITY_TYPE>> = output<NonNullable<ENTITY_TYPE>>();\n /** Sort change output action */\n public readonly sortChange: OutputEmitterRef<SortModel<SORT_PROPERTY>> = output<SortModel<SORT_PROPERTY>>();\n /** Filter change output action */\n public readonly filterChange: OutputEmitterRef<FilterModel<KEY>[]> = output<FilterModel<KEY>[]>();\n\n /** Columns config for table */\n public columns: Signal<Array<ITable.Column<ENTITY_TYPE>>> = computed(() => {\n return this.#tableConfigService.tableConfig().columns;\n });\n\n /** Custom cells template */\n public readonly customCellsTpl: Signal<Nullable<RtuiCustomTableCellsDirective<ENTITY_TYPE>>> =\n contentChild(RtuiCustomTableCellsDirective);\n /** Row actions template */\n public readonly rowActionsTpl: Signal<\n Nullable<\n TemplateRef<{\n $implicit: ENTITY_TYPE;\n }>\n >\n > = contentChild(RtuiTableRowActionsDirective, {\n read: TemplateRef,\n });\n /** Additional row actions template */\n public readonly additionalRowActionsTpl: Signal<Nullable<TemplateRef<RtuiTableAdditionalRowActionsDirective>>> = contentChild(\n RtuiTableAdditionalRowActionsDirective,\n {\n read: TemplateRef,\n }\n );\n\n /** Fields specified by the directive */\n /** List of selected entities ids */\n public readonly selectedEntitiesIds: WritableSignal<ENTITY_TYPE[KEY][]> = signal([]);\n /** Indicates are all page entities selected */\n public readonly isPageEntitiesSelected: WritableSignal<boolean> = signal(false);\n /** Indicates are some page entities selected */\n public readonly isPageEntitiesIndeterminate: WritableSignal<boolean> = signal(false);\n /** Indicates is multiselect mod enabled */\n public readonly isMultiSelect: WritableSignal<boolean> = signal(true);\n /** Indicates is selectors column shown */\n public readonly isSelectorsColumnShown: WritableSignal<boolean> = signal(false);\n /** Indicates is selectors column disabled */\n public readonly isSelectorsColumnDisabled: WritableSignal<boolean> = signal(false);\n /** Current row index */\n public readonly activeRowIndex: WritableSignal<Nullable<number>> = signal(null);\n\n public ngAfterViewChecked(): void {\n this.#setPaddingHelperWidth();\n }\n\n /** Sort change output action */\n public onSortChange(sortModel: SortModel<string>): void {\n // TODO: add type guard\n this.sortChange.emit(sortModel as SortModel<SORT_PROPERTY>);\n }\n\n /** Filter change output action */\n public onFilterChange(filterModel: FilterModel<KEY>[]): void {\n this.filterChange.emit(filterModel);\n }\n\n /** Open row actions menu */\n public onMenuOpen(index: number): void {\n this.activeRowIndex.set(index);\n }\n\n /** Close the row actions menu */\n public onMenuClose(): void {\n this.activeRowIndex.set(null);\n }\n\n /** Row click output actions */\n public onRowClick(row: NonNullable<ENTITY_TYPE>, event: MouseEvent): void {\n this.rowClick.emit({ row, event });\n }\n\n /** Row doubleClick output action */\n public onRowDoubleClick(row: NonNullable<ENTITY_TYPE>): void {\n this.rowDoubleClick.emit(row);\n }\n\n /** Empty methods set in selectors directive */\n public onToggleEntity: (entity: ENTITY_TYPE, checked: boolean) => void = (): void => {\n return;\n };\n public onTogglePageEntities: (checked: boolean) => void = (): void => {\n return;\n };\n\n /**\n * Updates the width of padding helpers dynamically to match the width of `rowActions`.\n * Ensures that the width of `rowActionsHeaderPaddingHelper` and `rowActionsPaddingHelper`\n * is consistent with the current `rowActions` width.\n */\n #setPaddingHelperWidth(): void {\n if (this.rowActions()) {\n const rowActionsWidth: number = this.rowActions()?.nativeElement.offsetWidth || 0;\n\n const headerWidth: number = parseInt(this.rowActionsHeaderPaddingHelper()?.nativeElement?.style.width || '0', 10);\n const paddingWidth: number = parseInt(this.rowActionsPaddingHelper()?.nativeElement?.style.width || '0', 10);\n\n if (rowActionsWidth !== headerWidth || rowActionsWidth !== paddingWidth) {\n const headerEl: Nullable<HTMLElement> = this.rowActionsHeaderPaddingHelper()?.nativeElement;\n const paddingEl: Nullable<HTMLElement> = this.rowActionsPaddingHelper()?.nativeElement;\n\n if (headerEl) {\n headerEl.style.width = `${rowActionsWidth}px`;\n }\n\n if (paddingEl) {\n paddingEl.style.width = `${rowActionsWidth}px`;\n }\n }\n }\n }\n}\n","<table rtBlock=\"c-table\">\n <thead>\n <tr>\n @if (isSelectorsColumnShown()) {\n <th\n rtElem=\"cell\"\n rtMod=\"selectable\"\n (mousedown)=\"$event.stopPropagation()\"\n (click)=\"$event.stopPropagation()\"\n (dblclick)=\"$event.stopPropagation()\">\n @if (isMultiSelect()) {\n <mat-checkbox\n [disabled]=\"isSelectorsColumnDisabled()\"\n [checked]=\"isPageEntitiesSelected()\"\n [indeterminate]=\"isPageEntitiesIndeterminate() && !isPageEntitiesSelected()\"\n (change)=\"onTogglePageEntities($event.checked)\" />\n }\n </th>\n }\n\n @for (column of columns(); track column.propName) {\n @if (!column?.hidden) {\n <th\n rtElem=\"cell\"\n [rtMod]=\"{ sortable: column?.sorting }\"\n (mousedown)=\"$event.stopPropagation()\"\n (click)=\"$event.stopPropagation()\"\n (dblclick)=\"$event.stopPropagation()\">\n <rtui-table-header-cell\n [headerModel]=\"column.header\"\n [sortModel]=\"column?.sorting\"\n [currentSortModel]=\"currentSortModel()\"\n (sortChange)=\"onSortChange($event)\" />\n </th>\n }\n }\n\n @if (rowActionsTpl() || additionalRowActionsTpl()) {\n <th\n #rowActionsHeaderPaddingHelper\n rtElem=\"cell\"\n (mousedown)=\"$event.stopPropagation()\"\n (click)=\"$event.stopPropagation()\"\n (dblclick)=\"$event.stopPropagation()\">\n Actions\n </th>\n }\n </tr>\n\n @if (isFiltersShown()) {\n <tr>\n @if (isSelectorsColumnShown()) {\n <th rtElem=\"cell\" rtMod=\"filterable, empty\"></th>\n }\n\n @for (column of columns(); track column.propName) {\n @if (!column?.hidden && column.filterType) {\n <th rtElem=\"cell\" rtMod=\"filterable\">\n <rtui-table-header-filter-cell\n [appearance]=\"filterAppearance()\"\n [filterProperty]=\"column.propName\"\n [filterType]=\"column.filterType\"\n [defaultFilterOperator]=\"column?.defaultFilterOperator || filterOperators.EQUALS\"\n [filterOperators]=\"column.filterOperators || []\"\n [filterSelectOptions]=\"column.filterSelectOptions || []\"\n [filterModel]=\"filterModel()\"\n (filterChange)=\"onFilterChange($event)\" />\n </th>\n } @else if (!column?.hidden) {\n <th rtElem=\"cell\" rtMod=\"filterable\"></th>\n }\n }\n\n @if (rowActionsTpl() || additionalRowActionsTpl()) {\n <th rtElem=\"cell\" rtMod=\"filterable\"></th>\n }\n </tr>\n }\n </thead>\n\n <tbody>\n @for (row of entities(); track i; let i = $index) {\n <tr\n rtElem=\"row\"\n [rtuiTableRowClickDirective]=\"row\"\n [isTableRowClickable]=\"isTableRowsClickable()\"\n [rtMod]=\"{\n clickable: isTableRowsClickable(),\n active: activeRowIndex() === i,\n }\">\n @if (isSelectorsColumnShown()) {\n <td\n rtElem=\"cell\"\n (click)=\"$event.stopPropagation()\"\n (mousedown)=\"$event.stopPropagation()\"\n (dblclick)=\"$event.stopPropagation()\">\n @if (isMultiSelect()) {\n <mat-checkbox\n [disabled]=\"isSelectorsColumnDisabled()\"\n [checked]=\"selectedEntitiesIds().includes(row[keyExp()])\"\n (change)=\"onToggleEntity(row, $event.checked)\" />\n } @else {\n <mat-radio-button\n [disabled]=\"isSelectorsColumnDisabled()\"\n [checked]=\"selectedEntitiesIds().includes(row[keyExp()])\"\n (change)=\"onToggleEntity(row, true)\" />\n }\n </td>\n }\n\n @for (column of columns(); track column.propName) {\n @if (!column?.hidden) {\n <td rtElem=\"cell\" [rtMod]=\"{ copyable: column?.copyable }\">\n @switch (column?.type) {\n @case (columnTypes.CUSTOM) {\n @if (customCellsTpl() && customCellsTpl()?.getTemplateByPropName(column.propName)) {\n <ng-template\n *ngTemplateOutlet=\"\n customCellsTpl()?.getTemplateByPropName(column.propName) || null;\n context: { $implicit: row }\n \" />\n }\n }\n @default {\n <rtui-table-base-cell [row]=\"row\" [column]=\"column\" [isMobile]=\"isMobile()\" />\n }\n }\n </td>\n }\n }\n\n @if (rowActionsTpl() || additionalRowActionsTpl()) {\n <div rtBlock=\"c-table-actions\" [rtMod]=\"{ hidden: activeRowIndex() !== i }\">\n <div rtElem=\"container\" #rowActions>\n @if (additionalRowActionsTpl()) {\n <ng-template *ngTemplateOutlet=\"additionalRowActionsTpl() || null; context: { $implicit: row }\" />\n }\n\n @if (rowActionsTpl()) {\n <button\n rtElem=\"action\"\n aria-label=\"Icon-button for a context menu\"\n mat-icon-button\n [disableRipple]=\"true\"\n [matMenuTriggerFor]=\"menuTpl\"\n (menuOpened)=\"onMenuOpen(i)\"\n (menuClosed)=\"onMenuClose()\"\n (click)=\"$event.stopPropagation()\"\n (mousedown)=\"$event.stopPropagation()\">\n <mat-icon [rtIconOutlined]=\"true\">more_vert</mat-icon>\n </button>\n\n <mat-menu #menuTpl=\"matMenu\" xPosition=\"before\">\n <ng-template *ngTemplateOutlet=\"rowActionsTpl() || null; context: { $implicit: row }\" />\n </mat-menu>\n }\n </div>\n </div>\n\n <div #rowActionsRowPaddingHelper></div>\n }\n </tr>\n }\n </tbody>\n</table>\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n input,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n} from '@angular/core';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable } from '@rt-tools/core';\nimport { RtIconOutlinedDirective } from '@rt-tools/utils';\n\n@Component({\n selector: 'rtui-dynamic-selector-list-actions',\n templateUrl: './rtui-dynamic-selector-list-actions.component.html',\n styleUrls: ['./rtui-dynamic-selector-list-actions.component.scss'],\n imports: [MatIcon, MatButton, RtIconOutlinedDirective, BlockDirective, ElemDirective, ModDirective, MatIconButton, MatTooltip],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RtuiDynamicSelectorListActionsComponent {\n public isMobile: InputSignalWithTransform<Nullable<boolean>, Nullable<boolean>> = input.required<Nullable<boolean>, Nullable<boolean>>({\n transform: booleanAttribute,\n });\n public isResetButtonDisabled: InputSignalWithTransform<boolean, boolean> = input.required<boolean, boolean>({\n transform: booleanAttribute,\n });\n public isClearButtonDisabled: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n public disabled: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n\n public readonly resetAction: OutputEmitterRef<void> = output<void>();\n public readonly clearAction: OutputEmitterRef<void> = output<void>();\n\n public onReset(): void {\n this.resetAction.emit();\n }\n\n public onClear(): void {\n this.clearAction.emit();\n }\n}\n","<ng-container rtBlock=\"rtui-dynamic-selector-list-actions\">\n <div rtElem=\"control\">\n <button\n mat-icon-button\n type=\"button\"\n rtElem=\"item\"\n matTooltip=\"Reset to initial list\"\n matTooltipClass=\"custom-tooltip\"\n matTooltipPosition=\"left\"\n [rtMod]=\"{ active: !isResetButtonDisabled() && !disabled() }\"\n [disabled]=\"isResetButtonDisabled() || disabled()\"\n [matTooltipDisabled]=\"isMobile()\"\n (click)=\"onReset()\">\n <mat-icon rtElem=\"item-icon\" [rtIconOutlined]=\"true\">refresh</mat-icon>\n </button>\n </div>\n\n <div rtElem=\"control\">\n <button\n mat-icon-button\n type=\"button\"\n rtElem=\"item\"\n matTooltip=\"Clear list\"\n matTooltipClass=\"custom-tooltip\"\n matTooltipPosition=\"above\"\n [rtMod]=\"{ active: !disabled() && !isClearButtonDisabled() }\"\n [matTooltipDisabled]=\"isMobile()\"\n [disabled]=\"disabled() || isClearButtonDisabled()\"\n (click)=\"onClear()\">\n <mat-icon rtElem=\"item-icon\" [rtIconOutlined]=\"true\">delete_forever</mat-icon>\n </button>\n </div>\n</ng-container>\n","import { booleanAttribute, Directive, input, InputSignal, InputSignalWithTransform } from '@angular/core';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { Nullable } from '@rt-tools/core';\nimport { transformStringInput } from '@rt-tools/utils';\n\n@Directive()\nexport abstract class RtuiDynamicSelectorsDirective {\n /** Indicates if mobile view */\n public isMobile: InputSignalWithTransform<Nullable<boolean>, boolean> = input.required<Nullable<boolean>, boolean>({\n transform: booleanAttribute,\n });\n /** Selections control button title */\n public buttonTitle: InputSignalWithTransform<string, string> = input<string, string>('Add', {\n transform: transformStringInput,\n });\n /** Indicates if only one option can be chosen */\n public isSingleSelection: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is selector disabled */\n public disabled: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is break string pipe used */\n public useNameBreaking: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is title case pipe used */\n public useTitleCase: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n public isPlaceholderIconOutlined: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is delete entity button from the selected list shown */\n public isDeleteButtonShown: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is list of items draggable */\n public isListDraggable: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n /** Placeholder icon */\n public placeholderIcon: InputSignalWithTransform<string, string> = input<string, string>('', {\n transform: transformStringInput,\n });\n /** Placeholder description */\n public placeholderDescription: InputSignalWithTransform<string, string> = input<string, string>('', {\n transform: transformStringInput,\n });\n /** Material elements appearance */\n public appearance: InputSignal<MatFormFieldAppearance> = input('fill' as MatFormFieldAppearance);\n}\n","export enum TOGGLE_SIZE_TYPE_ENUM {\n SM = 'sm',\n MD = 'md',\n}\n\nexport type ToggleSizeType = TOGGLE_SIZE_TYPE_ENUM.SM | TOGGLE_SIZE_TYPE_ENUM.MD;\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n effect,\n forwardRef,\n inject,\n Injector,\n input,\n InputSignal,\n InputSignalWithTransform,\n OnInit,\n Signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { MatTooltip, TooltipPosition } from '@angular/material/tooltip';\nimport { noop } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable } from '@rt-tools/core';\nimport { BreakpointService } from '@rt-tools/utils';\nimport { TOGGLE_SIZE_TYPE_ENUM, ToggleSizeType } from './toggle-size.type.enum';\nimport { BooleanInput } from '@angular/cdk/coercion';\n\n@Component({\n selector: 'rtui-toggle',\n templateUrl: './rtui-toggle.component.html',\n styleUrls: ['./rtui-toggle.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RtuiToggleComponent),\n multi: true,\n },\n BreakpointService,\n ],\n imports: [\n ReactiveFormsModule,\n MatTooltip,\n\n // directives\n BlockDirective,\n ElemDirective,\n ModDirective,\n ],\n})\nexport class RtuiToggleComponent implements OnInit, ControlValueAccessor {\n readonly #injector: Injector = inject(Injector);\n readonly #cdr: ChangeDetectorRef = inject(ChangeDetectorRef);\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n readonly #breakpointService: BreakpointService = inject(BreakpointService);\n\n public formControl: FormControl<boolean> = new FormControl<boolean>(false, { nonNullable: true });\n\n public label: InputSignal<Nullable<string>> = input();\n public tooltip: InputSignal<string> = input('');\n public size: InputSignal<ToggleSizeType> = input<ToggleSizeType>(TOGGLE_SIZE_TYPE_ENUM.MD);\n public tooltipPosition: InputSignal<TooltipPosition> = input<TooltipPosition>('above');\n public isDisabled: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n public tooltipDisabled: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n public readonly isMobile: Signal<Nullable<boolean>> = this.#breakpointService.isMobile;\n\n #onTouched: () => void = noop;\n #onChanged: (value: boolean) => void = noop;\n\n public ngOnInit(): void {\n this.formControl.valueChanges\n .pipe(\n filter(() => typeof this.#onChanged === 'function'),\n takeUntilDestroyed(this.#destroyRef)\n )\n .subscribe((value: boolean) => {\n this.#onChanged(value);\n });\n\n this.formControl.statusChanges\n .pipe(\n filter(() => typeof this.#onTouched === 'function'),\n takeUntilDestroyed(this.#destroyRef)\n )\n .subscribe(() => this.#onTouched());\n\n effect(\n () => {\n if (this.formControl.disabled !== this.isDisabled()) {\n this.setDisabledState();\n }\n },\n { injector: this.#injector }\n );\n }\n\n // ––––––––––––– Value Accessor –––––––––––––––\n public writeValue(value: boolean): void {\n this.formControl.patchValue(value, { emitEvent: false });\n this.#cdr.markForCheck();\n }\n\n public registerOnChange(fn: () => void): void {\n this.#onChanged = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.#onTouched = fn;\n }\n\n public setDisabledState(): void {\n if (this.isDisabled()) {\n this.formControl.disable();\n } else {\n this.formControl.enable();\n }\n\n this.#cdr.markForCheck();\n }\n}\n","<label\n rtBlock=\"rtui-toggle-container\"\n [rtMod]=\"{ disabled: isDisabled() }\"\n [matTooltipPosition]=\"tooltipPosition()\"\n [matTooltip]=\"tooltip()\"\n [matTooltipDisabled]=\"!tooltip() || isMobile() || tooltipDisabled()\">\n <div rtBlock=\"rtui-toggle\" rtMod=\"{{ size() }}\">\n <input type=\"checkbox\" rtElem=\"check\" [formControl]=\"formControl\" />\n\n <b rtElem=\"switch\"></b>\n\n <b rtElem=\"track\"></b>\n </div>\n\n @if (label()) {\n <div rtElem=\"label\" [rtMod]=\"{ active: formControl.value }\">{{ label() }}</div>\n }\n</label>\n","import {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n InputSignal,\n InputSignalWithTransform,\n OnInit,\n output,\n OutputEmitterRef,\n Signal,\n signal,\n untracked,\n viewChild,\n WritableSignal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButton } from '@angular/material/button';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatFormField, MatFormFieldAppearance, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { MatRadioButton } from '@angular/material/radio';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { RouterLink } from '@angular/router';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable } from '@rt-tools/core';\nimport {\n BreakStringPipe,\n DeviceDetectorService,\n EntityToStringPipe,\n OSTypes,\n RtIconOutlinedDirective,\n RtScrollDirective,\n transformArrayInput,\n} from '@rt-tools/utils';\nimport { RtuiSpinnerComponent } from '../../../spinner';\nimport { RtuiClearButtonComponent } from '../../../table';\nimport { RtuiToggleComponent } from '../../../toggle';\nimport { BooleanInput } from '@angular/cdk/coercion';\n\n@Component({\n selector: 'rtui-multi-selector-popup',\n templateUrl: './rtui-multi-selector-popup.component.html',\n styleUrls: ['./rtui-multi-selector-popup.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n // Material\n MatButton,\n MatTooltip,\n MatFormField,\n MatIcon,\n MatInput,\n MatPrefix,\n MatSuffix,\n MatCheckbox,\n MatRadioButton,\n MatProgressSpinner,\n BreakStringPipe,\n ReactiveFormsModule,\n RouterLink,\n FormsModule,\n\n // directives\n BlockDirective,\n ElemDirective,\n ModDirective,\n RtScrollDirective,\n RtIconOutlinedDirective,\n\n // components\n RtuiClearButtonComponent,\n RtuiToggleComponent,\n RtuiSpinnerComponent,\n EntityToStringPipe,\n ],\n providers: [DeviceDetectorService],\n})\nexport class RtuiMultiSelectorPopupComponent<ENTITY extends Record<string, unknown>, KEY extends Extract<keyof ENTITY, string>>\n implements OnInit, AfterViewInit\n{\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n readonly #injector: Injector = inject(Injector);\n readonly #deviceService: DeviceDetectorService = inject(DeviceDetectorService);\n\n protected readonly oSTypes: typeof OSTypes = OSTypes;\n\n /** Indicates is mobile view */\n public isMobile: InputSignalWithTransform<Nullable<boolean>, Nullable<boolean>> = input.required<Nullable<boolean>, Nullable<boolean>>({\n transform: booleanAttribute,\n });\n public entitiesToSelect: InputSignalWithTransform<ENTITY[], ENTITY[]> = input.required<ENTITY[], ENTITY[]>({\n transform: (value: unknown) => transformArrayInput(value),\n });\n /** Material elements appearance */\n public appearance: InputSignal<MatFormFieldAppearance> = input.required();\n /** A model's field which should be used for http-requests */\n public keyExp: InputSignal<KEY> = input.required();\n /** A model's field which should be shown in ui */\n public displayExp: InputSignal<KEY> = input.required();\n /** Init search term value */\n public searchTerm: InputSignal<string> = input<string>('');\n /** Navigation button title */\n public navigateButtonTitle: InputSignal<string> = input<string>('');\n /** Navigation button link */\n public navigateLink: InputSignal<string> = input<string>('');\n /** Indicates if only one option can be chosen */\n public isSingleSelection: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is change multi select mode toggle shown */\n public isMultiToggleShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is Select all button shown */\n public isSelectAllButtonShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Indicates that a list of entities is being loading */\n public loading: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates that a list of entities is being fetching */\n public fetching: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is BreakStringPipe used */\n public useNameBreaking: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates lazy loading is used */\n public isLazyLoad: InputSignalWithTransform<Nullable<boolean>, boolean> = input<Nullable<boolean>, boolean>(false, {\n transform: booleanAttribute,\n });\n /** Indicates local search is used */\n public isLocalSearch: InputSignalWithTransform<Nullable<boolean>, boolean> = input<Nullable<boolean>, boolean>(true, {\n transform: booleanAttribute,\n });\n\n /** Send output selected entities ids */\n public readonly submitAction: OutputEmitterRef<ENTITY[KEY][]> = output<ENTITY[KEY][]>();\n /** Close popup action */\n public readonly closeAction: OutputEmitterRef<void> = output<void>();\n /** Output search action */\n public readonly searchAction: OutputEmitterRef<string> = output<string>();\n /** Output scroll action, needed for lazy loading */\n public readonly scrollAction: OutputEmitterRef<void> = output<void>();\n /** Output temporary selection action, needed for store values */\n public readonly temporarySelectAction: OutputEmitterRef<ENTITY[]> = output<ENTITY[]>();\n\n /** Search input Ref for set focus on init */\n public readonly searchInputRef: Signal<Nullable<ElementRef<HTMLInputElement>>> =\n viewChild<ElementRef<HTMLInputElement>>('searchInputTpl');\n\n /** Form control for search */\n public readonly searchControl: FormControl<Nullable<string>> = new FormControl('');\n /** Form control for select */\n public readonly selectionControl: FormControl<ENTITY[KEY][]> = new FormControl<ENTITY[KEY][]>([], { nonNullable: true });\n /** Entities filtered by local search */\n public readonly filteredEntities: WritableSignal<ENTITY[]> = signal([]);\n /** Selected entities */\n public readonly selectedEntities: WritableSignal<ENTITY[]> = signal([]);\n /** Indicates is all available entities has been selected */\n public readonly isAllSelected: WritableSignal<boolean> = signal(false);\n /** Indicates is multi selection mode enabled */\n public readonly isMultiSelection: WritableSignal<boolean> = signal(true);\n /** Indicates is macOS used */\n public readonly isMacOS: Signal<boolean> = signal(this.#deviceService.getOS() === this.oSTypes.MAC_OS);\n\n public ngOnInit(): void {\n /** Clear previous temp selection */\n this.temporarySelectAction.emit([]);\n\n /** Filter list of entities by search */\n this.searchControl.valueChanges\n .pipe(debounceTime(this.isLocalSearch() ? 0 : 500), takeUntilDestroyed(this.#destroyRef))\n .subscribe((value: Nullable<string>): void => {\n const selectedEntities: ENTITY[] = this.entitiesToSelect().filter((el: ENTITY) => {\n return this.selectionControl.value.includes(el[this.keyExp()]);\n });\n this.selectedEntities.set(selectedEntities);\n this.temporarySelectAction.emit(selectedEntities);\n\n if (value && this.isLocalSearch()) {\n const searchTerms: string[] = value.toLowerCase().trim().split(' ');\n\n this.filteredEntities.set(\n this.entitiesToSelect().filter((el: ENTITY) => {\n return (\n (typeof el[this.displayExp()] === 'string' || typeof el[this.displayExp()] === 'number') &&\n searchTerms.every(\n (term: string) =>\n el[this.displayExp()]?.toString().toLowerCase().includes(term) &&\n !this.selectedEntities().includes(el)\n )\n );\n })\n );\n } else if (this.isLocalSearch()) {\n this.filteredEntities.set(this.entitiesToSelect());\n } else if (value !== null && typeof value === 'string') {\n this.searchAction.emit(value);\n }\n });\n\n /** Set entitiesToSelect list and isAllSelected checkbox state */\n effect(\n () => {\n if (this.entitiesToSelect() && Array.isArray(this.entitiesToSelect())) {\n if (this.searchControl?.value) {\n const filteredEntities: ENTITY[] = this.entitiesToSelect().filter((el: ENTITY) => {\n return !this.selectionControl.value.includes(el[this.keyExp()]);\n });\n this.filteredEntities.set(filteredEntities);\n } else {\n this.filteredEntities.set(this.entitiesToSelect());\n }\n\n this.isAllSelected.set(\n this.searchControl?.value\n ? this.selectionControl.value?.length - untracked(() => this.selectedEntities()?.length) ===\n untracked(() => this.filteredEntities()?.length)\n : this.selectionControl.value?.length === untracked(() => this.filteredEntities()?.length)\n );\n }\n },\n { injector: this.#injector }\n );\n }\n\n /** Set focus on search input */\n public ngAfterViewInit(): void {\n if (this.searchInputRef) {\n this.searchInputRef()?.nativeElement.focus();\n }\n\n /**\n * Reset search term left over from a previous open. Deferred from `ngOnInit` to\n * `ngAfterViewInit` because emitting `searchAction` synchronously in `ngOnInit`\n * triggers a parent state update during the same change-detection tick in which\n * the host `cdkConnectedOverlay` is attaching. The cascade detaches/reattaches\n * the overlay's origin reference before its position strategy has computed the\n * connected coordinates, leaving the popup pinned at (0, 0). By the time\n * `ngAfterViewInit` runs the overlay is positioned, so a downstream re-fetch is\n * safe.\n */\n if (this.searchTerm()) {\n this.onClearSearch();\n }\n }\n\n /** Change Multi election mode */\n public toggleMultiSelection(): void {\n this.isMultiSelection.update((value: boolean) => !value);\n }\n\n /** Toggle select all */\n public toggleSelectAll(value: boolean): void {\n this.isAllSelected.set(value);\n\n if (this.isAllSelected() && this.searchControl.value) {\n this.selectionControl.patchValue([\n ...this.selectedEntities().map((el: ENTITY) => el[this.keyExp()]),\n ...this.filteredEntities().map((el: ENTITY) => el[this.keyExp()]),\n ]);\n } else if (this.isAllSelected()) {\n this.selectionControl.patchValue(this.filteredEntities().map((el: ENTITY) => el[this.keyExp()]));\n } else {\n this.selectionControl.patchValue([]);\n }\n }\n\n /** Update selectionControl and isAllSelected checkbox state */\n public itemToggle(entity: ENTITY, checked: boolean): void {\n if (checked) {\n this.selectionControl.patchValue([...this.selectionControl.value, entity[this.keyExp()]]);\n } else {\n this.selectionControl.patchValue(\n this.selectionControl.value.filter((el: ENTITY[KEY]): boolean => {\n return el !== entity[this.keyExp()];\n })\n );\n }\n\n this.isAllSelected.set(\n this.searchControl.value\n ? this.selectionControl.value?.length - this.selectedEntities()?.length === this.filteredEntities()?.length\n : this.selectionControl.value?.length === this.filteredEntities()?.length\n );\n }\n\n /** Proceed select action in multi selection mode */\n public onToggleItem(event: MouseEvent, entity: ENTITY, checked: boolean): void {\n const multipleSelectionEnabled: boolean = this.isMacOS() ? event.metaKey : event.ctrlKey;\n\n if ((!this.isMultiSelection() && !multipleSelectionEnabled) || this.isSingleSelection()) {\n this.toggleSelectAll(false);\n }\n\n this.itemToggle(entity, checked);\n }\n\n /** Proceed select action in single selection mode */\n public onToggleSingleItem(entity: ENTITY, checked: boolean): void {\n this.toggleSelectAll(false);\n this.itemToggle(entity, checked);\n }\n\n /** Output action, selected entities ids */\n public onSubmit(): void {\n if (this.selectionControl.value?.length) {\n this.submitAction.emit(this.selectionControl.value);\n }\n }\n\n /** Close popup */\n public onClose(): void {\n this.closeAction.emit();\n }\n\n /** Clear search */\n public onClearSearch(): void {\n if (!this.isLocalSearch()) {\n this.searchAction.emit('');\n }\n this.searchControl.patchValue(null);\n }\n\n /** Scroll action, needed for lazy loading mode */\n public scroll(): void {\n this.scrollAction.emit();\n }\n}\n","<div\n rtBlock=\"rtui-multi-selector-header\"\n [rtMod]=\"{ simple: isSingleSelection() || !filteredEntities().length || filteredEntities().length <= 1 }\">\n <mat-form-field subscriptSizing=\"dynamic\" [appearance]=\"appearance()\">\n <input #searchInputTpl matInput placeholder=\"Search...\" type=\"text\" [formControl]=\"searchControl\" />\n\n <mat-icon matPrefix rtIconOutlined>search</mat-icon>\n\n <rtui-clear-button matSuffix [isButtonShown]=\"!!searchControl.value\" (clickAction)=\"onClearSearch()\" />\n </mat-form-field>\n\n @if (!isSingleSelection() && filteredEntities().length > 1 && !loading()) {\n <div rtElem=\"controls\">\n @if (isMultiToggleShown()) {\n <div rtElem=\"controls-item\" rtMod=\"first\">\n <rtui-toggle label=\"Multi selection\" [ngModel]=\"this.isMultiSelection()\" (ngModelChange)=\"toggleMultiSelection()\" />\n\n @if (!isMobile()) {\n <mat-icon\n rtElem=\"controls-item-icon\"\n matTooltipPosition=\"above\"\n [rtIconOutlined]=\"true\"\n [matTooltip]=\"\n isMacOS() ? 'Also for multi selection use COMMAND button' : 'Also for multi selection use CTRL button'\n \">\n info\n </mat-icon>\n }\n\n @if (isMobile()) {\n <div rtElem=\"controls-item-info\">\n {{ isMacOS() ? 'Also for multi selection use COMMAND button' : 'Also for multi selection use CTRL button' }}\n </div>\n }\n </div>\n }\n\n @if (isSelectAllButtonShown()) {\n <div rtElem=\"controls-item\" rtMod=\"last\">\n <mat-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"!isAllSelected() && selectionControl.value.length > 0\"\n (change)=\"toggleSelectAll($event.checked)\">\n <div rtElem=\"controls-item-title\">Select all</div>\n </mat-checkbox>\n </div>\n }\n </div>\n }\n</div>\n\n@if ((filteredEntities()?.length || selectedEntities().length) && !loading()) {\n <div rtBlock=\"rtui-multi-selector-options\" rtScrollDirective [active]=\"!!isLazyLoad() && !fetching()\" (scrollAction)=\"scroll()\">\n @if (searchControl.value && selectedEntities()) {\n @for (entity of selectedEntities(); track entity[displayExp()]; let i = $index) {\n @if (isSingleSelection()) {\n <mat-radio-button\n rtElem=\"item\"\n [rtMod]=\"{ separated: i === selectedEntities().length - 1 }\"\n [checked]=\"selectionControl.value.includes(entity[keyExp()])\"\n (change)=\"onToggleSingleItem(entity, !selectionControl.value.includes(entity[keyExp()]))\">\n <div rtElem=\"item-title\">\n @if (useNameBreaking()) {\n {{ entity[displayExp()] | entityToString | breakString }}\n } @else {\n {{ entity[displayExp()] }}\n }\n </div>\n </mat-radio-button>\n } @else {\n <mat-checkbox\n rtElem=\"item\"\n [rtMod]=\"{ separated: i === selectedEntities().length - 1 }\"\n [checked]=\"selectionControl.value.includes(entity[keyExp()])\"\n (click)=\"onToggleItem($event, entity, !selectionControl.value.includes(entity[keyExp()]))\">\n <div rtElem=\"item-title\">\n @if (useNameBreaking()) {\n {{ entity[displayExp()] | entityToString | breakString }}\n } @else {\n {{ entity[displayExp()] }}\n }\n </div>\n </mat-checkbox>\n }\n }\n }\n\n @if (filteredEntities()) {\n @for (entity of filteredEntities(); track entity[displayExp()]) {\n @if (isSingleSelection()) {\n <mat-radio-button\n rtElem=\"item\"\n [checked]=\"selectionControl.value.includes(entity[keyExp()])\"\n (change)=\"onToggleSingleItem(entity, !selectionControl.value.includes(entity[keyExp()]))\">\n <div rtElem=\"item-title\">\n @if (useNameBreaking()) {\n {{ entity[displayExp()] | entityToString | breakString }}\n } @else {\n {{ entity[displayExp()] }}\n }\n </div>\n </mat-radio-button>\n } @else {\n <mat-checkbox\n rtElem=\"item\"\n [checked]=\"selectionControl.value.includes(entity[keyExp()])\"\n (click)=\"onToggleItem($event, entity, !selectionControl.value.includes(entity[keyExp()]))\">\n <div rtElem=\"item-title\">\n @if (useNameBreaking()) {\n {{ entity[displayExp()] | entityToString | breakString }}\n } @else {\n {{ entity[displayExp()] }}\n }\n </div>\n </mat-checkbox>\n }\n }\n }\n\n @if (fetching()) {\n <div rtElem=\"loader\">\n <mat-spinner [diameter]=\"20\" />\n </div>\n }\n </div>\n} @else {\n <div rtBlock=\"rtui-multi-selector-placeholder\">\n @if (loading()) {\n <rtui-spinner />\n } @else {\n <mat-icon rtElem=\"icon\" rtIconOutlined>search</mat-icon>\n\n <div rtElem=\"title\">No Results</div>\n }\n </div>\n}\n\n<div rtBlock=\"rtui-multi-selector-footer\" [rtMod]=\"{ full: !!navigateLink() && !!navigateButtonTitle() }\">\n @if (navigateLink() && navigateButtonTitle()) {\n <a rtElem=\"nav-action\" [routerLink]=\"navigateLink()\">{{ navigateButtonTitle() }}</a>\n }\n\n <div rtElem=\"base-actions\">\n <button mat-button type=\"button\" rtBlock=\"c-button\" (click)=\"onClose()\">Cancel</button>\n\n <button\n mat-flat-button\n type=\"button\"\n rtBlock=\"c-button\"\n [disabled]=\"!selectionControl.value?.length || loading()\"\n (click)=\"onSubmit()\">\n SUBMIT\n </button>\n </div>\n</div>\n","import { CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n input,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n} from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\n\nimport { BlockDirective, ElemDirective, ModDirective } from '@rt-tools/core';\nimport { RtIconOutlinedDirective, transformStringInput } from '@rt-tools/utils';\n\n@Component({\n selector: 'rtui-dynamic-selector-placeholder',\n templateUrl: './rtui-dynamic-selector-placeholder.component.html',\n styleUrls: ['./rtui-dynamic-selector-placeholder.component.scss'],\n imports: [MatIcon, MatButton, CdkOverlayOrigin, RtIconOutlinedDirective, BlockDirective, ElemDirective, ModDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RtuiDynamicSelectorPlaceholderComponent {\n public icon: InputSignalWithTransform<string, string> = input<string, string>('', {\n transform: transformStringInput,\n });\n public description: InputSignalWithTransform<string, string> = input<string, string>('', {\n transform: transformStringInput,\n });\n public buttonTitle: InputSignalWithTransform<string, string> = input<string, string>('Add', {\n transform: transformStringInput,\n });\n public isButtonShow: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(true, {\n transform: booleanAttribute,\n });\n public disabled: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n public isIconOutlined: InputSignalWithTransform<boolean, boolean> = input<boolean, boolean>(false, {\n transform: booleanAttribute,\n });\n\n public readonly submitAction: OutputEmitterRef<CdkOverlayOrigin> = output<CdkOverlayOrigin>();\n\n public onSubmit(trigger: CdkOverlayOrigin): void {\n this.submitAction.emit(trigger);\n }\n}\n","<ng-container rtBlock=\"rtui-dynamic-selector-placeholder\">\n @if (icon()) {\n <mat-icon rtElem=\"icon\" [rtMod]=\"{ warn: !isButtonShow() }\" [rtIconOutlined]=\"isIconOutlined()\">{{ icon() }}</mat-icon>\n }\n\n @if (description()) {\n <div rtElem=\"description\">{{ description() }}</div>\n }\n\n @if (isButtonShow()) {\n <button\n #trigger=\"cdkOverlayOrigin\"\n cdkOverlayOrigin\n mat-flat-button\n type=\"button\"\n rtBlock=\"c-button\"\n [disabled]=\"disabled()\"\n (click)=\"onSubmit(trigger)\">\n <mat-icon rtIconOutlined>add</mat-icon>\n\n {{ buttonTitle() }}\n </button>\n }\n</ng-container>\n","import { CdkDrag, CdkDragDrop, CdkDragHandle, CdkDropList } from '@angular/cdk/drag-drop';\nimport { NgTemplateOutlet, TitleCasePipe } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n Directive,\n input,\n InputSignal,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n signal,\n Signal,\n TemplateRef,\n viewChild,\n WritableSignal,\n} from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable } from '@rt-tools/core';\nimport { BreakStringPipe, EntityToStringPipe, RtHideTooltipDirective, RtIconOutlinedDirective, transformArrayInput } from '@rt-tools/utils';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormField, MatInput } from '@angular/material/input';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\n/** Directive for row actions located outside a row menu button */\n@Directive({\n selector: '[rtuiDynamicSelectorItemAdditionalControlDirective]',\n})\nexport class RtuiDynamicSelectorItemAdditionalControlDirective {}\n\n/** Directive for custom item title template */\n@Directive({\n selector: '[rtuiDynamicSelectorItemTitleDirective]',\n})\nexport class RtuiDynamicSelectorItemTitleDirective {}\n\n@Component({\n selector: 'rtui-dynamic-selector-selected-list',\n templateUrl: './rtui-dynamic-selector-selected-list.component.html',\n styleUrls: ['./rtui-dynamic-selector-selected-list.component.scss'],\n imports: [\n NgTemplateOutlet,\n FormsModule,\n ReactiveFormsModule,\n\n // material\n MatIconButton,\n MatIcon,\n MatTooltip,\n MatInput,\n MatFormField,\n\n // drag and drop\n CdkDropList,\n CdkDrag,\n CdkDragHandle,\n\n // directives\n RtIconOutlinedDirective,\n RtHideTooltipDirective,\n BlockDirective,\n ElemDirective,\n ModDirective,\n\n // pipes\n EntityToStringPipe,\n BreakStringPipe,\n TitleCasePipe,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RtuiDynamicSelectorSelectedListComponent<ENTITY extends Record<string, unknown>, KEY extends Extract<keyof ENTITY, string>> {\n protected readonly editedItemIndex: WritableSignal<Nullable<number>> = signal(null);\n\n public readonly inputRef: Signal<Nullable<MatInput>> = viewChild(MatInput);\n\n /** Indicates if mobile view */\n public isMobile: InputSignalWithTransform<boolean, BooleanInput> = input.required<boolean, BooleanInput>({\n transform: booleanAttribute,\n });\n /** A model's field, which should be used for http-requests */\n public keyExp: InputSignal<KEY> = input.required();\n /** A model's field, which should be shown in ui */\n public displayExp: InputSignal<KEY> = input.required();\n /** Array of selected entities */\n public selectedEntities: InputSignalWithTransform<ENTITY[], ENTITY[]> = input.required<ENTITY[], ENTITY[]>({\n transform: (value: unknown) => transformArrayInput(value),\n });\n /** Entity keys that can't be changed */\n public readonlyEntitiesKeys: InputSignalWithTransform<ENTITY[KEY][], ENTITY[KEY][]> = input<ENTITY[KEY][], ENTITY[KEY][]>([], {\n transform: (value: ENTITY[KEY][]) => transformArrayInput(value),\n });\n /** Indicates is a list of items draggable */\n public isListDraggable: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is break string pipe used */\n public useNameBreaking: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is title case pipe used */\n public useTitleCase: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is deleting entity button from the selected list shown */\n public isDeleteButtonShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is items editable */\n public isItemsEditable: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Material elements appearance */\n public appearance: InputSignal<MatFormFieldAppearance> = input('fill' as MatFormFieldAppearance);\n\n public readonly deleteFromSelectedAction: OutputEmitterRef<ENTITY[KEY]> = output<ENTITY[KEY]>();\n public readonly dropAction: OutputEmitterRef<CdkDragDrop<ENTITY[]>> = output<CdkDragDrop<ENTITY[]>>();\n public readonly changeValueAction: OutputEmitterRef<{ prev: ENTITY[KEY]; new: string }> = output<{ prev: ENTITY[KEY]; new: string }>();\n\n /** Additional control for entity */\n public readonly additionalControlTpl: Signal<Nullable<TemplateRef<{ $implicit: ENTITY }>>> = contentChild(\n RtuiDynamicSelectorItemAdditionalControlDirective,\n {\n read: TemplateRef,\n }\n );\n /** Custom item title template */\n public readonly itemTitleTpl: Signal<Nullable<TemplateRef<{ $implicit: ENTITY }>>> = contentChild(\n RtuiDynamicSelectorItemTitleDirective,\n {\n read: TemplateRef,\n }\n );\n\n protected onDelete(value: ENTITY[KEY]): void {\n this.deleteFromSelectedAction.emit(value);\n }\n\n protected onDrop(event: CdkDragDrop<ENTITY[]>): void {\n if (event.currentIndex !== event.previousIndex) {\n this.dropAction.emit(event);\n }\n }\n\n protected changeValue(prev: ENTITY[KEY]): void {\n this.changeValueAction.emit({ prev, new: this.inputRef()?.value || '' });\n this.setEditModState(null);\n }\n\n protected setEditModState(index: Nullable<number>): void {\n this.editedItemIndex.set(index);\n }\n}\n","<ng-container rtBlock=\"rtui-dynamic-selector\">\n <div rtElem=\"list\" cdkDropList (cdkDropListDropped)=\"onDrop($event)\">\n @for (entity of selectedEntities(); track entity[displayExp()]; let i = $index) {\n <div cdkDrag rtElem=\"item\" [rtMod]=\"{ draggable: isListDraggable() }\" [cdkDragDisabled]=\"!isListDraggable()\">\n @if (isListDraggable()) {\n <div rtElem=\"item-mover\">\n <div rtElem=\"item-control\">\n <button\n cdkDragHandle\n mat-icon-button\n type=\"button\"\n rtElem=\"item-control-button\"\n rtMod=\"draggable\"\n matTooltip=\"Hold button to drag\"\n matTooltipPosition=\"right\"\n [matTooltipDisabled]=\"isMobile()\">\n <mat-icon [rtIconOutlined]=\"true\">open_with</mat-icon>\n </button>\n </div>\n </div>\n }\n\n @if (editedItemIndex() === i) {\n <mat-form-field rtElem=\"item-input\" subscriptSizing=\"dynamic\" [appearance]=\"appearance()\">\n <input matInput type=\"text\" [value]=\"entity[displayExp()]\" (keydown.enter)=\"changeValue(entity[displayExp()])\" />\n </mat-form-field>\n } @else if (itemTitleTpl()) {\n <ng-container *ngTemplateOutlet=\"itemTitleTpl() || null; context: { $implicit: entity }\" />\n } @else {\n <span\n #titleTpl\n rtElem=\"item-title\"\n matTooltipPosition=\"above\"\n [rtHideTooltipDirective]=\"titleTpl\"\n [isTooltipShown]=\"!isMobile()\"\n [matTooltip]=\"\n useNameBreaking()\n ? (entity[displayExp()] | entityToString | breakString)\n : (entity[displayExp()] | entityToString)\n \"\n [matTooltipDisabled]=\"isMobile()\">\n @if (useNameBreaking()) {\n {{\n useTitleCase()\n ? (entity[displayExp()] | entityToString | breakString | titlecase)\n : (entity[displayExp()] | entityToString | breakString)\n }}\n } @else {\n {{ useTitleCase() ? (entity[displayExp()] | entityToString | titlecase) : entity[displayExp()] }}\n }\n </span>\n }\n\n <div rtElem=\"item-controls\">\n @if (additionalControlTpl()) {\n <ng-container *ngTemplateOutlet=\"additionalControlTpl() || null; context: { $implicit: entity }\" />\n }\n\n @if (isItemsEditable()) {\n @if (editedItemIndex() === i) {\n <div rtElem=\"item-control\">\n <button\n mat-icon-button\n type=\"button\"\n rtElem=\"item-control-button\"\n matTooltipPosition=\"left\"\n matTooltip=\"Reset\"\n [matTooltipDisabled]=\"isMobile()\"\n (click)=\"setEditModState(null)\">\n <mat-icon [rtIconOutlined]=\"true\">refresh</mat-icon>\n </button>\n </div>\n }\n\n <div rtElem=\"item-control\">\n <button\n mat-icon-button\n type=\"button\"\n rtElem=\"item-control-button\"\n matTooltipPosition=\"right\"\n [matTooltip]=\"editedItemIndex() === i ? 'Apply' : 'Edit item'\"\n [matTooltipDisabled]=\"isMobile()\"\n (click)=\"editedItemIndex() === i ? changeValue(entity[displayExp()]) : setEditModState(i)\">\n <mat-icon [rtIconOutlined]=\"true\">{{ editedItemIndex() === i ? 'done' : 'edit' }}</mat-icon>\n </button>\n </div>\n }\n\n @if (isDeleteButtonShown()) {\n <div rtElem=\"item-control\">\n <button\n mat-icon-button\n type=\"button\"\n rtElem=\"item-control-button\"\n matTooltip=\"Remove the Item from the List\"\n matTooltipPosition=\"left\"\n [rtMod]=\"{ active: !readonlyEntitiesKeys().includes(entity[keyExp()]) }\"\n [matTooltipDisabled]=\"isMobile()\"\n [disabled]=\"readonlyEntitiesKeys().includes(entity[keyExp()])\"\n (click)=\"onDelete(entity[keyExp()])\">\n <mat-icon [rtIconOutlined]=\"true\">delete</mat-icon>\n </button>\n </div>\n }\n </div>\n </div>\n }\n </div>\n</ng-container>\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n Directive,\n effect,\n forwardRef,\n inject,\n Injector,\n input,\n InputSignal,\n InputSignalWithTransform,\n model,\n ModelSignal,\n OnInit,\n output,\n OutputEmitterRef,\n Signal,\n signal,\n TemplateRef,\n untracked,\n WritableSignal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport {\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { noop } from 'rxjs';\nimport { distinctUntilChanged, filter } from 'rxjs/operators';\n\nimport { BlockDirective, ElemDirective, Nullable } from '@rt-tools/core';\nimport {\n areArraysEqual,\n areArraysEqualUnordered,\n checkIsEntityInArrayByKey,\n OVERLAY_POSITIONS,\n RtEscapeKeyDirective,\n sortByAlphabet,\n transformArrayInput,\n} from '@rt-tools/utils';\nimport { RtuiDynamicSelectorListActionsComponent } from '../actions/rtui-dynamic-selector-list-actions.component';\nimport { RtuiDynamicSelectorsDirective } from '../dynamic-selectors-directive';\nimport { RtuiMultiSelectorPopupComponent } from '../multi-selector-popup/rtui-multi-selector-popup.component';\nimport { RtuiDynamicSelectorPlaceholderComponent } from '../placeholder/rtui-dynamic-selector-placeholder.component';\nimport {\n RtuiDynamicSelectorItemAdditionalControlDirective,\n RtuiDynamicSelectorItemTitleDirective,\n RtuiDynamicSelectorSelectedListComponent,\n} from '../selected-list/rtui-dynamic-selector-selected-list.component';\nimport { BooleanInput } from '@angular/cdk/coercion';\n\ninterface FormModel {\n autocompleteControl: FormControl<Nullable<string>>;\n}\n\n/** Directive for row actions located outside a row menu button */\n@Directive({\n selector: '[rtuiDynamicSelectorAdditionalControlDirective]',\n})\nexport class RtuiDynamicSelectorAdditionalControlDirective {}\n\n/** Directive for custom item title template, projected from rtui-dynamic-selector down to selected-list */\n@Directive({\n selector: '[rtuiDynamicSelectorItemTitleProjectionDirective]',\n})\nexport class RtuiDynamicSelectorItemTitleProjectionDirective {}\n\n@Component({\n selector: 'rtui-dynamic-selector',\n templateUrl: './rtui-dynamic-selector.component.html',\n styleUrls: ['./rtui-dynamic-selector.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ReactiveFormsModule,\n NgTemplateOutlet,\n CdkOverlayOrigin,\n CdkConnectedOverlay,\n\n // directives\n BlockDirective,\n ElemDirective,\n RtEscapeKeyDirective,\n RtuiDynamicSelectorItemAdditionalControlDirective,\n RtuiDynamicSelectorItemTitleDirective,\n\n // components\n RtuiMultiSelectorPopupComponent,\n RtuiDynamicSelectorPlaceholderComponent,\n RtuiDynamicSelectorListActionsComponent,\n RtuiDynamicSelectorSelectedListComponent,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RtuiDynamicSelectorComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: RtuiDynamicSelectorComponent,\n multi: true,\n },\n ],\n})\nexport class RtuiDynamicSelectorComponent<ENTITY extends Record<string, unknown>, KEY extends Extract<keyof ENTITY, string>>\n extends RtuiDynamicSelectorsDirective\n implements ControlValueAccessor, Validator, OnInit\n{\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n readonly #injector: Injector = inject(Injector);\n readonly #fb: FormBuilder = inject(FormBuilder);\n\n /** Config for overlay selector */\n protected readonly connectedOverlayPositions: ConnectedPosition[] = [...OVERLAY_POSITIONS];\n\n public form: FormGroup<FormModel> = this.#fb.group<FormModel>({\n autocompleteControl: this.#fb.control<Nullable<string>>(null), // used only for UI\n });\n /** Target element for overlay selector */\n public selectedOverlayTrigger: Nullable<CdkOverlayOrigin> = null;\n\n /** A model's field which should be used for http-requests */\n public keyExp: InputSignal<KEY> = input.required();\n /** A model's field which should be shown in ui */\n public displayExp: InputSignal<KEY> = input.required();\n /** All entities available entities */\n public entities: InputSignalWithTransform<ENTITY[], ENTITY[]> = input.required<ENTITY[], ENTITY[]>({\n transform: (value: unknown) => transformArrayInput(value),\n });\n /** Navigation button title for popup actions */\n public navigateButtonTitle: InputSignal<string> = input<string>('');\n /** Navigation button link for popup actions */\n public navigateLink: InputSignal<string> = input<string>('');\n /** Entity keys that can't be changed */\n public readonlyEntitiesKeys: InputSignalWithTransform<ENTITY[KEY][], ENTITY[KEY][]> = input<ENTITY[KEY][], ENTITY[KEY][]>([], {\n transform: (value: ENTITY[KEY][]) => transformArrayInput(value),\n });\n /** Selected entities */\n public chosenEntities: ModelSignal<ENTITY[]> = model<ENTITY[]>([]);\n /** Indicates is selection available */\n public isSelectionAvailable: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is placeholder shown */\n public isPlaceholderShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates that a list of entities is being loading */\n public loading: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates that a list of entities is being pending */\n public pending: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates that a list of entities is being fetching */\n public fetching: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates lazy loading is used */\n public isLazyLoad: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates local search is used */\n public isLocalSearch: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is change multi select mode toggle shown */\n public isMultiToggleShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is Select all button shown */\n public isSelectAllButtonShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is Open popup button shown */\n public isOpenPopupButtonShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Init search term value */\n public searchTerm: InputSignal<string> = input('');\n /** Indicates that an additional control has been changed */\n public additionalControlChanged: InputSignal<boolean> = input(false);\n /** Custom sort function for entities list in popup */\n public sortFn: InputSignal<Nullable<(a: ENTITY, b: ENTITY) => number>> = input<Nullable<(a: ENTITY, b: ENTITY) => number>>(null);\n\n /** Output search action */\n public readonly searchAction: OutputEmitterRef<string> = output<string>();\n /** Output scroll action, needed for lazy loading */\n public readonly scrollAction: OutputEmitterRef<void> = output<void>();\n /** Output temporary selection action, needed for store values */\n public readonly temporarySelectAction: OutputEmitterRef<ENTITY[]> = output<ENTITY[]>();\n /** Output reset list to initial value action */\n public readonly resetAction: OutputEmitterRef<void> = output<void>();\n /** Output selection change action */\n public readonly selectionChangeAction: OutputEmitterRef<ENTITY[]> = output<ENTITY[]>();\n\n /** List of entities for local processing */\n readonly #entities: WritableSignal<ENTITY[]> = signal([]);\n readonly #autocompleteControlValue: WritableSignal<string> = signal('');\n /** Initial entities ids */\n readonly #initialEntityIds: WritableSignal<Array<ENTITY[KEY]>> = signal([]);\n /** Current selected entities ids */\n readonly #selectedEntityIds: WritableSignal<Array<ENTITY[KEY]>> = signal([]);\n /** Current selected entities */\n public readonly selectedEntities: Signal<ENTITY[]> = computed(() => {\n return this.#selectedEntityIds()\n .map((id: ENTITY[KEY]) => this.entities().find((el: ENTITY) => id === el[this.keyExp()]))\n .filter((el: Nullable<ENTITY>): el is ENTITY => !!el);\n });\n /** Indicates is popup selector visible */\n public readonly isSelectionControlShown: WritableSignal<boolean> = signal(false);\n /** Indicates is no data */\n public readonly isNoDataPlaceholderShown: Signal<boolean> = computed(() => {\n return !this.selectedEntities().length && !this.searchTerm() && (!this.entitiesToSelect()?.length || !this.isSelectionAvailable());\n });\n /** Indicates reset selected button is disabled */\n public readonly isResetButtonDisabled: Signal<boolean> = computed(() => {\n return areArraysEqual(this.#selectedEntityIds(), this.#initialEntityIds()) && !this.additionalControlChanged();\n });\n /** Indicates clear selected button is disabled */\n public readonly isClearButtonDisabled: Signal<boolean> = computed(() => {\n return areArraysEqualUnordered(this.#selectedEntityIds(), this.readonlyEntitiesKeys()) && !this.additionalControlChanged();\n });\n /** Entities can be chosen, except selected on init */\n public readonly entitiesToSelect: Signal<ENTITY[]> = computed(() => {\n return this.#entities()\n .filter((entity: ENTITY) => !checkIsEntityInArrayByKey<ENTITY, KEY>(this.selectedEntities(), entity, this.keyExp()))\n .filter((entity: ENTITY) => {\n return (\n (typeof entity[this.displayExp()] === 'string' || typeof entity[this.displayExp()] === 'number') &&\n entity[this.displayExp()]?.toString().toLowerCase().includes(this.#autocompleteControlValue().toLowerCase())\n );\n })\n .sort((a: ENTITY, b: ENTITY) => {\n return this.sortFn() ? this.sortFn()!(a, b) : sortByAlphabet(a, b, this.displayExp());\n });\n });\n\n /** Additional control for entity */\n public readonly additionalControlTpl: Signal<Nullable<TemplateRef<{ $implicit: ENTITY }>>> = contentChild(\n RtuiDynamicSelectorAdditionalControlDirective,\n {\n read: TemplateRef,\n }\n );\n /** Custom item title template */\n public readonly itemTitleTpl: Signal<Nullable<TemplateRef<{ $implicit: ENTITY }>>> = contentChild(\n RtuiDynamicSelectorItemTitleProjectionDirective,\n {\n read: TemplateRef,\n }\n );\n\n /** Selected entities ids for compare */\n #selectedEntityIdsForCompare: Array<ENTITY[KEY]> = [];\n /** Indicates is selector init */\n #isFormInit: boolean = false;\n\n /** Value accessor actions */\n #onTouched: () => void = noop;\n #onChanged: (value: Array<ENTITY[KEY]>) => void = noop;\n\n public ngOnInit(): void {\n this.form.controls.autocompleteControl.valueChanges\n .pipe(distinctUntilChanged(), takeUntilDestroyed(this.#destroyRef))\n .subscribe((value: Nullable<string>): void => {\n this.#autocompleteControlValue.set(value || '');\n });\n\n this.form.statusChanges\n .pipe(\n filter(() => typeof this.#onTouched === 'function'),\n takeUntilDestroyed(this.#destroyRef)\n )\n .subscribe((): void => {\n this.#onTouched();\n });\n\n /** Set list of selected entities if parent use ModelSignal instead of FormControl */\n toObservable(this.chosenEntities, { injector: this.#injector })\n .pipe(\n filter((list: ENTITY[]) => !!list?.length),\n takeUntilDestroyed(this.#destroyRef)\n )\n .subscribe((list: ENTITY[]) => {\n const chosenListIds: ReadonlyArray<ENTITY[KEY]> = list.map((entity: ENTITY) => entity[this.keyExp()]);\n const selectedEntityIds: ReadonlyArray<ENTITY[KEY]> = this.#selectedEntityIds();\n const chosenListIdsForCompare: ENTITY[KEY][] = [...chosenListIds].sort();\n const selectedEntityIdsForCompare: ENTITY[KEY][] = [...selectedEntityIds].sort();\n\n if (!areArraysEqual(chosenListIdsForCompare, selectedEntityIdsForCompare)) {\n this.#selectedEntityIds.set([...chosenListIds]);\n this.#initialEntityIds.set([...chosenListIds]);\n }\n });\n\n /** Set list of selected entities ids for compare */\n effect(\n () => {\n const selectedEntityIds: Array<ENTITY[KEY]> = this.selectedEntities().map((entity: ENTITY) => {\n return entity[this.keyExp()];\n });\n\n if (!areArraysEqual(this.#selectedEntityIdsForCompare, selectedEntityIds) && this.#isFormInit) {\n this.#selectedEntityIdsForCompare = selectedEntityIds;\n this.#changeControlValue(selectedEntityIds);\n this.chosenEntities.set(untracked(() => this.selectedEntities()));\n this.selectionChangeAction.emit(untracked(() => this.selectedEntities()));\n } else if (!this.#isFormInit && this.#entities().length) {\n this.#selectedEntityIdsForCompare = selectedEntityIds;\n this.#isFormInit = true;\n }\n },\n { injector: this.#injector }\n );\n\n /** Set list of values */\n effect(\n () => {\n if (this.entities() && Array.isArray(this.entities())) {\n if (!areArraysEqual(this.entities(), this.#entities())) {\n this.#entities.set(this.entities());\n }\n }\n },\n { injector: this.#injector }\n );\n }\n\n // ––––––––––––– Value Accessor –––––––––––––––\n\n public writeValue(value: Array<ENTITY[KEY]>): void {\n if (Array.isArray(value)) {\n if (value.length) {\n this.#selectedEntityIds.set(value);\n this.#initialEntityIds.set(value);\n }\n }\n }\n\n public registerOnChange(fn: (value: Array<ENTITY[KEY]>) => void): void {\n this.#onChanged = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.#onTouched = fn;\n }\n\n public validate(): ValidationErrors | null {\n return this.form.valid ? null : { formInvalid: true };\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this.#onTouched = fn;\n }\n\n // ––––––––––––– Actions –––––––––––––––\n\n /** Show popup selector */\n public showSelectionControl(trigger: CdkOverlayOrigin): void {\n this.selectedOverlayTrigger = trigger;\n this.isSelectionControlShown.set(true);\n }\n\n /** Hide popup selector */\n public hideSelectionControl(): void {\n this.isSelectionControlShown.set(false);\n }\n\n /** Add entity to or delete entity from list of selected */\n public toggleEntity(keyValue: ENTITY[KEY]): void {\n const entity: Nullable<ENTITY> = this.entities().find((entity: ENTITY) => {\n return entity[this.keyExp()] === keyValue;\n });\n\n if (!entity) {\n return;\n }\n\n const isRemoveSelected: boolean = !!this.selectedEntities().find((selectedEntity: ENTITY) => {\n return selectedEntity[this.keyExp()] === keyValue;\n });\n\n if (isRemoveSelected) {\n this.#selectedEntityIds.update((selectedEntityIds: ENTITY[KEY][]) => {\n return selectedEntityIds.filter((id: ENTITY[KEY]) => {\n return id !== keyValue;\n });\n });\n } else {\n this.#selectedEntityIds.update((selectedEntityIds: ENTITY[KEY][]) => {\n return [...selectedEntityIds, entity[this.keyExp()]];\n });\n\n this.form.controls.autocompleteControl.setValue(null);\n this.hideSelectionControl();\n }\n }\n\n /** Clear list of selected entities ids */\n public clearList(): void {\n this.#selectedEntityIds.update((list: ENTITY[KEY][]) => {\n return list.filter((el: ENTITY[KEY]) => this.readonlyEntitiesKeys().includes(el));\n });\n }\n\n /** Reset list of selected entities ids to init value */\n public resetList(): void {\n this.#selectedEntityIds.set([...this.#initialEntityIds()]);\n this.resetAction.emit();\n }\n\n /** Proceed selected entities ids */\n public select(values: ENTITY[KEY][]): void {\n if (this.isSingleSelection()) {\n const entity: Nullable<ENTITY> = this.entities().find((entity: ENTITY) => {\n return entity[this.keyExp()] === values[0];\n });\n\n if (entity) {\n this.#selectedEntityIds.set([entity[this.keyExp()]]);\n this.hideSelectionControl();\n }\n } else {\n values.forEach((value: ENTITY[KEY]) => this.toggleEntity(value));\n }\n }\n\n /** Scroll action, needed for lazy load mode */\n public scroll(): void {\n this.scrollAction.emit();\n }\n\n /** Search action */\n public search(searchTerm: string): void {\n this.searchAction.emit(searchTerm);\n }\n\n /** Set temporary selection, needed for lazy load mode */\n public setTemporarySelection(values: ENTITY[]): void {\n this.temporarySelectAction.emit(values);\n }\n\n /** Proceed move items in list */\n public onDrop(event: CdkDragDrop<ENTITY[]>): void {\n const updatedList: ENTITY[] = untracked(() => this.selectedEntities());\n moveItemInArray(updatedList, event.previousIndex, event.currentIndex);\n this.#entities.set(updatedList);\n this.#selectedEntityIds.set(updatedList.map((el: ENTITY) => el[this.keyExp()]));\n }\n\n // ––––––––––––– Private Methods –––––––––––––––\n\n /** Emit change control action */\n #changeControlValue(selectedEntityIds: Array<ENTITY[KEY]>): void {\n if (Array.isArray(selectedEntityIds) && typeof this.#onChanged === 'function') {\n this.#onChanged(selectedEntityIds);\n }\n }\n}\n","<form [formGroup]=\"form\">\n <ng-container rtBlock=\"rtui-dynamic-selector\">\n @if (isNoDataPlaceholderShown()) {\n <rtui-dynamic-selector-placeholder\n description=\"There are no available items to choose\"\n icon=\"warning\"\n [isButtonShow]=\"false\"\n [isIconOutlined]=\"true\" />\n } @else {\n <rtui-dynamic-selector-selected-list\n [isMobile]=\"isMobile()\"\n [keyExp]=\"keyExp()\"\n [displayExp]=\"displayExp()\"\n [selectedEntities]=\"selectedEntities()\"\n [readonlyEntitiesKeys]=\"readonlyEntitiesKeys()\"\n [isListDraggable]=\"isListDraggable()\"\n [useNameBreaking]=\"useNameBreaking()\"\n [useTitleCase]=\"useTitleCase()\"\n [isDeleteButtonShown]=\"isDeleteButtonShown()\"\n (dropAction)=\"onDrop($event)\"\n (deleteFromSelectedAction)=\"toggleEntity($event)\">\n @if (additionalControlTpl()) {\n <ng-container *rtuiDynamicSelectorItemAdditionalControlDirective=\"let entity\">\n <ng-template *ngTemplateOutlet=\"additionalControlTpl() || null; context: { $implicit: entity }\" />\n </ng-container>\n }\n\n @if (itemTitleTpl()) {\n <ng-container *rtuiDynamicSelectorItemTitleDirective=\"let entity\">\n <ng-template *ngTemplateOutlet=\"itemTitleTpl() || null; context: { $implicit: entity }\" />\n </ng-container>\n }\n </rtui-dynamic-selector-selected-list>\n\n @if ((entitiesToSelect()?.length || !isLocalSearch()) && isSelectionAvailable()) {\n @if (isPlaceholderShown()) {\n <rtui-dynamic-selector-placeholder\n [icon]=\"placeholderIcon()\"\n [description]=\"placeholderDescription()\"\n [buttonTitle]=\"buttonTitle()\"\n [disabled]=\"disabled()\"\n [isIconOutlined]=\"isPlaceholderIconOutlined()\"\n (submitAction)=\"showSelectionControl($event)\" />\n } @else {\n <div rtElem=\"actions\">\n @if (isOpenPopupButtonShown() && this.entitiesToSelect()?.length) {\n <button\n #trigger=\"cdkOverlayOrigin\"\n cdkOverlayOrigin\n type=\"button\"\n class=\"c-button c-button--txt-base--size-sm\"\n [class.--disabled]=\"disabled()\"\n [disabled]=\"disabled()\"\n (click)=\"showSelectionControl(trigger)\">\n {{ buttonTitle() }}\n </button>\n }\n\n <ng-template [ngTemplateOutlet]=\"listActionsTpl\" />\n </div>\n }\n\n @if (selectedOverlayTrigger) {\n <ng-template\n rtEscapeKey\n cdkConnectedOverlay\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayOpen]=\"isSelectionControlShown()\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n [cdkConnectedOverlayOrigin]=\"selectedOverlayTrigger\"\n [cdkConnectedOverlayPositions]=\"connectedOverlayPositions\"\n (backdropClick)=\"hideSelectionControl()\"\n (escapeKeyAction)=\"hideSelectionControl()\">\n <rtui-multi-selector-popup\n [navigateButtonTitle]=\"navigateButtonTitle()\"\n [navigateLink]=\"navigateLink()\"\n [entitiesToSelect]=\"entitiesToSelect()\"\n [appearance]=\"appearance()\"\n [keyExp]=\"keyExp()\"\n [displayExp]=\"displayExp()\"\n [isMobile]=\"isMobile()\"\n [isSingleSelection]=\"isSingleSelection()\"\n [isSelectAllButtonShown]=\"isSelectAllButtonShown()\"\n [loading]=\"loading()\"\n [fetching]=\"fetching()\"\n [useNameBreaking]=\"useNameBreaking()\"\n [searchTerm]=\"searchTerm()\"\n [isLazyLoad]=\"isLazyLoad()\"\n [isLocalSearch]=\"isLocalSearch()\"\n [isMultiToggleShown]=\"isMultiToggleShown()\"\n (searchAction)=\"search($event)\"\n (scrollAction)=\"scroll()\"\n (temporarySelectAction)=\"setTemporarySelection($event)\"\n (closeAction)=\"hideSelectionControl()\"\n (submitAction)=\"select($event)\" />\n </ng-template>\n }\n } @else if (isSelectionAvailable()) {\n <div rtElem=\"actions\">\n <ng-template [ngTemplateOutlet]=\"listActionsTpl\" />\n </div>\n }\n }\n </ng-container>\n</form>\n\n<ng-template #listActionsTpl>\n <rtui-dynamic-selector-list-actions\n [isMobile]=\"isMobile()\"\n [disabled]=\"disabled()\"\n [isResetButtonDisabled]=\"isResetButtonDisabled()\"\n [isClearButtonDisabled]=\"isClearButtonDisabled()\"\n (resetAction)=\"resetList()\"\n (clearAction)=\"clearList()\" />\n</ng-template>\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n DestroyRef,\n Directive,\n forwardRef,\n inject,\n input,\n InputSignalWithTransform,\n model,\n ModelSignal,\n OnInit,\n Signal,\n signal,\n TemplateRef,\n untracked,\n WritableSignal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MatInput, MatLabel } from '@angular/material/input';\nimport { noop } from 'rxjs';\nimport { distinctUntilChanged, filter } from 'rxjs/operators';\n\nimport { BlockDirective, ElemDirective, Nullable } from '@rt-tools/core';\nimport { areArraysEqual, transformArrayInput, transformStringInput } from '@rt-tools/utils';\nimport {\n RtuiDynamicSelectorItemAdditionalControlDirective,\n RtuiDynamicSelectorListActionsComponent,\n RtuiDynamicSelectorPlaceholderComponent,\n RtuiDynamicSelectorSelectedListComponent,\n} from '../.';\nimport { RtuiDynamicSelectorsDirective } from '../dynamic-selectors-directive';\nimport { BooleanInput } from '@angular/cdk/coercion';\n\ninterface FormModel {\n control: FormControl<string[]>;\n controlForUi: FormControl<Nullable<string>>;\n}\n\n/** Directive for row actions located outside a row menu button */\n@Directive({\n selector: '[rtuiDynamicInputAdditionalControlDirective]',\n})\nexport class RtuiDynamicInputAdditionalControlDirective {}\n\n@Component({\n selector: 'rtui-dynamic-input',\n templateUrl: './rtui-dynamic-input.component.html',\n styleUrls: ['./rtui-dynamic-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n ReactiveFormsModule,\n\n // material\n MatFormField,\n MatLabel,\n MatInput,\n\n // directives\n BlockDirective,\n ElemDirective,\n RtuiDynamicSelectorItemAdditionalControlDirective,\n\n // components\n RtuiDynamicSelectorPlaceholderComponent,\n RtuiDynamicSelectorListActionsComponent,\n RtuiDynamicSelectorSelectedListComponent,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RtuiDynamicInputComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: RtuiDynamicInputComponent,\n multi: true,\n },\n ],\n})\nexport class RtuiDynamicInputComponent extends RtuiDynamicSelectorsDirective implements ControlValueAccessor, Validator, OnInit {\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n readonly #fb: FormBuilder = inject(FormBuilder);\n\n public form: FormGroup<FormModel> = this.#fb.group<FormModel>({\n control: this.#fb.nonNullable.control<string[]>([]),\n controlForUi: this.#fb.control<Nullable<string>>(null), // used only for UI\n });\n\n /** Indicates is placeholder shown */\n public isPlaceholderShown: ModelSignal<Nullable<boolean>> = model<Nullable<boolean>>(true);\n /** Indicates is inputs-editable */\n public isInputsEditable: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Input label */\n public inputLabel: InputSignalWithTransform<string, unknown> = input<string, unknown>('', {\n transform: transformStringInput,\n });\n /** Input placeholder */\n public inputPlaceholder: InputSignalWithTransform<string, unknown> = input<string, unknown>('', {\n transform: transformStringInput,\n });\n /** Entity keys that can't be changed */\n public readonlyEntitiesKeys: InputSignalWithTransform<string[], string[]> = input<string[], string[]>([], {\n transform: (value: string[]) => transformArrayInput(value),\n });\n\n /** Array of selected entities */\n public readonly selectedEntities: WritableSignal<Array<{ id: string }>> = signal([]);\n /** Indicates is input control shown */\n public readonly isInputControlShown: WritableSignal<boolean> = signal(false);\n /** Indicates the reset changes button is disabled */\n public readonly isResetButtonDisabled: WritableSignal<boolean> = signal(false);\n\n /** Initial entities */\n readonly #initialEntities: WritableSignal<string[]> = signal([]);\n\n /** Additional control for entity */\n public readonly additionalControlTpl: Signal<Nullable<TemplateRef<{ $implicit: string }>>> = contentChild(\n RtuiDynamicInputAdditionalControlDirective,\n {\n read: TemplateRef,\n }\n );\n\n #onTouched: () => void = noop;\n #onChanged: (value: string[]) => void = noop;\n\n public ngOnInit(): void {\n this.form.controls.control.valueChanges\n .pipe(\n filter((value: string[]) => Array.isArray(value) && typeof this.#onChanged === 'function'),\n distinctUntilChanged(),\n takeUntilDestroyed(this.#destroyRef)\n )\n .subscribe((value: string[]): void => {\n this.#onChanged(value);\n this.#setResetListButtonState(value);\n this.selectedEntities.set(value.map((el: string) => ({ id: el })));\n });\n\n this.form.controls.control.statusChanges\n .pipe(\n filter(() => typeof this.#onTouched === 'function'),\n takeUntilDestroyed(this.#destroyRef)\n )\n .subscribe((): void => {\n this.#onTouched();\n });\n }\n\n // ––––––––––––– Value Accessor –––––––––––––––\n\n public writeValue(value: string[]): void {\n if (Array.isArray(value)) {\n if (value.length) {\n this.hideSelectionControl();\n this.form.controls.control.setValue(value, { emitEvent: false });\n this.#initialEntities.set(value);\n this.selectedEntities.set(value.map((el: string) => ({ id: el })));\n this.#setResetListButtonState(value);\n } else {\n this.showSelectionControl();\n }\n }\n }\n\n public registerOnChange(fn: (value: string[]) => void): void {\n this.#onChanged = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.#onTouched = fn;\n }\n\n public validate(): ValidationErrors | null {\n return this.form.valid ? null : { formInvalid: true };\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this.#onTouched = fn;\n }\n\n // ––––––––––––– Actions –––––––––––––––\n\n /** Hide placeholder */\n public hidePlaceholder(): void {\n this.showSelectionControl();\n this.isPlaceholderShown.set(false);\n }\n\n /** Show control */\n public showSelectionControl(): void {\n this.isInputControlShown.set(true);\n }\n\n /** Hide control */\n public hideSelectionControl(): void {\n this.isInputControlShown.set(false);\n }\n\n /** Clear list of selected entities ids */\n public clearList(): void {\n this.form.controls.control.setValue([]);\n }\n\n /** Reset a list of selected entities ids to init value */\n public resetList(): void {\n this.form.controls.control.setValue(this.#initialEntities());\n this.hideSelectionControl();\n }\n\n /** Add or delete entity */\n public toggleEntity(keyValue: string): void {\n if (keyValue) {\n const selectedEntityIds: string[] = this.form.value.control || [];\n\n if (selectedEntityIds.includes(keyValue)) {\n this.form.controls.control.setValue(selectedEntityIds.filter((id: string) => id !== keyValue));\n } else {\n this.form.controls.control.setValue([...selectedEntityIds, keyValue]);\n }\n }\n }\n\n /** Change entity value */\n public changeEntity(data: { prev: string; new: string }): void {\n this.form.controls.control.setValue(this.form.controls.control.value.map((el: string) => (el === data.prev ? data.new : el)));\n }\n\n /** Add new item */\n public onAddEntity(): void {\n if (this.form.controls.controlForUi.value && this.form.controls.control.value.includes(this.form.controls.controlForUi.value)) {\n this.form.controls.controlForUi.setValue(null);\n this.hideSelectionControl();\n } else if (this.form.controls.controlForUi.value) {\n this.toggleEntity(this.form.controls.controlForUi.value);\n this.form.controls.controlForUi.setValue(null);\n this.hideSelectionControl();\n }\n }\n\n /** Process move items in a list */\n public onDrop(event: CdkDragDrop<Array<{ id: string }>>): void {\n const updatedList: Array<{ id: string }> = untracked(() => this.selectedEntities());\n moveItemInArray(updatedList, event.previousIndex, event.currentIndex);\n this.form.controls.control.patchValue(updatedList.map((el: { id: string }) => el.id));\n }\n\n /** Set the reset list button state */\n #setResetListButtonState(value: string[]): void {\n this.isResetButtonDisabled.set(areArraysEqual(this.#initialEntities(), value));\n }\n}\n","<form [formGroup]=\"form\">\n <ng-container rtBlock=\"rtui-dynamic-selector\">\n @if (isPlaceholderShown()) {\n <rtui-dynamic-selector-placeholder\n [icon]=\"placeholderIcon()\"\n [description]=\"placeholderDescription()\"\n [buttonTitle]=\"buttonTitle()\"\n [isIconOutlined]=\"isPlaceholderIconOutlined()\"\n (submitAction)=\"hidePlaceholder()\" />\n } @else {\n <rtui-dynamic-selector-selected-list\n keyExp=\"id\"\n displayExp=\"id\"\n [appearance]=\"appearance()\"\n [isMobile]=\"isMobile()\"\n [selectedEntities]=\"selectedEntities()\"\n [readonlyEntitiesKeys]=\"readonlyEntitiesKeys()\"\n [isListDraggable]=\"isListDraggable()\"\n [useNameBreaking]=\"useNameBreaking()\"\n [isDeleteButtonShown]=\"isDeleteButtonShown()\"\n [isItemsEditable]=\"isInputsEditable()\"\n (changeValueAction)=\"changeEntity($event)\"\n (dropAction)=\"onDrop($event)\"\n (deleteFromSelectedAction)=\"toggleEntity($event)\">\n @if (additionalControlTpl()) {\n <ng-container *rtuiDynamicSelectorItemAdditionalControlDirective=\"let entity\">\n <ng-template *ngTemplateOutlet=\"additionalControlTpl() || null; context: { $implicit: entity }\" />\n </ng-container>\n }\n </rtui-dynamic-selector-selected-list>\n\n @if (isInputControlShown()) {\n <mat-form-field [appearance]=\"appearance()\" [style.width.%]=\"100\">\n <mat-label>{{ inputLabel() }}</mat-label>\n\n <input\n matInput\n type=\"text\"\n formControlName=\"controlForUi\"\n [placeholder]=\"inputPlaceholder()\"\n (keydown.enter)=\"onAddEntity()\"\n (focusout)=\"onAddEntity()\" />\n </mat-form-field>\n }\n\n <div rtElem=\"actions\">\n @if (!isInputControlShown() && !isSingleSelection()) {\n <button type=\"button\" class=\"c-button c-button--txt-base--size-sm\" (click)=\"showSelectionControl()\">\n {{ buttonTitle() }}\n </button>\n }\n\n <rtui-dynamic-selector-list-actions\n [isMobile]=\"isMobile()\"\n [isResetButtonDisabled]=\"isResetButtonDisabled()\"\n [isClearButtonDisabled]=\"!form.controls.control.value?.length\"\n (resetAction)=\"resetList()\"\n (clearAction)=\"clearList()\" />\n </div>\n }\n </ng-container>\n</form>\n","import { ChangeDetectionStrategy, Component, computed, DestroyRef, inject, OnInit, Signal, signal, WritableSignal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nimport { BlockDirective, ElemDirective, Nullable } from '@rt-tools/core';\nimport { areArraysEqual, BreakpointService, RtIconOutlinedDirective } from '@rt-tools/utils';\nimport { ASIDE_REF, AsideRef } from '../../../aside/aside.types';\nimport { RtuiAsideContainerComponent, RtuiAsideContainerHeaderDirective } from '../../../aside';\nimport { RtuiDynamicSelectorAdditionalControlDirective, RtuiDynamicSelectorComponent } from '../../../dynamic-selectors';\nimport { RtuiToggleComponent } from '../../../toggle';\nimport { ITable } from '../../util';\n\n@Component({\n selector: 'rtui-test-aside',\n templateUrl: './rt-table-config-aside.component.html',\n styleUrls: ['./rt-table-config-aside.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ReactiveFormsModule,\n MatTooltip,\n MatIcon,\n MatIconButton,\n\n // directives\n BlockDirective,\n ElemDirective,\n RtuiAsideContainerHeaderDirective,\n RtuiDynamicSelectorAdditionalControlDirective,\n RtIconOutlinedDirective,\n\n // standalone components\n RtuiAsideContainerComponent,\n RtuiDynamicSelectorComponent,\n RtuiToggleComponent,\n ],\n providers: [BreakpointService],\n})\nexport class RtTableConfigAsideComponent<ENTITY_TYPE> implements OnInit {\n readonly #breakpointService: BreakpointService = inject(BreakpointService);\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n readonly #fb: FormBuilder = inject(FormBuilder);\n\n public form: FormGroup<ITable.Config.Form<ENTITY_TYPE>> = this.#fb.group({\n isVerticalScrollbarShown: this.#fb.nonNullable.control<boolean>(false),\n isHorizontalScrollbarShown: this.#fb.nonNullable.control<boolean>(false),\n columns: this.#fb.nonNullable.control<(keyof ENTITY_TYPE)[]>([]),\n });\n\n public readonly asideRef: AsideRef<ITable.Config.Data<ENTITY_TYPE>, ITable.Config.Data<ENTITY_TYPE>> = inject(ASIDE_REF) as AsideRef<\n ITable.Config.Data<ENTITY_TYPE>,\n ITable.Config.Data<ENTITY_TYPE>\n >;\n\n public readonly selectedColumns: WritableSignal<ITable.Column<ENTITY_TYPE>[]> = signal(this.asideRef.data.columns);\n public readonly isMobile: Signal<boolean> = computed(() => {\n return !!this.#breakpointService.isMobile();\n });\n public readonly isVisibilityChanged: Signal<boolean> = computed(() => {\n const initValues: (keyof ENTITY_TYPE)[] = this.asideRef.data.columns\n .filter((el: ITable.Column<ENTITY_TYPE>) => el.hidden)\n .map((el: ITable.Column<ENTITY_TYPE>) => el.propName);\n const currentValues: (keyof ENTITY_TYPE)[] = this.selectedColumns()\n .filter((el: ITable.Column<ENTITY_TYPE>) => el.hidden)\n .map((el: ITable.Column<ENTITY_TYPE>) => el.propName);\n return !areArraysEqual(initValues.sort(), currentValues.sort());\n });\n public readonly isOrderChanged: Signal<boolean> = computed(() => {\n const initValues: (keyof ENTITY_TYPE)[] = this.asideRef.data.columns.map((el: ITable.Column<ENTITY_TYPE>) => el.propName);\n const currentValues: (keyof ENTITY_TYPE)[] = this.selectedColumns().map((el: ITable.Column<ENTITY_TYPE>) => el.propName);\n return !areArraysEqual(initValues, currentValues);\n });\n\n public ngOnInit(): void {\n this.form.patchValue(\n {\n isVerticalScrollbarShown: this.asideRef.data?.isVerticalScrollbarShown,\n isHorizontalScrollbarShown: this.asideRef.data?.isHorizontalScrollbarShown,\n columns: this.asideRef.data.columns.map((el: ITable.Column<ENTITY_TYPE>) => el.propName),\n },\n { emitEvent: false }\n );\n this.form.valueChanges.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe(\n (\n value: Partial<{\n isVerticalScrollbarShown: boolean;\n isHorizontalScrollbarShown: boolean;\n columns: (keyof ENTITY_TYPE)[];\n }>\n ) => {\n const updatedList: (ITable.Column<ENTITY_TYPE> & { orderIndex: number })[] = [];\n value?.columns?.forEach((item: keyof ENTITY_TYPE, index: number) => {\n const currentItem: Nullable<ITable.Column<ENTITY_TYPE>> = this.selectedColumns().find(\n (el: ITable.Column<ENTITY_TYPE>) => el.propName === item\n );\n if (currentItem) {\n updatedList.push({ ...currentItem, orderIndex: index });\n }\n });\n this.selectedColumns.set(\n updatedList.sort(\n (a: ITable.Column<ENTITY_TYPE> & { orderIndex: number }, b: ITable.Column<ENTITY_TYPE> & { orderIndex: number }) =>\n a.orderIndex - b.orderIndex\n )\n );\n }\n );\n }\n\n public save(): void {\n this.asideRef.close({\n isVerticalScrollbarShown: this.form.controls.isVerticalScrollbarShown.value,\n isHorizontalScrollbarShown: this.form.controls.isHorizontalScrollbarShown.value,\n columns: this.selectedColumns(),\n });\n }\n\n public cancel(): void {\n this.asideRef.close();\n }\n\n public visibilityChange(entity: ITable.Column<ENTITY_TYPE>): void {\n this.selectedColumns.update((list: ITable.Column<ENTITY_TYPE>[]) => {\n return list.map((el: ITable.Column<ENTITY_TYPE>) => {\n return entity.propName === el.propName ? { ...el, hidden: !el.hidden } : el;\n });\n });\n }\n}\n","<rtui-aside-container\n [isMobile]=\"isMobile()\"\n [pending]=\"false\"\n [isSubmitButtonDisabled]=\"!isVisibilityChanged() && !isOrderChanged() && !form.dirty\"\n (submitAction)=\"save()\"\n (cancelAction)=\"cancel()\">\n <ng-container *rtuiAsideHeader rtBlock=\"c-aside-title\">\n <div rtElem=\"txt\">Edit table configuration</div>\n <div rtElem=\"addition\">Change columns visibility and order, show(hide) scrollbar</div>\n </ng-container>\n <form rtBlock=\"c-form\" [formGroup]=\"form\">\n <div rtElem=\"item\">\n <div rtElem=\"controls\">\n <!-- Vertical scrollbar -->\n <div rtElem=\"control-item\">\n <rtui-toggle formControlName=\"isVerticalScrollbarShown\" label=\"Vertical scrollbar shown\" />\n </div>\n </div>\n\n <div rtElem=\"controls\">\n <!-- Horizontal scrollbar -->\n <div rtElem=\"control-item\">\n <rtui-toggle formControlName=\"isHorizontalScrollbarShown\" label=\"Horizontal scrollbar shown\" />\n </div>\n </div>\n\n <div rtElem=\"controls\">\n <!-- Columns config -->\n <div rtElem=\"control-item\">\n <rtui-dynamic-selector\n keyExp=\"propName\"\n displayExp=\"displayName\"\n formControlName=\"columns\"\n [entities]=\"selectedColumns()\"\n [isMobile]=\"isMobile()\"\n [useNameBreaking]=\"true\"\n [useTitleCase]=\"true\"\n [isSelectionAvailable]=\"false\"\n [isDeleteButtonShown]=\"false\"\n [isListDraggable]=\"true\">\n <ng-container *rtuiDynamicSelectorAdditionalControlDirective=\"let entity\" rtBlock=\"rtui-dynamic-selector\">\n <div rtElem=\"item-control\">\n <button\n mat-icon-button\n type=\"button\"\n aria-label=\"Icon-button for visibility indication\"\n rtElem=\"item-control-button\"\n matTooltip=\"{{ entity.hidden ? 'Hidden, click to show' : 'Shown, click to hide' }}\"\n matTooltipPosition=\"left\"\n [matTooltipDisabled]=\"isMobile()\"\n (click)=\"visibilityChange(entity)\">\n <mat-icon [rtIconOutlined]=\"true\">\n {{ entity.hidden ? 'visibility_off' : 'visibility' }}\n </mat-icon>\n </button>\n </div>\n </ng-container>\n </rtui-dynamic-selector>\n </div>\n </div>\n </div>\n </form>\n</rtui-aside-container>\n","import { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n DestroyRef,\n Directive,\n effect,\n inject,\n Injector,\n input,\n InputSignal,\n InputSignalWithTransform,\n OnInit,\n output,\n OutputEmitterRef,\n Signal,\n signal,\n TemplateRef,\n Type,\n WritableSignal,\n} from '@angular/core';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatMiniFabButton } from '@angular/material/button';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatFormField, MatFormFieldAppearance, MatPrefix, MatSuffix } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatInput } from '@angular/material/input';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { debounceTime, distinctUntilChanged, filter, map } from 'rxjs/operators';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable, PlatformService, WINDOW } from '@rt-tools/core';\nimport { BreakpointService, isString, PageModel, RtIconOutlinedDirective, transformStringInput } from '@rt-tools/utils';\nimport { RtAsideService } from '../../../aside';\nimport { RtuiHeaderCenterDirective } from '../../../header';\nimport {\n RtuiScrollableContainerComponent,\n RtuiScrollableContainerContentDirective,\n RtuiScrollableContainerHeaderDirective,\n} from '../../../scrollable';\nimport { RtuiSpinnerComponent } from '../../../spinner';\nimport { RtuiToolbarComponent, RtuiToolbarLeftDirective, RtuiToolbarRightDirective } from '../../../toolbar';\nimport { ITable, RtTableConfigService } from '../../util';\nimport { RtuiClearButtonComponent } from '../clear-search-button/rtui-clear-button.component';\nimport { RtuiPaginationComponent } from '../pagination-view/rtui-pagination.component';\nimport { RtTableConfigAsideComponent } from '../table-config-aside/rt-table-config-aside.component';\n\n@Directive({\n selector: '[rtuiTableToolbarSelectorsDirective]',\n})\nexport class RtuiTableToolbarSelectorsDirective {}\n\n@Directive({\n selector: '[rtuiTableToolbarActionsDirective]',\n})\nexport class RtuiTableToolbarActionsDirective {}\n\n@Component({\n selector: 'rtui-table-container',\n templateUrl: './table-container.component.html',\n styleUrls: ['./table-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ReactiveFormsModule,\n NgTemplateOutlet,\n\n // Material\n MatIcon,\n MatFormField,\n MatInput,\n MatPrefix,\n MatSuffix,\n MatMiniFabButton,\n MatTooltip,\n MatCheckbox,\n\n // Standalone components\n RtuiPaginationComponent,\n RtuiClearButtonComponent,\n RtuiToolbarComponent,\n RtuiScrollableContainerComponent,\n RtuiSpinnerComponent,\n\n // Bem\n BlockDirective,\n ElemDirective,\n ModDirective,\n\n // Directives\n RtuiToolbarRightDirective,\n RtuiHeaderCenterDirective,\n RtuiScrollableContainerContentDirective,\n RtuiScrollableContainerHeaderDirective,\n RtIconOutlinedDirective,\n RtuiToolbarLeftDirective,\n ],\n providers: [BreakpointService, RtAsideService, PlatformService],\n})\nexport class RtuiTableContainerComponent<ENTITY_TYPE> implements OnInit {\n readonly #documentRef: Document = inject(DOCUMENT);\n readonly #windowRef: Window = inject(WINDOW);\n readonly #platformService: PlatformService = inject(PlatformService);\n readonly #sanitizer: DomSanitizer = inject(DomSanitizer);\n readonly #injector: Injector = inject(Injector);\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n readonly #breakpointService: BreakpointService = inject(BreakpointService);\n readonly #asideService: RtAsideService = inject(RtAsideService);\n readonly #tableConfigService: RtTableConfigService<ENTITY_TYPE> = inject(RtTableConfigService);\n\n readonly #style: Nullable<CSSStyleDeclaration> = this.#documentRef?.documentElement?.style;\n\n public appearance: InputSignal<MatFormFieldAppearance> = input.required();\n /** Table config storage key */\n public tableConfigStorageKey: InputSignalWithTransform<string, string> = input.required<string, string>({\n transform: transformStringInput,\n });\n /** Current page model from store */\n public pageModel: InputSignal<PageModel> = input.required();\n /** Indicates is mobile view */\n public isMobile: InputSignalWithTransform<boolean, BooleanInput> = input.required<boolean, BooleanInput>({\n transform: booleanAttribute,\n });\n /** Indicates is loading in progress */\n public loading: InputSignalWithTransform<boolean, BooleanInput> = input.required<boolean, BooleanInput>({\n transform: booleanAttribute,\n });\n /** Indicates is fetching in progress */\n public fetching: InputSignalWithTransform<boolean, BooleanInput> = input.required<boolean, BooleanInput>({\n transform: booleanAttribute,\n });\n /** Indicates is placeholder shown */\n public isPlaceholderShown: InputSignalWithTransform<boolean, BooleanInput> = input.required<boolean, BooleanInput>({\n transform: booleanAttribute,\n });\n /** Indicates is pagination shown */\n public isPaginationShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is the refresh button shown */\n public isRefreshButtonShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is a table config button shown */\n public isTableConfigButtonShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is toolbar buttons outlined */\n public isToolbarActionsIconsOutlined: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is filters shown */\n public isFiltersShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is filters empty */\n public isFiltersEmpty: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Current search term from store */\n public searchTerm: InputSignalWithTransform<Nullable<string>, Nullable<string>> = input<Nullable<string>, Nullable<string>>('', {\n transform: (value: Nullable<string>) => (isString(value) ? value.trim() : ''),\n });\n\n /** Current placeholder icon */\n public placeholderIcon: InputSignal<string> = input<string>('search');\n /** Current placeholder title */\n public placeholderTitle: InputSignal<string> = input<string>('No Data Found');\n\n /** Indicates is a small tablet view */\n public readonly isSmallTablet: Signal<Nullable<boolean>> = this.#breakpointService.isSmallTablet;\n /** Config for table */\n public readonly tableConfig: Signal<ITable.Config.Data<ENTITY_TYPE>> = this.#tableConfigService.tableConfig;\n\n /** Page model change output action */\n public readonly pageModelChange: OutputEmitterRef<Partial<PageModel>> = output<Partial<PageModel>>();\n /** Search change output action */\n public readonly searchChange: OutputEmitterRef<Nullable<string>> = output<Nullable<string>>();\n /** Refresh output action */\n public readonly refreshAction: OutputEmitterRef<void> = output<void>();\n /** Clear filters output action */\n public readonly clearFiltersAction: OutputEmitterRef<void> = output<void>();\n\n /** Toolbar selectors template */\n public readonly toolbarSelectorsTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiTableToolbarSelectorsDirective, {\n read: TemplateRef,\n });\n /** Toolbar actions template */\n public readonly toolbarActionsTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiTableToolbarActionsDirective, {\n read: TemplateRef,\n });\n\n /** Fields specified by the directive */\n /** Indicates is multiselect mod enabled */\n public readonly isMultiSelect: WritableSignal<boolean> = signal(false);\n /** Indicates is 'Select All' selector shown */\n public readonly isSelectAllSelectorShown: WritableSignal<boolean> = signal(true);\n /** Indicates is 'Select All' selector disabled */\n public readonly isSelectAllSelectorDisabled: WritableSignal<boolean> = signal(false);\n /** Indicates is all entities selected */\n public readonly isAllEntitiesSelected: WritableSignal<boolean> = signal(false);\n /** Indicates is all entities indeterminate */\n public readonly isAllEntitiesIndeterminate: WritableSignal<boolean> = signal(false);\n /** Current selected entities count */\n public readonly selectedEntitiesCount: WritableSignal<number> = signal(0);\n\n /** Control for search */\n public readonly searchControl: FormControl<Nullable<string>> = new FormControl(null);\n\n public ngOnInit(): void {\n /** Set scrollbar initial styles by config */\n effect(\n () => {\n if (this.tableConfig().columns.length) {\n this.#setScrollbarsVisibility();\n }\n },\n { injector: this.#injector }\n );\n\n this.searchControl.patchValue(this.searchTerm(), { emitEvent: false });\n\n this.searchControl.valueChanges\n .pipe(\n debounceTime(500),\n distinctUntilChanged(),\n map((value: Nullable<string>) => (!!value ? value.trim() : value)),\n takeUntilDestroyed(this.#destroyRef)\n )\n .subscribe((value: Nullable<string>) => {\n if (value !== null) {\n this.searchChange.emit(value);\n }\n });\n }\n\n /** Page model change output action */\n public onPageModelChange(pageModel: Partial<PageModel>): void {\n this.pageModelChange.emit(pageModel);\n }\n\n /** Clear search control and search change output action */\n public onClearSearch(): void {\n this.searchControl.patchValue(null);\n this.searchChange.emit('');\n }\n\n /** Refresh output action */\n public onRefresh(): void {\n if (!this.isPaginationShown()) {\n this.onClearSearch();\n }\n\n this.refreshAction.emit();\n }\n\n /** Clear filters output action */\n public onClearFilters(): void {\n this.clearFiltersAction.emit();\n }\n\n /** Open table config aside */\n public onOpenConfigAside(): void {\n this.#asideService\n .Open<RtTableConfigAsideComponent<ENTITY_TYPE>, ITable.Config.Data<ENTITY_TYPE>, ITable.Config.Data<ENTITY_TYPE>>(\n RtTableConfigAsideComponent,\n 'right',\n this.tableConfig()\n )\n .pipe(filter(Boolean), takeUntilDestroyed(this.#destroyRef))\n .subscribe((value: ITable.Config.Data<ENTITY_TYPE>) => {\n /** Save updated table config */\n this.#tableConfigService.updateConfig(this.tableConfigStorageKey(), value);\n this.#setScrollbarsVisibility();\n });\n }\n\n /** Empty method, set in selectors directive */\n public onToggleAllEntities: (checked: boolean) => void = (): void => {\n return;\n };\n\n /** Set scrollbar styles by config */\n #setScrollbarsVisibility(): void {\n const vertical: string = this.tableConfig().isVerticalScrollbarShown ? '12px' : '0';\n const horizontal: string = this.tableConfig().isHorizontalScrollbarShown ? '12px' : '0';\n\n if (this.#platformService?.isPlatformBrowser && this.#windowRef && this.#style) {\n const safeVerticalValue: Nullable<string> = this.#sanitizer.sanitize(0, vertical);\n const safeHorizontalValue: Nullable<string> = this.#sanitizer.sanitize(0, horizontal);\n this.#style.setProperty('--rt-table-container-content-scrollbar-vertical-width', safeVerticalValue);\n this.#style.setProperty('--rt-table-container-content-scrollbar-horizontal-height', safeHorizontalValue);\n }\n }\n}\n","@if (loading()) {\n <rtui-spinner />\n} @else {\n @if (fetching()) {\n <rtui-spinner [showBackground]=\"true\" />\n }\n <ng-container rtBlock=\"table-container\">\n <rtui-scrollable>\n <ng-container *rtuiScrollableHeader>\n <rtui-toolbar>\n @if (isSmallTablet() && !isPlaceholderShown() && (isMultiSelect() || toolbarSelectorsTpl())) {\n <ng-container *rtuiToolbarLeft>\n <ng-template *ngTemplateOutlet=\"selectorsTpl\" />\n </ng-container>\n }\n\n <ng-container *rtuiToolbarRight>\n <div rtElem=\"toolbar\">\n <div rtElem=\"toolbar-actions\" [rtMod]=\"{ end: isMultiSelect() ?? toolbarSelectorsTpl() }\">\n @if (!isSmallTablet() && !isPlaceholderShown() && (isMultiSelect() || toolbarSelectorsTpl())) {\n <ng-template *ngTemplateOutlet=\"selectorsTpl\" />\n }\n\n @if (toolbarActionsTpl()) {\n <ng-template *ngTemplateOutlet=\"toolbarActionsTpl() ?? null\" />\n\n <div rtElem=\"toolbar-actions-divider\"></div>\n }\n\n @if (isFiltersShown()) {\n <button\n mat-mini-fab\n type=\"button\"\n aria-label=\"Icon-button for clear filters\"\n class=\"c-button c-button--fab\"\n matTooltip=\"Clear filters\"\n matTooltipPosition=\"below\"\n [matTooltipDisabled]=\"isMobile()\"\n [disabled]=\"isFiltersEmpty()\"\n (click)=\"onClearFilters()\">\n <mat-icon [rtIconOutlined]=\"isToolbarActionsIconsOutlined()\">block</mat-icon>\n </button>\n }\n\n @if (isRefreshButtonShown()) {\n <button\n mat-mini-fab\n type=\"button\"\n aria-label=\"Icon-button for table refresh\"\n class=\"c-button c-button--fab\"\n matTooltip=\"Refresh\"\n matTooltipPosition=\"below\"\n [matTooltipDisabled]=\"isMobile()\"\n (click)=\"onRefresh()\">\n <mat-icon [rtIconOutlined]=\"isToolbarActionsIconsOutlined()\">sync</mat-icon>\n </button>\n }\n\n @if (isTableConfigButtonShown()) {\n <button\n mat-mini-fab\n type=\"button\"\n aria-label=\"Icon-button for table config\"\n class=\"c-button c-button--fab\"\n matTooltip=\"Table configuration\"\n matTooltipPosition=\"below\"\n [matTooltipDisabled]=\"isMobile()\"\n (click)=\"onOpenConfigAside()\">\n <mat-icon [rtIconOutlined]=\"isToolbarActionsIconsOutlined()\">view_column</mat-icon>\n </button>\n }\n </div>\n\n @if ((isPlaceholderShown() && searchControl.value) || !isPlaceholderShown() || searchControl.dirty) {\n <div rtElem=\"toolbar-search\">\n <mat-form-field subscriptSizing=\"dynamic\" [appearance]=\"appearance()\" [style.width.%]=\"100\">\n <input matInput placeholder=\"Search...\" type=\"text\" [formControl]=\"searchControl\" />\n\n <mat-icon matPrefix [rtIconOutlined]=\"true\">search</mat-icon>\n\n <rtui-clear-button\n matSuffix\n [isButtonShown]=\"!!searchControl.value\"\n (clickAction)=\"onClearSearch()\" />\n </mat-form-field>\n </div>\n }\n </div>\n </ng-container>\n </rtui-toolbar>\n </ng-container>\n\n <ng-container *rtuiScrollableContent>\n @if (!isPlaceholderShown() || pageModel()?.totalCount) {\n <div rtElem=\"content\">\n <ng-content />\n </div>\n\n @if (isPaginationShown()) {\n <div rtElem=\"pagination\">\n <rtui-pagination\n [isMobile]=\"!!isMobile()\"\n [currentPageModel]=\"pageModel()\"\n (pageModelChange)=\"onPageModelChange($event)\" />\n </div>\n }\n } @else {\n <div rtElem=\"placeholder\">\n <mat-icon rtElem=\"placeholder-icon\" [rtIconOutlined]=\"true\">{{ placeholderIcon() }}</mat-icon>\n\n <div rtElem=\"placeholder-title\">{{ placeholderTitle() }}</div>\n </div>\n }\n </ng-container>\n </rtui-scrollable>\n\n <ng-template #selectorsTpl>\n <div rtElem=\"selectors\">\n @if (isMultiSelect()) {\n @if (isSelectAllSelectorShown()) {\n <mat-checkbox\n [checked]=\"isAllEntitiesSelected()\"\n [indeterminate]=\"!isAllEntitiesSelected() && isAllEntitiesIndeterminate()\"\n [disabled]=\"isSelectAllSelectorDisabled()\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"onToggleAllEntities($event.checked)\">\n <div rtElem=\"selectors-label\">Select all</div>\n </mat-checkbox>\n } @else {\n <div rtElem=\"selectors-counter\">Selected: {{ selectedEntitiesCount() }}</div>\n }\n }\n\n @if (toolbarSelectorsTpl()) {\n <ng-template *ngTemplateOutlet=\"toolbarSelectorsTpl() ?? null\" />\n }\n </div>\n </ng-template>\n </ng-container>\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n Directive,\n input,\n InputSignal,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n Signal,\n TemplateRef,\n Type,\n viewChild,\n} from '@angular/core';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { Nullable } from '@rt-tools/core';\nimport { FilterModel, PageModel, SortModel, transformArrayInput, transformStringInput } from '@rt-tools/utils';\nimport {\n RtuiCustomTableCellsDirective,\n RtuiTableAdditionalRowActionsDirective,\n RtuiTableComponent,\n RtuiTableRowActionsDirective,\n} from './components';\nimport {\n RtuiTableContainerComponent,\n RtuiTableToolbarActionsDirective,\n RtuiTableToolbarSelectorsDirective,\n} from './components/table-container/table-container.component';\nimport { BooleanInput } from '@angular/cdk/coercion';\n\n/** Directive for selectors of the toolbar located on the left side */\n@Directive({\n selector: '[rtuiDynamicListToolbarSelectorsDirective]',\n})\nexport class RtuiDynamicListToolbarSelectorsDirective {}\n\n/** Directive for actions of the toolbar located on the right side */\n@Directive({\n selector: '[rtuiDynamicListToolbarActionsDirective]',\n})\nexport class RtuiDynamicListToolbarActionsDirective {}\n\n/** Directive for custom table cells */\n@Directive({\n selector: '[rtuiDynamicListCustomTableCellsDirective]',\n})\nexport class RtuiDynamicListCustomTableCellsDirective<ENTITY_TYPE> {\n public cellsTemplates: InputSignal<{ [K in keyof ENTITY_TYPE]: TemplateRef<{ $implicit: ENTITY_TYPE }> }> = input.required({\n alias: 'rtuiDynamicListCustomTableCellsDirective',\n });\n}\n\n/** Directive for row actions located inside a row menu button */\n@Directive({\n selector: '[rtuiDynamicListRowActionsDirective]',\n})\nexport class RtuiDynamicListRowActionsDirective {}\n\n/** Directive for row actions located outside a row menu button */\n@Directive({\n selector: '[rtuiDynamicListRowAdditionalActionsDirective]',\n})\nexport class RtuiDynamicListRowAdditionalActionsDirective {}\n\n@Component({\n selector: 'rtui-dynamic-list',\n templateUrl: './dynamic-list.component.html',\n styleUrls: ['./dynamic-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n\n // Directives\n RtuiTableToolbarActionsDirective,\n RtuiTableRowActionsDirective,\n RtuiTableToolbarSelectorsDirective,\n RtuiTableAdditionalRowActionsDirective,\n\n // Ui-kit\n RtuiTableContainerComponent,\n RtuiTableComponent,\n RtuiCustomTableCellsDirective,\n ],\n})\nexport class RtuiDynamicListComponent<\n ENTITY_TYPE extends Record<string, unknown>,\n SORT_PROPERTY extends Extract<keyof ENTITY_TYPE, string>,\n KEY extends Extract<keyof ENTITY_TYPE, string>,\n> {\n /** Table config storage key */\n public tableConfigStorageKey: InputSignalWithTransform<string, unknown> = input.required<string, unknown>({\n transform: transformStringInput,\n });\n /** Indicates is mobile view */\n public isMobile: InputSignalWithTransform<Nullable<boolean>, BooleanInput> = input<Nullable<boolean>, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is loading in progress */\n public loading: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is fetching in progress */\n public fetching: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates are table rows clickable */\n public isTableRowsClickable: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n /** Indicates is pagination shown */\n public isPaginationShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is the refresh button shown */\n public isRefreshButtonShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is a table config button shown */\n public isTableConfigButtonShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Indicates is toolbar buttons outlined */\n public isToolbarActionsIconsOutlined: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n /** Key of ENTITY_TYPE for compare entities */\n public keyExp: InputSignal<NonNullable<KEY>> = input('id' as NonNullable<KEY>);\n /** List of entities */\n public entities: InputSignalWithTransform<ENTITY_TYPE[], ENTITY_TYPE[]> = input.required<ENTITY_TYPE[], ENTITY_TYPE[]>({\n transform: (value: ENTITY_TYPE[]) => transformArrayInput(value),\n });\n\n /** Current page model from store */\n public pageModel: InputSignal<PageModel> = input.required();\n /** Current search term from store */\n public searchTerm: InputSignal<Nullable<string>> = input.required();\n /** Current sort model from store */\n public currentSortModel: InputSignal<Nullable<SortModel<NonNullable<KEY>>>> = input.required();\n /** Inputs appearance */\n public appearance: InputSignal<MatFormFieldAppearance> = input.required({\n transform: (value: MatFormFieldAppearance) => (value === 'fill' ? 'fill' : 'outline'),\n });\n /** Filter inputs appearance */\n public filterAppearance: InputSignal<MatFormFieldAppearance> = input<MatFormFieldAppearance>('outline');\n /** Current filter model from store */\n public filterModel: InputSignalWithTransform<FilterModel<KEY>[], FilterModel<KEY>[]> = input<FilterModel<KEY>[], FilterModel<KEY>[]>(\n [],\n {\n transform: (value: FilterModel<KEY>[]) => transformArrayInput(value),\n }\n );\n /** Indicates is filters shown */\n public isFiltersShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** Sort model change output action */\n public readonly sortChange: OutputEmitterRef<SortModel<NonNullable<KEY>>> = output<SortModel<NonNullable<KEY>>>();\n /** Page model change output action */\n public readonly pageModelChange: OutputEmitterRef<Partial<PageModel>> = output<Partial<PageModel>>();\n /** Search change output action */\n public readonly searchChange: OutputEmitterRef<Nullable<string>> = output<Nullable<string>>();\n /** Refresh output action */\n public readonly refresh: OutputEmitterRef<void> = output<void>();\n /** Clear filters output action */\n public readonly clearFiltersAction: OutputEmitterRef<void> = output<void>();\n /** Row click output action */\n public readonly rowClick: OutputEmitterRef<NonNullable<{ row: ENTITY_TYPE; event: MouseEvent }>> =\n output<NonNullable<{ row: ENTITY_TYPE; event: MouseEvent }>>();\n /** Row doubleClick output action */\n public readonly rowDoubleClick: OutputEmitterRef<NonNullable<ENTITY_TYPE>> = output<NonNullable<ENTITY_TYPE>>();\n /** Filter change output action */\n public readonly filterChange: OutputEmitterRef<FilterModel<KEY>[]> = output<FilterModel<KEY>[]>();\n\n /** Toolbar selectors template */\n public readonly toolbarSelectorsTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(\n RtuiDynamicListToolbarSelectorsDirective,\n {\n read: TemplateRef,\n }\n );\n /** Toolbar actions template */\n public readonly toolbarActionsTpl: Signal<Nullable<TemplateRef<Type<unknown>>>> = contentChild(RtuiDynamicListToolbarActionsDirective, {\n read: TemplateRef,\n });\n /** Custom cells template */\n public readonly customCellsTpl: Signal<Nullable<RtuiDynamicListCustomTableCellsDirective<{ $implicit: ENTITY_TYPE }>>> = contentChild(\n RtuiDynamicListCustomTableCellsDirective\n );\n /** Row actions template */\n public readonly rowActionsTpl: Signal<Nullable<TemplateRef<{ $implicit: ENTITY_TYPE }>>> = contentChild(\n RtuiDynamicListRowActionsDirective,\n {\n read: TemplateRef,\n }\n );\n /** Additional row actions template */\n public readonly additionalRowActionsTpl: Signal<Nullable<TemplateRef<{ $implicit: ENTITY_TYPE }>>> = contentChild(\n RtuiDynamicListRowAdditionalActionsDirective,\n {\n read: TemplateRef,\n }\n );\n\n /** Table container for selectors directive usage */\n public readonly tableContainerTpl: Signal<Nullable<RtuiTableContainerComponent<ENTITY_TYPE>>> =\n viewChild<RtuiTableContainerComponent<ENTITY_TYPE>>(RtuiTableContainerComponent);\n /** Table selector for selectors directive usage */\n public readonly tableTpl: Signal<Nullable<RtuiTableComponent<ENTITY_TYPE, SORT_PROPERTY, KEY>>> =\n viewChild<RtuiTableComponent<ENTITY_TYPE, SORT_PROPERTY, KEY>>(RtuiTableComponent);\n\n /** Search change output action */\n public onSearchChange(value: Nullable<string>): void {\n this.searchChange.emit(value);\n }\n\n /** Sort change output action */\n public onSortChange(sortModel: SortModel<NonNullable<KEY>>): void {\n this.sortChange.emit(sortModel);\n }\n\n /** Page model change output action */\n public onPageModelChange(pageModel: Partial<PageModel>): void {\n this.pageModelChange.emit(pageModel);\n }\n\n /** Filter change output action */\n public onFilterChange(filterModel: FilterModel<KEY>[]): void {\n this.filterChange.emit(filterModel);\n }\n\n /** Refresh output action */\n public onRefresh(): void {\n this.refresh.emit();\n }\n\n /** Clear filters output action */\n public onClearFilters(): void {\n this.clearFiltersAction.emit();\n }\n\n /** Row click output action */\n public onRowClick({ row, event }: { row: ENTITY_TYPE; event: MouseEvent }): void {\n this.rowClick.emit({ row, event });\n }\n\n /** Row doubleClick output action */\n public onRowDoubleClick(row: ENTITY_TYPE): void {\n this.rowDoubleClick.emit(row);\n }\n}\n","<rtui-table-container\n [tableConfigStorageKey]=\"tableConfigStorageKey()\"\n [loading]=\"loading()\"\n [fetching]=\"fetching()\"\n [isMobile]=\"isMobile()\"\n [pageModel]=\"pageModel()\"\n [isPlaceholderShown]=\"!entities()?.length && !filterModel()?.length\"\n [isToolbarActionsIconsOutlined]=\"isToolbarActionsIconsOutlined()\"\n [isRefreshButtonShown]=\"isRefreshButtonShown()\"\n [isTableConfigButtonShown]=\"isTableConfigButtonShown()\"\n [isFiltersShown]=\"isFiltersShown()\"\n [isFiltersEmpty]=\"!filterModel()?.length\"\n [appearance]=\"appearance()\"\n [searchTerm]=\"searchTerm()\"\n (refreshAction)=\"onRefresh()\"\n (clearFiltersAction)=\"onClearFilters()\"\n (pageModelChange)=\"onPageModelChange($event)\"\n (searchChange)=\"onSearchChange($event)\">\n @if (toolbarSelectorsTpl()) {\n <ng-container *rtuiTableToolbarSelectorsDirective>\n <ng-template *ngTemplateOutlet=\"toolbarSelectorsTpl() || null\" />\n </ng-container>\n }\n\n @if (toolbarActionsTpl()) {\n <ng-container *rtuiTableToolbarActionsDirective>\n <ng-template *ngTemplateOutlet=\"toolbarActionsTpl() || null\" />\n </ng-container>\n }\n\n <rtui-table\n [appearance]=\"appearance()\"\n [keyExp]=\"keyExp()\"\n [entities]=\"entities()\"\n [isMobile]=\"isMobile()\"\n [filterModel]=\"filterModel()\"\n [isTableRowsClickable]=\"isTableRowsClickable()\"\n [currentSortModel]=\"currentSortModel()\"\n [isFiltersShown]=\"isFiltersShown()\"\n (filterChange)=\"onFilterChange($event)\"\n (rowClick)=\"onRowClick($event)\"\n (rowDoubleClick)=\"onRowDoubleClick($event)\"\n (sortChange)=\"onSortChange($event)\">\n @if (customCellsTpl() && customCellsTpl()?.cellsTemplates()) {\n <ng-container *rtuiCustomTableCellsDirective=\"customCellsTpl()?.cellsTemplates()!\" />\n }\n\n @if (additionalRowActionsTpl()) {\n <ng-container *rtuiTableAdditionalRowActionsDirective=\"let row\">\n <ng-template *ngTemplateOutlet=\"additionalRowActionsTpl() || null; context: { $implicit: row }\" />\n </ng-container>\n }\n\n @if (rowActionsTpl()) {\n <ng-container *rtuiTabletRowActionsDirective=\"let row\">\n <ng-template *ngTemplateOutlet=\"rowActionsTpl() || null; context: { $implicit: row }\" />\n </ng-container>\n }\n </rtui-table>\n</rtui-table-container>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostBinding, inject, input, InputSignalWithTransform, TemplateRef } from '@angular/core';\nimport { DomSanitizer, SafeValue } from '@angular/platform-browser';\n\nimport { Nullable } from '@rt-tools/core';\nimport { isString } from '@rt-tools/utils';\n\n@Component({\n selector: 'rtui-popover-container',\n templateUrl: './rtui-popover-container.component.html',\n styleUrls: ['./rtui-popover-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n})\nexport class RtuiPopoverContainerComponent {\n readonly #sanitizer: DomSanitizer = inject(DomSanitizer);\n\n public popoverTemplate: InputSignalWithTransform<Nullable<TemplateRef<HTMLElement>>, Nullable<TemplateRef<HTMLElement>>> = input<\n Nullable<TemplateRef<HTMLElement>>,\n Nullable<TemplateRef<HTMLElement>>\n >(undefined, {\n transform: (value: Nullable<TemplateRef<HTMLElement>>) => value ?? null,\n });\n\n public popoverClass: InputSignalWithTransform<Nullable<string>, string | undefined> = input<Nullable<string>, string | undefined>(\n undefined,\n {\n transform: (value: unknown) => (isString(value) ? value : undefined),\n }\n );\n\n @HostBinding('class')\n public get className(): SafeValue {\n return this.#sanitizer.sanitize(1, this.popoverClass() as string) as SafeValue;\n }\n}\n","<ng-container *ngTemplateOutlet=\"popoverTemplate() || null\" />\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { DOCUMENT } from '@angular/common';\nimport {\n booleanAttribute,\n ComponentRef,\n Directive,\n ElementRef,\n HostListener,\n inject,\n Injector,\n input,\n InputSignalWithTransform,\n numberAttribute,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { computePosition, ComputePositionReturn, flip, offset, shift } from '@floating-ui/dom';\n\nimport { Nullable, PlatformService, WINDOW } from '@rt-tools/core';\nimport { RtuiPopoverContainerComponent } from './rtui-popover-container.component';\n\nexport type MenuItemTrigger = 'click' | 'hover';\n\n@Directive({\n selector: '[rtPopover]',\n providers: [PlatformService],\n})\nexport class RtPopoverDirective implements OnInit, OnDestroy {\n readonly #windowRef: Window = inject(WINDOW);\n readonly #injector: Injector = inject(Injector);\n readonly #hostRef: ElementRef = inject(ElementRef);\n readonly #documentRef: Document = inject(DOCUMENT);\n readonly #platformService: PlatformService = inject(PlatformService);\n readonly #componentFactoryResolver: ViewContainerRef = inject(ViewContainerRef);\n\n #popoverContainerRef?: ComponentRef<RtuiPopoverContainerComponent> | null;\n #popoverElement?: HTMLElement;\n #hasPopoverHover: boolean = false;\n #hasHostHover: boolean = false;\n\n public xOffset: InputSignalWithTransform<number, NumberInput> = input<number, NumberInput>(0, { transform: numberAttribute });\n public yOffset: InputSignalWithTransform<number, NumberInput> = input<number, NumberInput>(-20, { transform: numberAttribute });\n public trigger: InputSignalWithTransform<MenuItemTrigger, MenuItemTrigger> = input<MenuItemTrigger, MenuItemTrigger>('hover', {\n transform: (value: unknown) => (value === 'click' ? 'click' : 'hover'),\n });\n public template: InputSignalWithTransform<Nullable<TemplateRef<HTMLElement>>, Nullable<TemplateRef<HTMLElement>>> = input<\n Nullable<TemplateRef<HTMLElement>>,\n Nullable<TemplateRef<HTMLElement>>\n >(null, {\n transform: (value: Nullable<TemplateRef<HTMLElement>>) => value || null,\n });\n public isMouseHoverAllowed: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n\n @HostListener('document:click', ['$event.target'])\n public onClick(element: EventTarget | null): void {\n if (this.trigger() === 'click') {\n if (this.#hostRef.nativeElement.contains(element)) {\n this.#show();\n } else {\n this.#hide();\n }\n }\n }\n\n @HostListener('mouseenter')\n public onMouseEnter(): void {\n if (this.trigger() === 'hover') {\n this.#hasHostHover = true;\n this.#show();\n }\n }\n\n @HostListener('mouseleave')\n public onMouseLeave(): void {\n this.#hasHostHover = false;\n this.#handleMouseLeave();\n }\n\n public ngOnInit(): void {\n if (this.#platformService.isPlatformBrowser) {\n this.#windowRef.addEventListener('scroll', this.#hide.bind(this));\n }\n }\n\n public ngOnDestroy(): void {\n this.onMouseLeave();\n }\n\n #show(): void {\n if (!this.#platformService.isPlatformBrowser || this.#popoverContainerRef) {\n return;\n }\n this.#popoverContainerRef = this.#componentFactoryResolver.createComponent(RtuiPopoverContainerComponent, {\n injector: this.#injector,\n });\n\n this.#popoverContainerRef.instance.popoverTemplate = this.template || null;\n\n this.#popoverElement = this.#popoverContainerRef.location.nativeElement;\n\n if (this.#popoverElement) {\n this.#documentRef.body.appendChild(this.#popoverElement);\n this.#popoverElement.addEventListener('mouseenter', () => {\n this.#hasPopoverHover = true;\n });\n this.#popoverElement.addEventListener('mouseleave', () => {\n this.#hasPopoverHover = false;\n this.#handleMouseLeave();\n });\n }\n this.#updateTooltipPosition();\n this.#popoverContainerRef.hostView.detectChanges();\n }\n\n #updateTooltipPosition(): void {\n if (!this.#hostRef?.nativeElement || !this.#popoverElement) {\n return;\n }\n\n computePosition(this.#hostRef.nativeElement, this.#popoverElement, {\n placement: 'bottom-start',\n middleware: [offset(14), flip(), shift({ padding: 0 })],\n }).then((computePosition: ComputePositionReturn) => {\n const x: number = computePosition.x + this.xOffset();\n const y: number = computePosition.y + this.yOffset();\n\n if (this.#popoverElement) {\n Object.assign(this.#popoverElement.style, {\n left: `${x}px`,\n top: `${y}px`,\n opacity: 1,\n visibility: 'visible',\n 'z-index': 2,\n });\n }\n });\n }\n\n #handleMouseLeave(): void {\n if (this.trigger() === 'hover') {\n if (!this.#popoverContainerRef) {\n return;\n }\n if (!this.isMouseHoverAllowed()) {\n this.#hide();\n return;\n }\n setTimeout(() => {\n this.#hide();\n }, 50);\n }\n }\n\n #hide(): void {\n if (!this.#hasPopoverHover && !this.#hasHostHover && this.#popoverContainerRef) {\n Object.assign(this.#popoverContainerRef.location.nativeElement.style, {\n opacity: 0,\n });\n this.#popoverContainerRef.destroy();\n this.#popoverContainerRef = null;\n }\n }\n}\n","import { NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, InputSignal, output, OutputEmitterRef, Signal } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\n\nimport { BlockDirective, ElemDirective } from '@rt-tools/core';\nimport { BreakpointService, EmptyToDashPipe, RtIconOutlinedDirective } from '@rt-tools/utils';\nimport { RtPopoverDirective } from '../../../popover/rt-popover.directive';\nimport { IRtActionBar } from '../../action-bar-config.interface';\n\n@Component({\n selector: 'rtui-action-bar',\n templateUrl: 'rtui-action-bar.component.html',\n styleUrls: ['rtui-action-bar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n NgStyle,\n // material\n MatIcon,\n // rt-tools\n BlockDirective,\n ElemDirective,\n EmptyToDashPipe,\n RtIconOutlinedDirective,\n RtPopoverDirective,\n ],\n providers: [BreakpointService],\n})\nexport class RtuiActionBarComponent {\n readonly #breakpointService: BreakpointService = inject(BreakpointService);\n\n public config: InputSignal<IRtActionBar.Config> = input.required();\n\n public readonly closeAction: OutputEmitterRef<void> = output<void>();\n\n public readonly isTablet: Signal<boolean> = computed(() => !!this.#breakpointService.isTablet());\n\n public onClose(): void {\n this.closeAction.emit();\n }\n\n public onAction(button: IRtActionBar.Button): void {\n if (button?.action) {\n button.action();\n this.onClose();\n }\n }\n}\n","<div rtBlock=\"rtui-action-bar\">\n <div rtElem=\"counter\">\n {{ 'Selected: ' + config().selected + ' out of ' + config().total | emptyToDash }}\n </div>\n\n @if (config().buttons?.length) {\n <div rtElem=\"actions\">\n @for (btn of config().buttons; track i; let i = $index) {\n @if (btn?.menu) {\n @let menu = btn.menu;\n <ng-template #actionMenuWrapperTpl>\n <ng-container *ngTemplateOutlet=\"actionMenuTpl; context: { $implicit: menu }\" />\n </ng-template>\n\n <div rtPopover rtElem=\"action\" [trigger]=\"'click'\" [template]=\"actionMenuWrapperTpl\" [ngStyle]=\"btn?.styles\">\n <ng-template *ngTemplateOutlet=\"buttonContentTpl; context: { $implicit: btn }\" />\n </div>\n } @else {\n <div rtElem=\"action\" [ngStyle]=\"btn?.styles\" (click)=\"onAction(btn)\">\n <ng-template *ngTemplateOutlet=\"buttonContentTpl; context: { $implicit: btn }\" />\n </div>\n }\n }\n </div>\n }\n\n <div rtElem=\"close-button\" (click)=\"onClose()\">\n <svg width=\"11\" height=\"11\" viewBox=\"0 0 11 11\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10.7071 0.293C10.5196 0.105529 10.2652 0.000213623 10.0001 0.000213623C9.73492 0.000213623 9.48061 0.105529 9.29308 0.293L6.00008 3.586L2.70708 0.293C2.51848 0.110842 2.26588 0.0100477 2.00368 0.0123261C1.74148 0.0146045 1.49067 0.119773 1.30526 0.305182C1.11985 0.49059 1.01469 0.741402 1.01241 1.0036C1.01013 1.2658 1.11092 1.5184 1.29308 1.707L4.58608 5L1.29308 8.293C1.19757 8.38525 1.12139 8.49559 1.06898 8.6176C1.01657 8.7396 0.988985 8.87082 0.987831 9.0036C0.986677 9.13638 1.01198 9.26806 1.06226 9.39095C1.11254 9.51385 1.18679 9.6255 1.28069 9.71939C1.37458 9.81329 1.48623 9.88754 1.60913 9.93782C1.73202 9.9881 1.8637 10.0134 1.99648 10.0123C2.12926 10.0111 2.26048 9.98351 2.38249 9.9311C2.50449 9.87869 2.61483 9.80251 2.70708 9.707L6.00008 6.414L9.29308 9.707C9.48168 9.88916 9.73429 9.98995 9.99648 9.98767C10.2587 9.9854 10.5095 9.88023 10.6949 9.69482C10.8803 9.50941 10.9855 9.2586 10.9878 8.9964C10.99 8.7342 10.8892 8.4816 10.7071 8.293L7.41408 5L10.7071 1.707C10.8946 1.51947 10.9999 1.26516 10.9999 1C10.9999 0.734836 10.8946 0.480528 10.7071 0.293Z\"\n fill=\"currentColor\" />\n </svg>\n </div>\n</div>\n\n<ng-template #actionMenuTpl let-menu>\n <div rtBlock=\"rtui-action-bar-action-menu\">\n @for (btn of menu; track i; let i = $index) {\n <div rtElem=\"action\" (click)=\"onAction(btn)\">\n <ng-template *ngTemplateOutlet=\"buttonContentTpl; context: { $implicit: btn }\" />\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #buttonContentTpl let-btn>\n @if (btn?.icon) {\n <mat-icon [rtIconOutlined]=\"true\">{{ btn.icon }}</mat-icon>\n }\n\n @if (!isTablet() || (isTablet() && !btn?.icon)) {\n <div>{{ btn.title }}</div>\n }\n</ng-template>\n","import { Injectable, signal, WritableSignal } from '@angular/core';\n\nimport { IRtActionBar } from './action-bar-config.interface';\n\n@Injectable()\nexport class RtActionBarService {\n public config: WritableSignal<IRtActionBar.Config> = signal({ buttons: [] });\n\n public setActions(buttons: IRtActionBar.Button[]): void {\n this.config.set({ buttons });\n }\n\n public setCounts(selected: number, total: number): void {\n this.config.set({ ...this.config(), selected, total });\n }\n\n public closeActionBar(): void {\n this.config.set({ ...this.config(), selected: 0, total: 0 });\n }\n}\n","import { animate, keyframes, state, style, transition, trigger } from '@angular/animations';\nimport { Component, inject, Signal } from '@angular/core';\n\nimport { IRtActionBar } from '../../action-bar-config.interface';\nimport { RtActionBarService } from '../../rt-action-bar.service';\nimport { RtuiActionBarComponent } from '../bar/rtui-action-bar.component';\n\n@Component({\n selector: 'rtui-action-bar-container',\n templateUrl: 'rtui-action-bar-container.component.html',\n styleUrls: ['rtui-action-bar-container.component.scss'],\n imports: [RtuiActionBarComponent],\n animations: [\n trigger('barState', [\n state('opened', style({ transform: 'translateY(0)' })),\n transition('void => *', [\n animate(\n 300,\n keyframes([\n style({ opacity: 0, transform: 'translateY(100%)', offset: 0 }),\n style({ opacity: 1, transform: 'translateY(-15px)', offset: 0.3 }),\n style({ opacity: 1, transform: 'translateY(0)', offset: 1.0 }),\n ])\n ),\n ]),\n transition('* => void', [\n animate(\n 300,\n keyframes([\n style({ opacity: 1, transform: 'translateY(0)', offset: 0 }),\n style({ opacity: 1, transform: 'translateY(-15px)', offset: 0.7 }),\n style({ opacity: 0, transform: 'translateY(100%)', offset: 1.0 }),\n ])\n ),\n ]),\n ]),\n ],\n})\nexport class RtuiActionBarContainerComponent {\n readonly #actionBarService: RtActionBarService = inject(RtActionBarService);\n\n public readonly config: Signal<IRtActionBar.Config> = this.#actionBarService.config;\n\n public closeBar(): void {\n this.#actionBarService.closeActionBar();\n }\n}\n","@if (config()?.selected) {\n <rtui-action-bar [@barState]=\"'opened'\" [config]=\"config()\" (closeAction)=\"closeBar()\" />\n}\n","import { Provider } from '@angular/core';\n\nimport { RtActionBarService } from './action-bar';\nimport { RtAsideService } from './aside';\n\n/**\n * Returns a set of the necessary dependency injection providers for managing the UI.\n *\n * ```typescript\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideRtUi()\n * ]\n * });\n * ```\n *\n * @publicApi\n */\nexport function provideRtUi(): Provider[] {\n return [RtAsideService, RtActionBarService];\n}\n","import { animate, AnimationBuilder, AnimationFactory, AnimationPlayer, style } from '@angular/animations';\nimport { afterNextRender, ChangeDetectionStrategy, Component, ElementRef, HostListener, inject, Signal, viewChild } from '@angular/core';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MAT_SNACK_BAR_DATA, MatSnackBarRef } from '@angular/material/snack-bar';\n\nimport { BlockDirective, ElemDirective, Nullable } from '@rt-tools/core';\nimport { RtIconOutlinedDirective } from '@rt-tools/utils';\nimport { IRtSnackBar } from './snack-bar-config.interface';\n\n@Component({\n selector: 'rtui-snack-bar',\n templateUrl: './snack-bar.component.html',\n styleUrls: ['./snack-bar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatButton, MatIconButton, MatIcon, ElemDirective, BlockDirective, RtIconOutlinedDirective],\n})\nexport class RtuiSnackBarComponent {\n public readonly data: IRtSnackBar.Data = inject(MAT_SNACK_BAR_DATA);\n readonly #snackBarRef: MatSnackBarRef<RtuiSnackBarComponent> = inject(MatSnackBarRef<RtuiSnackBarComponent>);\n readonly #animationBuilder: AnimationBuilder = inject(AnimationBuilder);\n\n public player: AnimationPlayer | undefined;\n\n public readonly progressTplRef: Signal<Nullable<ElementRef<HTMLElement>>> = viewChild<ElementRef<HTMLElement>>('progressTpl');\n\n constructor() {\n afterNextRender(() => {\n if (this.data.isProgressBarShown && this.data.duration) {\n this.#startAnimation();\n }\n });\n }\n\n @HostListener('mouseover')\n public onMouseOver(): void {\n this.#pauseAnimation();\n }\n\n @HostListener('mouseout')\n public onMouseOut(): void {\n this.#resumeAnimation();\n }\n\n public dismiss(): void {\n this.#snackBarRef.dismissWithAction();\n }\n\n public close(): void {\n this.#snackBarRef.dismiss();\n }\n\n #startAnimation(): void {\n const element: HTMLElement | undefined = this.progressTplRef()?.nativeElement;\n\n if (element) {\n const factory: AnimationFactory = this.#animationBuilder.build([\n style({ width: '100%', 'clip-path': 'polygon(0 0, 100% 0, 100% 100%, 0 100%)' }),\n animate('{{ time }} linear', style({ width: '0', 'clip-path': 'polygon(0 0, 0 0, 0 100%, 0 100%)' })),\n ]);\n\n this.player = factory.create(element, { params: { time: this.data.duration + 'ms' } });\n this.player.onDone(() => this.close());\n this.player.play();\n }\n }\n\n #pauseAnimation(): void {\n this.player?.pause();\n }\n\n #resumeAnimation(): void {\n this.player?.play();\n }\n}\n","<ng-container rtBlock=\"rt-snack-bar\">\n <div rtElem=\"content\">\n @if (data.icon) {\n <div rtElem=\"content-icon-wrapper\">\n <mat-icon rtElem=\"content-icon\" rtIconOutlined>{{ data.icon }}</mat-icon>\n </div>\n }\n\n <div rtElem=\"content-message\">{{ data.message }}</div>\n </div>\n\n @if (data.action) {\n <button rtElem=\"action-button\" mat-button (click)=\"dismiss()\">{{ data.action }}</button>\n }\n\n <button rtElem=\"close-button\" color=\"accent\" mat-icon-button type=\"button\" (click)=\"close()\">\n <mat-icon rtElem=\"close-button-icon\">close</mat-icon>\n </button>\n\n @if (data.isProgressBarShown && data.duration) {\n <div #progressTpl rtElem=\"progress\"></div>\n }\n</ng-container>\n","import { Injectable, inject } from '@angular/core';\nimport { MatSnackBar, MatSnackBarRef } from '@angular/material/snack-bar';\n\nimport { IRtSnackBar } from './snack-bar-config.interface';\nimport { RtuiSnackBarComponent } from './snack-bar.compontent';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RtSnackBarService {\n readonly #snackBar: MatSnackBar = inject(MatSnackBar);\n private readonly defaultConfig: Readonly<IRtSnackBar.Config> = {\n duration: 5000,\n };\n\n public default(message: string, config: IRtSnackBar.Config = {}): MatSnackBarRef<RtuiSnackBarComponent> {\n const fullConfig: IRtSnackBar.Config = { ...this.defaultConfig, ...config };\n return this.#snackBar.openFromComponent(RtuiSnackBarComponent, {\n ...config,\n duration: fullConfig?.isProgressBarShown ? undefined : fullConfig.duration,\n data: { message, ...fullConfig },\n });\n }\n\n public warning(message: string, config: IRtSnackBar.Config = {}): MatSnackBarRef<RtuiSnackBarComponent> {\n const fullConfig: IRtSnackBar.Config = { ...this.defaultConfig, ...config };\n return this.#snackBar.openFromComponent(RtuiSnackBarComponent, {\n ...config,\n duration: fullConfig?.isProgressBarShown ? undefined : fullConfig.duration,\n panelClass: config.isColoredBackground ? 'snack-bar-warning-colored' : 'snack-bar-warning',\n data: { message, ...fullConfig, icon: config.icon || 'warning' },\n });\n }\n\n public danger(message: string, config: IRtSnackBar.Config = {}): MatSnackBarRef<RtuiSnackBarComponent> {\n const fullConfig: IRtSnackBar.Config = { ...this.defaultConfig, ...config };\n return this.#snackBar.openFromComponent(RtuiSnackBarComponent, {\n ...config,\n duration: fullConfig?.isProgressBarShown ? undefined : fullConfig.duration,\n panelClass: config.isColoredBackground ? 'snack-bar-danger-colored' : 'snack-bar-danger',\n data: { message, ...fullConfig, icon: config.icon || 'error' },\n });\n }\n\n public success(message: string, config: IRtSnackBar.Config = {}): MatSnackBarRef<RtuiSnackBarComponent> {\n const fullConfig: IRtSnackBar.Config = { ...this.defaultConfig, ...config };\n return this.#snackBar.openFromComponent(RtuiSnackBarComponent, {\n ...config,\n duration: fullConfig?.isProgressBarShown ? undefined : fullConfig.duration,\n panelClass: config.isColoredBackground ? 'snack-bar-success-colored' : 'snack-bar-success',\n data: { message, ...fullConfig, icon: config.icon || 'check' },\n });\n }\n\n public dismiss(): void {\n this.#snackBar.dismiss();\n }\n}\n","import { animate, AnimationTriggerMetadata, state, style, transition, trigger } from '@angular/animations';\n\nexport const progressIncreaseAnimation: AnimationTriggerMetadata[] = [\n trigger('progressIncreaseAnimation', [\n state(\n 'start',\n style({\n width: '100%',\n })\n ),\n state(\n 'end',\n style({\n width: '0',\n })\n ),\n transition('start => end', [animate('0ms')]),\n transition('end => start', [animate('{{ time }}')]),\n ]),\n];\n\nexport const progressDecreaseAnimation: AnimationTriggerMetadata[] = [\n trigger('progressDecreaseAnimation', [\n state(\n 'start',\n style({\n width: '0',\n })\n ),\n state(\n 'end',\n style({\n width: '100%',\n })\n ),\n transition('start => end', [animate('0ms')]),\n transition('end => start', [animate('{{ time }}')]),\n ]),\n];\n","export enum INFO_BADGE_SIZE_ENUM {\n LARGE = 'l',\n MEDIUM = 'm',\n SMALL = 's',\n}\n\nexport type IInfoBadgeSizeType = INFO_BADGE_SIZE_ENUM.LARGE | INFO_BADGE_SIZE_ENUM.MEDIUM | INFO_BADGE_SIZE_ENUM.SMALL;\n","export function darkenHexColor(hex: string, percent: number): string {\n /**\n * returns a darkened color depending on the color and percentage\n */\n hex = hex.replace(/^#/, '');\n\n if (hex.length === 3) {\n hex = hex\n .split('')\n .map((char: string) => char + char)\n .join('');\n }\n\n let r: number = parseInt(hex.substring(0, 2), 16);\n let g: number = parseInt(hex.substring(2, 4), 16);\n let b: number = parseInt(hex.substring(4, 6), 16);\n\n r = Math.floor(r * (1 - percent / 100));\n g = Math.floor(g * (1 - percent / 100));\n b = Math.floor(b * (1 - percent / 100));\n\n return `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;\n}\n\nexport function getColorBasedOnBackground(backgroundColor: string): string {\n backgroundColor = backgroundColor.substring(1);\n const r: number = parseInt(backgroundColor.substring(0, 2), 16);\n const g: number = parseInt(backgroundColor.substring(2, 4), 16);\n const b: number = parseInt(backgroundColor.substring(4, 6), 16);\n\n const srgb: number[] = [r / 255, g / 255, b / 255];\n const x: number[] = srgb.map((i: number): number => {\n if (i <= 0.04045) {\n return i / 12.92;\n } else {\n return Math.pow((i + 0.055) / 1.055, 2.4);\n }\n });\n\n const L: number = 0.2126 * x[0] + 0.7152 * x[1] + 0.0722 * x[2];\n\n /**\n * if the background color is light, it returns a darkened value, otherwise it is light\n */\n\n if (L > 0.179) {\n return darkenHexColor(backgroundColor, 50);\n }\n return '#fff';\n}\n","import { NgClass, NgStyle } from '@angular/common';\nimport {\n AfterContentChecked,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n input,\n InputSignal,\n InputSignalWithTransform,\n Signal,\n signal,\n viewChild,\n WritableSignal,\n} from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nimport { BlockDirective, ElemDirective, Nullable } from '@rt-tools/core';\nimport { POSITION_ENUM } from '@rt-tools/utils';\nimport { IInfoBadgeSizeType, INFO_BADGE_SIZE_ENUM } from './badge-info-enum';\nimport { IconSideType } from './icon-side.type';\n\n@Component({\n selector: 'rtui-info-badge',\n templateUrl: './info-badge.component.html',\n styleUrl: './info-badge.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatTooltip, NgClass, MatIcon, NgStyle, BlockDirective, ElemDirective],\n})\nexport class RtuiInfoBadgeComponent implements AfterContentChecked {\n public size: InputSignal<IInfoBadgeSizeType> = input.required();\n public text: InputSignal<string> = input.required();\n public glyph: InputSignal<string> = input('');\n public iconSide: InputSignal<IconSideType> = input<IconSideType>(POSITION_ENUM.RIGHT);\n public isFontBold: InputSignal<boolean> = input(false);\n public isMobile: InputSignalWithTransform<Nullable<boolean>, boolean> = input.required<Nullable<boolean>, boolean>({\n transform: booleanAttribute,\n });\n public isTitleCollapsed: WritableSignal<boolean> = signal(false);\n public readonly contentRef: Signal<ElementRef<HTMLElement> | undefined> = viewChild('content');\n\n public get badgeClass(): { [key: string]: boolean | string } {\n return {\n 'size-l': this.size() === INFO_BADGE_SIZE_ENUM.LARGE,\n 'size-m': this.size() === INFO_BADGE_SIZE_ENUM.MEDIUM,\n 'size-s': this.size() === INFO_BADGE_SIZE_ENUM.SMALL,\n bold: this.isFontBold(),\n };\n }\n\n public get iconStyles(): { [key: string]: string } {\n return {\n order: this.iconSide() === POSITION_ENUM.LEFT ? '-1' : '0',\n 'min-width': 'fit-content',\n };\n }\n\n public ngAfterContentChecked(): void {\n setTimeout(() => {\n this.checkEllipsis();\n }, 500);\n }\n\n public checkEllipsis(): void {\n const element: HTMLElement | undefined = this.contentRef()?.nativeElement;\n\n if (element) {\n if (element.scrollWidth > element.offsetWidth) {\n this.isTitleCollapsed.set(true);\n }\n }\n }\n}\n","<div\n rtBlock=\"c-info-badge\"\n matTooltipClass=\"custom-tooltip\"\n matTooltipPosition=\"above\"\n [matTooltip]=\"text()\"\n [ngClass]=\"badgeClass\"\n [matTooltipDisabled]=\"!isTitleCollapsed() || isMobile()\">\n <div rtElem=\"content\" #content>{{ text() }}</div>\n @if (glyph()) {\n <mat-icon [ngStyle]=\"iconStyles\">{{ glyph() }}</mat-icon>\n }\n</div>\n","export enum INFO_BADGE_TYPE_ENUM {\n SUCCESS = 'success',\n INFO = 'info',\n WARNING = 'warning',\n PRIMARY = 'primary',\n DISABLED = 'disabled',\n}\n\nexport type InfoBadgeType =\n | INFO_BADGE_TYPE_ENUM.SUCCESS\n | INFO_BADGE_TYPE_ENUM.INFO\n | INFO_BADGE_TYPE_ENUM.WARNING\n | INFO_BADGE_TYPE_ENUM.PRIMARY\n | INFO_BADGE_TYPE_ENUM.DISABLED;\n","import { ChangeDetectionStrategy, Component, input, InputSignal, output, OutputEmitterRef, signal, WritableSignal } from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\n\nimport { BlockDirective, ElemDirective } from '@rt-tools/core';\nimport { RtIconOutlinedDirective } from '@rt-tools/utils';\n\n@Component({\n selector: 'rtui-file-upload',\n templateUrl: './rtui-file-upload.component.html',\n styleUrls: ['./rtui-file-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatButton,\n MatIcon,\n\n // directives\n ElemDirective,\n BlockDirective,\n RtIconOutlinedDirective,\n ],\n host: {\n '[class.--dragged]': 'isDragOver()',\n '(dragover)': 'onDragOver($event)',\n '(dragleave)': 'onDragLeave($event)',\n '(drop)': 'onDrop($event)',\n },\n})\nexport class RtuiFileUploadComponent {\n public isIconOutlined: InputSignal<boolean> = input(true);\n\n public readonly uploadFile: OutputEmitterRef<File> = output<File>();\n\n public readonly isDragOver: WritableSignal<boolean> = signal(false);\n\n public onDragOver(event: DragEvent): void {\n event?.preventDefault();\n this.isDragOver.set(true);\n }\n\n public onDragLeave(event: DragEvent): void {\n event?.preventDefault();\n this.isDragOver.set(false);\n }\n\n public onDrop(event: DragEvent): void {\n event?.preventDefault();\n this.isDragOver.set(false);\n if (event.dataTransfer && event.dataTransfer.files.length > 0) {\n this.uploadFile.emit(event.dataTransfer.files[0]);\n }\n }\n\n public onFileSelect(event: Event): void {\n const input: HTMLInputElement = event.target as HTMLInputElement;\n if (input.files && input.files.length > 0) {\n this.uploadFile.emit(input.files[0]);\n }\n }\n}\n","<ng-container rtBlock=\"file-upload\">\n <mat-icon rtElem=\"icon\" [rtIconOutlined]=\"isIconOutlined()\">backup</mat-icon>\n\n <div rtElem=\"title\">Drag and drop your file here or</div>\n\n <input #uploadInput hidden type=\"file\" (change)=\"onFileSelect($event)\" />\n\n <button rtBlock=\"c-button\" mat-button color=\"accent\" (click)=\"uploadInput.click()\">Choose file</button>\n</ng-container>\n","import { DOCUMENT } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n model,\n ModelSignal,\n output,\n OutputEmitterRef,\n signal,\n WritableSignal,\n computed,\n Signal,\n} from '@angular/core';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip, TooltipPosition } from '@angular/material/tooltip';\nimport { ImageCroppedEvent, ImageCropperComponent } from 'ngx-image-cropper';\n\nimport { BlockDirective, ElemDirective, ModDirective, Nullable } from '@rt-tools/core';\nimport { RtIconOutlinedDirective, transformStringInput } from '@rt-tools/utils';\nimport { RtuiFileUploadComponent } from '../../file-uploader';\nimport { RtuiSpinnerComponent } from '../../spinner';\nimport { BooleanInput } from '@angular/cdk/coercion';\n\nexport type IImageUploadFormat = 'png' | 'jpeg' | 'webp';\n\n@Component({\n selector: 'rtui-image-upload',\n templateUrl: './rtui-image-upload.component.html',\n styleUrls: ['./rtui-image-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n // material\n MatIcon,\n MatButton,\n MatIconButton,\n MatTooltip,\n\n // cropper\n ImageCropperComponent,\n\n // rt-tools\n ElemDirective,\n ModDirective,\n BlockDirective,\n RtuiSpinnerComponent,\n RtuiFileUploadComponent,\n RtIconOutlinedDirective,\n ],\n})\nexport class RtuiImageUploadComponent {\n readonly #documentRef: Document = inject(DOCUMENT);\n\n readonly #formats: Record<string, IImageUploadFormat> = {\n ['png']: 'png',\n ['jpg']: 'jpeg',\n ['jpeg']: 'jpeg',\n ['webp']: 'webp',\n };\n readonly #originalMimeType: WritableSignal<string | null> = signal(null);\n protected readonly imageFormat: Signal<IImageUploadFormat> = computed((): IImageUploadFormat => {\n const type: Nullable<string> = this.#originalMimeType();\n return this.#formats[type?.toLowerCase() || ''] || 'png';\n });\n\n public imageUrl: ModelSignal<Nullable<string>> = model.required<Nullable<string>>();\n public isMobile: InputSignalWithTransform<boolean, boolean> = input.required<boolean, boolean>({\n transform: booleanAttribute,\n });\n public fileName: InputSignalWithTransform<string, string> = input<string, string>('image', {\n transform: transformStringInput,\n });\n public isActive: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n public isSaveButtonShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n public isDownloadButtonEnabled: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n public isTooltipDisabled: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n public isActionsShown: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(true, {\n transform: booleanAttribute,\n });\n public loading: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n public tooltip: InputSignal<string> = input<string>('');\n public tooltipPosition: InputSignal<TooltipPosition> = input<TooltipPosition>('above');\n public imageQuality: InputSignal<number> = input<number>(92);\n\n public originalImage: WritableSignal<File | undefined> = signal(undefined);\n public croppedImage: WritableSignal<Nullable<File>> = signal(null);\n public tempImage: WritableSignal<Nullable<string>> = signal(null);\n\n public readonly imageChanged: OutputEmitterRef<File> = output<File>();\n public readonly save: OutputEmitterRef<void> = output<void>();\n\n public onFileSelect(event: Event): void {\n const input: HTMLInputElement = event.target as HTMLInputElement;\n\n if (input?.files?.length) {\n this.#originalMimeType.set(input.files[0].type);\n this.originalImage.set(input.files[0]);\n }\n }\n\n public onImageCropped(event: ImageCroppedEvent): void {\n if (event?.blob) {\n const croppedFile: File = new File([event.blob], this.fileName(), {\n type: event.blob.type,\n });\n\n this.croppedImage.set(croppedFile);\n this.tempImage.set(event.objectUrl);\n\n if (!this.isActionsShown() && event?.objectUrl) {\n this.imageChanged.emit(croppedFile);\n this.imageUrl.set(event.objectUrl);\n }\n }\n }\n\n public onFileUpload(file: File): void {\n this.#originalMimeType.set(file.type);\n this.originalImage.set(file);\n }\n\n public onApply(): void {\n if (this.croppedImage()) {\n this.imageChanged.emit(this.croppedImage() as File);\n }\n\n this.imageUrl.set(this.tempImage());\n this.originalImage.set(undefined);\n }\n\n public onCancel(): void {\n this.originalImage.set(undefined);\n this.croppedImage.set(null);\n this.tempImage.set(null);\n }\n\n public onDownloadImage(): void {\n if (this.imageUrl() && this.isDownloadButtonEnabled()) {\n const imageUrl: string = this.imageUrl() as string;\n const link: HTMLAnchorElement = this.#documentRef.createElement('a');\n link.href = imageUrl;\n link.download = 'Image';\n this.#documentRef.body.appendChild(link);\n link.click();\n this.#documentRef.body.removeChild(link);\n }\n\n this.save.emit();\n }\n}\n","@if (loading()) {\n <rtui-spinner />\n} @else if (originalImage()) {\n <div rtBlock=\"rtui-image-cropper\">\n <image-cropper\n alignImage=\"center\"\n [format]=\"imageFormat()\"\n [imageQuality]=\"imageQuality()\"\n [allowMoveImage]=\"true\"\n [maintainAspectRatio]=\"false\"\n [imageFile]=\"originalImage()\"\n (imageCropped)=\"onImageCropped($event)\" />\n\n @if (isActionsShown()) {\n <div rtElem=\"actions\">\n <button rtBlock=\"c-button\" mat-button color=\"accent\" (click)=\"onCancel()\">Cancel</button>\n <button mat-flat-button (click)=\"onApply()\">Apply</button>\n </div>\n }\n </div>\n} @else {\n <input #uploadInput hidden type=\"file\" accept=\".jpg,.jpeg,.png,.webp\" (change)=\"onFileSelect($event)\" />\n\n @if (imageUrl()) {\n <div rtBlock=\"rtui-image-container\">\n <img\n rtElem=\"image\"\n role=\"button\"\n tabindex=\"0\"\n alt=\"img\"\n matTooltipClass=\"custom-tooltip\"\n [matTooltip]=\"tooltip()\"\n [matTooltipPosition]=\"tooltipPosition()\"\n [matTooltipDisabled]=\"isMobile() || !tooltip() || !isActive() || isTooltipDisabled()\"\n [rtMod]=\"{ active: isActive() }\"\n [src]=\"imageUrl()\"\n (click)=\"uploadInput.click()\"\n (keydown.enter)=\"uploadInput.click()\" />\n\n @if (isSaveButtonShown()) {\n <button\n rtElem=\"action\"\n mat-icon-button\n aria-label=\"Download image\"\n matTooltip=\"Download image\"\n matTooltipPosition=\"above\"\n [matTooltipDisabled]=\"isMobile()\"\n (click)=\"onDownloadImage()\">\n <mat-icon rtIconOutlined>download</mat-icon>\n </button>\n }\n </div>\n } @else {\n <rtui-file-upload (uploadFile)=\"onFileUpload($event)\" />\n }\n}\n","export enum RT_THEME_ENUM {\n LIGHT = 'light',\n DARK = 'dark',\n AUTO = 'auto',\n}\n\nexport type RtThemeType = `${RT_THEME_ENUM}`;\n\nexport const RT_THEME_STORAGE_KEY: string = 'rt-theme';\nexport const RT_DARK_CLASS: string = 'rt-dark';\nexport const RT_THEME_AUTO_CLASS: string = 'rt-theme-auto';\nexport const RT_THEME_ATTRIBUTE: string = 'data-rt-theme';\n\n/**\n * Accent roles whose `--rt-color-{role}-{0..100}` indirection rows a custom\n * color scheme may override. The semantic accent tier\n * (`--rt-bg/text/icon/border-accent-*`) derives entirely from these rows.\n */\nexport enum RT_ACCENT_ROLE_ENUM {\n PRIMARY = 'primary',\n INFO = 'info',\n SUCCESS = 'success',\n WARNING = 'warning',\n DANGER = 'danger',\n BRAND = 'brand',\n}\n\nexport type RtAccentRole = `${RT_ACCENT_ROLE_ENUM}`;\n\n/**\n * A brand palette: per accent role, a tonal ramp mapping tone step (0–100)\n * to a CSS color. One ramp serves both light and dark (the mode picks the tone).\n * Partial ramps are allowed — unset tones keep the rt-tools defaults.\n *\n * @example\n * const teal: RtColorSchemeRamp = {\n * primary: { 20: '#b3e3e1', 40: '#5cb8b5', 60: '#1a9d99', 100: '#008582' },\n * brand: { 20: '#e8e8e8', 100: '#008582' },\n * };\n */\nexport type RtColorSchemeRamp = Partial<Record<RtAccentRole, Record<number, string>>>;\n\n/** `'default'`/`null` clears the active scheme (back to the rt-tools palette). */\nexport const RT_DEFAULT_SCHEME: string = 'default';\nexport const RT_COLOR_SCHEME_STORAGE_KEY: string = 'rt-color-scheme';\nexport const RT_SCHEME_ATTRIBUTE: string = 'data-rt-scheme';\n","import { DOCUMENT } from '@angular/common';\nimport { effect, inject, Injectable, Signal, signal, WritableSignal } from '@angular/core';\n\nimport { LOCAL_STORAGE, PlatformService } from '@rt-tools/core';\n\nimport {\n RT_ACCENT_ROLE_ENUM,\n RT_COLOR_SCHEME_STORAGE_KEY,\n RT_DARK_CLASS,\n RT_DEFAULT_SCHEME,\n RT_SCHEME_ATTRIBUTE,\n RT_THEME_AUTO_CLASS,\n RT_THEME_ENUM,\n RT_THEME_STORAGE_KEY,\n RtColorSchemeRamp,\n RtThemeType,\n} from './rtui-theme.types';\n\n/**\n * Global theme + color-scheme switcher for the rt-tools design tokens.\n *\n * **Theme** (`light`/`dark`/`auto`): applies `.rt-dark` / `.rt-theme-auto` to\n * `<html>`; semantic tokens (`--rt-*`) adapt through `color-scheme` + `light-dark()`.\n * Persisted to localStorage (`rt-theme`). `auto` follows the OS preference.\n *\n * **Color scheme** (brand palette): toggles `data-rt-scheme=\"<name>\"` on `<html>`,\n * which activates a `[data-rt-scheme]` block (emitted by the `rt.color-scheme` Sass\n * mixin or injected at runtime via {@link registerColorScheme}). It overrides only\n * the accent-role rows `--rt-color-{role}-{N}`, so the whole accent layer recolors\n * while semantic token names stay stable. Orthogonal to light/dark; persisted to\n * localStorage (`rt-color-scheme`).\n */\n@Injectable({ providedIn: 'root' })\nexport class RtThemeService {\n readonly #document: Document = inject(DOCUMENT);\n readonly #platformService: PlatformService = inject(PlatformService);\n // falls back to the native localStorage when the app does not call provideRtStorage()\n readonly #storage: Storage | null = inject(LOCAL_STORAGE, { optional: true }) ?? this.#document.defaultView?.localStorage ?? null;\n\n readonly #theme: WritableSignal<RtThemeType> = signal<RtThemeType>(this.#restore());\n readonly #colorScheme: WritableSignal<string | null> = signal<string | null>(this.#restoreScheme());\n\n public readonly theme: Signal<RtThemeType> = this.#theme.asReadonly();\n public readonly colorScheme: Signal<string | null> = this.#colorScheme.asReadonly();\n\n constructor() {\n effect((): void => {\n this.#apply(this.#theme());\n });\n\n effect((): void => {\n this.#applyScheme(this.#colorScheme());\n });\n }\n\n public setTheme(theme: RtThemeType): void {\n this.#theme.set(theme);\n\n if (this.#platformService.isPlatformBrowser && this.#storage) {\n this.#storage.setItem(RT_THEME_STORAGE_KEY, theme);\n }\n }\n\n /** Toggles between light and dark (auto resolves to its opposite visual state). */\n public toggle(): void {\n this.setTheme(this.#isDarkApplied() ? RT_THEME_ENUM.LIGHT : RT_THEME_ENUM.DARK);\n }\n\n /**\n * Activates a registered color scheme by name, or clears it with `null`/`'default'`.\n * Orthogonal to the light/dark theme; persisted to localStorage.\n */\n public setColorScheme(name: string | null): void {\n const normalized: string | null = !name || name === RT_DEFAULT_SCHEME ? null : name;\n this.#colorScheme.set(normalized);\n\n if (this.#platformService.isPlatformBrowser && this.#storage) {\n if (normalized) {\n this.#storage.setItem(RT_COLOR_SCHEME_STORAGE_KEY, normalized);\n } else {\n this.#storage.removeItem(RT_COLOR_SCHEME_STORAGE_KEY);\n }\n }\n }\n\n /**\n * Injects (or replaces) a color scheme's `[data-rt-scheme]` block at runtime —\n * the JS twin of the `rt.color-scheme` Sass mixin. Browser-only (no-op on server;\n * for SSR/brand-critical schemes prefer the Sass path). Does not activate the\n * scheme — call {@link setColorScheme} afterwards.\n */\n public registerColorScheme(name: string, ramp: RtColorSchemeRamp): void {\n this.#validateRamp(name, ramp);\n\n if (!this.#platformService.isPlatformBrowser) {\n return;\n }\n\n const id: string = `rt-color-scheme-${name}`;\n const existing: HTMLElement | null = this.#document.getElementById(id);\n const style: HTMLStyleElement = (existing as HTMLStyleElement | null) ?? this.#document.createElement('style');\n\n style.id = id;\n style.textContent = this.#buildSchemeCss(name, ramp);\n\n if (!existing) {\n this.#document.head.appendChild(style);\n }\n }\n\n #restore(): RtThemeType {\n if (!this.#platformService.isPlatformBrowser || !this.#storage) {\n return RT_THEME_ENUM.LIGHT;\n }\n\n const stored: string | null = this.#storage.getItem(RT_THEME_STORAGE_KEY);\n\n return Object.values(RT_THEME_ENUM).includes(stored as RT_THEME_ENUM) ? (stored as RtThemeType) : RT_THEME_ENUM.LIGHT;\n }\n\n #restoreScheme(): string | null {\n if (!this.#platformService.isPlatformBrowser || !this.#storage) {\n return null;\n }\n\n const stored: string | null = this.#storage.getItem(RT_COLOR_SCHEME_STORAGE_KEY);\n\n return stored && stored !== RT_DEFAULT_SCHEME ? stored : null;\n }\n\n #apply(theme: RtThemeType): void {\n if (!this.#platformService.isPlatformBrowser) {\n return;\n }\n\n const classList: DOMTokenList = this.#document.documentElement.classList;\n\n classList.toggle(RT_DARK_CLASS, theme === RT_THEME_ENUM.DARK);\n classList.toggle(RT_THEME_AUTO_CLASS, theme === RT_THEME_ENUM.AUTO);\n }\n\n #applyScheme(name: string | null): void {\n if (!this.#platformService.isPlatformBrowser) {\n return;\n }\n\n const root: HTMLElement = this.#document.documentElement;\n\n if (name) {\n root.setAttribute(RT_SCHEME_ATTRIBUTE, name);\n } else {\n root.removeAttribute(RT_SCHEME_ATTRIBUTE);\n }\n }\n\n /**\n * Validates a ramp the same way the `rt.color-scheme` Sass mixin does — unknown\n * role or out-of-range tone (must be an integer 0–100) throws. Keeps the JS twin\n * at parity with the build-time generator instead of silently emitting bad rows.\n */\n #validateRamp(name: string, ramp: RtColorSchemeRamp): void {\n if (!name || name === RT_DEFAULT_SCHEME) {\n throw new Error(`registerColorScheme: name must be a non-empty string other than '${RT_DEFAULT_SCHEME}'.`);\n }\n\n const roles: string[] = Object.values(RT_ACCENT_ROLE_ENUM);\n\n for (const role of Object.keys(ramp)) {\n if (!roles.includes(role)) {\n throw new Error(`registerColorScheme(\"${name}\"): unknown role \"${role}\". Allowed roles: ${roles.join(', ')}.`);\n }\n\n for (const tone of Object.keys(ramp[role as RT_ACCENT_ROLE_ENUM] ?? {})) {\n const step: number = Number(tone);\n\n if (!Number.isInteger(step) || step < 0 || step > 100) {\n throw new Error(`registerColorScheme(\"${name}\"): role \"${role}\" tone \"${tone}\" must be an integer 0–100.`);\n }\n }\n }\n }\n\n /** Builds the `:root[data-rt-scheme=\"<name>\"] { --rt-color-{role}-{N}: … }` block (mirrors the Sass mixin). */\n #buildSchemeCss(name: string, ramp: RtColorSchemeRamp): string {\n const declarations: string = Object.entries(ramp)\n .flatMap(([role, tones]: [string, Record<number, string> | undefined]): string[] =>\n Object.entries(tones ?? {}).map(([tone, value]: [string, string]): string => `--rt-color-${role}-${tone}:${value};`)\n )\n .join('');\n\n return `:root[${RT_SCHEME_ATTRIBUTE}=\"${name}\"]{${declarations}}`;\n }\n\n #isDarkApplied(): boolean {\n if (this.#theme() === RT_THEME_ENUM.AUTO) {\n return this.#platformService.isPlatformBrowser && this.#document.defaultView\n ? this.#document.defaultView.matchMedia('(prefers-color-scheme: dark)').matches\n : false;\n }\n\n return this.#theme() === RT_THEME_ENUM.DARK;\n }\n}\n","import { Directive, input, InputSignal } from '@angular/core';\n\nimport { RtThemeType } from './rtui-theme.types';\n\n/**\n * Local theme context (GMT `data-theme` analogue).\n *\n * Sets `data-rt-theme` on the host, re-scoping all adaptive `--rt-*` tokens\n * inside the subtree through `color-scheme` + `light-dark()`:\n *\n * ```html\n * <!-- dark promo card inside a light page -->\n * <section [rtTheme]=\"'dark'\">…</section>\n * ```\n *\n * Note: `color` is inherited as a resolved value — re-apply text tokens\n * on elements inside the context (e.g. `color: var(--rt-text-base-primary)`).\n */\n@Directive({\n standalone: true,\n selector: '[rtTheme]',\n host: {\n '[attr.data-rt-theme]': 'rtTheme() || null',\n },\n})\nexport class RtThemeDirective {\n public readonly rtTheme: InputSignal<RtThemeType | ''> = input<RtThemeType | ''>('');\n}\n","/**\n * Public API Surface of rt-tools\n */\n\n// ui-kit\nexport * from './lib/ui-kit/modal';\nexport * from './lib/ui-kit/scrollable';\nexport * from './lib/ui-kit/side-menu';\nexport * from './lib/ui-kit/spinner';\nexport * from './lib/ui-kit/aside';\nexport * from './lib/ui-kit/buttons';\nexport * from './lib/ui-kit/icon';\nexport * from './lib/ui-kit/toolbar';\nexport * from './lib/ui-kit/header';\nexport * from './lib/ui-kit/table';\nexport * from './lib/ui-kit/providers';\nexport * from './lib/ui-kit/snack-bar';\nexport * from './lib/ui-kit/animation';\nexport * from './lib/ui-kit/info-badge';\nexport * from './lib/ui-kit/toggle';\nexport * from './lib/ui-kit/file-uploader';\nexport * from './lib/ui-kit/dynamic-selectors';\nexport * from './lib/ui-kit/image-uploader';\nexport * from './lib/ui-kit/popover';\nexport * from './lib/ui-kit/action-bar';\nexport * from './lib/ui-kit/theme';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","MatFormField"],"mappings":"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"}
|