ngx-register-base 1.2.2 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +50 -2
- package/esm2022/lib/components/filters/index.mjs +1 -3
- package/esm2022/lib/components/filters/register-table-filter.component.mjs +3 -3
- package/fesm2022/ngx-register-base.mjs +399 -401
- package/fesm2022/ngx-register-base.mjs.map +1 -1
- package/lib/components/filters/index.d.ts +0 -2
- package/package.json +1 -1
- package/schematics/migration-collection.json +5 -0
- package/schematics/ng-update/replace-menu-state-token/index.d.ts +2 -0
- package/schematics/ng-update/replace-menu-state-token/index.js +29 -0
- package/schematics/ng-update/replace-menu-state-token/index.js.map +1 -0
- package/schematics/ng-update/update-prefix/index.js +4 -6
- package/schematics/ng-update/update-prefix/index.js.map +1 -1
- package/schematics/utils/utils.d.ts +15 -0
- package/schematics/utils/utils.js +25 -0
- package/schematics/utils/utils.js.map +1 -0
- package/esm2022/lib/components/filters/register-table-filter.consts.mjs +0 -3
- package/esm2022/lib/components/filters/register-table-filter.types.mjs +0 -2
- package/lib/components/filters/register-table-filter.consts.d.ts +0 -3
- package/lib/components/filters/register-table-filter.types.d.ts +0 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-register-base.mjs","sources":["../../../projects/ngx-register-base/src/lib/components/column-settings/types/column-settings.types.ts","../../../projects/ngx-register-base/src/lib/components/column-settings/consts/column-settings.consts.ts","../../../projects/ngx-register-base/src/lib/components/column-settings/components/column-settings-template/column-settings-template.component.ts","../../../projects/ngx-register-base/src/lib/components/column-settings/components/column-settings-template/column-settings-template.component.html","../../../projects/ngx-register-base/src/lib/services/dialog/dialog.service.ts","../../../projects/ngx-register-base/src/lib/consts/date-time.consts.ts","../../../projects/ngx-register-base/src/lib/directives/date/date-time.types.ts","../../../projects/ngx-register-base/src/lib/services/date-time.service.ts","../../../projects/ngx-register-base/src/lib/core/input-control/input-control.ts","../../../projects/ngx-register-base/src/lib/consts/inputs.consts.ts","../../../projects/ngx-register-base/src/lib/services/inputs.service.ts","../../../projects/ngx-register-base/src/lib/utils/functions.ts","../../../projects/ngx-register-base/src/lib/utils/get-url-segment.ts","../../../projects/ngx-register-base/src/lib/utils/rxjs.ts","../../../projects/ngx-register-base/src/lib/utils/select-all-utils.ts","../../../projects/ngx-register-base/src/lib/services/filter/filters-transmit.service.ts","../../../projects/ngx-register-base/src/lib/services/filter/filters.service.ts","../../../projects/ngx-register-base/src/lib/types/inputs.types.ts","../../../projects/ngx-register-base/src/lib/types/register-base.types.ts","../../../projects/ngx-register-base/src/lib/services/inputs-state.service.ts","../../../projects/ngx-register-base/src/lib/services/filter/filters-state.service.ts","../../../projects/ngx-register-base/src/lib/services/resize-window-observer.service.ts","../../../projects/ngx-register-base/src/lib/consts/register-base.consts.ts","../../../projects/ngx-register-base/src/lib/components/checkbox-selector/checkbox-selector.types.ts","../../../projects/ngx-register-base/src/lib/services/selected-objects-state.service.ts","../../../projects/ngx-register-base/src/lib/consts/month.consts.ts","../../../projects/ngx-register-base/src/lib/components/reset-settings-form/reset-settings-form.component.ts","../../../projects/ngx-register-base/src/lib/components/reset-settings-form/reset-settings-form.component.html","../../../projects/ngx-register-base/src/lib/components/divider/divider.component.ts","../../../projects/ngx-register-base/src/lib/components/divider/divider.component.html","../../../projects/ngx-register-base/src/lib/components/column-settings/column-settings.component.ts","../../../projects/ngx-register-base/src/lib/components/column-settings/column-settings.component.html","../../../projects/ngx-register-base/src/lib/components/filter-button/filter-button.component.ts","../../../projects/ngx-register-base/src/lib/components/filter-button/filter-button.component.html","../../../projects/ngx-register-base/src/lib/components/filters/register-table-filter.consts.ts","../../../projects/ngx-register-base/src/lib/core/form-group-wrapper/errors-consts.ts","../../../projects/ngx-register-base/src/lib/core/form-group-wrapper/form-group-wrapper.ts","../../../projects/ngx-register-base/src/lib/core/param/param.tokens.ts","../../../projects/ngx-register-base/src/lib/core/param/param-base.ts","../../../projects/ngx-register-base/src/lib/core/param/param-date-base.ts","../../../projects/ngx-register-base/src/lib/store/fast-query-store.service.ts","../../../projects/ngx-register-base/src/lib/core/param/param-select-base.ts","../../../projects/ngx-register-base/src/lib/core/param/param-text-base.ts","../../../projects/ngx-register-base/src/lib/core/register-base/register-base.store.ts","../../../projects/ngx-register-base/src/lib/core/register-base/register-base.ts","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.ts","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.html","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.ts","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.html","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-list.service.ts","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.ts","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.html","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.ts","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.html","../../../projects/ngx-register-base/src/lib/components/sliding-panel/sliding-panel.component.ts","../../../projects/ngx-register-base/src/lib/components/sliding-panel/sliding-panel.component.html","../../../projects/ngx-register-base/src/lib/components/filters/register-table-filter.component.ts","../../../projects/ngx-register-base/src/lib/components/filters/register-table-filter.component.html","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filters-section/filters-section.component.ts","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filters-section/filters-section.component.html","../../../projects/ngx-register-base/src/lib/utils/prizm.shared.module.ts","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list.module.ts","../../../projects/ngx-register-base/src/lib/components/sliding-panel/sliding-panel.module.ts","../../../projects/ngx-register-base/src/lib/components/filters/register-table-filter.module.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-calendar-year/param-calendar-year.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-calendar-year/param-calendar-year.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-custom/param-custom.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-custom/param-custom.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-date/param-date.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-date/param-date.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-date-range/param-date-range.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-date-range/param-date-range.component.html","../../../projects/ngx-register-base/src/lib/directives/date/format-date.pipe.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-date-time/param-date-time.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-date-time/param-date-time.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-date-time-range/param-date-time-range.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-date-time-range/param-date-time-range.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-month/param-month.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-month/param-month.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-month-range/param-month-range.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-month-range/param-month-range.component.html","../../../projects/ngx-register-base/src/lib/consts/params.consts.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-multi-select/param-multi-select.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-multi-select/param-multi-select.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-select/param-select.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-select/param-select.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-switcher/param-switcher.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-switcher/param-switcher.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-switcher-date-time-range/types/param-switcher-date-time-range.types.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-switcher-date-time-range/consts/param-switcher-date-time-range.consts.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-text/param-text.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-text/param-text.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-textarea/param-textarea.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-textarea/param-textarea.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-toggle/param-toggle.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-toggle/param-toggle.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree/consts/param-tree.consts.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree/tokens/param-tree.tokens.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree/services/param-tree.service.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree/services/sync-tree-loader.service.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree/utils/param-tree.utils.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree/param-tree.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree/param-tree.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree-select/param-tree-select.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree-select/param-tree-select.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/inputs.module.ts","../../../projects/ngx-register-base/src/lib/components/page-menu/schema/sproc-page-menu.consts.ts","../../../projects/ngx-register-base/src/lib/components/page-menu/schema/sproc-page-menu.tokens.ts","../../../projects/ngx-register-base/src/lib/components/page-menu/sproc-page-menu.component.ts","../../../projects/ngx-register-base/src/lib/components/page-menu/sproc-page-menu.component.html","../../../projects/ngx-register-base/src/lib/components/page-menu/schema/sproc-page-menu.types.ts","../../../projects/ngx-register-base/src/lib/components/menu-constructor/store/sproc-menu-constructor.consts.ts","../../../projects/ngx-register-base/src/lib/components/menu-constructor/store/sproc-menu.tokens.ts","../../../projects/ngx-register-base/src/lib/components/menu-constructor/sproc-menu-constructor.component.ts","../../../projects/ngx-register-base/src/lib/components/menu-constructor/sproc-menu-constructor.component.html","../../../projects/ngx-register-base/src/lib/components/menu-constructor/store/sproc-abstract-menu-constructor.store.ts","../../../projects/ngx-register-base/src/lib/components/register-table/directives/cell-template.directive.ts","../../../projects/ngx-register-base/src/lib/components/register-table/model/schema.ts","../../../projects/ngx-register-base/src/lib/services/dom-intersection.service.ts","../../../projects/ngx-register-base/src/lib/components/register-table/directives/header-template.directive.ts","../../../projects/ngx-register-base/src/lib/services/key-pressed.service.ts","../../../projects/ngx-register-base/src/lib/components/register-table/pipes/class-by-type.pipe.ts","../../../projects/ngx-register-base/src/lib/components/register-table/pipes/sticky-column.pipe.ts","../../../projects/ngx-register-base/src/lib/components/register-table/consts/register-table.consts.ts","../../../projects/ngx-register-base/src/lib/components/checkbox-selector/checkbox-selector.component.ts","../../../projects/ngx-register-base/src/lib/components/checkbox-selector/checkbox-selector.component.html","../../../projects/ngx-register-base/src/lib/directives/number/number-only.directive.ts","../../../projects/ngx-register-base/src/lib/directives/sticky/sticky-relative.service.ts","../../../projects/ngx-register-base/src/lib/directives/sticky/sticky.directive.ts","../../../projects/ngx-register-base/src/lib/directives/sticky/sticky-relative.directive.ts","../../../projects/ngx-register-base/src/lib/components/paginator/paginator.component.ts","../../../projects/ngx-register-base/src/lib/components/paginator/paginator.component.html","../../../projects/ngx-register-base/src/lib/components/register-table/register-table.component.ts","../../../projects/ngx-register-base/src/lib/components/register-table/register-table.component.html","../../../projects/ngx-register-base/src/lib/components/search-input/search-input.component.ts","../../../projects/ngx-register-base/src/lib/components/search-input/search-input.component.html","../../../projects/ngx-register-base/src/ngx-register-base.ts"],"sourcesContent":["export interface ITableColumnSettings {\n columns: IColumnSettings[];\n stickyLeft: IColumnSettings[];\n stickyRight: IColumnSettings[];\n}\n\nexport interface IColumnSettings {\n id: string;\n name: string;\n status: EColumnStatus | IColumnStatus;\n children?: IColumnSettings[];\n}\n\n/** @deprecated используйте EColumnStatus */\nexport type IColumnStatus = 'sticky' | 'hidden' | 'default';\n\nexport enum EColumnStatus {\n STICKY = 'sticky',\n HIDDEN = 'hidden',\n DEFAULT = 'default',\n}\n\nexport interface IColumnSettingsChanges {\n settings: ITableColumnSettings | null;\n id?: string;\n}\n","// Icons\nexport const ICON_SETTINGS = '/assets/ngx-register-base/icons/settings.svg';\nexport const ICON_ERASER = '/assets/ngx-register-base/icons/eraser.svg';\nexport const ICON_CANCEL_CLOSE = '/assets/ngx-register-base/icons/cancel-close.svg';\nexport const ICON_EDITOR_DOTS = '/assets/ngx-register-base/icons/16-editor-dots.svg';\nexport const ICON_CHEVRONS_RIGHT = '/assets/ngx-register-base/icons/chevrons/chevrons-right.svg';\nexport const ICON_EYE = '/assets/ngx-register-base/icons/eye.svg';\nexport const ICON_EYE_CLOSED = '/assets/ngx-register-base/icons/eye-closed.svg';\nexport const ICON_LOCK = '/assets/ngx-register-base/icons/lock.svg';\n","import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core';\nimport { EColumnStatus, IColumnSettings } from '../../types/column-settings.types';\nimport {\n CdkDrag,\n CdkDragDrop,\n CdkDragPlaceholder,\n CdkDropList,\n moveItemInArray,\n transferArrayItem,\n} from '@angular/cdk/drag-drop';\nimport { NgOptimizedImage } from '@angular/common';\nimport { TuiHintDirective } from '@taiga-ui/core';\nimport {\n ICON_CHEVRONS_RIGHT,\n ICON_EDITOR_DOTS,\n ICON_EYE,\n ICON_EYE_CLOSED,\n ICON_LOCK,\n} from '../../consts/column-settings.consts';\nimport { TuiExpand } from '@taiga-ui/experimental';\n\n@Component({\n selector: 'sproc-column-settings-template',\n standalone: true,\n imports: [\n NgOptimizedImage,\n CdkDrag,\n CdkDragPlaceholder,\n CdkDropList,\n TuiExpand,\n TuiHintDirective,\n ],\n templateUrl: './column-settings-template.component.html',\n styleUrl: './column-settings-template.component.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ColumnSettingsTemplateComponent {\n public column = input.required<IColumnSettings>();\n public parent = input<IColumnSettings>();\n public expand = input(true);\n\n protected readonly iconEditorDots = ICON_EDITOR_DOTS;\n protected readonly iconChevron = ICON_CHEVRONS_RIGHT;\n protected readonly iconEye = ICON_EYE;\n protected readonly iconEyeClosed = ICON_EYE_CLOSED;\n protected readonly iconLock = ICON_LOCK;\n\n protected readonly EColumnStatus = EColumnStatus;\n\n protected readonly status = computed(() => this.column().status);\n protected readonly canExpand = computed(() => {\n const wantExpand = this.expand();\n const children = this.column().children ?? [];\n const haveChildren = children.length > 0;\n\n return wantExpand && haveChildren;\n });\n protected readonly expanded = signal(false);\n\n protected collapseNested(): void {\n this.expanded.set(false);\n }\n\n protected toggleNested(): void {\n this.expanded.update((value) => !value);\n }\n\n protected isHiddenColumn(column: IColumnSettings): boolean {\n return column.status === EColumnStatus.HIDDEN;\n }\n\n protected toggleVisibility(column: IColumnSettings): void {\n const isHidden = column.status === EColumnStatus.HIDDEN;\n column.status = isHidden ? EColumnStatus.DEFAULT : EColumnStatus.HIDDEN;\n\n const { children } = column;\n\n // Если есть дочерние узлы то устанавливать статус текущего узла\n if (children) {\n column.children = children.map((childColumn) => ({ ...childColumn, status: column.status }));\n }\n\n const parentColumn = this.parent();\n const parentChildren = parentColumn?.children;\n\n if (parentColumn && parentChildren && parentChildren.length > 0) {\n const allChildrenHidden = parentChildren.every(\n (childColumn) => childColumn.status === EColumnStatus.HIDDEN\n );\n\n parentColumn.status = allChildrenHidden ? EColumnStatus.HIDDEN : EColumnStatus.DEFAULT;\n }\n }\n\n protected dropIntoChildren(event: CdkDragDrop<IColumnSettings[]>): void {\n const currentChildren = this.column().children;\n\n if (!currentChildren) {\n console.warn('Попытка переместить в столбец без дочернего массива:', this.column());\n return;\n }\n\n if (event.previousContainer === event.container) {\n moveItemInArray(currentChildren, event.previousIndex, event.currentIndex);\n } else {\n transferArrayItem(\n event.previousContainer.data,\n currentChildren,\n event.previousIndex,\n event.currentIndex\n );\n }\n }\n}\n","@let col = column();\n@let isHidden = isHiddenColumn(col);\n@let currentEyeIcon = isHidden ? iconEyeClosed : iconEye;\n@let childrenColumns = col.children ?? [];\n\n<div\n class=\"column-item\"\n [class.hidden]=\"isHidden\"\n cdkDrag\n [cdkDragData]=\"col\"\n (cdkDragStarted)=\"collapseNested()\"\n>\n <img [ngSrc]=\"iconEditorDots\" [width]=\"16\" [height]=\"32\" alt=\"\" />\n @if (canExpand()) {\n <img\n class=\"expanded\"\n [ngSrc]=\"iconChevron\"\n [width]=\"16\"\n [height]=\"16\"\n [attr.expanded]=\"expanded()\"\n alt=\"\"\n (click)=\"toggleNested()\"\n />\n }\n <span class=\"column-item__name\">{{ col.name }}</span>\n @if (status() === EColumnStatus.STICKY) {\n <img\n class=\"pointer\"\n [ngSrc]=\"iconLock\"\n [width]=\"16\"\n [height]=\"16\"\n tuiHint=\"Нельзя скрыть закрепленную колонку\"\n />\n } @else {\n <img\n class=\"eye-icon\"\n [ngSrc]=\"currentEyeIcon\"\n [width]=\"16\"\n [height]=\"16\"\n tuiHint=\"Показать/Скрыть колонку\"\n (click)=\"toggleVisibility(col)\"\n />\n }\n\n <ng-template cdkDragPlaceholder>\n <div class=\"custom-placeholder\"></div>\n </ng-template>\n</div>\n\n@if (canExpand()) {\n <tui-expand\n class=\"nested-columns\"\n cdkDropList\n [expanded]=\"expanded()\"\n [cdkDropListData]=\"childrenColumns\"\n (cdkDropListDropped)=\"dropIntoChildren($event)\"\n >\n @for (childCol of childrenColumns; track childCol.id) {\n <sproc-column-settings-template\n [column]=\"childCol\"\n [parent]=\"col\"\n ></sproc-column-settings-template>\n }\n </tui-expand>\n}\n","import { inject, Injectable, Injector } from '@angular/core';\nimport { PrizmDialogService } from '@prizm-ui/components';\nimport { Observable } from 'rxjs';\nimport { DialogContext, DialogOptions, DialogOverlayInsidePlacement } from './dialog.types';\nimport { tuiDialog, TuiDialogOptions, TuiDialogService } from '@taiga-ui/core';\nimport { PolymorpheusContent } from '@taiga-ui/polymorpheus';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DialogService {\n private readonly _dialogService = inject(PrizmDialogService);\n private readonly _tuiDialogService = inject(TuiDialogService);\n\n public openModal(\n template: unknown,\n config: Partial<DialogOptions<unknown, unknown>>\n ): Observable<any> {\n return this._dialogService.open(template, {\n closeable: false,\n width: 440,\n position: DialogOverlayInsidePlacement.CENTER,\n backdrop: true,\n ...config,\n });\n }\n\n public openModalTaiga<Context extends DialogContext, Result = any>(\n component: new (...args: any[]) => unknown,\n context: Context,\n injector?: Injector\n ): Observable<Result> {\n const dialog = tuiDialog(component, {\n injector,\n closeable: context.closeable ?? false,\n dismissible: context.dismissible ?? true,\n size: context.size ?? 'auto',\n }) as (data: any) => Observable<Result>;\n\n return dialog({\n ...context,\n });\n }\n\n /**\n * Универсальная функция открытия диалога\n *\n * @param content - контент (компонент, ng-template или функция)\n * @param context - данные для передачи в контент\n * @param options - доп. настройки диалога (ширина, заголовок и т.д.)\n */\n public openTuiDialogWithTemplate<T = void>(\n content: PolymorpheusContent<TuiDialogOptions<T>>,\n context?: Partial<TuiDialogOptions<T>>,\n options?: Partial<TuiDialogOptions<T>>\n ): Observable<T> {\n return this._tuiDialogService.open<T>(content, {\n ...context,\n ...options,\n });\n }\n}\n","export const STORED_TIMEZONE = 'storedTimezone';\n","import { PrizmDay, PrizmTime } from '@prizm-ui/components';\n\nexport enum EDatePattern {\n MONTH_YEAR = 'MM.yyyy',\n DATE = 'dd.MM.yyyy',\n SHORT_YEAR_DATE = 'dd.MM.yy',\n DATE_TIME_WITHOUT_SECONDS = 'dd.MM.yyyy HH:mm',\n DATE_TIME = 'dd.MM.yyyy HH:mm:ss',\n YEAR_MONTH_DAY = 'yyyy-MM-dd',\n DD_MM_YYYY = 'dd-MM-yyyy',\n DATE_TIME_ISO_MARKED_TIMEZONE = `yyyy-MM-dd'T'HH:mm:ss`,\n YYYY_MM_DD = 'yyyy/MM/dd',\n MMMM_YYYY = 'MMMM YYYY',\n DATE_TIME_ISO_PATTERN = 'YYYY-MM-DDTHH:mm:ss',\n DATE_TIME_FOR_TRACKER = 'YYYY-MM-DD HH:mm:ss',\n DATE_TIME_FOR_TRACKER_NOT_SIMPLE = 'yyyy-MM-dd HH:mm:ss',\n TUI_YMD = 'YMD',\n DAY = 'd',\n HOUR_MINUTE = 'HH:mm',\n}\n\nexport enum EMomentPattern {\n YYYY_MM_DD = 'YYYY-MM-DD',\n YYYYMMDD = 'yyyy/MM/DD',\n}\n\nexport enum ETimezone {\n UTC = '+00:00',\n MSK = '+03:00',\n AQT = '+05:00',\n NVS = '+07:00',\n IRK = '+08:00',\n YAK = '+09:00',\n}\n\nexport type SmaPrizmDateTime = [PrizmDay, PrizmTime | undefined];\n","import { Injectable } from '@angular/core';\nimport { format } from 'date-fns';\nimport moment, { Moment } from 'moment-timezone';\nimport { BehaviorSubject } from 'rxjs';\nimport { STORED_TIMEZONE } from '../consts/date-time.consts';\nimport { EDatePattern, ETimezone, SmaPrizmDateTime } from '../directives/date/date-time.types';\nimport {\n PrizmDateTimeRange,\n PrizmDay,\n PrizmDayRange,\n PrizmTime,\n PrizmTimeRange,\n} from '@prizm-ui/components';\nimport { TuiDay } from '@taiga-ui/cdk';\n\nexport interface ITimeZone {\n time_diff: string;\n string: string;\n value: string;\n}\n\nexport interface ICurrentTime_TZ {\n current_time: string;\n picked_time_zone: ITimeZone;\n}\n\n// Не менять формат, названия и ' ' оставлять всегда\n// 'UTC ' - оставлять\n// Eсли менять,изменить фильтры в ДО\nexport const timezoneSelectItems = [\n 'UTC +00:00',\n 'Europe/Moscow +03:00',\n 'Asia/Aqtau +05:00',\n 'Asia/Yekaterinburg +05:00',\n 'Asia/Novosibirsk +07:00',\n 'Asia/Krasnoyarsk +07:00',\n 'Asia/Irkutsk +08:00',\n 'Asia/Yakutsk +09:00',\n];\nexport const TIME_ZONES: ITimeZone[] = [\n {\n value: 'Etc/GMT',\n string: '+00:00 UTC',\n time_diff: ETimezone.UTC,\n },\n {\n value: 'Europe/Moscow',\n string: '+03:00 Москва',\n time_diff: ETimezone.MSK,\n },\n {\n value: 'Asia/Aqtau',\n string: '+05:00 Тюмень',\n time_diff: ETimezone.AQT,\n },\n {\n value: 'Asia/Novosibirsk',\n string: '+07:00 Томск',\n time_diff: ETimezone.NVS,\n },\n {\n value: 'Asia/Irkutsk',\n string: '+08:00 Иркутск',\n time_diff: ETimezone.IRK,\n },\n {\n value: 'Asia/Yakutsk',\n string: '+09:00 Якутск',\n time_diff: ETimezone.YAK,\n },\n];\n\nexport const TIME_ZONE_HINTS: Record<string, string> = {\n '+00:00': '+00:00 UTC',\n '+03:00': 'ГПН-БС, ГПН-ГЕО, ГПН-НС, ГПН-ТП, ГПН-Щ, МНГП, НТЦ, Парадная, СПД',\n '+05:00':\n 'ГПН-А, ГПН-БГП, ГПН-З, ГПН-ИТО, ГПН-М, ГПН-Н, ГПН-О, ГПН-Р, ГПН-С, ГПН-Х, ГПН-Я, МРТ, МсНГ, МЭН, ННГГФ, НТН, НЭН, СН-МНГ',\n '+07:00': 'ГПН-В, МНГ-Г, ИН-ВНК',\n '+08:00': 'Игнялинское м/р',\n '+09:00': 'Чаяндинское м/р, Тымпучиканское м/р, Вакунайское м/р, Тас-Юряхское м/р',\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DateTimeService {\n public readonly currentTimeTZ: ICurrentTime_TZ = {\n picked_time_zone: TIME_ZONES[1],\n current_time: new Date().toISOString(),\n };\n\n private readonly _isTimeZoneChanged = new BehaviorSubject<ITimeZone>(\n this.currentTimeTZ.picked_time_zone\n );\n public isTimeZoneChanged$ = this._isTimeZoneChanged.asObservable();\n\n public constructor() {\n const storedTimeZone = localStorage.getItem(STORED_TIMEZONE);\n\n if (storedTimeZone) {\n this.currentTimeTZ.picked_time_zone = JSON.parse(storedTimeZone) as ITimeZone;\n } else {\n this.currentTimeTZ.current_time = this.getCurrentTime();\n }\n }\n\n public updateTimezone(time_zone: ITimeZone): void {\n localStorage.setItem(STORED_TIMEZONE, JSON.stringify(time_zone));\n\n this.currentTimeTZ.picked_time_zone = time_zone;\n this.currentTimeTZ.current_time = this.getCurrentTime();\n this._isTimeZoneChanged.next(this.currentTimeTZ.picked_time_zone);\n }\n\n public refreshDatePicked(): void {\n this._isTimeZoneChanged.next(this.currentTimeTZ.picked_time_zone);\n }\n\n public getCurrentTime(): string {\n const options: Intl.DateTimeFormatOptions = {\n timeZone: this.currentTimeTZ.picked_time_zone.value,\n hour12: false,\n hour: '2-digit',\n minute: '2-digit',\n };\n return new Date().toLocaleString('en-GB', options);\n }\n\n public triggerTimeUpdate(timeZone: ITimeZone): void {\n this._isTimeZoneChanged.next(timeZone);\n }\n\n /**\n * @param utc время в UTC\n * @param pattern\n * Строка состоящая из:\n *dd - день,\n *MM - месяц,\n *yyyy - год,\n *HH - часы в 24ч-формате,\n *hh - часы в 12ч-формате,\n *mm - минуты,\n *ss - секунды,\n *sss - миллисекунды,\n */\n public parseDate(utc: string, pattern: string): string {\n const date: Date = this.isoToLocalDate(utc);\n\n return format(date, pattern);\n }\n\n /** @deprecated use parseDate(iso: string, pattern: string): string method */\n public parseDateToMMYYYY(iso: string): string {\n const options: Intl.DateTimeFormatOptions = {\n hour12: false,\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n };\n\n const date = this.isoToLocalDate(iso).toLocaleString('en-GB', options);\n const [_, month, year] = date.split('/');\n\n return `${month}.${year}`;\n }\n\n /** @deprecated use parseDate(iso: string, pattern: string): string method */\n public parseDateToDDMMYYYY(iso: string): string {\n const options: Intl.DateTimeFormatOptions = {\n hour12: false,\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n };\n\n const date = this.isoToLocalDate(iso).toLocaleString('en-GB', options);\n const [day, month, year] = date.split('/');\n\n return `${day}.${month}.${year}`;\n }\n\n public isoToLocalDate(iso: string, tzDiff?: string): Date {\n const date = this.isoToUTCDate(iso);\n let diffTZ = tzDiff;\n if (!tzDiff) {\n diffTZ = this.currentTimeTZ.picked_time_zone.time_diff;\n }\n\n const hours = Number.parseInt(diffTZ!, 10);\n date.setHours(date.getHours() + hours);\n\n return date;\n }\n\n public isoToUTCDate(iso: string): Date {\n let dateString = iso;\n\n // Перевод из таймзоны сервера к UTC\n if (this._hasTimeZone(iso)) {\n dateString = new Date(iso).toISOString();\n }\n\n if (dateString.includes('Z')) {\n dateString = dateString.slice(0, dateString.lastIndexOf('Z'));\n }\n\n return new Date(dateString);\n }\n\n private _hasTimeZone(iso: string): boolean {\n const timeZoneRegex = /[+-]\\d{2}(:\\d{2})?$/;\n\n return timeZoneRegex.test(iso);\n }\n\n /**\n * Возвращает дату конвертированную в ISO формат без учета таймзоны\n * */\n public dateToIsoWithoutTimeZone(date: Date): string | null {\n let result = null;\n\n if (date) {\n const timestamp = date.getTime() - date.getTimezoneOffset() * 60_000;\n const correctDate = new Date(timestamp);\n\n result = correctDate.toISOString();\n }\n\n return result;\n }\n\n public formatDateSave(date?: string | null, option?: 'YMD'): string {\n let result = '';\n if (date) {\n result = option ? format(date, 'yyyy-MM-dd') : format(date, EDatePattern.DATE);\n }\n return result;\n }\n\n public formatTimeSave(date?: string): string {\n const dateTime: Date = new Date(date!);\n const result = [dateTime.getHours(), dateTime.getMinutes(), dateTime.getSeconds()]\n .map((time) => (time < 10 ? `0${time}` : time))\n .join(':');\n return result;\n }\n\n public toISOString(date: Date, tzDiff?: string): string {\n let diffTZ = tzDiff;\n if (!tzDiff) {\n diffTZ = this.currentTimeTZ.picked_time_zone.time_diff;\n }\n\n const m = this._momentWithTZ(date, diffTZ!);\n\n return m.toISOString();\n }\n\n public _momentWithTZ(date: Date, timezone: string): Moment {\n const iso = this._dateToISOSliceZ(date);\n let tz = timezone;\n if (timezone === ETimezone.UTC) {\n tz = 'Z';\n }\n\n return moment.parseZone(`${iso}${tz}`);\n }\n\n private _dateToISOSliceZ(date: Date): string {\n const iso = this.dateToIsoWithoutTimeZone(date)!;\n\n return iso.includes('Z') ? iso.slice(0, iso.lastIndexOf('Z')) : iso;\n }\n\n public convertDateToISOWithTZ(date: Date, tz: string): string {\n const pad = (str: number) => str.toString().padStart(2, '0');\n const datePart = `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;\n const timePart = `${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`;\n\n return `${datePart}T${timePart}${tz}`;\n }\n\n public now(): Date {\n const date = new Date();\n const [hour, minutes] = this.currentTimeTZ.current_time\n .split(':')\n .map((value) => Number.parseInt(value, 10));\n date.setHours(hour);\n date.setMinutes(minutes);\n\n return date;\n }\n\n /**\n * return объект типа moment с таймзоной выбранной в приложении\n * */\n public momentNowWithLocalTimezone(): Moment {\n return moment.tz(this.currentTimeTZ.picked_time_zone.value);\n }\n\n public nowUTC(): Date {\n return new Date(moment.utc().format());\n }\n\n public getWorkingDatesCount(startDate: Date, endDate: Date): number {\n const sunday = 0;\n const saturday = 6;\n\n let count = 0;\n const currentDate = new Date(startDate);\n\n while (currentDate <= endDate) {\n const dayOfWeek = currentDate.getDay();\n\n if (dayOfWeek !== sunday && dayOfWeek !== saturday) {\n count += 1;\n }\n\n currentDate.setDate(currentDate.getDate() + 1);\n }\n\n return count;\n }\n\n public getCurrentDateWithoutTime(): Date {\n const currentDate = new Date();\n\n currentDate.setHours(0);\n currentDate.setMinutes(0);\n currentDate.setSeconds(0);\n currentDate.setMilliseconds(0);\n\n return currentDate;\n }\n\n public getDateWithoutTime(date: Date): Date {\n date.setHours(0);\n date.setMinutes(0);\n date.setSeconds(0);\n date.setMilliseconds(0);\n\n return date;\n }\n\n public getXMonthBackDate(monthBackNumber: number): Date {\n const currentDate = new Date();\n currentDate.setMonth(currentDate.getMonth() - monthBackNumber);\n return currentDate;\n }\n\n public prizmDateTimeRangeToNativeDates(range: PrizmDateTimeRange): { from: Date; to: Date } {\n const { dayRange, timeRange } = range;\n\n const from = this.prizmDateTimeToNativeDate([dayRange.from, timeRange?.from]);\n const to = this.prizmDateTimeToNativeDate([dayRange.to, timeRange?.to]);\n\n return { from, to };\n }\n\n public prizmDateTimeRangeFromNativeDates(from: Date, to: Date): PrizmDateTimeRange {\n return new PrizmDateTimeRange(\n PrizmDayRange.fromLocalNativeDate(from, to),\n new PrizmTimeRange(PrizmTime.fromLocalNativeDate(from), PrizmTime.fromLocalNativeDate(to))\n );\n }\n\n public prizmDateTimeToNativeDate(prizmDateTime: SmaPrizmDateTime): Date {\n const [day, time] = prizmDateTime;\n const date = new Date(day.toLocalNativeDate());\n\n if (time) {\n date.setHours(time.hours, time.minutes, time.seconds, time.ms);\n }\n\n return date;\n }\n\n public getTuiDayFromString(date: string): TuiDay {\n const localDate = this.isoToLocalDate(date);\n return new TuiDay(localDate.getFullYear(), localDate.getMonth(), localDate.getDate());\n }\n\n public getTuiDayFromDate(date: Date): TuiDay {\n return new TuiDay(date.getFullYear(), date.getMonth(), date.getDate());\n }\n\n public transferTuiDayToString(date: TuiDay | null, pattern?: EDatePattern): string | null {\n return date ? format(date.toLocalNativeDate(), pattern ?? EDatePattern.YEAR_MONTH_DAY) : null;\n }\n\n public toSmaPrizmDateTime(dateString: string): SmaPrizmDateTime {\n const date = new Date(dateString);\n const hours = date.getHours();\n const min = date.getMinutes();\n const day = PrizmDay.fromLocalNativeDate(date);\n const time = new PrizmTime(hours, min);\n return [day, time];\n }\n}\n","import {\n AsyncValidatorFn,\n FormControl,\n FormControlOptions,\n FormControlState,\n ValidatorFn,\n} from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\nimport { IInputControl, InputControlGqlValue } from '../../types/inputs.types';\nimport { signal, WritableSignal } from '@angular/core';\n\nexport class InputControl<ValueType = any, SavedValueType = any>\n extends FormControl\n implements IInputControl<ValueType, SavedValueType>\n{\n public saved_value$!: BehaviorSubject<SavedValueType | null>;\n public gql_value: InputControlGqlValue;\n /** По полю применена фильтрация */\n applied?: WritableSignal<boolean>;\n\n constructor(\n value: FormControlState<ValueType> | ValueType,\n validatorOrOpts?: ValidatorFn | ValidatorFn[] | FormControlOptions | null,\n asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null\n ) {\n super(value, validatorOrOpts, asyncValidator);\n this.saved_value$ = new BehaviorSubject<SavedValueType | null>(null);\n this.applied = signal(false);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { IInputsStateConfig } from '../types';\n\nexport const INPUTS_STATE_CONFIG_KEY = new InjectionToken<IInputsStateConfig>(\n 'INPUTS_STATE_CONFIG_KEY'\n);\n\nexport const WARN_SEARCH_INPUT_UNDEFINED =\n 'Поле поиска не инициализировано. Пожалуйста задайте конфигурацию searchInput: true при провайде INPUTS_STATE_CONFIG_KEY';\n","import { Injectable, Injector, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { FormGroupWrapper } from '../core/form-group-wrapper/form-group-wrapper';\nimport { ITpUserSettingsSettingsFilter } from '../types/register-base.types';\nimport { ExtractForm } from '../types/sub-types';\nimport { IInputControl, IInputsStateConfig } from '../types/inputs.types';\nimport { InputControl } from '../core/input-control/input-control';\nimport { INPUTS_STATE_CONFIG_KEY, WARN_SEARCH_INPUT_UNDEFINED } from '../consts/inputs.consts';\n\n@Injectable()\nexport class InputsService<FormType> implements OnDestroy {\n protected readonly config: IInputsStateConfig;\n protected readonly unsubscribe$ = new Subject<void>();\n\n private readonly _searchInput: IInputControl<string | null> | undefined;\n public inputs!: FormGroupWrapper<FormType>;\n\n constructor(private readonly injector: Injector) {\n this.config = this.injector.get(INPUTS_STATE_CONFIG_KEY, {});\n\n const { searchInput } = this.config;\n\n if (searchInput) {\n this._searchInput = new InputControl<string | null>(null);\n }\n }\n\n public get searchInput(): IInputControl<string | null> | undefined {\n if (!this._searchInput) {\n console.warn(WARN_SEARCH_INPUT_UNDEFINED);\n }\n\n return this._searchInput;\n }\n\n public get searchValue(): string | null | undefined {\n return this.searchInput?.getRawValue();\n }\n\n public init(group: FormGroupWrapper<FormType>): void {\n this.inputs = group;\n }\n\n public get values(): ExtractForm<FormType> {\n return this.inputs.getRawValue() as ExtractForm<FormType>;\n }\n\n public get dirtyValues(): Partial<ExtractForm<FormType>> {\n return this.inputs.getDirtyValues();\n }\n\n public clear(): void {\n this.inputs.reset();\n }\n\n public setUserSettingsFilterValues(values: ITpUserSettingsSettingsFilter[]): void {\n this.clear();\n\n for (const { id, value } of values) {\n const key = id as keyof FormType;\n const control = this._control<any, any>(key);\n\n if (control?.saved_value$) {\n control.saved_value$.next(value);\n } else {\n console.warn(`Не найдено поле: ${id} для установки значения:`, value);\n }\n }\n }\n\n private _control<ValueType extends FormType[keyof FormType], SavedValueType>(\n key: keyof FormType\n ): IInputControl<ValueType, SavedValueType> {\n return this.inputs.controls[key] as IInputControl<ValueType, SavedValueType>;\n }\n\n public get userSettingsFilter(): ITpUserSettingsSettingsFilter[] {\n return Object.entries(this.inputs.controls).map(([id, abstractControl]) => {\n const control = abstractControl as IInputControl;\n const value = control.saved_value$.getValue();\n const savedValue = value === null ? null : value;\n\n return {\n id,\n value: savedValue,\n };\n });\n }\n\n public get gqlFilter(): Record<string, any>[] {\n const filter: Record<string, any>[] = [];\n\n for (const abstractControl of Object.values(this.inputs.controls)) {\n const control = abstractControl as IInputControl;\n\n if (control.gql_value) {\n filter.push(control.gql_value);\n }\n\n control.applied?.set(!!control.gql_value);\n }\n\n if (this.searchValue && this.searchInput?.gql_value) {\n filter.push(this.searchInput.gql_value);\n }\n\n return filter;\n }\n\n public ngOnDestroy(): void {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","export function isNonNull<T>(value: T): value is NonNullable<T> {\n return value !== null;\n}\n\nexport function isDefined<T>(value: T | null | undefined): value is T {\n return value !== null && value !== undefined;\n}\n\nexport function toPx(n: number): string {\n return `${n || 0}px`;\n}\n","export const CARD = 'card';\n\ntype SegmentPosition = 'first' | 'last';\n\nconst getCardSegment = (url: URL): string | null => {\n if (url.pathname.includes(CARD) && url.search) {\n const id = url.searchParams.get('id');\n if (id) {\n const segments = url.pathname.split('/').filter(Boolean);\n const cardIndex = segments.indexOf(CARD.replace(/^\\//, ''));\n\n if (cardIndex !== -1 && cardIndex > 0) {\n const tableIndex = cardIndex - 1;\n const relevantPath = segments.slice(tableIndex, cardIndex + 1).join('/');\n return `${relevantPath}?id=${id}`;\n }\n }\n }\n return null;\n};\n\nconst getSegmentOfPathName = (pathname: string, position: SegmentPosition): string => {\n const url = new URL(pathname, window.location.origin);\n const segments = url.pathname.split('/').filter(Boolean);\n\n if (position === 'first') {\n return segments[0] ?? '/';\n }\n\n const cardSegment = getCardSegment(url);\n if (cardSegment !== null) {\n return cardSegment;\n }\n\n return segments.pop() ?? '';\n};\n\nexport const getFirstSegmentOfPathName = (pathname: string): string =>\n getSegmentOfPathName(pathname, 'first');\n\n/**\n * Функция возвращает первый сегмент ссылки\n * Если первого сегмента нет, возвращается корневой сегмент - '/'\n * */\nexport const getLastSegmentOfPathName = (pathname: string): string =>\n getSegmentOfPathName(pathname, 'last');\n","import {asyncScheduler, distinctUntilChanged, MonoTypeOperatorFunction, Observable, of,} from 'rxjs';\nimport {observeOn} from 'rxjs/operators';\nimport {isEqual} from 'lodash';\n\nexport function distinctUntilChangedJSONs<T>(): MonoTypeOperatorFunction<T> {\n return distinctUntilChanged((prev, curr) => isEqual(prev, curr));\n}\n\n/**\n * Перемещает выполнение функции на указанное количество итераций в цикле событий.\n *\n * @param count - Количество итераций цикла событий для перемещения.\n * @returns Оператор, который можно использовать с Observable для продолжения цепочки.\n */\nexport function moveInEventLoopIteration<T>(count: number): MonoTypeOperatorFunction<T> {\n return (source: Observable<T>) => {\n if (!count) {\n return source;\n }\n\n let newSource = source.pipe(observeOn(asyncScheduler, 0));\n\n if (count > 1) {\n newSource = newSource.pipe(moveInEventLoopIteration(count - 1));\n }\n\n return newSource;\n };\n}\n\nexport function just(): Observable<null> {\n return of(null);\n}\n","import { IFilterSelectValue } from '../types';\n\nexport const SELECT_ALL_ID = '-1';\nexport const SELECT_ALL_NAME = 'Выбрать все';\n\nexport function removeSelectAll(arr: IFilterSelectValue[] | null): IFilterSelectValue[] | null {\n const array = arr?.slice() ?? null;\n\n if (array && array[0] && 'id' in array[0] && array[0].id === SELECT_ALL_ID) {\n array.shift();\n }\n\n return array;\n}\n\nexport const selectAllItem = { id: SELECT_ALL_ID, name: SELECT_ALL_NAME };\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { filter, map, Observable, Subject, takeUntil } from 'rxjs';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { IInputControl } from '../../types/inputs.types';\nimport { FormGroupWrapper } from '../../core/form-group-wrapper/form-group-wrapper';\nimport { distinctUntilChangedJSONs } from '../../utils';\nimport { ITpUserSettingsSettingsFilter } from '../../types/register-base.types';\n\nexport const FILTERS_QUERY_PARAMS_KEY = 'filters';\nexport const FILTERS_QUERY_PARAMS_VALUE_EMPTY = 'empty';\nexport const SEARCH_QUERY_PARAMS_KEY = 'search';\n\n@Injectable()\nexport class FiltersTransmitService implements OnDestroy {\n protected readonly _unsubscribe$ = new Subject<void>();\n\n protected formGroup?: FormGroupWrapper<any>;\n protected searchInput?: IInputControl<string | null>;\n\n constructor(\n private readonly _router: Router,\n private readonly _route: ActivatedRoute\n ) {}\n\n public setForm(formGroup: FormGroupWrapper<any>): void {\n this.formGroup = formGroup;\n }\n\n public setSearchInput(searchInput: IInputControl<string | null> | undefined): void {\n this.searchInput = searchInput;\n }\n\n public subscribeOnApplyFormValues(observable: Observable<unknown>): void {\n observable\n .pipe(\n distinctUntilChangedJSONs(),\n filter(() => !!this.formGroup),\n map(() => this.formGroup!),\n takeUntil(this._unsubscribe$)\n )\n .subscribe((formGroup) => {\n const filtersEmpty = Object.values(formGroup.getRawValue()).every((val) => val === null);\n const filters = filtersEmpty ? FILTERS_QUERY_PARAMS_VALUE_EMPTY : this.stringifyValues;\n const search = this.searchInput?.getRawValue() || undefined;\n\n this._setQueryParams({\n [SEARCH_QUERY_PARAMS_KEY]: search,\n [FILTERS_QUERY_PARAMS_KEY]: filters,\n });\n });\n }\n\n public get stringifyValues(): string | undefined {\n const values = Object.entries(this.formGroup?.controls ?? {})\n .map(([id, abstractControl]) => {\n const control = abstractControl as IInputControl;\n const value = control.saved_value$.getValue();\n const savedValue = value === null ? null : value;\n\n return {\n id,\n value: savedValue,\n };\n })\n .filter(({ value }) => value !== null);\n\n if (values.length > 0) {\n return JSON.stringify(values);\n }\n\n return;\n }\n\n public get filters(): ITpUserSettingsSettingsFilter[] | undefined {\n const param = this._route.snapshot.queryParams[FILTERS_QUERY_PARAMS_KEY];\n\n if (param === FILTERS_QUERY_PARAMS_VALUE_EMPTY) {\n return;\n }\n\n if (param) {\n return JSON.parse(param);\n }\n\n return [];\n }\n\n public get search(): string | undefined {\n return this._route.snapshot.queryParams[SEARCH_QUERY_PARAMS_KEY];\n }\n\n private _setQueryParams(queryParams: Record<string, string | undefined>): void {\n this._router.navigate([], {\n relativeTo: this._route,\n queryParams,\n queryParamsHandling: 'merge',\n replaceUrl: true,\n });\n }\n\n public ngOnDestroy(): void {\n this._unsubscribe$.next();\n this._unsubscribe$.complete();\n }\n}\n","import { Injectable, Injector, Optional } from '@angular/core';\nimport { InputsService } from '../inputs.service';\nimport { FiltersTransmitService } from './filters-transmit.service';\nimport { FormGroupWrapper } from '../../core/form-group-wrapper/form-group-wrapper';\n\n@Injectable()\nexport class FiltersService<FormType> extends InputsService<FormType> {\n constructor(\n injector: Injector,\n @Optional() private readonly _transmitter: FiltersTransmitService\n ) {\n super(injector);\n }\n\n public override init(group: FormGroupWrapper<FormType>): void {\n super.init(group);\n\n this._transmitter?.setForm(this.inputs);\n this._transmitter?.setSearchInput(this.searchInput);\n }\n}\n","import { FormControl } from '@angular/forms';\nimport { WhereBoolExp } from 'hasura';\nimport { BehaviorSubject } from 'rxjs';\nimport { JsonValue } from 'type-fest';\nimport { WritableSignal } from '@angular/core';\n\nexport enum EInputsState {\n HIDDEN,\n FILTER_LIST,\n SAVED_LIST,\n ON_EDIT_FILTER,\n ON_SAVE_FILTER,\n}\n\nexport enum EInputsAction {\n CANCEL,\n APPLY_FILTERS,\n APPLY_SAVED_FILTER,\n AFTER_SAVE_FILTER,\n EDIT_FILTER_NAME,\n EDIT_FILTER,\n OPEN,\n}\n\nexport interface IInputsState {\n state: EInputsState;\n action: EInputsAction;\n}\n\nexport interface IInputsStateConfig {\n defaultPin?: boolean;\n searchInput?: boolean;\n}\n\nexport interface IInputControl<ValueType = any, SavedValueType = any>\n extends FormControl<ValueType> {\n saved_value$: BehaviorSubject<SavedValueType | null>;\n gql_value: InputControlGqlValue;\n /** По полю применена фильтрация */\n applied?: WritableSignal<boolean>;\n}\n\nexport type InputControlSaveValue = JsonValue | null;\n\nexport type InputControlGqlValue =\n | WhereBoolExp<Record<string, any>>\n // TODO точнее типизировать\n | any\n | undefined;\n\nexport type GqlFields = (string | GqlField)[] | GqlField;\n\nexport interface GqlField {\n [key: string]:\n | string\n | string[]\n | number\n | number[]\n | boolean\n | boolean[]\n | GqlField\n | GqlField[];\n}\n","import { Observable, Subscription } from 'rxjs';\nimport { WhereBoolExp } from 'hasura';\nimport { SETTINGS_TYPE } from '../consts/register-base.consts';\nimport { IUserProfile } from './user-profile.types';\nimport { IHasuraQueryFilter, ThWidthEntry } from '../components/register-table/model/schema';\nimport { MutationResult } from 'apollo-angular';\nimport { ITableColumnSettings } from '../components/column-settings/types/column-settings.types';\n\nexport interface IRegisterBase {\n /** @deprecated плохая практика, используйте событие visibleRowsChanges из RegisterTableComponent */\n is_visible?: boolean;\n id: any;\n}\n\nexport interface ITpUserSettings {\n id: string;\n id_user: string;\n name: string;\n module_name: string;\n settings: ITpUserSettingsSettings;\n settings_type: SETTINGS_TYPE;\n}\n\nexport interface ITpUserSettingsSettings {\n name?: string;\n favorite?: boolean;\n filter?: ITpUserSettingsSettingsFilter[];\n tableFields?: ITableColumnSettings;\n expandType?: string;\n switchValue?: 0 | 1;\n menuState?: boolean;\n tableColumnsWidth?: ThWidthEntry[];\n pageRowsLimit?: number;\n referer?: string;\n pinned?: boolean;\n}\n\nexport interface ITpUserSettingsSettingsFilter {\n id: string;\n value: unknown;\n}\n\nexport enum ERegisterObjectState {\n SELECTED = 'SELECTED',\n UNSELECTED = 'UNSELECTED',\n}\n\nexport interface IRegisterObject<T = any> {\n object?: T;\n state: ERegisterObjectState;\n}\n\nexport type ObjectsSubscriptionConfig<DataType, FilterType = Record<string, any>> = {\n filter: FilterType;\n callback?: (data: DataType[]) => void;\n noSet?: boolean;\n};\n\n/** Интерфейс сервиса управления пользовательскими настройками */\nexport interface IUserSettingsLoader<T extends ITpUserSettings = any> {\n /** Пользовательские настройки */\n settings$: Observable<T[]>;\n /** Запрос пользовательских настроек по фильтру */\n fetchUserSettings$(where: WhereBoolExp<T>, hidden?: boolean): Observable<T[]>;\n /** Запрос пользовательских настроек по фильтру (Эффект для фильтров) */\n fetchUserSettingsByUserId: (\n observableOrValue:\n | {\n userId: string;\n settingsType: SETTINGS_TYPE;\n moduleName: string;\n }\n | Observable<{\n userId: string;\n settingsType: SETTINGS_TYPE;\n moduleName: string;\n }>\n ) => Subscription;\n /** Состояние загрузки пользовательских настроек */\n loading$: Observable<boolean>;\n /** Мутация на создание или обновление пользовательской настройки */\n upsertUserSettingsByUserId: (\n observableOrValue:\n | {\n settings: Partial<T>;\n hidden?: boolean;\n updateSettings?: boolean;\n }\n | Observable<{\n settings: Partial<T>;\n hidden?: boolean;\n updateSettings?: boolean;\n }>\n ) => Subscription;\n /** Мутация на обновление пользовательской настройки (Эффект для фильтров) */\n updateUserSettingsSettingsById: (\n observableOrValue:\n | {\n id: string;\n settings: ITpUserSettingsSettings;\n }\n | Observable<{\n id: string;\n settings: ITpUserSettingsSettings;\n }>\n ) => Subscription;\n /** Удаление пользовательской настройки (Эффект для фильтров) */\n deleteUserSettingsById: (\n observableOrValue:\n | {\n id: string;\n updateSettings?: boolean;\n }\n | Observable<{\n id: string;\n updateSettings?: boolean;\n }>\n ) => Subscription;\n /** Результат выполнения мутации */\n upsertReturningOne$(type: SETTINGS_TYPE): Observable<ITpUserSettings | null>;\n /** Завершение создания или обновления пользовательской настройки */\n upsertEnded$: Observable<void>;\n}\n\n/** Интерфейс сервиса управления аутентификацией пользователя */\nexport interface IUserProfileLoader<T extends IUserProfile, PermissionType = unknown> {\n /** Аутентифицированный пользователь */\n getUserProfile(): T;\n /** Метод проверки привилегий пользователя */\n checkPermissions(permissions: PermissionType[], every?: boolean): boolean;\n}\n\nexport interface IBaseRegisterStoreState<T> {\n loading: boolean;\n count: number;\n total: number;\n objects: T[];\n}\n\nexport interface IBaseRegisterStore<Type extends Record<string, any>> {\n readonly deleteByIds: (\n ids: string[],\n date: Date,\n ...args: unknown[]\n ) => Observable<MutationResult<Type[]> | null>;\n\n readonly fetchTotal: (\n observableOrValue: Record<string, any> | Observable<Record<string, any>>\n ) => Subscription;\n readonly fetchObjects: (\n observableOrValue:\n | {\n filter: IHasuraQueryFilter<Type>;\n callback?: (data: Type[]) => void;\n }\n | Observable<{\n filter: IHasuraQueryFilter<Type>;\n callback?: (data: Type[]) => void;\n }>\n ) => Subscription;\n}\n","import { DestroyRef, inject, Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { EInputsAction, EInputsState, GqlFields, IInputsState } from '../types';\nimport { Router } from '@angular/router';\nimport { getLastSegmentOfPathName } from '../utils';\nimport { RegisterTableCellSorter } from '../components/register-table/model/schema';\n\nexport const DEFAULT_LIMIT = 30;\n\n@Injectable()\nexport class InputsStateService<T = any> implements OnDestroy {\n protected readonly unsubscribe$ = new Subject<void>();\n\n protected readonly _page$ = new BehaviorSubject<number>(1);\n protected readonly _limit$ = new BehaviorSubject<number | null>(null);\n protected readonly _offset$ = new BehaviorSubject<number>(0);\n protected readonly _count$ = new BehaviorSubject<number>(0);\n protected readonly _sorter$ = new BehaviorSubject<RegisterTableCellSorter<T>[]>([]);\n protected readonly _name$ = new BehaviorSubject<string>('');\n protected readonly _state$ = new BehaviorSubject<IInputsState>({\n state: EInputsState.HIDDEN,\n action: EInputsAction.OPEN,\n });\n // TODO: заменить на нормальный тип\n protected readonly _gqlValues$ = new BehaviorSubject<GqlFields>([]);\n protected readonly _pinned$ = new BehaviorSubject<boolean>(false);\n\n public readonly page$ = this._page$.asObservable();\n public readonly limit$ = this._limit$.asObservable();\n public readonly offset$ = this._offset$.asObservable();\n public readonly count$ = this._count$.asObservable();\n public readonly sorter$ = this._sorter$.asObservable();\n public readonly name$ = this._name$.asObservable();\n public readonly state$ = this._state$.asObservable();\n public readonly gqlValues$ = this._gqlValues$.asObservable();\n public readonly pinned$ = this._pinned$.asObservable();\n\n protected readonly destroyRef = inject(DestroyRef);\n\n protected readonly router = inject(Router);\n\n protected readonly modulePath = getLastSegmentOfPathName(this.router.url);\n\n public readonly pinStorageKey = `@pin/${this.modulePath}`;\n public readonly pinnedInputsStorageKey = `@pinned-inputs/${this.modulePath}`;\n\n public toggle(): void {\n const isOpen = this.state.state !== EInputsState.HIDDEN;\n\n // если фильтр был открыт, значит его закрывают - открепляем\n if (isOpen) {\n this.setPin(false);\n }\n\n this.setState({\n state: isOpen ? EInputsState.HIDDEN : EInputsState.FILTER_LIST,\n action: EInputsAction.OPEN,\n });\n }\n\n public togglePin(): void {\n this.setPin(!this.isPin);\n }\n\n public ngOnDestroy(): void {\n this._page$.complete();\n this._limit$.complete();\n this._name$.complete();\n this._offset$.complete();\n this._count$.complete();\n this._state$.complete();\n this._sorter$.complete();\n this._gqlValues$.complete();\n this._pinned$.complete();\n\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n\n this.onDestroy();\n }\n\n protected onDestroy(): void {}\n\n public setPage(page: number): void {\n this._page$.next(page);\n }\n\n public setLimit(limit: number): void {\n this._limit$.next(limit);\n }\n\n public setOffset(offset: number): void {\n this._offset$.next(offset);\n }\n\n public setSorter(sort: RegisterTableCellSorter<T>[]): void {\n this._sorter$.next(sort);\n }\n\n public setName(name: string): void {\n this._name$.next(name);\n }\n\n public setCount(count: number): void {\n this._count$.next(count);\n }\n\n public setState(state: IInputsState): void {\n if (!(this.isPin && state.state === EInputsState.HIDDEN)) {\n this._state$.next(state);\n }\n }\n\n public setGqlValues(values: GqlFields): void {\n this._gqlValues$.next(values);\n }\n\n public setPin(isPin: boolean): void {\n this._pinned$.next(isPin);\n }\n\n public get page(): number {\n return this._page$.getValue();\n }\n\n public get limit(): number {\n return this._limit$.getValue() ?? DEFAULT_LIMIT;\n }\n\n public get offset(): number {\n return this._offset$.getValue();\n }\n\n public get state(): IInputsState {\n return this._state$.getValue();\n }\n\n public get count(): number {\n return this._count$.getValue();\n }\n\n public get sorter(): RegisterTableCellSorter<T>[] {\n return this._sorter$.getValue();\n }\n\n public get name(): string {\n return this._name$.getValue();\n }\n\n public get gqlValues(): GqlFields {\n return this._gqlValues$.getValue();\n }\n\n public get isPin(): boolean {\n return this._pinned$.getValue();\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, filter, filter as rxjsFilter, ReplaySubject, skip, take } from 'rxjs';\nimport { InputsStateService } from '../inputs-state.service';\nimport { FiltersTransmitService } from './filters-transmit.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationStart } from '@angular/router';\nimport { ITpUserSettings } from '../../types/register-base.types';\nimport { isNonNull } from '../../utils';\nimport { getFirstSegmentOfPathName } from '../../utils/get-url-segment';\n\n@Injectable()\nexport class FiltersStateService<T> extends InputsStateService<T> {\n private readonly _transmitter = inject(FiltersTransmitService, { optional: true });\n\n private readonly _selectedSavedFilter = new BehaviorSubject<ITpUserSettings | null>(null);\n private readonly _isFilterNameChanged$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(\n false\n );\n private readonly _searchFilterValue$: ReplaySubject<string> = new ReplaySubject<string>();\n\n public readonly selectedSavedFilter = this._selectedSavedFilter.asObservable();\n public readonly searchFilterValue$ = this._searchFilterValue$.asObservable();\n\n public readonly pageStorageKey = `@page/${this.modulePath}`;\n\n constructor() {\n super();\n\n this._transmitter?.subscribeOnApplyFormValues(this.gqlValues$);\n this._cachePage();\n }\n\n private _cachePage(): void {\n this.limit$.pipe(filter(isNonNull), take(1)).subscribe((limit) => {\n const cachedPage = localStorage.getItem(this.pageStorageKey);\n\n if (cachedPage) {\n const page = Number(cachedPage);\n this.setPage(page);\n this.setOffset(limit * (page - 1));\n }\n });\n\n this.page$.pipe(skip(1), takeUntilDestroyed(this.destroyRef)).subscribe((page) => {\n localStorage.setItem(this.pageStorageKey, page.toString());\n });\n\n this._subscribeOnNavigateToOtherModules();\n }\n\n private _subscribeOnNavigateToOtherModules(): void {\n this.router.events\n .pipe(\n rxjsFilter(\n (event) =>\n event instanceof NavigationStart &&\n getFirstSegmentOfPathName(event.url) !== this.modulePath\n ),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n localStorage.removeItem(this.pageStorageKey);\n });\n }\n\n public setSelectedSavedFilter(value: ITpUserSettings | null): void {\n this._selectedSavedFilter.next(value);\n }\n\n public setSearchFilterValue(value: string): void {\n this._searchFilterValue$.next(value);\n }\n\n public getSelectedSavedFilter(): ITpUserSettings | null {\n return this._selectedSavedFilter.getValue();\n }\n\n public override onDestroy(): void {\n this._selectedSavedFilter.complete();\n this._isFilterNameChanged$.complete();\n this._searchFilterValue$.complete();\n }\n}\n","import { afterNextRender, DestroyRef, inject, Injectable, NgZone, signal } from '@angular/core';\nimport { debounceTime, distinctUntilChanged, fromEvent, map } from 'rxjs';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\n\nconst RESIZE_WINDOW_DEBOUNCE_MLS = 100;\n\n@Injectable()\nexport class ResizeWindowObserverService {\n private readonly _zone = inject(NgZone);\n private readonly _destroyRef = inject(DestroyRef);\n\n public readonly innerHeight = signal(window.innerHeight);\n public readonly innerWidth = signal(window.innerWidth);\n\n public readonly innerHeight$ = toObservable(this.innerHeight);\n\n constructor() {\n afterNextRender(() => {\n this._zone.runOutsideAngular(() => {\n fromEvent(window, 'resize')\n .pipe(\n debounceTime(RESIZE_WINDOW_DEBOUNCE_MLS),\n map(() => ({\n height: window.innerHeight,\n width: window.innerWidth,\n })),\n distinctUntilChanged(),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe(({ height, width }) => {\n this.innerHeight.set(height);\n this.innerWidth.set(width);\n });\n });\n });\n }\n}\n","import {\n ERegisterObjectState,\n ITpUserSettings,\n IUserProfileLoader,\n IUserSettingsLoader,\n} from '../types/register-base.types';\nimport { InjectionToken } from '@angular/core';\nimport { IUserProfile } from '../types/user-profile.types';\n\nexport const SEARCH_INPUT_DEBOUNCE_TIME_MLS = 1000;\nexport const THS_WIDTH_CHANGES_DEBOUNCE_TIME_MLS = 2000;\n\nexport const invertState = (state: ERegisterObjectState): ERegisterObjectState => {\n if (state === ERegisterObjectState.SELECTED) {\n return ERegisterObjectState.UNSELECTED;\n }\n\n return ERegisterObjectState.SELECTED;\n};\n\nexport enum EOrder {\n ASC = 'asc',\n DESC = 'desc',\n}\n\nexport enum SETTINGS_TYPE {\n FILTER = 0,\n COLUMNS = 1,\n PAGE_MENU_STATE = 2,\n REGISTER_PAGE_ROWS_LIMIT = 4,\n REGISTER_PINNED_INPUTS = 5,\n}\n\nexport const USER_SETTINGS_LOADER = new InjectionToken<IUserSettingsLoader<ITpUserSettings>>(\n 'USER_SETTINGS_LOADER'\n);\n\nexport const USER_PROFILE_LOADER = new InjectionToken<IUserProfileLoader<IUserProfile>>(\n 'USER_PROFILE_LOADER'\n);\n","export type ApplySelectionTypes = Omit<SelectionTypes, SelectionTypes.COUNT> | number | null;\n\nexport enum SelectionTypes {\n ALL = 'ALL',\n VISIBLE = 'VISIBLE',\n INVERSE = 'INVERSE',\n COUNT = 'COUNT',\n}\n","import { computed, DestroyRef, inject, Injectable, signal } from '@angular/core';\nimport { ScalarUUID } from 'hasura';\nimport { BehaviorSubject, skip, take } from 'rxjs';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { ERegisterObjectState, IRegisterObject } from '../types/register-base.types';\nimport { invertState } from '../consts/register-base.consts';\nimport { isDefined } from '../utils';\nimport {\n ApplySelectionTypes,\n SelectionTypes,\n} from '../components/checkbox-selector/checkbox-selector.types';\n\n/** Сервис хранения состояния выбранных в реестре объектов */\n@Injectable()\nexport class SelectedObjectsStateService<T extends { id: ScalarUUID } = any> {\n /** Состояние всех загруженных объектов реестра */\n public readonly state = signal(new Map<ScalarUUID, IRegisterObject<T>>());\n /** Ключи всех выбранных объектов реестра */\n public readonly selectedKeys = computed(() => {\n const selected = this._filterStateObjectsByState(this.state(), ERegisterObjectState.SELECTED);\n\n return new Set(selected.keys());\n });\n /** Ключи всех выбранных или не выбранных объектов реестра (зависит от stateUnfetchedObjects) */\n public readonly keys = computed(() => {\n const unfetchedState = this.stateUnfetchedObjects();\n\n return new Set(\n this._filterStateObjectsByState(this.state(), invertState(unfetchedState)).keys()\n );\n });\n /** Значения всех выбранных объектов реестра */\n public readonly selectedValues = computed(() => {\n const selected = this._filterStateObjectsByState(this.state(), ERegisterObjectState.SELECTED);\n\n return new Set(\n [...selected.values()].map(({ object }) => object).filter((object) => isDefined(object))\n );\n });\n /** Значения всех не выбранных объектов реестра */\n public readonly unselectedValues = computed(() => {\n const selected = this._filterStateObjectsByState(this.state(), ERegisterObjectState.UNSELECTED);\n\n return new Set(\n [...selected.values()].map(({ object }) => object).filter((object) => isDefined(object))\n );\n });\n /** Значения всех выбранных или не выбранных объектов реестра (зависит от stateUnfetchedObjects) */\n public readonly values = computed(() => {\n const unfetchedState = this.stateUnfetchedObjects();\n\n return new Set(\n [...this._filterStateObjectsByState(this.state(), invertState(unfetchedState)).values()]\n .map(({ object }) => object)\n .filter((object) => isDefined(object))\n );\n });\n\n public readonly selectionType$ = new BehaviorSubject<ApplySelectionTypes>(null);\n public readonly stateUnfetchedObjects$ = new BehaviorSubject<ERegisterObjectState>(\n ERegisterObjectState.UNSELECTED\n );\n\n public readonly stateUnfetchedObjects = toSignal(this.stateUnfetchedObjects$.asObservable(), {\n initialValue: ERegisterObjectState.UNSELECTED,\n });\n\n private readonly _dr = inject(DestroyRef);\n\n constructor() {\n this._subscribeOnSelectionType();\n }\n\n /**\n * Установить состояние всем загруженным объектам\n *\n * @param nextState - устанавливаемое состояние\n * */\n public setAllStateObjectsByState(nextState: ERegisterObjectState): void {\n if (nextState === ERegisterObjectState.UNSELECTED) {\n this.stateUnfetchedObjects$.next(ERegisterObjectState.UNSELECTED);\n }\n\n for (const key of this.state().keys()) {\n this.setStateObjectByKey(key, { state: nextState });\n }\n\n this._refresh();\n }\n\n /**\n * Обновить свойства загруженного объекта по ключу\n *\n * @param key - ключ загруженного объекта\n * @param updates - обновление, содержащее свойства которые нужно обновить\n * */\n public setStateObjectByKey(key: ScalarUUID, updates: Partial<IRegisterObject<T>>): void {\n const objects = new Map(this.state());\n\n const stateObject = objects.get(key) ?? { state: ERegisterObjectState.UNSELECTED };\n objects.set(key, { ...stateObject, ...updates });\n\n this.state.set(objects);\n }\n\n public loadStateObjects(data: T[]): void {\n const state = this.stateUnfetchedObjects$?.getValue();\n\n for (const object of data) {\n if (!this.state().has(object.id)) {\n this.setStateObjectByKey(object.id, { object, state });\n }\n }\n\n this._refresh();\n }\n\n private _refresh(): void {\n this.state.update((state) => new Map(state));\n }\n\n public resetState(data?: T[]): void {\n this.stateUnfetchedObjects$\n .asObservable()\n .pipe(skip(1), take(1))\n .subscribe(() => {\n this.state.set(new Map());\n\n if (data) {\n this.loadStateObjects(data);\n }\n });\n this.selectionType$.next(null);\n }\n\n private _filterStateObjectsByState(\n stateObjects: Map<ScalarUUID, IRegisterObject<T>>,\n filterState: ERegisterObjectState\n ) {\n return new Map([...stateObjects].filter(([_, { state }]) => state === filterState));\n }\n\n private _subscribeOnSelectionType(): void {\n this.selectionType$\n .asObservable()\n .pipe(takeUntilDestroyed(this._dr))\n .subscribe((type) => {\n let newState = ERegisterObjectState.UNSELECTED;\n\n if (type === SelectionTypes.ALL) {\n newState = ERegisterObjectState.SELECTED;\n } else if (type === SelectionTypes.INVERSE) {\n newState = invertState(this.stateUnfetchedObjects$.getValue());\n }\n\n this.stateUnfetchedObjects$.next(newState);\n });\n }\n}\n","export enum EMonth {\n JAN,\n FEB,\n MAR,\n APR,\n MAY,\n JUN,\n JUL,\n AUG,\n SEP,\n OCT,\n NOV,\n DEC,\n}\n\nexport enum MonthsNumber {\n January = 1,\n February = 2,\n March = 3,\n April = 4,\n May = 5,\n June = 6,\n July = 7,\n August = 8,\n September = 9,\n October = 10,\n November = 11,\n December = 12,\n}\n\nexport enum MonthsName {\n January = 'Январь',\n February = 'Февраль',\n March = 'Март',\n April = 'Апрель',\n May = 'Май',\n June = 'Июнь',\n July = 'Июль',\n August = 'Август',\n September = 'Сентябрь',\n October = 'Октябрь',\n November = 'Ноябрь',\n December = 'Декабрь',\n}\n\nexport class MonthMapper {\n public static readonly MONTH_NUMBER_NAMES: Map<string, MonthsNumber> = new Map([\n [MonthsName.January, MonthsNumber.January],\n [MonthsName.February, MonthsNumber.February],\n [MonthsName.March, MonthsNumber.March],\n [MonthsName.April, MonthsNumber.April],\n [MonthsName.May, MonthsNumber.May],\n [MonthsName.June, MonthsNumber.June],\n [MonthsName.July, MonthsNumber.July],\n [MonthsName.August, MonthsNumber.August],\n [MonthsName.September, MonthsNumber.September],\n [MonthsName.October, MonthsNumber.October],\n [MonthsName.November, MonthsNumber.November],\n [MonthsName.December, MonthsNumber.December],\n ]);\n\n public static getMonthNumber(monthName: string): number | undefined {\n return this.MONTH_NUMBER_NAMES.get(monthName);\n }\n\n public static getRusNamesArr(): string[] {\n const rusNamesArr: string[] = [...this.MONTH_NUMBER_NAMES.keys()];\n return rusNamesArr;\n }\n\n public static getNumbersArr(): number[] {\n const numberArr: number[] = [...this.MONTH_NUMBER_NAMES.values()];\n return numberArr;\n }\n\n public static getMonthRusNameByNumber(monthNumber: number): string | undefined {\n const monthName = Object.keys(MonthsNumber).find(\n (key) => MonthsNumber[key as keyof typeof MonthsNumber] === monthNumber\n );\n return monthName ? MonthsName[monthName as keyof typeof MonthsName] : undefined;\n }\n}\n","import { Component } from '@angular/core';\n\nexport enum SvgSrc {\n WARNING = 'assets/ngx-register-base/icons/circle-exclamation-empty.svg',\n}\n\n@Component({\n selector: 'sproc-reset-settings-form',\n templateUrl: './reset-settings-form.component.html',\n styleUrls: ['./reset-settings-form.component.less'],\n standalone: true,\n})\nexport class ResetSettingsFormComponent {\n protected readonly svgSrc = SvgSrc;\n}\n","<section class=\"reset-warning\">\n <div class=\"main-warning\">\n Сбросить все параметры <br />\n отображения реестра?\n </div>\n <div style=\"display: flex; flex-direction: row; padding: 16px 0 0 10px\">\n <img [src]=\"svgSrc.WARNING\" alt=\"!\" />\n\n <span class=\"info\"\n >будут сброшены настройки отображения столбцов реестра <br />\n (порядок, ширина, отображение и т.д.)</span\n >\n </div>\n</section>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'sproc-divider',\n templateUrl: './divider.component.html',\n styleUrls: ['./divider.component.less'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DividerComponent {\n @Input() layout: 'horizontal' | 'vertical' = 'horizontal';\n}\n","<div\n [class.horizontal-solid]=\"layout === 'horizontal'\"\n [class.vertical-solid]=\"layout === 'vertical'\"\n></div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n OnInit,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { filter, map, skip } from 'rxjs';\nimport { TuiButton, TuiIcon, TuiPopup, TuiScrollbar } from '@taiga-ui/core';\nimport { TuiDrawer } from '@taiga-ui/kit';\nimport {\n CdkDragDrop,\n CdkDropList,\n CdkDropListGroup,\n moveItemInArray,\n transferArrayItem,\n} from '@angular/cdk/drag-drop';\nimport {\n outputFromObservable,\n takeUntilDestroyed,\n toObservable,\n toSignal,\n} from '@angular/core/rxjs-interop';\nimport {\n EColumnStatus,\n IColumnSettings,\n IColumnSettingsChanges,\n ITableColumnSettings,\n} from './types/column-settings.types';\nimport { WaResizeObserver } from '@ng-web-apis/resize-observer';\nimport { ColumnSettingsTemplateComponent } from './components/column-settings-template/column-settings-template.component';\nimport { ICON_CANCEL_CLOSE, ICON_ERASER, ICON_SETTINGS } from './consts/column-settings.consts';\nimport { DialogService, ResizeWindowObserverService } from '../../services';\nimport { getLastSegmentOfPathName, isNonNull } from '../../utils';\nimport { SETTINGS_TYPE, USER_PROFILE_LOADER, USER_SETTINGS_LOADER } from '../../consts';\nimport { ResetSettingsFormComponent } from '../reset-settings-form/reset-settings-form.component';\nimport { DividerComponent } from '../divider/divider.component';\nimport { ITpUserSettings } from '../../types';\n\n@Component({\n selector: 'sproc-column-settings',\n standalone: true,\n templateUrl: './column-settings.component.html',\n styleUrls: ['./column-settings.component.less'],\n imports: [\n TuiButton,\n TuiIcon,\n TuiDrawer,\n TuiPopup,\n DividerComponent,\n ResetSettingsFormComponent,\n CdkDropList,\n CdkDropListGroup,\n TuiScrollbar,\n WaResizeObserver,\n ColumnSettingsTemplateComponent,\n ],\n providers: [ResizeWindowObserverService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ColumnSettingsComponent implements OnInit {\n public resetColumnSettingsRef = viewChild('resetSettings', { read: TemplateRef<unknown> });\n public resetColumnSettingsFooter = viewChild('resetSettingsFooter', {\n read: TemplateRef<unknown>,\n });\n\n public defaultSettings = input.required<ITableColumnSettings>();\n /** Высота всего компонента настроек */\n public height = input<number | undefined>();\n public disabled = input(false);\n /** показ заголовка листа фикс. слева колонок */\n public showLeftListHeader = input(true);\n /** показ заголовка листа фикс. справа колонок */\n public showRightListHeader = input(true);\n /** заголовок листа с колонками (нефиксированные) */\n public columnsListHeader = input('Колонки');\n /** показ фикс. справа колонок */\n public showFixedRightList = input(false);\n /** функция предикат - возможность добавления элемента в лист фикс. слева колонок */\n public fixedLeftListEnterPredicate = input<() => boolean>(() => true);\n /** функция предикат - возможность добавления элемента в лист колонок (нефиксированные) */\n public columnsListEnterPredicate = input<() => boolean>(() => true);\n /** функция предикат - возможность добавления элемента в лист фикс. справа колонок */\n public fixedRightListEnterPredicate = input<() => boolean>(() => true);\n\n protected readonly openSettings = signal(false);\n protected readonly inputSettings = signal<ITableColumnSettings | null>(null);\n protected readonly fixedLeftColumns = computed(() => this.inputSettings()?.stickyLeft ?? []);\n protected readonly columns = computed(() => this.inputSettings()?.columns ?? []);\n protected readonly fixedRightColumns = computed(() => this.inputSettings()?.stickyRight ?? []);\n\n public columnsChanges = outputFromObservable<IColumnSettingsChanges>(\n toObservable(this.inputSettings).pipe(\n skip(1),\n map((settings) => ({ settings }))\n )\n );\n\n protected readonly settingsStore = inject(USER_SETTINGS_LOADER);\n\n private readonly _dr = inject(DestroyRef);\n private readonly _router = inject(Router);\n private readonly _userProfileService = inject(USER_PROFILE_LOADER);\n private readonly _dialogService = inject(DialogService);\n private readonly _resizeWindowObserver = inject(ResizeWindowObserverService);\n\n protected readonly iconSettings = ICON_SETTINGS;\n protected readonly iconEraser = ICON_ERASER;\n protected readonly iconCancelClose = ICON_CANCEL_CLOSE;\n\n protected readonly columnSettingsHeaderHeightPx = 40;\n protected readonly columnSettingsSubtitleHeightPx = 32;\n protected readonly scrollBoxFixedColumnsHeightPx = signal(0);\n protected readonly scrollBoxRightFixedColumnsHeightPx = signal(0);\n protected readonly scrollBoxFixedColumnsMaxHeightPx = 287;\n protected readonly scrollBoxColumnsMaxHeightPx = signal(0);\n protected readonly columnSettingsFooterHeightPx = 48;\n protected readonly columnListHeightPx = toSignal(\n this._resizeWindowObserver.innerHeight$.pipe(\n skip(1),\n map((innerHeight) => this._calcColumnListHeightPx(innerHeight))\n ),\n {\n initialValue: this._calcColumnListHeightPx(this._resizeWindowObserver.innerHeight()),\n }\n );\n protected readonly columnListBottomPaddingPx = 8;\n\n private readonly _idUser = this._userProfileService.getUserProfile().id;\n private readonly _moduleName = getLastSegmentOfPathName(this._router.url);\n\n private _columnsSettings: ITpUserSettings | undefined;\n\n constructor() {\n this.setDefaultSettings();\n this._effectOnSetScrollBoxColumnsMaxHeight();\n }\n\n public setDefaultSettings(): void {\n effect(() => {\n const defaultSettings = this.defaultSettings();\n const clonedSettings = JSON.parse(JSON.stringify(defaultSettings));\n\n untracked(() => {\n this.inputSettings.set(clonedSettings);\n });\n });\n }\n\n private _effectOnSetScrollBoxColumnsMaxHeight(): void {\n effect(() => {\n const parentHeightPx = this.columnListHeightPx();\n const fixedHeightPx = this.scrollBoxFixedColumnsHeightPx();\n const rightFixedHeightPx = this.scrollBoxRightFixedColumnsHeightPx();\n const sumFixedHeightPx = fixedHeightPx + rightFixedHeightPx;\n\n untracked(() => {\n const newHeightPx = this._calcScrollBoxColumnsMaxHeightPx(parentHeightPx, sumFixedHeightPx);\n this.scrollBoxColumnsMaxHeightPx.set(newHeightPx);\n });\n });\n }\n\n public ngOnInit(): void {\n this.subscribeOnSettings();\n this.fetchSettings(this._idUser, this._moduleName);\n }\n\n private fetchSettings(userId: string, moduleName: string): void {\n this.settingsStore.fetchUserSettingsByUserId({\n userId,\n settingsType: SETTINGS_TYPE.COLUMNS,\n moduleName,\n });\n }\n\n private subscribeOnSettings(): void {\n this.settingsStore.settings$\n .pipe(\n filter((settings) => settings.length > 0),\n map(([settings]) => settings),\n filter((settings) => isNonNull(settings)),\n takeUntilDestroyed(this._dr)\n )\n .subscribe((settings) => {\n this._columnsSettings = settings;\n const { tableFields } = settings.settings;\n\n if (tableFields) {\n this.inputSettings.set(tableFields);\n this.close();\n }\n });\n }\n\n protected deleteSettings(): void {\n const clonedSettings = JSON.parse(JSON.stringify(this.defaultSettings()));\n this.inputSettings.set(clonedSettings);\n\n if (this._columnsSettings) {\n this.settingsStore.deleteUserSettingsById({\n id: this._columnsSettings?.id,\n updateSettings: true,\n });\n }\n\n this.close();\n }\n\n protected saveSettings(settings: ITableColumnSettings): void {\n this.settingsStore.upsertUserSettingsByUserId({\n settings: {\n id: this._columnsSettings?.id,\n module_name: this._moduleName,\n settings: {\n ...this._columnsSettings?.settings,\n tableFields: settings,\n },\n settings_type: SETTINGS_TYPE.COLUMNS,\n },\n updateSettings: true,\n });\n }\n\n protected saveTableSettings(): void {\n this.saveSettings({\n stickyLeft: this.fixedLeftColumns(),\n columns: this.columns(),\n stickyRight: this.fixedRightColumns(),\n });\n }\n\n protected openResetDialog(): void {\n this._dialogService\n .openModal(this.resetColumnSettingsRef(), {\n closeable: true,\n width: 466,\n footer: this.resetColumnSettingsFooter(),\n dismissible: true,\n })\n .subscribe();\n }\n\n protected toggle(): void {\n this.openSettings.update((isOpen) => !isOpen);\n }\n\n protected close(): void {\n this.openSettings.set(false);\n }\n\n protected dropIntoFixedLeft(event: CdkDragDrop<IColumnSettings[]>): void {\n const droppedElement = event.previousContainer.data[event.previousIndex];\n this._setStatusRecursive(droppedElement, EColumnStatus.STICKY);\n this._moveDroppedItem(event);\n }\n\n protected dropIntoColumns(event: CdkDragDrop<IColumnSettings[]>): void {\n const fromOther = event.previousContainer !== event.container;\n\n if (fromOther) {\n const droppedElement = event.previousContainer.data[event.previousIndex];\n this._setStatusRecursive(droppedElement, EColumnStatus.DEFAULT);\n }\n\n this._moveDroppedItem(event);\n }\n\n private _moveDroppedItem(event: CdkDragDrop<IColumnSettings[]>): void {\n if (event.previousContainer === event.container) {\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n } else {\n transferArrayItem(\n event.previousContainer.data,\n event.container.data,\n event.previousIndex,\n event.currentIndex\n );\n }\n }\n\n protected toggleVisibility(col: IColumnSettings): void {\n const isHidden = col.status === EColumnStatus.HIDDEN;\n col.status = isHidden ? EColumnStatus.DEFAULT : EColumnStatus.HIDDEN;\n }\n\n protected showAllColumns(): void {\n const settings = this.inputSettings();\n\n if (!settings) {\n throw new Error('Настройки таблицы не инициализированы');\n }\n\n this._setColumnsStatusRecursive(settings.columns, EColumnStatus.DEFAULT);\n }\n\n protected isHiddenColumn(column: IColumnSettings): boolean {\n return column.status === EColumnStatus.HIDDEN;\n }\n\n protected onFixedScrollbarResize([fixedScrollbar]: readonly ResizeObserverEntry[]): void {\n this.scrollBoxFixedColumnsHeightPx.set(fixedScrollbar.contentRect.height);\n }\n\n protected onRightFixedScrollbarResize([fixedScrollbar]: readonly ResizeObserverEntry[]): void {\n this.scrollBoxRightFixedColumnsHeightPx.set(fixedScrollbar.contentRect.height);\n }\n\n private _calcColumnListHeightPx(windowInnerHeight: number): number {\n const mainHeaderPx = 52;\n const columnSettingsHeaderFooterSumHeightPx =\n this.columnSettingsHeaderHeightPx + this.columnSettingsFooterHeightPx;\n\n return windowInnerHeight - mainHeaderPx - columnSettingsHeaderFooterSumHeightPx;\n }\n\n private _calcScrollBoxColumnsMaxHeightPx(\n parentHeightPx: number,\n fixedScrollbarHeightPx: number\n ): number {\n const twoSubtitleHeightPx = 2 * this.columnSettingsSubtitleHeightPx;\n const bottomPaddingPx = this.columnListBottomPaddingPx;\n\n return parentHeightPx - twoSubtitleHeightPx - fixedScrollbarHeightPx - bottomPaddingPx;\n }\n\n private _setStatusRecursive(column: IColumnSettings, status: EColumnStatus): void {\n column.status = status;\n\n if (column.children) {\n this._setColumnsStatusRecursive(column.children, status);\n }\n }\n\n private _setColumnsStatusRecursive(columns: IColumnSettings[], status: EColumnStatus): void {\n for (const [index, col] of columns.entries()) {\n columns[index] = { ...col, status };\n\n if (col.children) {\n this._setColumnsStatusRecursive(col.children, status);\n }\n }\n }\n}\n","<button\n tuiButton\n class=\"column-settings__main-button\"\n appearance=\"outline-grayscale\"\n size=\"m\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n>\n <tui-icon class=\"column-settings__icon gray\" [icon]=\"iconSettings\"></tui-icon>\n</button>\n\n<tui-drawer\n *tuiPopup=\"openSettings()\"\n class=\"column-settings__popup\"\n direction=\"right\"\n [overlay]=\"true\"\n (click.self)=\"close()\"\n>\n <header class=\"header\" [style.height.px]=\"columnSettingsHeaderHeightPx\">\n <span class=\"header__title\">Настройка таблицы</span>\n <div class=\"header__buttons\">\n <button\n tuiIconButton\n class=\"reset-button\"\n appearance=\"flat\"\n size=\"m\"\n (click)=\"openResetDialog()\"\n >\n <tui-icon class=\"column-settings__icon\" [icon]=\"iconEraser\"></tui-icon>\n </button>\n <sproc-divider layout=\"vertical\"></sproc-divider>\n <button tuiIconButton class=\"close-button\" appearance=\"flat\" size=\"m\" (click)=\"close()\">\n <tui-icon class=\"column-settings__icon\" [icon]=\"iconCancelClose\"></tui-icon>\n </button>\n </div>\n </header>\n <div\n cdkDropListGroup\n class=\"column-container tui__t-content--no-default-padding\"\n [style.height.px]=\"columnListHeightPx()\"\n >\n <div\n cdkDropList\n class=\"column-list\"\n [cdkDropListData]=\"fixedLeftColumns()\"\n (cdkDropListDropped)=\"dropIntoFixedLeft($event)\"\n [cdkDropListEnterPredicate]=\"fixedLeftListEnterPredicate()\"\n >\n @if (showLeftListHeader()) {\n <div class=\"column-list__label-container\">\n <span class=\"subtitle\" [style.height.px]=\"columnSettingsSubtitleHeightPx\">\n Фиксированные колонки слева\n </span>\n </div>\n }\n\n <tui-scrollbar\n [style.max-height.px]=\"scrollBoxFixedColumnsMaxHeightPx\"\n (waResizeObserver)=\"onFixedScrollbarResize($event)\"\n >\n @for (fixedLeftColumn of fixedLeftColumns(); track fixedLeftColumn.id) {\n <sproc-column-settings-template\n [column]=\"fixedLeftColumn\"\n ></sproc-column-settings-template>\n }\n </tui-scrollbar>\n </div>\n <sproc-divider></sproc-divider>\n <div\n cdkDropList\n class=\"column-list\"\n [style.padding-bottom.px]=\"columnListBottomPaddingPx\"\n [cdkDropListData]=\"columns()\"\n (cdkDropListDropped)=\"dropIntoColumns($event)\"\n [cdkDropListEnterPredicate]=\"columnsListEnterPredicate()\"\n >\n <div class=\"column-list__label-container\">\n <span\n class=\"subtitle subtitle--flex-grow-1\"\n [style.height.px]=\"columnSettingsSubtitleHeightPx\"\n >{{ columnsListHeader() }}</span\n >\n <span class=\"show-all\" (click)=\"showAllColumns()\">Показать все</span>\n </div>\n <tui-scrollbar [style.max-height.px]=\"scrollBoxColumnsMaxHeightPx()\">\n @for (column of columns(); track column.id) {\n <sproc-column-settings-template [column]=\"column\"></sproc-column-settings-template>\n }\n </tui-scrollbar>\n </div>\n @if (showFixedRightList()) {\n <sproc-divider></sproc-divider>\n <div\n cdkDropList\n class=\"column-list\"\n [style.padding-bottom.px]=\"columnListBottomPaddingPx\"\n [cdkDropListData]=\"fixedRightColumns()\"\n (cdkDropListDropped)=\"dropIntoColumns($event)\"\n [cdkDropListEnterPredicate]=\"fixedRightListEnterPredicate()\"\n >\n @if (showRightListHeader()) {\n <div class=\"column-list__label-container\">\n <span\n class=\"subtitle subtitle--flex-grow-1\"\n [style.height.px]=\"columnSettingsSubtitleHeightPx\"\n >Фиксированные колонки справа</span\n >\n </div>\n }\n\n <tui-scrollbar\n [style.max-height.px]=\"scrollBoxFixedColumnsMaxHeightPx\"\n (waResizeObserver)=\"onRightFixedScrollbarResize($event)\"\n >\n @for (column of fixedRightColumns(); track column.id) {\n <sproc-column-settings-template [column]=\"column\"></sproc-column-settings-template>\n }\n </tui-scrollbar>\n </div>\n }\n </div>\n <footer class=\"footer\" [style.height.px]=\"columnSettingsFooterHeightPx\">\n <button\n tuiButton\n class=\"save-button\"\n size=\"m\"\n appearance=\"primary\"\n (click)=\"saveTableSettings()\"\n >\n Сохранить\n </button>\n </footer>\n</tui-drawer>\n\n<ng-template #resetSettings>\n <sproc-reset-settings-form></sproc-reset-settings-form>\n</ng-template>\n\n<ng-template #resetSettingsFooter let-completeWith=\"completeWith\">\n <div style=\"width: 100%; display: flex; justify-content: center; gap: 8px\">\n <button\n tuiButton\n style=\"width: 196px\"\n appearance=\"primary-destructive\"\n size=\"l\"\n (click)=\"deleteSettings(); completeWith(true)\"\n >\n Сбросить\n </button>\n <button\n tuiButton\n style=\"width: 196px\"\n appearance=\"outline-grayscale\"\n size=\"l\"\n (click)=\"completeWith(false)\"\n >\n Отмена\n </button>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { TuiButton, TuiHint } from '@taiga-ui/core';\nimport { NgOptimizedImage } from '@angular/common';\n\n@Component({\n selector: 'sproc-filter-button',\n templateUrl: './filter-button.component.html',\n styleUrl: './filter-button.component.less',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TuiButton, TuiHint, NgOptimizedImage],\n})\nexport class FilterButtonComponent {\n public filterApplied = input.required<boolean>();\n public disabled = input(false);\n\n public filterToggle = output<void>();\n}\n","<button\n tuiButton\n size=\"m\"\n appearance=\"outline-grayscale\"\n tuiHint\n tuiHintDirection=\"bottom\"\n [class.--indicator]=\"filterApplied()\"\n [disabled]=\"disabled()\"\n (click)=\"filterToggle.emit()\"\n>\n <img ngSrc=\"assets/ngx-register-base/icons/filter.svg\" alt=\"\" height=\"16\" width=\"16\" />\n\n <tui-hint\n *tuiHint\n class=\"filter-button__tooltip\"\n [class.filter-button__tooltip--showed]=\"filterApplied()\"\n >\n <span>К реестру применены фильтры</span>\n </tui-hint>\n</button>\n","import { InjectionToken } from '@angular/core';\nimport { IMenuStateService } from './register-table-filter.types';\n\nexport const MENU_STATE_SERVICE = new InjectionToken<IMenuStateService>('MENU_STATE_SERVICE');\n","export enum ERuntimeErrorCode {\n // Structure validation errors\n NO_CONTROLS = 1000,\n MISSING_CONTROL = 1001,\n MISSING_CONTROL_VALUE = 1002,\n}\n","import {\n AbstractControl,\n FormArray,\n FormGroup,\n ɵFormGroupRawValue,\n ɵFormGroupValue,\n} from '@angular/forms';\nimport { ɵRuntimeError as RuntimeError } from '@angular/core';\nimport { ERuntimeErrorCode } from './errors-consts';\nimport { ControlsWrapper, ExtractForm } from '../../types/sub-types';\n\nfunction assertAllValuesPresent(control: any, isGroup: boolean, value: any): void {\n control._forEachChild((_: unknown, key: string | number) => {\n if (value[key] === undefined) {\n throw new RuntimeError(ERuntimeErrorCode.MISSING_CONTROL_VALUE, '');\n }\n });\n}\n\nexport function assertControlPresent(parent: any, isGroup: boolean, key: string | number): void {\n const controls = parent.controls as { [key: string | number]: unknown };\n const collection = isGroup ? Object.keys(controls) : controls;\n\n if (collection.length === 0) {\n throw new RuntimeError(ERuntimeErrorCode.NO_CONTROLS, '');\n }\n\n if (!controls[key]) {\n throw new RuntimeError(ERuntimeErrorCode.MISSING_CONTROL, '');\n }\n}\n\n/** @deprecated заменить на FormGroup */\nexport class FormGroupWrapper<TItem> extends FormGroup<ControlsWrapper<TItem>> {\n public override setValue(\n value: TItem & ɵFormGroupRawValue<any>,\n options?: { onlySelf?: boolean; emitEvent?: boolean }\n ): void {\n assertAllValuesPresent(this, true, value);\n\n for (const name of Object.keys(value) as (keyof TItem)[]) {\n assertControlPresent(this, true, name as any);\n const control = (this.controls as any)[name];\n const currentValue = (value as any)[name];\n\n if (control instanceof FormArray && Array.isArray(currentValue)) {\n control.clear();\n\n for (const item of currentValue as AbstractControl<any, any>[]) {\n item.setParent(control);\n control.push(item, { emitEvent: options?.emitEvent });\n }\n } else {\n control.setValue(currentValue, {\n onlySelf: true,\n emitEvent: options?.emitEvent,\n });\n }\n }\n\n this.updateValueAndValidity(options);\n }\n\n public override patchValue(\n value: Partial<TItem> | ɵFormGroupValue<any>,\n options?: { onlySelf?: boolean; emitEvent?: boolean }\n ): void {\n if (value === null) {\n return;\n }\n\n for (const name of Object.keys(value) as (keyof TItem)[]) {\n const control = (this.controls as any)[name];\n const currentValue = value[name as keyof ({ [key: string]: any } | Partial<TItem>)]!;\n\n if (control) {\n if (control instanceof FormArray && Array.isArray(currentValue)) {\n control.clear();\n\n for (const item of currentValue as AbstractControl<any, any>[]) {\n item.setParent(control);\n control.push(item, { emitEvent: options?.emitEvent });\n }\n } else {\n control.patchValue(currentValue, {\n onlySelf: true,\n emitEvent: options?.emitEvent,\n });\n }\n }\n }\n\n this.updateValueAndValidity(options);\n }\n\n public getDirtyValues(): Partial<ExtractForm<TItem>> {\n const values: Partial<ExtractForm<TItem>> = {};\n\n for (const key of Object.keys(this.controls)) {\n const control = this.get(key);\n\n if (control?.dirty) {\n values[key as keyof TItem] = control.getRawValue();\n }\n }\n\n return values;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\n/** Максимальное кол-во символов в текстовых полях */\nexport const MAX_LENGTH_TEXT_PARAMS = new InjectionToken<number>('MAX_LENGTH_TEXT_PARAMS');\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectorRef,\n computed,\n DestroyRef,\n Directive,\n forwardRef,\n inject,\n Injector,\n input,\n Input,\n OnInit,\n Optional,\n Self,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl, Validators } from '@angular/forms';\nimport { filter, skip, tap } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IInputControl, InputControlGqlValue, InputControlSaveValue } from '../../types';\nimport {\n FormatterGqlValueType,\n FormatterSavedValueType,\n ParserSavedValueType,\n} from '../../types/params.types';\nimport { distinctUntilChangedJSONs } from '../../utils';\n\n@Directive({\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ParamBase),\n multi: true,\n },\n ],\n})\nexport abstract class ParamBase<\n ValueType extends any | null,\n SavedValueType extends InputControlSaveValue,\n >\n implements ControlValueAccessor, OnInit, AfterViewInit, AfterContentInit\n{\n /** Название */\n @Input() label = '';\n /** Текст при пустом значении control (null) */\n placeholder = input<string>('');\n /** Режим просмотра, по умолчанию выключен */\n @Input() readmode = false;\n /** Кнопка быстрой очистки поля, по умолчанию включена */\n @Input() forceClear = true;\n /** Текст при наведении на значение control */\n @Input() hint: string | null = null;\n /** Готовые стили для использования поля в панели фильтров/параметров или на карточке, по умолчанию стили для карточки */\n @Input() paramStyle: 'filter' | 'card' = 'card';\n /** Метод для конвертации значения control при сохранении (используется при сохранении фильтров в БД) */\n @Input() set formatSavedValue(\n formatter: FormatterSavedValueType<ValueType, SavedValueType> | undefined\n ) {\n if (formatter) {\n this.formatterSavedValue = formatter;\n }\n }\n /** Метод для конвертации сохраненного значения в control (используется при установке сохраненных фильтров из БД) */\n @Input() set parseSavedValue(\n parser: ParserSavedValueType<SavedValueType, ValueType> | undefined\n ) {\n if (parser) {\n this.parserSavedValue = parser;\n }\n }\n /** Метод для конвертации значения control в GQL-значение (используется при вычислении gql_value control) */\n @Input() set formatGqlValue(formatter: FormatterGqlValueType<ValueType> | undefined) {\n if (formatter) {\n this.formatterGqlValue = formatter;\n }\n }\n /** Метод для отображения значения в режиме просмотра */\n buildShowedValue = input((_: ValueType): string => '');\n\n @Input() set required(required: boolean) {\n this._required = required;\n this._setControlRequired(required);\n }\n\n public get required(): boolean {\n return this.control?.hasValidator(Validators.required) ?? false;\n }\n\n @Input() set disabled(disabled: boolean) {\n this._disabled = disabled;\n this._setControlDisabled(disabled);\n }\n\n public get disabled(): boolean {\n return this.control?.disabled ?? false;\n }\n\n @Optional()\n @Self()\n private readonly _ngControl = inject(NgControl);\n\n protected readonly cdr = inject(ChangeDetectorRef);\n protected readonly dr = inject(DestroyRef);\n\n protected control!: IInputControl<ValueType, SavedValueType>;\n protected formatterSavedValue: (value: ValueType, injector?: Injector) => SavedValueType = (\n value\n ) => value as unknown as SavedValueType;\n protected parserSavedValue: (value: SavedValueType, injector?: Injector) => ValueType = (value) =>\n value as unknown as ValueType;\n protected formatterGqlValue: (value: ValueType, injector?: Injector) => InputControlGqlValue = (\n _\n ) => undefined as InputControlGqlValue;\n\n private _required = false;\n private _disabled = false;\n private _isOuterUpdatingSavedValue = true;\n\n protected showedValue = '';\n\n protected readonly applied = computed(() => this.control.applied?.() ?? false);\n\n constructor(private _injector: Injector) {\n if (this._ngControl) {\n this._ngControl.valueAccessor = this;\n }\n }\n\n public get value(): ValueType | undefined {\n return this.control?.getRawValue();\n }\n\n public writeValue(value: ValueType): void {\n this._updateShowedValue(value);\n }\n\n public clear(): void {\n this.control.reset();\n this.control.markAsDirty();\n }\n\n public registerOnChange(onChange: (value: ValueType) => void): void {\n this.onChange = onChange;\n }\n\n protected onChange: (value: ValueType) => void = () => {};\n\n public registerOnTouched(onTouched: () => void): void {\n this.onTouched = onTouched;\n }\n\n protected onTouched = (): void => {};\n\n public ngOnInit(): void {\n this.onInit();\n }\n\n protected onInit(): void {}\n\n public ngAfterViewInit(): void {\n this.afterViewInit();\n }\n\n protected afterViewInit(): void {}\n\n protected get isInvalidAndNotPristine(): boolean {\n return this.control.invalid && !this.control.pristine;\n }\n\n protected isNotEmpty(): boolean {\n const v = this.value;\n\n return !(\n v === null ||\n v === undefined ||\n (typeof v === 'string' && v.trim() === '') ||\n (Array.isArray(v) && v.length === 0) ||\n (typeof v === 'object' && !Array.isArray(v) && Object.keys(v).length === 0)\n );\n }\n\n public ngAfterContentInit(): void {\n this.control =\n this._ngControl && (this._ngControl.control as IInputControl<ValueType, SavedValueType>);\n\n if (this.control) {\n if (this._required) {\n this._setControlRequired(this._required);\n }\n\n if (this._disabled) {\n this._setControlDisabled(this._disabled);\n }\n\n this._subscribeOnValue();\n this._subscribeOnSavedValue();\n }\n\n this.afterContentInit();\n }\n\n private _subscribeOnValue(): void {\n this.control.valueChanges\n .pipe(\n distinctUntilChangedJSONs(),\n tap((value) => this._updateSavedValue(value)),\n takeUntilDestroyed(this.dr)\n )\n .subscribe((value) => {\n this.control.gql_value = this.formatterGqlValue(value, this._injector);\n this._updateShowedValue(value);\n\n if (this.isNotEmpty()) {\n this.control.applied?.set(false);\n }\n });\n }\n\n private _updateShowedValue(value: ValueType): void {\n this.showedValue = this.buildShowedValue()(value);\n this.cdr.markForCheck();\n }\n\n private _updateSavedValue(value: ValueType): void {\n this._isOuterUpdatingSavedValue = false;\n const savedValue = this.formatterSavedValue(value, this._injector);\n this.control.saved_value$?.next(savedValue);\n this._isOuterUpdatingSavedValue = true;\n }\n\n private _subscribeOnSavedValue(): void {\n this.control.saved_value$\n ?.pipe(\n skip(1), // при подписывании на saved_value$ первым приходит null - пропускаем\n filter(() => this._isOuterUpdatingSavedValue),\n takeUntilDestroyed(this.dr)\n )\n .subscribe((savedValue) => {\n const value =\n savedValue === null ? null : this.parserSavedValue(savedValue, this._injector);\n this.control.setValue(value as ValueType);\n });\n }\n\n protected afterContentInit(): void {}\n\n private _setControlRequired(required: boolean): void {\n if (required) {\n this.control?.addValidators(Validators.required);\n } else {\n this.control?.removeValidators(Validators.required);\n }\n }\n\n private _setControlDisabled(disabled: boolean): void {\n if (disabled) {\n this.control?.disable();\n } else {\n this.control?.enable();\n }\n }\n}\n","import { Directive, Injector } from '@angular/core';\nimport { DateTimeService } from '../../services/date-time.service';\nimport { ParamBase } from './param-base';\nimport { PrizmDateTypes } from '../../utils/prizm.shared.module';\nimport { InputControlSaveValue } from '../../types';\nimport { EDatePattern, ETimezone } from '../../directives/date/date-time.types';\n\n@Directive()\nexport abstract class ParamDateBase<\n ValueType extends PrizmDateTypes | null,\n SavedValueType extends InputControlSaveValue,\n> extends ParamBase<ValueType, SavedValueType> {\n protected readonly ETimezone = ETimezone;\n protected readonly EDatePattern = EDatePattern;\n\n protected readonly _dts = this._dateInjector.get(DateTimeService);\n\n protected readonly timezoneChange = this._dts.isTimeZoneChanged$;\n\n constructor(private _dateInjector: Injector) {\n super(_dateInjector);\n }\n\n protected rebuildDateInNewTimezone(date: Date, prevDiff: string, currDiff: string): Date {\n const iso = this._dts.convertDateToISOWithTZ(date, prevDiff);\n const utc = new Date(iso).toISOString();\n\n return this._dts.isoToLocalDate(utc, currDiff);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Apollo } from 'apollo-angular';\nimport { DocumentNode } from 'graphql/language';\nimport gql from 'graphql-tag';\nimport { QueryOptions } from '@apollo/client/core';\nimport { map, Observable, of, take } from 'rxjs';\nimport { MetaQuery } from '../types/params.types';\n\n@Injectable()\nexport class FastQueryStore {\n private cachedTime = -12_345;\n private cachedVariables = '';\n private cachedData: { data: Record<string, any>[]; totalElements: number } = {\n data: [],\n totalElements: 0,\n };\n\n private readonly _apollo = inject(Apollo);\n\n public getResults(\n meta: MetaQuery,\n withoutAggregate?: boolean,\n selectedIdsWhere?: object\n ): Observable<{ data: Record<string, any>[]; totalElements: number; selectedIdsQuery?: any[] }> {\n const offset = meta.offset ?? 0;\n const { limit } = meta;\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const { order_by } = meta;\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const { distinct_on, where } = meta;\n let variables: Record<string, any> = { offset, limit, order_by, distinct_on };\n\n if (where) {\n variables = {\n ...variables,\n where,\n ...(selectedIdsWhere && { selectedIdsWhere }),\n };\n }\n\n const currentTime = Date.now();\n const diff = (currentTime - this.cachedTime) / 20_000;\n if (JSON.stringify(variables) === this.cachedVariables && diff <= 1) {\n return of(this.cachedData);\n }\n const query = this.generateGqlQuery(meta, withoutAggregate, !!where && !!selectedIdsWhere);\n const queryOptions: QueryOptions = {\n query,\n fetchPolicy: 'no-cache',\n variables,\n };\n\n return this._apollo.watchQuery<any>(queryOptions).valueChanges.pipe(\n take(1),\n map(({ data }) => {\n const { table } = meta;\n\n const totalElements = withoutAggregate\n ? data[table.name].length\n : data[`${table.name}_aggregate`].aggregate.count;\n const selectedIdsQuery = data?.selectedIdsQuery;\n const result = { data: data[table.name], totalElements, selectedIdsQuery };\n this.cachedVariables = JSON.stringify(variables);\n this.cachedData = result;\n this.cachedTime = Date.now();\n return result;\n })\n );\n }\n\n public generateGqlQuery(\n meta: MetaQuery,\n withoutAggregate?: boolean,\n withPickedSearch?: boolean\n ): DocumentNode {\n const data = this._buildDeepDataFromValue(meta.table.valueField);\n\n return gql`\n query queryFilter${meta.table.name}(\n $where: ${meta.table.name}_bool_exp\n $selectedIdsWhere: ${meta.table.name}_bool_exp\n $limit: Int\n $offset: Int\n $order_by: [${meta.table.name}_order_by!]\n $distinct_on: [${meta.table.name}_select_column!]\n ) {\n ${\n meta.table.name\n } (where: $where, limit: $limit, offset: $offset, order_by: $order_by, distinct_on: $distinct_on) {\n ${meta.table.idField}\n ${data}\n }\n\n ${\n withoutAggregate\n ? ''\n : `${meta.table.name}_aggregate (where: $where) {\n aggregate {\n count\n }\n }`\n }\n\n ${\n withPickedSearch\n ? `\n selectedIdsQuery: ${meta.table.name}(where: $selectedIdsWhere) {\n ${meta.table.idField}\n ${data}\n }\n `\n : ''\n }\n\n }\n `;\n }\n\n private _buildDeepDataFromValue(value: string): string {\n const resultArray = value.split(' ');\n const arr = [];\n for (const el of resultArray) {\n let result = '';\n const deepValues = el.split('.');\n for (let i = deepValues.length - 1; i > 0; i--) {\n result = `{${deepValues[i]} ${result}}`;\n }\n arr.push(deepValues[0] + result);\n }\n return arr.join(' ');\n }\n}\n","import { Directive, Injector, Input, output } from '@angular/core';\nimport { ParamBase } from './param-base';\nimport { BehaviorSubject } from 'rxjs';\nimport { PolymorphContent } from '@prizm-ui/components';\nimport { InputControlSaveValue } from '../../types';\nimport { InferArrayType } from '../../types/sub-types';\nimport { MetaQuery } from '../../types/params.types';\nimport { FastQueryStore } from '../../store/fast-query-store.service';\n\n@Directive()\nexport abstract class ParamSelectBase<\n ValueType,\n SavedValueType extends InputControlSaveValue,\n> extends ParamBase<ValueType, SavedValueType> {\n @Input() items: NonNullable<InferArrayType<ValueType>>[] = [];\n @Input() searchable: boolean = false;\n @Input() maxDropdownHeight = 342;\n @Input() valueTemplate?: PolymorphContent;\n @Input() listItemTemplate?: PolymorphContent;\n @Input() nullContent: PolymorphContent | string | null = 'Не выбрано';\n /** Массив полей по которым будет производиться фильтрация _or */\n @Input() searchSubfields: string[] = [];\n /** Флаг строгого поиска: строгий - _eq, не строгий - _ilike */\n @Input() strictSearch = false;\n @Input() selectClasses?: string;\n @Input() limit = 50;\n /** форматтер для задания кастомного отображения значения в поле */\n @Input() formatShowedValue: (value: any, field: string) => string = (value, field) =>\n value[field];\n /** мета для автоматической подргузки значений из таблицы */\n @Input() set meta(meta: MetaQuery | null) {\n if (JSON.stringify(meta) !== JSON.stringify(this.meta)) {\n this._meta$.next(meta);\n }\n }\n public get meta(): MetaQuery | null {\n return this._meta$.getValue();\n }\n\n public itemsChange = output<NonNullable<InferArrayType<ValueType>>[]>();\n\n private readonly _meta$ = new BehaviorSubject<MetaQuery | null>(null);\n\n protected readonly meta$ = this._meta$.asObservable();\n\n protected readonly store = this._selectInjector.get(FastQueryStore);\n\n public loading = false;\n\n constructor(private _selectInjector: Injector) {\n super(_selectInjector);\n }\n\n protected buildWhere(searchValue?: string): object | undefined {\n const paramWhere = this.meta?.where;\n const { valueField } = this.metaFields;\n\n // Создаем массив условий _ilike для дополнительных полей\n const ilikeConditions = [];\n\n if (searchValue) {\n if (this.searchSubfields) {\n ilikeConditions.push(\n ...this.searchSubfields.map((field) =>\n this.buildNestedCondition(field, searchValue, false)\n )\n );\n }\n\n if (valueField) {\n ilikeConditions.push(this.buildNestedCondition(valueField, searchValue, this.strictSearch));\n }\n }\n\n // Если параметр where не задан, но есть значение для поиска и поле valueField, возвращаем только условия _ilike\n if (!paramWhere && ilikeConditions.length > 0) {\n return { _or: ilikeConditions };\n }\n\n // Если параметр where задан, добавляем условия _ilike к существующим условиям\n if (paramWhere) {\n return {\n ...(paramWhere as object),\n _or: ilikeConditions.length === 0 ? undefined : ilikeConditions,\n };\n }\n\n // Если ничего не задано, возвращаем undefined\n return;\n }\n\n protected buildNestedCondition(field: string, value: string, strict: boolean): object {\n const parts = field.split('.');\n const current = {};\n let temp: any = current;\n\n for (let i = 0; i < parts.length - 1; i++) {\n const part = parts[i];\n temp[part] = {};\n temp = temp[part];\n }\n\n const lastPart = parts[parts.length - 1];\n temp[lastPart] = strict ? { _eq: value } : { _ilike: `%${value}%` };\n\n return current;\n }\n\n protected get metaFields(): { idField: string | null; valueField: string | null } {\n const idField = this.meta?.table.idField ?? null;\n const valueField = this.meta?.table.valueField.split(' ')[0] ?? null;\n\n return {\n idField,\n valueField,\n };\n }\n}\n","import { Directive, inject, input } from '@angular/core';\nimport { ParamBase } from './param-base';\nimport { MAX_LENGTH_TEXT_PARAMS } from './param.tokens';\n\nconst DEFAULT_MAX_LENGTH = 1000;\n\n@Directive()\nexport abstract class ParamTextBase extends ParamBase<string | null, string | null> {\n private readonly _initMaxLength =\n inject(MAX_LENGTH_TEXT_PARAMS, { optional: true }) ?? DEFAULT_MAX_LENGTH;\n\n public override placeholder = input('Введите значение');\n public override buildShowedValue = input(\n (value: string | null): string => value?.toString() ?? '-'\n );\n\n /**\n * Максимальное кол-во символов\n *\n * @default 1000\n * */\n public maxLength = input(this._initMaxLength);\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { PrizmTableCellSorter } from '@prizm-ui/components';\nimport { Apollo, MutationResult } from 'apollo-angular';\nimport { Observable, ReplaySubject, Subscription } from 'rxjs';\nimport { IHasuraQueryFilter } from '../../components/register-table/model/schema';\nimport { GqlFields } from '../../types/inputs.types';\nimport { IBaseRegisterStore, IBaseRegisterStoreState } from '../../types/register-base.types';\nimport { HasuraError } from '../../types/hasura.types';\n\n@Injectable()\nexport abstract class RegisterBaseStore<\n Type extends Record<string, any>,\n State extends IBaseRegisterStoreState<Type> = IBaseRegisterStoreState<Type>,\n >\n extends ComponentStore<State>\n implements IBaseRegisterStore<Type>\n{\n protected apollo = inject(Apollo);\n\n readonly error = (e: HasuraError): void => {\n console.error(e);\n this.setLoading(false);\n };\n\n public getBaseFilter(params?: any): Record<string, any> {\n return {} as Record<string, any>;\n }\n\n readonly mutationCompleted$ = new ReplaySubject<boolean>();\n readonly loading$ = this.select((state) => state.loading);\n readonly count$ = this.select((state) => state.count);\n readonly total$ = this.select((state) => state.total);\n\n readonly objects$ = this.select((state) => state.objects);\n readonly setObjects = this.updater(\n (store, objects: Type[]): State => ({\n ...store,\n loading: false,\n objects,\n })\n );\n\n readonly setLoading = this.updater((store, loading: boolean): State => ({ ...store, loading }));\n readonly setCount = this.updater(\n (store, count: number): State => ({\n ...store,\n count,\n })\n );\n\n readonly setTotal = this.updater(\n (state, total: number): State => ({\n ...state,\n total,\n })\n );\n\n abstract readonly deleteByIds: (\n ids: string[],\n ...args: unknown[]\n ) => Observable<MutationResult<Type[]> | null>;\n abstract readonly fetchTotal: (\n observableOrValue: Record<string, any> | Observable<Record<string, any>>\n ) => Subscription;\n abstract readonly fetchObjects: (\n observableOrValue:\n | {\n filter: IHasuraQueryFilter<Type>;\n callback?: (data: Type[]) => void;\n }\n | Observable<{\n filter: IHasuraQueryFilter<Type>;\n callback?: (data: Type[]) => void;\n }>\n ) => Subscription;\n\n abstract buildFilter(\n limit: number | undefined,\n offset: number | undefined,\n gqlFilter: GqlFields | undefined,\n sorter?: PrizmTableCellSorter<Type>[]\n ): IHasuraQueryFilter<Type>;\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n DestroyRef,\n Directive,\n inject,\n Injector,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n debounceTime,\n filter as rxjsFilter,\n map,\n Observable,\n ReplaySubject,\n Subscription,\n switchMap,\n take,\n tap,\n throwError,\n} from 'rxjs';\nimport {\n ERegisterObjectState,\n IRegisterBase,\n IRegisterObject,\n ITpUserSettings,\n ITpUserSettingsSettingsFilter,\n ObjectsSubscriptionConfig,\n IUserProfile,\n EInputsAction,\n EInputsState,\n GqlField,\n GqlFields,\n} from '../../types';\nimport {\n EColumnStatus,\n IColumnSettings,\n IColumnSettingsChanges,\n} from '../../components/column-settings/types/column-settings.types';\nimport {\n IColumnData,\n IHasuraQueryFilter,\n RegisterTableCellSorter,\n ThWidthEntry,\n} from '../../components';\nimport {\n ApplySelectionTypes,\n SelectionTypes,\n} from '../../components/checkbox-selector/checkbox-selector.types';\nimport {\n FiltersStateService,\n FiltersService,\n FiltersTransmitService,\n SelectedObjectsStateService,\n} from '../../services';\nimport {\n SEARCH_INPUT_DEBOUNCE_TIME_MLS,\n SETTINGS_TYPE,\n USER_PROFILE_LOADER,\n USER_SETTINGS_LOADER,\n} from '../../consts/register-base.consts';\nimport { getLastSegmentOfPathName, isNonNull } from '../../utils';\nimport { FormGroupWrapper } from '../form-group-wrapper';\nimport { DEFAULT_LIMIT } from '../../services/inputs-state.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport _ from 'lodash';\nimport { ScalarUUID } from 'hasura';\nimport { RegisterBaseStore } from './register-base.store';\n\n@Directive()\nexport abstract class RegisterBase<T extends IRegisterBase, Form = any>\n implements OnInit, AfterViewInit, OnDestroy\n{\n /** Сервисы управления фильтрами */\n protected readonly filtersService = inject(FiltersService);\n protected readonly stateService = inject(FiltersStateService);\n protected readonly transmitter = inject(FiltersTransmitService, { optional: true });\n /** Сервис управления пользователем */\n protected readonly userService = inject(USER_PROFILE_LOADER);\n /** Сервис управления данными в реестре */\n protected readonly baseStore = inject(RegisterBaseStore<T>, { optional: true });\n // TODO удалить optional: true после выполнения задачи SMA2-3134\n protected readonly selectedService = inject(SelectedObjectsStateService<T>, {\n optional: true,\n });\n // TODO protected readonly navigationService = inject(NavigationService);\n protected readonly router = inject(Router);\n protected readonly cdr = inject(ChangeDetectorRef);\n protected readonly destroyRef = inject(DestroyRef);\n\n private readonly settingsService = inject(USER_SETTINGS_LOADER);\n\n public readonly filterApplied$: Observable<boolean> = this.stateService.gqlValues$.pipe(\n map((filter) => Number(filter.length) > 0)\n );\n public readonly page$ = this.stateService.page$;\n public readonly limit$ = this.stateService.limit$;\n public readonly selectedRecordsLoading$ = new BehaviorSubject(false);\n\n public columnsData: IColumnData[];\n public columns: string[];\n public data: T[] = [];\n public visibleData: T[] = [];\n public dataCount = 0;\n /** @deprecated Используйте selectedObjectsFromState */\n public selectedObjects = new Set<any>();\n /** @deprecated Используйте selectedIdsFromState */\n public selectedIds = new Set<ScalarUUID>();\n public _user = this.userService.getUserProfile();\n public stickyLeftIds: string[] = [];\n public stickyRightIds: string[] = [];\n public currentFilter: IHasuraQueryFilter<T> | null = null;\n /**\n * Форма фильтров\n */\n protected filtersForm!: FormGroupWrapper<Form>;\n protected filterState: ITpUserSettingsSettingsFilter[] = [];\n\n private _limit!: number;\n private _offset!: number;\n private _filterState!: GqlFields;\n private _modulePath = getLastSegmentOfPathName(this.router.url);\n private _defaultFilterApplied$ = new ReplaySubject<boolean>();\n /**\n * Всего записей, без учета фильтра\n */\n public abstract totalNotFiltered$: Observable<number>;\n /**\n * Маршруты для бредкрамба\n */\n public abstract routes: any[];\n /**\n * Контрол строки поиска\n */\n public searchInput = this.filtersService.searchInput!;\n /**\n * Действие завершено\n */\n public abstract actionCompleted$: ReplaySubject<boolean>;\n /**\n * Получение общего количества записей\n */\n public abstract fetchTotalObjects: (\n observableOrValue: Record<string, any> | Observable<Record<string, any>>\n ) => Subscription;\n /**\n * Запрос на количество отфильтрованных записей\n */\n public fetchTotalFilteredObjects:\n | ((observableOrValue: Record<string, any> | Observable<Record<string, any>>) => Subscription)\n | undefined;\n /**\n * Подписка на получение всех объектов и с обратным вызовом\n */\n public abstract objectsSubscription: (\n observableOrValue: ObjectsSubscriptionConfig<T> | Observable<ObjectsSubscriptionConfig<T>>\n ) => Subscription;\n /**\n * Базовый фильтр, по умолчанию\n */\n public abstract baseFilter: (user: IUserProfile | undefined) => Record<string, any>;\n\n /**\n * Сборка фильтра\n */\n public abstract buildFilter(\n limit?: number,\n offset?: number,\n gqlFilter?: GqlFields,\n sorter?: RegisterTableCellSorter<T>[]\n ): any;\n\n /**\n * Сборка фильтров реестра\n */\n protected abstract get buildForm(): FormGroupWrapper<Form>;\n\n public get limit(): number {\n return this._limit;\n }\n\n public get offset(): number {\n return this._offset;\n }\n\n /** Uuid'ы всех выбранных или исключаемых объектов реестра (зависит от состояния еще не загруженных объектов) */\n public get idsFromState(): Set<ScalarUUID> {\n const service: SelectedObjectsStateService<T> | null = this.selectedService;\n\n if (!service) {\n throw new Error('SelectedObjectsStateService не запровайжен');\n }\n\n return service.keys();\n }\n\n /** Все выбранные uuid'ы реестра */\n public get selectedIdsFromState(): Set<ScalarUUID> {\n const service: SelectedObjectsStateService<T> | null = this.selectedService;\n\n if (!service) {\n throw new Error('SelectedObjectsStateService не запровайжен');\n }\n\n return service.selectedKeys();\n }\n\n /** Все выбранные объекты реестра */\n public get selectedObjectsFromState(): Set<T> {\n const service: SelectedObjectsStateService<T> | null = this.selectedService;\n\n if (!service) {\n throw new Error('SelectedObjectsStateService не запровайжен');\n }\n\n return service.selectedValues();\n }\n\n private _columnsSettings: ITpUserSettings | undefined;\n private _pageRowsLimitSetting: ITpUserSettings | undefined;\n\n private readonly _defaultColumnsWidths: Map<string, string | undefined>;\n\n private readonly _selectionType$ =\n this.selectedService?.selectionType$ ?? new BehaviorSubject<ApplySelectionTypes>(null);\n\n public readonly stateObjects = this.selectedService?.state;\n\n protected constructor(\n protected readonly injector: Injector,\n columnsData: IColumnData[]\n ) {\n this.columnsData = columnsData;\n this._defaultColumnsWidths = new Map(columnsData.map((col) => [col.name, col.width]));\n this.columns = this._getDefaultColumnsRecursive(columnsData);\n this._subscribeOnSettings();\n this._fetchSavedPageRowsLimit();\n const state = this.router.getCurrentNavigation()?.extras?.state;\n if (state) {\n this.filterState = this.parseToFilters(state);\n }\n }\n\n private _subscribeOnSettings(): void {\n this.settingsService.settings$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(([userSetting]) => {\n const { tableColumnsWidth } = userSetting?.settings ?? {};\n const type = userSetting?.settings_type;\n\n if (type && type !== SETTINGS_TYPE.COLUMNS) {\n return;\n }\n\n const cleanedCurrent = this._omitUndefined(\n this._columnsSettings?.settings.tableColumnsWidth\n );\n const cleanedNew = this._omitUndefined(tableColumnsWidth);\n\n if (!_.isEqual(cleanedCurrent, cleanedNew)) {\n this._setColumnsWidth(tableColumnsWidth);\n }\n\n this._columnsSettings = userSetting;\n });\n }\n\n private _omitUndefined(arr: ThWidthEntry[] | undefined) {\n return _.map(arr ?? [], (obj) => _.omitBy(obj, _.isUndefined));\n }\n\n private _setColumnsWidth(columnsWidth: ThWidthEntry[] | undefined): void {\n const thsWidthMap = new Map(columnsWidth?.map(({ name, width }) => [name, width]));\n\n this.columnsData = this.columnsData.map((col) => {\n const defaultWidth = this._defaultColumnsWidths.get(col.name)!;\n const currentWidth = thsWidthMap.has(col.name) ? thsWidthMap.get(col.name) : null;\n\n const width = currentWidth === null ? defaultWidth : currentWidth;\n\n return {\n ...col,\n width,\n };\n });\n }\n\n private _fetchSavedPageRowsLimit(): void {\n this.settingsService\n .fetchUserSettings$(\n {\n id_user: {\n _eq: this._user.id,\n },\n settings_type: {\n _eq: SETTINGS_TYPE.REGISTER_PAGE_ROWS_LIMIT,\n },\n module_name: {\n _eq: this._modulePath,\n },\n },\n true\n )\n .subscribe(([firstSetting]) => {\n this._pageRowsLimitSetting = firstSetting;\n const { pageRowsLimit } = firstSetting?.settings ?? {};\n\n this.stateService.setLimit(pageRowsLimit ?? DEFAULT_LIMIT);\n });\n }\n\n public ngOnInit(): void {\n this.filtersForm = this.buildForm;\n this.filtersService.init(this.filtersForm);\n this.stateService.setState({ state: EInputsState.HIDDEN, action: EInputsAction.OPEN });\n\n this.fetchTotalObjects(this.baseFilter(this._user));\n this._subscribeOnMutationCompleted();\n this.subscribeOnPaging();\n\n // TODO проверить нужна ли Перезагрузка страницы\n // if (this.navigationService.previousUrl === null) {\n // this.stateService.setOffset(0);\n // this.stateService.setPage(1);\n // }\n\n this.baseStore?.count$?.subscribe((count) => {\n this.dataCount = count;\n this.stateService.setCount(count);\n });\n }\n\n public ngAfterViewInit(searchLimiter = 2): void {\n this._setFilters();\n this.subscribeOnSearchChanges(searchLimiter);\n }\n\n private _setFilters(): void {\n const queryFilters = this.transmitter?.filters;\n const querySearch = this.transmitter?.search;\n let filters: ITpUserSettingsSettingsFilter[] | undefined;\n\n if (querySearch) {\n this.searchInput.setValue(querySearch);\n }\n\n if (!queryFilters || queryFilters.length > 0) {\n filters = queryFilters || [];\n }\n\n this.applyBaseFilter();\n this._initDefaultFilter(filters);\n }\n\n protected applyBaseFilter(_data?: any): void {}\n\n public ngOnDestroy(): void {\n this.actionCompleted$.complete();\n this.selectedRecordsLoading$.complete();\n this.filtersService.clear();\n this.stateService.setOffset(0);\n this.stateService.setGqlValues({});\n\n if (this.searchInput?.value) {\n this.stateService.setSearchFilterValue('');\n this.stateService.setGqlValues(this.filtersService.gqlFilter);\n }\n }\n\n protected applyFilters(filters: ITpUserSettingsSettingsFilter[]): void {\n this.filtersService.setUserSettingsFilterValues(filters);\n this.stateService.setGqlValues(this.filtersService.gqlFilter);\n }\n\n protected setData(data: T[], count?: number): void {\n this.data = data;\n\n if (count !== undefined) {\n this.dataCount = count;\n this.stateService.setCount(count);\n }\n\n this.cdr.markForCheck();\n }\n\n protected updateAllStateObjectsByState(state: ERegisterObjectState): void {\n this.selectedService?.setAllStateObjectsByState(state);\n }\n\n protected updateStateObjectByKey(key: ScalarUUID, updates: Partial<IRegisterObject<T>>): void {\n this.selectedService?.setStateObjectByKey(key, updates);\n }\n\n protected clearSelections(data?: T[]): void {\n this.selectedIds.clear();\n this.selectedObjects.clear();\n\n if (this.selectedService) {\n this.selectedService?.resetState(data);\n this.buildActions({\n row: [],\n count: 0,\n });\n }\n }\n\n protected actionCompleted(): void {\n const filter = this.buildFilter(this.limit, this.offset, this._filterState);\n this.currentFilter = filter;\n\n this.clearSelections();\n this.objectsSubscription({ filter });\n }\n\n protected buildActions(_data: { row: T[]; count: number }): void {}\n\n protected subscribeOnSearchChanges(limiter: number): void {\n this.searchInput?.valueChanges\n .pipe(\n rxjsFilter((value) => !value || value.length > limiter),\n debounceTime(SEARCH_INPUT_DEBOUNCE_TIME_MLS),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n this.stateService.setGqlValues(this.filtersService.gqlFilter);\n });\n }\n\n public updateRegister(): void {\n this.stateService.setLimit(this.stateService.limit);\n }\n\n public subscribeOnPaging(): void {\n this._defaultFilterApplied$\n .pipe(\n take(1),\n switchMap(() =>\n combineLatest([\n this.stateService.limit$.pipe(rxjsFilter(isNonNull)),\n this.stateService.offset$,\n this.stateService.gqlValues$.pipe(\n tap((data) => {\n if (Number(data.length) > 0) {\n this.selectChanged(null);\n }\n })\n ),\n this.stateService.sorter$,\n ]).pipe(debounceTime(250))\n ),\n catchError((e) => {\n console.error('pagination', e);\n\n return throwError(() => new Error(e));\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(([limit, offset, gqlFilter, sorter]) => {\n const filter = this.buildFilter(limit, offset, gqlFilter, sorter);\n const gqlFilterUpdated = !_.isEqual(this._filterState, gqlFilter);\n this.currentFilter = filter;\n this._filterState = gqlFilter;\n this._limit = limit;\n this._offset = offset;\n if (this.stateObjects) {\n if (gqlFilterUpdated) {\n this.selectedService?.resetState();\n }\n\n this.objectsSubscription({ filter, callback: this._setStateObjects.bind(this) });\n } else {\n this.objectsSubscription({ filter });\n }\n this.fetchTotalFilteredObjects?.(filter.where);\n });\n }\n\n private _setStateObjects(data: T[]): void {\n this.selectedService?.loadStateObjects(data);\n }\n\n public selectChanged(value: ApplySelectionTypes): void {\n this._selectionType$.next(value);\n\n const stateObjects = this.stateObjects;\n\n if (stateObjects) {\n this._changeStateObjects(stateObjects(), value);\n\n return;\n }\n\n const filter = this._selectChangedFilter(value);\n this.currentFilter = filter;\n\n this.buildActions({\n row: [...(this.selectedObjects ?? [])],\n count: this.selectedObjects ? this.selectedObjects.size : 0,\n });\n\n if (!filter) {\n return;\n }\n\n this.selectedRecordsLoading$.next(true);\n this.objectsSubscription({\n filter,\n callback: this._setSelected.bind(this),\n });\n }\n\n private _changeStateObjects(\n stateObjects: Map<ScalarUUID, IRegisterObject<T>>,\n value: ApplySelectionTypes\n ): void {\n if (value === SelectionTypes.ALL) {\n this.updateAllStateObjectsByState(ERegisterObjectState.SELECTED);\n } else if (value === SelectionTypes.INVERSE) {\n this._inverseStateObjects(stateObjects);\n } else if (value === SelectionTypes.VISIBLE) {\n this._selectVisibleStateObjects();\n } else if (typeof value === 'number') {\n this._selectFirstNStateObjects(value);\n } else {\n this.clearSelections(this.data);\n }\n\n this.buildActions({\n row: [...this.selectedObjectsFromState],\n count: this.selectedObjectsFromState.size,\n });\n }\n\n private _inverseStateObjects(stateObjects: Map<ScalarUUID, IRegisterObject<T>>): void {\n for (const [key, { state }] of stateObjects) {\n const inverseState =\n state === ERegisterObjectState.SELECTED\n ? ERegisterObjectState.UNSELECTED\n : ERegisterObjectState.SELECTED;\n\n this.updateStateObjectByKey(key, { state: inverseState });\n }\n }\n\n private _selectVisibleStateObjects(): void {\n this.updateAllStateObjectsByState(ERegisterObjectState.UNSELECTED);\n for (const visibleObject of this.visibleData) {\n this.updateStateObjectByKey(visibleObject.id, { state: ERegisterObjectState.SELECTED });\n }\n }\n\n private _selectFirstNStateObjects(value: number): void {\n this.updateAllStateObjectsByState(ERegisterObjectState.UNSELECTED);\n\n if (value > this.limit) {\n const { sorter } = this.stateService;\n const filter = this.buildFilter(\n value,\n this.offset,\n this._filterState,\n sorter.length > 0 ? sorter : undefined\n );\n this.objectsSubscription({\n filter,\n callback: this._selectFirstNLoadingObjects.bind(this),\n noSet: true,\n });\n } else {\n const firstNObjects = this.data.slice(0, value);\n this._selectFirstNLoadingObjects(firstNObjects);\n }\n }\n\n private _selectFirstNLoadingObjects(objects: T[]): void {\n for (const object of objects) {\n this.updateStateObjectByKey(object.id, { state: ERegisterObjectState.SELECTED, object });\n }\n }\n\n public filterToggle(): void {\n this.stateService.toggle();\n }\n\n public onPaginatorChange(paginatorChange: {\n first: number;\n page: number;\n pagesCount: number | null;\n rows: number;\n }): void {\n const { rows, first, page } = paginatorChange;\n\n if (this.stateService.limit !== rows) {\n this.stateService.setLimit(rows);\n this._savePageRowsLimit(rows);\n }\n\n if (this.stateService.offset !== first - 1) {\n this.stateService.setOffset(first - 1);\n }\n\n if (this.stateService.page !== page) {\n this.stateService.setPage(page);\n }\n }\n\n private _savePageRowsLimit(pageRowsLimit: number): void {\n this.settingsService\n .upsertReturningOne$(SETTINGS_TYPE.REGISTER_PAGE_ROWS_LIMIT)\n .subscribe((setting) => {\n this._pageRowsLimitSetting = setting || undefined;\n });\n this.settingsService.upsertUserSettingsByUserId({\n settings: {\n id: this._pageRowsLimitSetting?.id,\n settings_type: SETTINGS_TYPE.REGISTER_PAGE_ROWS_LIMIT,\n module_name: this._modulePath,\n settings: { pageRowsLimit },\n },\n hidden: true,\n });\n }\n\n public updateColumnSettings({ settings }: IColumnSettingsChanges): void {\n if (settings) {\n this.stickyLeftIds = this._getColumnIdsRecursive(settings.stickyLeft);\n this.stickyRightIds = this._getColumnIdsRecursive(\n settings.stickyRight,\n (el) => el.status === EColumnStatus.DEFAULT\n );\n this.columns = [\n ...this.stickyLeftIds,\n ...this._getColumnIdsRecursive(\n settings.columns,\n (el) => el.status === EColumnStatus.DEFAULT\n ),\n ...this.stickyRightIds,\n ];\n }\n\n this.cdr.markForCheck();\n }\n\n private _getColumnIdsRecursive(\n columns: IColumnSettings[],\n predicate?: (value: IColumnSettings, index: number, array: IColumnSettings[]) => unknown\n ): string[] {\n const filteredColumns = predicate\n ? columns.filter((col, index, array) => predicate(col, index, array))\n : columns;\n\n return filteredColumns.flatMap((column) => {\n const { id, children } = column;\n\n if (children) {\n return [id, ...this._getColumnIdsRecursive(children, predicate)];\n }\n\n return [id];\n });\n }\n\n public updateSort(sort: RegisterTableCellSorter<any>[]): void {\n this.stateService.setSorter(sort);\n }\n\n protected saveThsWidthToUserSettings(tableColumnsWidth: ThWidthEntry[]): void {\n const settings = this._columnsSettings;\n if (settings) {\n settings.settings.tableColumnsWidth = tableColumnsWidth;\n }\n\n this.settingsService.upsertUserSettingsByUserId({\n settings: {\n id: this._columnsSettings?.id,\n settings_type: SETTINGS_TYPE.COLUMNS,\n module_name: this._modulePath,\n settings: { ...this._columnsSettings?.settings, tableColumnsWidth },\n },\n hidden: true,\n updateSettings: true,\n });\n }\n\n protected get filtersAreOpened(): boolean {\n return this.stateService.state.state !== EInputsState.HIDDEN;\n }\n\n private _subscribeOnMutationCompleted(): void {\n this.actionCompleted$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.actionCompleted());\n }\n\n private _initDefaultFilter(queryFilters: ITpUserSettingsSettingsFilter[] | undefined): void {\n this.settingsService\n .fetchUserSettings$({\n id_user: {\n _eq: this._user.id,\n },\n settings_type: {\n _in: [SETTINGS_TYPE.FILTER, SETTINGS_TYPE.REGISTER_PINNED_INPUTS],\n },\n module_name: {\n _eq: this._modulePath,\n },\n })\n .pipe(take(1))\n .subscribe((userSettings) => {\n const pinnedFilter = userSettings.find(\n ({ settings_type: type }) => type === SETTINGS_TYPE.REGISTER_PINNED_INPUTS\n );\n const isPinned = !!pinnedFilter?.settings.pinned;\n const favoriteFilter = userSettings.find(({ settings }) => settings.favorite);\n\n if (isPinned) {\n this.stateService.setPin(true);\n this.stateService.setState({\n state: EInputsState.FILTER_LIST,\n action: EInputsAction.APPLY_SAVED_FILTER,\n });\n }\n\n if (queryFilters || this.searchInput?.getRawValue()) {\n this.applyFilters(queryFilters ?? []);\n } else if (pinnedFilter && isPinned) {\n this._applyFilterSettings(pinnedFilter);\n } else if (favoriteFilter) {\n this._applyFilterSettings(favoriteFilter);\n }\n\n this._defaultFilterApplied$.next(true);\n });\n }\n\n private _applyFilterSettings(settings: ITpUserSettings): void {\n this.filtersService.setUserSettingsFilterValues(settings.settings.filter ?? []);\n const { gqlFilter } = this.filtersService;\n this.stateService.setGqlValues(gqlFilter);\n this.stateService.setState({\n state: EInputsState.HIDDEN,\n action: EInputsAction.APPLY_SAVED_FILTER,\n });\n }\n\n private _selectChangedFilter(selection: ApplySelectionTypes): any {\n let filter = null;\n\n if (selection === null) {\n this.clearSelections();\n return;\n }\n\n if (selection === SelectionTypes.ALL || typeof selection === 'number') {\n filter = this._handleAllOrNumberSelection(selection);\n } else if (selection === SelectionTypes.VISIBLE) {\n this._selectVisibleItems();\n } else if (selection === SelectionTypes.INVERSE) {\n filter = this._handleInverseSelection();\n }\n\n return filter;\n }\n\n private _handleAllOrNumberSelection(selection: ApplySelectionTypes): any {\n let filter = null;\n const { sorter } = this.stateService;\n\n if (selection === SelectionTypes.ALL) {\n filter = this.buildFilter(undefined, undefined, this._filterState);\n } else if (typeof selection === 'number') {\n if (selection > this.limit) {\n filter = this.buildFilter(\n selection,\n 0,\n this._filterState,\n sorter.length > 0 ? sorter : undefined\n );\n } else {\n this._selectFirstNItems(selection);\n }\n }\n\n return filter;\n }\n\n private _selectFirstNItems(count: number): void {\n this.selectedObjects = new Set(this.data.slice(0, count));\n this.selectedIds = new Set(this.data.map((d) => d.id).slice(0, count));\n }\n\n private _selectVisibleItems(): void {\n this.selectedObjects = new Set(this.visibleData);\n this.selectedIds = new Set(this.visibleData.map((d) => d.id));\n }\n\n private _handleInverseSelection(): any {\n const inverseFilter = { id: { _nin: [...this.selectedIds] } } as GqlField;\n const updatedFilterState = Array.isArray(this._filterState)\n ? [...this._filterState, inverseFilter]\n : [this._filterState, inverseFilter];\n\n return this.buildFilter(undefined, undefined, updatedFilterState);\n }\n\n private _setSelected(data: T[]): void {\n this.selectedObjects = new Set(data);\n this.selectedIds = new Set(data.map((d) => d.id));\n this.selectedRecordsLoading$.next(false);\n }\n\n protected parseToFilters(input: { [key: string]: any }): ITpUserSettingsSettingsFilter[] {\n return Object.entries(input).map(([key, value]) => ({\n id: key,\n value,\n }));\n }\n\n protected get selectedCount(): number {\n const selectedSize = this.selectedService?.selectedValues()?.size ?? null;\n const unselectedSize = this.selectedService?.unselectedValues()?.size ?? 0;\n const unfetchedObjects = this.selectedService?.stateUnfetchedObjects();\n const isNotSelected = unfetchedObjects !== ERegisterObjectState.SELECTED;\n\n if (selectedSize === null) {\n return this.selectedIds.size;\n }\n\n return isNotSelected ? selectedSize : this.dataCount - unselectedSize;\n }\n\n private _getDefaultColumnsRecursive(columnsData: IColumnData[]): string[] {\n return columnsData.flatMap((column) => {\n const { name, children } = column;\n\n if (children) {\n return [name, ...this._getDefaultColumnsRecursive(children)];\n }\n\n return [name];\n });\n }\n\n protected get notAllFetched(): boolean {\n const unfetchedState = this.selectedService!.stateUnfetchedObjects();\n const allFetched = this.stateObjects!().size === this.dataCount;\n\n return unfetchedState === ERegisterObjectState.SELECTED && !allFetched;\n }\n}\n","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { FiltersStateService } from '../../../../../services';\n\n@Component({\n selector: 'sproc-filter-edit',\n templateUrl: './filter-edit.component.html',\n styleUrls: ['./filter-edit.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterEditComponent implements OnInit, OnDestroy {\n public readonly valueControl: FormControl<string | null> = new FormControl<string | null>('');\n private subscription: Subscription | null = null;\n\n constructor(private readonly _filterStateService: FiltersStateService<any>) {}\n\n public ngOnInit(): void {\n const name = this._filterStateService.getSelectedSavedFilter()?.name ?? '';\n\n this.valueControl.setValue(name);\n this._filterStateService.setName(name);\n this.subscription = this.valueControl.valueChanges.subscribe((value) => {\n this._filterStateService.setName(value ?? '');\n });\n }\n\n public ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n}\n","<div class=\"input-wrapper\">\n <prizm-input-layout [clearButton]=\"clearButtonTemplate\" size=\"s\">\n <input [formControl]=\"valueControl\" placeholder=\"Введите название фильтра\" prizmInput />\n </prizm-input-layout>\n</div>\n\n<ng-template\n #clearButtonTemplate\n let-showStatusButton=\"showStatusButton\"\n let-disabled=\"disabled\"\n let-clear=\"clear\"\n>\n <button\n class=\"{{ showStatusButton ? '' : 'alone' }}\"\n [interactive]=\"true\"\n [disabled]=\"disabled\"\n [prizmHint]=\"'Нажмите для очистки'\"\n [prizmHintTheme]=\"'light'\"\n [prizmInputIconButton]=\"'cancel-delete-content'\"\n (click)=\"clear($event)\"\n ></button>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { map, Subscription } from 'rxjs';\nimport { SETTINGS_TYPE, USER_PROFILE_LOADER, USER_SETTINGS_LOADER } from '../../../../../consts';\nimport { EInputsAction, EInputsState, ITpUserSettings } from '../../../../../types';\nimport { FiltersStateService } from '../../../../../services';\nimport { getLastSegmentOfPathName } from '../../../../../utils/get-url-segment';\n\ninterface IFilterSavedItem {\n id: string;\n user_id: string;\n name: string;\n favorite: boolean;\n selected: boolean;\n filter: Record<string, any>;\n settingType: SETTINGS_TYPE;\n sourceSettings: ITpUserSettings;\n}\n\n@Component({\n selector: 'sproc-filter-list-saved',\n templateUrl: './filter-list-saved.component.html',\n styleUrls: ['./filter-list-saved.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterListSavedComponent implements OnInit, OnDestroy {\n public savedItems: IFilterSavedItem[] = [];\n\n private filterStateSubscription: Subscription | null = null;\n private savedFiltersSubscription: Subscription | null = null;\n private selectedFilter: ITpUserSettings | null = null;\n private modulePath?: string;\n\n private readonly _userSettingsStore = inject(USER_SETTINGS_LOADER);\n private readonly _userProfileService = inject(USER_PROFILE_LOADER);\n\n public readonly loading$ = this._userSettingsStore.loading$;\n\n constructor(\n private readonly _router: Router,\n private readonly _filterStateService: FiltersStateService<any>,\n private readonly _cdr: ChangeDetectorRef\n ) {}\n\n public ngOnInit(): void {\n this.modulePath = getLastSegmentOfPathName(this._router.url);\n this.subscribeOnSettings();\n this.subscribeOnFilterState();\n }\n\n public ngOnDestroy(): void {\n this.filterStateSubscription?.unsubscribe();\n this.savedFiltersSubscription?.unsubscribe();\n }\n\n private subscribeOnFilterState(): void {\n this.filterStateSubscription = this._filterStateService.state$.subscribe((state) => {\n if (state.state === EInputsState.SAVED_LIST) {\n this._userSettingsStore.fetchUserSettingsByUserId({\n userId: this._userProfileService.getUserProfile().id,\n settingsType: SETTINGS_TYPE.FILTER,\n moduleName: this.modulePath!,\n });\n }\n });\n }\n\n private subscribeOnSettings(): void {\n this.savedFiltersSubscription = this._userSettingsStore.settings$\n .pipe(\n map((filters) =>\n filters.map((filter) => ({\n id: filter.id,\n user_id: filter.id_user,\n name: filter.name,\n selected: false,\n favorite: filter.settings.favorite!,\n filter: filter.settings.filter!,\n settingType: filter.settings_type,\n sourceSettings: filter,\n }))\n )\n )\n .subscribe((values) => {\n this.savedItems = values.filter(\n (value) => value.settingType === undefined || value.settingType === SETTINGS_TYPE.FILTER\n );\n this._cdr.markForCheck();\n });\n }\n\n public onSelect(id: string): void {\n this.savedItems = this.savedItems.map((item) => {\n if (id === item.id) {\n this.selectedFilter = item.sourceSettings;\n this._filterStateService.setSelectedSavedFilter(item.sourceSettings);\n return { ...item, selected: true };\n }\n return { ...item, selected: false };\n });\n this._cdr.markForCheck();\n }\n\n public onFavorite(id: string): void {\n const foundedItem = this.savedItems.find((item) => item.id === id);\n const defaultFounded = this.savedItems.find((item) => item.favorite && item.id !== id);\n if (!foundedItem) {\n return;\n }\n foundedItem.favorite = !foundedItem.favorite;\n\n if (defaultFounded) {\n this.savedItems = this.savedItems.map((item) => {\n const newItem = { ...item };\n\n if (item.sourceSettings.id === defaultFounded.sourceSettings.id) {\n newItem.favorite = false;\n }\n\n return newItem;\n });\n this._userSettingsStore.updateUserSettingsSettingsById({\n id: defaultFounded.sourceSettings.id,\n settings: {\n ...defaultFounded.sourceSettings.settings,\n favorite: false,\n },\n });\n }\n this._userSettingsStore.updateUserSettingsSettingsById({\n id,\n settings: {\n ...foundedItem.sourceSettings.settings,\n favorite: foundedItem.favorite,\n },\n });\n this._cdr.markForCheck();\n }\n\n public onEdit(id: string): void {\n const foundedFilter = this.savedItems.find((item) => id === item.id);\n if (foundedFilter) {\n this._filterStateService.setSelectedSavedFilter(foundedFilter.sourceSettings);\n this._filterStateService.setState({\n state: EInputsState.ON_EDIT_FILTER,\n action: EInputsAction.EDIT_FILTER,\n });\n }\n }\n\n public onDelete(id: string): void {\n const foundedIndex = this.savedItems.findIndex((item) => item.id === id);\n if (foundedIndex === -1) {\n return;\n }\n this.savedItems.splice(foundedIndex, 1);\n this._userSettingsStore.deleteUserSettingsById({ id });\n this._cdr.markForCheck();\n }\n}\n","<div class=\"sproc-filter-list-saved\">\n <prizm-loader [showLoader]=\"$any(loading$ | async)\" [overlay]=\"true\">\n <span *ngIf=\"savedItems.length === 0\" class=\"input-text-12px\"\n >Сохраненых фильтров не найдено\n </span>\n <div\n *ngFor=\"let item of savedItems; let i = index\"\n [class.selected]=\"item.selected\"\n class=\"sproc-filter-list-saved-item\"\n (click)=\"onSelect(item.id)\"\n >\n <div class=\"input-text-12px\">{{ item.name }}</div>\n\n <div class=\"sproc-filter-list-saved-item-action-buttons\">\n <button\n [icon]=\"item.favorite ? 'social-star-fill' : 'social-star'\"\n prizmIconButton\n appearanceType=\"ghost\"\n [appearance]=\"item.favorite ? 'primary' : 'secondary'\"\n size=\"xl\"\n (click)=\"onFavorite(item.id)\"\n ></button>\n\n <button\n [icon]=\"'editor-mode'\"\n prizmIconButton\n appearanceType=\"ghost\"\n appearance=\"secondary\"\n size=\"xl\"\n (click)=\"onEdit(item.id)\"\n ></button>\n\n <button\n [icon]=\"'delete'\"\n prizmIconButton\n appearanceType=\"ghost\"\n appearance=\"secondary\"\n size=\"xl\"\n (click)=\"onDelete(item.id)\"\n ></button>\n </div>\n </div>\n </prizm-loader>\n</div>\n","import { inject, Injectable } from '@angular/core';\nimport { ReplaySubject, take } from 'rxjs';\nimport { EInputsAction, EInputsState, GqlFields, ITpUserSettings } from '../../../../types';\nimport { FiltersService, FiltersStateService } from '../../../../services';\nimport { SETTINGS_TYPE, USER_SETTINGS_LOADER } from '../../../../consts';\n\n@Injectable()\nexport class FilterListService {\n public readonly apply$ = new ReplaySubject<GqlFields>();\n\n public modulePath!: string;\n\n private _pinnedFilterSetting: ITpUserSettings | undefined;\n\n private readonly settingsStore = inject(USER_SETTINGS_LOADER);\n\n constructor(\n private readonly _filtersService: FiltersService<any>,\n private readonly _filterStateService: FiltersStateService<any>\n ) {}\n\n public applyFilter(): void {\n this.apply$.next(this._filtersService.gqlFilter);\n this._filterStateService.setState({\n state: EInputsState.FILTER_LIST,\n action: EInputsAction.APPLY_FILTERS,\n });\n }\n\n public applySavedFilter(): void {\n const savedFilter = this._filterStateService.getSelectedSavedFilter();\n if (savedFilter) {\n this._filtersService.setUserSettingsFilterValues(savedFilter.settings?.filter ?? []);\n this._filterStateService.setSelectedSavedFilter(null);\n this._filterStateService.setState({\n state: EInputsState.FILTER_LIST,\n action: EInputsAction.APPLY_SAVED_FILTER,\n });\n this.apply$.next(this._filtersService.gqlFilter);\n } else {\n console.error('Выбранный фильтр не найден');\n }\n }\n\n public saveFilter(): void {\n if (!this.modulePath) {\n console.error('modulePath не инициализирован');\n }\n\n const saved = this._filterStateService.getSelectedSavedFilter();\n this.settingsStore.upsertEnded$.pipe(take(1)).subscribe(() => {\n this._filterStateService.setSelectedSavedFilter(null);\n this._filterStateService.setState({\n state: EInputsState.SAVED_LIST,\n action: EInputsAction.AFTER_SAVE_FILTER,\n });\n });\n\n this.settingsStore.upsertUserSettingsByUserId({\n settings: {\n id: saved?.id ?? undefined,\n name: this._filterStateService.name,\n settings: {\n favorite: saved?.settings?.favorite ?? false,\n filter: this._filtersService.userSettingsFilter,\n },\n module_name: this.modulePath,\n settings_type: SETTINGS_TYPE.FILTER,\n },\n });\n }\n\n public clear(): void {\n this._filtersService.clear();\n }\n\n public savePinnedFilters(): void {\n this.settingsStore\n .upsertReturningOne$(SETTINGS_TYPE.REGISTER_PINNED_INPUTS)\n .subscribe((setting) => {\n this._pinnedFilterSetting = setting ?? undefined;\n });\n\n this.settingsStore.upsertUserSettingsByUserId({\n settings: {\n id: this._pinnedFilterSetting?.id,\n settings: {\n filter: this._filtersService.userSettingsFilter,\n pinned: this._filterStateService.isPin,\n },\n module_name: this.modulePath,\n settings_type: SETTINGS_TYPE.REGISTER_PINNED_INPUTS,\n },\n hidden: true,\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n EventEmitter,\n inject,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { map } from 'rxjs';\nimport { FilterListService } from '../filter-list.service';\nimport { Router } from '@angular/router';\nimport { getLastSegmentOfPathName } from '../../../../../utils/get-url-segment';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { EInputsAction, EInputsState, GqlFields } from '../../../../../types';\nimport { FiltersStateService } from '../../../../../services';\n\n@Component({\n selector: 'sproc-filter-list-header',\n templateUrl: './filter-list-header.component.html',\n styleUrls: ['./filter-list-header.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [FilterListService],\n})\nexport class FilterListHeaderComponent implements OnInit {\n @Input() total: number | null = 0;\n @Input() showTotal = true;\n @Input() showPin = true;\n @Input() showCloseButton = true;\n @Input() acceptButtonDisabled = false;\n @Input() applyButtonDisabled = false;\n @Input() filterListHeaderTitle = 'Фильтр';\n\n @Output() pinnedChange = new EventEmitter<boolean>();\n @Output() applyFilter = new EventEmitter<GqlFields>();\n @Output() resetFilter = new EventEmitter<void>();\n\n private readonly _dr = inject(DestroyRef);\n\n public readonly count$ = this._filterStateService.count$;\n public readonly filterState$ = this._filterStateService.state$.pipe(\n map((filterState) => filterState.state)\n );\n\n public readonly FilterState = EInputsState;\n\n constructor(\n private readonly _router: Router,\n private readonly _filterStateService: FiltersStateService<any>,\n private readonly _filterListService: FilterListService\n ) {}\n\n public ngOnInit(): void {\n this._filterListService.modulePath = getLastSegmentOfPathName(this._router.url);\n\n this._filterListService.apply$.pipe(takeUntilDestroyed(this._dr)).subscribe((gql) => {\n this.applyFilter.emit(gql);\n this._filterListService.savePinnedFilters();\n });\n }\n\n public onTogglePin(): void {\n this._filterStateService.togglePin();\n this.pinnedChange.emit(this._filterStateService.isPin);\n this._filterListService.savePinnedFilters();\n }\n\n public onSavedList(): void {\n this._filterStateService.setState({\n state: EInputsState.SAVED_LIST,\n action: EInputsAction.OPEN,\n });\n }\n\n public onSave(): void {\n this._filterStateService.setState({\n state: EInputsState.ON_SAVE_FILTER,\n action: EInputsAction.AFTER_SAVE_FILTER,\n });\n }\n\n public onApplyFilter(): void {\n this._filterListService.applyFilter();\n }\n\n public onReset(): void {\n this._filterListService.clear();\n }\n\n public onClose(): void {\n this._filterStateService.setPin(false);\n this._filterStateService.setState({ state: EInputsState.HIDDEN, action: EInputsAction.CANCEL });\n }\n\n public onApplySavedFilter(): void {\n this._filterListService.applySavedFilter();\n }\n\n public onSaveFilter(): void {\n this._filterListService.saveFilter();\n }\n\n public onBack(): void {\n this._filterStateService.setState({\n state: EInputsState.FILTER_LIST,\n action: EInputsAction.OPEN,\n });\n }\n\n protected get isPin(): boolean {\n return this._filterStateService.isPin;\n }\n}\n","<ng-container [ngSwitch]=\"filterState$ | async\">\n <h4 *ngSwitchCase=\"FilterState.FILTER_LIST\">{{ filterListHeaderTitle }}</h4>\n <h4 *ngSwitchCase=\"FilterState.SAVED_LIST\">Сохраненные фильтры</h4>\n <h4 *ngSwitchCase=\"FilterState.ON_EDIT_FILTER\">Редактирование фильтра</h4>\n <h4 *ngSwitchCase=\"FilterState.ON_SAVE_FILTER\">Сохранить фильтр</h4>\n</ng-container>\n\n<div class=\"sproc-filter-list-header-actions-button\">\n <ng-container [ngSwitch]=\"filterState$ | async\">\n <ng-container\n *ngSwitchCase=\"FilterState.FILTER_LIST\"\n [ngTemplateOutlet]=\"filterListTemplate\"\n ></ng-container>\n <ng-container\n *ngSwitchCase=\"FilterState.SAVED_LIST\"\n [ngTemplateOutlet]=\"savedListTemplate\"\n ></ng-container>\n <ng-container\n *ngSwitchCase=\"FilterState.ON_EDIT_FILTER\"\n [ngTemplateOutlet]=\"saveFilterTemplate\"\n ></ng-container>\n <ng-container\n *ngSwitchCase=\"FilterState.ON_SAVE_FILTER\"\n [ngTemplateOutlet]=\"saveFilterTemplate\"\n ></ng-container>\n <ng-container *ngSwitchDefault [ngTemplateOutlet]=\"backButtonTemplate\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #filterListTemplate>\n <ng-container *ngIf=\"showPin\">\n <button\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"secondary\"\n prizmButton\n class=\"icon-button\"\n (click)=\"onTogglePin()\"\n >\n <img\n [src]=\"\n 'assets/ngx-register-base/icons/' + (isPin ? 'thumbtack-directly.svg' : 'thumbtack.svg')\n \"\n />\n </button>\n\n <sproc-divider layout=\"vertical\"></sproc-divider>\n </ng-container>\n\n <button\n icon=\"social-star\"\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"secondary\"\n prizmButton\n class=\"icon-button\"\n (click)=\"onSavedList()\"\n ></button>\n\n <button\n icon=\"tools-content-save\"\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"secondary\"\n prizmButton\n class=\"icon-button\"\n (click)=\"onSave()\"\n ></button>\n\n <sproc-divider layout=\"vertical\"></sproc-divider>\n\n <button\n icon=\"selection-check-simple\"\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"primary\"\n prizmButton\n class=\"icon-button\"\n [disabled]=\"applyButtonDisabled\"\n (click)=\"onApplyFilter()\"\n ></button>\n\n <button\n icon=\"tools-eraser\"\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"secondary\"\n prizmButton\n class=\"icon-button\"\n (click)=\"onReset()\"\n ></button>\n\n <button\n *ngIf=\"showCloseButton\"\n icon=\"cancel-close\"\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"danger\"\n prizmButton\n class=\"icon-button\"\n (click)=\"onClose()\"\n ></button>\n</ng-template>\n\n<ng-template #savedListTemplate>\n <button\n icon=\"selection-check-simple\"\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"primary\"\n prizmButton\n class=\"icon-button\"\n [disabled]=\"acceptButtonDisabled\"\n (click)=\"onApplySavedFilter()\"\n ></button>\n\n <ng-container *ngTemplateOutlet=\"backButtonTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #saveFilterTemplate>\n <button\n icon=\"tools-content-save\"\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"secondary\"\n prizmButton\n class=\"icon-button\"\n [disabled]=\"acceptButtonDisabled\"\n (click)=\"onSaveFilter()\"\n ></button>\n\n <ng-container *ngTemplateOutlet=\"backButtonTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #backButtonTemplate>\n <button\n icon=\"arrows-corner-up-left\"\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"secondary\"\n prizmButton\n class=\"icon-button\"\n prizmHint=\"Главное меню фильтров\"\n prizmHintTheme=\"light\"\n (click)=\"onBack()\"\n ></button>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n EventEmitter,\n inject,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { map } from 'rxjs';\nimport { FilterListService } from '../filter-list.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { EInputsState, GqlFields } from '../../../../../types';\nimport { FiltersStateService } from '../../../../../services';\nimport { getLastSegmentOfPathName } from '../../../../../utils/get-url-segment';\n\n@Component({\n selector: 'sproc-filter-list-footer',\n templateUrl: './filter-list-footer.component.html',\n styleUrls: ['./filter-list-footer.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [FilterListService],\n})\nexport class FilterListFooterComponent implements OnInit {\n @Input() acceptButtonDisabled = false;\n @Input() applyButtonDisabled = false;\n @Input() footerApplyButtonLabel = 'Применить';\n @Output() apply: EventEmitter<GqlFields> = new EventEmitter<GqlFields>();\n\n private readonly _dr = inject(DestroyRef);\n\n public readonly filterState$ = this._filterStateService.state$.pipe(\n map((filterState) => filterState.state)\n );\n\n public readonly FilterState = EInputsState;\n\n constructor(\n private readonly _router: Router,\n private readonly _filterStateService: FiltersStateService<any>,\n private readonly _filterListService: FilterListService\n ) {}\n\n public ngOnInit(): void {\n this._filterListService.modulePath = getLastSegmentOfPathName(this._router.url);\n\n this._filterListService.apply$.pipe(takeUntilDestroyed(this._dr)).subscribe((gql) => {\n this.apply.emit(gql);\n this._filterListService.savePinnedFilters();\n });\n }\n\n public onApplyFilter(): void {\n this._filterListService.applyFilter();\n }\n\n public onApplySavedFilter(): void {\n this._filterListService.applySavedFilter();\n }\n\n public onSaveFilter(): void {\n this._filterListService.saveFilter();\n }\n}\n","<div class=\"sproc-filter-list-footer-container\">\n <ng-container [ngSwitch]=\"filterState$ | async\">\n <ng-container *ngSwitchCase=\"FilterState.FILTER_LIST\">\n <button\n class=\"filter-list__button\"\n prizmButton\n size=\"s\"\n [disabled]=\"applyButtonDisabled\"\n (click)=\"onApplyFilter()\"\n >\n {{ footerApplyButtonLabel }}\n </button>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"FilterState.SAVED_LIST\">\n <button\n class=\"filter-list__button\"\n prizmButton\n size=\"s\"\n [disabled]=\"acceptButtonDisabled\"\n (click)=\"onApplySavedFilter()\"\n >\n Применить\n </button>\n </ng-container>\n\n <ng-container\n *ngSwitchCase=\"FilterState.ON_EDIT_FILTER\"\n [ngTemplateOutlet]=\"onEditFilter\"\n ></ng-container>\n\n <ng-container\n *ngSwitchCase=\"FilterState.ON_SAVE_FILTER\"\n [ngTemplateOutlet]=\"onEditFilter\"\n ></ng-container>\n\n <ng-template #onEditFilter>\n <button\n class=\"filter-list__button\"\n prizmButton\n size=\"s\"\n [disabled]=\"acceptButtonDisabled\"\n (click)=\"onSaveFilter()\"\n >\n Сохранить\n </button>\n </ng-template>\n </ng-container>\n</div>\n","import { Component, ElementRef, HostBinding, Input, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'sproc-sliding-panel',\n templateUrl: './sliding-panel.component.html',\n styleUrls: ['./sliding-panel.component.less'],\n})\nexport class SlidingPanelComponent {\n @HostBinding('style.--header-offset-height')\n get headerOffsetHeightPx(): string {\n const height: number = this._headerContainer?.nativeElement.children[0]?.offsetHeight ?? 0;\n\n return `${height}px`;\n }\n\n @HostBinding('style.--footer-offset-height')\n get footerOffsetHeightPx(): string {\n const height: number = this._footerContainer?.nativeElement.children[0]?.offsetHeight ?? 0;\n\n return `${height}px`;\n }\n\n @HostBinding('style.--sub-offset-height')\n get subOffsetHeightPx(): string {\n return `${this.subOffsetHeight}px`;\n }\n\n /** Доп. отступ для вычисления высоты панели (в пикселях) */\n @Input() subOffsetHeight = 0;\n\n /** Состояние видимости панели */\n @Input() isOpen: boolean | null | undefined = false;\n\n @ViewChild('headerContainer') private readonly _headerContainer: ElementRef | undefined;\n @ViewChild('footerContainer') private readonly _footerContainer: ElementRef | undefined;\n}\n","<div class=\"sproc-sliding-panel\" [attr.show]=\"!!isOpen\">\n <div #headerContainer>\n <ng-content select=\"[header]\"></ng-content>\n </div>\n\n <prizm-scrollbar class=\"scrolled-content\">\n <ng-content />\n </prizm-scrollbar>\n\n <div #footerContainer>\n <ng-content select=\"[footer]\"></ng-content>\n </div>\n</div>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { combineLatest, debounceTime, map, Subject, takeUntil, of } from 'rxjs';\nimport {\n EInputsAction,\n EInputsState,\n GqlFields,\n IInputsState,\n ITpUserSettings,\n ITpUserSettingsSettingsFilter,\n} from '../../types';\nimport { FiltersService, FiltersStateService } from '../../services';\nimport { RegisterBaseStore } from '../../core';\nimport { MENU_STATE_SERVICE } from './register-table-filter.consts';\n\n@Component({\n selector: 'sproc-register-table-filter',\n templateUrl: './register-table-filter.component.html',\n styleUrls: ['./register-table-filter.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RegisterTableFilterComponent<Type extends Record<string, any>>\n implements OnInit, AfterViewInit, OnDestroy\n{\n /** Высота всего компонента фильтров */\n @Input() height: string | undefined;\n @Input() showTotal = true;\n @Input() showPin = true;\n @Input() showCloseButton = true;\n @Input() acceptButtonDisabled = false;\n @Input() applyButtonDisabled = false;\n /** Доп. отступ для вычисления высоты панели (в пикселях) */\n @Input() subOffsetHeight = 0;\n @Input() filterListHeaderTitle = 'Фильтр';\n @Input() footerApplyButtonLabel = 'Применить';\n\n @Output() clickApplyButton = new EventEmitter<void>();\n\n private readonly _menuState = inject(MENU_STATE_SERVICE);\n\n private readonly _unsubscribe$: Subject<void> = new Subject<void>();\n\n public readonly FilterState = EInputsState;\n public readonly filterState$ = this._filterStateService.state$.pipe(\n map((filterState) => filterState.state)\n );\n public readonly isOpen$ = this.filterState$.pipe(map((state) => state !== EInputsState.HIDDEN));\n public readonly total$ = this._store.total$ ?? of(0);\n\n private _currentFilters: ITpUserSettingsSettingsFilter[] = [];\n private _previousState: IInputsState = {\n state: EInputsState.HIDDEN,\n action: EInputsAction.CANCEL,\n };\n\n constructor(\n private readonly _store: RegisterBaseStore<Type>,\n private readonly _filterStateService: FiltersStateService<Type>,\n private readonly _filterListService: FiltersService<Type>\n ) {}\n\n public ngOnInit(): void {\n combineLatest([this._filterStateService.state$, this._filterStateService.selectedSavedFilter])\n .pipe(takeUntil(this._unsubscribe$))\n .subscribe({\n next: ([state, selected]) => {\n if (state.state === EInputsState.SAVED_LIST) {\n this.acceptButtonDisabled = !selected;\n return;\n }\n\n if (state.state === EInputsState.ON_EDIT_FILTER) {\n this.acceptButtonDisabled = false;\n return;\n }\n\n if (state.state === EInputsState.ON_SAVE_FILTER) {\n this.acceptButtonDisabled = false;\n return;\n }\n this.acceptButtonDisabled = true;\n },\n });\n\n if (this._filterStateService.isPin) {\n this._filterStateService.setState({\n state: EInputsState.FILTER_LIST,\n action: EInputsAction.OPEN,\n });\n }\n }\n\n protected closeMenu(isPin: boolean): void {\n if (isPin) {\n this._menuState.setOpen(false);\n }\n }\n\n public onApplyFilter(gqlFilter: GqlFields, savePage?: boolean): void {\n if (!savePage) {\n this._filterStateService.setOffset(0);\n this._filterStateService.setPage(1);\n }\n this._filterStateService.setGqlValues(gqlFilter);\n this.clickApplyButton.next();\n }\n\n public ngAfterViewInit(): void {\n this._subscribeOnState();\n }\n\n private _subscribeOnState(): void {\n combineLatest([this._filterStateService.state$, this._filterStateService.selectedSavedFilter])\n .pipe(debounceTime(500), takeUntil(this._unsubscribe$))\n .subscribe(([state, settings]) => {\n this._setFilters(state, settings);\n });\n }\n\n private _setFilters(state: IInputsState, settings: ITpUserSettings | null): void {\n const { state: currentState, action: currentAction } = state;\n const { state: previousState } = this._previousState;\n\n switch (currentState) {\n case EInputsState.ON_EDIT_FILTER:\n if (previousState !== EInputsState.ON_EDIT_FILTER) {\n this._filterListService.setUserSettingsFilterValues(settings?.settings?.filter ?? []);\n }\n break;\n case EInputsState.SAVED_LIST:\n if (\n previousState !== EInputsState.SAVED_LIST &&\n previousState !== EInputsState.ON_EDIT_FILTER &&\n previousState !== EInputsState.ON_SAVE_FILTER\n ) {\n this._currentFilters = this._filterListService.userSettingsFilter;\n }\n break;\n case EInputsState.FILTER_LIST:\n if (previousState !== EInputsState.FILTER_LIST) {\n if (currentAction === EInputsAction.CANCEL) {\n this._filterListService.setUserSettingsFilterValues(this._currentFilters);\n } else if (currentAction === EInputsAction.APPLY_SAVED_FILTER) {\n this._currentFilters = settings?.settings?.filter ?? [];\n }\n }\n break;\n default:\n console.warn('Состояние фильтра', currentState);\n break;\n }\n }\n\n public ngOnDestroy(): void {\n this._unsubscribe$.next();\n this._unsubscribe$.complete();\n }\n}\n","<sproc-sliding-panel [isOpen]=\"isOpen$ | async\" [subOffsetHeight]=\"subOffsetHeight\">\n <sproc-filter-list-header\n header\n [showTotal]=\"showTotal\"\n [showPin]=\"showPin\"\n [showCloseButton]=\"showCloseButton\"\n [total]=\"total$ | async\"\n [acceptButtonDisabled]=\"acceptButtonDisabled\"\n [applyButtonDisabled]=\"applyButtonDisabled\"\n [filterListHeaderTitle]=\"filterListHeaderTitle\"\n (pinnedChange)=\"closeMenu($event)\"\n (applyFilter)=\"onApplyFilter($event)\"\n ></sproc-filter-list-header>\n\n <ng-container [ngSwitch]=\"filterState$ | async\">\n <ng-container *ngSwitchCase=\"FilterState.FILTER_LIST\" [ngTemplateOutlet]=\"filtersTemplate\">\n </ng-container>\n\n <div *ngSwitchCase=\"FilterState.SAVED_LIST\">\n <sproc-filter-list-saved></sproc-filter-list-saved>\n </div>\n\n <div *ngSwitchCase=\"FilterState.ON_EDIT_FILTER\">\n <sproc-filter-edit></sproc-filter-edit>\n\n <sproc-divider></sproc-divider>\n\n <ng-container [ngTemplateOutlet]=\"filtersTemplate\"></ng-container>\n </div>\n\n <div *ngSwitchCase=\"FilterState.ON_SAVE_FILTER\">\n <sproc-filter-edit></sproc-filter-edit>\n </div>\n\n <ng-template #filtersTemplate>\n @defer (on viewport) {\n <ng-content />\n } @loading (minimum 1s) {\n <tui-loader size=\"m\" class=\"loader\"></tui-loader>\n } @placeholder {\n <span>...</span>\n }\n </ng-template>\n </ng-container>\n\n <sproc-filter-list-footer\n footer\n [acceptButtonDisabled]=\"acceptButtonDisabled\"\n [applyButtonDisabled]=\"applyButtonDisabled\"\n (apply)=\"onApplyFilter($event)\"\n [footerApplyButtonLabel]=\"footerApplyButtonLabel\"\n ></sproc-filter-list-footer>\n</sproc-sliding-panel>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n inject,\n Injector,\n input,\n runInInjectionContext,\n signal,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { combineLatest, of, switchMap } from 'rxjs';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { IInputControl } from '../../../../../types';\n\n@Component({\n selector: 'sproc-filters-section',\n templateUrl: './filters-section.component.html',\n styleUrls: ['./filters-section.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FiltersSectionComponent {\n public controls = contentChildren<NgControl>(NgControl, { descendants: true });\n\n public label = input<string>('');\n\n protected isOpen = signal(true);\n protected haveAppliedFilters = computed(() => this._sameControlApplied());\n\n private _sameControlApplied = computed(() => this._checkSomeControlApplied());\n\n private _controlsChanges = toSignal(\n toObservable(this.controls).pipe(\n switchMap((controls) =>\n combineLatest(\n controls.map(({ control }) =>\n runInInjectionContext(this._injector, () => {\n const applied = (control as IInputControl)?.applied;\n\n return applied ? toObservable(applied) : of(false);\n })\n )\n )\n )\n ),\n { initialValue: [] }\n );\n\n private readonly _injector = inject(Injector);\n\n protected toggleHeader(): void {\n this.isOpen.update((isOpen) => !isOpen);\n }\n\n private _checkSomeControlApplied(): boolean {\n return this._controlsChanges().some((controlValue) => {\n if (!controlValue) {\n return false;\n }\n\n if (Array.isArray(controlValue)) {\n return controlValue.some((value) => !!value);\n }\n\n return true;\n });\n }\n}\n","<div class=\"panel-head\" (click)=\"toggleHeader()\">\n <div class=\"title\">\n <span class=\"title__font\">{{ label() }}</span>\n @if (haveAppliedFilters()) {\n <div class=\"title__wrapper--relative\">\n <div class=\"title-wrapper--absolute indicator__wrapper\">\n <div class=\"indicator__icon indicator--danger\"></div>\n </div>\n </div>\n }\n </div>\n\n <prizm-icons [name]=\"isOpen() ? 'chevrons-up' : 'chevrons-down'\" size=\"16\"></prizm-icons>\n</div>\n\n<div class=\"filters-block\" [attr.show]=\"isOpen()\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport {\n PrizmButtonComponent,\n PrizmCheckboxComponent,\n PrizmColumnSettingsComponent,\n PrizmDateTimeRange,\n PrizmDay,\n PrizmDayRange,\n PrizmDialogComponent,\n PrizmDropdownHostModule,\n PrizmHintDirective,\n PrizmIndicatorComponent,\n PrizmInputCommonModule,\n PrizmInputLayoutDateModule,\n PrizmInputLayoutDateRangeModule,\n PrizmInputLayoutDateTimeModule,\n PrizmInputIconButtonComponent,\n PrizmInputLayoutDateComponent,\n PrizmInputLayoutDateRangeComponent,\n PrizmInputLayoutDateTimeRangeComponent,\n PrizmInputLayoutDateTimeRangeModule,\n PrizmInputLayoutMonthRangeComponent,\n PrizmInputLayoutTimeModule,\n PrizmInputLayoutMonthModule,\n PrizmInputMultiSelectComponent,\n PrizmInputMultiSelectModule,\n PrizmInputNumberModule,\n PrizmInputSelectModule,\n PrizmInputTextModule,\n PrizmLoaderComponent,\n PrizmMonth,\n PrizmMonthRange,\n PrizmPaginatorComponent,\n PrizmPanelComponent,\n PrizmProgressModule,\n PrizmScrollbarModule,\n PrizmSelectInputComponent,\n PrizmSidebarComponent,\n PrizmSplitterModule,\n PrizmStickyModule,\n PrizmSwitcherComponent,\n PrizmTableModule,\n PrizmTabsModule,\n PrizmToastModule,\n PrizmToggleComponent,\n PrizmTooltipModule,\n PrizmTreeModule,\n PrizmCardComponent,\n PrizmDropdownControllerDirective,\n PrizmRadioButtonComponent,\n PrizmBreadcrumbDirective,\n PrizmBreadcrumbsComponent,\n PrizmStepperModule,\n} from '@prizm-ui/components';\nimport { PrizmFlagIconsComponent } from '@prizm-ui/flag-icons';\nimport { PrizmDestroyService } from '@prizm-ui/helpers';\nimport { PrizmIconsComponent } from '@prizm-ui/icons';\nimport { TuiDay } from '@taiga-ui/cdk';\nimport { SmaPrizmDateTime } from '../directives/date/date-time.types';\n\nexport type PrizmDateTypes =\n | TuiDay\n | PrizmDay\n | PrizmDayRange\n | SmaPrizmDateTime\n | PrizmDateTimeRange\n | PrizmMonth\n | PrizmMonthRange;\n\n@NgModule({\n imports: [\n FormsModule,\n ReactiveFormsModule,\n PrizmTableModule,\n PrizmScrollbarModule,\n PrizmCheckboxComponent,\n PrizmStickyModule,\n PrizmButtonComponent,\n PrizmInputTextModule,\n PrizmIconsComponent,\n PrizmPaginatorComponent,\n PrizmInputSelectModule,\n PrizmPanelComponent,\n PrizmToggleComponent,\n PrizmTabsModule,\n PrizmDropdownHostModule,\n PrizmLoaderComponent,\n PrizmSelectInputComponent,\n PrizmInputMultiSelectModule,\n PrizmInputLayoutDateModule,\n PrizmFlagIconsComponent,\n PrizmInputLayoutDateRangeModule,\n PrizmDialogComponent,\n PrizmInputLayoutDateComponent,\n PrizmColumnSettingsComponent,\n PrizmSwitcherComponent,\n PrizmTooltipModule,\n PrizmInputMultiSelectComponent,\n PrizmInputLayoutDateRangeComponent,\n PrizmSidebarComponent,\n PrizmToastModule,\n PrizmInputLayoutDateTimeModule,\n PrizmInputCommonModule,\n PrizmInputIconButtonComponent,\n PrizmInputLayoutMonthModule,\n PrizmHintDirective,\n PrizmTreeModule,\n PrizmInputNumberModule,\n PrizmInputLayoutDateTimeRangeModule,\n PrizmProgressModule,\n PrizmInputLayoutMonthRangeComponent,\n PrizmInputLayoutDateTimeRangeComponent,\n PrizmCardComponent,\n PrizmDropdownControllerDirective,\n PrizmRadioButtonComponent,\n PrizmBreadcrumbDirective,\n PrizmBreadcrumbsComponent,\n PrizmStepperModule,\n PrizmIndicatorComponent,\n ],\n exports: [\n FormsModule,\n ReactiveFormsModule,\n PrizmTableModule,\n PrizmScrollbarModule,\n PrizmCheckboxComponent,\n PrizmStickyModule,\n PrizmButtonComponent,\n PrizmInputTextModule,\n PrizmIconsComponent,\n PrizmPaginatorComponent,\n PrizmInputSelectModule,\n PrizmPanelComponent,\n PrizmToggleComponent,\n PrizmTabsModule,\n PrizmDropdownHostModule,\n PrizmLoaderComponent,\n PrizmSelectInputComponent,\n PrizmInputMultiSelectModule,\n PrizmInputLayoutDateModule,\n PrizmFlagIconsComponent,\n PrizmInputLayoutDateRangeModule,\n PrizmDialogComponent,\n PrizmInputLayoutDateComponent,\n PrizmColumnSettingsComponent,\n PrizmSwitcherComponent,\n PrizmTooltipModule,\n PrizmInputMultiSelectComponent,\n PrizmInputLayoutDateRangeComponent,\n PrizmSidebarComponent,\n PrizmToastModule,\n PrizmInputLayoutDateTimeModule,\n PrizmInputCommonModule,\n PrizmInputIconButtonComponent,\n PrizmInputLayoutMonthModule,\n PrizmHintDirective,\n PrizmTreeModule,\n PrizmInputNumberModule,\n PrizmInputLayoutDateTimeRangeModule,\n PrizmProgressModule,\n PrizmInputLayoutTimeModule,\n PrizmInputLayoutMonthRangeComponent,\n PrizmInputLayoutDateTimeRangeComponent,\n PrizmSplitterModule,\n PrizmCardComponent,\n PrizmDropdownControllerDirective,\n PrizmRadioButtonComponent,\n PrizmBreadcrumbDirective,\n PrizmBreadcrumbsComponent,\n PrizmStepperModule,\n PrizmIndicatorComponent,\n ],\n providers: [PrizmDestroyService],\n})\nexport class PrizmSharedModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FilterListFooterComponent } from './filter-list/filter-list-footer/filter-list-footer.component';\nimport { FilterListHeaderComponent } from './filter-list/filter-list-header/filter-list-header.component';\nimport { FilterEditComponent } from './filter-list/filter-edit/filter-edit.component';\nimport { FilterListSavedComponent } from './filter-list/filter-list-saved/filter-list-saved.component';\nimport { FiltersSectionComponent } from './filter-list/filters-section/filters-section.component';\nimport { DividerComponent } from '../../divider/divider.component';\nimport { PrizmSharedModule } from '../../../utils/prizm.shared.module';\n\n@NgModule({\n declarations: [\n FilterListHeaderComponent,\n FilterEditComponent,\n FilterListSavedComponent,\n FiltersSectionComponent,\n FilterListFooterComponent,\n ],\n imports: [CommonModule, FormsModule, ReactiveFormsModule, PrizmSharedModule, DividerComponent],\n exports: [\n FilterEditComponent,\n FilterListSavedComponent,\n FiltersSectionComponent,\n FilterListHeaderComponent,\n FilterListFooterComponent,\n ],\n})\nexport class FilterListModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SlidingPanelComponent } from './sliding-panel.component';\nimport { PrizmScrollbarComponent } from '@prizm-ui/components';\n\n@NgModule({\n declarations: [SlidingPanelComponent],\n imports: [CommonModule, PrizmScrollbarComponent],\n exports: [SlidingPanelComponent],\n})\nexport class SlidingPanelModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { RegisterTableFilterComponent } from './register-table-filter.component';\nimport { FilterListModule } from './components/filter-list.module';\nimport { SlidingPanelModule } from '../sliding-panel/sliding-panel.module';\nimport { DividerComponent } from '../divider/divider.component';\nimport { TuiLoader } from '@taiga-ui/core';\n\n@NgModule({\n declarations: [RegisterTableFilterComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FilterListModule,\n DividerComponent,\n SlidingPanelModule,\n TuiLoader,\n ],\n exports: [RegisterTableFilterComponent],\n})\nexport class RegisterTableFilterModule {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n input,\n viewChild,\n} from '@angular/core';\nimport { type TuiBooleanHandler } from '@taiga-ui/cdk';\nimport { TuiSizeL, TuiSizeM } from '@taiga-ui/core';\nimport { ParamBase } from '../../../core/param/param-base';\nimport { TuiInputYearComponent } from '@taiga-ui/legacy';\n\n@Component({\n selector: 'sproc-param-calendar-year',\n templateUrl: './param-calendar-year.component.html',\n styleUrls: ['./param-calendar-year.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamCalendarYearComponent extends ParamBase<number, string> {\n private readonly _cdr = inject(ChangeDetectorRef);\n public yearInputComponent = viewChild<TuiInputYearComponent>('yearInput');\n\n override buildShowedValue = input((value: number): string => value?.toString() ?? '-');\n protected readonly disabledHandler: TuiBooleanHandler<number> = (value) =>\n this.disabledYears().includes(value);\n\n public disabledYears = input<number[]>([]);\n public min = input<number | null>(null);\n public max = input<number | null>(null);\n public size = input<TuiSizeL | TuiSizeM>('m');\n protected isYearPickerOpen = false;\n\n protected click(): void {\n this.isYearPickerOpen = !this.isYearPickerOpen;\n\n const yearComponent = this.yearInputComponent();\n if (yearComponent) {\n const inputEl = yearComponent.nativeFocusableElement!;\n const onDocumentClick = (event: MouseEvent) => {\n if (!inputEl.contains(event.target as Node) && this.isYearPickerOpen) {\n (yearComponent as any).onOpenChange(false);\n yearComponent.checkControlUpdate();\n document.removeEventListener('click', onDocumentClick);\n this.isYearPickerOpen = false;\n this._cdr.markForCheck();\n }\n };\n document.addEventListener('click', onDocumentClick);\n }\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n </div>\n\n <tui-textfield\n [tuiTextfieldSize]=\"size()\"\n [tuiTextfieldLabelOutside]=\"true\"\n [tuiTextfieldCleaner]=\"true\"\n (click)=\"click()\"\n >\n <tui-input-year\n #yearInput\n [formControl]=\"control\"\n [max]=\"max()\"\n [min]=\"min()\"\n [disabledItemHandler]=\"disabledHandler\"\n >\n Выберите год\n </tui-input-year>\n </tui-textfield>\n </div>\n </ng-template>\n</ng-container>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { ParamBase } from '../../../core/param/param-base';\n\n@Component({\n selector: 'sproc-param-custom',\n templateUrl: './param-custom.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamCustomComponent extends ParamBase<any, any> {}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { TuiIcon } from '@taiga-ui/core';\n\n@Component({\n selector: 'sproc-param-invalid-icon',\n standalone: true,\n imports: [TuiIcon],\n templateUrl: './param-invalid-icon.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamInvalidIconComponent {}\n","<tui-icon\n class=\"invalid-icon\"\n icon=\"assets/ngx-register-base/icons/circle-exclamation-fill.svg\"\n></tui-icon>\n","import { ChangeDetectionStrategy, Component, Input, input } from '@angular/core';\nimport { TuiAppearance, TuiTextfield } from '@taiga-ui/core';\nimport { TuiInputDate } from '@taiga-ui/kit';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet } from '@angular/common';\nimport { TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { TuiDay } from '@taiga-ui/cdk';\nimport { ParamInvalidIconComponent } from '../sub-components/param-invalid-icon/param-invalid-icon.component';\nimport { ParamDateBase } from '../../../core/param/param-date-base';\nimport { FormatterSavedValueType, ParserSavedValueType } from '../../../types/params.types';\nimport { EDatePattern } from '../../../directives/date/date-time.types';\n\nexport type InputDateSaveValue = string | null;\n\n@Component({\n selector: 'sproc-param-date',\n templateUrl: './param-date.component.html',\n styleUrls: ['./param-date.component.less'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n TuiTextfield,\n TuiInputDate,\n ReactiveFormsModule,\n NgIf,\n NgTemplateOutlet,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n TuiAppearance,\n TuiTextfieldControllerModule,\n ParamInvalidIconComponent,\n ],\n})\nexport class ParamDateComponent extends ParamDateBase<TuiDay | null, InputDateSaveValue> {\n override placeholder = input('Выберите дату');\n @Input() min: TuiDay | null = null;\n @Input() max: TuiDay | null = null;\n @Input() override set formatSavedValue(\n formatter: FormatterSavedValueType<TuiDay | null, InputDateSaveValue> | undefined\n ) {\n this.formatterSavedValue = formatter ?? this._defaultFormatterSaveValue;\n }\n @Input() override set parseSavedValue(\n parser: ParserSavedValueType<InputDateSaveValue, TuiDay | null> | undefined\n ) {\n this.parserSavedValue = parser ?? this._defaultParserSaveValue;\n }\n override buildShowedValue = input((value: TuiDay | null): string =>\n value ? this._defaultDateConvert(value) : '-'\n );\n\n protected override formatterSavedValue = this._defaultFormatterSaveValue;\n protected override parserSavedValue = this._defaultParserSaveValue;\n\n private _defaultDateConvert(value: TuiDay): string {\n return this._dts.parseDate(value.toString(EDatePattern.TUI_YMD, '-'), EDatePattern.DATE);\n }\n\n private _defaultFormatterSaveValue(value: TuiDay | null): InputDateSaveValue {\n if (!value) {\n return null;\n }\n\n const iso = this._dts.toISOString(value.toLocalNativeDate());\n\n return this._dts.parseDate(iso, EDatePattern.YEAR_MONTH_DAY);\n }\n\n private _defaultParserSaveValue(value: InputDateSaveValue): TuiDay | null {\n if (!value) {\n return null;\n }\n\n return TuiDay.fromLocalNativeDate(this._dts.isoToLocalDate(value));\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n </div>\n\n <tui-textfield\n tuiAppearance=\"sproc-input-appearance\"\n tuiTextfieldSize=\"m\"\n [tuiTextfieldLabelOutside]=\"true\"\n [style.--t-icon-end]=\"'url(/assets/ngx-register-base/icons/calendar-blank.svg)'\"\n [style.--t-icon-size]=\"'16px'\"\n >\n <input\n tuiInputDate\n [min]=\"min\"\n [max]=\"max\"\n [placeholder]=\"placeholder()\"\n [formControl]=\"control\"\n />\n <tui-calendar *tuiTextfieldDropdown />\n\n <div class=\"textfield-icons-container\">\n @if (isInvalidAndNotPristine) {\n <sproc-param-invalid-icon></sproc-param-invalid-icon>\n }\n </div>\n </tui-textfield>\n </div>\n </ng-template>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, input, Input } from '@angular/core';\nimport { PrizmDay, PrizmDayLike, PrizmDayRange } from '@prizm-ui/components';\nimport { ParamDateBase } from '../../../core/param/param-date-base';\nimport { FormatterSavedValueType, ParserSavedValueType } from '../../../types/params.types';\nimport { EDatePattern } from '../../../directives/date/date-time.types';\nimport { TuiDay } from '@taiga-ui/cdk';\n\nexport type InputDateRangeSavedValue = { from: string; to: string } | null;\n\n// TODO не открывается пикер дат\n@Component({\n selector: 'sproc-param-date-range',\n templateUrl: './param-date-range.component.html',\n styleUrls: ['./param-date-range.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamDateRangeComponent extends ParamDateBase<\n PrizmDayRange | null,\n InputDateRangeSavedValue\n> {\n public maxLength = input<PrizmDayLike | null>(null);\n /** текст сообщения об ошибке */\n public errorMessage = input<string>('');\n override placeholder = input('Выберите период');\n @Input() min: TuiDay | PrizmDay | undefined;\n @Input() max: TuiDay | PrizmDay | undefined;\n @Input() override set formatSavedValue(\n formatter: FormatterSavedValueType<PrizmDayRange | null, InputDateRangeSavedValue> | undefined\n ) {\n this.formatterSavedValue = formatter ?? this._defaultFormatterSaveValue;\n }\n @Input() override set parseSavedValue(\n parser: ParserSavedValueType<InputDateRangeSavedValue, PrizmDayRange | null> | undefined\n ) {\n this.parserSavedValue = parser ?? this._defaultParserSaveValue;\n }\n override buildShowedValue = input(\n (value: PrizmDayRange | null): string => value?.toString() ?? '-'\n );\n\n protected override formatterSavedValue = this._defaultFormatterSaveValue;\n protected override parserSavedValue = this._defaultParserSaveValue;\n\n private _defaultFormatterSaveValue(range: PrizmDayRange | null): InputDateRangeSavedValue {\n if (!range) {\n return null;\n }\n\n const isoFrom = this._dts.toISOString(range.from.toLocalNativeDate());\n const isoTo = this._dts.toISOString(range.to.toLocalNativeDate());\n\n return {\n from: this._dts.parseDate(isoFrom, EDatePattern.YEAR_MONTH_DAY),\n to: this._dts.parseDate(isoTo, EDatePattern.YEAR_MONTH_DAY),\n };\n }\n\n private _defaultParserSaveValue(value: InputDateRangeSavedValue): PrizmDayRange | null {\n if (!value) {\n return null;\n }\n\n const from = this._dts.isoToLocalDate(value.from);\n const to = this._dts.isoToLocalDate(value.to);\n\n return PrizmDayRange.fromLocalNativeDate(from, to);\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n @if (errorMessage() && control.invalid) {\n <div class=\"errorMessage\">{{ errorMessage() }}</div>\n }\n </div>\n\n <prizm-input-layout class=\"flex-shrink--zero\" size=\"s\" [forceClear]=\"forceClear\">\n <prizm-input-layout-date-range\n [placeholder]=\"placeholder()\"\n [maxLength]=\"maxLength()\"\n [min]=\"$any(min)\"\n [max]=\"$any(max)\"\n [formControl]=\"control\"\n ></prizm-input-layout-date-range>\n </prizm-input-layout>\n </div>\n </ng-template>\n</ng-container>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport moment from 'moment';\nimport { DateTimeService, ITimeZone } from '../../services/date-time.service';\n\n@Pipe({\n name: 'formatDate',\n standalone: true,\n})\nexport class FormatDatePipe implements PipeTransform {\n constructor(private readonly _dateTimeService: DateTimeService) {}\n\n transform(value: unknown, valueTZ: string, pattern: string, _?: ITimeZone | null): unknown {\n let utc = null;\n\n if (value instanceof Date) {\n const iso = this._dateTimeService.convertDateToISOWithTZ(value, valueTZ);\n utc = moment(iso).toISOString();\n } else if (typeof value === 'string') {\n utc = value;\n }\n\n if (!utc) {\n return value;\n }\n\n return this._dateTimeService.parseDate(utc, pattern);\n }\n}\n","import { ChangeDetectionStrategy, Component, input, Input } from '@angular/core';\nimport { PrizmDay, PrizmTime, PrizmTimeMode } from '@prizm-ui/components';\nimport { distinctUntilChanged, filter, map, pairwise } from 'rxjs';\nimport { ParamDateBase } from '../../../core/param/param-date-base';\nimport { FormatterSavedValueType, ParserSavedValueType } from '../../../types/params.types';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport type SmaPrizmDateTime = [PrizmDay, PrizmTime | undefined];\n\nexport type InputDateTimeSaveValue = string | null;\n\n@Component({\n selector: 'sproc-param-date-time',\n templateUrl: './param-date-time.component.html',\n styleUrls: ['./param-date-time.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamDateTimeComponent extends ParamDateBase<\n SmaPrizmDateTime | null,\n InputDateTimeSaveValue\n> {\n override placeholder = input('Выберите дату и время');\n @Input() min: PrizmDay | [PrizmDay, PrizmTime] | undefined;\n @Input() max: PrizmDay | [PrizmDay, PrizmTime] | undefined;\n @Input() timeMode: PrizmTimeMode = 'HH:MM';\n @Input() override set formatSavedValue(\n formatter: FormatterSavedValueType<SmaPrizmDateTime | null, InputDateTimeSaveValue> | undefined\n ) {\n this.formatterSavedValue = formatter ?? this._defaultFormatterSaveValue;\n }\n @Input() override set parseSavedValue(\n parser: ParserSavedValueType<InputDateTimeSaveValue, SmaPrizmDateTime | null> | undefined\n ) {\n this.parserSavedValue = parser ?? this._defaultParserSaveValue;\n }\n\n protected override formatterSavedValue = this._defaultFormatterSaveValue;\n protected override parserSavedValue = this._defaultParserSaveValue;\n\n private _defaultFormatterSaveValue(value: SmaPrizmDateTime | null): InputDateTimeSaveValue {\n if (!value) {\n return null;\n }\n\n const date = this._dts.prizmDateTimeToNativeDate(value);\n\n return this._dts.toISOString(date);\n }\n\n private _defaultParserSaveValue(value: InputDateTimeSaveValue): SmaPrizmDateTime | null {\n if (!value) {\n return null;\n }\n\n const date = this._dts.isoToLocalDate(value);\n\n return this._valueFromLocalNativeDate(date);\n }\n\n protected override onInit(): void {\n this._subscribeOnTimeZoneChanges();\n }\n\n protected clearValue(): void {\n this.control.setValue(null);\n }\n\n protected get nativeDate(): Date | null {\n if (!this.value) {\n return null;\n }\n return typeof this.value === 'string'\n ? this._dts.isoToLocalDate(this.value)\n : this._dts.prizmDateTimeToNativeDate(this.value);\n }\n\n private _subscribeOnTimeZoneChanges(): void {\n this.timezoneChange\n .pipe(\n distinctUntilChanged((prev, curr) => prev.time_diff === curr.time_diff),\n pairwise(),\n map(([prev, curr]) => ({\n prevDiff: prev.time_diff,\n currDiff: curr.time_diff,\n value: this.value,\n })),\n filter(({ value }) => !!value),\n takeUntilDestroyed(this.dr)\n )\n .subscribe(({ prevDiff, currDiff, value }) => {\n const date = this._dts.prizmDateTimeToNativeDate(value!);\n const newDate = this.rebuildDateInNewTimezone(date, prevDiff, currDiff);\n\n this.control.setValue(this._valueFromLocalNativeDate(newDate), { emitEvent: false });\n });\n }\n\n private _valueFromLocalNativeDate(date: Date): SmaPrizmDateTime {\n return [PrizmDay.fromLocalNativeDate(date), PrizmTime.fromLocalNativeDate(date)];\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <div class=\"value\">\n <span *ngIf=\"nativeDate; else emptyTemplate\">\n {{\n nativeDate\n | formatDate\n : (timezoneChange | async)!.time_diff!\n : EDatePattern.DATE_TIME_WITHOUT_SECONDS\n : (timezoneChange | async)\n }}\n </span>\n <ng-template #emptyTemplate>-</ng-template>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n </div>\n\n <prizm-input-layout\n class=\"flex-shrink--zero\"\n size=\"s\"\n [forceClear]=\"forceClear\"\n [clearButton]=\"clearButtonTemplate\"\n >\n <prizm-input-layout-date-time\n [placeholder]=\"placeholder()\"\n [max]=\"$any(max)\"\n [min]=\"$any(min)\"\n [formControl]=\"control\"\n ></prizm-input-layout-date-time>\n <ng-template\n #clearButtonTemplate\n let-showStatusButton=\"showStatusButton\"\n let-disabled=\"disabled\"\n >\n <button\n [interactive]=\"true\"\n [disabled]=\"disabled\"\n prizmHint=\"Нажмите для очистки\"\n prizmHintTheme=\"light\"\n prizmInputIconButton=\"cancel-delete-content\"\n class=\"{{ showStatusButton ? '' : 'alone' }}\"\n (click)=\"clearValue()\"\n ></button>\n </ng-template>\n </prizm-input-layout>\n </div>\n </ng-template>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, input, Input } from '@angular/core';\nimport {\n PrizmDateTime,\n PrizmDateTimeRange,\n PrizmDay,\n PrizmDayLike,\n PrizmDayRange,\n PrizmTime,\n PrizmTimeMode,\n PrizmTimeRange,\n} from '@prizm-ui/components';\nimport { distinctUntilChanged, filter, map, pairwise } from 'rxjs';\nimport { ParamDateBase } from '../../../core/param/param-date-base';\nimport { FormatterSavedValueType, ParserSavedValueType } from '../../../types/params.types';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport type InputDateTimeRangeSaveValue = {\n from: string;\n to: string;\n} | null;\n\n// TODO не открывается пикер дат\n@Component({\n selector: 'sproc-param-date-time-range',\n templateUrl: './param-date-time-range.component.html',\n styleUrls: ['./param-date-time-range.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamDateTimeRangeComponent extends ParamDateBase<\n PrizmDateTimeRange | null,\n InputDateTimeRangeSaveValue\n> {\n override placeholder = input('Выберите период');\n @Input() min: PrizmDay | undefined;\n @Input() max: PrizmDay | undefined;\n @Input() timeMode: PrizmTimeMode = 'HH:MM';\n @Input() maxLength: PrizmDayLike | null = null;\n @Input() override set formatSavedValue(\n formatter:\n | FormatterSavedValueType<PrizmDateTimeRange | null, InputDateTimeRangeSaveValue>\n | undefined\n ) {\n this.formatterSavedValue = formatter ?? this._defaultFormatterSaveValue;\n }\n @Input() override set parseSavedValue(\n parser: ParserSavedValueType<InputDateTimeRangeSaveValue, PrizmDateTimeRange | null> | undefined\n ) {\n this.parserSavedValue = parser ?? this._defaultParserSaveValue;\n }\n\n protected override formatterSavedValue = this._defaultFormatterSaveValue;\n protected override parserSavedValue = this._defaultParserSaveValue;\n\n private _defaultFormatterSaveValue(\n range: PrizmDateTimeRange | null\n ): InputDateTimeRangeSaveValue {\n if (!range) {\n return null;\n }\n\n const { from, to } = this._dts.prizmDateTimeRangeToNativeDates(range);\n\n return {\n from: this._dts.toISOString(from),\n to: this._dts.toISOString(to),\n };\n }\n\n private _defaultParserSaveValue(value: InputDateTimeRangeSaveValue): PrizmDateTimeRange | null {\n if (!value) {\n return null;\n }\n\n const from = this._dts.isoToLocalDate(value.from);\n const to = this._dts.isoToLocalDate(value.to);\n\n return new PrizmDateTimeRange(\n PrizmDayRange.fromLocalNativeDate(from, to),\n new PrizmTimeRange(PrizmTime.fromLocalNativeDate(from), PrizmTime.fromLocalNativeDate(to))\n );\n }\n\n protected override onInit(): void {\n this._subscribeOnTimeZoneChanges();\n }\n\n private _subscribeOnTimeZoneChanges(): void {\n this.timezoneChange\n .pipe(\n distinctUntilChanged((prev, curr) => prev.time_diff === curr.time_diff),\n pairwise(),\n map(([prev, curr]) => ({\n prevDiff: prev.time_diff,\n currDiff: curr.time_diff,\n value: this.value,\n })),\n filter(({ value }) => !!value),\n takeUntilDestroyed(this.dr)\n )\n .subscribe(({ prevDiff, currDiff, value }) => {\n const { from, to } = this._dts.prizmDateTimeRangeToNativeDates(value!);\n\n const newFrom = this.rebuildDateInNewTimezone(from, prevDiff, currDiff);\n const newTo = this.rebuildDateInNewTimezone(to, prevDiff, currDiff);\n\n this.control.setValue(this._dts.prizmDateTimeRangeFromNativeDates(newFrom, newTo), {\n emitEvent: false,\n });\n });\n }\n\n protected get from(): Date | null {\n return this._getDateFromRange('from');\n }\n\n protected get to(): Date | null {\n return this._getDateFromRange('to');\n }\n\n private _getDateFromRange(date: 'from' | 'to'): Date | null {\n if (!this.value) {\n return null;\n }\n\n const { dayRange, timeRange } = this.value;\n\n return new PrizmDateTime(dayRange[date], timeRange?.[date]).toLocalNativeDate();\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <div class=\"value\">\n <span *ngIf=\"value; else emptyTemplate\">\n {{\n from\n | formatDate\n : (timezoneChange | async)!.time_diff!\n : EDatePattern.DATE_TIME_WITHOUT_SECONDS\n : (timezoneChange | async)\n }}\n -\n {{\n to\n | formatDate\n : (timezoneChange | async)!.time_diff!\n : EDatePattern.DATE_TIME_WITHOUT_SECONDS\n : (timezoneChange | async)\n }}\n </span>\n <ng-template #emptyTemplate>-</ng-template>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n <img\n *ngIf=\"hint\"\n src=\"assets/ngx-register-base/icons/circle-info-empty.svg\"\n [prizmHint]=\"hint\"\n prizmHintTheme=\"light\"\n style=\"margin-bottom: 2px\"\n />\n </div>\n\n <prizm-input-layout class=\"flex-shrink--zero\" size=\"s\" [forceClear]=\"forceClear\">\n <prizm-input-layout-date-time-range\n [placeholder]=\"placeholder()\"\n [timeMode]=\"timeMode\"\n [maxLength]=\"maxLength\"\n [min]=\"$any(min)\"\n [max]=\"$any(max)\"\n [formControl]=\"control\"\n ></prizm-input-layout-date-time-range>\n </prizm-input-layout>\n </div>\n </ng-template>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, input, Input } from '@angular/core';\nimport { ParamDateBase } from '../../../core/param/param-date-base';\nimport { PrizmMonth } from '@prizm-ui/components';\nimport { FormatterSavedValueType, ParserSavedValueType } from '../../../types/params.types';\nimport { EMonth, MonthMapper } from '../../../consts/month.consts';\n\nexport type InputMonthSavedValue = string | null;\n\n@Component({\n selector: 'sproc-param-month',\n templateUrl: './param-month.component.html',\n styleUrls: ['./param-month.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamMonthComponent extends ParamDateBase<PrizmMonth | null, InputMonthSavedValue> {\n override placeholder = input('Выберите месяц');\n @Input() override set formatSavedValue(\n formatter: FormatterSavedValueType<PrizmMonth | null, InputMonthSavedValue> | undefined\n ) {\n this.formatterSavedValue = formatter ?? this._defaultFormatterSaveValue;\n }\n @Input() override set parseSavedValue(\n parser: ParserSavedValueType<InputMonthSavedValue, PrizmMonth | null> | undefined\n ) {\n this.parserSavedValue = parser ?? this._defaultParserSaveValue;\n }\n override buildShowedValue = input((value: PrizmMonth | null): string =>\n value ? `${this._formatMonth(value.month)} ${value.year}` : '-'\n );\n\n protected override formatterSavedValue = this._defaultFormatterSaveValue;\n protected override parserSavedValue = this._defaultParserSaveValue;\n\n private _defaultFormatterSaveValue(month: PrizmMonth | null): InputMonthSavedValue {\n if (!month) {\n return null;\n }\n\n return this._dts.toISOString(month.toLocalNativeDate());\n }\n\n private _defaultParserSaveValue(value: InputMonthSavedValue): PrizmMonth | null {\n if (!value) {\n return null;\n }\n\n const date = this._dts.isoToLocalDate(value);\n\n return new PrizmMonth(date.getFullYear(), date.getMonth());\n }\n\n private _formatMonth(month: EMonth): string {\n return MonthMapper.getRusNamesArr()[month];\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <span class=\"value\">\n <span>{{ showedValue }}</span>\n </span>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n <img\n *ngIf=\"hint\"\n src=\"assets/ngx-register-base/icons/circle-info-empty.svg\"\n [prizmHint]=\"hint\"\n prizmHintTheme=\"light\"\n style=\"margin-bottom: 2px\"\n />\n </div>\n\n <prizm-input-layout size=\"s\" [forceClear]=\"forceClear\">\n <prizm-input-layout-month\n [placeholder]=\"placeholder()\"\n [formControl]=\"control\"\n ></prizm-input-layout-month>\n </prizm-input-layout>\n </div>\n </ng-template>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, input, Input } from '@angular/core';\nimport { PrizmMonth, PrizmMonthRange } from '@prizm-ui/components';\nimport { ParamDateBase } from '../../../core/param/param-date-base';\nimport { FormatterSavedValueType, ParserSavedValueType } from '../../../types/params.types';\nimport { EMonth, MonthMapper } from '../../../consts/month.consts';\n\nexport type InputMonthRangeSavedValue = { from: string; to: string } | null;\n\n@Component({\n selector: 'sproc-param-month-range',\n templateUrl: './param-month-range.component.html',\n styleUrls: ['./param-month-range.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamMonthRangeComponent extends ParamDateBase<\n PrizmMonthRange | null,\n InputMonthRangeSavedValue\n> {\n override placeholder = input('Выберите период');\n @Input() override set formatSavedValue(\n formatter:\n | FormatterSavedValueType<PrizmMonthRange | null, InputMonthRangeSavedValue>\n | undefined\n ) {\n this.formatterSavedValue = formatter ?? this._defaultFormatterSaveValue;\n }\n @Input() override set parseSavedValue(\n parser: ParserSavedValueType<InputMonthRangeSavedValue, PrizmMonthRange | null> | undefined\n ) {\n this.parserSavedValue = parser ?? this._defaultParserSaveValue;\n }\n override buildShowedValue = input((range: PrizmMonthRange | null): string => {\n if (!range) {\n return '-';\n }\n\n const { from, to } = range;\n\n const fromRuString = `${this._formatMonth(from.month)} ${from.year}`;\n const toRuString = `${this._formatMonth(to.month)} ${to.year}`;\n\n return `${fromRuString} - ${toRuString}`;\n });\n\n protected override formatterSavedValue = this._defaultFormatterSaveValue;\n protected override parserSavedValue = this._defaultParserSaveValue;\n\n private _defaultFormatterSaveValue(range: PrizmMonthRange | null): InputMonthRangeSavedValue {\n if (!range) {\n return null;\n }\n\n return {\n from: this._dts.toISOString(range.from.toLocalNativeDate()),\n to: this._dts.toISOString(range.to.toLocalNativeDate()),\n };\n }\n\n private _defaultParserSaveValue(value: InputMonthRangeSavedValue): PrizmMonthRange | null {\n if (!value) {\n return null;\n }\n\n const from = this._dts.isoToLocalDate(value.from);\n const to = this._dts.isoToLocalDate(value.to);\n\n return new PrizmMonthRange(\n new PrizmMonth(from.getFullYear(), from.getMonth()),\n new PrizmMonth(to.getFullYear(), to.getMonth())\n );\n }\n\n private _formatMonth(month: EMonth): string {\n return MonthMapper.getRusNamesArr()[month];\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <span class=\"value\">\n <span>{{ showedValue }}</span>\n </span>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n </div>\n\n <prizm-input-layout size=\"s\" [forceClear]=\"forceClear\">\n <prizm-input-layout-month-range\n [placeholder]=\"placeholder()\"\n [formControl]=\"control\"\n ></prizm-input-layout-month-range>\n </prizm-input-layout>\n </div>\n </ng-template>\n</ng-container>\n","export const PARAM_SEARCH_INPUT_DEBOUNCE_TIME_MLS = 1000;\n","import {\n DOCUMENT,\n NgIf,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n NgTemplateOutlet,\n} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n Inject,\n Injector,\n input,\n OnDestroy,\n output,\n signal,\n} from '@angular/core';\nimport { PrizmMultiSelectSearchMatcher } from '@prizm-ui/components';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n delay,\n distinctUntilChanged,\n filter,\n map,\n of,\n skip,\n Subscription,\n switchMap,\n tap,\n} from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TUI_ITEMS_HANDLERS, TuiAppearance, TuiHint, TuiIcon, TuiTextfield } from '@taiga-ui/core';\nimport { TuiMultiSelectModule, TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TuiContext, TuiIdentityMatcher, TuiStringHandler } from '@taiga-ui/cdk';\nimport { FastQueryStore } from '../../../store/fast-query-store.service';\nimport { IFilterSelectValue, MetaQuery } from '../../../types/params.types';\nimport { ParamSelectBase } from '../../../core/param/param-select-base';\nimport { SELECT_ALL_ID, selectAllItem } from '../../../utils/select-all-utils';\nimport { distinctUntilChangedJSONs } from '../../../utils';\nimport { PARAM_SEARCH_INPUT_DEBOUNCE_TIME_MLS } from '../../../consts/params.consts';\n\n@Component({\n selector: 'sproc-param-multi-select',\n templateUrl: './param-multi-select.component.html',\n styleUrls: ['./param-multi-select.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n FastQueryStore,\n {\n provide: TUI_ITEMS_HANDLERS,\n deps: [forwardRef(() => ParamMultiSelectComponent)],\n useFactory: (component: ParamMultiSelectComponent) => ({\n stringify: component.stringify,\n identityMatcher: component.identityMatcher,\n disabledItemHandler: signal((_: IFilterSelectValue) => false),\n }),\n },\n ],\n standalone: true,\n imports: [\n NgTemplateOutlet,\n NgIf,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n TuiIcon,\n TuiHint,\n TuiMultiSelectModule,\n ReactiveFormsModule,\n TuiTextfield,\n TuiAppearance,\n TuiTextfieldControllerModule,\n ],\n})\nexport class ParamMultiSelectComponent\n extends ParamSelectBase<IFilterSelectValue[], IFilterSelectValue[]>\n implements OnDestroy\n{\n override readonly placeholder = input('Выберите значения');\n readonly itemSelectAll = input(false);\n readonly searchMatcher = input<PrizmMultiSelectSearchMatcher<IFilterSelectValue>>(\n (search: string, item: IFilterSelectValue) =>\n item.name?.toLowerCase().includes(search.toLowerCase())\n );\n readonly shortPickedLength = input(true);\n\n readonly stringify = input<TuiStringHandler<IFilterSelectValue | TuiContext<IFilterSelectValue>>>(\n (item) => ('name' in item ? item.name : item.$implicit.name)\n );\n\n readonly identityMatcher = input<TuiIdentityMatcher<IFilterSelectValue>>(\n (a, b) => a?.id === b?.id\n );\n\n override readonly buildShowedValue = input(\n (values: IFilterSelectValue[]): string => values?.map((v) => v.name).join(',\\n') ?? '-'\n );\n\n readonly onSelect = output<IFilterSelectValue[]>();\n\n protected readonly selectAllItem: IFilterSelectValue = selectAllItem;\n\n protected onCancelButtonSubscription!: Subscription;\n\n protected searchValue = '';\n\n protected readonly onSearch$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n private onSearchSubscription: Subscription | null = null;\n private cachedString = '';\n\n private onClearButtonSubscription: Subscription | null = null;\n public choosedHint = '';\n\n constructor(\n injector: Injector,\n @Inject(DOCUMENT) private document: Document\n ) {\n super(injector);\n }\n\n public override onInit(): void {\n this._subscribeOnSearch();\n\n if (this.itemSelectAll()) {\n this.items.unshift(this.selectAllItem);\n }\n }\n\n private _subscribeOnSearch() {\n this.onSearch$\n .pipe(\n debounceTime(PARAM_SEARCH_INPUT_DEBOUNCE_TIME_MLS),\n distinctUntilChanged(),\n takeUntilDestroyed(this.dr)\n )\n .subscribe((value) => {\n this.fetchItems(value);\n });\n }\n\n public override afterViewInit(): void {\n if (this.meta?.table && this.searchable) {\n this._subscribeOnClearButton();\n }\n\n if (this.meta) {\n this._observeFetchItems();\n }\n\n this._subscribeOnMetaChanges();\n this._subscribeOnValueControl();\n\n if (this.control?.value?.some((elem: any) => elem.id === SELECT_ALL_ID)) {\n if (this.items.length > 0) {\n this.control.setValue(this.items);\n }\n if (this.items.length === 1) {\n this.fetchItems();\n }\n }\n }\n\n private _observeFetchItems(): void {\n this.control.valueChanges\n .pipe(\n filter(Boolean),\n filter((values) => {\n const someValueNotHaveName = values.some((value) => !value.name);\n const everyValuesExistsInItems = values.every(({ id }) =>\n this.items.some((item) => item.id === id)\n );\n\n return someValueNotHaveName && everyValuesExistsInItems;\n }),\n takeUntilDestroyed(this.dr)\n )\n .subscribe((values) => {\n const ids = new Set(values.map((value) => value.id));\n const filledValues = this.items.filter(({ id }) => ids.has(id));\n\n this.control.setValue(filledValues, { emitEvent: false });\n });\n\n combineLatest([\n this.control.valueChanges.pipe(\n map((values) => values?.map((value) => value.id) ?? []),\n distinctUntilChangedJSONs(),\n filter((ids) => ids.some((id) => !this.items.some((item) => item.id === id)))\n ),\n this.meta$,\n ])\n .pipe(takeUntilDestroyed(this.dr))\n .subscribe(() => {\n this.fetchItems();\n });\n }\n\n private _subscribeOnMetaChanges(): void {\n this.meta$.pipe(takeUntilDestroyed(this.dr)).subscribe(() => {\n this.fetchItems();\n });\n }\n\n private _subscribeOnValueControl(): void {\n let controlValue = this.control.value;\n\n this.control?.valueChanges\n .pipe(\n distinctUntilChangedJSONs(),\n map((values) => values ?? []),\n takeUntilDestroyed(this.dr)\n )\n .subscribe((values) => {\n if (this.itemSelectAll()) {\n if (\n this.items.length - values.length === 1 &&\n values.filter((elem) => elem.id === SELECT_ALL_ID).length === 0 &&\n controlValue.includes(this.selectAllItem)\n ) {\n this.control.setValue([], { emitEvent: false });\n }\n\n if (values?.some((elem) => elem.id === SELECT_ALL_ID)) {\n this.control.setValue(this.items, { emitEvent: false });\n }\n\n if (\n this.items.length !== values.length &&\n controlValue?.includes(this.selectAllItem) &&\n values?.some((elem) => elem.id === SELECT_ALL_ID)\n ) {\n this.control.setValue(\n values.filter((elem) => elem !== this.selectAllItem),\n { emitEvent: false }\n );\n }\n }\n controlValue = this.control.value;\n });\n }\n\n public ngOnDestroy(): void {\n this.onSearch$.complete();\n this.onSearchSubscription?.unsubscribe();\n this.onCancelButtonSubscription?.unsubscribe();\n this.onClearButtonSubscription?.unsubscribe();\n }\n\n protected fetchItems(searchValue?: string): void {\n const { idField, valueField } = this.metaFields;\n if (!this.meta?.table?.name || idField === null || valueField === null) {\n return;\n }\n\n const selectedItemIDs = this._getSelectedItemIDs(searchValue);\n\n this.loading = true;\n const where = this.buildWhere(searchValue);\n const selectedItemIdsWhere = this._buildSelectedItemIdsWhere(where, selectedItemIDs, idField);\n let fetchAll = false;\n\n if (this.control.value?.some((elem: any) => elem.id === SELECT_ALL_ID)) {\n fetchAll = true;\n }\n const qParams: MetaQuery = {\n table: this.meta.table,\n where,\n order_by: this.meta.order_by,\n offset: this.meta.offset,\n distinct_on: this.meta.distinct_on,\n subquery: this.meta.subquery,\n };\n if (!fetchAll) {\n qParams.limit = this.meta.limit ?? this.limit;\n }\n\n this.store\n .getResults(qParams, true, selectedItemIdsWhere)\n .pipe(\n tap((data) => {\n this._handleResults(data, idField, valueField, selectedItemIDs);\n }),\n tap(() => {\n if (\n this.itemSelectAll() &&\n this.items.length > 0 &&\n !this.items.includes(this.selectAllItem)\n ) {\n this.items.unshift(this.selectAllItem);\n }\n if (fetchAll) {\n this.control.setValue(this.items, { emitEvent: false });\n }\n this.loading = false;\n this.cdr.markForCheck();\n }),\n takeUntilDestroyed(this.dr)\n )\n .subscribe(() => {\n this.choosedHint =\n this.control\n .getRawValue()\n ?.map((elem: any) => elem.name)\n .join(', ') ?? '';\n });\n }\n\n private _subscribeOnClearButton(): void {\n this.onClearButtonSubscription?.unsubscribe();\n this.onClearButtonSubscription = this.onSearch$\n .pipe(\n skip(1),\n switchMap((value) => {\n if (value.length > 0 && this.cachedString.length === 0) {\n const elements = this.document.querySelectorAll('.input-search');\n const clearButtonClicks$ = [];\n for (let i = 0; i < elements.length; i++) {\n const founded = elements.item(i);\n const item = founded?.parentElement;\n if (founded && item && item.className === 'prizm-input-form-body') {\n clearButtonClicks$.push(\n of(null).pipe(\n delay(300),\n switchMap(() => {\n const clearButton = item.parentElement?.getElementsByClassName(\n 'prizm-input-label-clear-btn prizm-input-button-default clear-icon interactive ng-star-inserted'\n );\n if (clearButton?.[0]) {\n clearButton[0].addEventListener('click', () => {\n this.onSearch$.next('');\n });\n }\n return of(null);\n })\n )\n );\n }\n }\n return clearButtonClicks$.length > 0 ? clearButtonClicks$[0] : of(null);\n }\n this.cachedString = value;\n return of(null);\n }),\n takeUntilDestroyed(this.dr)\n )\n .subscribe();\n }\n\n private _getSelectedItemIDs(searchValue?: string): string[] | undefined {\n if (!searchValue || searchValue === '') {\n return this.value?.filter((elem) => elem.id !== SELECT_ALL_ID).map((val: any) => val.id);\n }\n\n return;\n }\n\n private _buildSelectedItemIdsWhere(\n where: any,\n selectedItemIDs: string[] | undefined,\n idField: string\n ): object | undefined {\n if (where && selectedItemIDs && selectedItemIDs.length > 0) {\n return { _and: [{ [idField]: { _in: selectedItemIDs } }, where] };\n }\n return;\n }\n\n private _handleResults(\n data: any,\n idField: string,\n valueField: string,\n selectedItemIDs: string[] | undefined\n ): void {\n this.items = data.data.map((item: any) => ({\n ...item,\n id: item[idField] ?? '',\n name: this._getNameFromField(item, valueField),\n }));\n\n if (this.itemSelectAll() && this.items.length > 0) {\n this.items.unshift(this.selectAllItem);\n }\n\n this._updateControlValues(data, idField, valueField, selectedItemIDs);\n }\n\n private _updateControlValues(\n data: any,\n idField: string,\n valueField: string,\n selectedItemIDs: string[] | undefined\n ): void {\n const idsSelectedValues = new Set(this.value?.map((val: any) => val[idField]) ?? []);\n const availableItems =\n data.selectedIdsQuery\n ?.filter((item: any) => idsSelectedValues.has(item[idField]))\n .map((item: any) => ({\n ...item,\n id: item[idField] ?? '',\n name: this._getNameFromField(item, valueField),\n })) ?? [];\n\n if (selectedItemIDs && selectedItemIDs.length > 0 && availableItems.length > 0) {\n this.control?.setValue(availableItems, { emitEvent: !this.itemSelectAll });\n }\n\n const itemsThatDontExist = availableItems.filter(\n (new_item: any) => !this.items?.some((value: any) => value.id === new_item.id)\n );\n\n this.items.push(...itemsThatDontExist);\n this.itemsChange.emit(this.items);\n }\n\n private _getNameFromField(item: any, field: string): string {\n if (field.includes('.')) {\n return this._getNameFromDeepField(item, field);\n }\n return this.formatShowedValue(item, field);\n }\n\n private _getNameFromDeepField(item: any, field: string): string {\n const deepFields = field.split('.');\n let tempObject = { ...item };\n\n for (const deepField of deepFields) {\n tempObject = tempObject[deepField];\n }\n\n return tempObject;\n }\n\n protected onSearch(value: string | null): void {\n if (this.searchable) {\n this.onSearch$.next(value ?? '');\n }\n }\n\n protected getListLength(list: IFilterSelectValue[]): string {\n const length = list.some((item) => item?.id === SELECT_ALL_ID) ? list.length - 1 : list.length;\n return length === 1 ? '' : String(length);\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-container [ngTemplateOutlet]=\"value ? showedValueTemplate : emptyTemplate\">\n <ng-template #showedValueTemplate>\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <pre class=\"value\">{{ showedValue }}</pre>\n </ng-template>\n <ng-template ngSwitchDefault>\n <div class=\"value\" [tuiHint]=\"showedValue\">\n <span>{{ showedValue }}</span>\n </div>\n </ng-template>\n </ng-container>\n </ng-template>\n <ng-template #emptyTemplate>\n <span class=\"value\">-</span>\n </ng-template>\n </ng-container>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n <tui-icon\n *ngIf=\"hint\"\n icon=\"assets/ngx-register-base/icons/circle-info-empty.svg\"\n [tuiHint]=\"hint\"\n class=\"hintIcon\"\n ></tui-icon>\n </div>\n <tui-multi-select\n [formControl]=\"control\"\n [tuiTextfieldLabelOutside]=\"true\"\n [tuiTextfieldCleaner]=\"true\"\n tuiAppearance=\"sproc-input-appearance\"\n [valueContent]=\"valueContent\"\n tuiTextfieldSize=\"m\"\n [stringify]=\"stringify()\"\n [identityMatcher]=\"identityMatcher()\"\n (searchChange)=\"onSearch($event)\"\n [editable]=\"searchable\"\n >\n <span class=\"placeholder\">{{ placeholder() }}</span>\n\n <tui-data-list-wrapper\n *tuiDataList\n tuiMultiSelectGroup\n [items]=\"items\"\n [itemContent]=\"listItemTemplate ?? itemContent\"\n ></tui-data-list-wrapper>\n </tui-multi-select>\n\n <ng-template #itemContent let-data>\n {{ data.name }}\n </ng-template>\n <ng-template #valueContent let-list>\n @let isSingle = list.length === 1;\n <span [class]=\"isSingle ? 'choosed choosed-one' : 'choosed choosed-many'\">\n {{ isSingle ? list[0].name : shortPickedLength() ? 'Выбрано: ' : null }}\n {{ getListLength(list) }}\n </span>\n </ng-template>\n </div>\n </ng-template>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n forwardRef,\n input,\n OnDestroy,\n Output,\n signal,\n} from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n distinctUntilChanged,\n filter,\n map,\n tap,\n} from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n TUI_ITEMS_HANDLERS,\n TuiAppearance,\n TuiDropdown,\n TuiHint,\n TuiLoader,\n TuiTextfield,\n} from '@taiga-ui/core';\nimport {\n TuiChevron,\n TuiComboBox,\n TuiDataListWrapper,\n TuiFilterByInputPipe,\n TuiSelect,\n} from '@taiga-ui/kit';\nimport { TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet } from '@angular/common';\nimport { TuiStringMatcher } from '@taiga-ui/cdk';\nimport { ParamInvalidIconComponent } from '../sub-components/param-invalid-icon/param-invalid-icon.component';\nimport { FastQueryStore } from '../../../store/fast-query-store.service';\nimport { ParamSelectBase } from '../../../core/param/param-select-base';\nimport { IFilterSelectValue } from '../../../types/params.types';\nimport { PARAM_SEARCH_INPUT_DEBOUNCE_TIME_MLS } from '../../../consts/params.consts';\n\n@Component({\n selector: 'sproc-param-select',\n templateUrl: './param-select.component.html',\n styleUrls: ['./param-select.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n FastQueryStore,\n {\n provide: TUI_ITEMS_HANDLERS,\n deps: [forwardRef(() => ParamSelectComponent)],\n useFactory: (component: ParamSelectComponent) => ({\n stringify: component.stringify,\n identityMatcher: component.identityMatcher,\n disabledItemHandler: signal(() => false),\n }),\n },\n ],\n standalone: true,\n imports: [\n TuiTextfield,\n TuiAppearance,\n TuiTextfieldControllerModule,\n ReactiveFormsModule,\n TuiDataListWrapper,\n TuiFilterByInputPipe,\n NgTemplateOutlet,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n TuiComboBox,\n ParamInvalidIconComponent,\n NgIf,\n TuiSelect,\n TuiDropdown,\n TuiLoader,\n TuiChevron,\n TuiHint,\n ],\n})\nexport class ParamSelectComponent\n extends ParamSelectBase<IFilterSelectValue | null, IFilterSelectValue | null>\n implements OnDestroy\n{\n override placeholder = input('Выберите значение');\n readonly stringify = input<(item: IFilterSelectValue) => string>((item) =>\n String(item.name ?? '')\n );\n readonly identityMatcher = input<(a: IFilterSelectValue, b: IFilterSelectValue) => boolean>(\n (a, b) => a.id === b.id\n );\n readonly matcher = input<TuiStringMatcher<IFilterSelectValue>>(\n (item: IFilterSelectValue, query: string) => {\n if (!query || String(query).trim() === '') {\n return true;\n }\n return String(item?.name ?? '')\n .toLowerCase()\n .includes(String(query).toLowerCase());\n }\n );\n override buildShowedValue = input(\n (value: IFilterSelectValue | null): string => value?.name ?? '-'\n );\n public strict = input<boolean>(true);\n\n @Output() onSelect = new EventEmitter<IFilterSelectValue>();\n\n protected readonly search$ = new BehaviorSubject<string | undefined>(undefined);\n\n public override afterViewInit(): void {\n this._observeFetchItems();\n if (this.meta) {\n this._subscribeOnMetaChanges();\n this._subscribeOnSearch();\n }\n }\n\n public ngOnDestroy(): void {\n this.search$.complete();\n }\n\n private _subscribeOnSearch(): void {\n this.search$\n .pipe(debounceTime(PARAM_SEARCH_INPUT_DEBOUNCE_TIME_MLS), takeUntilDestroyed(this.dr))\n .subscribe((searchValue: string | undefined) => {\n this.fetchItems(searchValue);\n });\n }\n\n private _observeFetchItems(): void {\n this.control.valueChanges\n .pipe(\n filter(Boolean),\n filter((value) => !value.name),\n takeUntilDestroyed(this.dr)\n )\n .subscribe((value) => {\n const valueId =\n typeof value === 'object' && value\n ? (value as any).id\n : (value as unknown as string | number | null);\n\n const filledValue = this.items.find((item) => item.id === valueId);\n\n if (filledValue) {\n this.control.setValue(filledValue, { emitEvent: false });\n }\n });\n\n combineLatest([\n this.control.valueChanges.pipe(\n map((value) => value?.id ?? null),\n distinctUntilChanged(),\n filter((id) => !this.items.some((item) => item.id === id))\n ),\n this.meta$,\n ])\n .pipe(takeUntilDestroyed(this.dr))\n .subscribe(() => {\n this.fetchItems();\n });\n }\n\n private _subscribeOnMetaChanges(): void {\n this.meta$.pipe(takeUntilDestroyed(this.dr)).subscribe(() => {\n this.fetchItems();\n });\n }\n\n protected fetchItems(searchValue?: string): void {\n const { idField, valueField } = this.metaFields;\n\n if (!this.meta?.table?.name || idField === null || valueField === null) {\n return;\n }\n\n const selectedItemIDs = this._getSelectedItemIDs(searchValue);\n\n this.loading = true;\n const where = this.buildWhere(searchValue);\n const selectedItemIdsWhere = this._buildSelectedItemIdsWhere(where, selectedItemIDs, idField);\n\n this.store\n .getResults(\n {\n table: this.meta.table,\n where,\n order_by: this.meta.order_by,\n offset: this.meta.offset,\n distinct_on: this.meta.distinct_on,\n subquery: this.meta.subquery,\n limit: this.meta.limit ?? this.limit,\n },\n true,\n selectedItemIdsWhere\n )\n .pipe(\n tap((data) => {\n this._handleResults(data, idField, valueField, selectedItemIDs);\n }),\n tap(() => {\n this.loading = false;\n this.cdr.markForCheck();\n }),\n takeUntilDestroyed(this.dr)\n )\n .subscribe();\n }\n\n private _getSelectedItemIDs(searchValue?: string): string[] | undefined {\n if (this.value && (!searchValue || searchValue === '')) {\n const idField = this.meta?.table.idField ?? 'id';\n return [this.value[idField]];\n }\n\n return;\n }\n\n private _buildSelectedItemIdsWhere(\n where: any,\n selectedItemIDs: string[] | undefined,\n idField: string\n ): object | undefined {\n if (where && selectedItemIDs && selectedItemIDs.length > 0) {\n return { _and: [{ [idField]: { _in: selectedItemIDs } }, where] };\n }\n return;\n }\n\n private _handleResults(\n data: any,\n idField: string,\n valueField: string,\n selectedItemIDs: string[] | undefined\n ): void {\n this.items = data.data.map((item: any) => ({\n ...item,\n id: item[idField] ?? '',\n name: this._getNameFromField(item, valueField),\n }));\n\n this._updateControlValues(data, idField, valueField, selectedItemIDs);\n }\n\n private _getNameFromField(item: any, field: string): string {\n if (field.includes('.')) {\n return this._getNameFromDeepField(item, field);\n }\n\n return this.formatShowedValue(item, field);\n }\n\n private _getNameFromDeepField(item: any, field: string): string {\n const deepFields = field.split('.');\n let tempObject = { ...item };\n\n for (const deepField of deepFields) {\n tempObject = tempObject[deepField];\n }\n\n return tempObject;\n }\n\n private _updateControlValues(\n data: any,\n idField: string,\n valueField: string,\n selectedItemIDs: string[] | undefined\n ): void {\n const idSelectedValue = this.value?.[idField];\n const availableItems =\n data.selectedIdsQuery\n ?.filter((item: any) => idSelectedValue === item[idField])\n .map((item: any) => ({\n ...item,\n id: item[idField] ?? '',\n name: this._getNameFromField(item, valueField),\n })) ?? [];\n\n if (selectedItemIDs && selectedItemIDs.length > 0 && availableItems.length > 0) {\n const [item] = availableItems;\n this.control?.setValue(item);\n }\n\n const itemsThatDontExist = availableItems.filter(\n (new_item: any) => !this.items.some((value: any) => value.id === new_item.id)\n );\n\n this.items.push(...itemsThatDontExist);\n this.itemsChange.emit(this.items);\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n }\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n </div>\n\n @if (searchable) {\n <tui-textfield\n tuiTextfieldSize=\"m\"\n tuiAppearance=\"sproc-input-appearance\"\n tuiChevron\n [tuiTextfieldCleaner]=\"true\"\n [tuiHint]=\"value && showedValue !== '-' ? hintContent : undefined\"\n [content]=\"valueTemplate\"\n >\n <input\n (input)=\"search$.next($any($event.target).value)\"\n tuiComboBox\n [strict]=\"strict()\"\n [placeholder]=\"placeholder()\"\n [formControl]=\"control\"\n />\n\n <tui-loader [showLoader]=\"loading\" [overlay]=\"true\">\n <tui-data-list-wrapper\n new\n *tuiTextfieldDropdown\n [items]=\"items | tuiFilterByInput: matcher()\"\n [itemContent]=\"listItemTemplate ?? dropdownOptionContent\"\n [tuiDropdownMaxHeight]=\"maxDropdownHeight\"\n (itemClick)=\"onSelect.emit($event)\"\n />\n </tui-loader>\n\n <ng-container *ngTemplateOutlet=\"textfieldIcons\"></ng-container>\n </tui-textfield>\n } @else {\n <tui-textfield\n tuiTextfieldSize=\"m\"\n tuiAppearance=\"sproc-input-appearance\"\n tuiChevron\n [tuiTextfieldLabelOutside]=\"true\"\n [tuiTextfieldCleaner]=\"true\"\n [tuiHint]=\"value && showedValue !== '-' ? hintContent : undefined\"\n [content]=\"valueTemplate\"\n [tuiDropdownMaxHeight]=\"maxDropdownHeight\"\n >\n <input tuiSelect [placeholder]=\"placeholder()\" [formControl]=\"control\" />\n\n <tui-loader [showLoader]=\"loading\" [overlay]=\"true\">\n <tui-data-list-wrapper\n new\n *tuiTextfieldDropdown\n [items]=\"items\"\n [itemContent]=\"listItemTemplate ?? dropdownOptionContent\"\n (itemClick)=\"onSelect.emit($event)\"\n />\n </tui-loader>\n\n <ng-container *ngTemplateOutlet=\"textfieldIcons\"></ng-container>\n </tui-textfield>\n }\n <ng-template #dropdownOptionContent let-data>\n <div>\n {{ stringify()(data) }}\n </div>\n </ng-template>\n\n <ng-template #hintContent> {{ showedValue }} </ng-template>\n\n <ng-template #textfieldIcons>\n <div class=\"textfield-icons-container\">\n @if (isInvalidAndNotPristine) {\n <sproc-param-invalid-icon></sproc-param-invalid-icon>\n }\n </div>\n </ng-template>\n </div>\n </ng-template>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { PrizmSwitcherItem } from '@prizm-ui/components';\nimport { ParamBase } from '../../../core';\n\n@Component({\n selector: 'sproc-param-switcher',\n templateUrl: './param-switcher.component.html',\n styleUrls: ['./param-switcher.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamSwitcherComponent extends ParamBase<number, number> {\n @Input() switchers: PrizmSwitcherItem[] = [];\n}\n","<div class=\"param-switcher\">\n <div *ngIf=\"label\" class=\"label\">\n <span *ngIf=\"label\" class=\"label__text\">{{ label }}</span>\n <span *ngIf=\"required\" class=\"label--required\">*</span>\n </div>\n\n <prizm-switcher [formControl]=\"control\" [switchers]=\"switchers\"></prizm-switcher>\n</div>\n","export enum ESwitcherValue {\n MONTH,\n FIRST,\n SECOND,\n THIRD,\n FOURTH,\n YEAR,\n}\n","import { PrizmSwitcherItem } from '@prizm-ui/components';\nimport { ESwitcherValue } from '../types/param-switcher-date-time-range.types';\n\nexport const SwitcherItems: PrizmSwitcherItem[] = [\n {\n id: ESwitcherValue.MONTH,\n title: 'мес',\n },\n {\n id: ESwitcherValue.FIRST,\n title: '1 кв',\n },\n {\n id: ESwitcherValue.SECOND,\n title: '2 кв',\n },\n {\n id: ESwitcherValue.THIRD,\n title: '3 кв',\n },\n {\n id: ESwitcherValue.FOURTH,\n title: '4 кв',\n },\n {\n id: ESwitcherValue.YEAR,\n title: 'год',\n },\n];\n","import { Component } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport {\n PrizmDateTimeRange,\n PrizmDay,\n PrizmDayRange,\n PrizmTime,\n PrizmTimeRange,\n} from '@prizm-ui/components';\nimport { SwitcherItems } from './consts/param-switcher-date-time-range.consts';\nimport { ESwitcherValue } from './types/param-switcher-date-time-range.types';\nimport { ParamDateTimeRangeComponent } from '../param-date-time-range/param-date-time-range.component';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { EMonth } from '../../../consts/month.consts';\n\n@Component({\n selector: 'sproc-param-switcher-date-time-range',\n templateUrl: './param-switcher-date-time-range.component.html',\n styleUrls: ['./param-switcher-date-time-range.component.less'],\n})\nexport class ParamSwitcherDateTimeRangeComponent extends ParamDateTimeRangeComponent {\n protected switcherControl = new FormControl<ESwitcherValue | null>(null);\n protected switchers = SwitcherItems;\n\n public override onInit(): void {\n super.onInit();\n this._subscribeOnSwitcher();\n }\n\n public override afterViewInit(): void {\n super.afterViewInit();\n this.switcherControl.setValue(ESwitcherValue.MONTH);\n }\n\n private _subscribeOnSwitcher(): void {\n this.switcherControl.valueChanges\n .pipe(takeUntilDestroyed(this.dr))\n .subscribe((switcherValue) => {\n const now = new Date();\n const year = now.getFullYear();\n const month: EMonth = now.getMonth();\n\n let controlValue: PrizmDateTimeRange | null = null;\n\n if (switcherValue === ESwitcherValue.MONTH) {\n controlValue = this._calcMonthRange(year, month);\n } else if (switcherValue === ESwitcherValue.FIRST) {\n controlValue = this._calcFirstQuarterRange(year);\n } else if (switcherValue === ESwitcherValue.SECOND) {\n controlValue = this._calcSecondQuarterRange(year);\n } else if (switcherValue === ESwitcherValue.THIRD) {\n controlValue = this._calcThirdQuarterRange(year);\n } else if (switcherValue === ESwitcherValue.FOURTH) {\n controlValue = this._calcFourthQuarterRange(year);\n } else if (switcherValue === ESwitcherValue.YEAR) {\n controlValue = this._calcYearRange(year);\n }\n\n this.control.setValue(controlValue);\n });\n }\n\n private _calcMonthRange(year: number, month: EMonth): PrizmDateTimeRange {\n const from = new Date(year, month, 1);\n const to = new Date(year, month);\n to.setMonth(to.getMonth() + 1);\n to.setMilliseconds(to.getMilliseconds() - 1);\n\n return new PrizmDateTimeRange(\n new PrizmDayRange(PrizmDay.fromLocalNativeDate(from), PrizmDay.fromLocalNativeDate(to)),\n new PrizmTimeRange(PrizmTime.fromLocalNativeDate(from), PrizmTime.fromLocalNativeDate(to))\n );\n }\n\n private _calcFirstQuarterRange(year: number): PrizmDateTimeRange {\n const from = new Date(year, EMonth.JAN, 1);\n const to = new Date(year, EMonth.MAR);\n to.setMonth(to.getMonth() + 1);\n to.setMilliseconds(to.getMilliseconds() - 1);\n\n return new PrizmDateTimeRange(\n new PrizmDayRange(PrizmDay.fromLocalNativeDate(from), PrizmDay.fromLocalNativeDate(to)),\n new PrizmTimeRange(PrizmTime.fromLocalNativeDate(from), PrizmTime.fromLocalNativeDate(to))\n );\n }\n\n private _calcSecondQuarterRange(year: number): PrizmDateTimeRange {\n const from = new Date(year, EMonth.APR, 1);\n const to = new Date(year, EMonth.JUN);\n to.setMonth(to.getMonth() + 1);\n to.setMilliseconds(to.getMilliseconds() - 1);\n\n return new PrizmDateTimeRange(\n new PrizmDayRange(PrizmDay.fromLocalNativeDate(from), PrizmDay.fromLocalNativeDate(to)),\n new PrizmTimeRange(PrizmTime.fromLocalNativeDate(from), PrizmTime.fromLocalNativeDate(to))\n );\n }\n\n private _calcThirdQuarterRange(year: number): PrizmDateTimeRange {\n const from = new Date(year, EMonth.JUL, 1);\n const to = new Date(year, EMonth.SEP);\n to.setMonth(to.getMonth() + 1);\n to.setMilliseconds(to.getMilliseconds() - 1);\n\n return new PrizmDateTimeRange(\n new PrizmDayRange(PrizmDay.fromLocalNativeDate(from), PrizmDay.fromLocalNativeDate(to)),\n new PrizmTimeRange(PrizmTime.fromLocalNativeDate(from), PrizmTime.fromLocalNativeDate(to))\n );\n }\n\n private _calcFourthQuarterRange(year: number): PrizmDateTimeRange {\n const from = new Date(year, EMonth.OCT, 1);\n const to = new Date(year, EMonth.DEC);\n to.setMonth(to.getMonth() + 1);\n to.setMilliseconds(to.getMilliseconds() - 1);\n\n return new PrizmDateTimeRange(\n new PrizmDayRange(PrizmDay.fromLocalNativeDate(from), PrizmDay.fromLocalNativeDate(to)),\n new PrizmTimeRange(PrizmTime.fromLocalNativeDate(from), PrizmTime.fromLocalNativeDate(to))\n );\n }\n\n private _calcYearRange(year: number): PrizmDateTimeRange {\n const from = new Date(year, EMonth.JAN, 1);\n const to = new Date(year, EMonth.DEC);\n to.setMonth(to.getMonth() + 1);\n to.setMilliseconds(to.getMilliseconds() - 1);\n\n return new PrizmDateTimeRange(\n new PrizmDayRange(PrizmDay.fromLocalNativeDate(from), PrizmDay.fromLocalNativeDate(to)),\n new PrizmTimeRange(PrizmTime.fromLocalNativeDate(from), PrizmTime.fromLocalNativeDate(to))\n );\n }\n}\n","<div class=\"param-custom-template\">\n <div *ngIf=\"label\" class=\"label\">\n <span *ngIf=\"label\" class=\"label__text\">{{ label }}</span>\n <span *ngIf=\"required\" class=\"label--required\">*</span>\n </div>\n\n <prizm-switcher [switchers]=\"switchers\" [formControl]=\"switcherControl\"></prizm-switcher>\n\n <prizm-input-layout class=\"flex-shrink--zero\" size=\"s\" [forceClear]=\"forceClear\">\n <prizm-input-layout-date-time-range\n [placeholder]=\"placeholder()\"\n [timeMode]=\"timeMode\"\n [maxLength]=\"maxLength\"\n [min]=\"$any(min)\"\n [max]=\"$any(max)\"\n [formControl]=\"control\"\n ></prizm-input-layout-date-time-range>\n </prizm-input-layout>\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet } from '@angular/common';\nimport { TuiAppearance, TuiHint, TuiTextfield } from '@taiga-ui/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { MaskitoOptions } from '@maskito/core';\nimport { MaskitoDirective } from '@maskito/angular';\nimport { ParamInvalidIconComponent } from '../sub-components/param-invalid-icon/param-invalid-icon.component';\nimport { ParamTextBase } from '../../../core/param';\n\n@Component({\n selector: 'sproc-param-text',\n templateUrl: './param-text.component.html',\n styleUrls: ['./param-text.component.less'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n NgIf,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n TuiTextfield,\n ParamInvalidIconComponent,\n ReactiveFormsModule,\n TuiHint,\n TuiTextfieldControllerModule,\n TuiAppearance,\n MaskitoDirective,\n ],\n})\nexport class ParamTextComponent extends ParamTextBase {\n public maskOptions = input<MaskitoOptions | null>(null);\n /** сообщение об ошибке для текстового поля */\n public errorMessage = input<string>('');\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n @if (errorMessage() && control.invalid) {\n <div class=\"errorMessage\">{{ errorMessage() }}</div>\n }\n </div>\n\n <tui-textfield\n tuiAppearance=\"sproc-input-appearance\"\n tuiTextfieldSize=\"m\"\n [tuiTextfieldLabelOutside]=\"true\"\n [tuiTextfieldCleaner]=\"forceClear\"\n [tuiHint]=\"value && showedValue !== '-' ? hintContent : undefined\"\n >\n <input\n tuiTextfield\n [formControl]=\"control\"\n [maskito]=\"maskOptions()\"\n [placeholder]=\"placeholder()\"\n [maxLength]=\"maxLength()\"\n />\n <div class=\"textfield-icons-container\">\n @if (isInvalidAndNotPristine) {\n <sproc-param-invalid-icon></sproc-param-invalid-icon>\n }\n </div>\n </tui-textfield>\n\n <ng-template #hintContent> {{ showedValue }} </ng-template>\n </div>\n </ng-template>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TuiAppearance, TuiHint, TuiTextfield } from '@taiga-ui/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { TuiTextarea, TuiTextareaLimit } from '@taiga-ui/kit';\nimport { ParamInvalidIconComponent } from '../sub-components/param-invalid-icon/param-invalid-icon.component';\nimport { ParamTextBase } from '../../../core/param';\n\n@Component({\n selector: 'sproc-param-textarea',\n templateUrl: './param-textarea.component.html',\n styleUrls: ['./param-textarea.component.less'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n TuiTextfield,\n ParamInvalidIconComponent,\n ReactiveFormsModule,\n TuiHint,\n TuiTextfieldControllerModule,\n TuiAppearance,\n TuiTextarea,\n TuiTextareaLimit,\n ],\n})\nexport class ParamTextareaComponent extends ParamTextBase {\n /** Минимальное кол-во строк в инпуте */\n public min = input(6);\n /** Максимальное кол-во строк в инпуте */\n public max = input(6);\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n @switch (paramStyle) {\n @case ('filter') {\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n }\n @default {\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n }\n }\n }\n <div class=\"value\">\n <span [tuiHint]=\"value && showedValue !== '-' ? showedValue : undefined\">{{\n showedValue\n }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n <div class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n </div>\n }\n <tui-textfield\n tuiAppearance=\"sproc-input-appearance\"\n tuiTextfieldSize=\"m\"\n [tuiTextfieldLabelOutside]=\"true\"\n [tuiTextfieldCleaner]=\"forceClear\"\n [tuiHint]=\"value && showedValue !== '-' ? hintContent : undefined\"\n >\n <textarea\n tuiTextarea\n tuiTextfieldSize=\"m\"\n [formControl]=\"control\"\n [max]=\"max()\"\n [min]=\"min()\"\n [maxLength]=\"maxLength()\"\n [limit]=\"maxLength()\"\n [placeholder]=\"placeholder()\"\n ></textarea>\n <div class=\"textfield-icons-container\">\n @if (isInvalidAndNotPristine) {\n <sproc-param-invalid-icon></sproc-param-invalid-icon>\n }\n </div>\n </tui-textfield>\n\n <ng-template #hintContent> {{ showedValue }} </ng-template>\n </div>\n </ng-template>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { ParamBase } from '../../../core/param/param-base';\nimport { TuiSizeM, TuiSizeS } from '@taiga-ui/core';\n\n@Component({\n selector: 'sproc-param-toggle',\n templateUrl: './param-toggle.component.html',\n styleUrls: ['./param-toggle.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamToggleComponent extends ParamBase<boolean, boolean> {\n public override buildShowedValue = input((value: boolean): string => (value ? 'Да' : 'Нет'));\n public size = input<TuiSizeS | TuiSizeM>('s');\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit empty-switcher\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n </div>\n\n <input\n tuiSwitch\n type=\"checkbox\"\n [size]=\"size()\"\n class=\"card-toggle-button\"\n [formControl]=\"control\"\n />\n </div>\n </ng-template>\n</ng-container>\n","import { ParamTreeService } from '../services/param-tree.service';\nimport { ITreeNode } from '../types/param-tree.types';\n\nexport const TREE_LOADING_NODE: ITreeNode = { name: 'LOADING' };\n\nexport const DEBOUNCE_TIME_FOR_SYNC_NEXT_VALUES = 250;\n\nexport const notEmpty: (children?: ITreeNode[]) => boolean = (children) =>\n !!children && children.length > 0 && children[0] !== TREE_LOADING_NODE;\n\nfunction getCurrentChildren<T>(node: ITreeNode<T>, service: ParamTreeService<T>): ITreeNode<T>[] {\n const serviceChildren = service.getChildren(node);\n if (notEmpty(serviceChildren)) {\n return serviceChildren;\n }\n\n return [];\n}\n\nexport function treeNodesFlatten<T>(\n node: ITreeNode<T>,\n service: ParamTreeService<T>\n): ITreeNode<T>[] {\n const children = getCurrentChildren(node, service);\n const flattenedChildren: ITreeNode<T>[] = [node];\n\n for (const child of children) {\n const flattened = treeNodesFlatten<T>(child, service);\n flattenedChildren.push(...flattened);\n }\n\n return flattenedChildren;\n}\n\nexport function updatesCheckedNodesEqual<T>(\n prev: ITreeNode<T>[] | undefined,\n curr: ITreeNode<T>[] | undefined,\n service: ParamTreeService<T>\n): boolean {\n if (!prev && !curr) {\n return true;\n }\n\n if (!prev || !curr) {\n return false;\n }\n\n if (prev.length !== curr.length) {\n return false;\n }\n\n for (const [i] of prev.entries()) {\n if (!service.equals(prev[i], curr[i])) {\n return false;\n }\n }\n\n return true;\n}\n","import { InjectionToken } from '@angular/core';\nimport { SmaTreeLoader } from '../types/param-tree.types';\n\nexport const TREE_LOADER = new InjectionToken<SmaTreeLoader<unknown>>('SMA_TREE_LOADER');\n","import { DestroyRef, inject, Injectable, signal } from '@angular/core';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n debounceTime,\n EMPTY,\n expand,\n filter,\n from,\n iif,\n map,\n mergeMap,\n Observable,\n of,\n Subject,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport { TUI_TREE_LOADING, TUI_TREE_START } from '@taiga-ui/kit';\nimport { startWith } from 'rxjs/operators';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ILoadConfig, ITreeNode, SmaTreeLoader } from '../types/param-tree.types';\nimport { TREE_LOADER } from '../tokens/param-tree.tokens';\nimport { just } from '../../../../utils';\nimport { DEBOUNCE_TIME_FOR_SYNC_NEXT_VALUES } from '../consts/param-tree.consts';\n\n@Injectable()\nexport class ParamTreeService<T> {\n private readonly _loading = inject<ITreeNode<T>>(TUI_TREE_LOADING);\n private readonly _start$ = inject<ITreeNode<T>>(TUI_TREE_START, { optional: true });\n private readonly _loader = inject<SmaTreeLoader<ITreeNode<T>>>(TREE_LOADER);\n private readonly _destroyRef = inject(DestroyRef);\n\n private readonly _loaderNode$ = new Subject<ITreeNode<T>>();\n private readonly _defaultNodeOpenedState$ = new BehaviorSubject<boolean | undefined>(undefined);\n private readonly _lastCheckedNode$ = new BehaviorSubject<ITreeNode<T> | null>(null);\n private readonly _load$ = new Subject<ILoadConfig<T>>();\n private readonly _parentChildrenMap = new Map<ITreeNode<T>, ITreeNode<T>[]>([\n [this._loading, []],\n ]);\n private readonly _nodes$ = new BehaviorSubject<ITreeNode<T>[]>([]);\n private readonly _loadedChildren$ = new Subject<ITreeNode<T>[]>();\n\n public readonly defaultNodeOpenedState$ = this._defaultNodeOpenedState$.asObservable();\n public readonly lastCheckedNode$ = this._lastCheckedNode$.asObservable();\n public readonly loaderNode$ = this._loaderNode$.asObservable();\n\n public readonly openedNodesState = signal(new Map<ITreeNode<T>, boolean>());\n public readonly checkedNodesState = signal(new Map<ITreeNode<T>, boolean | null>());\n\n private _firstLevelNodes: ITreeNode<T>[] = this._start$ ? [this._start$] : [];\n private _firstLevelNodesLoaded = false;\n\n public readonly nodes$ = this._nodes$.asObservable();\n\n constructor() {\n this._load$\n .pipe(\n mergeMap((load) =>\n this._load(load.node, !load.config?.initial).pipe(\n map((firstLevelNodes) => ({ load, firstLevelNodes }))\n )\n ),\n tap(({ load: { config }, firstLevelNodes }) => {\n if (config?.initial) {\n this._firstLevelNodes = firstLevelNodes ?? [];\n }\n }),\n mergeMap(({ load }) =>\n iif(() => !!load.config?.opened, this._recursiveLoad(load.node), just())\n ),\n map(() => this._firstLevelNodes),\n startWith([this._loading]),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((nodes) => {\n this._nodes$.next(nodes);\n });\n\n combineLatest([this.loaderNode$, this.defaultNodeOpenedState$])\n .pipe(debounceTime(DEBOUNCE_TIME_FOR_SYNC_NEXT_VALUES), takeUntilDestroyed(this._destroyRef))\n .subscribe(([loader, opened]) => {\n this.loadFirstLevelNodes(loader, opened);\n });\n }\n\n private _recursiveLoad(startedNode: ITreeNode<T>) {\n return of(startedNode).pipe(\n expand((node) => {\n if (this.hasChildren(node)) {\n return this._load(node).pipe(\n switchMap((children) => from(children)),\n catchError(() => EMPTY)\n );\n }\n\n if (node.children) {\n return from(node.children);\n }\n\n return EMPTY;\n })\n );\n }\n\n public loadFirstLevelNodes(node: ITreeNode<T>, opened: boolean = true): void {\n if (!this._firstLevelNodesLoaded) {\n this._load$.next({ node, config: { initial: true, opened } });\n this._firstLevelNodesLoaded = true;\n }\n }\n\n private _load(node: ITreeNode<T>, setChildren = true): Observable<ITreeNode<T>[]> {\n return this._loader.loadChildren(node).pipe(\n tap((children) => {\n if (setChildren) {\n for (const child of children) {\n child.parent = node;\n }\n node.children = children;\n this._parentChildrenMap.set(node, children);\n this._loadedChildren$.next(children);\n }\n\n const childfree = [node, ...children].filter((item) => !this.hasChildren(item));\n for (const item of childfree) {\n this._parentChildrenMap.set(item, []);\n }\n })\n );\n }\n\n public loadChildren(node: ITreeNode<T>): Observable<ITreeNode<T>[]> {\n const result = this._loadedChildren$.asObservable().pipe(\n filter(([firstChild]) => firstChild?.parent === node),\n take(1)\n );\n const children = this.getChildren(node);\n\n if (children && children[0] !== this._loading) {\n return of(children);\n }\n\n this._parentChildrenMap.set(node, [this._loading]);\n this._load$.next({ node });\n\n return result;\n }\n\n public getChildren(node: ITreeNode<T>): ITreeNode<T>[] {\n return this._parentChildrenMap.get(node) || [this._loading];\n }\n\n public hasChildren(node: ITreeNode<T>): boolean {\n return this._loader.hasChildren(node);\n }\n\n public getTopLevelNodes(): ITreeNode<T>[] {\n return this._firstLevelNodes;\n }\n\n public setLoaderNode(loaderNode: ITreeNode<T>, defaultNodeOpenedState?: boolean): void {\n this._loaderNode$.next(loaderNode);\n this._defaultNodeOpenedState$.next(defaultNodeOpenedState);\n }\n\n public setLastCheckedNode(node: ITreeNode<T> | null): void {\n this._lastCheckedNode$.next(node);\n }\n\n public equals(node1: ITreeNode<T>, node2: ITreeNode<T>): boolean {\n return this._loader.equals(node1, node2);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { ITreeNode, SmaTreeLoader } from '../types/param-tree.types';\n\n@Injectable()\nexport class SyncTreeLoaderService<T> implements SmaTreeLoader<ITreeNode<T>> {\n public loadChildren({ children }: ITreeNode<T>): Observable<ITreeNode<T>[]> {\n return of(children ?? []);\n }\n\n public hasChildren({ haveChildren }: ITreeNode<T>): boolean {\n return !!haveChildren;\n }\n\n public equals(value1: ITreeNode<T>, value2: ITreeNode<T>): boolean {\n return value1 === value2;\n }\n}\n","import { ITreeNode } from '../types/param-tree.types';\n\ninterface IArgs<T> {\n item: T;\n children?: ITreeNode<T>[];\n}\n\nexport function transformItemToNode<T extends Record<string, any>>({\n item,\n children,\n}: IArgs<T>): ITreeNode<T> {\n return {\n name: item['name'],\n haveChildren: !!children,\n children: children || [],\n data: item,\n };\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n output,\n TemplateRef,\n untracked,\n} from '@angular/core';\nimport { TuiCheckbox, TuiTree } from '@taiga-ui/kit';\nimport { TuiLabel, TuiLoader } from '@taiga-ui/core';\nimport { FormsModule } from '@angular/forms';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { EMPTY, expand, filter, from, of, switchMap, take, takeUntil, tap } from 'rxjs';\nimport { ChildrenHandlerType, ITreeNode } from './types/param-tree.types';\nimport { ParamTreeService } from './services/param-tree.service';\nimport {\n TREE_LOADING_NODE,\n treeNodesFlatten,\n updatesCheckedNodesEqual,\n} from './consts/param-tree.consts';\n\n/** Компонент иерархического списка */\n@Component({\n selector: 'sproc-param-tree',\n standalone: true,\n imports: [TuiTree, TuiLabel, TuiCheckbox, FormsModule, AsyncPipe, TuiLoader, NgTemplateOutlet],\n templateUrl: './param-tree.component.html',\n styleUrl: './param-tree.component.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamTreeComponent<T> {\n /**\n * Режим выбора нескольких значений\n *\n * @default Выбор единственного узла */\n public multi = input(false);\n /** Задать выбранные узлы */\n public checkedNodes = input<ITreeNode<T>[]>([]);\n /** Кастомный шаблон узла */\n public nodeTemplate = input<TemplateRef<any> | null>(null);\n\n /** Выбранные узлы верхнего уровня */\n public readonly selectedNodesChange = output<ITreeNode<T>[]>();\n\n private readonly _treeService = inject(ParamTreeService<T>);\n private readonly _dr = inject(DestroyRef);\n\n protected readonly defaultNodeOpenedState = toSignal(this._treeService.defaultNodeOpenedState$);\n protected readonly openedNodesState = this._treeService.openedNodesState;\n protected readonly checkedNodesState = this._treeService.checkedNodesState;\n\n private readonly _lastCheckedNode = toSignal(this._treeService.lastCheckedNode$, {\n initialValue: null,\n });\n private readonly updatesCheckedNodes = computed(() => this.checkedNodes(), {\n equal: (prev, curr) => updatesCheckedNodesEqual(prev, curr, this._treeService),\n });\n\n protected readonly treeNodes$ = this._treeService.nodes$;\n\n protected readonly TREE_LOADER = TREE_LOADING_NODE;\n protected readonly childrenHandler: ChildrenHandlerType<T> = (node) =>\n this._treeService.getChildren(node);\n\n constructor() {\n effect(() => {\n const nodes = this.updatesCheckedNodes();\n\n untracked(() => {\n if (nodes.length === 0) {\n this.checkedNodesState.set(new Map<ITreeNode<T>, boolean | null>());\n } else {\n this._tryToSetNodesRecursive(nodes);\n }\n });\n });\n }\n\n protected getValue(\n currentNode: ITreeNode<T>,\n state: Map<ITreeNode<T>, boolean | null>\n ): boolean | null {\n return this.multi()\n ? this._isSelectedMulti(currentNode, state)\n : this._isSelectedSingle(currentNode, state);\n }\n\n private _isSelectedMulti(\n currentNode: ITreeNode<T>,\n state: Map<ITreeNode<T>, boolean | null>\n ): boolean | null {\n let result: boolean | null = null;\n const flattenNodes = treeNodesFlatten<T>(currentNode, this._treeService);\n const firstNode = flattenNodes[0];\n\n if (firstNode) {\n result = !!state.get(firstNode);\n }\n\n for (const node of flattenNodes) {\n if (result !== !!state.get(node)) {\n const currentLevelNode = flattenNodes.filter((value) => value.parent === node.parent);\n\n return currentLevelNode.every((value) => !!state.get(value)) ? true : null;\n }\n }\n\n return result;\n }\n\n private _isSelectedSingle(\n currentNode: ITreeNode<T>,\n state: Map<ITreeNode<T>, boolean | null>\n ): boolean | null {\n const lastNode = this._lastCheckedNode();\n const flattenNodes = treeNodesFlatten<T>(currentNode, this._treeService);\n const isLinkedNode = flattenNodes.some((node) => !!state.get(node));\n\n if (!isLinkedNode || !lastNode) {\n return false;\n }\n\n return lastNode === currentNode ||\n this._isDeepParent(currentNode, lastNode) ||\n this._isDeepChild(currentNode, lastNode)\n ? true\n : null;\n }\n\n private _isDeepParent(parent: ITreeNode<T>, child: ITreeNode<T>): boolean {\n if (!child.parent) {\n return false;\n }\n\n if (parent === child.parent && parent.children!.length === 1) {\n return true;\n }\n\n if (child.parent.children && child.parent.children.length !== 1) {\n return false;\n }\n\n return this._isDeepParent(parent, child.parent);\n }\n\n private _isDeepChild(child: ITreeNode<T>, parent: ITreeNode<T>): boolean {\n if (!parent.children || parent.children.length === 0) {\n return false;\n }\n\n for (const node of parent.children) {\n if (node === child) {\n return true;\n }\n\n if (this._isDeepChild(child, node)) {\n return true;\n }\n }\n\n return false;\n }\n\n protected onToggle(currentNode: ITreeNode<T>): void {\n this._treeService\n .loadChildren(currentNode)\n .pipe(takeUntilDestroyed(this._dr))\n .subscribe((children) => {\n const parent = children?.[0]?.parent;\n\n if (parent && this.checkedNodesState().get(parent)) {\n for (const child of children) {\n this.checkedNodesState().set(child, true);\n }\n }\n });\n }\n\n protected onChecked = (currentNode: ITreeNode<T>, check: boolean) => {\n this._treeService.setLastCheckedNode(check ? currentNode : null);\n const flattenNodes = treeNodesFlatten<T>(currentNode, this._treeService);\n\n if (this.multi()) {\n for (const node of flattenNodes) {\n this.checkedNodesState().set(node, check);\n }\n } else {\n this.checkedNodesState().clear();\n\n for (const node of flattenNodes) {\n this.checkedNodesState().set(node, true);\n }\n }\n\n this._updateCheckedNodes();\n };\n\n private _updateCheckedNodes(options?: { emitEvent: boolean }): void {\n const topLevelNodes = this._treeService.getTopLevelNodes();\n const state = new Map<ITreeNode<T>, boolean | null>();\n this._calcCheckedStateNodes(topLevelNodes, state);\n this.checkedNodesState.set(state);\n\n if (options?.emitEvent !== false) {\n this.selectedNodesChange.emit(this._findFullySelectedNodes(topLevelNodes));\n }\n }\n\n private _findFullySelectedNodes(nodes: ITreeNode<T>[]): ITreeNode<T>[] {\n const fullySelectedNodes: ITreeNode<T>[] = [];\n\n for (const node of nodes) {\n const checked = this.getValue(node, this.checkedNodesState());\n\n if (checked) {\n fullySelectedNodes.push(node);\n } else if (checked === null) {\n const children = this._treeService.getChildren(node);\n const fullySelectedChildren = this._findFullySelectedNodes(children);\n fullySelectedNodes.push(...fullySelectedChildren);\n }\n }\n\n return fullySelectedNodes;\n }\n\n private _calcCheckedStateNodes(\n nodes: ITreeNode<T>[],\n state: Map<ITreeNode<T>, boolean | null>\n ): void {\n for (const node of nodes) {\n const checked = this.getValue(node, this.checkedNodesState());\n\n if (checked !== false) {\n state.set(node, checked);\n const children = this._treeService.getChildren(node);\n this._calcCheckedStateNodes(children, state);\n }\n }\n }\n\n private _tryToSetNodesRecursive(newNodes: ITreeNode<T>[]): void {\n const topLevelNodes = this._treeService.getTopLevelNodes();\n const searchNodesCompleteState = new Map(newNodes.map((newNode) => [newNode, false]));\n const allComplete = (state: Map<ITreeNode<T>, boolean>) => [...state.values()].every(Boolean);\n const analogNodes: ITreeNode<T>[] = [];\n\n from(topLevelNodes)\n .pipe(\n expand((node) =>\n this._treeService.hasChildren(node)\n ? this._treeService.loadChildren(node).pipe(switchMap((children) => from(children)))\n : EMPTY\n ),\n tap((node) => {\n const foundNode = newNodes.find((newNode) => this._treeService.equals(node, newNode));\n\n if (foundNode) {\n searchNodesCompleteState.set(foundNode, true);\n analogNodes.push(node);\n }\n }),\n filter(() => allComplete(searchNodesCompleteState)),\n take(1),\n // eslint-disable-next-line rxjs/no-unsafe-takeuntil\n takeUntil(of(null).pipe(filter(() => allComplete(searchNodesCompleteState)))),\n takeUntilDestroyed(this._dr)\n )\n .subscribe({\n complete: () => {\n for (const node of analogNodes) {\n this.onChecked(node, true);\n }\n },\n });\n }\n}\n","<div class=\"tree-custom-class__container\">\n @for (node of treeNodes$ | async; track node) {\n @if (node === TREE_LOADER) {\n <tui-loader [showLoader]=\"true\" [overlay]=\"true\" size=\"s\"></tui-loader>\n } @else {\n @if (defaultNodeOpenedState() === undefined) {\n <tui-tree\n class=\"tui_tree--not-collapsed\"\n [value]=\"node\"\n [content]=\"contentTemplate\"\n [childrenHandler]=\"childrenHandler\"\n >\n </tui-tree>\n } @else {\n <tui-tree\n [value]=\"node\"\n [content]=\"contentTemplate\"\n [childrenHandler]=\"childrenHandler\"\n [tuiTreeController]=\"!!defaultNodeOpenedState()\"\n [map]=\"openedNodesState()\"\n (toggled)=\"onToggle($event)\"\n >\n </tui-tree>\n }\n }\n }\n</div>\n\n<ng-template #contentTemplate let-node>\n @let isChecked = checkedNodesState().get(node);\n\n @if (node === TREE_LOADER) {\n <tui-loader [showLoader]=\"true\" [overlay]=\"true\" size=\"s\"></tui-loader>\n } @else if (nodeTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplate()\"\n [ngTemplateOutletContext]=\"{ node, isChecked, onChecked }\"\n ></ng-container>\n } @else {\n <label tuiLabel class=\"tree-custom-class__label-checkbox-container\">\n <input\n size=\"s\"\n tuiCheckbox\n type=\"checkbox\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"onChecked(node, $event)\"\n />\n <small>{{ node.name }}</small>\n </label>\n }\n</ng-template>\n","import { Component, effect, inject, Injector, input, signal } from '@angular/core';\nimport { TuiAppearance, TuiHint, TuiIcon, TuiTextfield } from '@taiga-ui/core';\nimport { TUI_TREE_LOADING, TuiChevron, TuiComboBox } from '@taiga-ui/kit';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { ITreeNode } from '../param-tree/types/param-tree.types';\nimport { ParamTreeComponent } from '../param-tree/param-tree.component';\nimport { ParamTreeService } from '../param-tree/services/param-tree.service';\nimport { TREE_LOADING_NODE } from '../param-tree/consts/param-tree.consts';\nimport { FastQueryStore } from '../../../store/fast-query-store.service';\nimport { ParamSelectBase } from '../../../core/param/param-select-base';\nimport { distinctUntilChangedJSONs } from '../../../utils';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport type InputTreeSelectSavedValue<T> = ITreeNode<T> & { [key: string]: any };\n\n/** Компонент выбора единственного значения из иерархического списка */\n@Component({\n selector: 'sproc-param-tree-multi-select',\n standalone: true,\n imports: [\n NgTemplateOutlet,\n TuiIcon,\n TuiHint,\n ReactiveFormsModule,\n TuiTextfieldControllerModule,\n ParamTreeComponent,\n TuiAppearance,\n TuiTextfield,\n TuiChevron,\n TuiComboBox,\n ],\n templateUrl: './param-tree-multi-select.component.html',\n styleUrl: './param-tree-multi-select.component.less',\n providers: [\n ParamTreeService,\n { provide: TUI_TREE_LOADING, useValue: TREE_LOADING_NODE },\n FastQueryStore,\n ],\n})\nexport class ParamTreeMultiSelectComponent<T> extends ParamSelectBase<\n ITreeNode<T>[],\n InputTreeSelectSavedValue<T>[]\n> {\n /** Передача загрузочного узла для загрузки начального уровня иерархического списка */\n public loaderNode = input.required<ITreeNode<T>>();\n /**\n * Возможность раскрывать/скрывать узлы иерархического списка.\n * Логическое значение - это значение узла по умолчанию (раскрыты/скрыты).\n *\n * @default Без указания параметра (или значении null) - все узлы раскрыты без возможности изменять состояние.\n * */\n public defaultNodeOpenedState = input<boolean>();\n public stringify = input<(item: ITreeNode<T>) => string>((item) => String(item.name));\n public shortPickedLength = input(true);\n\n public override readonly buildShowedValue = input(\n (values: ITreeNode[]): string => values?.map((v) => v.name).join(',\\n') ?? '-'\n );\n public override placeholder = input('Выберите значения');\n\n private readonly _treeService = inject(ParamTreeService);\n\n protected readonly checkedNodes = signal<ITreeNode<T>[]>([]);\n\n constructor(injector: Injector) {\n super(injector);\n effect(() => {\n this._treeService.setLoaderNode(this.loaderNode(), this.defaultNodeOpenedState());\n });\n }\n\n protected override afterViewInit(): void {\n this._subscribeForUpdateCheckedNodes();\n }\n\n private _subscribeForUpdateCheckedNodes(): void {\n this.control.valueChanges\n .pipe(distinctUntilChangedJSONs(), takeUntilDestroyed(this.dr))\n .subscribe((value) => {\n this.checkedNodes.set(value ?? []);\n });\n }\n\n protected setSelectedNodes(node: ITreeNode<T>[]): void {\n this.control.setValue(node);\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n @switch (paramStyle) {\n @case ('filter') {\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n }\n @default {\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n }\n }\n }\n <ng-container [ngTemplateOutlet]=\"value ? showedValueTemplate : emptyTemplate\">\n <ng-template #showedValueTemplate>\n @switch (paramStyle) {\n @case ('filter') {\n <pre class=\"value\">{{ showedValue }}</pre>\n }\n @default {\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n }\n }\n </ng-template>\n <ng-template #emptyTemplate>\n <span class=\"value\">-</span>\n </ng-template>\n </ng-container>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n <div class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n @if (hint) {\n <tui-icon\n icon=\"assets/ngx-register-base/icons/circle-info-empty.svg\"\n [tuiHint]=\"hint\"\n class=\"hintIcon\"\n ></tui-icon>\n }\n </div>\n }\n <tui-textfield\n tuiChevron\n tuiTextfieldSize=\"m\"\n tuiAppearance=\"sproc-input-appearance\"\n [stringify]=\"stringify()\"\n [tuiTextfieldCleaner]=\"forceClear\"\n [tuiTextfieldLabelOutside]=\"true\"\n [content]=\"valueContent\"\n >\n <input tuiComboBox [placeholder]=\"placeholder()\" [formControl]=\"control\" />\n <ng-container *tuiTextfieldDropdown [ngTemplateOutlet]=\"paramTreeTemplate\"></ng-container>\n </tui-textfield>\n <ng-template #valueContent let-list>\n {{ shortPickedLength() ? 'Выбрано: ' : null }} {{ list.length }}\n </ng-template>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #paramTreeTemplate>\n <sproc-param-tree\n [multi]=\"true\"\n [checkedNodes]=\"checkedNodes()\"\n (selectedNodesChange)=\"setSelectedNodes($event)\"\n ></sproc-param-tree>\n</ng-template>\n","import { Component, effect, inject, Injector, input, signal } from '@angular/core';\nimport { ParamTreeComponent } from '../param-tree/param-tree.component';\nimport { ITreeNode } from '../param-tree/types/param-tree.types';\nimport { TuiAppearance, TuiDropdown, TuiTextfield } from '@taiga-ui/core';\nimport { TUI_TREE_LOADING, TuiChevron, TuiSelect, } from '@taiga-ui/kit';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TREE_LOADING_NODE } from '../param-tree/consts/param-tree.consts';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ParamTreeService } from '../param-tree/services/param-tree.service';\nimport { FastQueryStore } from '../../../store/fast-query-store.service';\nimport { ParamSelectBase } from '../../../core/param/param-select-base';\nimport { distinctUntilChangedJSONs } from '../../../utils';\n\nexport type InputTreeSelectSavedValue<T> = ITreeNode<T> & { [key: string]: any };\n\n/** Компонент выбора единственного значения из иерархического списка */\n@Component({\n selector: 'sproc-param-tree-select',\n standalone: true,\n imports: [\n ParamTreeComponent,\n TuiTextfield,\n TuiSelect,\n TuiChevron,\n FormsModule,\n TuiDropdown,\n ReactiveFormsModule,\n NgTemplateOutlet,\n TuiAppearance,\n TuiTextfieldControllerModule,\n ],\n templateUrl: './param-tree-select.component.html',\n styleUrl: './param-tree-select.component.less',\n providers: [\n ParamTreeService,\n { provide: TUI_TREE_LOADING, useValue: TREE_LOADING_NODE },\n FastQueryStore,\n ],\n})\nexport class ParamTreeSelectComponent<T> extends ParamSelectBase<\n ITreeNode<T>,\n InputTreeSelectSavedValue<T>\n> {\n /** Передача загрузочного узла для загрузки начального уровня иерархического списка */\n public loaderNode = input.required<ITreeNode<T>>();\n /**\n * Возможность раскрывать/скрывать узлы иерархического списка.\n * Логическое значение - это значение узла по умолчанию (раскрыты/скрыты).\n *\n * @default Без указания параметра (или значении null) - все узлы раскрыты без возможности изменять состояние.\n * */\n public defaultNodeOpenedState = input<boolean>();\n\n public stringify = input<(item: ITreeNode<T>) => string>((item) => String(item.name));\n\n public override buildShowedValue = input((value: ITreeNode<T>): string => value?.name ?? '-');\n public override placeholder = input('Выберите значение');\n\n private readonly _treeService = inject(ParamTreeService);\n\n protected readonly checkedNodes = signal<ITreeNode<T>[]>([]);\n\n constructor(injector: Injector) {\n super(injector);\n effect(() => {\n this._treeService.setLoaderNode(this.loaderNode(), this.defaultNodeOpenedState());\n });\n }\n\n protected override afterViewInit(): void {\n this._subscribeForUpdateCheckedNodes();\n }\n\n private _subscribeForUpdateCheckedNodes(): void {\n this.control.valueChanges\n .pipe(distinctUntilChangedJSONs(), takeUntilDestroyed(this.dr))\n .subscribe((value) => {\n if (value) {\n this.checkedNodes.set([value]);\n } else {\n this.checkedNodes.set([]);\n }\n });\n }\n\n protected setSelectedNodes([node]: ITreeNode<T>[]): void {\n this.control.setValue(node ?? null);\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n @switch (paramStyle) {\n @case ('filter') {\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n }\n @default {\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n }\n }\n }\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n <div class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n </div>\n }\n <tui-textfield\n tuiChevron\n tuiTextfieldSize=\"m\"\n tuiAppearance=\"sproc-input-appearance\"\n [stringify]=\"stringify()\"\n [tuiTextfieldLabelOutside]=\"forceClear\"\n [tuiTextfieldCleaner]=\"true\"\n [tuiDropdownMaxHeight]=\"maxDropdownHeight\"\n >\n <input tuiSelect [placeholder]=\"placeholder()\" [formControl]=\"control\" />\n <ng-container *tuiTextfieldDropdown [ngTemplateOutlet]=\"paramTreeTemplate\"></ng-container>\n </tui-textfield>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #paramTreeTemplate>\n <sproc-param-tree\n [multi]=\"false\"\n [checkedNodes]=\"checkedNodes()\"\n (selectedNodesChange)=\"setSelectedNodes($event)\"\n ></sproc-param-tree>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, output } from '@angular/core';\nimport { TuiIcon } from '@taiga-ui/core';\n\n@Component({\n selector: 'sproc-param-delete-content-button',\n standalone: true,\n imports: [TuiIcon],\n templateUrl: './param-delete-content-btn.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamDeleteContentBtnComponent {\n readonly iconClicked = output<void>();\n}\n","<tui-icon\n class=\"cleaner-icon\"\n (click)=\"iconClicked.emit()\"\n icon=\"assets/ngx-register-base/icons/delete-content.svg\"\n></tui-icon>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ParamSelectComponent } from './param-select/param-select.component';\nimport { ParamMultiSelectComponent } from './param-multi-select/param-multi-select.component';\nimport { ParamDateRangeComponent } from './param-date-range/param-date-range.component';\nimport { ParamMonthComponent } from './param-month/param-month.component';\nimport { ParamMonthRangeComponent } from './param-month-range/param-month-range.component';\nimport { ParamToggleComponent } from './param-toggle/param-toggle.component';\nimport { ParamTextComponent } from './param-text/param-text.component';\nimport { ParamDateTimeRangeComponent } from './param-date-time-range/param-date-time-range.component';\nimport { ParamCustomComponent } from './param-custom/param-custom.component';\nimport { ParamSwitcherComponent } from './param-switcher/param-switcher.component';\nimport { ParamDateComponent } from './param-date/param-date.component';\nimport { ParamSwitcherDateTimeRangeComponent } from './param-switcher-date-time-range/param-switcher-date-time-range.component';\nimport { ParamDateTimeComponent } from './param-date-time/param-date-time.component';\nimport {\n TuiAppearance,\n TuiButton,\n TuiIcon,\n TuiTextfieldComponent,\n TuiTextfieldDirective,\n TuiTextfieldDropdownDirective,\n TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core';\nimport { TuiInputModule, TuiInputYearModule, TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport {\n TuiChevron,\n TuiDataListWrapperComponent,\n TuiFilterByInputPipe,\n TuiSelectDirective,\n TuiSwitch,\n} from '@taiga-ui/kit';\nimport { TuiInputSearch } from '@taiga-ui/layout';\nimport { ParamTextareaComponent } from './param-textarea/param-textarea.component';\nimport { ParamCalendarYearComponent } from './param-calendar-year/param-calendar-year.component';\nimport { FormatDatePipe } from '../../directives/date/format-date.pipe';\nimport { PrizmSharedModule } from '../../utils/prizm.shared.module';\nimport { PrizmInputMultiSelectModule } from '@prizm-ui/components';\nimport { ParamDeleteContentBtnComponent } from './sub-components/param-delete-content-icon/param-delete-content-btn.component';\nimport { ParamInvalidIconComponent } from './sub-components/param-invalid-icon/param-invalid-icon.component';\n\n@NgModule({\n declarations: [\n ParamDateRangeComponent,\n ParamDateTimeComponent,\n ParamMonthComponent,\n ParamMonthRangeComponent,\n ParamToggleComponent,\n ParamDateTimeRangeComponent,\n ParamCustomComponent,\n ParamSwitcherComponent,\n ParamSwitcherDateTimeRangeComponent,\n ParamSwitcherDateTimeRangeComponent,\n ParamCalendarYearComponent,\n ],\n imports: [\n CommonModule,\n ParamTextComponent,\n PrizmSharedModule,\n PrizmInputMultiSelectModule,\n TuiTextfieldComponent,\n TuiTextfieldDirective,\n TuiTextfieldOptionsDirective,\n TuiAppearance,\n TuiInputModule,\n TuiTextfieldControllerModule,\n TuiIcon,\n TuiButton,\n TuiChevron,\n TuiSelectDirective,\n TuiDataListWrapperComponent,\n TuiTextfieldDropdownDirective,\n TuiFilterByInputPipe,\n TuiInputSearch,\n ParamMultiSelectComponent,\n ParamSelectComponent,\n ParamDateComponent,\n TuiSwitch,\n ParamTextareaComponent,\n TuiInputYearModule,\n FormatDatePipe,\n ParamDeleteContentBtnComponent,\n ParamInvalidIconComponent,\n ],\n exports: [\n ParamSelectComponent,\n ParamMultiSelectComponent,\n ParamDateRangeComponent,\n ParamDateTimeComponent,\n ParamMonthComponent,\n ParamMonthRangeComponent,\n ParamToggleComponent,\n ParamTextComponent,\n ParamDateTimeRangeComponent,\n ParamCustomComponent,\n ParamSwitcherComponent,\n ParamDateComponent,\n ParamSwitcherDateTimeRangeComponent,\n ParamSwitcherDateTimeRangeComponent,\n ParamTextareaComponent,\n ParamCalendarYearComponent,\n ],\n})\nexport class InputsModule {}\n","export const SIDE_MENU_OPENED_WIDTH = 350;\nexport const SIDE_MENU_CLOSED_WIDTH = 48;\n\nexport enum EPageMenuIconsSrc {\n CHEVRON_RIGHT = 'assets/ngx-register-base/icons/chevron-right.svg',\n CHEVRON_UP = 'assets/ngx-register-base/icons/chevron-up.svg',\n MENU_CHEVRON = 'assets/ngx-register-base/icons/chevron-menu.svg',\n}\n","import { InjectionToken } from '@angular/core';\nimport { AbstractMenuStateService } from './sproc-page-menu.types';\n\nexport const PAGE_MENU_STATE = new InjectionToken<AbstractMenuStateService>('PAGE_MENU_STATE');\n// export const PAGE_MENU_STORE = new InjectionToken<AbstractMenuStateService>('PAGE_MENU_STATE');\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n HostBinding,\n inject,\n input,\n OnInit,\n signal,\n} from '@angular/core';\nimport {\n EPageMenuIconsSrc,\n SIDE_MENU_CLOSED_WIDTH,\n SIDE_MENU_OPENED_WIDTH,\n} from './schema/sproc-page-menu.consts';\nimport { Router, RouterLink } from '@angular/router';\nimport { AbstractMenuStateService, IClsMenuItem } from './schema/sproc-page-menu.types';\nimport { PAGE_MENU_STATE } from './schema/sproc-page-menu.tokens';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { INavigation } from './schema/sproc-page-menu.schema';\nimport { AsyncPipe, NgClass, NgOptimizedImage, NgTemplateOutlet } from '@angular/common';\nimport { animate, style, transition, trigger } from '@angular/animations';\n\n@Component({\n selector: 'sproc-page-menu',\n templateUrl: './sproc-page-menu.component.html',\n styleUrls: ['./sproc-page-menu.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [RouterLink, NgTemplateOutlet, NgClass, AsyncPipe, NgOptimizedImage],\n animations: [\n trigger('fadeInOut', [\n transition(':enter', [\n style({\n opacity: 0,\n transform: 'translateY(-10px)',\n transformOrigin: 'top',\n }),\n animate(\n '0.15s ease-in',\n style({\n opacity: 1,\n transform: 'translateY(0)',\n })\n ),\n ]),\n ]),\n ],\n})\nexport class SprocPageMenuComponent implements OnInit {\n public menuItems = input.required<IClsMenuItem[]>();\n public menuIconsSrc = input<string>('');\n public openLogoSrc = input<string>('');\n public closedLogoSrc = input<string>('');\n public findActiveSection =\n input.required<(reset: () => void, findRoute: (routeToFind: string) => void) => void>();\n\n // TODO Добавить кастомную ширину меню\n @HostBinding('style.--page-menu-opened-width')\n public readonly menuOpenedWidth = `${SIDE_MENU_OPENED_WIDTH}px`;\n @HostBinding('style.--page-menu-closed-width')\n public readonly menuClosedWidth = `${SIDE_MENU_CLOSED_WIDTH}px`;\n\n private readonly _router = inject(Router);\n private readonly _state = inject<AbstractMenuStateService>(PAGE_MENU_STATE);\n private readonly _dr = inject(DestroyRef);\n\n protected readonly toggleDisabled$ = this._state.toggleDisabled$;\n protected menuState = toSignal(this._state.isOpen$);\n protected selectedSection = signal<string>('register');\n protected expandedIds = signal<Set<string>>(new Set());\n\n protected selectedItem = computed(() =>\n this.selectedSection() ? this.codeToItem[this.selectedSection()] : null\n );\n\n // Хранит parent элементы выбранного пункта меню\n protected parentItems = computed(() => {\n const item = this.selectedItem();\n if (!item) {\n return [];\n }\n\n const parents: INavigation[] = [];\n let current = item.parent;\n while (current) {\n parents.push(current);\n current = current.parent;\n }\n return parents;\n });\n protected parentItemCodes = computed<Set<string>>(() => {\n const parentItems = this.parentItems();\n\n return new Set(parentItems.map((val) => val.code ?? ''));\n });\n\n public navigationHierarchy = signal<INavigation[]>([]);\n\n protected codeToItem: Record<string, INavigation> = {};\n\n protected isOpenServiceVersionInfo = false;\n\n protected readonly ICONS_SRC = EPageMenuIconsSrc;\n\n constructor() {\n // Построить меню и найти активную секцию\n effect(\n () => {\n const menuItems = this.menuItems();\n this.buildMenu(menuItems);\n this._findActiveSection();\n },\n { allowSignalWrites: true }\n );\n }\n\n public addMenuScrollbar(id: string): void {\n setTimeout(() => {\n // TODO Меню второго уровня есть скролл,третьего нет\n const collapsedMenu = document.querySelector<HTMLElement>(`[id=\"${id}\"]`);\n const sideMenu = collapsedMenu?.querySelector<HTMLElement>('#side-menu__subitems');\n const sideMenuLevelTwo = sideMenu?.querySelector<HTMLElement>('#side-menu__subitems');\n\n const subitem = sideMenuLevelTwo\n ? sideMenuLevelTwo.querySelectorAll('.side-menu__subitem')\n : sideMenu?.querySelectorAll('.side-menu__subitem');\n if (subitem) {\n const lastSubitem = subitem[subitem.length - 1];\n const rect = lastSubitem?.getBoundingClientRect();\n\n if (sideMenu && window.innerHeight - rect.bottom < 0) {\n // 40 тк высота плашки меню\n sideMenu.style.height = `${\n subitem.length * 40 + (window.innerHeight - rect.bottom - 1)\n }px`;\n sideMenu.style.overflowY = 'scroll';\n sideMenu.style.overflowX = 'hidden';\n }\n if (window.innerHeight - rect.bottom < 0 && sideMenuLevelTwo) {\n // 40 тк высота плашки меню\n sideMenuLevelTwo.style.height = `${\n subitem.length * 40 + (window.innerHeight - rect.bottom - 1)\n }px`;\n sideMenuLevelTwo.style.overflowY = 'scroll';\n sideMenuLevelTwo.style.overflowX = 'hidden';\n }\n }\n }, 0);\n }\n\n public ngOnInit(): void {\n this._state.isOpen$.subscribe((menuState) => {\n if (menuState) {\n this.findRoute(this.selectedSection());\n } else {\n this.collapseMenu();\n }\n });\n }\n\n protected toggleNavigation(): void {\n this._state.toggle();\n }\n\n protected toggleItem(item: INavigation): void {\n this.addMenuScrollbar(item.id || '');\n\n this.expandedIds.update((currentExpand) => {\n const code = item.code;\n const copy = new Set<string>(currentExpand);\n\n if (copy.has(code)) {\n copy.delete(code);\n } else {\n copy.clear();\n copy.add(code);\n\n const parents = this.getParents(item);\n for (const parent of parents) {\n copy.add(parent.code);\n }\n }\n\n return copy;\n });\n }\n\n protected collapseMenu(exception?: INavigation): void {\n let codes: string[] = [];\n if (exception) {\n const parents = this.getParents(exception);\n codes = [exception.code, ...parents.map((parent) => parent.code)];\n }\n\n this.expandedIds.set(new Set<string>(codes));\n }\n\n protected get isMenuOpened(): boolean {\n return this._state.isOpen;\n }\n\n protected get isMenuClosed(): boolean {\n return !this._state.isOpen;\n }\n\n protected isExternalLink(route: string | undefined): boolean {\n if (!route) {\n return false;\n }\n return /^(https?:\\/\\/|www\\.)/i.test(route);\n }\n\n protected handleNavigation(item: INavigation): void {\n if (!item.route) {\n return;\n }\n\n if (this.isExternalLink(item.route)) {\n window.open(item.route, '_blank');\n } else {\n this._router.navigate([item.route]);\n this.selectedSection.set(item.code ?? '');\n\n if (this.isMenuClosed) {\n this.collapseMenu();\n }\n }\n }\n\n protected serviceInfoOnActiveZone(active: boolean): void {\n this.isOpenServiceVersionInfo = active && this.isOpenServiceVersionInfo;\n }\n\n protected serviceInfoOnObscured(obscured: boolean): void {\n if (obscured) {\n this.isOpenServiceVersionInfo = false;\n }\n }\n\n private buildMenu(menu: IClsMenuItem[]): void {\n const sortedMenuItems = [...menu].sort((a, b) => (a.order_num ?? 0) - (b.order_num ?? 0));\n\n const menuHash: Record<string, INavigation> = {};\n for (const item of sortedMenuItems) {\n menuHash[item.id] = {\n title: item.title ?? '',\n route: item.route ?? '',\n id: item.id,\n children: [],\n code: item.code,\n icon: item.icon,\n accessedRoles: undefined,\n parent: undefined,\n };\n }\n\n const rootMenuItems: INavigation[] = [];\n\n for (const item of sortedMenuItems) {\n if (item.id_parent && menuHash[item.id_parent]) {\n const parent = menuHash[item.id_parent];\n const child = menuHash[item.id];\n child.parent = parent;\n parent.children?.push(child);\n } else {\n rootMenuItems.push(menuHash[item.id]);\n }\n }\n\n this.navigationHierarchy.set(rootMenuItems);\n\n this.codeToItem = {};\n for (const id of Object.keys(menuHash)) {\n const item = menuHash[id];\n if (item.code) {\n this.codeToItem[item.code] = item;\n }\n }\n }\n\n private findRoute(routeToFind: string): void {\n const routeItem = this.codeToItem[routeToFind];\n\n if (!routeItem) {\n return;\n }\n\n if (this.isMenuOpened) {\n this.toggleItem(routeItem);\n }\n\n this.selectedSection.set(routeItem.code ?? '');\n }\n\n private _findActiveSection(): void {\n this.findActiveSection()(this.resetSelection, this.findRoute);\n }\n\n private getParents(item: INavigation): INavigation[] {\n const parents: INavigation[] = [];\n let current = item.parent;\n\n while (current) {\n parents.push(current);\n current = current.parent;\n }\n\n return parents;\n }\n\n private resetSelection(): void {\n this.expandedIds.set(new Set<string>());\n this.selectedSection.set('');\n }\n\n private collectChildren(item: INavigation): INavigation[] {\n const result: INavigation[] = [];\n const queue: INavigation[] = item.children?.slice() ?? [];\n\n let index = 0;\n while (index < queue.length) {\n const node = queue[index];\n result.push(node);\n\n if (node.children) {\n queue.push(...node.children);\n }\n\n index += 1;\n }\n\n return result;\n }\n}\n","<section [class]=\"menuState() ? 'side-menu side-menu_opened' : 'side-menu side-menu_closed'\">\n <div class=\"side-menu__header\">\n <img\n [src]=\"menuState() ? openLogoSrc() : closedLogoSrc()\"\n alt=\"Logo Icon\"\n class=\"side-menu__header__logo\"\n />\n <img\n (click)=\"toggleNavigation()\"\n [class.disabled]=\"toggleDisabled$ | async\"\n [height]=\"16\"\n [ngClass]=\"menuState() ? 'side-menu__header__chevron_opened' : 'side-menu__header__chevron_closed'\"\n [ngSrc]=\"ICONS_SRC.MENU_CHEVRON\" [width]=\"16\" alt=\"Menu Chevron\"/>\n </div>\n\n @if (menuState()) {\n <div class=\"expanded-menu-content\">\n @for (navigation_item of navigationHierarchy(); track $index) {\n <ng-container\n *ngTemplateOutlet=\"\n menuItemOpened;\n context: { navigation_item: navigation_item, level: 0 }\n \"\n ></ng-container>\n }\n </div>\n\n <ng-content></ng-content>\n } @else {\n @for (navigation_item of navigationHierarchy(); track $index) {\n <ng-container\n *ngTemplateOutlet=\"closedMenu; context: { navigation_item: navigation_item }\"\n ></ng-container>\n }\n }\n</section>\n\n<ng-template #menuItemOpened let-level=\"level\" let-navigation_item=\"navigation_item\">\n @let isExpanded = expandedIds().has(navigation_item.code);\n @let childrenCount = navigation_item.children.length;\n @let code = navigation_item.code;\n @let route = navigation_item.code;\n @let icon = navigation_item.icon;\n @let isHighlighted = selectedSection() === code;\n\n <a\n (click)=\"childrenCount === 0 ? handleNavigation(navigation_item) : toggleItem(navigation_item)\"\n [@fadeInOut]\n [class.menu-item_selected]=\"isHighlighted\"\n [class.padding-level-0]=\"level === 0\"\n [routerLink]=\"childrenCount > 0 || isExternalLink(route) ? undefined : route\"\n [style.padding-left.px]=\"level === 0 ? 0 : 44 + level * 20\"\n class=\"menu-item\"\n >\n @if (icon) {\n <span class=\"menu-item__icon\">\n <img [alt]=\"icon\" [width]=\"16\" [height]=\"16\" [ngSrc]=\"menuIconsSrc() + icon + '.svg'\">\n </span>\n }\n <span class=\"menu-item__title\"> {{ navigation_item.title }} </span>\n @if (childrenCount > 0) {\n <img\n class=\"menu-item__chevron\"\n [class.menu-item__chevron_rotated]=\"!isExpanded\"\n [alt]=\"icon\" [width]=\"16\" [height]=\"16\"\n [ngSrc]=\"ICONS_SRC.CHEVRON_UP\">\n }\n </a>\n @if (isExpanded && childrenCount > 0) {\n @for (children of navigation_item.children ?? []; track $index) {\n <ng-container\n *ngTemplateOutlet=\"menuItemOpened; context: { navigation_item: children, level: level + 1 }\"\n ></ng-container>\n }\n }\n</ng-template>\n\n<ng-template #closedMenu let-navigation_item=\"navigation_item\">\n @let isExpanded = expandedIds().has(navigation_item.code);\n @let childrenCount = navigation_item.children.length;\n @let code = navigation_item.code;\n @let route = navigation_item.code;\n @let icon = navigation_item.icon;\n @let isHighlighted = selectedSection() === code || parentItemCodes().has(code);\n\n <div\n (mouseleave)=\"collapseMenu()\"\n [id]=\"navigation_item.id\"\n class=\"collapsed-menu-content\"\n >\n @if (icon) {\n <a\n class=\"menu-item__icon_closed\"\n [class.menu-item_selected]=\"isHighlighted\"\n (click)=\"childrenCount === 0 ? handleNavigation(navigation_item) : toggleItem(navigation_item)\"\n [routerLink]=\"childrenCount > 0 || isExternalLink(route) ? undefined : route\"\n (mouseenter)=\"toggleItem(navigation_item)\">\n <img\n [height]=\"16\"\n [width]=\"16\"\n [ngSrc]=\"menuIconsSrc() + icon + '.svg'\" alt=\"Menu Chevron\"/>\n </a>\n }\n <ng-container\n *ngTemplateOutlet=\"\n menuClosedItem;\n context: { item: navigation_item, level: 1, topPadding: 1 }\n \"\n >\n </ng-container>\n @if (isExpanded && childrenCount > 0) {\n <div class=\"static-item\">\n <span class=\"static-item__element\">\n {{ navigation_item.title }}\n </span>\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #menuClosedItem let-item=\"item\" let-level=\"level\" let-topPadding=\"topPadding\">\n @let isExpanded = expandedIds().has(item.code);\n <div [id]=\"item.id\">\n @if (isExpanded && item.children.length > 0) {\n <div\n class=\"side-menu__subitems\"\n [class.padding-level-1]=\"level === 1\"\n [style.top.px]=\"topPadding * 40\"\n id=\"side-menu__subitems\"\n >\n @for (navigation_item of item.children; track navigation_item; let index = $index) {\n @let childrenCount = navigation_item.children.length;\n @let code = navigation_item.code;\n @let route = navigation_item.code;\n @let isHighlighted = selectedSection() === code || parentItemCodes().has(code);\n <a\n class=\"side-menu__subitem\"\n [class.menu-item_selected]=\"isHighlighted\"\n (mouseenter)=\"childrenCount > 0 ? toggleItem(navigation_item) : collapseMenu(navigation_item)\"\n (click)=\"childrenCount === 0 ? handleNavigation(navigation_item) : toggleItem(navigation_item)\"\n [routerLink]=\"childrenCount > 0 || isExternalLink(route) ? undefined : route\"\n >\n <span\n [class.padding-level-1]=\"level === 1\">{{\n navigation_item.title\n }}</span>\n\n @if (childrenCount > 0) {\n <img\n class=\"chevron-right\"\n [height]=\"16\"\n [width]=\"16\"\n [ngSrc]=\"ICONS_SRC.CHEVRON_RIGHT\" alt=\"Menu Chevron\"/>\n }\n </a>\n <ng-container\n *ngTemplateOutlet=\"\n menuClosedItem;\n context: { item: navigation_item, level: level + 1, topPadding: index }\n \"\n ></ng-container>\n }\n </div>\n }\n </div>\n</ng-template>\n","import { Observable } from 'rxjs';\nimport { ScalarUUID } from 'hasura';\n\nexport interface IClsMenuItem {\n code: string;\n id: ScalarUUID;\n id_parent: string;\n route: string | null;\n title: string | null;\n icon: string | undefined;\n allowed_roles: string[] | null;\n is_deleted: boolean;\n order_num: number | null;\n children?: IClsMenuItem[];\n}\n\nexport abstract class AbstractMenuStateService {\n /**\n * Observable, отражающий текущее состояние меню (открыто / закрыто)\n */\n public abstract readonly isOpen$: Observable<boolean>;\n\n /**\n * Observable, сигнализирующий, доступно ли переключение меню\n */\n public abstract readonly toggleDisabled$: Observable<boolean>;\n\n /**\n * Текущее синхронное состояние меню\n */\n public abstract get isOpen(): boolean;\n\n /**\n * Принудительно установить состояние меню\n */\n public abstract setOpen(value: boolean): void;\n\n /**\n * Переключить состояние меню\n */\n public abstract toggle(): void;\n}\n","import { ScalarUUID } from 'hasura';\nimport { IClsMenuItem } from '../../page-menu';\n\nexport interface FlatNode {\n id: ScalarUUID;\n id_parent: ScalarUUID | null;\n title: string;\n code: string;\n route: string;\n icon: string;\n order_num: number;\n allowed_roles: string | null;\n depth: number;\n collapsed?: boolean;\n}\n\nexport const ROOT_TITLE = 'root';\n\nexport const NEW_ITEM_PREFIX = 'NEW_';\n\nexport const MIGRATION_HINT =\n 'Генерирует SQL код для миграции таблицы cls_menu_item. Генерация кода происходит на основе последней версии сохраненного меню.';\n\nexport interface IClsMenuItemResponse {\n usr_cls_menu_item: IClsMenuItem[];\n}\n\nexport type AlertAppearance = 'info' | 'negative' | 'warning' | 'positive' | 'neutral';\n\nexport interface IClsMenuItemInput {\n title: string | null;\n route: string | null;\n code: string | null;\n icon: string | null;\n order_num: number;\n allowed_roles: string[] | null;\n id_parent: ScalarUUID | null;\n}\n\nexport interface IMenuConstructorError {\n label: string;\n content: any;\n appearance: AlertAppearance;\n}\n\nexport const EMPTY_UUID = '00000000-0000-0000-0000-000000000000';\n","import { InjectionToken } from '@angular/core';\nimport { SprocAbstractMenuConstructorStore } from './sproc-abstract-menu-constructor.store';\n\nexport const MENU_CONSTRUCTOR_STORE_TOKEN = new InjectionToken<SprocAbstractMenuConstructorStore>(\n 'MENU_CONSTRUCTOR_STORE_TOKEN',\n);\n","import { Component, computed, DestroyRef, inject, OnInit, output, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n CdkDrag,\n CdkDragDrop,\n CdkDragHandle,\n CdkDragPreview,\n CdkDropList,\n} from '@angular/cdk/drag-drop';\nimport { AsyncPipe, NgForOf } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { filter } from 'rxjs';\nimport { SprocAbstractMenuConstructorStore } from './store/sproc-abstract-menu-constructor.store';\nimport {\n EMPTY_UUID,\n FlatNode,\n IClsMenuItemInput,\n IMenuConstructorError,\n MIGRATION_HINT,\n NEW_ITEM_PREFIX,\n ROOT_TITLE,\n} from './store/sproc-menu-constructor.consts';\nimport { IClsMenuItem } from '../page-menu';\nimport { MENU_CONSTRUCTOR_STORE_TOKEN } from './store/sproc-menu.tokens';\n\n@Component({\n standalone: true,\n selector: 'sproc-menu-constructor',\n templateUrl: './sproc-menu-constructor.component.html',\n styleUrls: ['./sproc-menu-constructor.component.less'],\n imports: [CdkDrag, CdkDropList, NgForOf, FormsModule, CdkDragPreview, CdkDragHandle, AsyncPipe],\n})\nexport class SprocMenuConstructorComponent implements OnInit {\n private _store = inject(MENU_CONSTRUCTOR_STORE_TOKEN);\n private _ref = inject(DestroyRef);\n\n protected ROOT_TITLE = ROOT_TITLE;\n protected loading$ = this._store.loading$;\n protected originalTree: Map<string, FlatNode> = new Map([]);\n protected MIGRATION_HINT = MIGRATION_HINT;\n private deletedIds: string[] = [];\n\n public errorMsgOutput = output<IMenuConstructorError>();\n\n // плоское представление иерархического меню\n protected flatTree = signal<FlatNode[]>([]);\n\n // ветка элементов, которая перетаскивается\n protected draggedBranch = signal<FlatNode[]>([]);\n\n // вычисляемое свойство, возвращающее только видимые (не свернутые) элементы\n protected visibleFlatTree = computed<FlatNode[]>(() => {\n const flatTree = this.flatTree();\n return this._getVisibleFrom(flatTree);\n });\n\n private _pendingRecalc = false;\n\n ngOnInit(): void {\n this._store.menuItems$\n .pipe(\n filter((arr) => Array.isArray(arr) && arr.length > 0),\n takeUntilDestroyed(this._ref)\n )\n .subscribe((value) => {\n this.flatTree.set(this._convertToFlatNode(value));\n this.originalTree = new Map(this.flatTree().map((item) => [item.id, { ...item }]));\n });\n }\n\n /**\n * Переключает состояние свернутости узла (collapse/expand)\n * После изменения создает новый массив для триггера обновления сигнала\n */\n protected toggleCollapse(node: FlatNode): void {\n node.collapsed = !node.collapsed;\n this.flatTree.set([...this.flatTree()]);\n }\n\n /**\n * Начало перетаскивания: сохраняет всю ветку узла, которую тянут\n */\n protected dragStarted(node: FlatNode): void {\n const branch = this._collectBranch(this.flatTree(), node);\n this.draggedBranch.set(branch);\n }\n\n /**\n * Завершение перетаскивания: очищает информацию о текущей ветке\n */\n protected dragEnded(): void {\n this.draggedBranch.set([]);\n }\n\n /**\n * Основная логика drag&drop при отпускании элемента\n * Определяет новую позицию узла, пересчитывает глубины и связи\n */\n protected drop(event: CdkDragDrop<FlatNode[]>): void {\n const before = [...this.flatTree()];\n const visibleBefore = this._getVisibleFrom(before);\n const prevIdx = event.previousIndex;\n const currIdx = event.currentIndex;\n\n // Получает перетаскиваемый элемент из списка видимых\n const draggedVisible = visibleBefore[prevIdx];\n if (!draggedVisible) {\n return;\n }\n\n // Находит индекс узла в полном массиве\n const start = before.findIndex((n) => n.id === draggedVisible.id);\n if (start < 0) {\n return;\n }\n\n // Собирает всю ветку, начинающуюся с перетаскиваемого узла\n const branch = this._collectBranch(before, before[start]);\n const branchIds = new Set(branch.map((n) => n.id));\n\n // Убирает ветку из исходного списка\n const full = before.filter((n) => !branchIds.has(n.id));\n\n // Определяет видимые элементы после удаления ветки\n const visible = this._getVisibleFrom(full);\n const prevVisible = visible[currIdx - 1] ?? null;\n const nextVisible = visible[currIdx] ?? null;\n\n // Индекс вставки ветки в новый список\n const insert = nextVisible ? full.findIndex((n) => n.id === nextVisible.id) : full.length;\n\n // Рассчитывает глубину вставляемой ветки в зависимости от соседей\n let targetDepth;\n if (prevVisible && nextVisible) {\n targetDepth =\n prevVisible.depth < nextVisible.depth ? prevVisible.depth + 1 : nextVisible.depth;\n } else if (prevVisible && !nextVisible) {\n targetDepth = prevVisible.depth;\n } else if (!prevVisible && nextVisible) {\n targetDepth = nextVisible.depth;\n } else {\n targetDepth = 0;\n }\n\n // Вставляет ветку в новое место\n full.splice(insert, 0, ...branch);\n // Сдвигает глубину всей ветки\n this._applyDepthShift(branch, targetDepth - branch[0].depth);\n\n // Планирует пересчет структуры дерева\n this._scheduleRecalc(full);\n }\n\n /**\n * Увеличивает глубину (depth) конкретного узла, если возможно\n */\n protected indent(node: FlatNode): void {\n const arr = [...this.flatTree()];\n const index = arr.indexOf(node);\n if (index === -1) {\n return;\n }\n\n const proposedDepth = node.depth + 1;\n // Ищет подходящего родителя с нужной глубиной\n const parentCandidate = [...arr]\n .slice(0, index)\n .reverse()\n .find((n) => n.depth === proposedDepth - 1);\n\n if (!parentCandidate) {\n return;\n }\n\n node.depth = proposedDepth;\n this._scheduleRecalc(arr);\n }\n\n /**\n * Уменьшает глубину (depth) узла + по возможности превращает его в родителя\n */\n protected outdent(node: FlatNode): void {\n const arr = [...this.flatTree()];\n const index = arr.indexOf(node);\n if (index === -1 || node.depth <= 0) {\n return;\n }\n node.depth = Math.max(0, node.depth - 1);\n this._scheduleRecalc(arr);\n }\n\n /**\n * Увеличивает глубину всей ветки узла (вместе с потомками)\n */\n protected indentBranch(node: FlatNode): void {\n const arr = [...this.flatTree()];\n const index = arr.indexOf(node);\n if (index === -1) {\n return;\n }\n const proposedDepth = node.depth + 1;\n const parentCandidate = [...arr]\n .slice(0, index)\n .reverse()\n .find((n) => n.depth === proposedDepth - 1);\n\n if (!parentCandidate) {\n return;\n }\n\n const branch = this._collectBranch(arr, node);\n this._applyDepthShift(branch, 1);\n\n this._scheduleRecalc(arr);\n }\n\n /**\n * Уменьшает глубину всей ветки узла\n */\n protected outdentBranch(node: FlatNode): void {\n const arr = [...this.flatTree()];\n const branch = this._collectBranch(arr, node);\n this._applyDepthShift(branch, -1);\n this._scheduleRecalc(arr);\n }\n\n /**\n * Проверяет, есть ли у узла дочерние элементы\n */\n protected hasChildren(node: FlatNode): boolean {\n const arr = this.flatTree();\n const idx = arr.indexOf(node);\n if (idx === -1) {\n return false;\n }\n for (let i = idx + 1; i < arr.length; i++) {\n const next = arr[i];\n if (next.depth <= node.depth) {\n break;\n }\n if (next.depth === node.depth + 1) {\n return true;\n }\n }\n return false;\n }\n\n protected save(): void {\n // Флаг для логгирования на время отладки\n const logging = false;\n\n const changedElements = this.flatTree().filter((newItem) => {\n const originalItem = this.originalTree.get(newItem.id);\n\n // Новый элемент\n if (!originalItem) {\n if (logging) {\n console.log(`Новый элемент ${newItem.title}`);\n }\n\n return true;\n }\n\n const {\n order_num: originalOrderNum,\n id_parent: originalIdParent,\n title: originalTitle,\n allowed_roles: originalRoles,\n code: originalCode,\n route: originalRoute,\n icon: originalIcon,\n } = originalItem;\n\n const {\n order_num: newOrderNum,\n id_parent: newIdParent,\n title: newTitle,\n allowed_roles: newRoles,\n code: newCode,\n route: newRoute,\n icon: newIcon,\n } = newItem;\n\n const changedFields: string[] = [];\n\n if (originalOrderNum !== newOrderNum) {\n changedFields.push(`order_num: ${originalOrderNum} → ${newOrderNum}`);\n }\n if (originalIdParent !== newIdParent) {\n changedFields.push(`id_parent: ${originalIdParent} → ${newIdParent}`);\n }\n if (originalTitle !== newTitle) {\n changedFields.push(`title: ${originalTitle} → ${newTitle}`);\n }\n if (originalCode !== newCode) {\n changedFields.push(`code: ${originalCode} → ${newCode}`);\n }\n if (originalRoute !== newRoute) {\n changedFields.push(`route: ${originalRoute} → ${newRoute}`);\n }\n if (originalIcon !== newIcon) {\n changedFields.push(`icon: ${originalIcon} → ${newIcon}`);\n }\n if (JSON.stringify(originalRoles) !== JSON.stringify(newRoles)) {\n changedFields.push(`allowed_roles: ${originalRoles} → ${newRoles}`);\n }\n\n return changedFields.length > 0;\n });\n\n const isBlank = (s: unknown): boolean => typeof s !== 'string' || s.trim() === '';\n\n const isRouteValid = ({ route, code }: FlatNode): boolean => {\n // route считается заданным, только если это непустая строка\n const hasRoute = route.trim() !== '';\n\n return !hasRoute || route === code;\n };\n\n const invalidCodeTitles: string[] = [];\n const invalidRouteTitles: FlatNode[] = [];\n\n for (const el of changedElements) {\n if (isBlank(el.code)) {\n invalidCodeTitles.push(el.title ?? '(без названия)');\n }\n\n if (!isRouteValid(el)) {\n invalidRouteTitles.push(el);\n }\n }\n\n if (invalidCodeTitles.length > 0) {\n this.errorMsgOutput.emit({\n label: 'Конструктор меню',\n appearance: 'negative',\n // eslint-disable-next-line xss/no-mixed-html\n content: `Все поля code должны быть заполнены. </br>\n Исправьте следующие поля: </br>\n ${invalidCodeTitles.map((t) => `- ${t}`).join('</br>')}\n `,\n });\n\n return;\n }\n\n if (invalidRouteTitles.length > 0) {\n this.errorMsgOutput.emit({\n label: 'Конструктор меню',\n appearance: 'negative',\n // eslint-disable-next-line xss/no-mixed-html\n content: `Все поля code должны быть равны полю route. </br>\n Исправьте следующие поля: </br>\n ${invalidRouteTitles.map((t) => `- ${t.title} (${t.code} | ${t.route})`).join('</br>')}\n `,\n });\n\n return;\n }\n\n const elRoute = (route: string): string | null => (route === '' ? null : route);\n\n const normalizeElement = (el: FlatNode): IClsMenuItemInput => ({\n title: el.title.trim(),\n route: elRoute(el.route.trim()),\n code: el.code,\n icon: el.icon,\n order_num: el.order_num,\n allowed_roles: el.allowed_roles\n ? el.allowed_roles.split(',').map((value) => value.trim())\n : null,\n id_parent: el.id_parent,\n });\n\n const objectsToSave = changedElements\n .filter(({ id }) => !id.includes(NEW_ITEM_PREFIX))\n .map((el) => ({\n _set: normalizeElement(el),\n where: { id: { _eq: el.id } },\n }));\n\n const objectsToInsert = changedElements\n .filter(({ id }) => id.includes(NEW_ITEM_PREFIX))\n .map((element) => {\n element.id = EMPTY_UUID;\n\n return normalizeElement(element);\n });\n\n const objectsToDelete = [...this.deletedIds];\n\n if (logging) {\n console.log(`Измененные элементы`, objectsToSave);\n console.log(`Новые элементы`, objectsToInsert);\n console.log('Удалённые элементы:', objectsToDelete);\n }\n\n this._store.updateMenu(objectsToSave, objectsToInsert, objectsToDelete);\n\n this.deletedIds = [];\n }\n\n protected handleFold(state: boolean): void {\n for (const element of this.flatTree()) {\n if (element.title !== ROOT_TITLE) {\n element.collapsed = state;\n }\n }\n\n this.flatTree.set([...this.flatTree()]);\n }\n\n /**\n * Удаляет один элемент из дерева.\n * Потомки становятся дочерними элементами родителя удалённого узла.\n */\n protected deleteItem(node: FlatNode): void {\n const arr = [...this.flatTree()];\n const index = arr.indexOf(node);\n if (index === -1) {\n return;\n }\n\n const parentId = node.id_parent;\n const nodeDepth = node.depth;\n\n // Находим потомков, которые были напрямую под этим узлом\n for (let i = index + 1; i < arr.length; i++) {\n const next = arr[i];\n if (next.depth <= nodeDepth) {\n break;\n }\n if (next.depth === nodeDepth + 1) {\n // потомок становится ребёнком родителя удалённого узла\n next.id_parent = parentId ?? null;\n next.depth = nodeDepth; // поднимаем на один уровень вверх\n } else if (next.depth > nodeDepth + 1) {\n // поднимаем остальные на один уровень вверх\n next.depth -= 1;\n }\n }\n\n // Удаляем сам элемент\n arr.splice(index, 1);\n\n // Если id не временный — добавляем в список на удаление\n if (!node.id.includes(NEW_ITEM_PREFIX)) {\n this.deletedIds.push(node.id);\n }\n\n this._scheduleRecalc(arr);\n }\n\n /**\n * Добавляет новый элемент в дерево.\n * По умолчанию он создаётся как дочерний элемент root.\n */\n protected addNewItem(): void {\n const arr = [...this.flatTree()];\n\n const rootNode = arr.find((n) => n.title === this.ROOT_TITLE);\n\n if (!rootNode) {\n console.error('Root элемент не найден. Новый пункт не может быть добавлен.');\n return;\n }\n\n const newNode: FlatNode = {\n id: `${NEW_ITEM_PREFIX}${crypto.randomUUID()}`,\n id_parent: rootNode.id,\n title: 'Новый пункт меню',\n route: '',\n icon: '',\n order_num: 1,\n allowed_roles: null,\n collapsed: true,\n code: '',\n depth: rootNode.depth + 1,\n };\n\n const insertIndex = arr.findIndex((n) => n.id === rootNode.id) + 1;\n arr.splice(insertIndex, 0, newNode);\n\n this._scheduleRecalc(arr);\n }\n\n /**\n * Сбрасывает текущее состояние в исходное\n */\n protected reset(): void {\n const originalMenu = structuredClone(this._store.originalMenu);\n this.flatTree.set(this._convertToFlatNode(originalMenu));\n this.deletedIds = [];\n }\n\n /**\n * Проверяет, находится ли элемент в текущей перетаскиваемой ветке\n */\n protected isDragged(node: FlatNode): boolean {\n return this.draggedBranch().some((n) => n.id === node.id);\n }\n\n /**\n * Собирает всю ветку элементов начиная с указанного узла (включая потомков)\n */\n private _collectBranch(arr: FlatNode[], root: FlatNode): FlatNode[] {\n const start = arr.indexOf(root);\n if (start < 0) {\n return [];\n }\n const branch: FlatNode[] = [{ ...root }];\n for (let i = start + 1; i < arr.length; i++) {\n const n = arr[i];\n if (n.depth > root.depth) {\n branch.push(n);\n } else {\n break;\n }\n }\n return branch;\n }\n\n /**\n * Сдвигает глубину всех элементов ветки на указанную разницу\n * Не допускает отрицательных глубин\n */\n private _applyDepthShift(branch: FlatNode[], diff: number): void {\n if (diff === 0) {\n return;\n }\n for (const n of branch) {\n n.depth = Math.max(0, n.depth + diff);\n }\n }\n\n /**\n * Преобразует иерархический JSON в плоский массив FlatNode[]\n * Сохраняет порядок элементов и их вложенность\n */\n private _convertToFlatNode(data: IClsMenuItem[]): FlatNode[] {\n // Глубокая копия, чтобы не портить оригинал\n const cloned = structuredClone(data);\n\n const map = new Map<string, IClsMenuItem>();\n const roots: IClsMenuItem[] = [];\n\n for (const item of cloned) {\n map.set(item.id, item);\n }\n\n for (const item of cloned) {\n if (item.id_parent && map.has(item.id_parent)) {\n const parent = map.get(item.id_parent)!;\n if (!parent.children) {\n parent.children = [];\n }\n parent.children.push(item);\n } else {\n roots.push(item);\n }\n }\n\n const flat: FlatNode[] = [];\n const walk = (node: IClsMenuItem, depth: number): void => {\n flat.push({\n id: node.id,\n id_parent: node.id_parent,\n title: node.title ?? '',\n route: node.route ?? '',\n icon: node.icon ?? '',\n order_num: node.order_num ?? 0,\n allowed_roles: node.allowed_roles?.join(',') ?? null,\n collapsed: node.title !== ROOT_TITLE,\n code: node.code ?? '',\n depth,\n });\n\n if (node.children?.length) {\n const sortedChildren = [...node.children].sort(\n (a, b) => (a.order_num ?? 0) - (b.order_num ?? 0)\n );\n for (const child of sortedChildren) {\n walk(child, depth + 1);\n }\n }\n };\n\n const sortedRoots = [...roots].sort((a, b) => (a.order_num ?? 0) - (b.order_num ?? 0));\n for (const root of sortedRoots) {\n walk(root, 0);\n }\n\n return flat;\n }\n\n /**\n * Возвращает список видимых элементов на основе флагов collapsed\n * Использует стек для отслеживания свернутости на каждом уровне\n */\n private _getVisibleFrom(arr: FlatNode[] | (() => FlatNode[])): FlatNode[] {\n const source = typeof arr === 'function' ? arr() : arr;\n const out: FlatNode[] = [];\n const collapsedStack: boolean[] = [];\n\n for (const n of source) {\n while (collapsedStack.length > n.depth) {\n collapsedStack.pop();\n }\n\n if (!collapsedStack.includes(true)) {\n out.push(n);\n collapsedStack[n.depth] = !!n.collapsed;\n }\n }\n\n return out;\n }\n\n /**\n * Пересчитывает order_num и id_parent у всех элементов массива\n * После перемещений поддерживает корректную структуру дерева\n * order_num назначается относительно родителя (1..N)\n */\n private _recalculateTree(arr: FlatNode[]): void {\n const parents: FlatNode[] = [];\n const childCounters = new Map<string | null, number>();\n\n for (const node of arr) {\n while (parents.length > 0 && parents[parents.length - 1].depth >= node.depth) {\n parents.pop();\n }\n\n const parent = parents.length > 0 ? parents[parents.length - 1] : null;\n node.id_parent = parent ? parent.id : null;\n\n // вычисляем порядковый номер среди братьев\n if (node.title !== ROOT_TITLE) {\n const parentId = node.id_parent ?? null;\n const currentCount = childCounters.get(parentId) ?? 1;\n node.order_num = currentCount;\n childCounters.set(parentId, currentCount + 1);\n }\n\n parents.push(node);\n }\n }\n\n /**\n * Асинхронно планирует пересчет дерева через requestAnimationFrame\n * Это предотвращает множественные лишние пересчеты при частых изменениях\n */\n private _scheduleRecalc(arr: FlatNode[]): void {\n if (this._pendingRecalc) {\n return;\n }\n\n this._pendingRecalc = true;\n requestAnimationFrame(() => {\n this._recalculateTree([...arr]);\n const current = this.flatTree();\n if (!this._arraysEqual(current, arr)) {\n this.flatTree.set([...arr]);\n }\n this._pendingRecalc = false;\n });\n }\n\n /**\n * Проверяет равенство двух массивов FlatNode по ключевым свойствам\n */\n private _arraysEqual(a: FlatNode[], b: FlatNode[]): boolean {\n if (a.length !== b.length) {\n return false;\n }\n for (const [i, element] of a.entries()) {\n if (\n element.id !== b[i].id ||\n element.depth !== b[i].depth ||\n element.order_num !== b[i].order_num\n ) {\n return false;\n }\n }\n\n return true;\n }\n}\n","<div class=\"menu-constructor\">\n <div class=\"pane editor\">\n <div class=\"pane-header\">\n <h2>Редактор меню</h2>\n <div class=\"buttons\">\n <button [disabled]=\"$any(loading$ | async)\" class=\"btn secondary\" (click)=\"addNewItem()\">\n +\n </button>\n <button [disabled]=\"$any(loading$ | async)\" class=\"btn secondary\" (click)=\"reset()\">\n Сбросить\n </button>\n <button [disabled]=\"$any(loading$ | async)\" class=\"btn primary\" (click)=\"save()\">\n Сохранить\n </button>\n <button [disabled]=\"$any(loading$ | async)\" class=\"btn primary\" (click)=\"handleFold(false)\">\n Раскрыть все элементы\n </button>\n <button [disabled]=\"$any(loading$ | async)\" class=\"btn primary\" (click)=\"handleFold(true)\">\n Скрыть все элементы\n </button>\n </div>\n </div>\n\n <div\n class=\"list-wrapper\"\n cdkDropList\n [cdkDropListData]=\"visibleFlatTree()\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListLockAxis]=\"'y'\"\n >\n @for (node of visibleFlatTree(); track node.id + '-' + node.order_num) {\n <div\n class=\"node\"\n [style.marginLeft.px]=\"node.depth * 24\"\n [class.dragged]=\"isDragged(node)\"\n cdkDrag\n (cdkDragStarted)=\"dragStarted(node)\"\n (cdkDragEnded)=\"dragEnded()\"\n >\n <div class=\"node-bar\" cdkDragHandle>\n @if (hasChildren(node)) {\n <button\n class=\"collapse-btn\"\n (click)=\"toggleCollapse(node); $event.stopPropagation()\"\n [title]=\"node.collapsed ? 'Развернуть' : 'Свернуть'\"\n >\n {{ node.collapsed ? '▶' : '▼' }}\n </button>\n }\n\n @if (node.title === ROOT_TITLE) {\n <span class=\"root-title\">Корневой элемент</span>\n } @else {\n <div class=\"left-control\">\n <span class=\"grip\">⋮⋮</span>\n <input class=\"inp title\" [(ngModel)]=\"node.title\" placeholder=\"Название\" />\n <input\n class=\"inp code\"\n [required]=\"true\"\n [(ngModel)]=\"node.code\"\n placeholder=\"code\"\n />\n <input class=\"inp route\" [(ngModel)]=\"node.route\" placeholder=\"route\" />\n <input class=\"inp icon\" [(ngModel)]=\"node.icon\" placeholder=\"icon\" />\n <input class=\"inp roles\" [(ngModel)]=\"node.allowed_roles\" placeholder=\"Роли\" />\n </div>\n\n <div class=\"depth-controls\">\n <button class=\"btn small\" (click)=\"outdent(node)\">←</button>\n <button class=\"btn small\" (click)=\"indent(node)\">→</button>\n @if (hasChildren(node)) {\n <button class=\"btn small\" (click)=\"outdentBranch(node)\">⇐</button>\n <button class=\"btn small\" (click)=\"indentBranch(node)\">⇒</button>\n }\n <button class=\"btn small\" (click)=\"deleteItem(node)\">Удалить</button>\n </div>\n }\n </div>\n\n <ng-template cdkDragPreview>\n <div class=\"drag-branch-preview\">\n <div\n class=\"preview-bar\"\n *ngFor=\"let n of draggedBranch()\"\n [style.marginLeft.px]=\"(n.depth - node.depth) * 20\"\n >\n {{ n.title }}\n </div>\n </div>\n </ng-template>\n </div>\n }\n </div>\n </div>\n</div>\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { IClsMenuItemInput } from './sproc-menu-constructor.consts';\nimport { IClsMenuItem } from '../../page-menu';\nimport { Apollo } from 'apollo-angular';\nimport { DestroyRef, Injectable } from '@angular/core';\nimport { ScalarUUID } from 'hasura';\n\nexport abstract class SprocAbstractMenuConstructorStore {\n protected abstract _menuItems$: BehaviorSubject<IClsMenuItem[]>;\n protected abstract _loading$: BehaviorSubject<boolean>;\n protected abstract _apollo: Apollo;\n protected abstract _dr: DestroyRef;\n\n public abstract menuItems$: Observable<IClsMenuItem[]>;\n public abstract loading$: Observable<boolean>;\n public abstract originalMenu: IClsMenuItem[];\n\n public abstract getMenu(): IClsMenuItem[];\n\n public abstract updateMenu(\n objectsToUpdate: {\n _set: IClsMenuItemInput;\n where: { [key: string]: any };\n }[],\n objectsToInsert?: IClsMenuItemInput[],\n idsToDelete?: ScalarUUID[]\n ): void;\n\n protected abstract setLoading(state: boolean): void;\n\n protected abstract _fetchMenu(): void;\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[cellTemplateName]',\n standalone: true,\n})\nexport class CellTemplateDirective {\n @Input() cellTemplateName!: string;\n\n constructor(public tpl: TemplateRef<any>) {}\n}\n","import { OrderBy, WhereBoolExp } from 'hasura';\n\nexport type ColumnDataTypes = 'text' | 'num' | 'checkbox' | 'icon' | 'iconSvg' | 'empty' | 'date';\n\nexport enum EColumnDataType {\n TEXT = 'text',\n NUM = 'num',\n CHECKBOX = 'checkbox',\n ICON = 'icon',\n ICON_SVG = 'iconSvg',\n DATE = 'date',\n}\n\nexport interface IColumnData {\n name: string;\n type: EColumnDataType | ColumnDataTypes;\n value?: string;\n width?: string;\n isHeadTemplate?: boolean;\n isTemplate?: boolean;\n sortable?: boolean;\n tooltipText?: string;\n textStyle?: Record<string, string>;\n rowspan?: number;\n colspan?: number;\n children?: IColumnData[];\n datePattern?: string;\n numberPipe?: string;\n svgSrc?: string;\n isCell?: boolean;\n class?: string;\n classTd?: string;\n isLoading?: boolean;\n postfix?: string;\n fixed?: boolean;\n headerStyle?: string;\n}\n\nexport type ThWidthEntry = Pick<IColumnData, 'name' | 'width'>;\n\nexport interface IHasuraQueryFilter<T extends Record<string, any>> {\n where?: WhereBoolExp<T>;\n distinct_on?: (keyof T)[];\n limit?: number;\n offset?: number;\n order_by?: OrderBy<T>;\n}\n\nexport type RegisterTableSortOptions = {\n order: RegisterTableCellSortOrder;\n id: string;\n};\nexport type RegisterTableCellSorterHandler<T> = (\n a: T,\n b: T,\n options: RegisterTableSortOptions\n) => number;\nexport type RegisterTableCellSorter<T> = {\n options: RegisterTableSortOptions;\n sorter?: RegisterTableCellSorterHandler<T>;\n};\nexport type RegisterTableCellSortOrder = 'asc' | 'desc';\n","import { ElementRef, Injectable } from '@angular/core';\nimport { Observable, distinctUntilChanged, map, mergeMap } from 'rxjs';\n\n@Injectable()\nexport class DomIntersectionService {\n createAndObserve(element: ElementRef): Observable<boolean> {\n return new Observable<IntersectionObserverEntry[]>((observer) => {\n const intersectionObserver = new IntersectionObserver((entries) => {\n observer.next(entries);\n });\n\n intersectionObserver.observe(element.nativeElement);\n\n return () => {\n intersectionObserver.disconnect();\n };\n }).pipe(\n mergeMap((entries: IntersectionObserverEntry[]) => entries),\n map((entry) => entry.isIntersecting),\n distinctUntilChanged()\n );\n }\n}\n","import { Directive, input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[headerTemplateName]',\n standalone: true,\n})\nexport class HeaderTemplateDirective {\n public headerTemplateName = input.required<string>();\n\n constructor(public tpl: TemplateRef<any>) {}\n}\n","import { inject, Injectable, InjectionToken, OnDestroy } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nexport const KEY_PRESSED = new InjectionToken<string>('KEY_PRESSED_TOKEN');\n\n@Injectable()\nexport class KeyPressedService implements OnDestroy {\n private _keyName = inject(KEY_PRESSED);\n\n private readonly _isPressed$ = new BehaviorSubject(false);\n\n public readonly isPressed$ = this._isPressed$.asObservable();\n\n constructor() {\n window.addEventListener('keydown', this._keydownListener);\n window.addEventListener('keyup', this._keyupListener);\n }\n\n public isPressed(): boolean {\n return this._isPressed$.getValue();\n }\n\n public ngOnDestroy(): void {\n this._isPressed$.complete();\n window.removeEventListener('keydown', this._keydownListener);\n window.removeEventListener('keyup', this._keyupListener);\n }\n\n private readonly _keydownListener = (event: KeyboardEvent) => {\n if (event.key === this._keyName) {\n this._isPressed$.next(true);\n }\n };\n\n private readonly _keyupListener = (event: KeyboardEvent) => {\n if (event.key === this._keyName) {\n this._isPressed$.next(false);\n }\n };\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ColumnDataTypes, EColumnDataType } from '../model/schema';\n\n@Pipe({\n name: 'classByType',\n standalone: true,\n})\nexport class ClassByTypePipe implements PipeTransform {\n transform(type: ColumnDataTypes | EColumnDataType, element: 'th' | 'td' = 'th'): string {\n let classNamePostfix = 'text';\n\n if (element === 'td') {\n if (type === EColumnDataType.CHECKBOX) {\n classNamePostfix = 'checkbox';\n } else if (type === EColumnDataType.NUM) {\n classNamePostfix = 'num';\n } else if (type === EColumnDataType.DATE) {\n classNamePostfix = 'date';\n }\n }\n\n if (type === EColumnDataType.ICON || type === EColumnDataType.ICON_SVG) {\n classNamePostfix = 'icon';\n }\n\n return `register-table__cell-${classNamePostfix}`;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'stickyColumn',\n standalone: true,\n})\nexport class StickyColumnPipe implements PipeTransform {\n transform(value: string, array: string[] | undefined): boolean {\n return array?.includes(value) ?? false;\n }\n}\n","export const CHECKBOX_SELECTOR_KEY = 'checkbox-selector';\nexport const CHECKBOX_SELECTOR_WIDTH_PX = 32;\nexport const MIN_COL_WIDTH_PX = 8;\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n} from '@angular/core';\nimport { SelectionTypes, ApplySelectionTypes } from './checkbox-selector.types';\nimport { TuiButtonLoading, TuiCheckbox, TuiInputNumber, TuiTooltip } from '@taiga-ui/kit';\nimport { TuiButton, TuiDropdown, TuiIcon, TuiTextfield } from '@taiga-ui/core';\nimport { FormsModule } from '@angular/forms';\nimport { TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { ScalarUUID } from 'hasura';\nimport { ERegisterObjectState } from '../../types';\nimport { SelectedObjectsStateService } from '../../services';\n\n@Component({\n selector: 'sproc-checkbox-selector',\n templateUrl: './checkbox-selector.component.html',\n styleUrls: ['./checkbox-selector.component.less'],\n standalone: true,\n imports: [\n TuiCheckbox,\n TuiDropdown,\n TuiTextfield,\n FormsModule,\n TuiTextfieldControllerModule,\n TuiButton,\n TuiButtonLoading,\n TuiInputNumber,\n TuiTooltip,\n TuiIcon,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CheckboxSelectorComponent {\n public totalRecords = input<number>();\n /** @deprecated используйте stateObjects */\n public selected = input(new Set<ScalarUUID>());\n public disabled = input(false);\n public loading = input<boolean | null>(false);\n public inputMaxValue = input<number | null>(null);\n\n public onApply = output<ApplySelectionTypes>();\n\n private readonly _selectedService = inject(SelectedObjectsStateService, { optional: true });\n\n protected readonly ESelectionTypes = SelectionTypes;\n\n protected isOpen = signal(false);\n protected selectedElement = signal<SelectionTypes | null>(null);\n protected inputValue = signal<number | null>(null);\n\n protected readonly inputDescription = computed(() => {\n const max = this.inputMaxValue();\n\n if (max === null) {\n return '';\n }\n\n return `Максимум для ввода - ${max}`;\n });\n\n protected stateObjects = this._selectedService?.state;\n protected stateUnfetchedObjects = this._selectedService?.stateUnfetchedObjects;\n\n constructor() {\n effect(() => {\n const loading = this.loading();\n const isOpen = this.loading();\n\n if (loading === false && isOpen) {\n untracked(() => {\n this.close();\n });\n }\n });\n }\n\n protected selectElement(newElement: SelectionTypes): void {\n this.selectedElement.update((currentElement) =>\n currentElement === newElement ? null : newElement\n );\n }\n\n protected onInputFocus(): void {\n this.selectedElement.set(SelectionTypes.COUNT);\n }\n\n protected applySelection(): void {\n let result: SelectionTypes | number | null = this.selectedElement();\n\n if (!result) {\n return;\n }\n\n if (result === SelectionTypes.COUNT) {\n result = this.inputValue();\n }\n\n this.onApply.emit(result);\n this.close();\n }\n\n protected toggle(): void {\n if (!this.disabled()) {\n this.isOpen.update((isOpen) => !isOpen);\n }\n }\n\n protected calcIndeterminate(): boolean {\n const state = this.stateObjects?.();\n\n if (state) {\n const fetchedObjects = [...state.values()];\n const selectedObjects = fetchedObjects.filter(\n (obj) => obj.state === ERegisterObjectState.SELECTED\n );\n\n const someFetchedIsNotSelected = fetchedObjects.length !== selectedObjects.length;\n const fetchedIsAll = fetchedObjects.length === this.totalRecords();\n const unfetchedAreSelected = this.stateUnfetchedObjects!() === ERegisterObjectState.SELECTED;\n\n if (selectedObjects.length > 0) {\n return someFetchedIsNotSelected || !(fetchedIsAll || unfetchedAreSelected);\n }\n\n return !fetchedIsAll && unfetchedAreSelected;\n }\n\n return this.selected().size > 0 && this.selected().size !== this.totalRecords();\n }\n\n protected calcChecked(): boolean {\n const state = this.stateObjects?.();\n\n if (state) {\n const fetchedObjects = [...state.values()];\n const selectedObjects = fetchedObjects.filter(\n (obj) => obj.state === ERegisterObjectState.SELECTED\n );\n\n const fetchedAreSelected = fetchedObjects.length === selectedObjects.length;\n const selectedIsAll = selectedObjects.length === this.totalRecords();\n const unfetchedAreSelected = this.stateUnfetchedObjects!() === ERegisterObjectState.SELECTED;\n\n return (\n selectedObjects.length > 0 && fetchedAreSelected && (selectedIsAll || unfetchedAreSelected)\n );\n }\n\n return this.selected().size > 0 && this.selected().size === this.totalRecords();\n }\n\n protected close(): void {\n if (!this.disabled()) {\n this.isOpen.set(false);\n }\n }\n\n protected inputValueChanges(value: number): void {\n this.selectedElement.set(SelectionTypes.COUNT);\n this.inputValue.set(value);\n }\n\n protected dropSelection(): void {\n this.inputValue.set(null);\n this.selectedElement.set(null);\n this.onApply.emit(null);\n this.close();\n }\n}\n","<div class=\"checkbox__container\" (click)=\"toggle(); $event.stopImmediatePropagation()\">\n @let indeterminate = calcIndeterminate();\n @let checked = calcChecked();\n\n <input\n tuiCheckbox\n size=\"s\"\n type=\"checkbox\"\n [indeterminate]=\"indeterminate\"\n [tuiDropdown]=\"dropdown\"\n [tuiDropdownManual]=\"isOpen()\"\n [checked]=\"checked\"\n />\n</div>\n\n<ng-template #dropdown>\n <section class=\"dropdown__content\" id=\"checkbox__dropdown__content\">\n @let selected = selectedElement();\n\n <span\n class=\"dropdown__element\"\n [class.dropdown__element_selected]=\"selected === ESelectionTypes.ALL\"\n (click)=\"selectElement(ESelectionTypes.ALL)\"\n >\n Выбрать все\n </span>\n <span\n class=\"dropdown__element\"\n [class.dropdown__element_selected]=\"selected === ESelectionTypes.VISIBLE\"\n (click)=\"selectElement(ESelectionTypes.VISIBLE)\"\n >\n Выбрать видимое\n </span>\n <span\n class=\"dropdown__element\"\n [class.dropdown__element_selected]=\"selected === ESelectionTypes.INVERSE\"\n (click)=\"selectElement(ESelectionTypes.INVERSE)\"\n >\n Кроме выделенного\n </span>\n <div\n class=\"dropdown__select-value\"\n [class.dropdown__element_selected]=\"selected === ESelectionTypes.COUNT\"\n >\n <span>Выбрать</span>\n <tui-textfield\n tuiTextfieldSize=\"s\"\n tuiTextfieldAppearance=\"textfield\"\n [tuiTextfieldCleaner]=\"true\"\n class=\"flex-1\"\n >\n <input\n tuiInputNumber\n placeholder=\"Введите число\"\n [max]=\"inputMaxValue()\"\n [ngModel]=\"inputValue()\"\n (ngModelChange)=\"inputValueChanges($event)\"\n (focusin)=\"onInputFocus()\"\n />\n\n @if (inputDescription()) {\n <tui-icon\n icon=\"assets/ngx-register-base/icons/circle-question-empty.svg\"\n [tuiTooltip]=\"inputDescription()\"\n />\n }\n </tui-textfield>\n </div>\n <div class=\"dropdown__footer\">\n <button\n tuiButton\n class=\"dropdown__button dropdown__button__apply\"\n size=\"m\"\n appearance=\"outline\"\n [loading]=\"loading()\"\n (click)=\"applySelection()\"\n >\n Применить\n </button>\n <button\n tuiButton\n class=\"dropdown__button dropdown__button__cancel\"\n size=\"m\"\n appearance=\"outline-grayscale\"\n (click)=\"dropSelection()\"\n >\n Отмена\n </button>\n </div>\n </section>\n</ng-template>\n","import { Directive, HostListener, input } from '@angular/core';\nimport { InputElementEvent } from '../../types';\n\n/** Ввод только числовых выражений */\n@Directive({\n standalone: true,\n selector: '[numberOnly]',\n})\nexport class NumberOnlyDirective {\n /** Разрешать пользователю вводить дробные числа (возможность использовать точку или запятую) */\n public allowFractional = input(false);\n\n @HostListener('input', ['$event'])\n public onInput(event: InputElementEvent): void {\n const element = event.target;\n let value = element.value;\n\n if (this.allowFractional()) {\n value = value.replace(/,/g, '.');\n\n value = value.replace(/[^\\d.]/g, '');\n\n // Проверяем, чтобы точка была только одна\n const parts: string[] = value.split('.');\n if (parts.length > 2) {\n value = `${parts.shift()!}.${parts.join('')}`;\n }\n } else {\n value = value.replace(/\\D/g, '');\n }\n\n if (element.value !== value) {\n element.value = value;\n }\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { StickyDirective } from './sticky.directive';\nimport { Subject } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\n\n@Injectable()\nexport class StickyRelativeService implements OnDestroy {\n public element!: HTMLElement;\n\n private readonly _changesChildren$ = new Subject<void>();\n\n private readonly _resizeObserver = new ResizeObserver(() => {\n this._changesChildren$.next();\n });\n\n public readonly changesChildren$ = this._changesChildren$.pipe(shareReplay(1));\n\n public add(item: StickyDirective): void {\n this._resizeObserver.observe(item.elRef.nativeElement);\n }\n\n public delete(item: StickyDirective): void {\n this._resizeObserver.unobserve(item.elRef.nativeElement);\n }\n\n public nextChangesChildren(): void {\n this._changesChildren$.next();\n }\n\n public ngOnDestroy(): void {\n this._resizeObserver.disconnect();\n this._changesChildren$.complete();\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n HostBinding,\n inject,\n input,\n OnChanges,\n OnDestroy,\n OnInit,\n Renderer2,\n} from '@angular/core';\nimport { filter, map, observeOn, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { StickyRelativeService } from './sticky-relative.service';\nimport { animationFrameScheduler, of, Subject } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { toPx } from '../../utils';\nimport { moveInEventLoopIteration } from '../../utils';\n\n@Directive({\n selector: '[stickyLeft], [stickyRight], [stickyTop], [stickyBottom]',\n standalone: true,\n})\nexport class StickyDirective implements OnChanges, OnDestroy, OnInit {\n @HostBinding('class.sticky-left')\n public stickyLeft = input<boolean>();\n @HostBinding('class.sticky-right')\n public stickyRight = input<boolean>();\n @HostBinding('class.sticky-top')\n public stickyTop = input<boolean>();\n @HostBinding('class.sticky-bottom')\n public stickyBottom = input<boolean>();\n public stickyRelative = input<HTMLElement | undefined>();\n public position = input('sticky');\n public stylesOnSticky = input<Record<string, unknown> | undefined>();\n\n @HostBinding('style.position')\n get applySticky(): string {\n return this.stickyLeft() || this.stickyRight() || this.stickyTop() || this.stickyBottom()\n ? this.position()\n : '';\n }\n\n public readonly elRef = inject(ElementRef);\n\n private readonly _relativeService = inject(StickyRelativeService);\n private readonly _renderer = inject(Renderer2);\n private readonly _destroyRef = inject(DestroyRef);\n\n private readonly _destroyPrevious = new Subject<void>();\n private readonly _changedSides = {\n right: true,\n left: true,\n top: true,\n bottom: true,\n };\n\n private _setActiveStyle = false;\n\n public ngOnInit(): void {\n this._relativeService.add(this);\n }\n\n public ngOnDestroy(): void {\n this._relativeService.delete(this);\n this._destroyPrevious.complete();\n }\n\n public ngOnChanges(): void {\n this._init();\n }\n\n private _init(): void {\n this._destroyPrevious.next();\n\n const parent = this.stickyRelative() ?? this._relativeService?.element;\n this._relativeService?.changesChildren$\n .pipe(\n map(() => this.elRef.nativeElement.getBoundingClientRect()),\n observeOn(animationFrameScheduler),\n filter((i) => Boolean(i.width || i.height)),\n switchMap((result) => {\n if (this.stickyRight() || this._changedSides.right) {\n this._renderer.removeStyle(this.elRef.nativeElement, 'right');\n }\n if (this.stickyLeft() || this._changedSides.left) {\n this._renderer.removeStyle(this.elRef.nativeElement, 'left');\n }\n if (this.stickyTop() || this._changedSides.top) {\n this._renderer.removeStyle(this.elRef.nativeElement, 'top');\n }\n if (this.stickyBottom() || this._changedSides.bottom) {\n this._renderer.removeStyle(this.elRef.nativeElement, 'bottom');\n }\n\n this._clearStylesIfSet();\n\n return of(result).pipe(moveInEventLoopIteration(1));\n }),\n tap(() => {\n const parentRect = parent?.getBoundingClientRect();\n const elRect = this.elRef.nativeElement.getBoundingClientRect();\n let styleRight = 0;\n\n this._setStylesIfExist();\n\n if (this.stickyLeft()) {\n const left = parentRect?.left ? elRect.left - parentRect.left : elRect.left;\n this._renderer.setStyle(this.elRef.nativeElement, 'left', toPx(left));\n this._changedSides.left = true;\n } else {\n this._changedSides.left = true;\n }\n if (this.stickyRight()) {\n styleRight = Number.parseInt(this.elRef.nativeElement.style.right || '0', 10);\n\n let right = elRect.right;\n let scrollOffset = 0;\n let diff = 0;\n if (parent) {\n scrollOffset = parent.scrollWidth - parent.clientWidth - parent.scrollLeft;\n diff = Math.abs(elRect.right - parentRect.right - scrollOffset - styleRight);\n right = Math.floor(diff);\n }\n this._renderer.setStyle(this.elRef.nativeElement, 'right', toPx(right));\n this._changedSides.right = true;\n } else {\n this._changedSides.right = true;\n }\n if (this.stickyTop()) {\n const top = parentRect?.top ? elRect.top - parentRect.top : elRect.top;\n this._renderer.setStyle(this.elRef.nativeElement, 'top', toPx(top));\n this._changedSides.top = true;\n } else {\n this._changedSides.top = true;\n }\n if (this.stickyBottom()) {\n const bottom = parentRect?.bottom ? elRect.bottom - parentRect.bottom : elRect.bottom;\n this._renderer.setStyle(this.elRef.nativeElement, 'bottom', toPx(bottom));\n this._changedSides.bottom = true;\n } else {\n this._changedSides.bottom = true;\n }\n\n this._setStylesIfExist();\n }),\n // eslint-disable-next-line rxjs/no-unsafe-takeuntil\n takeUntil(this._destroyPrevious),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n\n private _clearStylesIfSet(): void {\n if (!this._setActiveStyle) {\n return;\n }\n\n const stylesOnSticky = this.stylesOnSticky();\n const keys = stylesOnSticky && Object.keys(stylesOnSticky);\n if (!keys?.length) {\n return;\n }\n\n for (const key of keys) {\n this.elRef.nativeElement.style[key] = '';\n }\n\n this._setActiveStyle = false;\n }\n\n private _setStylesIfExist(): void {\n if (!this.stickyRight() && !this.stickyLeft() && !this.stickyBottom() && !this.stickyTop()) {\n return;\n }\n\n const stylesOnSticky = this.stylesOnSticky();\n const keys = stylesOnSticky && Object.keys(stylesOnSticky);\n if (!keys?.length) {\n return;\n }\n\n for (const key of keys) {\n this.elRef.nativeElement.style[key] = (this.stylesOnSticky()?.[key] as string) ?? '';\n }\n\n this._setActiveStyle = true;\n }\n}\n","import { DestroyRef, Directive, ElementRef, inject, input, OnInit } from '@angular/core';\nimport { StickyRelativeService } from './sticky-relative.service';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { skip } from 'rxjs';\nimport {distinctUntilChangedJSONs} from '../../utils';\n\n@Directive({\n selector: '[stickyRelative]',\n standalone: true,\n providers: [StickyRelativeService],\n})\nexport class StickyRelativeDirective implements OnInit {\n public columns = input.required<unknown[]>();\n\n private _columnsChanges$ = toObservable(this.columns).pipe(distinctUntilChangedJSONs(), skip(1));\n\n private readonly _stickyRelativeService = inject(StickyRelativeService);\n private readonly _dr = inject(DestroyRef);\n private readonly _elRef = inject(ElementRef);\n\n constructor() {\n this._columnsChanges$.pipe(takeUntilDestroyed(this._dr)).subscribe(() => {\n this._stickyRelativeService.nextChangesChildren();\n });\n }\n\n public ngOnInit(): void {\n this._stickyRelativeService.element = this._elRef.nativeElement;\n }\n}\n","import { coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n inject,\n input,\n model,\n OnDestroy,\n output,\n signal,\n} from '@angular/core';\nimport { PolymorphContent, PolymorphModule } from '@prizm-ui/components';\nimport { debounceTime, Subject } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiButton, TuiDataListDirective, TuiHint, TuiLoader } from '@taiga-ui/core';\nimport { TuiDataListWrapperComponent, TuiPagination } from '@taiga-ui/kit';\nimport { TuiComboBoxModule, TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { IPaginatorOptions, IPaginatorOutput } from './types/paginator.types';\nimport { DividerComponent } from '../divider/divider.component';\nimport { NumberOnlyDirective } from '../../directives/number/number-only.directive';\n\nexport enum SvgSrc {\n CHEVRONS_DOUBLE_LEFT = 'assets/ngx-register-base/icons/chevrons-double-left.svg',\n CHEVRONS_DOUBLE_RIGHT = 'assets/ngx-register-base/icons/chevrons-double-right.svg',\n}\n\n@Component({\n selector: 'sproc-paginator',\n imports: [\n DividerComponent,\n CommonModule,\n PolymorphModule,\n ReactiveFormsModule,\n FormsModule,\n TuiPagination,\n TuiButton,\n TuiComboBoxModule,\n TuiDataListWrapperComponent,\n TuiTextfieldControllerModule,\n TuiDataListDirective,\n TuiLoader,\n TuiHint,\n NumberOnlyDirective,\n ],\n templateUrl: './paginator.component.html',\n styleUrls: ['./paginator.component.less'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PaginatorComponent implements OnDestroy {\n public textOnPage = input<PolymorphContent>('Строк на странице');\n public totalRecords = input(0, {\n transform: (value: NumberInput) => Math.max(coerceNumberProperty(value), 0),\n });\n /** Количество видимых страниц вокруг активной страницы */\n public pageLinkSize = input(3);\n public showMoreDisabled = input(false);\n public disabled = input(false);\n /** Количество отображаемых строк на странице */\n public rows = model<NumberInput>(0);\n /** Текущая страница */\n public page = model<NumberInput>(1);\n public paginatorOptions = input<IPaginatorOptions>({\n noRowsSelector: false,\n noRowsSelectorLabel: false,\n noFilterInfo: false,\n noInfo: false,\n noPages: false,\n });\n public rowsCountOptions = input(new Array<number>());\n public selectedCounter = input(0);\n public totalNotFiltered = input(0);\n public isLoading = input(false);\n /** Ограничения на количество отображаемых строк на странице */\n public minRowsCount = input<number>(1);\n public maxRowsCount = input<number>(99);\n protected isIncorrectRowsCount = signal(false);\n protected rowsCountErrorMessage = signal('');\n\n public paginatorChange = output<IPaginatorOutput>();\n public pageChange = output<number>();\n public rowsChange = output<number | null>();\n\n protected readonly SvgSrc = SvgSrc;\n protected pagesCount = computed(() => {\n const total = this.totalRecords();\n this.rows();\n\n return Math.ceil(total / this.currentRows);\n });\n\n private readonly _dr = inject(DestroyRef);\n\n protected readonly currentRowsInputChange = new Subject<NumberInput>();\n\n constructor() {\n this.currentRowsInputChange\n .pipe(debounceTime(500), takeUntilDestroyed(this._dr))\n .subscribe((value) => {\n this.changeRows(value);\n });\n }\n\n public ngOnDestroy(): void {\n this.currentRowsInputChange.complete();\n }\n\n protected changePage(page: number): void {\n const prev = this.currentPage;\n this.page.set(page);\n\n if (this.currentPage !== prev) {\n this.emitPageChange();\n }\n }\n\n protected toFirstPage(): void {\n this.changePage(0);\n }\n\n protected toLastPage(): void {\n this.changePage(this.pagesCount());\n }\n\n private emitPageChange(): void {\n this.pageChange.emit(this.currentPage);\n this._emitPaginatorChanges();\n }\n\n protected changeRows(rows: NumberInput): void {\n const rowsCount = Number(rows);\n\n if (!rowsCount) {\n this.rowsCountErrorMessage.set('');\n this.isIncorrectRowsCount.set(false);\n return;\n }\n\n const min = this.minRowsCount();\n const max = this.maxRowsCount();\n\n if (rowsCount < min || rowsCount > max) {\n this.rowsCountErrorMessage.set(`Поле принимает значение от ${min} до ${max}`);\n this.isIncorrectRowsCount.set(true);\n return;\n }\n\n this.rowsCountErrorMessage.set('');\n this.isIncorrectRowsCount.set(false);\n\n if (this.currentRows === rows) {\n return;\n }\n\n this.rows.set(rows);\n this.rowsChange.emit(this.currentRows);\n\n if (this.currentPage > this.pagesCount()) {\n this.changePage(0);\n } else {\n this._emitPaginatorChanges();\n }\n }\n\n private _emitPaginatorChanges(): void {\n this.paginatorChange.emit({\n page: this.currentPage,\n first: (this.currentPage - 1) * this.currentRows + 1,\n rows: this.currentRows,\n pagesCount: this.pagesCount(),\n });\n }\n\n /** get-методы */\n protected get currentPage(): number {\n return Math.max(coerceNumberProperty(this.page()), 1);\n }\n\n protected get currentRows(): number {\n let inputRows = Math.max(coerceNumberProperty(this.rows()), 0);\n\n if (!inputRows) {\n [inputRows] = this.rowsCountOptions();\n }\n\n return inputRows;\n }\n}\n","<tui-loader class=\"loader\" [showLoader]=\"isLoading()\" [overlay]=\"true\">\n <div class=\"container\">\n <div class=\"content\">\n @if (!paginatorOptions().noRowsSelector && !paginatorOptions().noRowsSelectorLabel) {\n <span class=\"rows rows__count\">\n <ng-container *polymorphOutlet=\"textOnPage() as title\">\n {{ title }}\n </ng-container>\n </span>\n }\n @if (!paginatorOptions().noRowsSelector) {\n <div class=\"rows-selector\">\n <tui-combo-box\n numberOnly\n [ngModel]=\"currentRows\"\n [ngModelOptions]=\"{ standalone: true }\"\n [strict]=\"false\"\n [tuiTextfieldLabelOutside]=\"true\"\n [tuiTextfieldCleaner]=\"false\"\n tuiTextfieldSize=\"s\"\n [disabled]=\"disabled()\"\n [tuiHint]=\"rowsCountErrorMessage()\"\n [tuiHintManual]=\"isIncorrectRowsCount()\"\n (ngModelChange)=\"currentRowsInputChange.next($event)\"\n >\n <tui-data-list-wrapper\n *tuiDataList\n [items]=\"rowsCountOptions().length ? rowsCountOptions() : [currentRows]\"\n />\n </tui-combo-box>\n </div>\n }\n\n <div class=\"selected-panel\">\n <div class=\"selected-container\">\n <span>Выбрано</span>\n <span class=\"selected-counter\">{{ selectedCounter() }}</span>\n </div>\n <sproc-divider layout=\"vertical\"></sproc-divider>\n @if (!paginatorOptions().noFilterInfo) {\n <div class=\"selected-container\">\n <span>Отфильтровано</span>\n <span class=\"selected-counter\">{{ totalRecords() }}</span>\n <span>из</span>\n <span class=\"selected-counter\">{{ totalNotFiltered() }}</span>\n </div>\n }\n </div>\n </div>\n\n <div class=\"content\">\n @if (!paginatorOptions().noInfo) {\n <span class=\"rows rows__show\" [hidden]=\"disabled()\">\n Показано строк: {{ (currentPage - 1) * currentRows + 1 }}-{{\n currentPage * currentRows > totalRecords() ? totalRecords() : currentPage * currentRows\n }}\n <ng-container> из {{ totalRecords() }} </ng-container>\n </span>\n }\n\n <div class=\"paginator\">\n <button\n tuiIconButton\n class=\"paginator__control\"\n appearance=\"flat\"\n type=\"button\"\n size=\"xs\"\n tabIndex=\"-1\"\n [disabled]=\"disabled() || currentPage === 1\"\n (click)=\"toFirstPage()\"\n >\n <img [src]=\"SvgSrc.CHEVRONS_DOUBLE_LEFT\" />\n </button>\n <tui-pagination\n [index]=\"currentPage - 1\"\n [length]=\"pagesCount()\"\n [activePadding]=\"pageLinkSize()\"\n (indexChange)=\"changePage($event + 1)\"\n />\n @if (paginatorOptions().noToLastPageBtn ?? true) {\n <button\n tuiIconButton\n class=\"paginator__control\"\n appearance=\"flat\"\n type=\"button\"\n size=\"xs\"\n tabIndex=\"-1\"\n [disabled]=\"disabled() || currentPage === pagesCount() || currentPage === 0\"\n (click)=\"toLastPage()\"\n >\n <img [src]=\"SvgSrc.CHEVRONS_DOUBLE_RIGHT\" />\n </button>\n }\n </div>\n </div>\n </div>\n</tui-loader>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n output,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { DomIntersectionService } from '../../services/dom-intersection.service';\nimport { TuiHint, TuiIcon, TuiLoader, TuiScrollbar } from '@taiga-ui/core';\nimport { TuiTable, TuiTableSortChange } from '@taiga-ui/addon-table';\nimport { AsyncPipe, DecimalPipe, NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n ColumnDataTypes,\n EColumnDataType,\n IColumnData,\n RegisterTableCellSorter,\n ThWidthEntry,\n} from './model/schema';\nimport { TuiCheckbox } from '@taiga-ui/kit';\nimport { EDatePattern, ETimezone } from '../../directives/date/date-time.types';\nimport {\n outputFromObservable,\n takeUntilDestroyed,\n toObservable,\n toSignal,\n} from '@angular/core/rxjs-interop';\nimport { HeaderTemplateDirective } from './directives/header-template.directive';\nimport { DateTimeService } from '../../services/date-time.service';\nimport { CellTemplateDirective } from './directives/cell-template.directive';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { KEY_PRESSED, KeyPressedService } from '../../services/key-pressed.service';\nimport { EOrder, THS_WIDTH_CHANGES_DEBOUNCE_TIME_MLS } from '../../consts/register-base.consts';\nimport { ClassByTypePipe } from './pipes/class-by-type.pipe';\nimport { StickyColumnPipe } from './pipes/sticky-column.pipe';\nimport {\n CHECKBOX_SELECTOR_KEY,\n CHECKBOX_SELECTOR_WIDTH_PX,\n MIN_COL_WIDTH_PX,\n} from './consts/register-table.consts';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n map,\n skip,\n Subject,\n switchMap,\n tap,\n} from 'rxjs';\nimport { CheckboxSelectorComponent } from '../checkbox-selector/checkbox-selector.component';\nimport { distinctUntilChangedJSONs } from '../../utils';\nimport { StickyDirective, StickyRelativeDirective } from '../../directives';\nimport { ScalarUUID } from 'hasura';\nimport { ERegisterObjectState, IRegisterObject } from '../../types';\nimport { ApplySelectionTypes } from '../checkbox-selector/checkbox-selector.types';\nimport { SelectedObjectsStateService } from '../../services';\nimport { TuiResizable, TuiResizer } from '@taiga-ui/cdk';\nimport { FormatDatePipe } from '../../directives/date/format-date.pipe';\nimport { IPaginatorOutput } from '../paginator/types/paginator.types';\nimport { PaginatorComponent } from '../paginator/paginator.component';\n\n/** Общий компонент для создания таблицы ресстра */\n@Component({\n selector: 'sproc-register-table',\n templateUrl: './register-table.component.html',\n styleUrls: ['./register-table.component.less'],\n standalone: true,\n imports: [\n TuiScrollbar,\n TuiLoader,\n NgClass,\n NgStyle,\n TuiCheckbox,\n NgTemplateOutlet,\n DecimalPipe,\n FormatDatePipe,\n AsyncPipe,\n FormsModule,\n ReactiveFormsModule,\n TuiLoader,\n TuiTable,\n ClassByTypePipe,\n StickyColumnPipe,\n TuiHint,\n PaginatorComponent,\n CheckboxSelectorComponent,\n StickyDirective,\n StickyRelativeDirective,\n TuiIcon,\n TuiResizer,\n TuiResizable,\n ],\n providers: [\n DomIntersectionService,\n KeyPressedService,\n {\n provide: KEY_PRESSED,\n useValue: 'Shift',\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RegisterTableComponent implements OnDestroy {\n /** Переданный контент для заголовков таблицы, темплейты с директивой HeaderTemplateDirective */\n public headerTemplates = contentChildren<HeaderTemplateDirective>(HeaderTemplateDirective);\n /** Переданный контент для ячеек таблицы, темплейты с директивой CellTemplateDirective */\n public cellTemplates = contentChildren<CellTemplateDirective>(CellTemplateDirective);\n\n /** Элементы строк таблицы */\n public bodyRows = viewChildren('bodyRow', { read: ElementRef });\n /** Элемент скролла таблицы */\n public scrollbar = viewChild(TuiScrollbar, { read: ElementRef });\n /** Состояние загрузки данных таблицы */\n public isLoading = input.required<boolean | null>();\n /** Состояние загрузки данных пагинации */\n public isPaginatorLoading = input<boolean>(false);\n /** Номер страницы */\n public page = input.required<number | null>();\n /** Количество записей на одной странице */\n public limit = input.required<number | null>();\n /** Отображение колонки выбора строк (по умолчанию отображается) */\n public checkboxColumn = input(true);\n /** Список столбцов */\n public columns = input.required<string[]>();\n /** Данные столбцов */\n public columnsData = input.required<IColumnData[]>();\n /** Идентификаторы фиксированных слева столбцов */\n public stickyLeftIds = input<string[] | undefined>();\n /** Идентификаторы фиксированных слева столбцов */\n public stickyRightIds = input<string[] | undefined>();\n /** Всего записей */\n public totalRecords = input.required<number>();\n /** Всего записей, без учета фильтра */\n public totalNotFiltered = input.required<number>();\n /** Значения таблицы */\n public rowData = input.required<any[]>();\n /**\n * @description Идентификаторы выбранных записей\n *\n * @deprecated Используйте stateObjects\n * */\n public selectedIds = input(new Set<ScalarUUID>());\n /**\n * @description Объекты выбранных записей\n *\n * @deprecated Используйте stateObjects\n * */\n public selectedObjects = input(new Set<any>());\n /** Загрузка дополнительных записей при выборе соответствущего пункта в чекбокс-селекторе */\n public isSelectloading = input<boolean | null>(false);\n /** Текст пустой таблицы */\n public emptyText = input<string>('Нет данных');\n /** Дизейбл сортировки */\n public sortingDisabled = input(false);\n /** Максимальное значения выбора чекбоксов через поле ввода */\n public checkboxInputMaxValue = input<number | null>(null);\n /** Дизейбл выбора чекбоксов */\n public checkboxDisabled = input(false);\n /** Дизейбл выбора чекбоксов */\n public paginatorDisabled = input(false);\n\n public selectedCounter = computed(() => {\n const selectedSize = this._selectedService?.selectedValues()?.size ?? null;\n const unselectedSize = this._selectedService?.unselectedValues()?.size ?? 0;\n const unfetchedObjects = this._selectedService?.stateUnfetchedObjects();\n const isNotSelected = unfetchedObjects !== ERegisterObjectState.SELECTED;\n\n if (selectedSize === null) {\n this._deprecatedSelectedRowsCounter();\n return this.selectedIds().size;\n }\n\n return isNotSelected ? selectedSize : this.totalRecords() - unselectedSize;\n });\n\n protected readonly dts = inject(DateTimeService);\n protected readonly destroyRef = inject(DestroyRef);\n\n private readonly _shift = inject(KeyPressedService);\n private readonly _domIntersectionService = inject(DomIntersectionService);\n // TODO удалить optional: true после выполнения задачи SMA2-3134\n private readonly _selectedService = inject(SelectedObjectsStateService, {\n optional: true,\n });\n\n /** Событие выбора в чекбокс-селекторе */\n public selectChanged = output<ApplySelectionTypes>();\n /** Событие изменения значений пагинатора */\n public paginatorChange = output<IPaginatorOutput>();\n /** Событие нажатия на строку */\n public rowClick = output<any>();\n /** Событие двойного нажатия на строку */\n public rowDblClick = output<any>();\n /** Событие нажатия на строку */\n public rowSelected = output<{ row: any[]; count: number }>();\n /** Событие сортировки значений в таблице */\n public sort = output<RegisterTableCellSorter<any>[]>();\n /** Событие изменения ширины колонки */\n private readonly _thsWidthMap = computed(\n () => new Map(this.columnsData().map(({ name, width }) => [name, new BehaviorSubject(width)]))\n );\n public thsWidthChange = outputFromObservable<ThWidthEntry[]>(\n toObservable(this._thsWidthMap).pipe(\n switchMap((changes) =>\n combineLatest(\n [...changes.entries()].map(([name, $width]) =>\n $width.asObservable().pipe(map((width) => ({ name, width })))\n )\n ).pipe(\n distinctUntilChangedJSONs(),\n debounceTime(THS_WIDTH_CHANGES_DEBOUNCE_TIME_MLS),\n skip(1)\n )\n )\n )\n );\n /** Событие изменения видимых строк таблицы */\n private readonly _observerRowsVisibilityDOM$ = toObservable(this.bodyRows).pipe(\n switchMap((bodyRows) =>\n combineLatest(\n bodyRows.map((bodyRow, index) =>\n this._domIntersectionService.createAndObserve(bodyRow).pipe(\n // TODO удалить tap, как только перестанет использоваться is_visible по проекту\n tap((isVisible) => {\n this.rowData()[index].is_visible = isVisible;\n }),\n map((isVisible) => (isVisible ? this.rowData()[index] : undefined))\n )\n )\n ).pipe(map((visibleRows) => visibleRows.filter((visibleRow) => !!visibleRow)))\n )\n );\n public visibleRowsChange = outputFromObservable<any[]>(this._observerRowsVisibilityDOM$);\n\n protected readonly EColumnDataType = EColumnDataType;\n protected readonly ETimezone = ETimezone;\n protected readonly EDatePattern = EDatePattern;\n protected readonly ERegisterObjectState = ERegisterObjectState;\n\n protected readonly CHECKBOX_SELECTOR_KEY = CHECKBOX_SELECTOR_KEY;\n protected readonly CHECKBOX_SELECTOR_WIDTH_PX = CHECKBOX_SELECTOR_WIDTH_PX;\n\n protected readonly stickyThStyle = Object.freeze({ 'z-index': 22 });\n protected readonly stickyTdStyle = Object.freeze({ 'z-index': 21 });\n\n protected readonly columnsWithCheckboxes = computed(() => [\n CHECKBOX_SELECTOR_KEY,\n ...this.columns(),\n ]);\n protected readonly scrollPosition = signal<{ top: number; left: number }>({ top: 0, left: 0 });\n protected readonly tableWidth = toSignal(\n combineLatest([toObservable(this.columnsWithCheckboxes), toObservable(this._thsWidthMap)]).pipe(\n map(\n ({ 0: visibleColumns, 1: changes }) =>\n new Map([...changes.entries()].filter(([thName]) => visibleColumns.includes(thName)))\n ),\n switchMap((changes) =>\n combineLatest(\n [...changes.entries()].map(({ 1: $width }) =>\n $width.asObservable().pipe(map((width) => width))\n )\n ).pipe(\n map((widths) => {\n let tableWidth = this.checkboxColumn() ? CHECKBOX_SELECTOR_WIDTH_PX : 0;\n\n for (const width of widths) {\n tableWidth += width ? Number(width) : 0;\n }\n\n return tableWidth;\n })\n )\n )\n )\n );\n\n protected stateObjects = this._selectedService?.state;\n\n protected visibleColumnsTree = computed(() =>\n this._filterVisibleColumns(this.columnsData(), this.columns())\n );\n protected maxDepth = computed(() => this._getMaxDepth(this.visibleColumnsTree()));\n protected leaves = computed(() => this._getFlatLeaves(this.visibleColumnsTree()));\n\n protected headerRows = computed(() => {\n const maxDepth = this.maxDepth();\n const rows: { col: IColumnData; rowspan: number; colspan: number }[][] = Array.from(\n { length: maxDepth },\n () => []\n );\n\n if (maxDepth === 0) {\n return rows;\n }\n\n for (const col of this.visibleColumnsTree()) {\n this._buildHeaderRecursive(col, 0, maxDepth, rows);\n }\n\n return rows;\n });\n\n private _deprecatedSelectedRowsCounter = signal(0);\n\n protected readonly timeZoneChanges$ = this.dts.isTimeZoneChanged$;\n\n protected readonly columnOrders = new Map<string, RegisterTableCellSorter<any>>();\n\n private readonly _projectedHeadersMap = new Map<string, TemplateRef<any>>();\n private readonly _projectedCellsMap = new Map<string, TemplateRef<any>>();\n\n private readonly _clickedRow$ = new Subject<unknown>();\n\n private readonly _hoveredRow$ = new BehaviorSubject<unknown>(null);\n\n protected lastSelectedRow: unknown;\n\n constructor() {\n this._setScrollPositionAfterDataLoading();\n this._projectHeaderTemplates();\n this._projectCellTemplates();\n // TODO удалить метод, как только перестанет использоваться is_visible по проекту\n this._syncRowVisibilityDOM();\n\n effect(() => {\n const data = this.rowData();\n\n if (data.length > 0 && !this.lastSelectedRow) {\n [this.lastSelectedRow] = data;\n }\n });\n }\n\n private _setScrollPositionAfterDataLoading(): void {\n effect(() => {\n if (!this.isLoading()) {\n untracked(() => {\n const { top, left } = this.scrollPosition();\n const scrollbarElement = this.scrollbar()?.nativeElement;\n\n if (scrollbarElement) {\n scrollbarElement.scrollTop = top;\n scrollbarElement.scrollLeft = left;\n }\n });\n }\n });\n }\n\n private _projectHeaderTemplates(): void {\n effect(() => {\n this._projectedHeadersMap.clear();\n for (const template of this.headerTemplates()) {\n this._projectedHeadersMap.set(template.headerTemplateName(), template.tpl);\n }\n });\n }\n\n private _projectCellTemplates(): void {\n effect(() => {\n this._projectedCellsMap.clear();\n for (const template of this.cellTemplates()) {\n this._projectedCellsMap.set(template.cellTemplateName, template.tpl);\n }\n });\n }\n\n private _syncRowVisibilityDOM(): void {\n this._observerRowsVisibilityDOM$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe();\n }\n\n public ngOnDestroy(): void {\n this._clickedRow$.complete();\n this._hoveredRow$.complete();\n for (const subject of this._thsWidthMap().values()) {\n subject.complete();\n }\n }\n\n protected getProjectionHeaderByName(name: string): TemplateRef<any> | undefined {\n return this._projectedHeadersMap.get(name);\n }\n\n protected getProjectionCellByName(name: string): TemplateRef<any> | undefined {\n return this._projectedCellsMap.get(name);\n }\n\n protected sortChange({ sortComparator }: TuiTableSortChange<Partial<Record<string, any>>>): void {\n if (!sortComparator) {\n return;\n }\n\n const id = sortComparator({}, {}) as any as string;\n const columnOrder = this.columnOrders.get(id);\n\n if (this._shift.isPressed()) {\n this.updateColumnOrder(id, columnOrder);\n } else {\n this.columnOrders.clear();\n this.updateColumnOrder(id, columnOrder);\n }\n\n this.sort.emit([...this.columnOrders.values()]);\n }\n\n private updateColumnOrder(\n id: string,\n columnOrder: RegisterTableCellSorter<any> | undefined\n ): void {\n if (columnOrder) {\n const { options } = columnOrder;\n const { order } = options;\n\n if (order === EOrder.DESC) {\n this.columnOrders.delete(id);\n } else {\n this.columnOrders.set(id, { options: { ...options, order: EOrder.DESC } });\n }\n } else {\n this.columnOrders.set(id, { options: { id, order: EOrder.ASC } });\n }\n }\n\n protected setThName(thName: string): any {\n return () => thName;\n }\n\n protected checkAvailableColumnSorting(columnData: IColumnData): boolean {\n const { sortable, type } = columnData;\n const availableSortColumnTypes: ColumnDataTypes[] = [\n EColumnDataType.TEXT,\n EColumnDataType.DATE,\n EColumnDataType.NUM,\n ];\n\n return !this.sortingDisabled() && sortable !== false && availableSortColumnTypes.includes(type);\n }\n\n protected checkResizeBlocked(columnData: IColumnData): boolean {\n const resizableBlockedTypes: ColumnDataTypes[] = [\n EColumnDataType.CHECKBOX,\n EColumnDataType.ICON,\n EColumnDataType.ICON_SVG,\n ];\n\n return columnData.fixed || resizableBlockedTypes.includes(columnData.type);\n }\n\n protected onRowHover(row: unknown): void {\n this._hoveredRow$.next(row);\n }\n\n protected onRowClick(event: MouseEvent, row: unknown): void {\n const blueHighlightsSelected = window.getSelection();\n blueHighlightsSelected?.removeAllRanges();\n\n const stateObjects = this.stateObjects?.();\n\n // TODO оставить только if после SMA2-3134\n if (stateObjects) {\n if (event.shiftKey) {\n this._changeRangeRowsState(stateObjects, this.lastSelectedRow, row);\n } else {\n if (event.ctrlKey) {\n this._changeOnlyRowState(stateObjects, row, true);\n } else {\n this._changeOnlyRowState(stateObjects, row);\n }\n this.lastSelectedRow = row;\n }\n\n this.rowClick.emit(row);\n\n const selectedObjects = this._selectedService?.selectedValues();\n\n if (selectedObjects) {\n this.rowSelected.emit({\n row: [...selectedObjects],\n count: selectedObjects.size,\n });\n }\n\n this._clickedRow$.next(row);\n return;\n }\n\n if (event.shiftKey) {\n this._selectRangeRows(this.lastSelectedRow, row);\n } else {\n if (event.ctrlKey) {\n this._selectOnlyRow(row, true);\n } else {\n this._selectOnlyRow(row);\n }\n this.lastSelectedRow = row;\n }\n\n this.rowClick.emit(row);\n this.rowSelected.emit({\n row: [...this.selectedObjects()],\n count: this.selectedObjects().size,\n });\n }\n\n private _changeOnlyRowState(\n state: Map<ScalarUUID, IRegisterObject>,\n row: unknown,\n saveSelected?: boolean\n ): void {\n if (typeof row !== 'object' || !row || !('id' in row)) {\n console.error('Поле id отсутствует в элементе', row);\n return;\n }\n\n const id = row.id as string;\n const wasSelected = state.get(id)?.state === ERegisterObjectState.SELECTED;\n\n if (saveSelected) {\n this.updateStateObjectByKey(id, {\n state: wasSelected ? ERegisterObjectState.UNSELECTED : ERegisterObjectState.SELECTED,\n });\n } else {\n this.updateAllStateObjectsByState(ERegisterObjectState.UNSELECTED);\n this.updateStateObjectByKey(id, { state: ERegisterObjectState.SELECTED });\n }\n }\n\n private _selectOnlyRow(row: unknown, saveSelected?: boolean): void {\n if (typeof row !== 'object' || !row || !('id' in row)) {\n console.error('Поле id отсутствует в элементе', row);\n return;\n }\n\n const id = row.id as string;\n const wasSelected = this.selectedIds().has(id);\n\n if (saveSelected) {\n if (wasSelected) {\n this.selectedIds().delete(id);\n this.selectedObjects().delete(row);\n } else {\n this.selectedIds().add(id);\n this.selectedObjects().add(row);\n }\n } else {\n this.selectedIds().clear();\n this.selectedObjects().clear();\n this.selectedIds().add(id);\n this.selectedObjects().add(row);\n }\n this._emitDeprecatedSelectedRows();\n }\n\n private _emitDeprecatedSelectedRows(): void {\n this._deprecatedSelectedRowsCounter.update((value) => value + 1);\n }\n\n private _changeRangeRowsState(\n stateObjects: Map<ScalarUUID, IRegisterObject>,\n previousRow: unknown,\n currentRow: unknown\n ): void {\n this.updateAllStateObjectsByState(ERegisterObjectState.UNSELECTED);\n\n let prevIndex = this.rowData().indexOf(previousRow);\n let currIndex = this.rowData().indexOf(currentRow);\n\n if (prevIndex > currIndex) {\n const tempIndex = prevIndex;\n prevIndex = currIndex;\n currIndex = tempIndex;\n }\n\n const idsObjectsShouldSelected: Set<ScalarUUID> = new Set(\n this.rowData()\n .slice(prevIndex === -1 ? 0 : prevIndex, currIndex + 1)\n .map((row) => row.id)\n );\n\n const slicedStateObjects = new Map(\n [...stateObjects].filter(([key]) => idsObjectsShouldSelected.has(key))\n );\n\n for (const key of slicedStateObjects.keys()) {\n this.updateStateObjectByKey(key, { state: ERegisterObjectState.SELECTED });\n }\n }\n\n private _selectRangeRows(previousRow: unknown, currentRow: unknown): void {\n let prevIndex = this.rowData().indexOf(previousRow);\n let currIndex = this.rowData().indexOf(currentRow);\n\n if (prevIndex > currIndex) {\n const tempIndex = prevIndex;\n prevIndex = currIndex;\n currIndex = tempIndex;\n }\n\n const itemsShouldSelected = this.rowData().slice(\n prevIndex === -1 ? 0 : prevIndex,\n currIndex + 1\n );\n\n this.selectedIds().clear();\n this.selectedObjects().clear();\n this._emitDeprecatedSelectedRows();\n\n for (const item of itemsShouldSelected) {\n this.selectedIds().add(item.id);\n this.selectedObjects().add(item);\n }\n }\n\n protected thResizeChanges(name: string, width: number): void {\n const thWidthChangesEntry = this._thsWidthMap().get(name);\n\n if (thWidthChangesEntry) {\n const validWidth = width > MIN_COL_WIDTH_PX ? width : MIN_COL_WIDTH_PX;\n thWidthChangesEntry.next(validWidth.toString());\n }\n }\n\n protected getThWidth(name: string): string | undefined {\n const thWidthChangesEntry = this._thsWidthMap().get(name);\n\n return thWidthChangesEntry?.getValue();\n }\n\n protected saveScrollEndPosition(): void {\n const scrollbarElement = this.scrollbar()?.nativeElement;\n\n if (scrollbarElement && !this.isLoading()) {\n const { scrollTop, scrollLeft } = scrollbarElement;\n\n this.scrollPosition.set({\n top: scrollTop,\n left: scrollLeft,\n });\n }\n }\n\n protected updateAllStateObjectsByState(state: ERegisterObjectState): void {\n this._selectedService?.setAllStateObjectsByState(state);\n }\n\n protected updateStateObjectByKey(key: ScalarUUID, updates: Partial<IRegisterObject>): void {\n this._selectedService?.setStateObjectByKey(key, updates);\n }\n\n protected markRowBeforeSelect(row: unknown): boolean {\n const shiftPressed = this._shift.isPressed();\n const prevRow = this.lastSelectedRow;\n const hoveredRow = this._hoveredRow$.getValue();\n\n if (shiftPressed && prevRow && hoveredRow) {\n let beforeIndex = this.rowData().indexOf(prevRow);\n let afterIndex = this.rowData().indexOf(hoveredRow);\n\n if (beforeIndex > afterIndex) {\n const tempIndex = beforeIndex;\n beforeIndex = afterIndex;\n afterIndex = tempIndex;\n }\n\n const currentIndex = this.rowData().indexOf(row);\n\n return beforeIndex <= currentIndex && currentIndex <= afterIndex;\n }\n\n return false;\n }\n\n private _buildHeaderRecursive(\n col: IColumnData,\n level: number,\n maxDepth: number,\n rows: { col: IColumnData; rowspan: number; colspan: number }[][]\n ): number {\n const children = col.children || [];\n const hasChildren = children.length > 0;\n\n const customRowspan = col.rowspan || 1;\n const nextLevel = level + customRowspan;\n\n let colspan = 0;\n\n if (hasChildren) {\n for (const child of children) {\n colspan += this._buildHeaderRecursive(child, nextLevel, maxDepth, rows);\n }\n } else {\n colspan = 1;\n }\n\n const rowspan = hasChildren ? customRowspan : maxDepth - level;\n\n if (rows[level]) {\n rows[level].push({ col, rowspan, colspan });\n }\n\n return colspan;\n }\n\n private _getFlatLeaves(columns: IColumnData[]): IColumnData[] {\n return columns.flatMap((col) => {\n if (col.children && col.children.length > 0) {\n return this._getFlatLeaves(col.children);\n }\n return [col];\n });\n }\n\n private _filterVisibleColumns(columns: IColumnData[], showedNames: string[]): IColumnData[] {\n return columns\n .map((col) => {\n if (col.children && col.children.length > 0) {\n const visibleChildren = this._filterVisibleColumns(col.children, showedNames);\n return { ...col, children: visibleChildren };\n }\n return col;\n })\n .filter((col) => showedNames.includes(col.name) || (col.children && col.children.length > 0));\n }\n\n private _getMaxDepth(columns: IColumnData[]): number {\n if (!columns || columns.length === 0) {\n return 0;\n }\n\n return 1 + Math.max(...columns.map((c) => this._getMaxDepth(c.children || [])));\n }\n}\n","<section class=\"register-table__section\">\n <tui-scrollbar class=\"register-table__scrollable\" (scrollend)=\"saveScrollEndPosition()\">\n <tui-loader class=\"register-table__loader\" [showLoader]=\"isLoading() || false\" [overlay]=\"true\">\n <table\n tuiTable\n class=\"table\"\n stickyRelative\n [columns]=\"columnsWithCheckboxes()\"\n [style.width.px]=\"tableWidth()\"\n tuiSortBy=\"\"\n (sortChange)=\"sortChange($event)\"\n >\n <thead>\n @for (hrow of headerRows(); track $index) {\n <tr tuiThGroup>\n @if ($first && checkboxColumn()) {\n <th\n tuiTh\n *tuiHead=\"CHECKBOX_SELECTOR_KEY\"\n class=\"register-table__th-background--table-cell-blue register-table__cell-icon register-table__cell-checkbox-selector\"\n [style.width.px]=\"CHECKBOX_SELECTOR_WIDTH_PX\"\n [sorter]=\"null\"\n [rowSpan]=\"maxDepth()\"\n >\n <sproc-checkbox-selector\n [selected]=\"selectedIds()\"\n [totalRecords]=\"totalRecords()\"\n [loading]=\"isSelectloading()\"\n [disabled]=\"checkboxDisabled()\"\n (onApply)=\"selectChanged.emit($event)\"\n ></sproc-checkbox-selector>\n </th>\n }\n @for (cell of hrow; track cell.col.name) {\n @let thClass = cell.col.class ?? '';\n @let thType = cell.col.type;\n @let thName = cell.col.name;\n @let sortable = checkAvailableColumnSorting(cell.col);\n @let resizeBlocked = checkResizeBlocked(cell.col);\n <th\n tuiTh\n tuiResizable\n *tuiHead=\"thName\"\n [ngClass]=\"['register-table__th', thType | classByType, thClass]\"\n [stickyLeft]=\"cell.col.fixed ?? (thName | stickyColumn: stickyLeftIds())\"\n [stickyRight]=\"cell.col.fixed ?? (thName | stickyColumn: stickyRightIds())\"\n [stylesOnSticky]=\"stickyThStyle\"\n [style]=\"cell.col.headerStyle ?? ''\"\n [style.min-width.px]=\"getThWidth(thName)\"\n [style.width.px]=\"getThWidth(thName)\"\n [style.max-width.px]=\"getThWidth(thName)\"\n [tuiSortable]=\"sortable\"\n [sorter]=\"sortable ? setThName(thName) : null\"\n [tuiHint]=\"cell.col.tooltipText ?? null\"\n [rowSpan]=\"cell.rowspan\"\n [colSpan]=\"cell.colspan\"\n [attr.order]=\"columnOrders.get(thName)?.options?.order\"\n >\n @if (cell.col.isHeadTemplate) {\n @let thProjection = getProjectionHeaderByName(thName);\n\n @if (thProjection) {\n <ng-container\n [ngTemplateOutlet]=\"thProjection\"\n [ngTemplateOutletContext]=\"{\n $implicit: cell.col,\n }\"\n ></ng-container>\n }\n } @else {\n @switch (thType) {\n @case (EColumnDataType.ICON) {\n <tui-icon\n class=\"register-table--icon-color\"\n [icon]=\"cell.col.value!\"\n ></tui-icon>\n }\n @case (EColumnDataType.ICON_SVG) {\n <img [src]=\"cell.col.value\" [alt]=\"thName\" />\n }\n @case (EColumnDataType.TEXT) {\n @if (cell.col.svgSrc) {\n <img [src]=\"cell.col.svgSrc\" [alt]=\"thName\" />\n }\n <span class=\"text-overflow--ellipsis\" [ngStyle]=\"cell.col.textStyle\">\n {{ cell.col.value }}\n </span>\n }\n @case (EColumnDataType.NUM) {\n <span [ngStyle]=\"cell.col.textStyle\">\n {{ cell.col.value }}\n </span>\n }\n @case (EColumnDataType.DATE) {\n <span [ngStyle]=\"cell.col.textStyle\">\n {{ cell.col.value }}\n </span>\n }\n @case (EColumnDataType.CHECKBOX) {\n {{ cell.col.value }}\n }\n }\n }\n @if (!resizeBlocked) {\n <div\n class=\"register-table__cell-resizer\"\n [tuiResizer]=\"[1, 0]\"\n (tuiSizeChange)=\"thResizeChanges(cell.col.name, $event[0])\"\n (click)=\"$event.stopPropagation()\"\n ></div>\n }\n </th>\n }\n </tr>\n }\n </thead>\n @let rows = rowData();\n <tbody tuiTbody>\n @for (row of rows; track row.id) {\n @let state = stateObjects?.();\n @let trSelected =\n state\n ? state.get(row.id)?.state === ERegisterObjectState.SELECTED\n : selectedIds().has(row.id);\n\n <tr\n #bodyRow\n tuiTr\n class=\"register-table__row\"\n [class.selected]=\"trSelected\"\n [class.shift-pressed]=\"markRowBeforeSelect(row)\"\n (mouseenter)=\"onRowHover(row)\"\n (mouseleave)=\"onRowHover(null)\"\n (click)=\"onRowClick($event, row)\"\n (dblclick)=\"rowDblClick.emit(row)\"\n >\n @if (checkboxColumn()) {\n <td\n tuiTd\n *tuiCell=\"CHECKBOX_SELECTOR_KEY\"\n class=\"register-table__cell-checkbox-selector\"\n >\n <input\n tuiCheckbox\n size=\"s\"\n type=\"checkbox\"\n class=\"checkbox\"\n [checked]=\"trSelected\"\n [disabled]=\"checkboxDisabled()\"\n />\n </td>\n }\n @for (columnData of leaves(); track columnData.name) {\n @let tdType = columnData.type;\n @let tdKey = columnData.name;\n @let tdValue = row[tdKey];\n @let tdClass = columnData.classTd ?? '';\n\n <td\n tuiTd\n *tuiCell=\"tdKey\"\n [ngClass]=\"[tdType | classByType: 'td', tdClass]\"\n [stickyLeft]=\"tdKey | stickyColumn: stickyLeftIds()\"\n [stickyRight]=\"tdKey | stickyColumn: stickyRightIds()\"\n [stylesOnSticky]=\"stickyTdStyle\"\n >\n @if (columnData.isTemplate) {\n @let tdProjection = getProjectionCellByName(tdKey);\n\n @if (tdProjection) {\n <ng-container\n [ngTemplateOutlet]=\"tdProjection\"\n [ngTemplateOutletContext]=\"{\n $implicit: tdValue,\n row,\n }\"\n ></ng-container>\n }\n } @else {\n @switch (tdType) {\n @case (EColumnDataType.ICON) {\n @if (tdValue) {\n <tui-icon\n class=\"register-table--icon-color\"\n [icon]=\"columnData.value!\"\n ></tui-icon>\n }\n }\n @case (EColumnDataType.ICON_SVG) {\n @if (tdValue) {\n <img [src]=\"columnData.value\" [alt]=\"tdKey\" />\n }\n }\n @case (EColumnDataType.CHECKBOX) {\n <input\n tuiCheckbox\n size=\"s\"\n type=\"checkbox\"\n class=\"checkbox\"\n [checked]=\"!!tdValue\"\n [disabled]=\"true\"\n />\n }\n @case (EColumnDataType.TEXT) {\n <span [tuiHint]=\"tdValue\">\n {{ tdValue ?? '' }}\n </span>\n <span>\n {{ tdValue ? columnData.postfix : '' }}\n </span>\n }\n @case (EColumnDataType.NUM) {\n {{ tdValue ?? '' | number: columnData.numberPipe }}\n {{ tdValue ? columnData.postfix : '' }}\n }\n @case (EColumnDataType.DATE) {\n {{\n (tdValue\n | formatDate\n : ETimezone.UTC\n : columnData.datePattern ?? EDatePattern.DATE_TIME_WITHOUT_SECONDS\n : (timeZoneChanges$ | async)) ?? ''\n }}\n {{ tdValue ? columnData.postfix : '' }}\n }\n }\n }\n </td>\n }\n </tr>\n } @empty {\n <tr class=\"empty-layer\">\n <td colspan=\"100%\">\n <div class=\"centered-text\">{{ emptyText() }}</div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </tui-loader>\n </tui-scrollbar>\n\n <sproc-paginator\n class=\"register-table__paginator\"\n [page]=\"page()\"\n [rows]=\"limit()\"\n [pageLinkSize]=\"1\"\n [totalRecords]=\"totalRecords()\"\n [totalNotFiltered]=\"totalNotFiltered()\"\n [rowsCountOptions]=\"[30, 40, 50]\"\n [selectedCounter]=\"selectedCounter()\"\n (paginatorChange)=\"paginatorChange.emit($event)\"\n [disabled]=\"paginatorDisabled()\"\n [isLoading]=\"isPaginatorLoading()\"\n >\n </sproc-paginator>\n</section>\n","import { ChangeDetectionStrategy, Component, Injector, input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { TuiIcon, TuiTextfield } from '@taiga-ui/core';\nimport { CommonModule } from '@angular/common';\nimport { InputsModule } from '../inputs';\nimport { FormatterGqlValueType, IInputControl } from '../../types';\n\n@Component({\n selector: 'sproc-search-input',\n standalone: true,\n templateUrl: './search-input.component.html',\n styleUrls: ['./search-input.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, ReactiveFormsModule, InputsModule, TuiIcon, TuiTextfield],\n})\nexport class SearchInputComponent {\n public searchControl = input.required<\n FormControl<string | null> | IInputControl<string | null>\n >();\n public searchGqlFormatter = input<FormatterGqlValueType<string>>();\n public disabled = input<boolean>(false);\n\n public readonly formatGqlValueProxy: FormatterGqlValueType<string> = (\n value: string,\n injector?: Injector\n ) => {\n const formatter = this.searchGqlFormatter();\n const trimmedValue = value.trim();\n return formatter ? formatter(trimmedValue, injector) : undefined;\n };\n}\n","<sproc-param-custom [formControl]=\"searchControl()\" [formatGqlValue]=\"formatGqlValueProxy\">\n <tui-textfield tuiTextfieldSize=\"m\" [tuiTextfieldCleaner]=\"true\">\n <input placeholder=\"Поиск\" tuiTextfield [formControl]=\"searchControl()\" />\n <tui-icon icon=\"@tui.search\" [style.width.px]=\"16\" />\n </tui-textfield>\n</sproc-param-custom>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DialogOverlayInsidePlacement","i1.FiltersTransmitService","rxjsFilter","SvgSrc","RuntimeError","i1.FiltersStateService","i2.FiltersStateService","i3","i4","i1.FiltersService","i3.FilterListService","i5","i6.DividerComponent","i1","i1.RegisterBaseStore","i2.FiltersService","i4.FilterEditComponent","i5.FilterListSavedComponent","i6.FilterListHeaderComponent","i7.FilterListFooterComponent","i8.DividerComponent","i9.SlidingPanelComponent","i10","i2","moment","i1.DateTimeService","i4.FormatDatePipe","map","filter","switchMap","tap","takeUntil","i2.ParamCustomComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-register-base.mjs","sources":["../../../projects/ngx-register-base/src/lib/components/column-settings/types/column-settings.types.ts","../../../projects/ngx-register-base/src/lib/components/column-settings/consts/column-settings.consts.ts","../../../projects/ngx-register-base/src/lib/components/column-settings/components/column-settings-template/column-settings-template.component.ts","../../../projects/ngx-register-base/src/lib/components/column-settings/components/column-settings-template/column-settings-template.component.html","../../../projects/ngx-register-base/src/lib/services/dialog/dialog.service.ts","../../../projects/ngx-register-base/src/lib/consts/date-time.consts.ts","../../../projects/ngx-register-base/src/lib/directives/date/date-time.types.ts","../../../projects/ngx-register-base/src/lib/services/date-time.service.ts","../../../projects/ngx-register-base/src/lib/core/input-control/input-control.ts","../../../projects/ngx-register-base/src/lib/consts/inputs.consts.ts","../../../projects/ngx-register-base/src/lib/services/inputs.service.ts","../../../projects/ngx-register-base/src/lib/utils/functions.ts","../../../projects/ngx-register-base/src/lib/utils/get-url-segment.ts","../../../projects/ngx-register-base/src/lib/utils/rxjs.ts","../../../projects/ngx-register-base/src/lib/utils/select-all-utils.ts","../../../projects/ngx-register-base/src/lib/services/filter/filters-transmit.service.ts","../../../projects/ngx-register-base/src/lib/services/filter/filters.service.ts","../../../projects/ngx-register-base/src/lib/types/inputs.types.ts","../../../projects/ngx-register-base/src/lib/types/register-base.types.ts","../../../projects/ngx-register-base/src/lib/services/inputs-state.service.ts","../../../projects/ngx-register-base/src/lib/services/filter/filters-state.service.ts","../../../projects/ngx-register-base/src/lib/services/resize-window-observer.service.ts","../../../projects/ngx-register-base/src/lib/consts/register-base.consts.ts","../../../projects/ngx-register-base/src/lib/components/checkbox-selector/checkbox-selector.types.ts","../../../projects/ngx-register-base/src/lib/services/selected-objects-state.service.ts","../../../projects/ngx-register-base/src/lib/consts/month.consts.ts","../../../projects/ngx-register-base/src/lib/components/reset-settings-form/reset-settings-form.component.ts","../../../projects/ngx-register-base/src/lib/components/reset-settings-form/reset-settings-form.component.html","../../../projects/ngx-register-base/src/lib/components/divider/divider.component.ts","../../../projects/ngx-register-base/src/lib/components/divider/divider.component.html","../../../projects/ngx-register-base/src/lib/components/column-settings/column-settings.component.ts","../../../projects/ngx-register-base/src/lib/components/column-settings/column-settings.component.html","../../../projects/ngx-register-base/src/lib/components/filter-button/filter-button.component.ts","../../../projects/ngx-register-base/src/lib/components/filter-button/filter-button.component.html","../../../projects/ngx-register-base/src/lib/components/page-menu/schema/sproc-page-menu.consts.ts","../../../projects/ngx-register-base/src/lib/components/page-menu/schema/sproc-page-menu.tokens.ts","../../../projects/ngx-register-base/src/lib/components/page-menu/sproc-page-menu.component.ts","../../../projects/ngx-register-base/src/lib/components/page-menu/sproc-page-menu.component.html","../../../projects/ngx-register-base/src/lib/components/page-menu/schema/sproc-page-menu.types.ts","../../../projects/ngx-register-base/src/lib/core/form-group-wrapper/errors-consts.ts","../../../projects/ngx-register-base/src/lib/core/form-group-wrapper/form-group-wrapper.ts","../../../projects/ngx-register-base/src/lib/core/param/param.tokens.ts","../../../projects/ngx-register-base/src/lib/core/param/param-base.ts","../../../projects/ngx-register-base/src/lib/core/param/param-date-base.ts","../../../projects/ngx-register-base/src/lib/store/fast-query-store.service.ts","../../../projects/ngx-register-base/src/lib/core/param/param-select-base.ts","../../../projects/ngx-register-base/src/lib/core/param/param-text-base.ts","../../../projects/ngx-register-base/src/lib/core/register-base/register-base.store.ts","../../../projects/ngx-register-base/src/lib/core/register-base/register-base.ts","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.ts","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.html","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.ts","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.html","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-list.service.ts","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.ts","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.html","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.ts","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.html","../../../projects/ngx-register-base/src/lib/components/sliding-panel/sliding-panel.component.ts","../../../projects/ngx-register-base/src/lib/components/sliding-panel/sliding-panel.component.html","../../../projects/ngx-register-base/src/lib/components/filters/register-table-filter.component.ts","../../../projects/ngx-register-base/src/lib/components/filters/register-table-filter.component.html","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filters-section/filters-section.component.ts","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filters-section/filters-section.component.html","../../../projects/ngx-register-base/src/lib/utils/prizm.shared.module.ts","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list.module.ts","../../../projects/ngx-register-base/src/lib/components/sliding-panel/sliding-panel.module.ts","../../../projects/ngx-register-base/src/lib/components/filters/register-table-filter.module.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-calendar-year/param-calendar-year.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-calendar-year/param-calendar-year.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-custom/param-custom.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-custom/param-custom.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-date/param-date.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-date/param-date.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-date-range/param-date-range.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-date-range/param-date-range.component.html","../../../projects/ngx-register-base/src/lib/directives/date/format-date.pipe.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-date-time/param-date-time.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-date-time/param-date-time.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-date-time-range/param-date-time-range.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-date-time-range/param-date-time-range.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-month/param-month.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-month/param-month.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-month-range/param-month-range.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-month-range/param-month-range.component.html","../../../projects/ngx-register-base/src/lib/consts/params.consts.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-multi-select/param-multi-select.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-multi-select/param-multi-select.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-select/param-select.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-select/param-select.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-switcher/param-switcher.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-switcher/param-switcher.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-switcher-date-time-range/types/param-switcher-date-time-range.types.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-switcher-date-time-range/consts/param-switcher-date-time-range.consts.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-text/param-text.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-text/param-text.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-textarea/param-textarea.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-textarea/param-textarea.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-toggle/param-toggle.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-toggle/param-toggle.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree/consts/param-tree.consts.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree/tokens/param-tree.tokens.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree/services/param-tree.service.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree/services/sync-tree-loader.service.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree/utils/param-tree.utils.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree/param-tree.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree/param-tree.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree-select/param-tree-select.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree-select/param-tree-select.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/inputs.module.ts","../../../projects/ngx-register-base/src/lib/components/menu-constructor/store/sproc-menu-constructor.consts.ts","../../../projects/ngx-register-base/src/lib/components/menu-constructor/store/sproc-menu.tokens.ts","../../../projects/ngx-register-base/src/lib/components/menu-constructor/sproc-menu-constructor.component.ts","../../../projects/ngx-register-base/src/lib/components/menu-constructor/sproc-menu-constructor.component.html","../../../projects/ngx-register-base/src/lib/components/menu-constructor/store/sproc-abstract-menu-constructor.store.ts","../../../projects/ngx-register-base/src/lib/components/register-table/directives/cell-template.directive.ts","../../../projects/ngx-register-base/src/lib/components/register-table/model/schema.ts","../../../projects/ngx-register-base/src/lib/services/dom-intersection.service.ts","../../../projects/ngx-register-base/src/lib/components/register-table/directives/header-template.directive.ts","../../../projects/ngx-register-base/src/lib/services/key-pressed.service.ts","../../../projects/ngx-register-base/src/lib/components/register-table/pipes/class-by-type.pipe.ts","../../../projects/ngx-register-base/src/lib/components/register-table/pipes/sticky-column.pipe.ts","../../../projects/ngx-register-base/src/lib/components/register-table/consts/register-table.consts.ts","../../../projects/ngx-register-base/src/lib/components/checkbox-selector/checkbox-selector.component.ts","../../../projects/ngx-register-base/src/lib/components/checkbox-selector/checkbox-selector.component.html","../../../projects/ngx-register-base/src/lib/directives/number/number-only.directive.ts","../../../projects/ngx-register-base/src/lib/directives/sticky/sticky-relative.service.ts","../../../projects/ngx-register-base/src/lib/directives/sticky/sticky.directive.ts","../../../projects/ngx-register-base/src/lib/directives/sticky/sticky-relative.directive.ts","../../../projects/ngx-register-base/src/lib/components/paginator/paginator.component.ts","../../../projects/ngx-register-base/src/lib/components/paginator/paginator.component.html","../../../projects/ngx-register-base/src/lib/components/register-table/register-table.component.ts","../../../projects/ngx-register-base/src/lib/components/register-table/register-table.component.html","../../../projects/ngx-register-base/src/lib/components/search-input/search-input.component.ts","../../../projects/ngx-register-base/src/lib/components/search-input/search-input.component.html","../../../projects/ngx-register-base/src/ngx-register-base.ts"],"sourcesContent":["export interface ITableColumnSettings {\n columns: IColumnSettings[];\n stickyLeft: IColumnSettings[];\n stickyRight: IColumnSettings[];\n}\n\nexport interface IColumnSettings {\n id: string;\n name: string;\n status: EColumnStatus | IColumnStatus;\n children?: IColumnSettings[];\n}\n\n/** @deprecated используйте EColumnStatus */\nexport type IColumnStatus = 'sticky' | 'hidden' | 'default';\n\nexport enum EColumnStatus {\n STICKY = 'sticky',\n HIDDEN = 'hidden',\n DEFAULT = 'default',\n}\n\nexport interface IColumnSettingsChanges {\n settings: ITableColumnSettings | null;\n id?: string;\n}\n","// Icons\nexport const ICON_SETTINGS = '/assets/ngx-register-base/icons/settings.svg';\nexport const ICON_ERASER = '/assets/ngx-register-base/icons/eraser.svg';\nexport const ICON_CANCEL_CLOSE = '/assets/ngx-register-base/icons/cancel-close.svg';\nexport const ICON_EDITOR_DOTS = '/assets/ngx-register-base/icons/16-editor-dots.svg';\nexport const ICON_CHEVRONS_RIGHT = '/assets/ngx-register-base/icons/chevrons/chevrons-right.svg';\nexport const ICON_EYE = '/assets/ngx-register-base/icons/eye.svg';\nexport const ICON_EYE_CLOSED = '/assets/ngx-register-base/icons/eye-closed.svg';\nexport const ICON_LOCK = '/assets/ngx-register-base/icons/lock.svg';\n","import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core';\nimport { EColumnStatus, IColumnSettings } from '../../types/column-settings.types';\nimport {\n CdkDrag,\n CdkDragDrop,\n CdkDragPlaceholder,\n CdkDropList,\n moveItemInArray,\n transferArrayItem,\n} from '@angular/cdk/drag-drop';\nimport { NgOptimizedImage } from '@angular/common';\nimport { TuiHintDirective } from '@taiga-ui/core';\nimport {\n ICON_CHEVRONS_RIGHT,\n ICON_EDITOR_DOTS,\n ICON_EYE,\n ICON_EYE_CLOSED,\n ICON_LOCK,\n} from '../../consts/column-settings.consts';\nimport { TuiExpand } from '@taiga-ui/experimental';\n\n@Component({\n selector: 'sproc-column-settings-template',\n standalone: true,\n imports: [\n NgOptimizedImage,\n CdkDrag,\n CdkDragPlaceholder,\n CdkDropList,\n TuiExpand,\n TuiHintDirective,\n ],\n templateUrl: './column-settings-template.component.html',\n styleUrl: './column-settings-template.component.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ColumnSettingsTemplateComponent {\n public column = input.required<IColumnSettings>();\n public parent = input<IColumnSettings>();\n public expand = input(true);\n\n protected readonly iconEditorDots = ICON_EDITOR_DOTS;\n protected readonly iconChevron = ICON_CHEVRONS_RIGHT;\n protected readonly iconEye = ICON_EYE;\n protected readonly iconEyeClosed = ICON_EYE_CLOSED;\n protected readonly iconLock = ICON_LOCK;\n\n protected readonly EColumnStatus = EColumnStatus;\n\n protected readonly status = computed(() => this.column().status);\n protected readonly canExpand = computed(() => {\n const wantExpand = this.expand();\n const children = this.column().children ?? [];\n const haveChildren = children.length > 0;\n\n return wantExpand && haveChildren;\n });\n protected readonly expanded = signal(false);\n\n protected collapseNested(): void {\n this.expanded.set(false);\n }\n\n protected toggleNested(): void {\n this.expanded.update((value) => !value);\n }\n\n protected isHiddenColumn(column: IColumnSettings): boolean {\n return column.status === EColumnStatus.HIDDEN;\n }\n\n protected toggleVisibility(column: IColumnSettings): void {\n const isHidden = column.status === EColumnStatus.HIDDEN;\n column.status = isHidden ? EColumnStatus.DEFAULT : EColumnStatus.HIDDEN;\n\n const { children } = column;\n\n // Если есть дочерние узлы то устанавливать статус текущего узла\n if (children) {\n column.children = children.map((childColumn) => ({ ...childColumn, status: column.status }));\n }\n\n const parentColumn = this.parent();\n const parentChildren = parentColumn?.children;\n\n if (parentColumn && parentChildren && parentChildren.length > 0) {\n const allChildrenHidden = parentChildren.every(\n (childColumn) => childColumn.status === EColumnStatus.HIDDEN\n );\n\n parentColumn.status = allChildrenHidden ? EColumnStatus.HIDDEN : EColumnStatus.DEFAULT;\n }\n }\n\n protected dropIntoChildren(event: CdkDragDrop<IColumnSettings[]>): void {\n const currentChildren = this.column().children;\n\n if (!currentChildren) {\n console.warn('Попытка переместить в столбец без дочернего массива:', this.column());\n return;\n }\n\n if (event.previousContainer === event.container) {\n moveItemInArray(currentChildren, event.previousIndex, event.currentIndex);\n } else {\n transferArrayItem(\n event.previousContainer.data,\n currentChildren,\n event.previousIndex,\n event.currentIndex\n );\n }\n }\n}\n","@let col = column();\n@let isHidden = isHiddenColumn(col);\n@let currentEyeIcon = isHidden ? iconEyeClosed : iconEye;\n@let childrenColumns = col.children ?? [];\n\n<div\n class=\"column-item\"\n [class.hidden]=\"isHidden\"\n cdkDrag\n [cdkDragData]=\"col\"\n (cdkDragStarted)=\"collapseNested()\"\n>\n <img [ngSrc]=\"iconEditorDots\" [width]=\"16\" [height]=\"32\" alt=\"\" />\n @if (canExpand()) {\n <img\n class=\"expanded\"\n [ngSrc]=\"iconChevron\"\n [width]=\"16\"\n [height]=\"16\"\n [attr.expanded]=\"expanded()\"\n alt=\"\"\n (click)=\"toggleNested()\"\n />\n }\n <span class=\"column-item__name\">{{ col.name }}</span>\n @if (status() === EColumnStatus.STICKY) {\n <img\n class=\"pointer\"\n [ngSrc]=\"iconLock\"\n [width]=\"16\"\n [height]=\"16\"\n tuiHint=\"Нельзя скрыть закрепленную колонку\"\n />\n } @else {\n <img\n class=\"eye-icon\"\n [ngSrc]=\"currentEyeIcon\"\n [width]=\"16\"\n [height]=\"16\"\n tuiHint=\"Показать/Скрыть колонку\"\n (click)=\"toggleVisibility(col)\"\n />\n }\n\n <ng-template cdkDragPlaceholder>\n <div class=\"custom-placeholder\"></div>\n </ng-template>\n</div>\n\n@if (canExpand()) {\n <tui-expand\n class=\"nested-columns\"\n cdkDropList\n [expanded]=\"expanded()\"\n [cdkDropListData]=\"childrenColumns\"\n (cdkDropListDropped)=\"dropIntoChildren($event)\"\n >\n @for (childCol of childrenColumns; track childCol.id) {\n <sproc-column-settings-template\n [column]=\"childCol\"\n [parent]=\"col\"\n ></sproc-column-settings-template>\n }\n </tui-expand>\n}\n","import { inject, Injectable, Injector } from '@angular/core';\nimport { PrizmDialogService } from '@prizm-ui/components';\nimport { Observable } from 'rxjs';\nimport { DialogContext, DialogOptions, DialogOverlayInsidePlacement } from './dialog.types';\nimport { tuiDialog, TuiDialogOptions, TuiDialogService } from '@taiga-ui/core';\nimport { PolymorpheusContent } from '@taiga-ui/polymorpheus';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DialogService {\n private readonly _dialogService = inject(PrizmDialogService);\n private readonly _tuiDialogService = inject(TuiDialogService);\n\n public openModal(\n template: unknown,\n config: Partial<DialogOptions<unknown, unknown>>\n ): Observable<any> {\n return this._dialogService.open(template, {\n closeable: false,\n width: 440,\n position: DialogOverlayInsidePlacement.CENTER,\n backdrop: true,\n ...config,\n });\n }\n\n public openModalTaiga<Context extends DialogContext, Result = any>(\n component: new (...args: any[]) => unknown,\n context: Context,\n injector?: Injector\n ): Observable<Result> {\n const dialog = tuiDialog(component, {\n injector,\n closeable: context.closeable ?? false,\n dismissible: context.dismissible ?? true,\n size: context.size ?? 'auto',\n }) as (data: any) => Observable<Result>;\n\n return dialog({\n ...context,\n });\n }\n\n /**\n * Универсальная функция открытия диалога\n *\n * @param content - контент (компонент, ng-template или функция)\n * @param context - данные для передачи в контент\n * @param options - доп. настройки диалога (ширина, заголовок и т.д.)\n */\n public openTuiDialogWithTemplate<T = void>(\n content: PolymorpheusContent<TuiDialogOptions<T>>,\n context?: Partial<TuiDialogOptions<T>>,\n options?: Partial<TuiDialogOptions<T>>\n ): Observable<T> {\n return this._tuiDialogService.open<T>(content, {\n ...context,\n ...options,\n });\n }\n}\n","export const STORED_TIMEZONE = 'storedTimezone';\n","import { PrizmDay, PrizmTime } from '@prizm-ui/components';\n\nexport enum EDatePattern {\n MONTH_YEAR = 'MM.yyyy',\n DATE = 'dd.MM.yyyy',\n SHORT_YEAR_DATE = 'dd.MM.yy',\n DATE_TIME_WITHOUT_SECONDS = 'dd.MM.yyyy HH:mm',\n DATE_TIME = 'dd.MM.yyyy HH:mm:ss',\n YEAR_MONTH_DAY = 'yyyy-MM-dd',\n DD_MM_YYYY = 'dd-MM-yyyy',\n DATE_TIME_ISO_MARKED_TIMEZONE = `yyyy-MM-dd'T'HH:mm:ss`,\n YYYY_MM_DD = 'yyyy/MM/dd',\n MMMM_YYYY = 'MMMM YYYY',\n DATE_TIME_ISO_PATTERN = 'YYYY-MM-DDTHH:mm:ss',\n DATE_TIME_FOR_TRACKER = 'YYYY-MM-DD HH:mm:ss',\n DATE_TIME_FOR_TRACKER_NOT_SIMPLE = 'yyyy-MM-dd HH:mm:ss',\n TUI_YMD = 'YMD',\n DAY = 'd',\n HOUR_MINUTE = 'HH:mm',\n}\n\nexport enum EMomentPattern {\n YYYY_MM_DD = 'YYYY-MM-DD',\n YYYYMMDD = 'yyyy/MM/DD',\n}\n\nexport enum ETimezone {\n UTC = '+00:00',\n MSK = '+03:00',\n AQT = '+05:00',\n NVS = '+07:00',\n IRK = '+08:00',\n YAK = '+09:00',\n}\n\nexport type SmaPrizmDateTime = [PrizmDay, PrizmTime | undefined];\n","import { Injectable } from '@angular/core';\nimport { format } from 'date-fns';\nimport moment, { Moment } from 'moment-timezone';\nimport { BehaviorSubject } from 'rxjs';\nimport { STORED_TIMEZONE } from '../consts/date-time.consts';\nimport { EDatePattern, ETimezone, SmaPrizmDateTime } from '../directives/date/date-time.types';\nimport {\n PrizmDateTimeRange,\n PrizmDay,\n PrizmDayRange,\n PrizmTime,\n PrizmTimeRange,\n} from '@prizm-ui/components';\nimport { TuiDay } from '@taiga-ui/cdk';\n\nexport interface ITimeZone {\n time_diff: string;\n string: string;\n value: string;\n}\n\nexport interface ICurrentTime_TZ {\n current_time: string;\n picked_time_zone: ITimeZone;\n}\n\n// Не менять формат, названия и ' ' оставлять всегда\n// 'UTC ' - оставлять\n// Eсли менять,изменить фильтры в ДО\nexport const timezoneSelectItems = [\n 'UTC +00:00',\n 'Europe/Moscow +03:00',\n 'Asia/Aqtau +05:00',\n 'Asia/Yekaterinburg +05:00',\n 'Asia/Novosibirsk +07:00',\n 'Asia/Krasnoyarsk +07:00',\n 'Asia/Irkutsk +08:00',\n 'Asia/Yakutsk +09:00',\n];\nexport const TIME_ZONES: ITimeZone[] = [\n {\n value: 'Etc/GMT',\n string: '+00:00 UTC',\n time_diff: ETimezone.UTC,\n },\n {\n value: 'Europe/Moscow',\n string: '+03:00 Москва',\n time_diff: ETimezone.MSK,\n },\n {\n value: 'Asia/Aqtau',\n string: '+05:00 Тюмень',\n time_diff: ETimezone.AQT,\n },\n {\n value: 'Asia/Novosibirsk',\n string: '+07:00 Томск',\n time_diff: ETimezone.NVS,\n },\n {\n value: 'Asia/Irkutsk',\n string: '+08:00 Иркутск',\n time_diff: ETimezone.IRK,\n },\n {\n value: 'Asia/Yakutsk',\n string: '+09:00 Якутск',\n time_diff: ETimezone.YAK,\n },\n];\n\nexport const TIME_ZONE_HINTS: Record<string, string> = {\n '+00:00': '+00:00 UTC',\n '+03:00': 'ГПН-БС, ГПН-ГЕО, ГПН-НС, ГПН-ТП, ГПН-Щ, МНГП, НТЦ, Парадная, СПД',\n '+05:00':\n 'ГПН-А, ГПН-БГП, ГПН-З, ГПН-ИТО, ГПН-М, ГПН-Н, ГПН-О, ГПН-Р, ГПН-С, ГПН-Х, ГПН-Я, МРТ, МсНГ, МЭН, ННГГФ, НТН, НЭН, СН-МНГ',\n '+07:00': 'ГПН-В, МНГ-Г, ИН-ВНК',\n '+08:00': 'Игнялинское м/р',\n '+09:00': 'Чаяндинское м/р, Тымпучиканское м/р, Вакунайское м/р, Тас-Юряхское м/р',\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DateTimeService {\n public readonly currentTimeTZ: ICurrentTime_TZ = {\n picked_time_zone: TIME_ZONES[1],\n current_time: new Date().toISOString(),\n };\n\n private readonly _isTimeZoneChanged = new BehaviorSubject<ITimeZone>(\n this.currentTimeTZ.picked_time_zone\n );\n public isTimeZoneChanged$ = this._isTimeZoneChanged.asObservable();\n\n public constructor() {\n const storedTimeZone = localStorage.getItem(STORED_TIMEZONE);\n\n if (storedTimeZone) {\n this.currentTimeTZ.picked_time_zone = JSON.parse(storedTimeZone) as ITimeZone;\n } else {\n this.currentTimeTZ.current_time = this.getCurrentTime();\n }\n }\n\n public updateTimezone(time_zone: ITimeZone): void {\n localStorage.setItem(STORED_TIMEZONE, JSON.stringify(time_zone));\n\n this.currentTimeTZ.picked_time_zone = time_zone;\n this.currentTimeTZ.current_time = this.getCurrentTime();\n this._isTimeZoneChanged.next(this.currentTimeTZ.picked_time_zone);\n }\n\n public refreshDatePicked(): void {\n this._isTimeZoneChanged.next(this.currentTimeTZ.picked_time_zone);\n }\n\n public getCurrentTime(): string {\n const options: Intl.DateTimeFormatOptions = {\n timeZone: this.currentTimeTZ.picked_time_zone.value,\n hour12: false,\n hour: '2-digit',\n minute: '2-digit',\n };\n return new Date().toLocaleString('en-GB', options);\n }\n\n public triggerTimeUpdate(timeZone: ITimeZone): void {\n this._isTimeZoneChanged.next(timeZone);\n }\n\n /**\n * @param utc время в UTC\n * @param pattern\n * Строка состоящая из:\n *dd - день,\n *MM - месяц,\n *yyyy - год,\n *HH - часы в 24ч-формате,\n *hh - часы в 12ч-формате,\n *mm - минуты,\n *ss - секунды,\n *sss - миллисекунды,\n */\n public parseDate(utc: string, pattern: string): string {\n const date: Date = this.isoToLocalDate(utc);\n\n return format(date, pattern);\n }\n\n /** @deprecated use parseDate(iso: string, pattern: string): string method */\n public parseDateToMMYYYY(iso: string): string {\n const options: Intl.DateTimeFormatOptions = {\n hour12: false,\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n };\n\n const date = this.isoToLocalDate(iso).toLocaleString('en-GB', options);\n const [_, month, year] = date.split('/');\n\n return `${month}.${year}`;\n }\n\n /** @deprecated use parseDate(iso: string, pattern: string): string method */\n public parseDateToDDMMYYYY(iso: string): string {\n const options: Intl.DateTimeFormatOptions = {\n hour12: false,\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n };\n\n const date = this.isoToLocalDate(iso).toLocaleString('en-GB', options);\n const [day, month, year] = date.split('/');\n\n return `${day}.${month}.${year}`;\n }\n\n public isoToLocalDate(iso: string, tzDiff?: string): Date {\n const date = this.isoToUTCDate(iso);\n let diffTZ = tzDiff;\n if (!tzDiff) {\n diffTZ = this.currentTimeTZ.picked_time_zone.time_diff;\n }\n\n const hours = Number.parseInt(diffTZ!, 10);\n date.setHours(date.getHours() + hours);\n\n return date;\n }\n\n public isoToUTCDate(iso: string): Date {\n let dateString = iso;\n\n // Перевод из таймзоны сервера к UTC\n if (this._hasTimeZone(iso)) {\n dateString = new Date(iso).toISOString();\n }\n\n if (dateString.includes('Z')) {\n dateString = dateString.slice(0, dateString.lastIndexOf('Z'));\n }\n\n return new Date(dateString);\n }\n\n private _hasTimeZone(iso: string): boolean {\n const timeZoneRegex = /[+-]\\d{2}(:\\d{2})?$/;\n\n return timeZoneRegex.test(iso);\n }\n\n /**\n * Возвращает дату конвертированную в ISO формат без учета таймзоны\n * */\n public dateToIsoWithoutTimeZone(date: Date): string | null {\n let result = null;\n\n if (date) {\n const timestamp = date.getTime() - date.getTimezoneOffset() * 60_000;\n const correctDate = new Date(timestamp);\n\n result = correctDate.toISOString();\n }\n\n return result;\n }\n\n public formatDateSave(date?: string | null, option?: 'YMD'): string {\n let result = '';\n if (date) {\n result = option ? format(date, 'yyyy-MM-dd') : format(date, EDatePattern.DATE);\n }\n return result;\n }\n\n public formatTimeSave(date?: string): string {\n const dateTime: Date = new Date(date!);\n const result = [dateTime.getHours(), dateTime.getMinutes(), dateTime.getSeconds()]\n .map((time) => (time < 10 ? `0${time}` : time))\n .join(':');\n return result;\n }\n\n public toISOString(date: Date, tzDiff?: string): string {\n let diffTZ = tzDiff;\n if (!tzDiff) {\n diffTZ = this.currentTimeTZ.picked_time_zone.time_diff;\n }\n\n const m = this._momentWithTZ(date, diffTZ!);\n\n return m.toISOString();\n }\n\n public _momentWithTZ(date: Date, timezone: string): Moment {\n const iso = this._dateToISOSliceZ(date);\n let tz = timezone;\n if (timezone === ETimezone.UTC) {\n tz = 'Z';\n }\n\n return moment.parseZone(`${iso}${tz}`);\n }\n\n private _dateToISOSliceZ(date: Date): string {\n const iso = this.dateToIsoWithoutTimeZone(date)!;\n\n return iso.includes('Z') ? iso.slice(0, iso.lastIndexOf('Z')) : iso;\n }\n\n public convertDateToISOWithTZ(date: Date, tz: string): string {\n const pad = (str: number) => str.toString().padStart(2, '0');\n const datePart = `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;\n const timePart = `${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`;\n\n return `${datePart}T${timePart}${tz}`;\n }\n\n public now(): Date {\n const date = new Date();\n const [hour, minutes] = this.currentTimeTZ.current_time\n .split(':')\n .map((value) => Number.parseInt(value, 10));\n date.setHours(hour);\n date.setMinutes(minutes);\n\n return date;\n }\n\n /**\n * return объект типа moment с таймзоной выбранной в приложении\n * */\n public momentNowWithLocalTimezone(): Moment {\n return moment.tz(this.currentTimeTZ.picked_time_zone.value);\n }\n\n public nowUTC(): Date {\n return new Date(moment.utc().format());\n }\n\n public getWorkingDatesCount(startDate: Date, endDate: Date): number {\n const sunday = 0;\n const saturday = 6;\n\n let count = 0;\n const currentDate = new Date(startDate);\n\n while (currentDate <= endDate) {\n const dayOfWeek = currentDate.getDay();\n\n if (dayOfWeek !== sunday && dayOfWeek !== saturday) {\n count += 1;\n }\n\n currentDate.setDate(currentDate.getDate() + 1);\n }\n\n return count;\n }\n\n public getCurrentDateWithoutTime(): Date {\n const currentDate = new Date();\n\n currentDate.setHours(0);\n currentDate.setMinutes(0);\n currentDate.setSeconds(0);\n currentDate.setMilliseconds(0);\n\n return currentDate;\n }\n\n public getDateWithoutTime(date: Date): Date {\n date.setHours(0);\n date.setMinutes(0);\n date.setSeconds(0);\n date.setMilliseconds(0);\n\n return date;\n }\n\n public getXMonthBackDate(monthBackNumber: number): Date {\n const currentDate = new Date();\n currentDate.setMonth(currentDate.getMonth() - monthBackNumber);\n return currentDate;\n }\n\n public prizmDateTimeRangeToNativeDates(range: PrizmDateTimeRange): { from: Date; to: Date } {\n const { dayRange, timeRange } = range;\n\n const from = this.prizmDateTimeToNativeDate([dayRange.from, timeRange?.from]);\n const to = this.prizmDateTimeToNativeDate([dayRange.to, timeRange?.to]);\n\n return { from, to };\n }\n\n public prizmDateTimeRangeFromNativeDates(from: Date, to: Date): PrizmDateTimeRange {\n return new PrizmDateTimeRange(\n PrizmDayRange.fromLocalNativeDate(from, to),\n new PrizmTimeRange(PrizmTime.fromLocalNativeDate(from), PrizmTime.fromLocalNativeDate(to))\n );\n }\n\n public prizmDateTimeToNativeDate(prizmDateTime: SmaPrizmDateTime): Date {\n const [day, time] = prizmDateTime;\n const date = new Date(day.toLocalNativeDate());\n\n if (time) {\n date.setHours(time.hours, time.minutes, time.seconds, time.ms);\n }\n\n return date;\n }\n\n public getTuiDayFromString(date: string): TuiDay {\n const localDate = this.isoToLocalDate(date);\n return new TuiDay(localDate.getFullYear(), localDate.getMonth(), localDate.getDate());\n }\n\n public getTuiDayFromDate(date: Date): TuiDay {\n return new TuiDay(date.getFullYear(), date.getMonth(), date.getDate());\n }\n\n public transferTuiDayToString(date: TuiDay | null, pattern?: EDatePattern): string | null {\n return date ? format(date.toLocalNativeDate(), pattern ?? EDatePattern.YEAR_MONTH_DAY) : null;\n }\n\n public toSmaPrizmDateTime(dateString: string): SmaPrizmDateTime {\n const date = new Date(dateString);\n const hours = date.getHours();\n const min = date.getMinutes();\n const day = PrizmDay.fromLocalNativeDate(date);\n const time = new PrizmTime(hours, min);\n return [day, time];\n }\n}\n","import {\n AsyncValidatorFn,\n FormControl,\n FormControlOptions,\n FormControlState,\n ValidatorFn,\n} from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\nimport { IInputControl, InputControlGqlValue } from '../../types/inputs.types';\nimport { signal, WritableSignal } from '@angular/core';\n\nexport class InputControl<ValueType = any, SavedValueType = any>\n extends FormControl\n implements IInputControl<ValueType, SavedValueType>\n{\n public saved_value$!: BehaviorSubject<SavedValueType | null>;\n public gql_value: InputControlGqlValue;\n /** По полю применена фильтрация */\n applied?: WritableSignal<boolean>;\n\n constructor(\n value: FormControlState<ValueType> | ValueType,\n validatorOrOpts?: ValidatorFn | ValidatorFn[] | FormControlOptions | null,\n asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null\n ) {\n super(value, validatorOrOpts, asyncValidator);\n this.saved_value$ = new BehaviorSubject<SavedValueType | null>(null);\n this.applied = signal(false);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { IInputsStateConfig } from '../types';\n\nexport const INPUTS_STATE_CONFIG_KEY = new InjectionToken<IInputsStateConfig>(\n 'INPUTS_STATE_CONFIG_KEY'\n);\n\nexport const WARN_SEARCH_INPUT_UNDEFINED =\n 'Поле поиска не инициализировано. Пожалуйста задайте конфигурацию searchInput: true при провайде INPUTS_STATE_CONFIG_KEY';\n","import { Injectable, Injector, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { FormGroupWrapper } from '../core/form-group-wrapper/form-group-wrapper';\nimport { ITpUserSettingsSettingsFilter } from '../types/register-base.types';\nimport { ExtractForm } from '../types/sub-types';\nimport { IInputControl, IInputsStateConfig } from '../types/inputs.types';\nimport { InputControl } from '../core/input-control/input-control';\nimport { INPUTS_STATE_CONFIG_KEY, WARN_SEARCH_INPUT_UNDEFINED } from '../consts/inputs.consts';\n\n@Injectable()\nexport class InputsService<FormType> implements OnDestroy {\n protected readonly config: IInputsStateConfig;\n protected readonly unsubscribe$ = new Subject<void>();\n\n private readonly _searchInput: IInputControl<string | null> | undefined;\n public inputs!: FormGroupWrapper<FormType>;\n\n constructor(private readonly injector: Injector) {\n this.config = this.injector.get(INPUTS_STATE_CONFIG_KEY, {});\n\n const { searchInput } = this.config;\n\n if (searchInput) {\n this._searchInput = new InputControl<string | null>(null);\n }\n }\n\n public get searchInput(): IInputControl<string | null> | undefined {\n if (!this._searchInput) {\n console.warn(WARN_SEARCH_INPUT_UNDEFINED);\n }\n\n return this._searchInput;\n }\n\n public get searchValue(): string | null | undefined {\n return this.searchInput?.getRawValue();\n }\n\n public init(group: FormGroupWrapper<FormType>): void {\n this.inputs = group;\n }\n\n public get values(): ExtractForm<FormType> {\n return this.inputs.getRawValue() as ExtractForm<FormType>;\n }\n\n public get dirtyValues(): Partial<ExtractForm<FormType>> {\n return this.inputs.getDirtyValues();\n }\n\n public clear(): void {\n this.inputs.reset();\n }\n\n public setUserSettingsFilterValues(values: ITpUserSettingsSettingsFilter[]): void {\n this.clear();\n\n for (const { id, value } of values) {\n const key = id as keyof FormType;\n const control = this._control<any, any>(key);\n\n if (control?.saved_value$) {\n control.saved_value$.next(value);\n } else {\n console.warn(`Не найдено поле: ${id} для установки значения:`, value);\n }\n }\n }\n\n private _control<ValueType extends FormType[keyof FormType], SavedValueType>(\n key: keyof FormType\n ): IInputControl<ValueType, SavedValueType> {\n return this.inputs.controls[key] as IInputControl<ValueType, SavedValueType>;\n }\n\n public get userSettingsFilter(): ITpUserSettingsSettingsFilter[] {\n return Object.entries(this.inputs.controls).map(([id, abstractControl]) => {\n const control = abstractControl as IInputControl;\n const value = control.saved_value$.getValue();\n const savedValue = value === null ? null : value;\n\n return {\n id,\n value: savedValue,\n };\n });\n }\n\n public get gqlFilter(): Record<string, any>[] {\n const filter: Record<string, any>[] = [];\n\n for (const abstractControl of Object.values(this.inputs.controls)) {\n const control = abstractControl as IInputControl;\n\n if (control.gql_value) {\n filter.push(control.gql_value);\n }\n\n control.applied?.set(!!control.gql_value);\n }\n\n if (this.searchValue && this.searchInput?.gql_value) {\n filter.push(this.searchInput.gql_value);\n }\n\n return filter;\n }\n\n public ngOnDestroy(): void {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","export function isNonNull<T>(value: T): value is NonNullable<T> {\n return value !== null;\n}\n\nexport function isDefined<T>(value: T | null | undefined): value is T {\n return value !== null && value !== undefined;\n}\n\nexport function toPx(n: number): string {\n return `${n || 0}px`;\n}\n","export const CARD = 'card';\n\ntype SegmentPosition = 'first' | 'last';\n\nconst getCardSegment = (url: URL): string | null => {\n if (url.pathname.includes(CARD) && url.search) {\n const id = url.searchParams.get('id');\n if (id) {\n const segments = url.pathname.split('/').filter(Boolean);\n const cardIndex = segments.indexOf(CARD.replace(/^\\//, ''));\n\n if (cardIndex !== -1 && cardIndex > 0) {\n const tableIndex = cardIndex - 1;\n const relevantPath = segments.slice(tableIndex, cardIndex + 1).join('/');\n return `${relevantPath}?id=${id}`;\n }\n }\n }\n return null;\n};\n\nconst getSegmentOfPathName = (pathname: string, position: SegmentPosition): string => {\n const url = new URL(pathname, window.location.origin);\n const segments = url.pathname.split('/').filter(Boolean);\n\n if (position === 'first') {\n return segments[0] ?? '/';\n }\n\n const cardSegment = getCardSegment(url);\n if (cardSegment !== null) {\n return cardSegment;\n }\n\n return segments.pop() ?? '';\n};\n\nexport const getFirstSegmentOfPathName = (pathname: string): string =>\n getSegmentOfPathName(pathname, 'first');\n\n/**\n * Функция возвращает первый сегмент ссылки\n * Если первого сегмента нет, возвращается корневой сегмент - '/'\n * */\nexport const getLastSegmentOfPathName = (pathname: string): string =>\n getSegmentOfPathName(pathname, 'last');\n","import {asyncScheduler, distinctUntilChanged, MonoTypeOperatorFunction, Observable, of,} from 'rxjs';\nimport {observeOn} from 'rxjs/operators';\nimport {isEqual} from 'lodash';\n\nexport function distinctUntilChangedJSONs<T>(): MonoTypeOperatorFunction<T> {\n return distinctUntilChanged((prev, curr) => isEqual(prev, curr));\n}\n\n/**\n * Перемещает выполнение функции на указанное количество итераций в цикле событий.\n *\n * @param count - Количество итераций цикла событий для перемещения.\n * @returns Оператор, который можно использовать с Observable для продолжения цепочки.\n */\nexport function moveInEventLoopIteration<T>(count: number): MonoTypeOperatorFunction<T> {\n return (source: Observable<T>) => {\n if (!count) {\n return source;\n }\n\n let newSource = source.pipe(observeOn(asyncScheduler, 0));\n\n if (count > 1) {\n newSource = newSource.pipe(moveInEventLoopIteration(count - 1));\n }\n\n return newSource;\n };\n}\n\nexport function just(): Observable<null> {\n return of(null);\n}\n","import { IFilterSelectValue } from '../types';\n\nexport const SELECT_ALL_ID = '-1';\nexport const SELECT_ALL_NAME = 'Выбрать все';\n\nexport function removeSelectAll(arr: IFilterSelectValue[] | null): IFilterSelectValue[] | null {\n const array = arr?.slice() ?? null;\n\n if (array && array[0] && 'id' in array[0] && array[0].id === SELECT_ALL_ID) {\n array.shift();\n }\n\n return array;\n}\n\nexport const selectAllItem = { id: SELECT_ALL_ID, name: SELECT_ALL_NAME };\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { filter, map, Observable, Subject, takeUntil } from 'rxjs';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { IInputControl } from '../../types/inputs.types';\nimport { FormGroupWrapper } from '../../core/form-group-wrapper/form-group-wrapper';\nimport { distinctUntilChangedJSONs } from '../../utils';\nimport { ITpUserSettingsSettingsFilter } from '../../types/register-base.types';\n\nexport const FILTERS_QUERY_PARAMS_KEY = 'filters';\nexport const FILTERS_QUERY_PARAMS_VALUE_EMPTY = 'empty';\nexport const SEARCH_QUERY_PARAMS_KEY = 'search';\n\n@Injectable()\nexport class FiltersTransmitService implements OnDestroy {\n protected readonly _unsubscribe$ = new Subject<void>();\n\n protected formGroup?: FormGroupWrapper<any>;\n protected searchInput?: IInputControl<string | null>;\n\n constructor(\n private readonly _router: Router,\n private readonly _route: ActivatedRoute\n ) {}\n\n public setForm(formGroup: FormGroupWrapper<any>): void {\n this.formGroup = formGroup;\n }\n\n public setSearchInput(searchInput: IInputControl<string | null> | undefined): void {\n this.searchInput = searchInput;\n }\n\n public subscribeOnApplyFormValues(observable: Observable<unknown>): void {\n observable\n .pipe(\n distinctUntilChangedJSONs(),\n filter(() => !!this.formGroup),\n map(() => this.formGroup!),\n takeUntil(this._unsubscribe$)\n )\n .subscribe((formGroup) => {\n const filtersEmpty = Object.values(formGroup.getRawValue()).every((val) => val === null);\n const filters = filtersEmpty ? FILTERS_QUERY_PARAMS_VALUE_EMPTY : this.stringifyValues;\n const search = this.searchInput?.getRawValue() || undefined;\n\n this._setQueryParams({\n [SEARCH_QUERY_PARAMS_KEY]: search,\n [FILTERS_QUERY_PARAMS_KEY]: filters,\n });\n });\n }\n\n public get stringifyValues(): string | undefined {\n const values = Object.entries(this.formGroup?.controls ?? {})\n .map(([id, abstractControl]) => {\n const control = abstractControl as IInputControl;\n const value = control.saved_value$.getValue();\n const savedValue = value === null ? null : value;\n\n return {\n id,\n value: savedValue,\n };\n })\n .filter(({ value }) => value !== null);\n\n if (values.length > 0) {\n return JSON.stringify(values);\n }\n\n return;\n }\n\n public get filters(): ITpUserSettingsSettingsFilter[] | undefined {\n const param = this._route.snapshot.queryParams[FILTERS_QUERY_PARAMS_KEY];\n\n if (param === FILTERS_QUERY_PARAMS_VALUE_EMPTY) {\n return;\n }\n\n if (param) {\n return JSON.parse(param);\n }\n\n return [];\n }\n\n public get search(): string | undefined {\n return this._route.snapshot.queryParams[SEARCH_QUERY_PARAMS_KEY];\n }\n\n private _setQueryParams(queryParams: Record<string, string | undefined>): void {\n this._router.navigate([], {\n relativeTo: this._route,\n queryParams,\n queryParamsHandling: 'merge',\n replaceUrl: true,\n });\n }\n\n public ngOnDestroy(): void {\n this._unsubscribe$.next();\n this._unsubscribe$.complete();\n }\n}\n","import { Injectable, Injector, Optional } from '@angular/core';\nimport { InputsService } from '../inputs.service';\nimport { FiltersTransmitService } from './filters-transmit.service';\nimport { FormGroupWrapper } from '../../core/form-group-wrapper/form-group-wrapper';\n\n@Injectable()\nexport class FiltersService<FormType> extends InputsService<FormType> {\n constructor(\n injector: Injector,\n @Optional() private readonly _transmitter: FiltersTransmitService\n ) {\n super(injector);\n }\n\n public override init(group: FormGroupWrapper<FormType>): void {\n super.init(group);\n\n this._transmitter?.setForm(this.inputs);\n this._transmitter?.setSearchInput(this.searchInput);\n }\n}\n","import { FormControl } from '@angular/forms';\nimport { WhereBoolExp } from 'hasura';\nimport { BehaviorSubject } from 'rxjs';\nimport { JsonValue } from 'type-fest';\nimport { WritableSignal } from '@angular/core';\n\nexport enum EInputsState {\n HIDDEN,\n FILTER_LIST,\n SAVED_LIST,\n ON_EDIT_FILTER,\n ON_SAVE_FILTER,\n}\n\nexport enum EInputsAction {\n CANCEL,\n APPLY_FILTERS,\n APPLY_SAVED_FILTER,\n AFTER_SAVE_FILTER,\n EDIT_FILTER_NAME,\n EDIT_FILTER,\n OPEN,\n}\n\nexport interface IInputsState {\n state: EInputsState;\n action: EInputsAction;\n}\n\nexport interface IInputsStateConfig {\n defaultPin?: boolean;\n searchInput?: boolean;\n}\n\nexport interface IInputControl<ValueType = any, SavedValueType = any>\n extends FormControl<ValueType> {\n saved_value$: BehaviorSubject<SavedValueType | null>;\n gql_value: InputControlGqlValue;\n /** По полю применена фильтрация */\n applied?: WritableSignal<boolean>;\n}\n\nexport type InputControlSaveValue = JsonValue | null;\n\nexport type InputControlGqlValue =\n | WhereBoolExp<Record<string, any>>\n // TODO точнее типизировать\n | any\n | undefined;\n\nexport type GqlFields = (string | GqlField)[] | GqlField;\n\nexport interface GqlField {\n [key: string]:\n | string\n | string[]\n | number\n | number[]\n | boolean\n | boolean[]\n | GqlField\n | GqlField[];\n}\n","import { Observable, Subscription } from 'rxjs';\nimport { WhereBoolExp } from 'hasura';\nimport { SETTINGS_TYPE } from '../consts/register-base.consts';\nimport { IUserProfile } from './user-profile.types';\nimport { IHasuraQueryFilter, ThWidthEntry } from '../components/register-table/model/schema';\nimport { MutationResult } from 'apollo-angular';\nimport { ITableColumnSettings } from '../components/column-settings/types/column-settings.types';\n\nexport interface IRegisterBase {\n /** @deprecated плохая практика, используйте событие visibleRowsChanges из RegisterTableComponent */\n is_visible?: boolean;\n id: any;\n}\n\nexport interface ITpUserSettings {\n id: string;\n id_user: string;\n name: string;\n module_name: string;\n settings: ITpUserSettingsSettings;\n settings_type: SETTINGS_TYPE;\n}\n\nexport interface ITpUserSettingsSettings {\n name?: string;\n favorite?: boolean;\n filter?: ITpUserSettingsSettingsFilter[];\n tableFields?: ITableColumnSettings;\n expandType?: string;\n switchValue?: 0 | 1;\n menuState?: boolean;\n tableColumnsWidth?: ThWidthEntry[];\n pageRowsLimit?: number;\n referer?: string;\n pinned?: boolean;\n}\n\nexport interface ITpUserSettingsSettingsFilter {\n id: string;\n value: unknown;\n}\n\nexport enum ERegisterObjectState {\n SELECTED = 'SELECTED',\n UNSELECTED = 'UNSELECTED',\n}\n\nexport interface IRegisterObject<T = any> {\n object?: T;\n state: ERegisterObjectState;\n}\n\nexport type ObjectsSubscriptionConfig<DataType, FilterType = Record<string, any>> = {\n filter: FilterType;\n callback?: (data: DataType[]) => void;\n noSet?: boolean;\n};\n\n/** Интерфейс сервиса управления пользовательскими настройками */\nexport interface IUserSettingsLoader<T extends ITpUserSettings = any> {\n /** Пользовательские настройки */\n settings$: Observable<T[]>;\n /** Запрос пользовательских настроек по фильтру */\n fetchUserSettings$(where: WhereBoolExp<T>, hidden?: boolean): Observable<T[]>;\n /** Запрос пользовательских настроек по фильтру (Эффект для фильтров) */\n fetchUserSettingsByUserId: (\n observableOrValue:\n | {\n userId: string;\n settingsType: SETTINGS_TYPE;\n moduleName: string;\n }\n | Observable<{\n userId: string;\n settingsType: SETTINGS_TYPE;\n moduleName: string;\n }>\n ) => Subscription;\n /** Состояние загрузки пользовательских настроек */\n loading$: Observable<boolean>;\n /** Мутация на создание или обновление пользовательской настройки */\n upsertUserSettingsByUserId: (\n observableOrValue:\n | {\n settings: Partial<T>;\n hidden?: boolean;\n updateSettings?: boolean;\n }\n | Observable<{\n settings: Partial<T>;\n hidden?: boolean;\n updateSettings?: boolean;\n }>\n ) => Subscription;\n /** Мутация на обновление пользовательской настройки (Эффект для фильтров) */\n updateUserSettingsSettingsById: (\n observableOrValue:\n | {\n id: string;\n settings: ITpUserSettingsSettings;\n }\n | Observable<{\n id: string;\n settings: ITpUserSettingsSettings;\n }>\n ) => Subscription;\n /** Удаление пользовательской настройки (Эффект для фильтров) */\n deleteUserSettingsById: (\n observableOrValue:\n | {\n id: string;\n updateSettings?: boolean;\n }\n | Observable<{\n id: string;\n updateSettings?: boolean;\n }>\n ) => Subscription;\n /** Результат выполнения мутации */\n upsertReturningOne$(type: SETTINGS_TYPE): Observable<ITpUserSettings | null>;\n /** Завершение создания или обновления пользовательской настройки */\n upsertEnded$: Observable<void>;\n}\n\n/** Интерфейс сервиса управления аутентификацией пользователя */\nexport interface IUserProfileLoader<T extends IUserProfile, PermissionType = unknown> {\n /** Аутентифицированный пользователь */\n getUserProfile(): T;\n /** Метод проверки привилегий пользователя */\n checkPermissions(permissions: PermissionType[], every?: boolean): boolean;\n}\n\nexport interface IBaseRegisterStoreState<T> {\n loading: boolean;\n count: number;\n total: number;\n objects: T[];\n}\n\nexport interface IBaseRegisterStore<Type extends Record<string, any>> {\n readonly deleteByIds: (\n ids: string[],\n date: Date,\n ...args: unknown[]\n ) => Observable<MutationResult<Type[]> | null>;\n\n readonly fetchTotal: (\n observableOrValue: Record<string, any> | Observable<Record<string, any>>\n ) => Subscription;\n readonly fetchObjects: (\n observableOrValue:\n | {\n filter: IHasuraQueryFilter<Type>;\n callback?: (data: Type[]) => void;\n }\n | Observable<{\n filter: IHasuraQueryFilter<Type>;\n callback?: (data: Type[]) => void;\n }>\n ) => Subscription;\n}\n","import { DestroyRef, inject, Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { EInputsAction, EInputsState, GqlFields, IInputsState } from '../types';\nimport { Router } from '@angular/router';\nimport { getLastSegmentOfPathName } from '../utils';\nimport { RegisterTableCellSorter } from '../components/register-table/model/schema';\n\nexport const DEFAULT_LIMIT = 30;\n\n@Injectable()\nexport class InputsStateService<T = any> implements OnDestroy {\n protected readonly unsubscribe$ = new Subject<void>();\n\n protected readonly _page$ = new BehaviorSubject<number>(1);\n protected readonly _limit$ = new BehaviorSubject<number | null>(null);\n protected readonly _offset$ = new BehaviorSubject<number>(0);\n protected readonly _count$ = new BehaviorSubject<number>(0);\n protected readonly _sorter$ = new BehaviorSubject<RegisterTableCellSorter<T>[]>([]);\n protected readonly _name$ = new BehaviorSubject<string>('');\n protected readonly _state$ = new BehaviorSubject<IInputsState>({\n state: EInputsState.HIDDEN,\n action: EInputsAction.OPEN,\n });\n // TODO: заменить на нормальный тип\n protected readonly _gqlValues$ = new BehaviorSubject<GqlFields>([]);\n protected readonly _pinned$ = new BehaviorSubject<boolean>(false);\n\n public readonly page$ = this._page$.asObservable();\n public readonly limit$ = this._limit$.asObservable();\n public readonly offset$ = this._offset$.asObservable();\n public readonly count$ = this._count$.asObservable();\n public readonly sorter$ = this._sorter$.asObservable();\n public readonly name$ = this._name$.asObservable();\n public readonly state$ = this._state$.asObservable();\n public readonly gqlValues$ = this._gqlValues$.asObservable();\n public readonly pinned$ = this._pinned$.asObservable();\n\n protected readonly destroyRef = inject(DestroyRef);\n\n protected readonly router = inject(Router);\n\n protected readonly modulePath = getLastSegmentOfPathName(this.router.url);\n\n public readonly pinStorageKey = `@pin/${this.modulePath}`;\n public readonly pinnedInputsStorageKey = `@pinned-inputs/${this.modulePath}`;\n\n public toggle(): void {\n const isOpen = this.state.state !== EInputsState.HIDDEN;\n\n // если фильтр был открыт, значит его закрывают - открепляем\n if (isOpen) {\n this.setPin(false);\n }\n\n this.setState({\n state: isOpen ? EInputsState.HIDDEN : EInputsState.FILTER_LIST,\n action: EInputsAction.OPEN,\n });\n }\n\n public togglePin(): void {\n this.setPin(!this.isPin);\n }\n\n public ngOnDestroy(): void {\n this._page$.complete();\n this._limit$.complete();\n this._name$.complete();\n this._offset$.complete();\n this._count$.complete();\n this._state$.complete();\n this._sorter$.complete();\n this._gqlValues$.complete();\n this._pinned$.complete();\n\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n\n this.onDestroy();\n }\n\n protected onDestroy(): void {}\n\n public setPage(page: number): void {\n this._page$.next(page);\n }\n\n public setLimit(limit: number): void {\n this._limit$.next(limit);\n }\n\n public setOffset(offset: number): void {\n this._offset$.next(offset);\n }\n\n public setSorter(sort: RegisterTableCellSorter<T>[]): void {\n this._sorter$.next(sort);\n }\n\n public setName(name: string): void {\n this._name$.next(name);\n }\n\n public setCount(count: number): void {\n this._count$.next(count);\n }\n\n public setState(state: IInputsState): void {\n if (!(this.isPin && state.state === EInputsState.HIDDEN)) {\n this._state$.next(state);\n }\n }\n\n public setGqlValues(values: GqlFields): void {\n this._gqlValues$.next(values);\n }\n\n public setPin(isPin: boolean): void {\n this._pinned$.next(isPin);\n }\n\n public get page(): number {\n return this._page$.getValue();\n }\n\n public get limit(): number {\n return this._limit$.getValue() ?? DEFAULT_LIMIT;\n }\n\n public get offset(): number {\n return this._offset$.getValue();\n }\n\n public get state(): IInputsState {\n return this._state$.getValue();\n }\n\n public get count(): number {\n return this._count$.getValue();\n }\n\n public get sorter(): RegisterTableCellSorter<T>[] {\n return this._sorter$.getValue();\n }\n\n public get name(): string {\n return this._name$.getValue();\n }\n\n public get gqlValues(): GqlFields {\n return this._gqlValues$.getValue();\n }\n\n public get isPin(): boolean {\n return this._pinned$.getValue();\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, filter, filter as rxjsFilter, ReplaySubject, skip, take } from 'rxjs';\nimport { InputsStateService } from '../inputs-state.service';\nimport { FiltersTransmitService } from './filters-transmit.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationStart } from '@angular/router';\nimport { ITpUserSettings } from '../../types/register-base.types';\nimport { isNonNull } from '../../utils';\nimport { getFirstSegmentOfPathName } from '../../utils/get-url-segment';\n\n@Injectable()\nexport class FiltersStateService<T> extends InputsStateService<T> {\n private readonly _transmitter = inject(FiltersTransmitService, { optional: true });\n\n private readonly _selectedSavedFilter = new BehaviorSubject<ITpUserSettings | null>(null);\n private readonly _isFilterNameChanged$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(\n false\n );\n private readonly _searchFilterValue$: ReplaySubject<string> = new ReplaySubject<string>();\n\n public readonly selectedSavedFilter = this._selectedSavedFilter.asObservable();\n public readonly searchFilterValue$ = this._searchFilterValue$.asObservable();\n\n public readonly pageStorageKey = `@page/${this.modulePath}`;\n\n constructor() {\n super();\n\n this._transmitter?.subscribeOnApplyFormValues(this.gqlValues$);\n this._cachePage();\n }\n\n private _cachePage(): void {\n this.limit$.pipe(filter(isNonNull), take(1)).subscribe((limit) => {\n const cachedPage = localStorage.getItem(this.pageStorageKey);\n\n if (cachedPage) {\n const page = Number(cachedPage);\n this.setPage(page);\n this.setOffset(limit * (page - 1));\n }\n });\n\n this.page$.pipe(skip(1), takeUntilDestroyed(this.destroyRef)).subscribe((page) => {\n localStorage.setItem(this.pageStorageKey, page.toString());\n });\n\n this._subscribeOnNavigateToOtherModules();\n }\n\n private _subscribeOnNavigateToOtherModules(): void {\n this.router.events\n .pipe(\n rxjsFilter(\n (event) =>\n event instanceof NavigationStart &&\n getFirstSegmentOfPathName(event.url) !== this.modulePath\n ),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n localStorage.removeItem(this.pageStorageKey);\n });\n }\n\n public setSelectedSavedFilter(value: ITpUserSettings | null): void {\n this._selectedSavedFilter.next(value);\n }\n\n public setSearchFilterValue(value: string): void {\n this._searchFilterValue$.next(value);\n }\n\n public getSelectedSavedFilter(): ITpUserSettings | null {\n return this._selectedSavedFilter.getValue();\n }\n\n public override onDestroy(): void {\n this._selectedSavedFilter.complete();\n this._isFilterNameChanged$.complete();\n this._searchFilterValue$.complete();\n }\n}\n","import { afterNextRender, DestroyRef, inject, Injectable, NgZone, signal } from '@angular/core';\nimport { debounceTime, distinctUntilChanged, fromEvent, map } from 'rxjs';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\n\nconst RESIZE_WINDOW_DEBOUNCE_MLS = 100;\n\n@Injectable()\nexport class ResizeWindowObserverService {\n private readonly _zone = inject(NgZone);\n private readonly _destroyRef = inject(DestroyRef);\n\n public readonly innerHeight = signal(window.innerHeight);\n public readonly innerWidth = signal(window.innerWidth);\n\n public readonly innerHeight$ = toObservable(this.innerHeight);\n\n constructor() {\n afterNextRender(() => {\n this._zone.runOutsideAngular(() => {\n fromEvent(window, 'resize')\n .pipe(\n debounceTime(RESIZE_WINDOW_DEBOUNCE_MLS),\n map(() => ({\n height: window.innerHeight,\n width: window.innerWidth,\n })),\n distinctUntilChanged(),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe(({ height, width }) => {\n this.innerHeight.set(height);\n this.innerWidth.set(width);\n });\n });\n });\n }\n}\n","import {\n ERegisterObjectState,\n ITpUserSettings,\n IUserProfileLoader,\n IUserSettingsLoader,\n} from '../types/register-base.types';\nimport { InjectionToken } from '@angular/core';\nimport { IUserProfile } from '../types/user-profile.types';\n\nexport const SEARCH_INPUT_DEBOUNCE_TIME_MLS = 1000;\nexport const THS_WIDTH_CHANGES_DEBOUNCE_TIME_MLS = 2000;\n\nexport const invertState = (state: ERegisterObjectState): ERegisterObjectState => {\n if (state === ERegisterObjectState.SELECTED) {\n return ERegisterObjectState.UNSELECTED;\n }\n\n return ERegisterObjectState.SELECTED;\n};\n\nexport enum EOrder {\n ASC = 'asc',\n DESC = 'desc',\n}\n\nexport enum SETTINGS_TYPE {\n FILTER = 0,\n COLUMNS = 1,\n PAGE_MENU_STATE = 2,\n REGISTER_PAGE_ROWS_LIMIT = 4,\n REGISTER_PINNED_INPUTS = 5,\n}\n\nexport const USER_SETTINGS_LOADER = new InjectionToken<IUserSettingsLoader<ITpUserSettings>>(\n 'USER_SETTINGS_LOADER'\n);\n\nexport const USER_PROFILE_LOADER = new InjectionToken<IUserProfileLoader<IUserProfile>>(\n 'USER_PROFILE_LOADER'\n);\n","export type ApplySelectionTypes = Omit<SelectionTypes, SelectionTypes.COUNT> | number | null;\n\nexport enum SelectionTypes {\n ALL = 'ALL',\n VISIBLE = 'VISIBLE',\n INVERSE = 'INVERSE',\n COUNT = 'COUNT',\n}\n","import { computed, DestroyRef, inject, Injectable, signal } from '@angular/core';\nimport { ScalarUUID } from 'hasura';\nimport { BehaviorSubject, skip, take } from 'rxjs';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { ERegisterObjectState, IRegisterObject } from '../types/register-base.types';\nimport { invertState } from '../consts/register-base.consts';\nimport { isDefined } from '../utils';\nimport {\n ApplySelectionTypes,\n SelectionTypes,\n} from '../components/checkbox-selector/checkbox-selector.types';\n\n/** Сервис хранения состояния выбранных в реестре объектов */\n@Injectable()\nexport class SelectedObjectsStateService<T extends { id: ScalarUUID } = any> {\n /** Состояние всех загруженных объектов реестра */\n public readonly state = signal(new Map<ScalarUUID, IRegisterObject<T>>());\n /** Ключи всех выбранных объектов реестра */\n public readonly selectedKeys = computed(() => {\n const selected = this._filterStateObjectsByState(this.state(), ERegisterObjectState.SELECTED);\n\n return new Set(selected.keys());\n });\n /** Ключи всех выбранных или не выбранных объектов реестра (зависит от stateUnfetchedObjects) */\n public readonly keys = computed(() => {\n const unfetchedState = this.stateUnfetchedObjects();\n\n return new Set(\n this._filterStateObjectsByState(this.state(), invertState(unfetchedState)).keys()\n );\n });\n /** Значения всех выбранных объектов реестра */\n public readonly selectedValues = computed(() => {\n const selected = this._filterStateObjectsByState(this.state(), ERegisterObjectState.SELECTED);\n\n return new Set(\n [...selected.values()].map(({ object }) => object).filter((object) => isDefined(object))\n );\n });\n /** Значения всех не выбранных объектов реестра */\n public readonly unselectedValues = computed(() => {\n const selected = this._filterStateObjectsByState(this.state(), ERegisterObjectState.UNSELECTED);\n\n return new Set(\n [...selected.values()].map(({ object }) => object).filter((object) => isDefined(object))\n );\n });\n /** Значения всех выбранных или не выбранных объектов реестра (зависит от stateUnfetchedObjects) */\n public readonly values = computed(() => {\n const unfetchedState = this.stateUnfetchedObjects();\n\n return new Set(\n [...this._filterStateObjectsByState(this.state(), invertState(unfetchedState)).values()]\n .map(({ object }) => object)\n .filter((object) => isDefined(object))\n );\n });\n\n public readonly selectionType$ = new BehaviorSubject<ApplySelectionTypes>(null);\n public readonly stateUnfetchedObjects$ = new BehaviorSubject<ERegisterObjectState>(\n ERegisterObjectState.UNSELECTED\n );\n\n public readonly stateUnfetchedObjects = toSignal(this.stateUnfetchedObjects$.asObservable(), {\n initialValue: ERegisterObjectState.UNSELECTED,\n });\n\n private readonly _dr = inject(DestroyRef);\n\n constructor() {\n this._subscribeOnSelectionType();\n }\n\n /**\n * Установить состояние всем загруженным объектам\n *\n * @param nextState - устанавливаемое состояние\n * */\n public setAllStateObjectsByState(nextState: ERegisterObjectState): void {\n if (nextState === ERegisterObjectState.UNSELECTED) {\n this.stateUnfetchedObjects$.next(ERegisterObjectState.UNSELECTED);\n }\n\n for (const key of this.state().keys()) {\n this.setStateObjectByKey(key, { state: nextState });\n }\n\n this._refresh();\n }\n\n /**\n * Обновить свойства загруженного объекта по ключу\n *\n * @param key - ключ загруженного объекта\n * @param updates - обновление, содержащее свойства которые нужно обновить\n * */\n public setStateObjectByKey(key: ScalarUUID, updates: Partial<IRegisterObject<T>>): void {\n const objects = new Map(this.state());\n\n const stateObject = objects.get(key) ?? { state: ERegisterObjectState.UNSELECTED };\n objects.set(key, { ...stateObject, ...updates });\n\n this.state.set(objects);\n }\n\n public loadStateObjects(data: T[]): void {\n const state = this.stateUnfetchedObjects$?.getValue();\n\n for (const object of data) {\n if (!this.state().has(object.id)) {\n this.setStateObjectByKey(object.id, { object, state });\n }\n }\n\n this._refresh();\n }\n\n private _refresh(): void {\n this.state.update((state) => new Map(state));\n }\n\n public resetState(data?: T[]): void {\n this.stateUnfetchedObjects$\n .asObservable()\n .pipe(skip(1), take(1))\n .subscribe(() => {\n this.state.set(new Map());\n\n if (data) {\n this.loadStateObjects(data);\n }\n });\n this.selectionType$.next(null);\n }\n\n private _filterStateObjectsByState(\n stateObjects: Map<ScalarUUID, IRegisterObject<T>>,\n filterState: ERegisterObjectState\n ) {\n return new Map([...stateObjects].filter(([_, { state }]) => state === filterState));\n }\n\n private _subscribeOnSelectionType(): void {\n this.selectionType$\n .asObservable()\n .pipe(takeUntilDestroyed(this._dr))\n .subscribe((type) => {\n let newState = ERegisterObjectState.UNSELECTED;\n\n if (type === SelectionTypes.ALL) {\n newState = ERegisterObjectState.SELECTED;\n } else if (type === SelectionTypes.INVERSE) {\n newState = invertState(this.stateUnfetchedObjects$.getValue());\n }\n\n this.stateUnfetchedObjects$.next(newState);\n });\n }\n}\n","export enum EMonth {\n JAN,\n FEB,\n MAR,\n APR,\n MAY,\n JUN,\n JUL,\n AUG,\n SEP,\n OCT,\n NOV,\n DEC,\n}\n\nexport enum MonthsNumber {\n January = 1,\n February = 2,\n March = 3,\n April = 4,\n May = 5,\n June = 6,\n July = 7,\n August = 8,\n September = 9,\n October = 10,\n November = 11,\n December = 12,\n}\n\nexport enum MonthsName {\n January = 'Январь',\n February = 'Февраль',\n March = 'Март',\n April = 'Апрель',\n May = 'Май',\n June = 'Июнь',\n July = 'Июль',\n August = 'Август',\n September = 'Сентябрь',\n October = 'Октябрь',\n November = 'Ноябрь',\n December = 'Декабрь',\n}\n\nexport class MonthMapper {\n public static readonly MONTH_NUMBER_NAMES: Map<string, MonthsNumber> = new Map([\n [MonthsName.January, MonthsNumber.January],\n [MonthsName.February, MonthsNumber.February],\n [MonthsName.March, MonthsNumber.March],\n [MonthsName.April, MonthsNumber.April],\n [MonthsName.May, MonthsNumber.May],\n [MonthsName.June, MonthsNumber.June],\n [MonthsName.July, MonthsNumber.July],\n [MonthsName.August, MonthsNumber.August],\n [MonthsName.September, MonthsNumber.September],\n [MonthsName.October, MonthsNumber.October],\n [MonthsName.November, MonthsNumber.November],\n [MonthsName.December, MonthsNumber.December],\n ]);\n\n public static getMonthNumber(monthName: string): number | undefined {\n return this.MONTH_NUMBER_NAMES.get(monthName);\n }\n\n public static getRusNamesArr(): string[] {\n const rusNamesArr: string[] = [...this.MONTH_NUMBER_NAMES.keys()];\n return rusNamesArr;\n }\n\n public static getNumbersArr(): number[] {\n const numberArr: number[] = [...this.MONTH_NUMBER_NAMES.values()];\n return numberArr;\n }\n\n public static getMonthRusNameByNumber(monthNumber: number): string | undefined {\n const monthName = Object.keys(MonthsNumber).find(\n (key) => MonthsNumber[key as keyof typeof MonthsNumber] === monthNumber\n );\n return monthName ? MonthsName[monthName as keyof typeof MonthsName] : undefined;\n }\n}\n","import { Component } from '@angular/core';\n\nexport enum SvgSrc {\n WARNING = 'assets/ngx-register-base/icons/circle-exclamation-empty.svg',\n}\n\n@Component({\n selector: 'sproc-reset-settings-form',\n templateUrl: './reset-settings-form.component.html',\n styleUrls: ['./reset-settings-form.component.less'],\n standalone: true,\n})\nexport class ResetSettingsFormComponent {\n protected readonly svgSrc = SvgSrc;\n}\n","<section class=\"reset-warning\">\n <div class=\"main-warning\">\n Сбросить все параметры <br />\n отображения реестра?\n </div>\n <div style=\"display: flex; flex-direction: row; padding: 16px 0 0 10px\">\n <img [src]=\"svgSrc.WARNING\" alt=\"!\" />\n\n <span class=\"info\"\n >будут сброшены настройки отображения столбцов реестра <br />\n (порядок, ширина, отображение и т.д.)</span\n >\n </div>\n</section>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'sproc-divider',\n templateUrl: './divider.component.html',\n styleUrls: ['./divider.component.less'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DividerComponent {\n @Input() layout: 'horizontal' | 'vertical' = 'horizontal';\n}\n","<div\n [class.horizontal-solid]=\"layout === 'horizontal'\"\n [class.vertical-solid]=\"layout === 'vertical'\"\n></div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n OnInit,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { filter, map, skip } from 'rxjs';\nimport { TuiButton, TuiIcon, TuiPopup, TuiScrollbar } from '@taiga-ui/core';\nimport { TuiDrawer } from '@taiga-ui/kit';\nimport {\n CdkDragDrop,\n CdkDropList,\n CdkDropListGroup,\n moveItemInArray,\n transferArrayItem,\n} from '@angular/cdk/drag-drop';\nimport {\n outputFromObservable,\n takeUntilDestroyed,\n toObservable,\n toSignal,\n} from '@angular/core/rxjs-interop';\nimport {\n EColumnStatus,\n IColumnSettings,\n IColumnSettingsChanges,\n ITableColumnSettings,\n} from './types/column-settings.types';\nimport { WaResizeObserver } from '@ng-web-apis/resize-observer';\nimport { ColumnSettingsTemplateComponent } from './components/column-settings-template/column-settings-template.component';\nimport { ICON_CANCEL_CLOSE, ICON_ERASER, ICON_SETTINGS } from './consts/column-settings.consts';\nimport { DialogService, ResizeWindowObserverService } from '../../services';\nimport { getLastSegmentOfPathName, isNonNull } from '../../utils';\nimport { SETTINGS_TYPE, USER_PROFILE_LOADER, USER_SETTINGS_LOADER } from '../../consts';\nimport { ResetSettingsFormComponent } from '../reset-settings-form/reset-settings-form.component';\nimport { DividerComponent } from '../divider/divider.component';\nimport { ITpUserSettings } from '../../types';\n\n@Component({\n selector: 'sproc-column-settings',\n standalone: true,\n templateUrl: './column-settings.component.html',\n styleUrls: ['./column-settings.component.less'],\n imports: [\n TuiButton,\n TuiIcon,\n TuiDrawer,\n TuiPopup,\n DividerComponent,\n ResetSettingsFormComponent,\n CdkDropList,\n CdkDropListGroup,\n TuiScrollbar,\n WaResizeObserver,\n ColumnSettingsTemplateComponent,\n ],\n providers: [ResizeWindowObserverService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ColumnSettingsComponent implements OnInit {\n public resetColumnSettingsRef = viewChild('resetSettings', { read: TemplateRef<unknown> });\n public resetColumnSettingsFooter = viewChild('resetSettingsFooter', {\n read: TemplateRef<unknown>,\n });\n\n public defaultSettings = input.required<ITableColumnSettings>();\n /** Высота всего компонента настроек */\n public height = input<number | undefined>();\n public disabled = input(false);\n /** показ заголовка листа фикс. слева колонок */\n public showLeftListHeader = input(true);\n /** показ заголовка листа фикс. справа колонок */\n public showRightListHeader = input(true);\n /** заголовок листа с колонками (нефиксированные) */\n public columnsListHeader = input('Колонки');\n /** показ фикс. справа колонок */\n public showFixedRightList = input(false);\n /** функция предикат - возможность добавления элемента в лист фикс. слева колонок */\n public fixedLeftListEnterPredicate = input<() => boolean>(() => true);\n /** функция предикат - возможность добавления элемента в лист колонок (нефиксированные) */\n public columnsListEnterPredicate = input<() => boolean>(() => true);\n /** функция предикат - возможность добавления элемента в лист фикс. справа колонок */\n public fixedRightListEnterPredicate = input<() => boolean>(() => true);\n\n protected readonly openSettings = signal(false);\n protected readonly inputSettings = signal<ITableColumnSettings | null>(null);\n protected readonly fixedLeftColumns = computed(() => this.inputSettings()?.stickyLeft ?? []);\n protected readonly columns = computed(() => this.inputSettings()?.columns ?? []);\n protected readonly fixedRightColumns = computed(() => this.inputSettings()?.stickyRight ?? []);\n\n public columnsChanges = outputFromObservable<IColumnSettingsChanges>(\n toObservable(this.inputSettings).pipe(\n skip(1),\n map((settings) => ({ settings }))\n )\n );\n\n protected readonly settingsStore = inject(USER_SETTINGS_LOADER);\n\n private readonly _dr = inject(DestroyRef);\n private readonly _router = inject(Router);\n private readonly _userProfileService = inject(USER_PROFILE_LOADER);\n private readonly _dialogService = inject(DialogService);\n private readonly _resizeWindowObserver = inject(ResizeWindowObserverService);\n\n protected readonly iconSettings = ICON_SETTINGS;\n protected readonly iconEraser = ICON_ERASER;\n protected readonly iconCancelClose = ICON_CANCEL_CLOSE;\n\n protected readonly columnSettingsHeaderHeightPx = 40;\n protected readonly columnSettingsSubtitleHeightPx = 32;\n protected readonly scrollBoxFixedColumnsHeightPx = signal(0);\n protected readonly scrollBoxRightFixedColumnsHeightPx = signal(0);\n protected readonly scrollBoxFixedColumnsMaxHeightPx = 287;\n protected readonly scrollBoxColumnsMaxHeightPx = signal(0);\n protected readonly columnSettingsFooterHeightPx = 48;\n protected readonly columnListHeightPx = toSignal(\n this._resizeWindowObserver.innerHeight$.pipe(\n skip(1),\n map((innerHeight) => this._calcColumnListHeightPx(innerHeight))\n ),\n {\n initialValue: this._calcColumnListHeightPx(this._resizeWindowObserver.innerHeight()),\n }\n );\n protected readonly columnListBottomPaddingPx = 8;\n\n private readonly _idUser = this._userProfileService.getUserProfile().id;\n private readonly _moduleName = getLastSegmentOfPathName(this._router.url);\n\n private _columnsSettings: ITpUserSettings | undefined;\n\n constructor() {\n this.setDefaultSettings();\n this._effectOnSetScrollBoxColumnsMaxHeight();\n }\n\n public setDefaultSettings(): void {\n effect(() => {\n const defaultSettings = this.defaultSettings();\n const clonedSettings = JSON.parse(JSON.stringify(defaultSettings));\n\n untracked(() => {\n this.inputSettings.set(clonedSettings);\n });\n });\n }\n\n private _effectOnSetScrollBoxColumnsMaxHeight(): void {\n effect(() => {\n const parentHeightPx = this.columnListHeightPx();\n const fixedHeightPx = this.scrollBoxFixedColumnsHeightPx();\n const rightFixedHeightPx = this.scrollBoxRightFixedColumnsHeightPx();\n const sumFixedHeightPx = fixedHeightPx + rightFixedHeightPx;\n\n untracked(() => {\n const newHeightPx = this._calcScrollBoxColumnsMaxHeightPx(parentHeightPx, sumFixedHeightPx);\n this.scrollBoxColumnsMaxHeightPx.set(newHeightPx);\n });\n });\n }\n\n public ngOnInit(): void {\n this.subscribeOnSettings();\n this.fetchSettings(this._idUser, this._moduleName);\n }\n\n private fetchSettings(userId: string, moduleName: string): void {\n this.settingsStore.fetchUserSettingsByUserId({\n userId,\n settingsType: SETTINGS_TYPE.COLUMNS,\n moduleName,\n });\n }\n\n private subscribeOnSettings(): void {\n this.settingsStore.settings$\n .pipe(\n filter((settings) => settings.length > 0),\n map(([settings]) => settings),\n filter((settings) => isNonNull(settings)),\n takeUntilDestroyed(this._dr)\n )\n .subscribe((settings) => {\n this._columnsSettings = settings;\n const { tableFields } = settings.settings;\n\n if (tableFields) {\n this.inputSettings.set(tableFields);\n this.close();\n }\n });\n }\n\n protected deleteSettings(): void {\n const clonedSettings = JSON.parse(JSON.stringify(this.defaultSettings()));\n this.inputSettings.set(clonedSettings);\n\n if (this._columnsSettings) {\n this.settingsStore.deleteUserSettingsById({\n id: this._columnsSettings?.id,\n updateSettings: true,\n });\n }\n\n this.close();\n }\n\n protected saveSettings(settings: ITableColumnSettings): void {\n this.settingsStore.upsertUserSettingsByUserId({\n settings: {\n id: this._columnsSettings?.id,\n module_name: this._moduleName,\n settings: {\n ...this._columnsSettings?.settings,\n tableFields: settings,\n },\n settings_type: SETTINGS_TYPE.COLUMNS,\n },\n updateSettings: true,\n });\n }\n\n protected saveTableSettings(): void {\n this.saveSettings({\n stickyLeft: this.fixedLeftColumns(),\n columns: this.columns(),\n stickyRight: this.fixedRightColumns(),\n });\n }\n\n protected openResetDialog(): void {\n this._dialogService\n .openModal(this.resetColumnSettingsRef(), {\n closeable: true,\n width: 466,\n footer: this.resetColumnSettingsFooter(),\n dismissible: true,\n })\n .subscribe();\n }\n\n protected toggle(): void {\n this.openSettings.update((isOpen) => !isOpen);\n }\n\n protected close(): void {\n this.openSettings.set(false);\n }\n\n protected dropIntoFixedLeft(event: CdkDragDrop<IColumnSettings[]>): void {\n const droppedElement = event.previousContainer.data[event.previousIndex];\n this._setStatusRecursive(droppedElement, EColumnStatus.STICKY);\n this._moveDroppedItem(event);\n }\n\n protected dropIntoColumns(event: CdkDragDrop<IColumnSettings[]>): void {\n const fromOther = event.previousContainer !== event.container;\n\n if (fromOther) {\n const droppedElement = event.previousContainer.data[event.previousIndex];\n this._setStatusRecursive(droppedElement, EColumnStatus.DEFAULT);\n }\n\n this._moveDroppedItem(event);\n }\n\n private _moveDroppedItem(event: CdkDragDrop<IColumnSettings[]>): void {\n if (event.previousContainer === event.container) {\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n } else {\n transferArrayItem(\n event.previousContainer.data,\n event.container.data,\n event.previousIndex,\n event.currentIndex\n );\n }\n }\n\n protected toggleVisibility(col: IColumnSettings): void {\n const isHidden = col.status === EColumnStatus.HIDDEN;\n col.status = isHidden ? EColumnStatus.DEFAULT : EColumnStatus.HIDDEN;\n }\n\n protected showAllColumns(): void {\n const settings = this.inputSettings();\n\n if (!settings) {\n throw new Error('Настройки таблицы не инициализированы');\n }\n\n this._setColumnsStatusRecursive(settings.columns, EColumnStatus.DEFAULT);\n }\n\n protected isHiddenColumn(column: IColumnSettings): boolean {\n return column.status === EColumnStatus.HIDDEN;\n }\n\n protected onFixedScrollbarResize([fixedScrollbar]: readonly ResizeObserverEntry[]): void {\n this.scrollBoxFixedColumnsHeightPx.set(fixedScrollbar.contentRect.height);\n }\n\n protected onRightFixedScrollbarResize([fixedScrollbar]: readonly ResizeObserverEntry[]): void {\n this.scrollBoxRightFixedColumnsHeightPx.set(fixedScrollbar.contentRect.height);\n }\n\n private _calcColumnListHeightPx(windowInnerHeight: number): number {\n const mainHeaderPx = 52;\n const columnSettingsHeaderFooterSumHeightPx =\n this.columnSettingsHeaderHeightPx + this.columnSettingsFooterHeightPx;\n\n return windowInnerHeight - mainHeaderPx - columnSettingsHeaderFooterSumHeightPx;\n }\n\n private _calcScrollBoxColumnsMaxHeightPx(\n parentHeightPx: number,\n fixedScrollbarHeightPx: number\n ): number {\n const twoSubtitleHeightPx = 2 * this.columnSettingsSubtitleHeightPx;\n const bottomPaddingPx = this.columnListBottomPaddingPx;\n\n return parentHeightPx - twoSubtitleHeightPx - fixedScrollbarHeightPx - bottomPaddingPx;\n }\n\n private _setStatusRecursive(column: IColumnSettings, status: EColumnStatus): void {\n column.status = status;\n\n if (column.children) {\n this._setColumnsStatusRecursive(column.children, status);\n }\n }\n\n private _setColumnsStatusRecursive(columns: IColumnSettings[], status: EColumnStatus): void {\n for (const [index, col] of columns.entries()) {\n columns[index] = { ...col, status };\n\n if (col.children) {\n this._setColumnsStatusRecursive(col.children, status);\n }\n }\n }\n}\n","<button\n tuiButton\n class=\"column-settings__main-button\"\n appearance=\"outline-grayscale\"\n size=\"m\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n>\n <tui-icon class=\"column-settings__icon gray\" [icon]=\"iconSettings\"></tui-icon>\n</button>\n\n<tui-drawer\n *tuiPopup=\"openSettings()\"\n class=\"column-settings__popup\"\n direction=\"right\"\n [overlay]=\"true\"\n (click.self)=\"close()\"\n>\n <header class=\"header\" [style.height.px]=\"columnSettingsHeaderHeightPx\">\n <span class=\"header__title\">Настройка таблицы</span>\n <div class=\"header__buttons\">\n <button\n tuiIconButton\n class=\"reset-button\"\n appearance=\"flat\"\n size=\"m\"\n (click)=\"openResetDialog()\"\n >\n <tui-icon class=\"column-settings__icon\" [icon]=\"iconEraser\"></tui-icon>\n </button>\n <sproc-divider layout=\"vertical\"></sproc-divider>\n <button tuiIconButton class=\"close-button\" appearance=\"flat\" size=\"m\" (click)=\"close()\">\n <tui-icon class=\"column-settings__icon\" [icon]=\"iconCancelClose\"></tui-icon>\n </button>\n </div>\n </header>\n <div\n cdkDropListGroup\n class=\"column-container tui__t-content--no-default-padding\"\n [style.height.px]=\"columnListHeightPx()\"\n >\n <div\n cdkDropList\n class=\"column-list\"\n [cdkDropListData]=\"fixedLeftColumns()\"\n (cdkDropListDropped)=\"dropIntoFixedLeft($event)\"\n [cdkDropListEnterPredicate]=\"fixedLeftListEnterPredicate()\"\n >\n @if (showLeftListHeader()) {\n <div class=\"column-list__label-container\">\n <span class=\"subtitle\" [style.height.px]=\"columnSettingsSubtitleHeightPx\">\n Фиксированные колонки слева\n </span>\n </div>\n }\n\n <tui-scrollbar\n [style.max-height.px]=\"scrollBoxFixedColumnsMaxHeightPx\"\n (waResizeObserver)=\"onFixedScrollbarResize($event)\"\n >\n @for (fixedLeftColumn of fixedLeftColumns(); track fixedLeftColumn.id) {\n <sproc-column-settings-template\n [column]=\"fixedLeftColumn\"\n ></sproc-column-settings-template>\n }\n </tui-scrollbar>\n </div>\n <sproc-divider></sproc-divider>\n <div\n cdkDropList\n class=\"column-list\"\n [style.padding-bottom.px]=\"columnListBottomPaddingPx\"\n [cdkDropListData]=\"columns()\"\n (cdkDropListDropped)=\"dropIntoColumns($event)\"\n [cdkDropListEnterPredicate]=\"columnsListEnterPredicate()\"\n >\n <div class=\"column-list__label-container\">\n <span\n class=\"subtitle subtitle--flex-grow-1\"\n [style.height.px]=\"columnSettingsSubtitleHeightPx\"\n >{{ columnsListHeader() }}</span\n >\n <span class=\"show-all\" (click)=\"showAllColumns()\">Показать все</span>\n </div>\n <tui-scrollbar [style.max-height.px]=\"scrollBoxColumnsMaxHeightPx()\">\n @for (column of columns(); track column.id) {\n <sproc-column-settings-template [column]=\"column\"></sproc-column-settings-template>\n }\n </tui-scrollbar>\n </div>\n @if (showFixedRightList()) {\n <sproc-divider></sproc-divider>\n <div\n cdkDropList\n class=\"column-list\"\n [style.padding-bottom.px]=\"columnListBottomPaddingPx\"\n [cdkDropListData]=\"fixedRightColumns()\"\n (cdkDropListDropped)=\"dropIntoColumns($event)\"\n [cdkDropListEnterPredicate]=\"fixedRightListEnterPredicate()\"\n >\n @if (showRightListHeader()) {\n <div class=\"column-list__label-container\">\n <span\n class=\"subtitle subtitle--flex-grow-1\"\n [style.height.px]=\"columnSettingsSubtitleHeightPx\"\n >Фиксированные колонки справа</span\n >\n </div>\n }\n\n <tui-scrollbar\n [style.max-height.px]=\"scrollBoxFixedColumnsMaxHeightPx\"\n (waResizeObserver)=\"onRightFixedScrollbarResize($event)\"\n >\n @for (column of fixedRightColumns(); track column.id) {\n <sproc-column-settings-template [column]=\"column\"></sproc-column-settings-template>\n }\n </tui-scrollbar>\n </div>\n }\n </div>\n <footer class=\"footer\" [style.height.px]=\"columnSettingsFooterHeightPx\">\n <button\n tuiButton\n class=\"save-button\"\n size=\"m\"\n appearance=\"primary\"\n (click)=\"saveTableSettings()\"\n >\n Сохранить\n </button>\n </footer>\n</tui-drawer>\n\n<ng-template #resetSettings>\n <sproc-reset-settings-form></sproc-reset-settings-form>\n</ng-template>\n\n<ng-template #resetSettingsFooter let-completeWith=\"completeWith\">\n <div style=\"width: 100%; display: flex; justify-content: center; gap: 8px\">\n <button\n tuiButton\n style=\"width: 196px\"\n appearance=\"primary-destructive\"\n size=\"l\"\n (click)=\"deleteSettings(); completeWith(true)\"\n >\n Сбросить\n </button>\n <button\n tuiButton\n style=\"width: 196px\"\n appearance=\"outline-grayscale\"\n size=\"l\"\n (click)=\"completeWith(false)\"\n >\n Отмена\n </button>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { TuiButton, TuiHint } from '@taiga-ui/core';\nimport { NgOptimizedImage } from '@angular/common';\n\n@Component({\n selector: 'sproc-filter-button',\n templateUrl: './filter-button.component.html',\n styleUrl: './filter-button.component.less',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TuiButton, TuiHint, NgOptimizedImage],\n})\nexport class FilterButtonComponent {\n public filterApplied = input.required<boolean>();\n public disabled = input(false);\n\n public filterToggle = output<void>();\n}\n","<button\n tuiButton\n size=\"m\"\n appearance=\"outline-grayscale\"\n tuiHint\n tuiHintDirection=\"bottom\"\n [class.--indicator]=\"filterApplied()\"\n [disabled]=\"disabled()\"\n (click)=\"filterToggle.emit()\"\n>\n <img ngSrc=\"assets/ngx-register-base/icons/filter.svg\" alt=\"\" height=\"16\" width=\"16\" />\n\n <tui-hint\n *tuiHint\n class=\"filter-button__tooltip\"\n [class.filter-button__tooltip--showed]=\"filterApplied()\"\n >\n <span>К реестру применены фильтры</span>\n </tui-hint>\n</button>\n","export const SIDE_MENU_OPENED_WIDTH = 350;\nexport const SIDE_MENU_CLOSED_WIDTH = 48;\n\nexport enum EPageMenuIconsSrc {\n CHEVRON_RIGHT = 'assets/ngx-register-base/icons/chevron-right.svg',\n CHEVRON_UP = 'assets/ngx-register-base/icons/chevron-up.svg',\n MENU_CHEVRON = 'assets/ngx-register-base/icons/chevron-menu.svg',\n}\n","import { InjectionToken } from '@angular/core';\nimport { AbstractMenuStateService } from './sproc-page-menu.types';\n\nexport const PAGE_MENU_STATE = new InjectionToken<AbstractMenuStateService>('PAGE_MENU_STATE');\n// export const PAGE_MENU_STORE = new InjectionToken<AbstractMenuStateService>('PAGE_MENU_STATE');\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n HostBinding,\n inject,\n input,\n OnInit,\n signal,\n} from '@angular/core';\nimport {\n EPageMenuIconsSrc,\n SIDE_MENU_CLOSED_WIDTH,\n SIDE_MENU_OPENED_WIDTH,\n} from './schema/sproc-page-menu.consts';\nimport { Router, RouterLink } from '@angular/router';\nimport { AbstractMenuStateService, IClsMenuItem } from './schema/sproc-page-menu.types';\nimport { PAGE_MENU_STATE } from './schema/sproc-page-menu.tokens';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { INavigation } from './schema/sproc-page-menu.schema';\nimport { AsyncPipe, NgClass, NgOptimizedImage, NgTemplateOutlet } from '@angular/common';\nimport { animate, style, transition, trigger } from '@angular/animations';\n\n@Component({\n selector: 'sproc-page-menu',\n templateUrl: './sproc-page-menu.component.html',\n styleUrls: ['./sproc-page-menu.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [RouterLink, NgTemplateOutlet, NgClass, AsyncPipe, NgOptimizedImage],\n animations: [\n trigger('fadeInOut', [\n transition(':enter', [\n style({\n opacity: 0,\n transform: 'translateY(-10px)',\n transformOrigin: 'top',\n }),\n animate(\n '0.15s ease-in',\n style({\n opacity: 1,\n transform: 'translateY(0)',\n })\n ),\n ]),\n ]),\n ],\n})\nexport class SprocPageMenuComponent implements OnInit {\n public menuItems = input.required<IClsMenuItem[]>();\n public menuIconsSrc = input<string>('');\n public openLogoSrc = input<string>('');\n public closedLogoSrc = input<string>('');\n public findActiveSection =\n input.required<(reset: () => void, findRoute: (routeToFind: string) => void) => void>();\n\n // TODO Добавить кастомную ширину меню\n @HostBinding('style.--page-menu-opened-width')\n public readonly menuOpenedWidth = `${SIDE_MENU_OPENED_WIDTH}px`;\n @HostBinding('style.--page-menu-closed-width')\n public readonly menuClosedWidth = `${SIDE_MENU_CLOSED_WIDTH}px`;\n\n private readonly _router = inject(Router);\n private readonly _state = inject<AbstractMenuStateService>(PAGE_MENU_STATE);\n private readonly _dr = inject(DestroyRef);\n\n protected readonly toggleDisabled$ = this._state.toggleDisabled$;\n protected menuState = toSignal(this._state.isOpen$);\n protected selectedSection = signal<string>('register');\n protected expandedIds = signal<Set<string>>(new Set());\n\n protected selectedItem = computed(() =>\n this.selectedSection() ? this.codeToItem[this.selectedSection()] : null\n );\n\n // Хранит parent элементы выбранного пункта меню\n protected parentItems = computed(() => {\n const item = this.selectedItem();\n if (!item) {\n return [];\n }\n\n const parents: INavigation[] = [];\n let current = item.parent;\n while (current) {\n parents.push(current);\n current = current.parent;\n }\n return parents;\n });\n protected parentItemCodes = computed<Set<string>>(() => {\n const parentItems = this.parentItems();\n\n return new Set(parentItems.map((val) => val.code ?? ''));\n });\n\n public navigationHierarchy = signal<INavigation[]>([]);\n\n protected codeToItem: Record<string, INavigation> = {};\n\n protected isOpenServiceVersionInfo = false;\n\n protected readonly ICONS_SRC = EPageMenuIconsSrc;\n\n constructor() {\n // Построить меню и найти активную секцию\n effect(\n () => {\n const menuItems = this.menuItems();\n this.buildMenu(menuItems);\n this._findActiveSection();\n },\n { allowSignalWrites: true }\n );\n }\n\n public addMenuScrollbar(id: string): void {\n setTimeout(() => {\n // TODO Меню второго уровня есть скролл,третьего нет\n const collapsedMenu = document.querySelector<HTMLElement>(`[id=\"${id}\"]`);\n const sideMenu = collapsedMenu?.querySelector<HTMLElement>('#side-menu__subitems');\n const sideMenuLevelTwo = sideMenu?.querySelector<HTMLElement>('#side-menu__subitems');\n\n const subitem = sideMenuLevelTwo\n ? sideMenuLevelTwo.querySelectorAll('.side-menu__subitem')\n : sideMenu?.querySelectorAll('.side-menu__subitem');\n if (subitem) {\n const lastSubitem = subitem[subitem.length - 1];\n const rect = lastSubitem?.getBoundingClientRect();\n\n if (sideMenu && window.innerHeight - rect.bottom < 0) {\n // 40 тк высота плашки меню\n sideMenu.style.height = `${\n subitem.length * 40 + (window.innerHeight - rect.bottom - 1)\n }px`;\n sideMenu.style.overflowY = 'scroll';\n sideMenu.style.overflowX = 'hidden';\n }\n if (window.innerHeight - rect.bottom < 0 && sideMenuLevelTwo) {\n // 40 тк высота плашки меню\n sideMenuLevelTwo.style.height = `${\n subitem.length * 40 + (window.innerHeight - rect.bottom - 1)\n }px`;\n sideMenuLevelTwo.style.overflowY = 'scroll';\n sideMenuLevelTwo.style.overflowX = 'hidden';\n }\n }\n }, 0);\n }\n\n public ngOnInit(): void {\n this._state.isOpen$.subscribe((menuState) => {\n if (menuState) {\n this.findRoute(this.selectedSection());\n } else {\n this.collapseMenu();\n }\n });\n }\n\n protected toggleNavigation(): void {\n this._state.toggle();\n }\n\n protected toggleItem(item: INavigation): void {\n this.addMenuScrollbar(item.id || '');\n\n this.expandedIds.update((currentExpand) => {\n const code = item.code;\n const copy = new Set<string>(currentExpand);\n\n if (copy.has(code)) {\n copy.delete(code);\n } else {\n copy.clear();\n copy.add(code);\n\n const parents = this.getParents(item);\n for (const parent of parents) {\n copy.add(parent.code);\n }\n }\n\n return copy;\n });\n }\n\n protected collapseMenu(exception?: INavigation): void {\n let codes: string[] = [];\n if (exception) {\n const parents = this.getParents(exception);\n codes = [exception.code, ...parents.map((parent) => parent.code)];\n }\n\n this.expandedIds.set(new Set<string>(codes));\n }\n\n protected get isMenuOpened(): boolean {\n return this._state.isOpen;\n }\n\n protected get isMenuClosed(): boolean {\n return !this._state.isOpen;\n }\n\n protected isExternalLink(route: string | undefined): boolean {\n if (!route) {\n return false;\n }\n return /^(https?:\\/\\/|www\\.)/i.test(route);\n }\n\n protected handleNavigation(item: INavigation): void {\n if (!item.route) {\n return;\n }\n\n if (this.isExternalLink(item.route)) {\n window.open(item.route, '_blank');\n } else {\n this._router.navigate([item.route]);\n this.selectedSection.set(item.code ?? '');\n\n if (this.isMenuClosed) {\n this.collapseMenu();\n }\n }\n }\n\n protected serviceInfoOnActiveZone(active: boolean): void {\n this.isOpenServiceVersionInfo = active && this.isOpenServiceVersionInfo;\n }\n\n protected serviceInfoOnObscured(obscured: boolean): void {\n if (obscured) {\n this.isOpenServiceVersionInfo = false;\n }\n }\n\n private buildMenu(menu: IClsMenuItem[]): void {\n const sortedMenuItems = [...menu].sort((a, b) => (a.order_num ?? 0) - (b.order_num ?? 0));\n\n const menuHash: Record<string, INavigation> = {};\n for (const item of sortedMenuItems) {\n menuHash[item.id] = {\n title: item.title ?? '',\n route: item.route ?? '',\n id: item.id,\n children: [],\n code: item.code,\n icon: item.icon,\n accessedRoles: undefined,\n parent: undefined,\n };\n }\n\n const rootMenuItems: INavigation[] = [];\n\n for (const item of sortedMenuItems) {\n if (item.id_parent && menuHash[item.id_parent]) {\n const parent = menuHash[item.id_parent];\n const child = menuHash[item.id];\n child.parent = parent;\n parent.children?.push(child);\n } else {\n rootMenuItems.push(menuHash[item.id]);\n }\n }\n\n this.navigationHierarchy.set(rootMenuItems);\n\n this.codeToItem = {};\n for (const id of Object.keys(menuHash)) {\n const item = menuHash[id];\n if (item.code) {\n this.codeToItem[item.code] = item;\n }\n }\n }\n\n private findRoute(routeToFind: string): void {\n const routeItem = this.codeToItem[routeToFind];\n\n if (!routeItem) {\n return;\n }\n\n if (this.isMenuOpened) {\n this.toggleItem(routeItem);\n }\n\n this.selectedSection.set(routeItem.code ?? '');\n }\n\n private _findActiveSection(): void {\n this.findActiveSection()(this.resetSelection, this.findRoute);\n }\n\n private getParents(item: INavigation): INavigation[] {\n const parents: INavigation[] = [];\n let current = item.parent;\n\n while (current) {\n parents.push(current);\n current = current.parent;\n }\n\n return parents;\n }\n\n private resetSelection(): void {\n this.expandedIds.set(new Set<string>());\n this.selectedSection.set('');\n }\n\n private collectChildren(item: INavigation): INavigation[] {\n const result: INavigation[] = [];\n const queue: INavigation[] = item.children?.slice() ?? [];\n\n let index = 0;\n while (index < queue.length) {\n const node = queue[index];\n result.push(node);\n\n if (node.children) {\n queue.push(...node.children);\n }\n\n index += 1;\n }\n\n return result;\n }\n}\n","<section [class]=\"menuState() ? 'side-menu side-menu_opened' : 'side-menu side-menu_closed'\">\n <div class=\"side-menu__header\">\n <img\n [src]=\"menuState() ? openLogoSrc() : closedLogoSrc()\"\n alt=\"Logo Icon\"\n class=\"side-menu__header__logo\"\n />\n <img\n (click)=\"toggleNavigation()\"\n [class.disabled]=\"toggleDisabled$ | async\"\n [height]=\"16\"\n [ngClass]=\"menuState() ? 'side-menu__header__chevron_opened' : 'side-menu__header__chevron_closed'\"\n [ngSrc]=\"ICONS_SRC.MENU_CHEVRON\" [width]=\"16\" alt=\"Menu Chevron\"/>\n </div>\n\n @if (menuState()) {\n <div class=\"expanded-menu-content\">\n @for (navigation_item of navigationHierarchy(); track $index) {\n <ng-container\n *ngTemplateOutlet=\"\n menuItemOpened;\n context: { navigation_item: navigation_item, level: 0 }\n \"\n ></ng-container>\n }\n </div>\n\n <ng-content></ng-content>\n } @else {\n @for (navigation_item of navigationHierarchy(); track $index) {\n <ng-container\n *ngTemplateOutlet=\"closedMenu; context: { navigation_item: navigation_item }\"\n ></ng-container>\n }\n }\n</section>\n\n<ng-template #menuItemOpened let-level=\"level\" let-navigation_item=\"navigation_item\">\n @let isExpanded = expandedIds().has(navigation_item.code);\n @let childrenCount = navigation_item.children.length;\n @let code = navigation_item.code;\n @let route = navigation_item.code;\n @let icon = navigation_item.icon;\n @let isHighlighted = selectedSection() === code;\n\n <a\n (click)=\"childrenCount === 0 ? handleNavigation(navigation_item) : toggleItem(navigation_item)\"\n [@fadeInOut]\n [class.menu-item_selected]=\"isHighlighted\"\n [class.padding-level-0]=\"level === 0\"\n [routerLink]=\"childrenCount > 0 || isExternalLink(route) ? undefined : route\"\n [style.padding-left.px]=\"level === 0 ? 0 : 44 + level * 20\"\n class=\"menu-item\"\n >\n @if (icon) {\n <span class=\"menu-item__icon\">\n <img [alt]=\"icon\" [width]=\"16\" [height]=\"16\" [ngSrc]=\"menuIconsSrc() + icon + '.svg'\">\n </span>\n }\n <span class=\"menu-item__title\"> {{ navigation_item.title }} </span>\n @if (childrenCount > 0) {\n <img\n class=\"menu-item__chevron\"\n [class.menu-item__chevron_rotated]=\"!isExpanded\"\n [alt]=\"icon\" [width]=\"16\" [height]=\"16\"\n [ngSrc]=\"ICONS_SRC.CHEVRON_UP\">\n }\n </a>\n @if (isExpanded && childrenCount > 0) {\n @for (children of navigation_item.children ?? []; track $index) {\n <ng-container\n *ngTemplateOutlet=\"menuItemOpened; context: { navigation_item: children, level: level + 1 }\"\n ></ng-container>\n }\n }\n</ng-template>\n\n<ng-template #closedMenu let-navigation_item=\"navigation_item\">\n @let isExpanded = expandedIds().has(navigation_item.code);\n @let childrenCount = navigation_item.children.length;\n @let code = navigation_item.code;\n @let route = navigation_item.code;\n @let icon = navigation_item.icon;\n @let isHighlighted = selectedSection() === code || parentItemCodes().has(code);\n\n <div\n (mouseleave)=\"collapseMenu()\"\n [id]=\"navigation_item.id\"\n class=\"collapsed-menu-content\"\n >\n @if (icon) {\n <a\n class=\"menu-item__icon_closed\"\n [class.menu-item_selected]=\"isHighlighted\"\n (click)=\"childrenCount === 0 ? handleNavigation(navigation_item) : toggleItem(navigation_item)\"\n [routerLink]=\"childrenCount > 0 || isExternalLink(route) ? undefined : route\"\n (mouseenter)=\"toggleItem(navigation_item)\">\n <img\n [height]=\"16\"\n [width]=\"16\"\n [ngSrc]=\"menuIconsSrc() + icon + '.svg'\" alt=\"Menu Chevron\"/>\n </a>\n }\n <ng-container\n *ngTemplateOutlet=\"\n menuClosedItem;\n context: { item: navigation_item, level: 1, topPadding: 1 }\n \"\n >\n </ng-container>\n @if (isExpanded && childrenCount > 0) {\n <div class=\"static-item\">\n <span class=\"static-item__element\">\n {{ navigation_item.title }}\n </span>\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #menuClosedItem let-item=\"item\" let-level=\"level\" let-topPadding=\"topPadding\">\n @let isExpanded = expandedIds().has(item.code);\n <div [id]=\"item.id\">\n @if (isExpanded && item.children.length > 0) {\n <div\n class=\"side-menu__subitems\"\n [class.padding-level-1]=\"level === 1\"\n [style.top.px]=\"topPadding * 40\"\n id=\"side-menu__subitems\"\n >\n @for (navigation_item of item.children; track navigation_item; let index = $index) {\n @let childrenCount = navigation_item.children.length;\n @let code = navigation_item.code;\n @let route = navigation_item.code;\n @let isHighlighted = selectedSection() === code || parentItemCodes().has(code);\n <a\n class=\"side-menu__subitem\"\n [class.menu-item_selected]=\"isHighlighted\"\n (mouseenter)=\"childrenCount > 0 ? toggleItem(navigation_item) : collapseMenu(navigation_item)\"\n (click)=\"childrenCount === 0 ? handleNavigation(navigation_item) : toggleItem(navigation_item)\"\n [routerLink]=\"childrenCount > 0 || isExternalLink(route) ? undefined : route\"\n >\n <span\n [class.padding-level-1]=\"level === 1\">{{\n navigation_item.title\n }}</span>\n\n @if (childrenCount > 0) {\n <img\n class=\"chevron-right\"\n [height]=\"16\"\n [width]=\"16\"\n [ngSrc]=\"ICONS_SRC.CHEVRON_RIGHT\" alt=\"Menu Chevron\"/>\n }\n </a>\n <ng-container\n *ngTemplateOutlet=\"\n menuClosedItem;\n context: { item: navigation_item, level: level + 1, topPadding: index }\n \"\n ></ng-container>\n }\n </div>\n }\n </div>\n</ng-template>\n","import { Observable } from 'rxjs';\nimport { ScalarUUID } from 'hasura';\n\nexport interface IClsMenuItem {\n code: string;\n id: ScalarUUID;\n id_parent: string;\n route: string | null;\n title: string | null;\n icon: string | undefined;\n allowed_roles: string[] | null;\n is_deleted: boolean;\n order_num: number | null;\n children?: IClsMenuItem[];\n}\n\nexport abstract class AbstractMenuStateService {\n /**\n * Observable, отражающий текущее состояние меню (открыто / закрыто)\n */\n public abstract readonly isOpen$: Observable<boolean>;\n\n /**\n * Observable, сигнализирующий, доступно ли переключение меню\n */\n public abstract readonly toggleDisabled$: Observable<boolean>;\n\n /**\n * Текущее синхронное состояние меню\n */\n public abstract get isOpen(): boolean;\n\n /**\n * Принудительно установить состояние меню\n */\n public abstract setOpen(value: boolean): void;\n\n /**\n * Переключить состояние меню\n */\n public abstract toggle(): void;\n}\n","export enum ERuntimeErrorCode {\n // Structure validation errors\n NO_CONTROLS = 1000,\n MISSING_CONTROL = 1001,\n MISSING_CONTROL_VALUE = 1002,\n}\n","import {\n AbstractControl,\n FormArray,\n FormGroup,\n ɵFormGroupRawValue,\n ɵFormGroupValue,\n} from '@angular/forms';\nimport { ɵRuntimeError as RuntimeError } from '@angular/core';\nimport { ERuntimeErrorCode } from './errors-consts';\nimport { ControlsWrapper, ExtractForm } from '../../types/sub-types';\n\nfunction assertAllValuesPresent(control: any, isGroup: boolean, value: any): void {\n control._forEachChild((_: unknown, key: string | number) => {\n if (value[key] === undefined) {\n throw new RuntimeError(ERuntimeErrorCode.MISSING_CONTROL_VALUE, '');\n }\n });\n}\n\nexport function assertControlPresent(parent: any, isGroup: boolean, key: string | number): void {\n const controls = parent.controls as { [key: string | number]: unknown };\n const collection = isGroup ? Object.keys(controls) : controls;\n\n if (collection.length === 0) {\n throw new RuntimeError(ERuntimeErrorCode.NO_CONTROLS, '');\n }\n\n if (!controls[key]) {\n throw new RuntimeError(ERuntimeErrorCode.MISSING_CONTROL, '');\n }\n}\n\n/** @deprecated заменить на FormGroup */\nexport class FormGroupWrapper<TItem> extends FormGroup<ControlsWrapper<TItem>> {\n public override setValue(\n value: TItem & ɵFormGroupRawValue<any>,\n options?: { onlySelf?: boolean; emitEvent?: boolean }\n ): void {\n assertAllValuesPresent(this, true, value);\n\n for (const name of Object.keys(value) as (keyof TItem)[]) {\n assertControlPresent(this, true, name as any);\n const control = (this.controls as any)[name];\n const currentValue = (value as any)[name];\n\n if (control instanceof FormArray && Array.isArray(currentValue)) {\n control.clear();\n\n for (const item of currentValue as AbstractControl<any, any>[]) {\n item.setParent(control);\n control.push(item, { emitEvent: options?.emitEvent });\n }\n } else {\n control.setValue(currentValue, {\n onlySelf: true,\n emitEvent: options?.emitEvent,\n });\n }\n }\n\n this.updateValueAndValidity(options);\n }\n\n public override patchValue(\n value: Partial<TItem> | ɵFormGroupValue<any>,\n options?: { onlySelf?: boolean; emitEvent?: boolean }\n ): void {\n if (value === null) {\n return;\n }\n\n for (const name of Object.keys(value) as (keyof TItem)[]) {\n const control = (this.controls as any)[name];\n const currentValue = value[name as keyof ({ [key: string]: any } | Partial<TItem>)]!;\n\n if (control) {\n if (control instanceof FormArray && Array.isArray(currentValue)) {\n control.clear();\n\n for (const item of currentValue as AbstractControl<any, any>[]) {\n item.setParent(control);\n control.push(item, { emitEvent: options?.emitEvent });\n }\n } else {\n control.patchValue(currentValue, {\n onlySelf: true,\n emitEvent: options?.emitEvent,\n });\n }\n }\n }\n\n this.updateValueAndValidity(options);\n }\n\n public getDirtyValues(): Partial<ExtractForm<TItem>> {\n const values: Partial<ExtractForm<TItem>> = {};\n\n for (const key of Object.keys(this.controls)) {\n const control = this.get(key);\n\n if (control?.dirty) {\n values[key as keyof TItem] = control.getRawValue();\n }\n }\n\n return values;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\n/** Максимальное кол-во символов в текстовых полях */\nexport const MAX_LENGTH_TEXT_PARAMS = new InjectionToken<number>('MAX_LENGTH_TEXT_PARAMS');\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectorRef,\n computed,\n DestroyRef,\n Directive,\n forwardRef,\n inject,\n Injector,\n input,\n Input,\n OnInit,\n Optional,\n Self,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl, Validators } from '@angular/forms';\nimport { filter, skip, tap } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IInputControl, InputControlGqlValue, InputControlSaveValue } from '../../types';\nimport {\n FormatterGqlValueType,\n FormatterSavedValueType,\n ParserSavedValueType,\n} from '../../types/params.types';\nimport { distinctUntilChangedJSONs } from '../../utils';\n\n@Directive({\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ParamBase),\n multi: true,\n },\n ],\n})\nexport abstract class ParamBase<\n ValueType extends any | null,\n SavedValueType extends InputControlSaveValue,\n >\n implements ControlValueAccessor, OnInit, AfterViewInit, AfterContentInit\n{\n /** Название */\n @Input() label = '';\n /** Текст при пустом значении control (null) */\n placeholder = input<string>('');\n /** Режим просмотра, по умолчанию выключен */\n @Input() readmode = false;\n /** Кнопка быстрой очистки поля, по умолчанию включена */\n @Input() forceClear = true;\n /** Текст при наведении на значение control */\n @Input() hint: string | null = null;\n /** Готовые стили для использования поля в панели фильтров/параметров или на карточке, по умолчанию стили для карточки */\n @Input() paramStyle: 'filter' | 'card' = 'card';\n /** Метод для конвертации значения control при сохранении (используется при сохранении фильтров в БД) */\n @Input() set formatSavedValue(\n formatter: FormatterSavedValueType<ValueType, SavedValueType> | undefined\n ) {\n if (formatter) {\n this.formatterSavedValue = formatter;\n }\n }\n /** Метод для конвертации сохраненного значения в control (используется при установке сохраненных фильтров из БД) */\n @Input() set parseSavedValue(\n parser: ParserSavedValueType<SavedValueType, ValueType> | undefined\n ) {\n if (parser) {\n this.parserSavedValue = parser;\n }\n }\n /** Метод для конвертации значения control в GQL-значение (используется при вычислении gql_value control) */\n @Input() set formatGqlValue(formatter: FormatterGqlValueType<ValueType> | undefined) {\n if (formatter) {\n this.formatterGqlValue = formatter;\n }\n }\n /** Метод для отображения значения в режиме просмотра */\n buildShowedValue = input((_: ValueType): string => '');\n\n @Input() set required(required: boolean) {\n this._required = required;\n this._setControlRequired(required);\n }\n\n public get required(): boolean {\n return this.control?.hasValidator(Validators.required) ?? false;\n }\n\n @Input() set disabled(disabled: boolean) {\n this._disabled = disabled;\n this._setControlDisabled(disabled);\n }\n\n public get disabled(): boolean {\n return this.control?.disabled ?? false;\n }\n\n @Optional()\n @Self()\n private readonly _ngControl = inject(NgControl);\n\n protected readonly cdr = inject(ChangeDetectorRef);\n protected readonly dr = inject(DestroyRef);\n\n protected control!: IInputControl<ValueType, SavedValueType>;\n protected formatterSavedValue: (value: ValueType, injector?: Injector) => SavedValueType = (\n value\n ) => value as unknown as SavedValueType;\n protected parserSavedValue: (value: SavedValueType, injector?: Injector) => ValueType = (value) =>\n value as unknown as ValueType;\n protected formatterGqlValue: (value: ValueType, injector?: Injector) => InputControlGqlValue = (\n _\n ) => undefined as InputControlGqlValue;\n\n private _required = false;\n private _disabled = false;\n private _isOuterUpdatingSavedValue = true;\n\n protected showedValue = '';\n\n protected readonly applied = computed(() => this.control.applied?.() ?? false);\n\n constructor(private _injector: Injector) {\n if (this._ngControl) {\n this._ngControl.valueAccessor = this;\n }\n }\n\n public get value(): ValueType | undefined {\n return this.control?.getRawValue();\n }\n\n public writeValue(value: ValueType): void {\n this._updateShowedValue(value);\n }\n\n public clear(): void {\n this.control.reset();\n this.control.markAsDirty();\n }\n\n public registerOnChange(onChange: (value: ValueType) => void): void {\n this.onChange = onChange;\n }\n\n protected onChange: (value: ValueType) => void = () => {};\n\n public registerOnTouched(onTouched: () => void): void {\n this.onTouched = onTouched;\n }\n\n protected onTouched = (): void => {};\n\n public ngOnInit(): void {\n this.onInit();\n }\n\n protected onInit(): void {}\n\n public ngAfterViewInit(): void {\n this.afterViewInit();\n }\n\n protected afterViewInit(): void {}\n\n protected get isInvalidAndNotPristine(): boolean {\n return this.control.invalid && !this.control.pristine;\n }\n\n protected isNotEmpty(): boolean {\n const v = this.value;\n\n return !(\n v === null ||\n v === undefined ||\n (typeof v === 'string' && v.trim() === '') ||\n (Array.isArray(v) && v.length === 0) ||\n (typeof v === 'object' && !Array.isArray(v) && Object.keys(v).length === 0)\n );\n }\n\n public ngAfterContentInit(): void {\n this.control =\n this._ngControl && (this._ngControl.control as IInputControl<ValueType, SavedValueType>);\n\n if (this.control) {\n if (this._required) {\n this._setControlRequired(this._required);\n }\n\n if (this._disabled) {\n this._setControlDisabled(this._disabled);\n }\n\n this._subscribeOnValue();\n this._subscribeOnSavedValue();\n }\n\n this.afterContentInit();\n }\n\n private _subscribeOnValue(): void {\n this.control.valueChanges\n .pipe(\n distinctUntilChangedJSONs(),\n tap((value) => this._updateSavedValue(value)),\n takeUntilDestroyed(this.dr)\n )\n .subscribe((value) => {\n this.control.gql_value = this.formatterGqlValue(value, this._injector);\n this._updateShowedValue(value);\n\n if (this.isNotEmpty()) {\n this.control.applied?.set(false);\n }\n });\n }\n\n private _updateShowedValue(value: ValueType): void {\n this.showedValue = this.buildShowedValue()(value);\n this.cdr.markForCheck();\n }\n\n private _updateSavedValue(value: ValueType): void {\n this._isOuterUpdatingSavedValue = false;\n const savedValue = this.formatterSavedValue(value, this._injector);\n this.control.saved_value$?.next(savedValue);\n this._isOuterUpdatingSavedValue = true;\n }\n\n private _subscribeOnSavedValue(): void {\n this.control.saved_value$\n ?.pipe(\n skip(1), // при подписывании на saved_value$ первым приходит null - пропускаем\n filter(() => this._isOuterUpdatingSavedValue),\n takeUntilDestroyed(this.dr)\n )\n .subscribe((savedValue) => {\n const value =\n savedValue === null ? null : this.parserSavedValue(savedValue, this._injector);\n this.control.setValue(value as ValueType);\n });\n }\n\n protected afterContentInit(): void {}\n\n private _setControlRequired(required: boolean): void {\n if (required) {\n this.control?.addValidators(Validators.required);\n } else {\n this.control?.removeValidators(Validators.required);\n }\n }\n\n private _setControlDisabled(disabled: boolean): void {\n if (disabled) {\n this.control?.disable();\n } else {\n this.control?.enable();\n }\n }\n}\n","import { Directive, Injector } from '@angular/core';\nimport { DateTimeService } from '../../services/date-time.service';\nimport { ParamBase } from './param-base';\nimport { PrizmDateTypes } from '../../utils/prizm.shared.module';\nimport { InputControlSaveValue } from '../../types';\nimport { EDatePattern, ETimezone } from '../../directives/date/date-time.types';\n\n@Directive()\nexport abstract class ParamDateBase<\n ValueType extends PrizmDateTypes | null,\n SavedValueType extends InputControlSaveValue,\n> extends ParamBase<ValueType, SavedValueType> {\n protected readonly ETimezone = ETimezone;\n protected readonly EDatePattern = EDatePattern;\n\n protected readonly _dts = this._dateInjector.get(DateTimeService);\n\n protected readonly timezoneChange = this._dts.isTimeZoneChanged$;\n\n constructor(private _dateInjector: Injector) {\n super(_dateInjector);\n }\n\n protected rebuildDateInNewTimezone(date: Date, prevDiff: string, currDiff: string): Date {\n const iso = this._dts.convertDateToISOWithTZ(date, prevDiff);\n const utc = new Date(iso).toISOString();\n\n return this._dts.isoToLocalDate(utc, currDiff);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Apollo } from 'apollo-angular';\nimport { DocumentNode } from 'graphql/language';\nimport gql from 'graphql-tag';\nimport { QueryOptions } from '@apollo/client/core';\nimport { map, Observable, of, take } from 'rxjs';\nimport { MetaQuery } from '../types/params.types';\n\n@Injectable()\nexport class FastQueryStore {\n private cachedTime = -12_345;\n private cachedVariables = '';\n private cachedData: { data: Record<string, any>[]; totalElements: number } = {\n data: [],\n totalElements: 0,\n };\n\n private readonly _apollo = inject(Apollo);\n\n public getResults(\n meta: MetaQuery,\n withoutAggregate?: boolean,\n selectedIdsWhere?: object\n ): Observable<{ data: Record<string, any>[]; totalElements: number; selectedIdsQuery?: any[] }> {\n const offset = meta.offset ?? 0;\n const { limit } = meta;\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const { order_by } = meta;\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const { distinct_on, where } = meta;\n let variables: Record<string, any> = { offset, limit, order_by, distinct_on };\n\n if (where) {\n variables = {\n ...variables,\n where,\n ...(selectedIdsWhere && { selectedIdsWhere }),\n };\n }\n\n const currentTime = Date.now();\n const diff = (currentTime - this.cachedTime) / 20_000;\n if (JSON.stringify(variables) === this.cachedVariables && diff <= 1) {\n return of(this.cachedData);\n }\n const query = this.generateGqlQuery(meta, withoutAggregate, !!where && !!selectedIdsWhere);\n const queryOptions: QueryOptions = {\n query,\n fetchPolicy: 'no-cache',\n variables,\n };\n\n return this._apollo.watchQuery<any>(queryOptions).valueChanges.pipe(\n take(1),\n map(({ data }) => {\n const { table } = meta;\n\n const totalElements = withoutAggregate\n ? data[table.name].length\n : data[`${table.name}_aggregate`].aggregate.count;\n const selectedIdsQuery = data?.selectedIdsQuery;\n const result = { data: data[table.name], totalElements, selectedIdsQuery };\n this.cachedVariables = JSON.stringify(variables);\n this.cachedData = result;\n this.cachedTime = Date.now();\n return result;\n })\n );\n }\n\n public generateGqlQuery(\n meta: MetaQuery,\n withoutAggregate?: boolean,\n withPickedSearch?: boolean\n ): DocumentNode {\n const data = this._buildDeepDataFromValue(meta.table.valueField);\n\n return gql`\n query queryFilter${meta.table.name}(\n $where: ${meta.table.name}_bool_exp\n $selectedIdsWhere: ${meta.table.name}_bool_exp\n $limit: Int\n $offset: Int\n $order_by: [${meta.table.name}_order_by!]\n $distinct_on: [${meta.table.name}_select_column!]\n ) {\n ${\n meta.table.name\n } (where: $where, limit: $limit, offset: $offset, order_by: $order_by, distinct_on: $distinct_on) {\n ${meta.table.idField}\n ${data}\n }\n\n ${\n withoutAggregate\n ? ''\n : `${meta.table.name}_aggregate (where: $where) {\n aggregate {\n count\n }\n }`\n }\n\n ${\n withPickedSearch\n ? `\n selectedIdsQuery: ${meta.table.name}(where: $selectedIdsWhere) {\n ${meta.table.idField}\n ${data}\n }\n `\n : ''\n }\n\n }\n `;\n }\n\n private _buildDeepDataFromValue(value: string): string {\n const resultArray = value.split(' ');\n const arr = [];\n for (const el of resultArray) {\n let result = '';\n const deepValues = el.split('.');\n for (let i = deepValues.length - 1; i > 0; i--) {\n result = `{${deepValues[i]} ${result}}`;\n }\n arr.push(deepValues[0] + result);\n }\n return arr.join(' ');\n }\n}\n","import { Directive, Injector, Input, output } from '@angular/core';\nimport { ParamBase } from './param-base';\nimport { BehaviorSubject } from 'rxjs';\nimport { PolymorphContent } from '@prizm-ui/components';\nimport { InputControlSaveValue } from '../../types';\nimport { InferArrayType } from '../../types/sub-types';\nimport { MetaQuery } from '../../types/params.types';\nimport { FastQueryStore } from '../../store/fast-query-store.service';\n\n@Directive()\nexport abstract class ParamSelectBase<\n ValueType,\n SavedValueType extends InputControlSaveValue,\n> extends ParamBase<ValueType, SavedValueType> {\n @Input() items: NonNullable<InferArrayType<ValueType>>[] = [];\n @Input() searchable: boolean = false;\n @Input() maxDropdownHeight = 342;\n @Input() valueTemplate?: PolymorphContent;\n @Input() listItemTemplate?: PolymorphContent;\n @Input() nullContent: PolymorphContent | string | null = 'Не выбрано';\n /** Массив полей по которым будет производиться фильтрация _or */\n @Input() searchSubfields: string[] = [];\n /** Флаг строгого поиска: строгий - _eq, не строгий - _ilike */\n @Input() strictSearch = false;\n @Input() selectClasses?: string;\n @Input() limit = 50;\n /** форматтер для задания кастомного отображения значения в поле */\n @Input() formatShowedValue: (value: any, field: string) => string = (value, field) =>\n value[field];\n /** мета для автоматической подргузки значений из таблицы */\n @Input() set meta(meta: MetaQuery | null) {\n if (JSON.stringify(meta) !== JSON.stringify(this.meta)) {\n this._meta$.next(meta);\n }\n }\n public get meta(): MetaQuery | null {\n return this._meta$.getValue();\n }\n\n public itemsChange = output<NonNullable<InferArrayType<ValueType>>[]>();\n\n private readonly _meta$ = new BehaviorSubject<MetaQuery | null>(null);\n\n protected readonly meta$ = this._meta$.asObservable();\n\n protected readonly store = this._selectInjector.get(FastQueryStore);\n\n public loading = false;\n\n constructor(private _selectInjector: Injector) {\n super(_selectInjector);\n }\n\n protected buildWhere(searchValue?: string): object | undefined {\n const paramWhere = this.meta?.where;\n const { valueField } = this.metaFields;\n\n // Создаем массив условий _ilike для дополнительных полей\n const ilikeConditions = [];\n\n if (searchValue) {\n if (this.searchSubfields) {\n ilikeConditions.push(\n ...this.searchSubfields.map((field) =>\n this.buildNestedCondition(field, searchValue, false)\n )\n );\n }\n\n if (valueField) {\n ilikeConditions.push(this.buildNestedCondition(valueField, searchValue, this.strictSearch));\n }\n }\n\n // Если параметр where не задан, но есть значение для поиска и поле valueField, возвращаем только условия _ilike\n if (!paramWhere && ilikeConditions.length > 0) {\n return { _or: ilikeConditions };\n }\n\n // Если параметр where задан, добавляем условия _ilike к существующим условиям\n if (paramWhere) {\n return {\n ...(paramWhere as object),\n _or: ilikeConditions.length === 0 ? undefined : ilikeConditions,\n };\n }\n\n // Если ничего не задано, возвращаем undefined\n return;\n }\n\n protected buildNestedCondition(field: string, value: string, strict: boolean): object {\n const parts = field.split('.');\n const current = {};\n let temp: any = current;\n\n for (let i = 0; i < parts.length - 1; i++) {\n const part = parts[i];\n temp[part] = {};\n temp = temp[part];\n }\n\n const lastPart = parts[parts.length - 1];\n temp[lastPart] = strict ? { _eq: value } : { _ilike: `%${value}%` };\n\n return current;\n }\n\n protected get metaFields(): { idField: string | null; valueField: string | null } {\n const idField = this.meta?.table.idField ?? null;\n const valueField = this.meta?.table.valueField.split(' ')[0] ?? null;\n\n return {\n idField,\n valueField,\n };\n }\n}\n","import { Directive, inject, input } from '@angular/core';\nimport { ParamBase } from './param-base';\nimport { MAX_LENGTH_TEXT_PARAMS } from './param.tokens';\n\nconst DEFAULT_MAX_LENGTH = 1000;\n\n@Directive()\nexport abstract class ParamTextBase extends ParamBase<string | null, string | null> {\n private readonly _initMaxLength =\n inject(MAX_LENGTH_TEXT_PARAMS, { optional: true }) ?? DEFAULT_MAX_LENGTH;\n\n public override placeholder = input('Введите значение');\n public override buildShowedValue = input(\n (value: string | null): string => value?.toString() ?? '-'\n );\n\n /**\n * Максимальное кол-во символов\n *\n * @default 1000\n * */\n public maxLength = input(this._initMaxLength);\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { PrizmTableCellSorter } from '@prizm-ui/components';\nimport { Apollo, MutationResult } from 'apollo-angular';\nimport { Observable, ReplaySubject, Subscription } from 'rxjs';\nimport { IHasuraQueryFilter } from '../../components/register-table/model/schema';\nimport { GqlFields } from '../../types/inputs.types';\nimport { IBaseRegisterStore, IBaseRegisterStoreState } from '../../types/register-base.types';\nimport { HasuraError } from '../../types/hasura.types';\n\n@Injectable()\nexport abstract class RegisterBaseStore<\n Type extends Record<string, any>,\n State extends IBaseRegisterStoreState<Type> = IBaseRegisterStoreState<Type>,\n >\n extends ComponentStore<State>\n implements IBaseRegisterStore<Type>\n{\n protected apollo = inject(Apollo);\n\n readonly error = (e: HasuraError): void => {\n console.error(e);\n this.setLoading(false);\n };\n\n public getBaseFilter(params?: any): Record<string, any> {\n return {} as Record<string, any>;\n }\n\n readonly mutationCompleted$ = new ReplaySubject<boolean>();\n readonly loading$ = this.select((state) => state.loading);\n readonly count$ = this.select((state) => state.count);\n readonly total$ = this.select((state) => state.total);\n\n readonly objects$ = this.select((state) => state.objects);\n readonly setObjects = this.updater(\n (store, objects: Type[]): State => ({\n ...store,\n loading: false,\n objects,\n })\n );\n\n readonly setLoading = this.updater((store, loading: boolean): State => ({ ...store, loading }));\n readonly setCount = this.updater(\n (store, count: number): State => ({\n ...store,\n count,\n })\n );\n\n readonly setTotal = this.updater(\n (state, total: number): State => ({\n ...state,\n total,\n })\n );\n\n abstract readonly deleteByIds: (\n ids: string[],\n ...args: unknown[]\n ) => Observable<MutationResult<Type[]> | null>;\n abstract readonly fetchTotal: (\n observableOrValue: Record<string, any> | Observable<Record<string, any>>\n ) => Subscription;\n abstract readonly fetchObjects: (\n observableOrValue:\n | {\n filter: IHasuraQueryFilter<Type>;\n callback?: (data: Type[]) => void;\n }\n | Observable<{\n filter: IHasuraQueryFilter<Type>;\n callback?: (data: Type[]) => void;\n }>\n ) => Subscription;\n\n abstract buildFilter(\n limit: number | undefined,\n offset: number | undefined,\n gqlFilter: GqlFields | undefined,\n sorter?: PrizmTableCellSorter<Type>[]\n ): IHasuraQueryFilter<Type>;\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n DestroyRef,\n Directive,\n inject,\n Injector,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n debounceTime,\n filter as rxjsFilter,\n map,\n Observable,\n ReplaySubject,\n Subscription,\n switchMap,\n take,\n tap,\n throwError,\n} from 'rxjs';\nimport {\n ERegisterObjectState,\n IRegisterBase,\n IRegisterObject,\n ITpUserSettings,\n ITpUserSettingsSettingsFilter,\n ObjectsSubscriptionConfig,\n IUserProfile,\n EInputsAction,\n EInputsState,\n GqlField,\n GqlFields,\n} from '../../types';\nimport {\n EColumnStatus,\n IColumnSettings,\n IColumnSettingsChanges,\n} from '../../components/column-settings/types/column-settings.types';\nimport {\n IColumnData,\n IHasuraQueryFilter,\n RegisterTableCellSorter,\n ThWidthEntry,\n} from '../../components';\nimport {\n ApplySelectionTypes,\n SelectionTypes,\n} from '../../components/checkbox-selector/checkbox-selector.types';\nimport {\n FiltersStateService,\n FiltersService,\n FiltersTransmitService,\n SelectedObjectsStateService,\n} from '../../services';\nimport {\n SEARCH_INPUT_DEBOUNCE_TIME_MLS,\n SETTINGS_TYPE,\n USER_PROFILE_LOADER,\n USER_SETTINGS_LOADER,\n} from '../../consts/register-base.consts';\nimport { getLastSegmentOfPathName, isNonNull } from '../../utils';\nimport { FormGroupWrapper } from '../form-group-wrapper';\nimport { DEFAULT_LIMIT } from '../../services/inputs-state.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport _ from 'lodash';\nimport { ScalarUUID } from 'hasura';\nimport { RegisterBaseStore } from './register-base.store';\n\n@Directive()\nexport abstract class RegisterBase<T extends IRegisterBase, Form = any>\n implements OnInit, AfterViewInit, OnDestroy\n{\n /** Сервисы управления фильтрами */\n protected readonly filtersService = inject(FiltersService);\n protected readonly stateService = inject(FiltersStateService);\n protected readonly transmitter = inject(FiltersTransmitService, { optional: true });\n /** Сервис управления пользователем */\n protected readonly userService = inject(USER_PROFILE_LOADER);\n /** Сервис управления данными в реестре */\n protected readonly baseStore = inject(RegisterBaseStore<T>, { optional: true });\n // TODO удалить optional: true после выполнения задачи SMA2-3134\n protected readonly selectedService = inject(SelectedObjectsStateService<T>, {\n optional: true,\n });\n // TODO protected readonly navigationService = inject(NavigationService);\n protected readonly router = inject(Router);\n protected readonly cdr = inject(ChangeDetectorRef);\n protected readonly destroyRef = inject(DestroyRef);\n\n private readonly settingsService = inject(USER_SETTINGS_LOADER);\n\n public readonly filterApplied$: Observable<boolean> = this.stateService.gqlValues$.pipe(\n map((filter) => Number(filter.length) > 0)\n );\n public readonly page$ = this.stateService.page$;\n public readonly limit$ = this.stateService.limit$;\n public readonly selectedRecordsLoading$ = new BehaviorSubject(false);\n\n public columnsData: IColumnData[];\n public columns: string[];\n public data: T[] = [];\n public visibleData: T[] = [];\n public dataCount = 0;\n /** @deprecated Используйте selectedObjectsFromState */\n public selectedObjects = new Set<any>();\n /** @deprecated Используйте selectedIdsFromState */\n public selectedIds = new Set<ScalarUUID>();\n public _user = this.userService.getUserProfile();\n public stickyLeftIds: string[] = [];\n public stickyRightIds: string[] = [];\n public currentFilter: IHasuraQueryFilter<T> | null = null;\n /**\n * Форма фильтров\n */\n protected filtersForm!: FormGroupWrapper<Form>;\n protected filterState: ITpUserSettingsSettingsFilter[] = [];\n\n private _limit!: number;\n private _offset!: number;\n private _filterState!: GqlFields;\n private _modulePath = getLastSegmentOfPathName(this.router.url);\n private _defaultFilterApplied$ = new ReplaySubject<boolean>();\n /**\n * Всего записей, без учета фильтра\n */\n public abstract totalNotFiltered$: Observable<number>;\n /**\n * Маршруты для бредкрамба\n */\n public abstract routes: any[];\n /**\n * Контрол строки поиска\n */\n public searchInput = this.filtersService.searchInput!;\n /**\n * Действие завершено\n */\n public abstract actionCompleted$: ReplaySubject<boolean>;\n /**\n * Получение общего количества записей\n */\n public abstract fetchTotalObjects: (\n observableOrValue: Record<string, any> | Observable<Record<string, any>>\n ) => Subscription;\n /**\n * Запрос на количество отфильтрованных записей\n */\n public fetchTotalFilteredObjects:\n | ((observableOrValue: Record<string, any> | Observable<Record<string, any>>) => Subscription)\n | undefined;\n /**\n * Подписка на получение всех объектов и с обратным вызовом\n */\n public abstract objectsSubscription: (\n observableOrValue: ObjectsSubscriptionConfig<T> | Observable<ObjectsSubscriptionConfig<T>>\n ) => Subscription;\n /**\n * Базовый фильтр, по умолчанию\n */\n public abstract baseFilter: (user: IUserProfile | undefined) => Record<string, any>;\n\n /**\n * Сборка фильтра\n */\n public abstract buildFilter(\n limit?: number,\n offset?: number,\n gqlFilter?: GqlFields,\n sorter?: RegisterTableCellSorter<T>[]\n ): any;\n\n /**\n * Сборка фильтров реестра\n */\n protected abstract get buildForm(): FormGroupWrapper<Form>;\n\n public get limit(): number {\n return this._limit;\n }\n\n public get offset(): number {\n return this._offset;\n }\n\n /** Uuid'ы всех выбранных или исключаемых объектов реестра (зависит от состояния еще не загруженных объектов) */\n public get idsFromState(): Set<ScalarUUID> {\n const service: SelectedObjectsStateService<T> | null = this.selectedService;\n\n if (!service) {\n throw new Error('SelectedObjectsStateService не запровайжен');\n }\n\n return service.keys();\n }\n\n /** Все выбранные uuid'ы реестра */\n public get selectedIdsFromState(): Set<ScalarUUID> {\n const service: SelectedObjectsStateService<T> | null = this.selectedService;\n\n if (!service) {\n throw new Error('SelectedObjectsStateService не запровайжен');\n }\n\n return service.selectedKeys();\n }\n\n /** Все выбранные объекты реестра */\n public get selectedObjectsFromState(): Set<T> {\n const service: SelectedObjectsStateService<T> | null = this.selectedService;\n\n if (!service) {\n throw new Error('SelectedObjectsStateService не запровайжен');\n }\n\n return service.selectedValues();\n }\n\n private _columnsSettings: ITpUserSettings | undefined;\n private _pageRowsLimitSetting: ITpUserSettings | undefined;\n\n private readonly _defaultColumnsWidths: Map<string, string | undefined>;\n\n private readonly _selectionType$ =\n this.selectedService?.selectionType$ ?? new BehaviorSubject<ApplySelectionTypes>(null);\n\n public readonly stateObjects = this.selectedService?.state;\n\n protected constructor(\n protected readonly injector: Injector,\n columnsData: IColumnData[]\n ) {\n this.columnsData = columnsData;\n this._defaultColumnsWidths = new Map(columnsData.map((col) => [col.name, col.width]));\n this.columns = this._getDefaultColumnsRecursive(columnsData);\n this._subscribeOnSettings();\n this._fetchSavedPageRowsLimit();\n const state = this.router.getCurrentNavigation()?.extras?.state;\n if (state) {\n this.filterState = this.parseToFilters(state);\n }\n }\n\n private _subscribeOnSettings(): void {\n this.settingsService.settings$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(([userSetting]) => {\n const { tableColumnsWidth } = userSetting?.settings ?? {};\n const type = userSetting?.settings_type;\n\n if (type && type !== SETTINGS_TYPE.COLUMNS) {\n return;\n }\n\n const cleanedCurrent = this._omitUndefined(\n this._columnsSettings?.settings.tableColumnsWidth\n );\n const cleanedNew = this._omitUndefined(tableColumnsWidth);\n\n if (!_.isEqual(cleanedCurrent, cleanedNew)) {\n this._setColumnsWidth(tableColumnsWidth);\n }\n\n this._columnsSettings = userSetting;\n });\n }\n\n private _omitUndefined(arr: ThWidthEntry[] | undefined) {\n return _.map(arr ?? [], (obj) => _.omitBy(obj, _.isUndefined));\n }\n\n private _setColumnsWidth(columnsWidth: ThWidthEntry[] | undefined): void {\n const thsWidthMap = new Map(columnsWidth?.map(({ name, width }) => [name, width]));\n\n this.columnsData = this.columnsData.map((col) => {\n const defaultWidth = this._defaultColumnsWidths.get(col.name)!;\n const currentWidth = thsWidthMap.has(col.name) ? thsWidthMap.get(col.name) : null;\n\n const width = currentWidth === null ? defaultWidth : currentWidth;\n\n return {\n ...col,\n width,\n };\n });\n }\n\n private _fetchSavedPageRowsLimit(): void {\n this.settingsService\n .fetchUserSettings$(\n {\n id_user: {\n _eq: this._user.id,\n },\n settings_type: {\n _eq: SETTINGS_TYPE.REGISTER_PAGE_ROWS_LIMIT,\n },\n module_name: {\n _eq: this._modulePath,\n },\n },\n true\n )\n .subscribe(([firstSetting]) => {\n this._pageRowsLimitSetting = firstSetting;\n const { pageRowsLimit } = firstSetting?.settings ?? {};\n\n this.stateService.setLimit(pageRowsLimit ?? DEFAULT_LIMIT);\n });\n }\n\n public ngOnInit(): void {\n this.filtersForm = this.buildForm;\n this.filtersService.init(this.filtersForm);\n this.stateService.setState({ state: EInputsState.HIDDEN, action: EInputsAction.OPEN });\n\n this.fetchTotalObjects(this.baseFilter(this._user));\n this._subscribeOnMutationCompleted();\n this.subscribeOnPaging();\n\n // TODO проверить нужна ли Перезагрузка страницы\n // if (this.navigationService.previousUrl === null) {\n // this.stateService.setOffset(0);\n // this.stateService.setPage(1);\n // }\n\n this.baseStore?.count$?.subscribe((count) => {\n this.dataCount = count;\n this.stateService.setCount(count);\n });\n }\n\n public ngAfterViewInit(searchLimiter = 2): void {\n this._setFilters();\n this.subscribeOnSearchChanges(searchLimiter);\n }\n\n private _setFilters(): void {\n const queryFilters = this.transmitter?.filters;\n const querySearch = this.transmitter?.search;\n let filters: ITpUserSettingsSettingsFilter[] | undefined;\n\n if (querySearch) {\n this.searchInput.setValue(querySearch);\n }\n\n if (!queryFilters || queryFilters.length > 0) {\n filters = queryFilters || [];\n }\n\n this.applyBaseFilter();\n this._initDefaultFilter(filters);\n }\n\n protected applyBaseFilter(_data?: any): void {}\n\n public ngOnDestroy(): void {\n this.actionCompleted$.complete();\n this.selectedRecordsLoading$.complete();\n this.filtersService.clear();\n this.stateService.setOffset(0);\n this.stateService.setGqlValues({});\n\n if (this.searchInput?.value) {\n this.stateService.setSearchFilterValue('');\n this.stateService.setGqlValues(this.filtersService.gqlFilter);\n }\n }\n\n protected applyFilters(filters: ITpUserSettingsSettingsFilter[]): void {\n this.filtersService.setUserSettingsFilterValues(filters);\n this.stateService.setGqlValues(this.filtersService.gqlFilter);\n }\n\n protected setData(data: T[], count?: number): void {\n this.data = data;\n\n if (count !== undefined) {\n this.dataCount = count;\n this.stateService.setCount(count);\n }\n\n this.cdr.markForCheck();\n }\n\n protected updateAllStateObjectsByState(state: ERegisterObjectState): void {\n this.selectedService?.setAllStateObjectsByState(state);\n }\n\n protected updateStateObjectByKey(key: ScalarUUID, updates: Partial<IRegisterObject<T>>): void {\n this.selectedService?.setStateObjectByKey(key, updates);\n }\n\n protected clearSelections(data?: T[]): void {\n this.selectedIds.clear();\n this.selectedObjects.clear();\n\n if (this.selectedService) {\n this.selectedService?.resetState(data);\n this.buildActions({\n row: [],\n count: 0,\n });\n }\n }\n\n protected actionCompleted(): void {\n const filter = this.buildFilter(this.limit, this.offset, this._filterState);\n this.currentFilter = filter;\n\n this.clearSelections();\n this.objectsSubscription({ filter });\n }\n\n protected buildActions(_data: { row: T[]; count: number }): void {}\n\n protected subscribeOnSearchChanges(limiter: number): void {\n this.searchInput?.valueChanges\n .pipe(\n rxjsFilter((value) => !value || value.length > limiter),\n debounceTime(SEARCH_INPUT_DEBOUNCE_TIME_MLS),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n this.stateService.setGqlValues(this.filtersService.gqlFilter);\n });\n }\n\n public updateRegister(): void {\n this.stateService.setLimit(this.stateService.limit);\n }\n\n public subscribeOnPaging(): void {\n this._defaultFilterApplied$\n .pipe(\n take(1),\n switchMap(() =>\n combineLatest([\n this.stateService.limit$.pipe(rxjsFilter(isNonNull)),\n this.stateService.offset$,\n this.stateService.gqlValues$.pipe(\n tap((data) => {\n if (Number(data.length) > 0) {\n this.selectChanged(null);\n }\n })\n ),\n this.stateService.sorter$,\n ]).pipe(debounceTime(250))\n ),\n catchError((e) => {\n console.error('pagination', e);\n\n return throwError(() => new Error(e));\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(([limit, offset, gqlFilter, sorter]) => {\n const filter = this.buildFilter(limit, offset, gqlFilter, sorter);\n const gqlFilterUpdated = !_.isEqual(this._filterState, gqlFilter);\n this.currentFilter = filter;\n this._filterState = gqlFilter;\n this._limit = limit;\n this._offset = offset;\n if (this.stateObjects) {\n if (gqlFilterUpdated) {\n this.selectedService?.resetState();\n }\n\n this.objectsSubscription({ filter, callback: this._setStateObjects.bind(this) });\n } else {\n this.objectsSubscription({ filter });\n }\n this.fetchTotalFilteredObjects?.(filter.where);\n });\n }\n\n private _setStateObjects(data: T[]): void {\n this.selectedService?.loadStateObjects(data);\n }\n\n public selectChanged(value: ApplySelectionTypes): void {\n this._selectionType$.next(value);\n\n const stateObjects = this.stateObjects;\n\n if (stateObjects) {\n this._changeStateObjects(stateObjects(), value);\n\n return;\n }\n\n const filter = this._selectChangedFilter(value);\n this.currentFilter = filter;\n\n this.buildActions({\n row: [...(this.selectedObjects ?? [])],\n count: this.selectedObjects ? this.selectedObjects.size : 0,\n });\n\n if (!filter) {\n return;\n }\n\n this.selectedRecordsLoading$.next(true);\n this.objectsSubscription({\n filter,\n callback: this._setSelected.bind(this),\n });\n }\n\n private _changeStateObjects(\n stateObjects: Map<ScalarUUID, IRegisterObject<T>>,\n value: ApplySelectionTypes\n ): void {\n if (value === SelectionTypes.ALL) {\n this.updateAllStateObjectsByState(ERegisterObjectState.SELECTED);\n } else if (value === SelectionTypes.INVERSE) {\n this._inverseStateObjects(stateObjects);\n } else if (value === SelectionTypes.VISIBLE) {\n this._selectVisibleStateObjects();\n } else if (typeof value === 'number') {\n this._selectFirstNStateObjects(value);\n } else {\n this.clearSelections(this.data);\n }\n\n this.buildActions({\n row: [...this.selectedObjectsFromState],\n count: this.selectedObjectsFromState.size,\n });\n }\n\n private _inverseStateObjects(stateObjects: Map<ScalarUUID, IRegisterObject<T>>): void {\n for (const [key, { state }] of stateObjects) {\n const inverseState =\n state === ERegisterObjectState.SELECTED\n ? ERegisterObjectState.UNSELECTED\n : ERegisterObjectState.SELECTED;\n\n this.updateStateObjectByKey(key, { state: inverseState });\n }\n }\n\n private _selectVisibleStateObjects(): void {\n this.updateAllStateObjectsByState(ERegisterObjectState.UNSELECTED);\n for (const visibleObject of this.visibleData) {\n this.updateStateObjectByKey(visibleObject.id, { state: ERegisterObjectState.SELECTED });\n }\n }\n\n private _selectFirstNStateObjects(value: number): void {\n this.updateAllStateObjectsByState(ERegisterObjectState.UNSELECTED);\n\n if (value > this.limit) {\n const { sorter } = this.stateService;\n const filter = this.buildFilter(\n value,\n this.offset,\n this._filterState,\n sorter.length > 0 ? sorter : undefined\n );\n this.objectsSubscription({\n filter,\n callback: this._selectFirstNLoadingObjects.bind(this),\n noSet: true,\n });\n } else {\n const firstNObjects = this.data.slice(0, value);\n this._selectFirstNLoadingObjects(firstNObjects);\n }\n }\n\n private _selectFirstNLoadingObjects(objects: T[]): void {\n for (const object of objects) {\n this.updateStateObjectByKey(object.id, { state: ERegisterObjectState.SELECTED, object });\n }\n }\n\n public filterToggle(): void {\n this.stateService.toggle();\n }\n\n public onPaginatorChange(paginatorChange: {\n first: number;\n page: number;\n pagesCount: number | null;\n rows: number;\n }): void {\n const { rows, first, page } = paginatorChange;\n\n if (this.stateService.limit !== rows) {\n this.stateService.setLimit(rows);\n this._savePageRowsLimit(rows);\n }\n\n if (this.stateService.offset !== first - 1) {\n this.stateService.setOffset(first - 1);\n }\n\n if (this.stateService.page !== page) {\n this.stateService.setPage(page);\n }\n }\n\n private _savePageRowsLimit(pageRowsLimit: number): void {\n this.settingsService\n .upsertReturningOne$(SETTINGS_TYPE.REGISTER_PAGE_ROWS_LIMIT)\n .subscribe((setting) => {\n this._pageRowsLimitSetting = setting || undefined;\n });\n this.settingsService.upsertUserSettingsByUserId({\n settings: {\n id: this._pageRowsLimitSetting?.id,\n settings_type: SETTINGS_TYPE.REGISTER_PAGE_ROWS_LIMIT,\n module_name: this._modulePath,\n settings: { pageRowsLimit },\n },\n hidden: true,\n });\n }\n\n public updateColumnSettings({ settings }: IColumnSettingsChanges): void {\n if (settings) {\n this.stickyLeftIds = this._getColumnIdsRecursive(settings.stickyLeft);\n this.stickyRightIds = this._getColumnIdsRecursive(\n settings.stickyRight,\n (el) => el.status === EColumnStatus.DEFAULT\n );\n this.columns = [\n ...this.stickyLeftIds,\n ...this._getColumnIdsRecursive(\n settings.columns,\n (el) => el.status === EColumnStatus.DEFAULT\n ),\n ...this.stickyRightIds,\n ];\n }\n\n this.cdr.markForCheck();\n }\n\n private _getColumnIdsRecursive(\n columns: IColumnSettings[],\n predicate?: (value: IColumnSettings, index: number, array: IColumnSettings[]) => unknown\n ): string[] {\n const filteredColumns = predicate\n ? columns.filter((col, index, array) => predicate(col, index, array))\n : columns;\n\n return filteredColumns.flatMap((column) => {\n const { id, children } = column;\n\n if (children) {\n return [id, ...this._getColumnIdsRecursive(children, predicate)];\n }\n\n return [id];\n });\n }\n\n public updateSort(sort: RegisterTableCellSorter<any>[]): void {\n this.stateService.setSorter(sort);\n }\n\n protected saveThsWidthToUserSettings(tableColumnsWidth: ThWidthEntry[]): void {\n const settings = this._columnsSettings;\n if (settings) {\n settings.settings.tableColumnsWidth = tableColumnsWidth;\n }\n\n this.settingsService.upsertUserSettingsByUserId({\n settings: {\n id: this._columnsSettings?.id,\n settings_type: SETTINGS_TYPE.COLUMNS,\n module_name: this._modulePath,\n settings: { ...this._columnsSettings?.settings, tableColumnsWidth },\n },\n hidden: true,\n updateSettings: true,\n });\n }\n\n protected get filtersAreOpened(): boolean {\n return this.stateService.state.state !== EInputsState.HIDDEN;\n }\n\n private _subscribeOnMutationCompleted(): void {\n this.actionCompleted$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.actionCompleted());\n }\n\n private _initDefaultFilter(queryFilters: ITpUserSettingsSettingsFilter[] | undefined): void {\n this.settingsService\n .fetchUserSettings$({\n id_user: {\n _eq: this._user.id,\n },\n settings_type: {\n _in: [SETTINGS_TYPE.FILTER, SETTINGS_TYPE.REGISTER_PINNED_INPUTS],\n },\n module_name: {\n _eq: this._modulePath,\n },\n })\n .pipe(take(1))\n .subscribe((userSettings) => {\n const pinnedFilter = userSettings.find(\n ({ settings_type: type }) => type === SETTINGS_TYPE.REGISTER_PINNED_INPUTS\n );\n const isPinned = !!pinnedFilter?.settings.pinned;\n const favoriteFilter = userSettings.find(({ settings }) => settings.favorite);\n\n if (isPinned) {\n this.stateService.setPin(true);\n this.stateService.setState({\n state: EInputsState.FILTER_LIST,\n action: EInputsAction.APPLY_SAVED_FILTER,\n });\n }\n\n if (queryFilters || this.searchInput?.getRawValue()) {\n this.applyFilters(queryFilters ?? []);\n } else if (pinnedFilter && isPinned) {\n this._applyFilterSettings(pinnedFilter);\n } else if (favoriteFilter) {\n this._applyFilterSettings(favoriteFilter);\n }\n\n this._defaultFilterApplied$.next(true);\n });\n }\n\n private _applyFilterSettings(settings: ITpUserSettings): void {\n this.filtersService.setUserSettingsFilterValues(settings.settings.filter ?? []);\n const { gqlFilter } = this.filtersService;\n this.stateService.setGqlValues(gqlFilter);\n this.stateService.setState({\n state: EInputsState.HIDDEN,\n action: EInputsAction.APPLY_SAVED_FILTER,\n });\n }\n\n private _selectChangedFilter(selection: ApplySelectionTypes): any {\n let filter = null;\n\n if (selection === null) {\n this.clearSelections();\n return;\n }\n\n if (selection === SelectionTypes.ALL || typeof selection === 'number') {\n filter = this._handleAllOrNumberSelection(selection);\n } else if (selection === SelectionTypes.VISIBLE) {\n this._selectVisibleItems();\n } else if (selection === SelectionTypes.INVERSE) {\n filter = this._handleInverseSelection();\n }\n\n return filter;\n }\n\n private _handleAllOrNumberSelection(selection: ApplySelectionTypes): any {\n let filter = null;\n const { sorter } = this.stateService;\n\n if (selection === SelectionTypes.ALL) {\n filter = this.buildFilter(undefined, undefined, this._filterState);\n } else if (typeof selection === 'number') {\n if (selection > this.limit) {\n filter = this.buildFilter(\n selection,\n 0,\n this._filterState,\n sorter.length > 0 ? sorter : undefined\n );\n } else {\n this._selectFirstNItems(selection);\n }\n }\n\n return filter;\n }\n\n private _selectFirstNItems(count: number): void {\n this.selectedObjects = new Set(this.data.slice(0, count));\n this.selectedIds = new Set(this.data.map((d) => d.id).slice(0, count));\n }\n\n private _selectVisibleItems(): void {\n this.selectedObjects = new Set(this.visibleData);\n this.selectedIds = new Set(this.visibleData.map((d) => d.id));\n }\n\n private _handleInverseSelection(): any {\n const inverseFilter = { id: { _nin: [...this.selectedIds] } } as GqlField;\n const updatedFilterState = Array.isArray(this._filterState)\n ? [...this._filterState, inverseFilter]\n : [this._filterState, inverseFilter];\n\n return this.buildFilter(undefined, undefined, updatedFilterState);\n }\n\n private _setSelected(data: T[]): void {\n this.selectedObjects = new Set(data);\n this.selectedIds = new Set(data.map((d) => d.id));\n this.selectedRecordsLoading$.next(false);\n }\n\n protected parseToFilters(input: { [key: string]: any }): ITpUserSettingsSettingsFilter[] {\n return Object.entries(input).map(([key, value]) => ({\n id: key,\n value,\n }));\n }\n\n protected get selectedCount(): number {\n const selectedSize = this.selectedService?.selectedValues()?.size ?? null;\n const unselectedSize = this.selectedService?.unselectedValues()?.size ?? 0;\n const unfetchedObjects = this.selectedService?.stateUnfetchedObjects();\n const isNotSelected = unfetchedObjects !== ERegisterObjectState.SELECTED;\n\n if (selectedSize === null) {\n return this.selectedIds.size;\n }\n\n return isNotSelected ? selectedSize : this.dataCount - unselectedSize;\n }\n\n private _getDefaultColumnsRecursive(columnsData: IColumnData[]): string[] {\n return columnsData.flatMap((column) => {\n const { name, children } = column;\n\n if (children) {\n return [name, ...this._getDefaultColumnsRecursive(children)];\n }\n\n return [name];\n });\n }\n\n protected get notAllFetched(): boolean {\n const unfetchedState = this.selectedService!.stateUnfetchedObjects();\n const allFetched = this.stateObjects!().size === this.dataCount;\n\n return unfetchedState === ERegisterObjectState.SELECTED && !allFetched;\n }\n}\n","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { FiltersStateService } from '../../../../../services';\n\n@Component({\n selector: 'sproc-filter-edit',\n templateUrl: './filter-edit.component.html',\n styleUrls: ['./filter-edit.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterEditComponent implements OnInit, OnDestroy {\n public readonly valueControl: FormControl<string | null> = new FormControl<string | null>('');\n private subscription: Subscription | null = null;\n\n constructor(private readonly _filterStateService: FiltersStateService<any>) {}\n\n public ngOnInit(): void {\n const name = this._filterStateService.getSelectedSavedFilter()?.name ?? '';\n\n this.valueControl.setValue(name);\n this._filterStateService.setName(name);\n this.subscription = this.valueControl.valueChanges.subscribe((value) => {\n this._filterStateService.setName(value ?? '');\n });\n }\n\n public ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n}\n","<div class=\"input-wrapper\">\n <prizm-input-layout [clearButton]=\"clearButtonTemplate\" size=\"s\">\n <input [formControl]=\"valueControl\" placeholder=\"Введите название фильтра\" prizmInput />\n </prizm-input-layout>\n</div>\n\n<ng-template\n #clearButtonTemplate\n let-showStatusButton=\"showStatusButton\"\n let-disabled=\"disabled\"\n let-clear=\"clear\"\n>\n <button\n class=\"{{ showStatusButton ? '' : 'alone' }}\"\n [interactive]=\"true\"\n [disabled]=\"disabled\"\n [prizmHint]=\"'Нажмите для очистки'\"\n [prizmHintTheme]=\"'light'\"\n [prizmInputIconButton]=\"'cancel-delete-content'\"\n (click)=\"clear($event)\"\n ></button>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { map, Subscription } from 'rxjs';\nimport { SETTINGS_TYPE, USER_PROFILE_LOADER, USER_SETTINGS_LOADER } from '../../../../../consts';\nimport { EInputsAction, EInputsState, ITpUserSettings } from '../../../../../types';\nimport { FiltersStateService } from '../../../../../services';\nimport { getLastSegmentOfPathName } from '../../../../../utils/get-url-segment';\n\ninterface IFilterSavedItem {\n id: string;\n user_id: string;\n name: string;\n favorite: boolean;\n selected: boolean;\n filter: Record<string, any>;\n settingType: SETTINGS_TYPE;\n sourceSettings: ITpUserSettings;\n}\n\n@Component({\n selector: 'sproc-filter-list-saved',\n templateUrl: './filter-list-saved.component.html',\n styleUrls: ['./filter-list-saved.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterListSavedComponent implements OnInit, OnDestroy {\n public savedItems: IFilterSavedItem[] = [];\n\n private filterStateSubscription: Subscription | null = null;\n private savedFiltersSubscription: Subscription | null = null;\n private selectedFilter: ITpUserSettings | null = null;\n private modulePath?: string;\n\n private readonly _userSettingsStore = inject(USER_SETTINGS_LOADER);\n private readonly _userProfileService = inject(USER_PROFILE_LOADER);\n\n public readonly loading$ = this._userSettingsStore.loading$;\n\n constructor(\n private readonly _router: Router,\n private readonly _filterStateService: FiltersStateService<any>,\n private readonly _cdr: ChangeDetectorRef\n ) {}\n\n public ngOnInit(): void {\n this.modulePath = getLastSegmentOfPathName(this._router.url);\n this.subscribeOnSettings();\n this.subscribeOnFilterState();\n }\n\n public ngOnDestroy(): void {\n this.filterStateSubscription?.unsubscribe();\n this.savedFiltersSubscription?.unsubscribe();\n }\n\n private subscribeOnFilterState(): void {\n this.filterStateSubscription = this._filterStateService.state$.subscribe((state) => {\n if (state.state === EInputsState.SAVED_LIST) {\n this._userSettingsStore.fetchUserSettingsByUserId({\n userId: this._userProfileService.getUserProfile().id,\n settingsType: SETTINGS_TYPE.FILTER,\n moduleName: this.modulePath!,\n });\n }\n });\n }\n\n private subscribeOnSettings(): void {\n this.savedFiltersSubscription = this._userSettingsStore.settings$\n .pipe(\n map((filters) =>\n filters.map((filter) => ({\n id: filter.id,\n user_id: filter.id_user,\n name: filter.name,\n selected: false,\n favorite: filter.settings.favorite!,\n filter: filter.settings.filter!,\n settingType: filter.settings_type,\n sourceSettings: filter,\n }))\n )\n )\n .subscribe((values) => {\n this.savedItems = values.filter(\n (value) => value.settingType === undefined || value.settingType === SETTINGS_TYPE.FILTER\n );\n this._cdr.markForCheck();\n });\n }\n\n public onSelect(id: string): void {\n this.savedItems = this.savedItems.map((item) => {\n if (id === item.id) {\n this.selectedFilter = item.sourceSettings;\n this._filterStateService.setSelectedSavedFilter(item.sourceSettings);\n return { ...item, selected: true };\n }\n return { ...item, selected: false };\n });\n this._cdr.markForCheck();\n }\n\n public onFavorite(id: string): void {\n const foundedItem = this.savedItems.find((item) => item.id === id);\n const defaultFounded = this.savedItems.find((item) => item.favorite && item.id !== id);\n if (!foundedItem) {\n return;\n }\n foundedItem.favorite = !foundedItem.favorite;\n\n if (defaultFounded) {\n this.savedItems = this.savedItems.map((item) => {\n const newItem = { ...item };\n\n if (item.sourceSettings.id === defaultFounded.sourceSettings.id) {\n newItem.favorite = false;\n }\n\n return newItem;\n });\n this._userSettingsStore.updateUserSettingsSettingsById({\n id: defaultFounded.sourceSettings.id,\n settings: {\n ...defaultFounded.sourceSettings.settings,\n favorite: false,\n },\n });\n }\n this._userSettingsStore.updateUserSettingsSettingsById({\n id,\n settings: {\n ...foundedItem.sourceSettings.settings,\n favorite: foundedItem.favorite,\n },\n });\n this._cdr.markForCheck();\n }\n\n public onEdit(id: string): void {\n const foundedFilter = this.savedItems.find((item) => id === item.id);\n if (foundedFilter) {\n this._filterStateService.setSelectedSavedFilter(foundedFilter.sourceSettings);\n this._filterStateService.setState({\n state: EInputsState.ON_EDIT_FILTER,\n action: EInputsAction.EDIT_FILTER,\n });\n }\n }\n\n public onDelete(id: string): void {\n const foundedIndex = this.savedItems.findIndex((item) => item.id === id);\n if (foundedIndex === -1) {\n return;\n }\n this.savedItems.splice(foundedIndex, 1);\n this._userSettingsStore.deleteUserSettingsById({ id });\n this._cdr.markForCheck();\n }\n}\n","<div class=\"sproc-filter-list-saved\">\n <prizm-loader [showLoader]=\"$any(loading$ | async)\" [overlay]=\"true\">\n <span *ngIf=\"savedItems.length === 0\" class=\"input-text-12px\"\n >Сохраненых фильтров не найдено\n </span>\n <div\n *ngFor=\"let item of savedItems; let i = index\"\n [class.selected]=\"item.selected\"\n class=\"sproc-filter-list-saved-item\"\n (click)=\"onSelect(item.id)\"\n >\n <div class=\"input-text-12px\">{{ item.name }}</div>\n\n <div class=\"sproc-filter-list-saved-item-action-buttons\">\n <button\n [icon]=\"item.favorite ? 'social-star-fill' : 'social-star'\"\n prizmIconButton\n appearanceType=\"ghost\"\n [appearance]=\"item.favorite ? 'primary' : 'secondary'\"\n size=\"xl\"\n (click)=\"onFavorite(item.id)\"\n ></button>\n\n <button\n [icon]=\"'editor-mode'\"\n prizmIconButton\n appearanceType=\"ghost\"\n appearance=\"secondary\"\n size=\"xl\"\n (click)=\"onEdit(item.id)\"\n ></button>\n\n <button\n [icon]=\"'delete'\"\n prizmIconButton\n appearanceType=\"ghost\"\n appearance=\"secondary\"\n size=\"xl\"\n (click)=\"onDelete(item.id)\"\n ></button>\n </div>\n </div>\n </prizm-loader>\n</div>\n","import { inject, Injectable } from '@angular/core';\nimport { ReplaySubject, take } from 'rxjs';\nimport { EInputsAction, EInputsState, GqlFields, ITpUserSettings } from '../../../../types';\nimport { FiltersService, FiltersStateService } from '../../../../services';\nimport { SETTINGS_TYPE, USER_SETTINGS_LOADER } from '../../../../consts';\n\n@Injectable()\nexport class FilterListService {\n public readonly apply$ = new ReplaySubject<GqlFields>();\n\n public modulePath!: string;\n\n private _pinnedFilterSetting: ITpUserSettings | undefined;\n\n private readonly settingsStore = inject(USER_SETTINGS_LOADER);\n\n constructor(\n private readonly _filtersService: FiltersService<any>,\n private readonly _filterStateService: FiltersStateService<any>\n ) {}\n\n public applyFilter(): void {\n this.apply$.next(this._filtersService.gqlFilter);\n this._filterStateService.setState({\n state: EInputsState.FILTER_LIST,\n action: EInputsAction.APPLY_FILTERS,\n });\n }\n\n public applySavedFilter(): void {\n const savedFilter = this._filterStateService.getSelectedSavedFilter();\n if (savedFilter) {\n this._filtersService.setUserSettingsFilterValues(savedFilter.settings?.filter ?? []);\n this._filterStateService.setSelectedSavedFilter(null);\n this._filterStateService.setState({\n state: EInputsState.FILTER_LIST,\n action: EInputsAction.APPLY_SAVED_FILTER,\n });\n this.apply$.next(this._filtersService.gqlFilter);\n } else {\n console.error('Выбранный фильтр не найден');\n }\n }\n\n public saveFilter(): void {\n if (!this.modulePath) {\n console.error('modulePath не инициализирован');\n }\n\n const saved = this._filterStateService.getSelectedSavedFilter();\n this.settingsStore.upsertEnded$.pipe(take(1)).subscribe(() => {\n this._filterStateService.setSelectedSavedFilter(null);\n this._filterStateService.setState({\n state: EInputsState.SAVED_LIST,\n action: EInputsAction.AFTER_SAVE_FILTER,\n });\n });\n\n this.settingsStore.upsertUserSettingsByUserId({\n settings: {\n id: saved?.id ?? undefined,\n name: this._filterStateService.name,\n settings: {\n favorite: saved?.settings?.favorite ?? false,\n filter: this._filtersService.userSettingsFilter,\n },\n module_name: this.modulePath,\n settings_type: SETTINGS_TYPE.FILTER,\n },\n });\n }\n\n public clear(): void {\n this._filtersService.clear();\n }\n\n public savePinnedFilters(): void {\n this.settingsStore\n .upsertReturningOne$(SETTINGS_TYPE.REGISTER_PINNED_INPUTS)\n .subscribe((setting) => {\n this._pinnedFilterSetting = setting ?? undefined;\n });\n\n this.settingsStore.upsertUserSettingsByUserId({\n settings: {\n id: this._pinnedFilterSetting?.id,\n settings: {\n filter: this._filtersService.userSettingsFilter,\n pinned: this._filterStateService.isPin,\n },\n module_name: this.modulePath,\n settings_type: SETTINGS_TYPE.REGISTER_PINNED_INPUTS,\n },\n hidden: true,\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n EventEmitter,\n inject,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { map } from 'rxjs';\nimport { FilterListService } from '../filter-list.service';\nimport { Router } from '@angular/router';\nimport { getLastSegmentOfPathName } from '../../../../../utils/get-url-segment';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { EInputsAction, EInputsState, GqlFields } from '../../../../../types';\nimport { FiltersStateService } from '../../../../../services';\n\n@Component({\n selector: 'sproc-filter-list-header',\n templateUrl: './filter-list-header.component.html',\n styleUrls: ['./filter-list-header.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [FilterListService],\n})\nexport class FilterListHeaderComponent implements OnInit {\n @Input() total: number | null = 0;\n @Input() showTotal = true;\n @Input() showPin = true;\n @Input() showCloseButton = true;\n @Input() acceptButtonDisabled = false;\n @Input() applyButtonDisabled = false;\n @Input() filterListHeaderTitle = 'Фильтр';\n\n @Output() pinnedChange = new EventEmitter<boolean>();\n @Output() applyFilter = new EventEmitter<GqlFields>();\n @Output() resetFilter = new EventEmitter<void>();\n\n private readonly _dr = inject(DestroyRef);\n\n public readonly count$ = this._filterStateService.count$;\n public readonly filterState$ = this._filterStateService.state$.pipe(\n map((filterState) => filterState.state)\n );\n\n public readonly FilterState = EInputsState;\n\n constructor(\n private readonly _router: Router,\n private readonly _filterStateService: FiltersStateService<any>,\n private readonly _filterListService: FilterListService\n ) {}\n\n public ngOnInit(): void {\n this._filterListService.modulePath = getLastSegmentOfPathName(this._router.url);\n\n this._filterListService.apply$.pipe(takeUntilDestroyed(this._dr)).subscribe((gql) => {\n this.applyFilter.emit(gql);\n this._filterListService.savePinnedFilters();\n });\n }\n\n public onTogglePin(): void {\n this._filterStateService.togglePin();\n this.pinnedChange.emit(this._filterStateService.isPin);\n this._filterListService.savePinnedFilters();\n }\n\n public onSavedList(): void {\n this._filterStateService.setState({\n state: EInputsState.SAVED_LIST,\n action: EInputsAction.OPEN,\n });\n }\n\n public onSave(): void {\n this._filterStateService.setState({\n state: EInputsState.ON_SAVE_FILTER,\n action: EInputsAction.AFTER_SAVE_FILTER,\n });\n }\n\n public onApplyFilter(): void {\n this._filterListService.applyFilter();\n }\n\n public onReset(): void {\n this._filterListService.clear();\n }\n\n public onClose(): void {\n this._filterStateService.setPin(false);\n this._filterStateService.setState({ state: EInputsState.HIDDEN, action: EInputsAction.CANCEL });\n }\n\n public onApplySavedFilter(): void {\n this._filterListService.applySavedFilter();\n }\n\n public onSaveFilter(): void {\n this._filterListService.saveFilter();\n }\n\n public onBack(): void {\n this._filterStateService.setState({\n state: EInputsState.FILTER_LIST,\n action: EInputsAction.OPEN,\n });\n }\n\n protected get isPin(): boolean {\n return this._filterStateService.isPin;\n }\n}\n","<ng-container [ngSwitch]=\"filterState$ | async\">\n <h4 *ngSwitchCase=\"FilterState.FILTER_LIST\">{{ filterListHeaderTitle }}</h4>\n <h4 *ngSwitchCase=\"FilterState.SAVED_LIST\">Сохраненные фильтры</h4>\n <h4 *ngSwitchCase=\"FilterState.ON_EDIT_FILTER\">Редактирование фильтра</h4>\n <h4 *ngSwitchCase=\"FilterState.ON_SAVE_FILTER\">Сохранить фильтр</h4>\n</ng-container>\n\n<div class=\"sproc-filter-list-header-actions-button\">\n <ng-container [ngSwitch]=\"filterState$ | async\">\n <ng-container\n *ngSwitchCase=\"FilterState.FILTER_LIST\"\n [ngTemplateOutlet]=\"filterListTemplate\"\n ></ng-container>\n <ng-container\n *ngSwitchCase=\"FilterState.SAVED_LIST\"\n [ngTemplateOutlet]=\"savedListTemplate\"\n ></ng-container>\n <ng-container\n *ngSwitchCase=\"FilterState.ON_EDIT_FILTER\"\n [ngTemplateOutlet]=\"saveFilterTemplate\"\n ></ng-container>\n <ng-container\n *ngSwitchCase=\"FilterState.ON_SAVE_FILTER\"\n [ngTemplateOutlet]=\"saveFilterTemplate\"\n ></ng-container>\n <ng-container *ngSwitchDefault [ngTemplateOutlet]=\"backButtonTemplate\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #filterListTemplate>\n <ng-container *ngIf=\"showPin\">\n <button\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"secondary\"\n prizmButton\n class=\"icon-button\"\n (click)=\"onTogglePin()\"\n >\n <img\n [src]=\"\n 'assets/ngx-register-base/icons/' + (isPin ? 'thumbtack-directly.svg' : 'thumbtack.svg')\n \"\n />\n </button>\n\n <sproc-divider layout=\"vertical\"></sproc-divider>\n </ng-container>\n\n <button\n icon=\"social-star\"\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"secondary\"\n prizmButton\n class=\"icon-button\"\n (click)=\"onSavedList()\"\n ></button>\n\n <button\n icon=\"tools-content-save\"\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"secondary\"\n prizmButton\n class=\"icon-button\"\n (click)=\"onSave()\"\n ></button>\n\n <sproc-divider layout=\"vertical\"></sproc-divider>\n\n <button\n icon=\"selection-check-simple\"\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"primary\"\n prizmButton\n class=\"icon-button\"\n [disabled]=\"applyButtonDisabled\"\n (click)=\"onApplyFilter()\"\n ></button>\n\n <button\n icon=\"tools-eraser\"\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"secondary\"\n prizmButton\n class=\"icon-button\"\n (click)=\"onReset()\"\n ></button>\n\n <button\n *ngIf=\"showCloseButton\"\n icon=\"cancel-close\"\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"danger\"\n prizmButton\n class=\"icon-button\"\n (click)=\"onClose()\"\n ></button>\n</ng-template>\n\n<ng-template #savedListTemplate>\n <button\n icon=\"selection-check-simple\"\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"primary\"\n prizmButton\n class=\"icon-button\"\n [disabled]=\"acceptButtonDisabled\"\n (click)=\"onApplySavedFilter()\"\n ></button>\n\n <ng-container *ngTemplateOutlet=\"backButtonTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #saveFilterTemplate>\n <button\n icon=\"tools-content-save\"\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"secondary\"\n prizmButton\n class=\"icon-button\"\n [disabled]=\"acceptButtonDisabled\"\n (click)=\"onSaveFilter()\"\n ></button>\n\n <ng-container *ngTemplateOutlet=\"backButtonTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #backButtonTemplate>\n <button\n icon=\"arrows-corner-up-left\"\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"secondary\"\n prizmButton\n class=\"icon-button\"\n prizmHint=\"Главное меню фильтров\"\n prizmHintTheme=\"light\"\n (click)=\"onBack()\"\n ></button>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n EventEmitter,\n inject,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { map } from 'rxjs';\nimport { FilterListService } from '../filter-list.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { EInputsState, GqlFields } from '../../../../../types';\nimport { FiltersStateService } from '../../../../../services';\nimport { getLastSegmentOfPathName } from '../../../../../utils/get-url-segment';\n\n@Component({\n selector: 'sproc-filter-list-footer',\n templateUrl: './filter-list-footer.component.html',\n styleUrls: ['./filter-list-footer.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [FilterListService],\n})\nexport class FilterListFooterComponent implements OnInit {\n @Input() acceptButtonDisabled = false;\n @Input() applyButtonDisabled = false;\n @Input() footerApplyButtonLabel = 'Применить';\n @Output() apply: EventEmitter<GqlFields> = new EventEmitter<GqlFields>();\n\n private readonly _dr = inject(DestroyRef);\n\n public readonly filterState$ = this._filterStateService.state$.pipe(\n map((filterState) => filterState.state)\n );\n\n public readonly FilterState = EInputsState;\n\n constructor(\n private readonly _router: Router,\n private readonly _filterStateService: FiltersStateService<any>,\n private readonly _filterListService: FilterListService\n ) {}\n\n public ngOnInit(): void {\n this._filterListService.modulePath = getLastSegmentOfPathName(this._router.url);\n\n this._filterListService.apply$.pipe(takeUntilDestroyed(this._dr)).subscribe((gql) => {\n this.apply.emit(gql);\n this._filterListService.savePinnedFilters();\n });\n }\n\n public onApplyFilter(): void {\n this._filterListService.applyFilter();\n }\n\n public onApplySavedFilter(): void {\n this._filterListService.applySavedFilter();\n }\n\n public onSaveFilter(): void {\n this._filterListService.saveFilter();\n }\n}\n","<div class=\"sproc-filter-list-footer-container\">\n <ng-container [ngSwitch]=\"filterState$ | async\">\n <ng-container *ngSwitchCase=\"FilterState.FILTER_LIST\">\n <button\n class=\"filter-list__button\"\n prizmButton\n size=\"s\"\n [disabled]=\"applyButtonDisabled\"\n (click)=\"onApplyFilter()\"\n >\n {{ footerApplyButtonLabel }}\n </button>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"FilterState.SAVED_LIST\">\n <button\n class=\"filter-list__button\"\n prizmButton\n size=\"s\"\n [disabled]=\"acceptButtonDisabled\"\n (click)=\"onApplySavedFilter()\"\n >\n Применить\n </button>\n </ng-container>\n\n <ng-container\n *ngSwitchCase=\"FilterState.ON_EDIT_FILTER\"\n [ngTemplateOutlet]=\"onEditFilter\"\n ></ng-container>\n\n <ng-container\n *ngSwitchCase=\"FilterState.ON_SAVE_FILTER\"\n [ngTemplateOutlet]=\"onEditFilter\"\n ></ng-container>\n\n <ng-template #onEditFilter>\n <button\n class=\"filter-list__button\"\n prizmButton\n size=\"s\"\n [disabled]=\"acceptButtonDisabled\"\n (click)=\"onSaveFilter()\"\n >\n Сохранить\n </button>\n </ng-template>\n </ng-container>\n</div>\n","import { Component, ElementRef, HostBinding, Input, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'sproc-sliding-panel',\n templateUrl: './sliding-panel.component.html',\n styleUrls: ['./sliding-panel.component.less'],\n})\nexport class SlidingPanelComponent {\n @HostBinding('style.--header-offset-height')\n get headerOffsetHeightPx(): string {\n const height: number = this._headerContainer?.nativeElement.children[0]?.offsetHeight ?? 0;\n\n return `${height}px`;\n }\n\n @HostBinding('style.--footer-offset-height')\n get footerOffsetHeightPx(): string {\n const height: number = this._footerContainer?.nativeElement.children[0]?.offsetHeight ?? 0;\n\n return `${height}px`;\n }\n\n @HostBinding('style.--sub-offset-height')\n get subOffsetHeightPx(): string {\n return `${this.subOffsetHeight}px`;\n }\n\n /** Доп. отступ для вычисления высоты панели (в пикселях) */\n @Input() subOffsetHeight = 0;\n\n /** Состояние видимости панели */\n @Input() isOpen: boolean | null | undefined = false;\n\n @ViewChild('headerContainer') private readonly _headerContainer: ElementRef | undefined;\n @ViewChild('footerContainer') private readonly _footerContainer: ElementRef | undefined;\n}\n","<div class=\"sproc-sliding-panel\" [attr.show]=\"!!isOpen\">\n <div #headerContainer>\n <ng-content select=\"[header]\"></ng-content>\n </div>\n\n <prizm-scrollbar class=\"scrolled-content\">\n <ng-content />\n </prizm-scrollbar>\n\n <div #footerContainer>\n <ng-content select=\"[footer]\"></ng-content>\n </div>\n</div>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { combineLatest, debounceTime, map, Subject, takeUntil, of } from 'rxjs';\nimport {\n EInputsAction,\n EInputsState,\n GqlFields,\n IInputsState,\n ITpUserSettings,\n ITpUserSettingsSettingsFilter,\n} from '../../types';\nimport { FiltersService, FiltersStateService } from '../../services';\nimport { RegisterBaseStore } from '../../core';\nimport { PAGE_MENU_STATE } from '../page-menu';\n\n@Component({\n selector: 'sproc-register-table-filter',\n templateUrl: './register-table-filter.component.html',\n styleUrls: ['./register-table-filter.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RegisterTableFilterComponent<Type extends Record<string, any>>\n implements OnInit, AfterViewInit, OnDestroy\n{\n /** Высота всего компонента фильтров */\n @Input() height: string | undefined;\n @Input() showTotal = true;\n @Input() showPin = true;\n @Input() showCloseButton = true;\n @Input() acceptButtonDisabled = false;\n @Input() applyButtonDisabled = false;\n /** Доп. отступ для вычисления высоты панели (в пикселях) */\n @Input() subOffsetHeight = 0;\n @Input() filterListHeaderTitle = 'Фильтр';\n @Input() footerApplyButtonLabel = 'Применить';\n\n @Output() clickApplyButton = new EventEmitter<void>();\n\n private readonly _menuState = inject(PAGE_MENU_STATE);\n\n private readonly _unsubscribe$: Subject<void> = new Subject<void>();\n\n public readonly FilterState = EInputsState;\n public readonly filterState$ = this._filterStateService.state$.pipe(\n map((filterState) => filterState.state)\n );\n public readonly isOpen$ = this.filterState$.pipe(map((state) => state !== EInputsState.HIDDEN));\n public readonly total$ = this._store.total$ ?? of(0);\n\n private _currentFilters: ITpUserSettingsSettingsFilter[] = [];\n private _previousState: IInputsState = {\n state: EInputsState.HIDDEN,\n action: EInputsAction.CANCEL,\n };\n\n constructor(\n private readonly _store: RegisterBaseStore<Type>,\n private readonly _filterStateService: FiltersStateService<Type>,\n private readonly _filterListService: FiltersService<Type>\n ) {}\n\n public ngOnInit(): void {\n combineLatest([this._filterStateService.state$, this._filterStateService.selectedSavedFilter])\n .pipe(takeUntil(this._unsubscribe$))\n .subscribe({\n next: ([state, selected]) => {\n if (state.state === EInputsState.SAVED_LIST) {\n this.acceptButtonDisabled = !selected;\n return;\n }\n\n if (state.state === EInputsState.ON_EDIT_FILTER) {\n this.acceptButtonDisabled = false;\n return;\n }\n\n if (state.state === EInputsState.ON_SAVE_FILTER) {\n this.acceptButtonDisabled = false;\n return;\n }\n this.acceptButtonDisabled = true;\n },\n });\n\n if (this._filterStateService.isPin) {\n this._filterStateService.setState({\n state: EInputsState.FILTER_LIST,\n action: EInputsAction.OPEN,\n });\n }\n }\n\n protected closeMenu(isPin: boolean): void {\n if (isPin) {\n this._menuState.setOpen(false);\n }\n }\n\n public onApplyFilter(gqlFilter: GqlFields, savePage?: boolean): void {\n if (!savePage) {\n this._filterStateService.setOffset(0);\n this._filterStateService.setPage(1);\n }\n this._filterStateService.setGqlValues(gqlFilter);\n this.clickApplyButton.next();\n }\n\n public ngAfterViewInit(): void {\n this._subscribeOnState();\n }\n\n private _subscribeOnState(): void {\n combineLatest([this._filterStateService.state$, this._filterStateService.selectedSavedFilter])\n .pipe(debounceTime(500), takeUntil(this._unsubscribe$))\n .subscribe(([state, settings]) => {\n this._setFilters(state, settings);\n });\n }\n\n private _setFilters(state: IInputsState, settings: ITpUserSettings | null): void {\n const { state: currentState, action: currentAction } = state;\n const { state: previousState } = this._previousState;\n\n switch (currentState) {\n case EInputsState.ON_EDIT_FILTER:\n if (previousState !== EInputsState.ON_EDIT_FILTER) {\n this._filterListService.setUserSettingsFilterValues(settings?.settings?.filter ?? []);\n }\n break;\n case EInputsState.SAVED_LIST:\n if (\n previousState !== EInputsState.SAVED_LIST &&\n previousState !== EInputsState.ON_EDIT_FILTER &&\n previousState !== EInputsState.ON_SAVE_FILTER\n ) {\n this._currentFilters = this._filterListService.userSettingsFilter;\n }\n break;\n case EInputsState.FILTER_LIST:\n if (previousState !== EInputsState.FILTER_LIST) {\n if (currentAction === EInputsAction.CANCEL) {\n this._filterListService.setUserSettingsFilterValues(this._currentFilters);\n } else if (currentAction === EInputsAction.APPLY_SAVED_FILTER) {\n this._currentFilters = settings?.settings?.filter ?? [];\n }\n }\n break;\n default:\n console.warn('Состояние фильтра', currentState);\n break;\n }\n }\n\n public ngOnDestroy(): void {\n this._unsubscribe$.next();\n this._unsubscribe$.complete();\n }\n}\n","<sproc-sliding-panel [isOpen]=\"isOpen$ | async\" [subOffsetHeight]=\"subOffsetHeight\">\n <sproc-filter-list-header\n header\n [showTotal]=\"showTotal\"\n [showPin]=\"showPin\"\n [showCloseButton]=\"showCloseButton\"\n [total]=\"total$ | async\"\n [acceptButtonDisabled]=\"acceptButtonDisabled\"\n [applyButtonDisabled]=\"applyButtonDisabled\"\n [filterListHeaderTitle]=\"filterListHeaderTitle\"\n (pinnedChange)=\"closeMenu($event)\"\n (applyFilter)=\"onApplyFilter($event)\"\n ></sproc-filter-list-header>\n\n <ng-container [ngSwitch]=\"filterState$ | async\">\n <ng-container *ngSwitchCase=\"FilterState.FILTER_LIST\" [ngTemplateOutlet]=\"filtersTemplate\">\n </ng-container>\n\n <div *ngSwitchCase=\"FilterState.SAVED_LIST\">\n <sproc-filter-list-saved></sproc-filter-list-saved>\n </div>\n\n <div *ngSwitchCase=\"FilterState.ON_EDIT_FILTER\">\n <sproc-filter-edit></sproc-filter-edit>\n\n <sproc-divider></sproc-divider>\n\n <ng-container [ngTemplateOutlet]=\"filtersTemplate\"></ng-container>\n </div>\n\n <div *ngSwitchCase=\"FilterState.ON_SAVE_FILTER\">\n <sproc-filter-edit></sproc-filter-edit>\n </div>\n\n <ng-template #filtersTemplate>\n @defer (on viewport) {\n <ng-content />\n } @loading (minimum 1s) {\n <tui-loader size=\"m\" class=\"loader\"></tui-loader>\n } @placeholder {\n <span>...</span>\n }\n </ng-template>\n </ng-container>\n\n <sproc-filter-list-footer\n footer\n [acceptButtonDisabled]=\"acceptButtonDisabled\"\n [applyButtonDisabled]=\"applyButtonDisabled\"\n (apply)=\"onApplyFilter($event)\"\n [footerApplyButtonLabel]=\"footerApplyButtonLabel\"\n ></sproc-filter-list-footer>\n</sproc-sliding-panel>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n inject,\n Injector,\n input,\n runInInjectionContext,\n signal,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { combineLatest, of, switchMap } from 'rxjs';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { IInputControl } from '../../../../../types';\n\n@Component({\n selector: 'sproc-filters-section',\n templateUrl: './filters-section.component.html',\n styleUrls: ['./filters-section.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FiltersSectionComponent {\n public controls = contentChildren<NgControl>(NgControl, { descendants: true });\n\n public label = input<string>('');\n\n protected isOpen = signal(true);\n protected haveAppliedFilters = computed(() => this._sameControlApplied());\n\n private _sameControlApplied = computed(() => this._checkSomeControlApplied());\n\n private _controlsChanges = toSignal(\n toObservable(this.controls).pipe(\n switchMap((controls) =>\n combineLatest(\n controls.map(({ control }) =>\n runInInjectionContext(this._injector, () => {\n const applied = (control as IInputControl)?.applied;\n\n return applied ? toObservable(applied) : of(false);\n })\n )\n )\n )\n ),\n { initialValue: [] }\n );\n\n private readonly _injector = inject(Injector);\n\n protected toggleHeader(): void {\n this.isOpen.update((isOpen) => !isOpen);\n }\n\n private _checkSomeControlApplied(): boolean {\n return this._controlsChanges().some((controlValue) => {\n if (!controlValue) {\n return false;\n }\n\n if (Array.isArray(controlValue)) {\n return controlValue.some((value) => !!value);\n }\n\n return true;\n });\n }\n}\n","<div class=\"panel-head\" (click)=\"toggleHeader()\">\n <div class=\"title\">\n <span class=\"title__font\">{{ label() }}</span>\n @if (haveAppliedFilters()) {\n <div class=\"title__wrapper--relative\">\n <div class=\"title-wrapper--absolute indicator__wrapper\">\n <div class=\"indicator__icon indicator--danger\"></div>\n </div>\n </div>\n }\n </div>\n\n <prizm-icons [name]=\"isOpen() ? 'chevrons-up' : 'chevrons-down'\" size=\"16\"></prizm-icons>\n</div>\n\n<div class=\"filters-block\" [attr.show]=\"isOpen()\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport {\n PrizmButtonComponent,\n PrizmCheckboxComponent,\n PrizmColumnSettingsComponent,\n PrizmDateTimeRange,\n PrizmDay,\n PrizmDayRange,\n PrizmDialogComponent,\n PrizmDropdownHostModule,\n PrizmHintDirective,\n PrizmIndicatorComponent,\n PrizmInputCommonModule,\n PrizmInputLayoutDateModule,\n PrizmInputLayoutDateRangeModule,\n PrizmInputLayoutDateTimeModule,\n PrizmInputIconButtonComponent,\n PrizmInputLayoutDateComponent,\n PrizmInputLayoutDateRangeComponent,\n PrizmInputLayoutDateTimeRangeComponent,\n PrizmInputLayoutDateTimeRangeModule,\n PrizmInputLayoutMonthRangeComponent,\n PrizmInputLayoutTimeModule,\n PrizmInputLayoutMonthModule,\n PrizmInputMultiSelectComponent,\n PrizmInputMultiSelectModule,\n PrizmInputNumberModule,\n PrizmInputSelectModule,\n PrizmInputTextModule,\n PrizmLoaderComponent,\n PrizmMonth,\n PrizmMonthRange,\n PrizmPaginatorComponent,\n PrizmPanelComponent,\n PrizmProgressModule,\n PrizmScrollbarModule,\n PrizmSelectInputComponent,\n PrizmSidebarComponent,\n PrizmSplitterModule,\n PrizmStickyModule,\n PrizmSwitcherComponent,\n PrizmTableModule,\n PrizmTabsModule,\n PrizmToastModule,\n PrizmToggleComponent,\n PrizmTooltipModule,\n PrizmTreeModule,\n PrizmCardComponent,\n PrizmDropdownControllerDirective,\n PrizmRadioButtonComponent,\n PrizmBreadcrumbDirective,\n PrizmBreadcrumbsComponent,\n PrizmStepperModule,\n} from '@prizm-ui/components';\nimport { PrizmFlagIconsComponent } from '@prizm-ui/flag-icons';\nimport { PrizmDestroyService } from '@prizm-ui/helpers';\nimport { PrizmIconsComponent } from '@prizm-ui/icons';\nimport { TuiDay } from '@taiga-ui/cdk';\nimport { SmaPrizmDateTime } from '../directives/date/date-time.types';\n\nexport type PrizmDateTypes =\n | TuiDay\n | PrizmDay\n | PrizmDayRange\n | SmaPrizmDateTime\n | PrizmDateTimeRange\n | PrizmMonth\n | PrizmMonthRange;\n\n@NgModule({\n imports: [\n FormsModule,\n ReactiveFormsModule,\n PrizmTableModule,\n PrizmScrollbarModule,\n PrizmCheckboxComponent,\n PrizmStickyModule,\n PrizmButtonComponent,\n PrizmInputTextModule,\n PrizmIconsComponent,\n PrizmPaginatorComponent,\n PrizmInputSelectModule,\n PrizmPanelComponent,\n PrizmToggleComponent,\n PrizmTabsModule,\n PrizmDropdownHostModule,\n PrizmLoaderComponent,\n PrizmSelectInputComponent,\n PrizmInputMultiSelectModule,\n PrizmInputLayoutDateModule,\n PrizmFlagIconsComponent,\n PrizmInputLayoutDateRangeModule,\n PrizmDialogComponent,\n PrizmInputLayoutDateComponent,\n PrizmColumnSettingsComponent,\n PrizmSwitcherComponent,\n PrizmTooltipModule,\n PrizmInputMultiSelectComponent,\n PrizmInputLayoutDateRangeComponent,\n PrizmSidebarComponent,\n PrizmToastModule,\n PrizmInputLayoutDateTimeModule,\n PrizmInputCommonModule,\n PrizmInputIconButtonComponent,\n PrizmInputLayoutMonthModule,\n PrizmHintDirective,\n PrizmTreeModule,\n PrizmInputNumberModule,\n PrizmInputLayoutDateTimeRangeModule,\n PrizmProgressModule,\n PrizmInputLayoutMonthRangeComponent,\n PrizmInputLayoutDateTimeRangeComponent,\n PrizmCardComponent,\n PrizmDropdownControllerDirective,\n PrizmRadioButtonComponent,\n PrizmBreadcrumbDirective,\n PrizmBreadcrumbsComponent,\n PrizmStepperModule,\n PrizmIndicatorComponent,\n ],\n exports: [\n FormsModule,\n ReactiveFormsModule,\n PrizmTableModule,\n PrizmScrollbarModule,\n PrizmCheckboxComponent,\n PrizmStickyModule,\n PrizmButtonComponent,\n PrizmInputTextModule,\n PrizmIconsComponent,\n PrizmPaginatorComponent,\n PrizmInputSelectModule,\n PrizmPanelComponent,\n PrizmToggleComponent,\n PrizmTabsModule,\n PrizmDropdownHostModule,\n PrizmLoaderComponent,\n PrizmSelectInputComponent,\n PrizmInputMultiSelectModule,\n PrizmInputLayoutDateModule,\n PrizmFlagIconsComponent,\n PrizmInputLayoutDateRangeModule,\n PrizmDialogComponent,\n PrizmInputLayoutDateComponent,\n PrizmColumnSettingsComponent,\n PrizmSwitcherComponent,\n PrizmTooltipModule,\n PrizmInputMultiSelectComponent,\n PrizmInputLayoutDateRangeComponent,\n PrizmSidebarComponent,\n PrizmToastModule,\n PrizmInputLayoutDateTimeModule,\n PrizmInputCommonModule,\n PrizmInputIconButtonComponent,\n PrizmInputLayoutMonthModule,\n PrizmHintDirective,\n PrizmTreeModule,\n PrizmInputNumberModule,\n PrizmInputLayoutDateTimeRangeModule,\n PrizmProgressModule,\n PrizmInputLayoutTimeModule,\n PrizmInputLayoutMonthRangeComponent,\n PrizmInputLayoutDateTimeRangeComponent,\n PrizmSplitterModule,\n PrizmCardComponent,\n PrizmDropdownControllerDirective,\n PrizmRadioButtonComponent,\n PrizmBreadcrumbDirective,\n PrizmBreadcrumbsComponent,\n PrizmStepperModule,\n PrizmIndicatorComponent,\n ],\n providers: [PrizmDestroyService],\n})\nexport class PrizmSharedModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FilterListFooterComponent } from './filter-list/filter-list-footer/filter-list-footer.component';\nimport { FilterListHeaderComponent } from './filter-list/filter-list-header/filter-list-header.component';\nimport { FilterEditComponent } from './filter-list/filter-edit/filter-edit.component';\nimport { FilterListSavedComponent } from './filter-list/filter-list-saved/filter-list-saved.component';\nimport { FiltersSectionComponent } from './filter-list/filters-section/filters-section.component';\nimport { DividerComponent } from '../../divider/divider.component';\nimport { PrizmSharedModule } from '../../../utils/prizm.shared.module';\n\n@NgModule({\n declarations: [\n FilterListHeaderComponent,\n FilterEditComponent,\n FilterListSavedComponent,\n FiltersSectionComponent,\n FilterListFooterComponent,\n ],\n imports: [CommonModule, FormsModule, ReactiveFormsModule, PrizmSharedModule, DividerComponent],\n exports: [\n FilterEditComponent,\n FilterListSavedComponent,\n FiltersSectionComponent,\n FilterListHeaderComponent,\n FilterListFooterComponent,\n ],\n})\nexport class FilterListModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SlidingPanelComponent } from './sliding-panel.component';\nimport { PrizmScrollbarComponent } from '@prizm-ui/components';\n\n@NgModule({\n declarations: [SlidingPanelComponent],\n imports: [CommonModule, PrizmScrollbarComponent],\n exports: [SlidingPanelComponent],\n})\nexport class SlidingPanelModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { RegisterTableFilterComponent } from './register-table-filter.component';\nimport { FilterListModule } from './components/filter-list.module';\nimport { SlidingPanelModule } from '../sliding-panel/sliding-panel.module';\nimport { DividerComponent } from '../divider/divider.component';\nimport { TuiLoader } from '@taiga-ui/core';\n\n@NgModule({\n declarations: [RegisterTableFilterComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FilterListModule,\n DividerComponent,\n SlidingPanelModule,\n TuiLoader,\n ],\n exports: [RegisterTableFilterComponent],\n})\nexport class RegisterTableFilterModule {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n input,\n viewChild,\n} from '@angular/core';\nimport { type TuiBooleanHandler } from '@taiga-ui/cdk';\nimport { TuiSizeL, TuiSizeM } from '@taiga-ui/core';\nimport { ParamBase } from '../../../core/param/param-base';\nimport { TuiInputYearComponent } from '@taiga-ui/legacy';\n\n@Component({\n selector: 'sproc-param-calendar-year',\n templateUrl: './param-calendar-year.component.html',\n styleUrls: ['./param-calendar-year.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamCalendarYearComponent extends ParamBase<number, string> {\n private readonly _cdr = inject(ChangeDetectorRef);\n public yearInputComponent = viewChild<TuiInputYearComponent>('yearInput');\n\n override buildShowedValue = input((value: number): string => value?.toString() ?? '-');\n protected readonly disabledHandler: TuiBooleanHandler<number> = (value) =>\n this.disabledYears().includes(value);\n\n public disabledYears = input<number[]>([]);\n public min = input<number | null>(null);\n public max = input<number | null>(null);\n public size = input<TuiSizeL | TuiSizeM>('m');\n protected isYearPickerOpen = false;\n\n protected click(): void {\n this.isYearPickerOpen = !this.isYearPickerOpen;\n\n const yearComponent = this.yearInputComponent();\n if (yearComponent) {\n const inputEl = yearComponent.nativeFocusableElement!;\n const onDocumentClick = (event: MouseEvent) => {\n if (!inputEl.contains(event.target as Node) && this.isYearPickerOpen) {\n (yearComponent as any).onOpenChange(false);\n yearComponent.checkControlUpdate();\n document.removeEventListener('click', onDocumentClick);\n this.isYearPickerOpen = false;\n this._cdr.markForCheck();\n }\n };\n document.addEventListener('click', onDocumentClick);\n }\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n </div>\n\n <tui-textfield\n [tuiTextfieldSize]=\"size()\"\n [tuiTextfieldLabelOutside]=\"true\"\n [tuiTextfieldCleaner]=\"true\"\n (click)=\"click()\"\n >\n <tui-input-year\n #yearInput\n [formControl]=\"control\"\n [max]=\"max()\"\n [min]=\"min()\"\n [disabledItemHandler]=\"disabledHandler\"\n >\n Выберите год\n </tui-input-year>\n </tui-textfield>\n </div>\n </ng-template>\n</ng-container>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { ParamBase } from '../../../core/param/param-base';\n\n@Component({\n selector: 'sproc-param-custom',\n templateUrl: './param-custom.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamCustomComponent extends ParamBase<any, any> {}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { TuiIcon } from '@taiga-ui/core';\n\n@Component({\n selector: 'sproc-param-invalid-icon',\n standalone: true,\n imports: [TuiIcon],\n templateUrl: './param-invalid-icon.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamInvalidIconComponent {}\n","<tui-icon\n class=\"invalid-icon\"\n icon=\"assets/ngx-register-base/icons/circle-exclamation-fill.svg\"\n></tui-icon>\n","import { ChangeDetectionStrategy, Component, Input, input } from '@angular/core';\nimport { TuiAppearance, TuiTextfield } from '@taiga-ui/core';\nimport { TuiInputDate } from '@taiga-ui/kit';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet } from '@angular/common';\nimport { TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { TuiDay } from '@taiga-ui/cdk';\nimport { ParamInvalidIconComponent } from '../sub-components/param-invalid-icon/param-invalid-icon.component';\nimport { ParamDateBase } from '../../../core/param/param-date-base';\nimport { FormatterSavedValueType, ParserSavedValueType } from '../../../types/params.types';\nimport { EDatePattern } from '../../../directives/date/date-time.types';\n\nexport type InputDateSaveValue = string | null;\n\n@Component({\n selector: 'sproc-param-date',\n templateUrl: './param-date.component.html',\n styleUrls: ['./param-date.component.less'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n TuiTextfield,\n TuiInputDate,\n ReactiveFormsModule,\n NgIf,\n NgTemplateOutlet,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n TuiAppearance,\n TuiTextfieldControllerModule,\n ParamInvalidIconComponent,\n ],\n})\nexport class ParamDateComponent extends ParamDateBase<TuiDay | null, InputDateSaveValue> {\n override placeholder = input('Выберите дату');\n @Input() min: TuiDay | null = null;\n @Input() max: TuiDay | null = null;\n @Input() override set formatSavedValue(\n formatter: FormatterSavedValueType<TuiDay | null, InputDateSaveValue> | undefined\n ) {\n this.formatterSavedValue = formatter ?? this._defaultFormatterSaveValue;\n }\n @Input() override set parseSavedValue(\n parser: ParserSavedValueType<InputDateSaveValue, TuiDay | null> | undefined\n ) {\n this.parserSavedValue = parser ?? this._defaultParserSaveValue;\n }\n override buildShowedValue = input((value: TuiDay | null): string =>\n value ? this._defaultDateConvert(value) : '-'\n );\n\n protected override formatterSavedValue = this._defaultFormatterSaveValue;\n protected override parserSavedValue = this._defaultParserSaveValue;\n\n private _defaultDateConvert(value: TuiDay): string {\n return this._dts.parseDate(value.toString(EDatePattern.TUI_YMD, '-'), EDatePattern.DATE);\n }\n\n private _defaultFormatterSaveValue(value: TuiDay | null): InputDateSaveValue {\n if (!value) {\n return null;\n }\n\n const iso = this._dts.toISOString(value.toLocalNativeDate());\n\n return this._dts.parseDate(iso, EDatePattern.YEAR_MONTH_DAY);\n }\n\n private _defaultParserSaveValue(value: InputDateSaveValue): TuiDay | null {\n if (!value) {\n return null;\n }\n\n return TuiDay.fromLocalNativeDate(this._dts.isoToLocalDate(value));\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n </div>\n\n <tui-textfield\n tuiAppearance=\"sproc-input-appearance\"\n tuiTextfieldSize=\"m\"\n [tuiTextfieldLabelOutside]=\"true\"\n [style.--t-icon-end]=\"'url(/assets/ngx-register-base/icons/calendar-blank.svg)'\"\n [style.--t-icon-size]=\"'16px'\"\n >\n <input\n tuiInputDate\n [min]=\"min\"\n [max]=\"max\"\n [placeholder]=\"placeholder()\"\n [formControl]=\"control\"\n />\n <tui-calendar *tuiTextfieldDropdown />\n\n <div class=\"textfield-icons-container\">\n @if (isInvalidAndNotPristine) {\n <sproc-param-invalid-icon></sproc-param-invalid-icon>\n }\n </div>\n </tui-textfield>\n </div>\n </ng-template>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, input, Input } from '@angular/core';\nimport { PrizmDay, PrizmDayLike, PrizmDayRange } from '@prizm-ui/components';\nimport { ParamDateBase } from '../../../core/param/param-date-base';\nimport { FormatterSavedValueType, ParserSavedValueType } from '../../../types/params.types';\nimport { EDatePattern } from '../../../directives/date/date-time.types';\nimport { TuiDay } from '@taiga-ui/cdk';\n\nexport type InputDateRangeSavedValue = { from: string; to: string } | null;\n\n// TODO не открывается пикер дат\n@Component({\n selector: 'sproc-param-date-range',\n templateUrl: './param-date-range.component.html',\n styleUrls: ['./param-date-range.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamDateRangeComponent extends ParamDateBase<\n PrizmDayRange | null,\n InputDateRangeSavedValue\n> {\n public maxLength = input<PrizmDayLike | null>(null);\n /** текст сообщения об ошибке */\n public errorMessage = input<string>('');\n override placeholder = input('Выберите период');\n @Input() min: TuiDay | PrizmDay | undefined;\n @Input() max: TuiDay | PrizmDay | undefined;\n @Input() override set formatSavedValue(\n formatter: FormatterSavedValueType<PrizmDayRange | null, InputDateRangeSavedValue> | undefined\n ) {\n this.formatterSavedValue = formatter ?? this._defaultFormatterSaveValue;\n }\n @Input() override set parseSavedValue(\n parser: ParserSavedValueType<InputDateRangeSavedValue, PrizmDayRange | null> | undefined\n ) {\n this.parserSavedValue = parser ?? this._defaultParserSaveValue;\n }\n override buildShowedValue = input(\n (value: PrizmDayRange | null): string => value?.toString() ?? '-'\n );\n\n protected override formatterSavedValue = this._defaultFormatterSaveValue;\n protected override parserSavedValue = this._defaultParserSaveValue;\n\n private _defaultFormatterSaveValue(range: PrizmDayRange | null): InputDateRangeSavedValue {\n if (!range) {\n return null;\n }\n\n const isoFrom = this._dts.toISOString(range.from.toLocalNativeDate());\n const isoTo = this._dts.toISOString(range.to.toLocalNativeDate());\n\n return {\n from: this._dts.parseDate(isoFrom, EDatePattern.YEAR_MONTH_DAY),\n to: this._dts.parseDate(isoTo, EDatePattern.YEAR_MONTH_DAY),\n };\n }\n\n private _defaultParserSaveValue(value: InputDateRangeSavedValue): PrizmDayRange | null {\n if (!value) {\n return null;\n }\n\n const from = this._dts.isoToLocalDate(value.from);\n const to = this._dts.isoToLocalDate(value.to);\n\n return PrizmDayRange.fromLocalNativeDate(from, to);\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n @if (errorMessage() && control.invalid) {\n <div class=\"errorMessage\">{{ errorMessage() }}</div>\n }\n </div>\n\n <prizm-input-layout class=\"flex-shrink--zero\" size=\"s\" [forceClear]=\"forceClear\">\n <prizm-input-layout-date-range\n [placeholder]=\"placeholder()\"\n [maxLength]=\"maxLength()\"\n [min]=\"$any(min)\"\n [max]=\"$any(max)\"\n [formControl]=\"control\"\n ></prizm-input-layout-date-range>\n </prizm-input-layout>\n </div>\n </ng-template>\n</ng-container>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport moment from 'moment';\nimport { DateTimeService, ITimeZone } from '../../services/date-time.service';\n\n@Pipe({\n name: 'formatDate',\n standalone: true,\n})\nexport class FormatDatePipe implements PipeTransform {\n constructor(private readonly _dateTimeService: DateTimeService) {}\n\n transform(value: unknown, valueTZ: string, pattern: string, _?: ITimeZone | null): unknown {\n let utc = null;\n\n if (value instanceof Date) {\n const iso = this._dateTimeService.convertDateToISOWithTZ(value, valueTZ);\n utc = moment(iso).toISOString();\n } else if (typeof value === 'string') {\n utc = value;\n }\n\n if (!utc) {\n return value;\n }\n\n return this._dateTimeService.parseDate(utc, pattern);\n }\n}\n","import { ChangeDetectionStrategy, Component, input, Input } from '@angular/core';\nimport { PrizmDay, PrizmTime, PrizmTimeMode } from '@prizm-ui/components';\nimport { distinctUntilChanged, filter, map, pairwise } from 'rxjs';\nimport { ParamDateBase } from '../../../core/param/param-date-base';\nimport { FormatterSavedValueType, ParserSavedValueType } from '../../../types/params.types';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport type SmaPrizmDateTime = [PrizmDay, PrizmTime | undefined];\n\nexport type InputDateTimeSaveValue = string | null;\n\n@Component({\n selector: 'sproc-param-date-time',\n templateUrl: './param-date-time.component.html',\n styleUrls: ['./param-date-time.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamDateTimeComponent extends ParamDateBase<\n SmaPrizmDateTime | null,\n InputDateTimeSaveValue\n> {\n override placeholder = input('Выберите дату и время');\n @Input() min: PrizmDay | [PrizmDay, PrizmTime] | undefined;\n @Input() max: PrizmDay | [PrizmDay, PrizmTime] | undefined;\n @Input() timeMode: PrizmTimeMode = 'HH:MM';\n @Input() override set formatSavedValue(\n formatter: FormatterSavedValueType<SmaPrizmDateTime | null, InputDateTimeSaveValue> | undefined\n ) {\n this.formatterSavedValue = formatter ?? this._defaultFormatterSaveValue;\n }\n @Input() override set parseSavedValue(\n parser: ParserSavedValueType<InputDateTimeSaveValue, SmaPrizmDateTime | null> | undefined\n ) {\n this.parserSavedValue = parser ?? this._defaultParserSaveValue;\n }\n\n protected override formatterSavedValue = this._defaultFormatterSaveValue;\n protected override parserSavedValue = this._defaultParserSaveValue;\n\n private _defaultFormatterSaveValue(value: SmaPrizmDateTime | null): InputDateTimeSaveValue {\n if (!value) {\n return null;\n }\n\n const date = this._dts.prizmDateTimeToNativeDate(value);\n\n return this._dts.toISOString(date);\n }\n\n private _defaultParserSaveValue(value: InputDateTimeSaveValue): SmaPrizmDateTime | null {\n if (!value) {\n return null;\n }\n\n const date = this._dts.isoToLocalDate(value);\n\n return this._valueFromLocalNativeDate(date);\n }\n\n protected override onInit(): void {\n this._subscribeOnTimeZoneChanges();\n }\n\n protected clearValue(): void {\n this.control.setValue(null);\n }\n\n protected get nativeDate(): Date | null {\n if (!this.value) {\n return null;\n }\n return typeof this.value === 'string'\n ? this._dts.isoToLocalDate(this.value)\n : this._dts.prizmDateTimeToNativeDate(this.value);\n }\n\n private _subscribeOnTimeZoneChanges(): void {\n this.timezoneChange\n .pipe(\n distinctUntilChanged((prev, curr) => prev.time_diff === curr.time_diff),\n pairwise(),\n map(([prev, curr]) => ({\n prevDiff: prev.time_diff,\n currDiff: curr.time_diff,\n value: this.value,\n })),\n filter(({ value }) => !!value),\n takeUntilDestroyed(this.dr)\n )\n .subscribe(({ prevDiff, currDiff, value }) => {\n const date = this._dts.prizmDateTimeToNativeDate(value!);\n const newDate = this.rebuildDateInNewTimezone(date, prevDiff, currDiff);\n\n this.control.setValue(this._valueFromLocalNativeDate(newDate), { emitEvent: false });\n });\n }\n\n private _valueFromLocalNativeDate(date: Date): SmaPrizmDateTime {\n return [PrizmDay.fromLocalNativeDate(date), PrizmTime.fromLocalNativeDate(date)];\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <div class=\"value\">\n <span *ngIf=\"nativeDate; else emptyTemplate\">\n {{\n nativeDate\n | formatDate\n : (timezoneChange | async)!.time_diff!\n : EDatePattern.DATE_TIME_WITHOUT_SECONDS\n : (timezoneChange | async)\n }}\n </span>\n <ng-template #emptyTemplate>-</ng-template>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n </div>\n\n <prizm-input-layout\n class=\"flex-shrink--zero\"\n size=\"s\"\n [forceClear]=\"forceClear\"\n [clearButton]=\"clearButtonTemplate\"\n >\n <prizm-input-layout-date-time\n [placeholder]=\"placeholder()\"\n [max]=\"$any(max)\"\n [min]=\"$any(min)\"\n [formControl]=\"control\"\n ></prizm-input-layout-date-time>\n <ng-template\n #clearButtonTemplate\n let-showStatusButton=\"showStatusButton\"\n let-disabled=\"disabled\"\n >\n <button\n [interactive]=\"true\"\n [disabled]=\"disabled\"\n prizmHint=\"Нажмите для очистки\"\n prizmHintTheme=\"light\"\n prizmInputIconButton=\"cancel-delete-content\"\n class=\"{{ showStatusButton ? '' : 'alone' }}\"\n (click)=\"clearValue()\"\n ></button>\n </ng-template>\n </prizm-input-layout>\n </div>\n </ng-template>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, input, Input } from '@angular/core';\nimport {\n PrizmDateTime,\n PrizmDateTimeRange,\n PrizmDay,\n PrizmDayLike,\n PrizmDayRange,\n PrizmTime,\n PrizmTimeMode,\n PrizmTimeRange,\n} from '@prizm-ui/components';\nimport { distinctUntilChanged, filter, map, pairwise } from 'rxjs';\nimport { ParamDateBase } from '../../../core/param/param-date-base';\nimport { FormatterSavedValueType, ParserSavedValueType } from '../../../types/params.types';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport type InputDateTimeRangeSaveValue = {\n from: string;\n to: string;\n} | null;\n\n// TODO не открывается пикер дат\n@Component({\n selector: 'sproc-param-date-time-range',\n templateUrl: './param-date-time-range.component.html',\n styleUrls: ['./param-date-time-range.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamDateTimeRangeComponent extends ParamDateBase<\n PrizmDateTimeRange | null,\n InputDateTimeRangeSaveValue\n> {\n override placeholder = input('Выберите период');\n @Input() min: PrizmDay | undefined;\n @Input() max: PrizmDay | undefined;\n @Input() timeMode: PrizmTimeMode = 'HH:MM';\n @Input() maxLength: PrizmDayLike | null = null;\n @Input() override set formatSavedValue(\n formatter:\n | FormatterSavedValueType<PrizmDateTimeRange | null, InputDateTimeRangeSaveValue>\n | undefined\n ) {\n this.formatterSavedValue = formatter ?? this._defaultFormatterSaveValue;\n }\n @Input() override set parseSavedValue(\n parser: ParserSavedValueType<InputDateTimeRangeSaveValue, PrizmDateTimeRange | null> | undefined\n ) {\n this.parserSavedValue = parser ?? this._defaultParserSaveValue;\n }\n\n protected override formatterSavedValue = this._defaultFormatterSaveValue;\n protected override parserSavedValue = this._defaultParserSaveValue;\n\n private _defaultFormatterSaveValue(\n range: PrizmDateTimeRange | null\n ): InputDateTimeRangeSaveValue {\n if (!range) {\n return null;\n }\n\n const { from, to } = this._dts.prizmDateTimeRangeToNativeDates(range);\n\n return {\n from: this._dts.toISOString(from),\n to: this._dts.toISOString(to),\n };\n }\n\n private _defaultParserSaveValue(value: InputDateTimeRangeSaveValue): PrizmDateTimeRange | null {\n if (!value) {\n return null;\n }\n\n const from = this._dts.isoToLocalDate(value.from);\n const to = this._dts.isoToLocalDate(value.to);\n\n return new PrizmDateTimeRange(\n PrizmDayRange.fromLocalNativeDate(from, to),\n new PrizmTimeRange(PrizmTime.fromLocalNativeDate(from), PrizmTime.fromLocalNativeDate(to))\n );\n }\n\n protected override onInit(): void {\n this._subscribeOnTimeZoneChanges();\n }\n\n private _subscribeOnTimeZoneChanges(): void {\n this.timezoneChange\n .pipe(\n distinctUntilChanged((prev, curr) => prev.time_diff === curr.time_diff),\n pairwise(),\n map(([prev, curr]) => ({\n prevDiff: prev.time_diff,\n currDiff: curr.time_diff,\n value: this.value,\n })),\n filter(({ value }) => !!value),\n takeUntilDestroyed(this.dr)\n )\n .subscribe(({ prevDiff, currDiff, value }) => {\n const { from, to } = this._dts.prizmDateTimeRangeToNativeDates(value!);\n\n const newFrom = this.rebuildDateInNewTimezone(from, prevDiff, currDiff);\n const newTo = this.rebuildDateInNewTimezone(to, prevDiff, currDiff);\n\n this.control.setValue(this._dts.prizmDateTimeRangeFromNativeDates(newFrom, newTo), {\n emitEvent: false,\n });\n });\n }\n\n protected get from(): Date | null {\n return this._getDateFromRange('from');\n }\n\n protected get to(): Date | null {\n return this._getDateFromRange('to');\n }\n\n private _getDateFromRange(date: 'from' | 'to'): Date | null {\n if (!this.value) {\n return null;\n }\n\n const { dayRange, timeRange } = this.value;\n\n return new PrizmDateTime(dayRange[date], timeRange?.[date]).toLocalNativeDate();\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <div class=\"value\">\n <span *ngIf=\"value; else emptyTemplate\">\n {{\n from\n | formatDate\n : (timezoneChange | async)!.time_diff!\n : EDatePattern.DATE_TIME_WITHOUT_SECONDS\n : (timezoneChange | async)\n }}\n -\n {{\n to\n | formatDate\n : (timezoneChange | async)!.time_diff!\n : EDatePattern.DATE_TIME_WITHOUT_SECONDS\n : (timezoneChange | async)\n }}\n </span>\n <ng-template #emptyTemplate>-</ng-template>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n <img\n *ngIf=\"hint\"\n src=\"assets/ngx-register-base/icons/circle-info-empty.svg\"\n [prizmHint]=\"hint\"\n prizmHintTheme=\"light\"\n style=\"margin-bottom: 2px\"\n />\n </div>\n\n <prizm-input-layout class=\"flex-shrink--zero\" size=\"s\" [forceClear]=\"forceClear\">\n <prizm-input-layout-date-time-range\n [placeholder]=\"placeholder()\"\n [timeMode]=\"timeMode\"\n [maxLength]=\"maxLength\"\n [min]=\"$any(min)\"\n [max]=\"$any(max)\"\n [formControl]=\"control\"\n ></prizm-input-layout-date-time-range>\n </prizm-input-layout>\n </div>\n </ng-template>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, input, Input } from '@angular/core';\nimport { ParamDateBase } from '../../../core/param/param-date-base';\nimport { PrizmMonth } from '@prizm-ui/components';\nimport { FormatterSavedValueType, ParserSavedValueType } from '../../../types/params.types';\nimport { EMonth, MonthMapper } from '../../../consts/month.consts';\n\nexport type InputMonthSavedValue = string | null;\n\n@Component({\n selector: 'sproc-param-month',\n templateUrl: './param-month.component.html',\n styleUrls: ['./param-month.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamMonthComponent extends ParamDateBase<PrizmMonth | null, InputMonthSavedValue> {\n override placeholder = input('Выберите месяц');\n @Input() override set formatSavedValue(\n formatter: FormatterSavedValueType<PrizmMonth | null, InputMonthSavedValue> | undefined\n ) {\n this.formatterSavedValue = formatter ?? this._defaultFormatterSaveValue;\n }\n @Input() override set parseSavedValue(\n parser: ParserSavedValueType<InputMonthSavedValue, PrizmMonth | null> | undefined\n ) {\n this.parserSavedValue = parser ?? this._defaultParserSaveValue;\n }\n override buildShowedValue = input((value: PrizmMonth | null): string =>\n value ? `${this._formatMonth(value.month)} ${value.year}` : '-'\n );\n\n protected override formatterSavedValue = this._defaultFormatterSaveValue;\n protected override parserSavedValue = this._defaultParserSaveValue;\n\n private _defaultFormatterSaveValue(month: PrizmMonth | null): InputMonthSavedValue {\n if (!month) {\n return null;\n }\n\n return this._dts.toISOString(month.toLocalNativeDate());\n }\n\n private _defaultParserSaveValue(value: InputMonthSavedValue): PrizmMonth | null {\n if (!value) {\n return null;\n }\n\n const date = this._dts.isoToLocalDate(value);\n\n return new PrizmMonth(date.getFullYear(), date.getMonth());\n }\n\n private _formatMonth(month: EMonth): string {\n return MonthMapper.getRusNamesArr()[month];\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <span class=\"value\">\n <span>{{ showedValue }}</span>\n </span>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n <img\n *ngIf=\"hint\"\n src=\"assets/ngx-register-base/icons/circle-info-empty.svg\"\n [prizmHint]=\"hint\"\n prizmHintTheme=\"light\"\n style=\"margin-bottom: 2px\"\n />\n </div>\n\n <prizm-input-layout size=\"s\" [forceClear]=\"forceClear\">\n <prizm-input-layout-month\n [placeholder]=\"placeholder()\"\n [formControl]=\"control\"\n ></prizm-input-layout-month>\n </prizm-input-layout>\n </div>\n </ng-template>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, input, Input } from '@angular/core';\nimport { PrizmMonth, PrizmMonthRange } from '@prizm-ui/components';\nimport { ParamDateBase } from '../../../core/param/param-date-base';\nimport { FormatterSavedValueType, ParserSavedValueType } from '../../../types/params.types';\nimport { EMonth, MonthMapper } from '../../../consts/month.consts';\n\nexport type InputMonthRangeSavedValue = { from: string; to: string } | null;\n\n@Component({\n selector: 'sproc-param-month-range',\n templateUrl: './param-month-range.component.html',\n styleUrls: ['./param-month-range.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamMonthRangeComponent extends ParamDateBase<\n PrizmMonthRange | null,\n InputMonthRangeSavedValue\n> {\n override placeholder = input('Выберите период');\n @Input() override set formatSavedValue(\n formatter:\n | FormatterSavedValueType<PrizmMonthRange | null, InputMonthRangeSavedValue>\n | undefined\n ) {\n this.formatterSavedValue = formatter ?? this._defaultFormatterSaveValue;\n }\n @Input() override set parseSavedValue(\n parser: ParserSavedValueType<InputMonthRangeSavedValue, PrizmMonthRange | null> | undefined\n ) {\n this.parserSavedValue = parser ?? this._defaultParserSaveValue;\n }\n override buildShowedValue = input((range: PrizmMonthRange | null): string => {\n if (!range) {\n return '-';\n }\n\n const { from, to } = range;\n\n const fromRuString = `${this._formatMonth(from.month)} ${from.year}`;\n const toRuString = `${this._formatMonth(to.month)} ${to.year}`;\n\n return `${fromRuString} - ${toRuString}`;\n });\n\n protected override formatterSavedValue = this._defaultFormatterSaveValue;\n protected override parserSavedValue = this._defaultParserSaveValue;\n\n private _defaultFormatterSaveValue(range: PrizmMonthRange | null): InputMonthRangeSavedValue {\n if (!range) {\n return null;\n }\n\n return {\n from: this._dts.toISOString(range.from.toLocalNativeDate()),\n to: this._dts.toISOString(range.to.toLocalNativeDate()),\n };\n }\n\n private _defaultParserSaveValue(value: InputMonthRangeSavedValue): PrizmMonthRange | null {\n if (!value) {\n return null;\n }\n\n const from = this._dts.isoToLocalDate(value.from);\n const to = this._dts.isoToLocalDate(value.to);\n\n return new PrizmMonthRange(\n new PrizmMonth(from.getFullYear(), from.getMonth()),\n new PrizmMonth(to.getFullYear(), to.getMonth())\n );\n }\n\n private _formatMonth(month: EMonth): string {\n return MonthMapper.getRusNamesArr()[month];\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <span class=\"value\">\n <span>{{ showedValue }}</span>\n </span>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n </div>\n\n <prizm-input-layout size=\"s\" [forceClear]=\"forceClear\">\n <prizm-input-layout-month-range\n [placeholder]=\"placeholder()\"\n [formControl]=\"control\"\n ></prizm-input-layout-month-range>\n </prizm-input-layout>\n </div>\n </ng-template>\n</ng-container>\n","export const PARAM_SEARCH_INPUT_DEBOUNCE_TIME_MLS = 1000;\n","import {\n DOCUMENT,\n NgIf,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n NgTemplateOutlet,\n} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n Inject,\n Injector,\n input,\n OnDestroy,\n output,\n signal,\n} from '@angular/core';\nimport { PrizmMultiSelectSearchMatcher } from '@prizm-ui/components';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n delay,\n distinctUntilChanged,\n filter,\n map,\n of,\n skip,\n Subscription,\n switchMap,\n tap,\n} from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TUI_ITEMS_HANDLERS, TuiAppearance, TuiHint, TuiIcon, TuiTextfield } from '@taiga-ui/core';\nimport { TuiMultiSelectModule, TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TuiContext, TuiIdentityMatcher, TuiStringHandler } from '@taiga-ui/cdk';\nimport { FastQueryStore } from '../../../store/fast-query-store.service';\nimport { IFilterSelectValue, MetaQuery } from '../../../types/params.types';\nimport { ParamSelectBase } from '../../../core/param/param-select-base';\nimport { SELECT_ALL_ID, selectAllItem } from '../../../utils/select-all-utils';\nimport { distinctUntilChangedJSONs } from '../../../utils';\nimport { PARAM_SEARCH_INPUT_DEBOUNCE_TIME_MLS } from '../../../consts/params.consts';\n\n@Component({\n selector: 'sproc-param-multi-select',\n templateUrl: './param-multi-select.component.html',\n styleUrls: ['./param-multi-select.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n FastQueryStore,\n {\n provide: TUI_ITEMS_HANDLERS,\n deps: [forwardRef(() => ParamMultiSelectComponent)],\n useFactory: (component: ParamMultiSelectComponent) => ({\n stringify: component.stringify,\n identityMatcher: component.identityMatcher,\n disabledItemHandler: signal((_: IFilterSelectValue) => false),\n }),\n },\n ],\n standalone: true,\n imports: [\n NgTemplateOutlet,\n NgIf,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n TuiIcon,\n TuiHint,\n TuiMultiSelectModule,\n ReactiveFormsModule,\n TuiTextfield,\n TuiAppearance,\n TuiTextfieldControllerModule,\n ],\n})\nexport class ParamMultiSelectComponent\n extends ParamSelectBase<IFilterSelectValue[], IFilterSelectValue[]>\n implements OnDestroy\n{\n override readonly placeholder = input('Выберите значения');\n readonly itemSelectAll = input(false);\n readonly searchMatcher = input<PrizmMultiSelectSearchMatcher<IFilterSelectValue>>(\n (search: string, item: IFilterSelectValue) =>\n item.name?.toLowerCase().includes(search.toLowerCase())\n );\n readonly shortPickedLength = input(true);\n\n readonly stringify = input<TuiStringHandler<IFilterSelectValue | TuiContext<IFilterSelectValue>>>(\n (item) => ('name' in item ? item.name : item.$implicit.name)\n );\n\n readonly identityMatcher = input<TuiIdentityMatcher<IFilterSelectValue>>(\n (a, b) => a?.id === b?.id\n );\n\n override readonly buildShowedValue = input(\n (values: IFilterSelectValue[]): string => values?.map((v) => v.name).join(',\\n') ?? '-'\n );\n\n readonly onSelect = output<IFilterSelectValue[]>();\n\n protected readonly selectAllItem: IFilterSelectValue = selectAllItem;\n\n protected onCancelButtonSubscription!: Subscription;\n\n protected searchValue = '';\n\n protected readonly onSearch$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n private onSearchSubscription: Subscription | null = null;\n private cachedString = '';\n\n private onClearButtonSubscription: Subscription | null = null;\n public choosedHint = '';\n\n constructor(\n injector: Injector,\n @Inject(DOCUMENT) private document: Document\n ) {\n super(injector);\n }\n\n public override onInit(): void {\n this._subscribeOnSearch();\n\n if (this.itemSelectAll()) {\n this.items.unshift(this.selectAllItem);\n }\n }\n\n private _subscribeOnSearch() {\n this.onSearch$\n .pipe(\n debounceTime(PARAM_SEARCH_INPUT_DEBOUNCE_TIME_MLS),\n distinctUntilChanged(),\n takeUntilDestroyed(this.dr)\n )\n .subscribe((value) => {\n this.fetchItems(value);\n });\n }\n\n public override afterViewInit(): void {\n if (this.meta?.table && this.searchable) {\n this._subscribeOnClearButton();\n }\n\n if (this.meta) {\n this._observeFetchItems();\n }\n\n this._subscribeOnMetaChanges();\n this._subscribeOnValueControl();\n\n if (this.control?.value?.some((elem: any) => elem.id === SELECT_ALL_ID)) {\n if (this.items.length > 0) {\n this.control.setValue(this.items);\n }\n if (this.items.length === 1) {\n this.fetchItems();\n }\n }\n }\n\n private _observeFetchItems(): void {\n this.control.valueChanges\n .pipe(\n filter(Boolean),\n filter((values) => {\n const someValueNotHaveName = values.some((value) => !value.name);\n const everyValuesExistsInItems = values.every(({ id }) =>\n this.items.some((item) => item.id === id)\n );\n\n return someValueNotHaveName && everyValuesExistsInItems;\n }),\n takeUntilDestroyed(this.dr)\n )\n .subscribe((values) => {\n const ids = new Set(values.map((value) => value.id));\n const filledValues = this.items.filter(({ id }) => ids.has(id));\n\n this.control.setValue(filledValues, { emitEvent: false });\n });\n\n combineLatest([\n this.control.valueChanges.pipe(\n map((values) => values?.map((value) => value.id) ?? []),\n distinctUntilChangedJSONs(),\n filter((ids) => ids.some((id) => !this.items.some((item) => item.id === id)))\n ),\n this.meta$,\n ])\n .pipe(takeUntilDestroyed(this.dr))\n .subscribe(() => {\n this.fetchItems();\n });\n }\n\n private _subscribeOnMetaChanges(): void {\n this.meta$.pipe(takeUntilDestroyed(this.dr)).subscribe(() => {\n this.fetchItems();\n });\n }\n\n private _subscribeOnValueControl(): void {\n let controlValue = this.control.value;\n\n this.control?.valueChanges\n .pipe(\n distinctUntilChangedJSONs(),\n map((values) => values ?? []),\n takeUntilDestroyed(this.dr)\n )\n .subscribe((values) => {\n if (this.itemSelectAll()) {\n if (\n this.items.length - values.length === 1 &&\n values.filter((elem) => elem.id === SELECT_ALL_ID).length === 0 &&\n controlValue.includes(this.selectAllItem)\n ) {\n this.control.setValue([], { emitEvent: false });\n }\n\n if (values?.some((elem) => elem.id === SELECT_ALL_ID)) {\n this.control.setValue(this.items, { emitEvent: false });\n }\n\n if (\n this.items.length !== values.length &&\n controlValue?.includes(this.selectAllItem) &&\n values?.some((elem) => elem.id === SELECT_ALL_ID)\n ) {\n this.control.setValue(\n values.filter((elem) => elem !== this.selectAllItem),\n { emitEvent: false }\n );\n }\n }\n controlValue = this.control.value;\n });\n }\n\n public ngOnDestroy(): void {\n this.onSearch$.complete();\n this.onSearchSubscription?.unsubscribe();\n this.onCancelButtonSubscription?.unsubscribe();\n this.onClearButtonSubscription?.unsubscribe();\n }\n\n protected fetchItems(searchValue?: string): void {\n const { idField, valueField } = this.metaFields;\n if (!this.meta?.table?.name || idField === null || valueField === null) {\n return;\n }\n\n const selectedItemIDs = this._getSelectedItemIDs(searchValue);\n\n this.loading = true;\n const where = this.buildWhere(searchValue);\n const selectedItemIdsWhere = this._buildSelectedItemIdsWhere(where, selectedItemIDs, idField);\n let fetchAll = false;\n\n if (this.control.value?.some((elem: any) => elem.id === SELECT_ALL_ID)) {\n fetchAll = true;\n }\n const qParams: MetaQuery = {\n table: this.meta.table,\n where,\n order_by: this.meta.order_by,\n offset: this.meta.offset,\n distinct_on: this.meta.distinct_on,\n subquery: this.meta.subquery,\n };\n if (!fetchAll) {\n qParams.limit = this.meta.limit ?? this.limit;\n }\n\n this.store\n .getResults(qParams, true, selectedItemIdsWhere)\n .pipe(\n tap((data) => {\n this._handleResults(data, idField, valueField, selectedItemIDs);\n }),\n tap(() => {\n if (\n this.itemSelectAll() &&\n this.items.length > 0 &&\n !this.items.includes(this.selectAllItem)\n ) {\n this.items.unshift(this.selectAllItem);\n }\n if (fetchAll) {\n this.control.setValue(this.items, { emitEvent: false });\n }\n this.loading = false;\n this.cdr.markForCheck();\n }),\n takeUntilDestroyed(this.dr)\n )\n .subscribe(() => {\n this.choosedHint =\n this.control\n .getRawValue()\n ?.map((elem: any) => elem.name)\n .join(', ') ?? '';\n });\n }\n\n private _subscribeOnClearButton(): void {\n this.onClearButtonSubscription?.unsubscribe();\n this.onClearButtonSubscription = this.onSearch$\n .pipe(\n skip(1),\n switchMap((value) => {\n if (value.length > 0 && this.cachedString.length === 0) {\n const elements = this.document.querySelectorAll('.input-search');\n const clearButtonClicks$ = [];\n for (let i = 0; i < elements.length; i++) {\n const founded = elements.item(i);\n const item = founded?.parentElement;\n if (founded && item && item.className === 'prizm-input-form-body') {\n clearButtonClicks$.push(\n of(null).pipe(\n delay(300),\n switchMap(() => {\n const clearButton = item.parentElement?.getElementsByClassName(\n 'prizm-input-label-clear-btn prizm-input-button-default clear-icon interactive ng-star-inserted'\n );\n if (clearButton?.[0]) {\n clearButton[0].addEventListener('click', () => {\n this.onSearch$.next('');\n });\n }\n return of(null);\n })\n )\n );\n }\n }\n return clearButtonClicks$.length > 0 ? clearButtonClicks$[0] : of(null);\n }\n this.cachedString = value;\n return of(null);\n }),\n takeUntilDestroyed(this.dr)\n )\n .subscribe();\n }\n\n private _getSelectedItemIDs(searchValue?: string): string[] | undefined {\n if (!searchValue || searchValue === '') {\n return this.value?.filter((elem) => elem.id !== SELECT_ALL_ID).map((val: any) => val.id);\n }\n\n return;\n }\n\n private _buildSelectedItemIdsWhere(\n where: any,\n selectedItemIDs: string[] | undefined,\n idField: string\n ): object | undefined {\n if (where && selectedItemIDs && selectedItemIDs.length > 0) {\n return { _and: [{ [idField]: { _in: selectedItemIDs } }, where] };\n }\n return;\n }\n\n private _handleResults(\n data: any,\n idField: string,\n valueField: string,\n selectedItemIDs: string[] | undefined\n ): void {\n this.items = data.data.map((item: any) => ({\n ...item,\n id: item[idField] ?? '',\n name: this._getNameFromField(item, valueField),\n }));\n\n if (this.itemSelectAll() && this.items.length > 0) {\n this.items.unshift(this.selectAllItem);\n }\n\n this._updateControlValues(data, idField, valueField, selectedItemIDs);\n }\n\n private _updateControlValues(\n data: any,\n idField: string,\n valueField: string,\n selectedItemIDs: string[] | undefined\n ): void {\n const idsSelectedValues = new Set(this.value?.map((val: any) => val[idField]) ?? []);\n const availableItems =\n data.selectedIdsQuery\n ?.filter((item: any) => idsSelectedValues.has(item[idField]))\n .map((item: any) => ({\n ...item,\n id: item[idField] ?? '',\n name: this._getNameFromField(item, valueField),\n })) ?? [];\n\n if (selectedItemIDs && selectedItemIDs.length > 0 && availableItems.length > 0) {\n this.control?.setValue(availableItems, { emitEvent: !this.itemSelectAll });\n }\n\n const itemsThatDontExist = availableItems.filter(\n (new_item: any) => !this.items?.some((value: any) => value.id === new_item.id)\n );\n\n this.items.push(...itemsThatDontExist);\n this.itemsChange.emit(this.items);\n }\n\n private _getNameFromField(item: any, field: string): string {\n if (field.includes('.')) {\n return this._getNameFromDeepField(item, field);\n }\n return this.formatShowedValue(item, field);\n }\n\n private _getNameFromDeepField(item: any, field: string): string {\n const deepFields = field.split('.');\n let tempObject = { ...item };\n\n for (const deepField of deepFields) {\n tempObject = tempObject[deepField];\n }\n\n return tempObject;\n }\n\n protected onSearch(value: string | null): void {\n if (this.searchable) {\n this.onSearch$.next(value ?? '');\n }\n }\n\n protected getListLength(list: IFilterSelectValue[]): string {\n const length = list.some((item) => item?.id === SELECT_ALL_ID) ? list.length - 1 : list.length;\n return length === 1 ? '' : String(length);\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-container [ngTemplateOutlet]=\"value ? showedValueTemplate : emptyTemplate\">\n <ng-template #showedValueTemplate>\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <pre class=\"value\">{{ showedValue }}</pre>\n </ng-template>\n <ng-template ngSwitchDefault>\n <div class=\"value\" [tuiHint]=\"showedValue\">\n <span>{{ showedValue }}</span>\n </div>\n </ng-template>\n </ng-container>\n </ng-template>\n <ng-template #emptyTemplate>\n <span class=\"value\">-</span>\n </ng-template>\n </ng-container>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n <tui-icon\n *ngIf=\"hint\"\n icon=\"assets/ngx-register-base/icons/circle-info-empty.svg\"\n [tuiHint]=\"hint\"\n class=\"hintIcon\"\n ></tui-icon>\n </div>\n <tui-multi-select\n [formControl]=\"control\"\n [tuiTextfieldLabelOutside]=\"true\"\n [tuiTextfieldCleaner]=\"true\"\n tuiAppearance=\"sproc-input-appearance\"\n [valueContent]=\"valueContent\"\n tuiTextfieldSize=\"m\"\n [stringify]=\"stringify()\"\n [identityMatcher]=\"identityMatcher()\"\n (searchChange)=\"onSearch($event)\"\n [editable]=\"searchable\"\n >\n <span class=\"placeholder\">{{ placeholder() }}</span>\n\n <tui-data-list-wrapper\n *tuiDataList\n tuiMultiSelectGroup\n [items]=\"items\"\n [itemContent]=\"listItemTemplate ?? itemContent\"\n ></tui-data-list-wrapper>\n </tui-multi-select>\n\n <ng-template #itemContent let-data>\n {{ data.name }}\n </ng-template>\n <ng-template #valueContent let-list>\n @let isSingle = list.length === 1;\n <span [class]=\"isSingle ? 'choosed choosed-one' : 'choosed choosed-many'\">\n {{ isSingle ? list[0].name : shortPickedLength() ? 'Выбрано: ' : null }}\n {{ getListLength(list) }}\n </span>\n </ng-template>\n </div>\n </ng-template>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n forwardRef,\n input,\n OnDestroy,\n Output,\n signal,\n} from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n distinctUntilChanged,\n filter,\n map,\n tap,\n} from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n TUI_ITEMS_HANDLERS,\n TuiAppearance,\n TuiDropdown,\n TuiHint,\n TuiLoader,\n TuiTextfield,\n} from '@taiga-ui/core';\nimport {\n TuiChevron,\n TuiComboBox,\n TuiDataListWrapper,\n TuiFilterByInputPipe,\n TuiSelect,\n} from '@taiga-ui/kit';\nimport { TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet } from '@angular/common';\nimport { TuiStringMatcher } from '@taiga-ui/cdk';\nimport { ParamInvalidIconComponent } from '../sub-components/param-invalid-icon/param-invalid-icon.component';\nimport { FastQueryStore } from '../../../store/fast-query-store.service';\nimport { ParamSelectBase } from '../../../core/param/param-select-base';\nimport { IFilterSelectValue } from '../../../types/params.types';\nimport { PARAM_SEARCH_INPUT_DEBOUNCE_TIME_MLS } from '../../../consts/params.consts';\n\n@Component({\n selector: 'sproc-param-select',\n templateUrl: './param-select.component.html',\n styleUrls: ['./param-select.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n FastQueryStore,\n {\n provide: TUI_ITEMS_HANDLERS,\n deps: [forwardRef(() => ParamSelectComponent)],\n useFactory: (component: ParamSelectComponent) => ({\n stringify: component.stringify,\n identityMatcher: component.identityMatcher,\n disabledItemHandler: signal(() => false),\n }),\n },\n ],\n standalone: true,\n imports: [\n TuiTextfield,\n TuiAppearance,\n TuiTextfieldControllerModule,\n ReactiveFormsModule,\n TuiDataListWrapper,\n TuiFilterByInputPipe,\n NgTemplateOutlet,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n TuiComboBox,\n ParamInvalidIconComponent,\n NgIf,\n TuiSelect,\n TuiDropdown,\n TuiLoader,\n TuiChevron,\n TuiHint,\n ],\n})\nexport class ParamSelectComponent\n extends ParamSelectBase<IFilterSelectValue | null, IFilterSelectValue | null>\n implements OnDestroy\n{\n override placeholder = input('Выберите значение');\n readonly stringify = input<(item: IFilterSelectValue) => string>((item) =>\n String(item.name ?? '')\n );\n readonly identityMatcher = input<(a: IFilterSelectValue, b: IFilterSelectValue) => boolean>(\n (a, b) => a.id === b.id\n );\n readonly matcher = input<TuiStringMatcher<IFilterSelectValue>>(\n (item: IFilterSelectValue, query: string) => {\n if (!query || String(query).trim() === '') {\n return true;\n }\n return String(item?.name ?? '')\n .toLowerCase()\n .includes(String(query).toLowerCase());\n }\n );\n override buildShowedValue = input(\n (value: IFilterSelectValue | null): string => value?.name ?? '-'\n );\n public strict = input<boolean>(true);\n\n @Output() onSelect = new EventEmitter<IFilterSelectValue>();\n\n protected readonly search$ = new BehaviorSubject<string | undefined>(undefined);\n\n public override afterViewInit(): void {\n this._observeFetchItems();\n if (this.meta) {\n this._subscribeOnMetaChanges();\n this._subscribeOnSearch();\n }\n }\n\n public ngOnDestroy(): void {\n this.search$.complete();\n }\n\n private _subscribeOnSearch(): void {\n this.search$\n .pipe(debounceTime(PARAM_SEARCH_INPUT_DEBOUNCE_TIME_MLS), takeUntilDestroyed(this.dr))\n .subscribe((searchValue: string | undefined) => {\n this.fetchItems(searchValue);\n });\n }\n\n private _observeFetchItems(): void {\n this.control.valueChanges\n .pipe(\n filter(Boolean),\n filter((value) => !value.name),\n takeUntilDestroyed(this.dr)\n )\n .subscribe((value) => {\n const valueId =\n typeof value === 'object' && value\n ? (value as any).id\n : (value as unknown as string | number | null);\n\n const filledValue = this.items.find((item) => item.id === valueId);\n\n if (filledValue) {\n this.control.setValue(filledValue, { emitEvent: false });\n }\n });\n\n combineLatest([\n this.control.valueChanges.pipe(\n map((value) => value?.id ?? null),\n distinctUntilChanged(),\n filter((id) => !this.items.some((item) => item.id === id))\n ),\n this.meta$,\n ])\n .pipe(takeUntilDestroyed(this.dr))\n .subscribe(() => {\n this.fetchItems();\n });\n }\n\n private _subscribeOnMetaChanges(): void {\n this.meta$.pipe(takeUntilDestroyed(this.dr)).subscribe(() => {\n this.fetchItems();\n });\n }\n\n protected fetchItems(searchValue?: string): void {\n const { idField, valueField } = this.metaFields;\n\n if (!this.meta?.table?.name || idField === null || valueField === null) {\n return;\n }\n\n const selectedItemIDs = this._getSelectedItemIDs(searchValue);\n\n this.loading = true;\n const where = this.buildWhere(searchValue);\n const selectedItemIdsWhere = this._buildSelectedItemIdsWhere(where, selectedItemIDs, idField);\n\n this.store\n .getResults(\n {\n table: this.meta.table,\n where,\n order_by: this.meta.order_by,\n offset: this.meta.offset,\n distinct_on: this.meta.distinct_on,\n subquery: this.meta.subquery,\n limit: this.meta.limit ?? this.limit,\n },\n true,\n selectedItemIdsWhere\n )\n .pipe(\n tap((data) => {\n this._handleResults(data, idField, valueField, selectedItemIDs);\n }),\n tap(() => {\n this.loading = false;\n this.cdr.markForCheck();\n }),\n takeUntilDestroyed(this.dr)\n )\n .subscribe();\n }\n\n private _getSelectedItemIDs(searchValue?: string): string[] | undefined {\n if (this.value && (!searchValue || searchValue === '')) {\n const idField = this.meta?.table.idField ?? 'id';\n return [this.value[idField]];\n }\n\n return;\n }\n\n private _buildSelectedItemIdsWhere(\n where: any,\n selectedItemIDs: string[] | undefined,\n idField: string\n ): object | undefined {\n if (where && selectedItemIDs && selectedItemIDs.length > 0) {\n return { _and: [{ [idField]: { _in: selectedItemIDs } }, where] };\n }\n return;\n }\n\n private _handleResults(\n data: any,\n idField: string,\n valueField: string,\n selectedItemIDs: string[] | undefined\n ): void {\n this.items = data.data.map((item: any) => ({\n ...item,\n id: item[idField] ?? '',\n name: this._getNameFromField(item, valueField),\n }));\n\n this._updateControlValues(data, idField, valueField, selectedItemIDs);\n }\n\n private _getNameFromField(item: any, field: string): string {\n if (field.includes('.')) {\n return this._getNameFromDeepField(item, field);\n }\n\n return this.formatShowedValue(item, field);\n }\n\n private _getNameFromDeepField(item: any, field: string): string {\n const deepFields = field.split('.');\n let tempObject = { ...item };\n\n for (const deepField of deepFields) {\n tempObject = tempObject[deepField];\n }\n\n return tempObject;\n }\n\n private _updateControlValues(\n data: any,\n idField: string,\n valueField: string,\n selectedItemIDs: string[] | undefined\n ): void {\n const idSelectedValue = this.value?.[idField];\n const availableItems =\n data.selectedIdsQuery\n ?.filter((item: any) => idSelectedValue === item[idField])\n .map((item: any) => ({\n ...item,\n id: item[idField] ?? '',\n name: this._getNameFromField(item, valueField),\n })) ?? [];\n\n if (selectedItemIDs && selectedItemIDs.length > 0 && availableItems.length > 0) {\n const [item] = availableItems;\n this.control?.setValue(item);\n }\n\n const itemsThatDontExist = availableItems.filter(\n (new_item: any) => !this.items.some((value: any) => value.id === new_item.id)\n );\n\n this.items.push(...itemsThatDontExist);\n this.itemsChange.emit(this.items);\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n }\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n </div>\n\n @if (searchable) {\n <tui-textfield\n tuiTextfieldSize=\"m\"\n tuiAppearance=\"sproc-input-appearance\"\n tuiChevron\n [tuiTextfieldCleaner]=\"true\"\n [tuiHint]=\"value && showedValue !== '-' ? hintContent : undefined\"\n [content]=\"valueTemplate\"\n >\n <input\n (input)=\"search$.next($any($event.target).value)\"\n tuiComboBox\n [strict]=\"strict()\"\n [placeholder]=\"placeholder()\"\n [formControl]=\"control\"\n />\n\n <tui-loader [showLoader]=\"loading\" [overlay]=\"true\">\n <tui-data-list-wrapper\n new\n *tuiTextfieldDropdown\n [items]=\"items | tuiFilterByInput: matcher()\"\n [itemContent]=\"listItemTemplate ?? dropdownOptionContent\"\n [tuiDropdownMaxHeight]=\"maxDropdownHeight\"\n (itemClick)=\"onSelect.emit($event)\"\n />\n </tui-loader>\n\n <ng-container *ngTemplateOutlet=\"textfieldIcons\"></ng-container>\n </tui-textfield>\n } @else {\n <tui-textfield\n tuiTextfieldSize=\"m\"\n tuiAppearance=\"sproc-input-appearance\"\n tuiChevron\n [tuiTextfieldLabelOutside]=\"true\"\n [tuiTextfieldCleaner]=\"true\"\n [tuiHint]=\"value && showedValue !== '-' ? hintContent : undefined\"\n [content]=\"valueTemplate\"\n [tuiDropdownMaxHeight]=\"maxDropdownHeight\"\n >\n <input tuiSelect [placeholder]=\"placeholder()\" [formControl]=\"control\" />\n\n <tui-loader [showLoader]=\"loading\" [overlay]=\"true\">\n <tui-data-list-wrapper\n new\n *tuiTextfieldDropdown\n [items]=\"items\"\n [itemContent]=\"listItemTemplate ?? dropdownOptionContent\"\n (itemClick)=\"onSelect.emit($event)\"\n />\n </tui-loader>\n\n <ng-container *ngTemplateOutlet=\"textfieldIcons\"></ng-container>\n </tui-textfield>\n }\n <ng-template #dropdownOptionContent let-data>\n <div>\n {{ stringify()(data) }}\n </div>\n </ng-template>\n\n <ng-template #hintContent> {{ showedValue }} </ng-template>\n\n <ng-template #textfieldIcons>\n <div class=\"textfield-icons-container\">\n @if (isInvalidAndNotPristine) {\n <sproc-param-invalid-icon></sproc-param-invalid-icon>\n }\n </div>\n </ng-template>\n </div>\n </ng-template>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { PrizmSwitcherItem } from '@prizm-ui/components';\nimport { ParamBase } from '../../../core';\n\n@Component({\n selector: 'sproc-param-switcher',\n templateUrl: './param-switcher.component.html',\n styleUrls: ['./param-switcher.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamSwitcherComponent extends ParamBase<number, number> {\n @Input() switchers: PrizmSwitcherItem[] = [];\n}\n","<div class=\"param-switcher\">\n <div *ngIf=\"label\" class=\"label\">\n <span *ngIf=\"label\" class=\"label__text\">{{ label }}</span>\n <span *ngIf=\"required\" class=\"label--required\">*</span>\n </div>\n\n <prizm-switcher [formControl]=\"control\" [switchers]=\"switchers\"></prizm-switcher>\n</div>\n","export enum ESwitcherValue {\n MONTH,\n FIRST,\n SECOND,\n THIRD,\n FOURTH,\n YEAR,\n}\n","import { PrizmSwitcherItem } from '@prizm-ui/components';\nimport { ESwitcherValue } from '../types/param-switcher-date-time-range.types';\n\nexport const SwitcherItems: PrizmSwitcherItem[] = [\n {\n id: ESwitcherValue.MONTH,\n title: 'мес',\n },\n {\n id: ESwitcherValue.FIRST,\n title: '1 кв',\n },\n {\n id: ESwitcherValue.SECOND,\n title: '2 кв',\n },\n {\n id: ESwitcherValue.THIRD,\n title: '3 кв',\n },\n {\n id: ESwitcherValue.FOURTH,\n title: '4 кв',\n },\n {\n id: ESwitcherValue.YEAR,\n title: 'год',\n },\n];\n","import { Component } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport {\n PrizmDateTimeRange,\n PrizmDay,\n PrizmDayRange,\n PrizmTime,\n PrizmTimeRange,\n} from '@prizm-ui/components';\nimport { SwitcherItems } from './consts/param-switcher-date-time-range.consts';\nimport { ESwitcherValue } from './types/param-switcher-date-time-range.types';\nimport { ParamDateTimeRangeComponent } from '../param-date-time-range/param-date-time-range.component';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { EMonth } from '../../../consts/month.consts';\n\n@Component({\n selector: 'sproc-param-switcher-date-time-range',\n templateUrl: './param-switcher-date-time-range.component.html',\n styleUrls: ['./param-switcher-date-time-range.component.less'],\n})\nexport class ParamSwitcherDateTimeRangeComponent extends ParamDateTimeRangeComponent {\n protected switcherControl = new FormControl<ESwitcherValue | null>(null);\n protected switchers = SwitcherItems;\n\n public override onInit(): void {\n super.onInit();\n this._subscribeOnSwitcher();\n }\n\n public override afterViewInit(): void {\n super.afterViewInit();\n this.switcherControl.setValue(ESwitcherValue.MONTH);\n }\n\n private _subscribeOnSwitcher(): void {\n this.switcherControl.valueChanges\n .pipe(takeUntilDestroyed(this.dr))\n .subscribe((switcherValue) => {\n const now = new Date();\n const year = now.getFullYear();\n const month: EMonth = now.getMonth();\n\n let controlValue: PrizmDateTimeRange | null = null;\n\n if (switcherValue === ESwitcherValue.MONTH) {\n controlValue = this._calcMonthRange(year, month);\n } else if (switcherValue === ESwitcherValue.FIRST) {\n controlValue = this._calcFirstQuarterRange(year);\n } else if (switcherValue === ESwitcherValue.SECOND) {\n controlValue = this._calcSecondQuarterRange(year);\n } else if (switcherValue === ESwitcherValue.THIRD) {\n controlValue = this._calcThirdQuarterRange(year);\n } else if (switcherValue === ESwitcherValue.FOURTH) {\n controlValue = this._calcFourthQuarterRange(year);\n } else if (switcherValue === ESwitcherValue.YEAR) {\n controlValue = this._calcYearRange(year);\n }\n\n this.control.setValue(controlValue);\n });\n }\n\n private _calcMonthRange(year: number, month: EMonth): PrizmDateTimeRange {\n const from = new Date(year, month, 1);\n const to = new Date(year, month);\n to.setMonth(to.getMonth() + 1);\n to.setMilliseconds(to.getMilliseconds() - 1);\n\n return new PrizmDateTimeRange(\n new PrizmDayRange(PrizmDay.fromLocalNativeDate(from), PrizmDay.fromLocalNativeDate(to)),\n new PrizmTimeRange(PrizmTime.fromLocalNativeDate(from), PrizmTime.fromLocalNativeDate(to))\n );\n }\n\n private _calcFirstQuarterRange(year: number): PrizmDateTimeRange {\n const from = new Date(year, EMonth.JAN, 1);\n const to = new Date(year, EMonth.MAR);\n to.setMonth(to.getMonth() + 1);\n to.setMilliseconds(to.getMilliseconds() - 1);\n\n return new PrizmDateTimeRange(\n new PrizmDayRange(PrizmDay.fromLocalNativeDate(from), PrizmDay.fromLocalNativeDate(to)),\n new PrizmTimeRange(PrizmTime.fromLocalNativeDate(from), PrizmTime.fromLocalNativeDate(to))\n );\n }\n\n private _calcSecondQuarterRange(year: number): PrizmDateTimeRange {\n const from = new Date(year, EMonth.APR, 1);\n const to = new Date(year, EMonth.JUN);\n to.setMonth(to.getMonth() + 1);\n to.setMilliseconds(to.getMilliseconds() - 1);\n\n return new PrizmDateTimeRange(\n new PrizmDayRange(PrizmDay.fromLocalNativeDate(from), PrizmDay.fromLocalNativeDate(to)),\n new PrizmTimeRange(PrizmTime.fromLocalNativeDate(from), PrizmTime.fromLocalNativeDate(to))\n );\n }\n\n private _calcThirdQuarterRange(year: number): PrizmDateTimeRange {\n const from = new Date(year, EMonth.JUL, 1);\n const to = new Date(year, EMonth.SEP);\n to.setMonth(to.getMonth() + 1);\n to.setMilliseconds(to.getMilliseconds() - 1);\n\n return new PrizmDateTimeRange(\n new PrizmDayRange(PrizmDay.fromLocalNativeDate(from), PrizmDay.fromLocalNativeDate(to)),\n new PrizmTimeRange(PrizmTime.fromLocalNativeDate(from), PrizmTime.fromLocalNativeDate(to))\n );\n }\n\n private _calcFourthQuarterRange(year: number): PrizmDateTimeRange {\n const from = new Date(year, EMonth.OCT, 1);\n const to = new Date(year, EMonth.DEC);\n to.setMonth(to.getMonth() + 1);\n to.setMilliseconds(to.getMilliseconds() - 1);\n\n return new PrizmDateTimeRange(\n new PrizmDayRange(PrizmDay.fromLocalNativeDate(from), PrizmDay.fromLocalNativeDate(to)),\n new PrizmTimeRange(PrizmTime.fromLocalNativeDate(from), PrizmTime.fromLocalNativeDate(to))\n );\n }\n\n private _calcYearRange(year: number): PrizmDateTimeRange {\n const from = new Date(year, EMonth.JAN, 1);\n const to = new Date(year, EMonth.DEC);\n to.setMonth(to.getMonth() + 1);\n to.setMilliseconds(to.getMilliseconds() - 1);\n\n return new PrizmDateTimeRange(\n new PrizmDayRange(PrizmDay.fromLocalNativeDate(from), PrizmDay.fromLocalNativeDate(to)),\n new PrizmTimeRange(PrizmTime.fromLocalNativeDate(from), PrizmTime.fromLocalNativeDate(to))\n );\n }\n}\n","<div class=\"param-custom-template\">\n <div *ngIf=\"label\" class=\"label\">\n <span *ngIf=\"label\" class=\"label__text\">{{ label }}</span>\n <span *ngIf=\"required\" class=\"label--required\">*</span>\n </div>\n\n <prizm-switcher [switchers]=\"switchers\" [formControl]=\"switcherControl\"></prizm-switcher>\n\n <prizm-input-layout class=\"flex-shrink--zero\" size=\"s\" [forceClear]=\"forceClear\">\n <prizm-input-layout-date-time-range\n [placeholder]=\"placeholder()\"\n [timeMode]=\"timeMode\"\n [maxLength]=\"maxLength\"\n [min]=\"$any(min)\"\n [max]=\"$any(max)\"\n [formControl]=\"control\"\n ></prizm-input-layout-date-time-range>\n </prizm-input-layout>\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet } from '@angular/common';\nimport { TuiAppearance, TuiHint, TuiTextfield } from '@taiga-ui/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { MaskitoOptions } from '@maskito/core';\nimport { MaskitoDirective } from '@maskito/angular';\nimport { ParamInvalidIconComponent } from '../sub-components/param-invalid-icon/param-invalid-icon.component';\nimport { ParamTextBase } from '../../../core/param';\n\n@Component({\n selector: 'sproc-param-text',\n templateUrl: './param-text.component.html',\n styleUrls: ['./param-text.component.less'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n NgIf,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n TuiTextfield,\n ParamInvalidIconComponent,\n ReactiveFormsModule,\n TuiHint,\n TuiTextfieldControllerModule,\n TuiAppearance,\n MaskitoDirective,\n ],\n})\nexport class ParamTextComponent extends ParamTextBase {\n public maskOptions = input<MaskitoOptions | null>(null);\n /** сообщение об ошибке для текстового поля */\n public errorMessage = input<string>('');\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n @if (errorMessage() && control.invalid) {\n <div class=\"errorMessage\">{{ errorMessage() }}</div>\n }\n </div>\n\n <tui-textfield\n tuiAppearance=\"sproc-input-appearance\"\n tuiTextfieldSize=\"m\"\n [tuiTextfieldLabelOutside]=\"true\"\n [tuiTextfieldCleaner]=\"forceClear\"\n [tuiHint]=\"value && showedValue !== '-' ? hintContent : undefined\"\n >\n <input\n tuiTextfield\n [formControl]=\"control\"\n [maskito]=\"maskOptions()\"\n [placeholder]=\"placeholder()\"\n [maxLength]=\"maxLength()\"\n />\n <div class=\"textfield-icons-container\">\n @if (isInvalidAndNotPristine) {\n <sproc-param-invalid-icon></sproc-param-invalid-icon>\n }\n </div>\n </tui-textfield>\n\n <ng-template #hintContent> {{ showedValue }} </ng-template>\n </div>\n </ng-template>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TuiAppearance, TuiHint, TuiTextfield } from '@taiga-ui/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { TuiTextarea, TuiTextareaLimit } from '@taiga-ui/kit';\nimport { ParamInvalidIconComponent } from '../sub-components/param-invalid-icon/param-invalid-icon.component';\nimport { ParamTextBase } from '../../../core/param';\n\n@Component({\n selector: 'sproc-param-textarea',\n templateUrl: './param-textarea.component.html',\n styleUrls: ['./param-textarea.component.less'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n TuiTextfield,\n ParamInvalidIconComponent,\n ReactiveFormsModule,\n TuiHint,\n TuiTextfieldControllerModule,\n TuiAppearance,\n TuiTextarea,\n TuiTextareaLimit,\n ],\n})\nexport class ParamTextareaComponent extends ParamTextBase {\n /** Минимальное кол-во строк в инпуте */\n public min = input(6);\n /** Максимальное кол-во строк в инпуте */\n public max = input(6);\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n @switch (paramStyle) {\n @case ('filter') {\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n }\n @default {\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n }\n }\n }\n <div class=\"value\">\n <span [tuiHint]=\"value && showedValue !== '-' ? showedValue : undefined\">{{\n showedValue\n }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n <div class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n </div>\n }\n <tui-textfield\n tuiAppearance=\"sproc-input-appearance\"\n tuiTextfieldSize=\"m\"\n [tuiTextfieldLabelOutside]=\"true\"\n [tuiTextfieldCleaner]=\"forceClear\"\n [tuiHint]=\"value && showedValue !== '-' ? hintContent : undefined\"\n >\n <textarea\n tuiTextarea\n tuiTextfieldSize=\"m\"\n [formControl]=\"control\"\n [max]=\"max()\"\n [min]=\"min()\"\n [maxLength]=\"maxLength()\"\n [limit]=\"maxLength()\"\n [placeholder]=\"placeholder()\"\n ></textarea>\n <div class=\"textfield-icons-container\">\n @if (isInvalidAndNotPristine) {\n <sproc-param-invalid-icon></sproc-param-invalid-icon>\n }\n </div>\n </tui-textfield>\n\n <ng-template #hintContent> {{ showedValue }} </ng-template>\n </div>\n </ng-template>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { ParamBase } from '../../../core/param/param-base';\nimport { TuiSizeM, TuiSizeS } from '@taiga-ui/core';\n\n@Component({\n selector: 'sproc-param-toggle',\n templateUrl: './param-toggle.component.html',\n styleUrls: ['./param-toggle.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamToggleComponent extends ParamBase<boolean, boolean> {\n public override buildShowedValue = input((value: boolean): string => (value ? 'Да' : 'Нет'));\n public size = input<TuiSizeS | TuiSizeM>('s');\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit empty-switcher\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n </div>\n\n <input\n tuiSwitch\n type=\"checkbox\"\n [size]=\"size()\"\n class=\"card-toggle-button\"\n [formControl]=\"control\"\n />\n </div>\n </ng-template>\n</ng-container>\n","import { ParamTreeService } from '../services/param-tree.service';\nimport { ITreeNode } from '../types/param-tree.types';\n\nexport const TREE_LOADING_NODE: ITreeNode = { name: 'LOADING' };\n\nexport const DEBOUNCE_TIME_FOR_SYNC_NEXT_VALUES = 250;\n\nexport const notEmpty: (children?: ITreeNode[]) => boolean = (children) =>\n !!children && children.length > 0 && children[0] !== TREE_LOADING_NODE;\n\nfunction getCurrentChildren<T>(node: ITreeNode<T>, service: ParamTreeService<T>): ITreeNode<T>[] {\n const serviceChildren = service.getChildren(node);\n if (notEmpty(serviceChildren)) {\n return serviceChildren;\n }\n\n return [];\n}\n\nexport function treeNodesFlatten<T>(\n node: ITreeNode<T>,\n service: ParamTreeService<T>\n): ITreeNode<T>[] {\n const children = getCurrentChildren(node, service);\n const flattenedChildren: ITreeNode<T>[] = [node];\n\n for (const child of children) {\n const flattened = treeNodesFlatten<T>(child, service);\n flattenedChildren.push(...flattened);\n }\n\n return flattenedChildren;\n}\n\nexport function updatesCheckedNodesEqual<T>(\n prev: ITreeNode<T>[] | undefined,\n curr: ITreeNode<T>[] | undefined,\n service: ParamTreeService<T>\n): boolean {\n if (!prev && !curr) {\n return true;\n }\n\n if (!prev || !curr) {\n return false;\n }\n\n if (prev.length !== curr.length) {\n return false;\n }\n\n for (const [i] of prev.entries()) {\n if (!service.equals(prev[i], curr[i])) {\n return false;\n }\n }\n\n return true;\n}\n","import { InjectionToken } from '@angular/core';\nimport { SmaTreeLoader } from '../types/param-tree.types';\n\nexport const TREE_LOADER = new InjectionToken<SmaTreeLoader<unknown>>('SMA_TREE_LOADER');\n","import { DestroyRef, inject, Injectable, signal } from '@angular/core';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n debounceTime,\n EMPTY,\n expand,\n filter,\n from,\n iif,\n map,\n mergeMap,\n Observable,\n of,\n Subject,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport { TUI_TREE_LOADING, TUI_TREE_START } from '@taiga-ui/kit';\nimport { startWith } from 'rxjs/operators';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ILoadConfig, ITreeNode, SmaTreeLoader } from '../types/param-tree.types';\nimport { TREE_LOADER } from '../tokens/param-tree.tokens';\nimport { just } from '../../../../utils';\nimport { DEBOUNCE_TIME_FOR_SYNC_NEXT_VALUES } from '../consts/param-tree.consts';\n\n@Injectable()\nexport class ParamTreeService<T> {\n private readonly _loading = inject<ITreeNode<T>>(TUI_TREE_LOADING);\n private readonly _start$ = inject<ITreeNode<T>>(TUI_TREE_START, { optional: true });\n private readonly _loader = inject<SmaTreeLoader<ITreeNode<T>>>(TREE_LOADER);\n private readonly _destroyRef = inject(DestroyRef);\n\n private readonly _loaderNode$ = new Subject<ITreeNode<T>>();\n private readonly _defaultNodeOpenedState$ = new BehaviorSubject<boolean | undefined>(undefined);\n private readonly _lastCheckedNode$ = new BehaviorSubject<ITreeNode<T> | null>(null);\n private readonly _load$ = new Subject<ILoadConfig<T>>();\n private readonly _parentChildrenMap = new Map<ITreeNode<T>, ITreeNode<T>[]>([\n [this._loading, []],\n ]);\n private readonly _nodes$ = new BehaviorSubject<ITreeNode<T>[]>([]);\n private readonly _loadedChildren$ = new Subject<ITreeNode<T>[]>();\n\n public readonly defaultNodeOpenedState$ = this._defaultNodeOpenedState$.asObservable();\n public readonly lastCheckedNode$ = this._lastCheckedNode$.asObservable();\n public readonly loaderNode$ = this._loaderNode$.asObservable();\n\n public readonly openedNodesState = signal(new Map<ITreeNode<T>, boolean>());\n public readonly checkedNodesState = signal(new Map<ITreeNode<T>, boolean | null>());\n\n private _firstLevelNodes: ITreeNode<T>[] = this._start$ ? [this._start$] : [];\n private _firstLevelNodesLoaded = false;\n\n public readonly nodes$ = this._nodes$.asObservable();\n\n constructor() {\n this._load$\n .pipe(\n mergeMap((load) =>\n this._load(load.node, !load.config?.initial).pipe(\n map((firstLevelNodes) => ({ load, firstLevelNodes }))\n )\n ),\n tap(({ load: { config }, firstLevelNodes }) => {\n if (config?.initial) {\n this._firstLevelNodes = firstLevelNodes ?? [];\n }\n }),\n mergeMap(({ load }) =>\n iif(() => !!load.config?.opened, this._recursiveLoad(load.node), just())\n ),\n map(() => this._firstLevelNodes),\n startWith([this._loading]),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((nodes) => {\n this._nodes$.next(nodes);\n });\n\n combineLatest([this.loaderNode$, this.defaultNodeOpenedState$])\n .pipe(debounceTime(DEBOUNCE_TIME_FOR_SYNC_NEXT_VALUES), takeUntilDestroyed(this._destroyRef))\n .subscribe(([loader, opened]) => {\n this.loadFirstLevelNodes(loader, opened);\n });\n }\n\n private _recursiveLoad(startedNode: ITreeNode<T>) {\n return of(startedNode).pipe(\n expand((node) => {\n if (this.hasChildren(node)) {\n return this._load(node).pipe(\n switchMap((children) => from(children)),\n catchError(() => EMPTY)\n );\n }\n\n if (node.children) {\n return from(node.children);\n }\n\n return EMPTY;\n })\n );\n }\n\n public loadFirstLevelNodes(node: ITreeNode<T>, opened: boolean = true): void {\n if (!this._firstLevelNodesLoaded) {\n this._load$.next({ node, config: { initial: true, opened } });\n this._firstLevelNodesLoaded = true;\n }\n }\n\n private _load(node: ITreeNode<T>, setChildren = true): Observable<ITreeNode<T>[]> {\n return this._loader.loadChildren(node).pipe(\n tap((children) => {\n if (setChildren) {\n for (const child of children) {\n child.parent = node;\n }\n node.children = children;\n this._parentChildrenMap.set(node, children);\n this._loadedChildren$.next(children);\n }\n\n const childfree = [node, ...children].filter((item) => !this.hasChildren(item));\n for (const item of childfree) {\n this._parentChildrenMap.set(item, []);\n }\n })\n );\n }\n\n public loadChildren(node: ITreeNode<T>): Observable<ITreeNode<T>[]> {\n const result = this._loadedChildren$.asObservable().pipe(\n filter(([firstChild]) => firstChild?.parent === node),\n take(1)\n );\n const children = this.getChildren(node);\n\n if (children && children[0] !== this._loading) {\n return of(children);\n }\n\n this._parentChildrenMap.set(node, [this._loading]);\n this._load$.next({ node });\n\n return result;\n }\n\n public getChildren(node: ITreeNode<T>): ITreeNode<T>[] {\n return this._parentChildrenMap.get(node) || [this._loading];\n }\n\n public hasChildren(node: ITreeNode<T>): boolean {\n return this._loader.hasChildren(node);\n }\n\n public getTopLevelNodes(): ITreeNode<T>[] {\n return this._firstLevelNodes;\n }\n\n public setLoaderNode(loaderNode: ITreeNode<T>, defaultNodeOpenedState?: boolean): void {\n this._loaderNode$.next(loaderNode);\n this._defaultNodeOpenedState$.next(defaultNodeOpenedState);\n }\n\n public setLastCheckedNode(node: ITreeNode<T> | null): void {\n this._lastCheckedNode$.next(node);\n }\n\n public equals(node1: ITreeNode<T>, node2: ITreeNode<T>): boolean {\n return this._loader.equals(node1, node2);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { ITreeNode, SmaTreeLoader } from '../types/param-tree.types';\n\n@Injectable()\nexport class SyncTreeLoaderService<T> implements SmaTreeLoader<ITreeNode<T>> {\n public loadChildren({ children }: ITreeNode<T>): Observable<ITreeNode<T>[]> {\n return of(children ?? []);\n }\n\n public hasChildren({ haveChildren }: ITreeNode<T>): boolean {\n return !!haveChildren;\n }\n\n public equals(value1: ITreeNode<T>, value2: ITreeNode<T>): boolean {\n return value1 === value2;\n }\n}\n","import { ITreeNode } from '../types/param-tree.types';\n\ninterface IArgs<T> {\n item: T;\n children?: ITreeNode<T>[];\n}\n\nexport function transformItemToNode<T extends Record<string, any>>({\n item,\n children,\n}: IArgs<T>): ITreeNode<T> {\n return {\n name: item['name'],\n haveChildren: !!children,\n children: children || [],\n data: item,\n };\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n output,\n TemplateRef,\n untracked,\n} from '@angular/core';\nimport { TuiCheckbox, TuiTree } from '@taiga-ui/kit';\nimport { TuiLabel, TuiLoader } from '@taiga-ui/core';\nimport { FormsModule } from '@angular/forms';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { EMPTY, expand, filter, from, of, switchMap, take, takeUntil, tap } from 'rxjs';\nimport { ChildrenHandlerType, ITreeNode } from './types/param-tree.types';\nimport { ParamTreeService } from './services/param-tree.service';\nimport {\n TREE_LOADING_NODE,\n treeNodesFlatten,\n updatesCheckedNodesEqual,\n} from './consts/param-tree.consts';\n\n/** Компонент иерархического списка */\n@Component({\n selector: 'sproc-param-tree',\n standalone: true,\n imports: [TuiTree, TuiLabel, TuiCheckbox, FormsModule, AsyncPipe, TuiLoader, NgTemplateOutlet],\n templateUrl: './param-tree.component.html',\n styleUrl: './param-tree.component.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamTreeComponent<T> {\n /**\n * Режим выбора нескольких значений\n *\n * @default Выбор единственного узла */\n public multi = input(false);\n /** Задать выбранные узлы */\n public checkedNodes = input<ITreeNode<T>[]>([]);\n /** Кастомный шаблон узла */\n public nodeTemplate = input<TemplateRef<any> | null>(null);\n\n /** Выбранные узлы верхнего уровня */\n public readonly selectedNodesChange = output<ITreeNode<T>[]>();\n\n private readonly _treeService = inject(ParamTreeService<T>);\n private readonly _dr = inject(DestroyRef);\n\n protected readonly defaultNodeOpenedState = toSignal(this._treeService.defaultNodeOpenedState$);\n protected readonly openedNodesState = this._treeService.openedNodesState;\n protected readonly checkedNodesState = this._treeService.checkedNodesState;\n\n private readonly _lastCheckedNode = toSignal(this._treeService.lastCheckedNode$, {\n initialValue: null,\n });\n private readonly updatesCheckedNodes = computed(() => this.checkedNodes(), {\n equal: (prev, curr) => updatesCheckedNodesEqual(prev, curr, this._treeService),\n });\n\n protected readonly treeNodes$ = this._treeService.nodes$;\n\n protected readonly TREE_LOADER = TREE_LOADING_NODE;\n protected readonly childrenHandler: ChildrenHandlerType<T> = (node) =>\n this._treeService.getChildren(node);\n\n constructor() {\n effect(() => {\n const nodes = this.updatesCheckedNodes();\n\n untracked(() => {\n if (nodes.length === 0) {\n this.checkedNodesState.set(new Map<ITreeNode<T>, boolean | null>());\n } else {\n this._tryToSetNodesRecursive(nodes);\n }\n });\n });\n }\n\n protected getValue(\n currentNode: ITreeNode<T>,\n state: Map<ITreeNode<T>, boolean | null>\n ): boolean | null {\n return this.multi()\n ? this._isSelectedMulti(currentNode, state)\n : this._isSelectedSingle(currentNode, state);\n }\n\n private _isSelectedMulti(\n currentNode: ITreeNode<T>,\n state: Map<ITreeNode<T>, boolean | null>\n ): boolean | null {\n let result: boolean | null = null;\n const flattenNodes = treeNodesFlatten<T>(currentNode, this._treeService);\n const firstNode = flattenNodes[0];\n\n if (firstNode) {\n result = !!state.get(firstNode);\n }\n\n for (const node of flattenNodes) {\n if (result !== !!state.get(node)) {\n const currentLevelNode = flattenNodes.filter((value) => value.parent === node.parent);\n\n return currentLevelNode.every((value) => !!state.get(value)) ? true : null;\n }\n }\n\n return result;\n }\n\n private _isSelectedSingle(\n currentNode: ITreeNode<T>,\n state: Map<ITreeNode<T>, boolean | null>\n ): boolean | null {\n const lastNode = this._lastCheckedNode();\n const flattenNodes = treeNodesFlatten<T>(currentNode, this._treeService);\n const isLinkedNode = flattenNodes.some((node) => !!state.get(node));\n\n if (!isLinkedNode || !lastNode) {\n return false;\n }\n\n return lastNode === currentNode ||\n this._isDeepParent(currentNode, lastNode) ||\n this._isDeepChild(currentNode, lastNode)\n ? true\n : null;\n }\n\n private _isDeepParent(parent: ITreeNode<T>, child: ITreeNode<T>): boolean {\n if (!child.parent) {\n return false;\n }\n\n if (parent === child.parent && parent.children!.length === 1) {\n return true;\n }\n\n if (child.parent.children && child.parent.children.length !== 1) {\n return false;\n }\n\n return this._isDeepParent(parent, child.parent);\n }\n\n private _isDeepChild(child: ITreeNode<T>, parent: ITreeNode<T>): boolean {\n if (!parent.children || parent.children.length === 0) {\n return false;\n }\n\n for (const node of parent.children) {\n if (node === child) {\n return true;\n }\n\n if (this._isDeepChild(child, node)) {\n return true;\n }\n }\n\n return false;\n }\n\n protected onToggle(currentNode: ITreeNode<T>): void {\n this._treeService\n .loadChildren(currentNode)\n .pipe(takeUntilDestroyed(this._dr))\n .subscribe((children) => {\n const parent = children?.[0]?.parent;\n\n if (parent && this.checkedNodesState().get(parent)) {\n for (const child of children) {\n this.checkedNodesState().set(child, true);\n }\n }\n });\n }\n\n protected onChecked = (currentNode: ITreeNode<T>, check: boolean) => {\n this._treeService.setLastCheckedNode(check ? currentNode : null);\n const flattenNodes = treeNodesFlatten<T>(currentNode, this._treeService);\n\n if (this.multi()) {\n for (const node of flattenNodes) {\n this.checkedNodesState().set(node, check);\n }\n } else {\n this.checkedNodesState().clear();\n\n for (const node of flattenNodes) {\n this.checkedNodesState().set(node, true);\n }\n }\n\n this._updateCheckedNodes();\n };\n\n private _updateCheckedNodes(options?: { emitEvent: boolean }): void {\n const topLevelNodes = this._treeService.getTopLevelNodes();\n const state = new Map<ITreeNode<T>, boolean | null>();\n this._calcCheckedStateNodes(topLevelNodes, state);\n this.checkedNodesState.set(state);\n\n if (options?.emitEvent !== false) {\n this.selectedNodesChange.emit(this._findFullySelectedNodes(topLevelNodes));\n }\n }\n\n private _findFullySelectedNodes(nodes: ITreeNode<T>[]): ITreeNode<T>[] {\n const fullySelectedNodes: ITreeNode<T>[] = [];\n\n for (const node of nodes) {\n const checked = this.getValue(node, this.checkedNodesState());\n\n if (checked) {\n fullySelectedNodes.push(node);\n } else if (checked === null) {\n const children = this._treeService.getChildren(node);\n const fullySelectedChildren = this._findFullySelectedNodes(children);\n fullySelectedNodes.push(...fullySelectedChildren);\n }\n }\n\n return fullySelectedNodes;\n }\n\n private _calcCheckedStateNodes(\n nodes: ITreeNode<T>[],\n state: Map<ITreeNode<T>, boolean | null>\n ): void {\n for (const node of nodes) {\n const checked = this.getValue(node, this.checkedNodesState());\n\n if (checked !== false) {\n state.set(node, checked);\n const children = this._treeService.getChildren(node);\n this._calcCheckedStateNodes(children, state);\n }\n }\n }\n\n private _tryToSetNodesRecursive(newNodes: ITreeNode<T>[]): void {\n const topLevelNodes = this._treeService.getTopLevelNodes();\n const searchNodesCompleteState = new Map(newNodes.map((newNode) => [newNode, false]));\n const allComplete = (state: Map<ITreeNode<T>, boolean>) => [...state.values()].every(Boolean);\n const analogNodes: ITreeNode<T>[] = [];\n\n from(topLevelNodes)\n .pipe(\n expand((node) =>\n this._treeService.hasChildren(node)\n ? this._treeService.loadChildren(node).pipe(switchMap((children) => from(children)))\n : EMPTY\n ),\n tap((node) => {\n const foundNode = newNodes.find((newNode) => this._treeService.equals(node, newNode));\n\n if (foundNode) {\n searchNodesCompleteState.set(foundNode, true);\n analogNodes.push(node);\n }\n }),\n filter(() => allComplete(searchNodesCompleteState)),\n take(1),\n // eslint-disable-next-line rxjs/no-unsafe-takeuntil\n takeUntil(of(null).pipe(filter(() => allComplete(searchNodesCompleteState)))),\n takeUntilDestroyed(this._dr)\n )\n .subscribe({\n complete: () => {\n for (const node of analogNodes) {\n this.onChecked(node, true);\n }\n },\n });\n }\n}\n","<div class=\"tree-custom-class__container\">\n @for (node of treeNodes$ | async; track node) {\n @if (node === TREE_LOADER) {\n <tui-loader [showLoader]=\"true\" [overlay]=\"true\" size=\"s\"></tui-loader>\n } @else {\n @if (defaultNodeOpenedState() === undefined) {\n <tui-tree\n class=\"tui_tree--not-collapsed\"\n [value]=\"node\"\n [content]=\"contentTemplate\"\n [childrenHandler]=\"childrenHandler\"\n >\n </tui-tree>\n } @else {\n <tui-tree\n [value]=\"node\"\n [content]=\"contentTemplate\"\n [childrenHandler]=\"childrenHandler\"\n [tuiTreeController]=\"!!defaultNodeOpenedState()\"\n [map]=\"openedNodesState()\"\n (toggled)=\"onToggle($event)\"\n >\n </tui-tree>\n }\n }\n }\n</div>\n\n<ng-template #contentTemplate let-node>\n @let isChecked = checkedNodesState().get(node);\n\n @if (node === TREE_LOADER) {\n <tui-loader [showLoader]=\"true\" [overlay]=\"true\" size=\"s\"></tui-loader>\n } @else if (nodeTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplate()\"\n [ngTemplateOutletContext]=\"{ node, isChecked, onChecked }\"\n ></ng-container>\n } @else {\n <label tuiLabel class=\"tree-custom-class__label-checkbox-container\">\n <input\n size=\"s\"\n tuiCheckbox\n type=\"checkbox\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"onChecked(node, $event)\"\n />\n <small>{{ node.name }}</small>\n </label>\n }\n</ng-template>\n","import { Component, effect, inject, Injector, input, signal } from '@angular/core';\nimport { TuiAppearance, TuiHint, TuiIcon, TuiTextfield } from '@taiga-ui/core';\nimport { TUI_TREE_LOADING, TuiChevron, TuiComboBox } from '@taiga-ui/kit';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { ITreeNode } from '../param-tree/types/param-tree.types';\nimport { ParamTreeComponent } from '../param-tree/param-tree.component';\nimport { ParamTreeService } from '../param-tree/services/param-tree.service';\nimport { TREE_LOADING_NODE } from '../param-tree/consts/param-tree.consts';\nimport { FastQueryStore } from '../../../store/fast-query-store.service';\nimport { ParamSelectBase } from '../../../core/param/param-select-base';\nimport { distinctUntilChangedJSONs } from '../../../utils';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport type InputTreeSelectSavedValue<T> = ITreeNode<T> & { [key: string]: any };\n\n/** Компонент выбора единственного значения из иерархического списка */\n@Component({\n selector: 'sproc-param-tree-multi-select',\n standalone: true,\n imports: [\n NgTemplateOutlet,\n TuiIcon,\n TuiHint,\n ReactiveFormsModule,\n TuiTextfieldControllerModule,\n ParamTreeComponent,\n TuiAppearance,\n TuiTextfield,\n TuiChevron,\n TuiComboBox,\n ],\n templateUrl: './param-tree-multi-select.component.html',\n styleUrl: './param-tree-multi-select.component.less',\n providers: [\n ParamTreeService,\n { provide: TUI_TREE_LOADING, useValue: TREE_LOADING_NODE },\n FastQueryStore,\n ],\n})\nexport class ParamTreeMultiSelectComponent<T> extends ParamSelectBase<\n ITreeNode<T>[],\n InputTreeSelectSavedValue<T>[]\n> {\n /** Передача загрузочного узла для загрузки начального уровня иерархического списка */\n public loaderNode = input.required<ITreeNode<T>>();\n /**\n * Возможность раскрывать/скрывать узлы иерархического списка.\n * Логическое значение - это значение узла по умолчанию (раскрыты/скрыты).\n *\n * @default Без указания параметра (или значении null) - все узлы раскрыты без возможности изменять состояние.\n * */\n public defaultNodeOpenedState = input<boolean>();\n public stringify = input<(item: ITreeNode<T>) => string>((item) => String(item.name));\n public shortPickedLength = input(true);\n\n public override readonly buildShowedValue = input(\n (values: ITreeNode[]): string => values?.map((v) => v.name).join(',\\n') ?? '-'\n );\n public override placeholder = input('Выберите значения');\n\n private readonly _treeService = inject(ParamTreeService);\n\n protected readonly checkedNodes = signal<ITreeNode<T>[]>([]);\n\n constructor(injector: Injector) {\n super(injector);\n effect(() => {\n this._treeService.setLoaderNode(this.loaderNode(), this.defaultNodeOpenedState());\n });\n }\n\n protected override afterViewInit(): void {\n this._subscribeForUpdateCheckedNodes();\n }\n\n private _subscribeForUpdateCheckedNodes(): void {\n this.control.valueChanges\n .pipe(distinctUntilChangedJSONs(), takeUntilDestroyed(this.dr))\n .subscribe((value) => {\n this.checkedNodes.set(value ?? []);\n });\n }\n\n protected setSelectedNodes(node: ITreeNode<T>[]): void {\n this.control.setValue(node);\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n @switch (paramStyle) {\n @case ('filter') {\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n }\n @default {\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n }\n }\n }\n <ng-container [ngTemplateOutlet]=\"value ? showedValueTemplate : emptyTemplate\">\n <ng-template #showedValueTemplate>\n @switch (paramStyle) {\n @case ('filter') {\n <pre class=\"value\">{{ showedValue }}</pre>\n }\n @default {\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n }\n }\n </ng-template>\n <ng-template #emptyTemplate>\n <span class=\"value\">-</span>\n </ng-template>\n </ng-container>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n <div class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n @if (hint) {\n <tui-icon\n icon=\"assets/ngx-register-base/icons/circle-info-empty.svg\"\n [tuiHint]=\"hint\"\n class=\"hintIcon\"\n ></tui-icon>\n }\n </div>\n }\n <tui-textfield\n tuiChevron\n tuiTextfieldSize=\"m\"\n tuiAppearance=\"sproc-input-appearance\"\n [stringify]=\"stringify()\"\n [tuiTextfieldCleaner]=\"forceClear\"\n [tuiTextfieldLabelOutside]=\"true\"\n [content]=\"valueContent\"\n >\n <input tuiComboBox [placeholder]=\"placeholder()\" [formControl]=\"control\" />\n <ng-container *tuiTextfieldDropdown [ngTemplateOutlet]=\"paramTreeTemplate\"></ng-container>\n </tui-textfield>\n <ng-template #valueContent let-list>\n {{ shortPickedLength() ? 'Выбрано: ' : null }} {{ list.length }}\n </ng-template>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #paramTreeTemplate>\n <sproc-param-tree\n [multi]=\"true\"\n [checkedNodes]=\"checkedNodes()\"\n (selectedNodesChange)=\"setSelectedNodes($event)\"\n ></sproc-param-tree>\n</ng-template>\n","import { Component, effect, inject, Injector, input, signal } from '@angular/core';\nimport { ParamTreeComponent } from '../param-tree/param-tree.component';\nimport { ITreeNode } from '../param-tree/types/param-tree.types';\nimport { TuiAppearance, TuiDropdown, TuiTextfield } from '@taiga-ui/core';\nimport { TUI_TREE_LOADING, TuiChevron, TuiSelect, } from '@taiga-ui/kit';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TREE_LOADING_NODE } from '../param-tree/consts/param-tree.consts';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ParamTreeService } from '../param-tree/services/param-tree.service';\nimport { FastQueryStore } from '../../../store/fast-query-store.service';\nimport { ParamSelectBase } from '../../../core/param/param-select-base';\nimport { distinctUntilChangedJSONs } from '../../../utils';\n\nexport type InputTreeSelectSavedValue<T> = ITreeNode<T> & { [key: string]: any };\n\n/** Компонент выбора единственного значения из иерархического списка */\n@Component({\n selector: 'sproc-param-tree-select',\n standalone: true,\n imports: [\n ParamTreeComponent,\n TuiTextfield,\n TuiSelect,\n TuiChevron,\n FormsModule,\n TuiDropdown,\n ReactiveFormsModule,\n NgTemplateOutlet,\n TuiAppearance,\n TuiTextfieldControllerModule,\n ],\n templateUrl: './param-tree-select.component.html',\n styleUrl: './param-tree-select.component.less',\n providers: [\n ParamTreeService,\n { provide: TUI_TREE_LOADING, useValue: TREE_LOADING_NODE },\n FastQueryStore,\n ],\n})\nexport class ParamTreeSelectComponent<T> extends ParamSelectBase<\n ITreeNode<T>,\n InputTreeSelectSavedValue<T>\n> {\n /** Передача загрузочного узла для загрузки начального уровня иерархического списка */\n public loaderNode = input.required<ITreeNode<T>>();\n /**\n * Возможность раскрывать/скрывать узлы иерархического списка.\n * Логическое значение - это значение узла по умолчанию (раскрыты/скрыты).\n *\n * @default Без указания параметра (или значении null) - все узлы раскрыты без возможности изменять состояние.\n * */\n public defaultNodeOpenedState = input<boolean>();\n\n public stringify = input<(item: ITreeNode<T>) => string>((item) => String(item.name));\n\n public override buildShowedValue = input((value: ITreeNode<T>): string => value?.name ?? '-');\n public override placeholder = input('Выберите значение');\n\n private readonly _treeService = inject(ParamTreeService);\n\n protected readonly checkedNodes = signal<ITreeNode<T>[]>([]);\n\n constructor(injector: Injector) {\n super(injector);\n effect(() => {\n this._treeService.setLoaderNode(this.loaderNode(), this.defaultNodeOpenedState());\n });\n }\n\n protected override afterViewInit(): void {\n this._subscribeForUpdateCheckedNodes();\n }\n\n private _subscribeForUpdateCheckedNodes(): void {\n this.control.valueChanges\n .pipe(distinctUntilChangedJSONs(), takeUntilDestroyed(this.dr))\n .subscribe((value) => {\n if (value) {\n this.checkedNodes.set([value]);\n } else {\n this.checkedNodes.set([]);\n }\n });\n }\n\n protected setSelectedNodes([node]: ITreeNode<T>[]): void {\n this.control.setValue(node ?? null);\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n @switch (paramStyle) {\n @case ('filter') {\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n }\n @default {\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n }\n }\n }\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n <div class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n </div>\n }\n <tui-textfield\n tuiChevron\n tuiTextfieldSize=\"m\"\n tuiAppearance=\"sproc-input-appearance\"\n [stringify]=\"stringify()\"\n [tuiTextfieldLabelOutside]=\"forceClear\"\n [tuiTextfieldCleaner]=\"true\"\n [tuiDropdownMaxHeight]=\"maxDropdownHeight\"\n >\n <input tuiSelect [placeholder]=\"placeholder()\" [formControl]=\"control\" />\n <ng-container *tuiTextfieldDropdown [ngTemplateOutlet]=\"paramTreeTemplate\"></ng-container>\n </tui-textfield>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #paramTreeTemplate>\n <sproc-param-tree\n [multi]=\"false\"\n [checkedNodes]=\"checkedNodes()\"\n (selectedNodesChange)=\"setSelectedNodes($event)\"\n ></sproc-param-tree>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, output } from '@angular/core';\nimport { TuiIcon } from '@taiga-ui/core';\n\n@Component({\n selector: 'sproc-param-delete-content-button',\n standalone: true,\n imports: [TuiIcon],\n templateUrl: './param-delete-content-btn.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamDeleteContentBtnComponent {\n readonly iconClicked = output<void>();\n}\n","<tui-icon\n class=\"cleaner-icon\"\n (click)=\"iconClicked.emit()\"\n icon=\"assets/ngx-register-base/icons/delete-content.svg\"\n></tui-icon>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ParamSelectComponent } from './param-select/param-select.component';\nimport { ParamMultiSelectComponent } from './param-multi-select/param-multi-select.component';\nimport { ParamDateRangeComponent } from './param-date-range/param-date-range.component';\nimport { ParamMonthComponent } from './param-month/param-month.component';\nimport { ParamMonthRangeComponent } from './param-month-range/param-month-range.component';\nimport { ParamToggleComponent } from './param-toggle/param-toggle.component';\nimport { ParamTextComponent } from './param-text/param-text.component';\nimport { ParamDateTimeRangeComponent } from './param-date-time-range/param-date-time-range.component';\nimport { ParamCustomComponent } from './param-custom/param-custom.component';\nimport { ParamSwitcherComponent } from './param-switcher/param-switcher.component';\nimport { ParamDateComponent } from './param-date/param-date.component';\nimport { ParamSwitcherDateTimeRangeComponent } from './param-switcher-date-time-range/param-switcher-date-time-range.component';\nimport { ParamDateTimeComponent } from './param-date-time/param-date-time.component';\nimport {\n TuiAppearance,\n TuiButton,\n TuiIcon,\n TuiTextfieldComponent,\n TuiTextfieldDirective,\n TuiTextfieldDropdownDirective,\n TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core';\nimport { TuiInputModule, TuiInputYearModule, TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport {\n TuiChevron,\n TuiDataListWrapperComponent,\n TuiFilterByInputPipe,\n TuiSelectDirective,\n TuiSwitch,\n} from '@taiga-ui/kit';\nimport { TuiInputSearch } from '@taiga-ui/layout';\nimport { ParamTextareaComponent } from './param-textarea/param-textarea.component';\nimport { ParamCalendarYearComponent } from './param-calendar-year/param-calendar-year.component';\nimport { FormatDatePipe } from '../../directives/date/format-date.pipe';\nimport { PrizmSharedModule } from '../../utils/prizm.shared.module';\nimport { PrizmInputMultiSelectModule } from '@prizm-ui/components';\nimport { ParamDeleteContentBtnComponent } from './sub-components/param-delete-content-icon/param-delete-content-btn.component';\nimport { ParamInvalidIconComponent } from './sub-components/param-invalid-icon/param-invalid-icon.component';\n\n@NgModule({\n declarations: [\n ParamDateRangeComponent,\n ParamDateTimeComponent,\n ParamMonthComponent,\n ParamMonthRangeComponent,\n ParamToggleComponent,\n ParamDateTimeRangeComponent,\n ParamCustomComponent,\n ParamSwitcherComponent,\n ParamSwitcherDateTimeRangeComponent,\n ParamSwitcherDateTimeRangeComponent,\n ParamCalendarYearComponent,\n ],\n imports: [\n CommonModule,\n ParamTextComponent,\n PrizmSharedModule,\n PrizmInputMultiSelectModule,\n TuiTextfieldComponent,\n TuiTextfieldDirective,\n TuiTextfieldOptionsDirective,\n TuiAppearance,\n TuiInputModule,\n TuiTextfieldControllerModule,\n TuiIcon,\n TuiButton,\n TuiChevron,\n TuiSelectDirective,\n TuiDataListWrapperComponent,\n TuiTextfieldDropdownDirective,\n TuiFilterByInputPipe,\n TuiInputSearch,\n ParamMultiSelectComponent,\n ParamSelectComponent,\n ParamDateComponent,\n TuiSwitch,\n ParamTextareaComponent,\n TuiInputYearModule,\n FormatDatePipe,\n ParamDeleteContentBtnComponent,\n ParamInvalidIconComponent,\n ],\n exports: [\n ParamSelectComponent,\n ParamMultiSelectComponent,\n ParamDateRangeComponent,\n ParamDateTimeComponent,\n ParamMonthComponent,\n ParamMonthRangeComponent,\n ParamToggleComponent,\n ParamTextComponent,\n ParamDateTimeRangeComponent,\n ParamCustomComponent,\n ParamSwitcherComponent,\n ParamDateComponent,\n ParamSwitcherDateTimeRangeComponent,\n ParamSwitcherDateTimeRangeComponent,\n ParamTextareaComponent,\n ParamCalendarYearComponent,\n ],\n})\nexport class InputsModule {}\n","import { ScalarUUID } from 'hasura';\nimport { IClsMenuItem } from '../../page-menu';\n\nexport interface FlatNode {\n id: ScalarUUID;\n id_parent: ScalarUUID | null;\n title: string;\n code: string;\n route: string;\n icon: string;\n order_num: number;\n allowed_roles: string | null;\n depth: number;\n collapsed?: boolean;\n}\n\nexport const ROOT_TITLE = 'root';\n\nexport const NEW_ITEM_PREFIX = 'NEW_';\n\nexport const MIGRATION_HINT =\n 'Генерирует SQL код для миграции таблицы cls_menu_item. Генерация кода происходит на основе последней версии сохраненного меню.';\n\nexport interface IClsMenuItemResponse {\n usr_cls_menu_item: IClsMenuItem[];\n}\n\nexport type AlertAppearance = 'info' | 'negative' | 'warning' | 'positive' | 'neutral';\n\nexport interface IClsMenuItemInput {\n title: string | null;\n route: string | null;\n code: string | null;\n icon: string | null;\n order_num: number;\n allowed_roles: string[] | null;\n id_parent: ScalarUUID | null;\n}\n\nexport interface IMenuConstructorError {\n label: string;\n content: any;\n appearance: AlertAppearance;\n}\n\nexport const EMPTY_UUID = '00000000-0000-0000-0000-000000000000';\n","import { InjectionToken } from '@angular/core';\nimport { SprocAbstractMenuConstructorStore } from './sproc-abstract-menu-constructor.store';\n\nexport const MENU_CONSTRUCTOR_STORE_TOKEN = new InjectionToken<SprocAbstractMenuConstructorStore>(\n 'MENU_CONSTRUCTOR_STORE_TOKEN',\n);\n","import { Component, computed, DestroyRef, inject, OnInit, output, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n CdkDrag,\n CdkDragDrop,\n CdkDragHandle,\n CdkDragPreview,\n CdkDropList,\n} from '@angular/cdk/drag-drop';\nimport { AsyncPipe, NgForOf } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { filter } from 'rxjs';\nimport { SprocAbstractMenuConstructorStore } from './store/sproc-abstract-menu-constructor.store';\nimport {\n EMPTY_UUID,\n FlatNode,\n IClsMenuItemInput,\n IMenuConstructorError,\n MIGRATION_HINT,\n NEW_ITEM_PREFIX,\n ROOT_TITLE,\n} from './store/sproc-menu-constructor.consts';\nimport { IClsMenuItem } from '../page-menu';\nimport { MENU_CONSTRUCTOR_STORE_TOKEN } from './store/sproc-menu.tokens';\n\n@Component({\n standalone: true,\n selector: 'sproc-menu-constructor',\n templateUrl: './sproc-menu-constructor.component.html',\n styleUrls: ['./sproc-menu-constructor.component.less'],\n imports: [CdkDrag, CdkDropList, NgForOf, FormsModule, CdkDragPreview, CdkDragHandle, AsyncPipe],\n})\nexport class SprocMenuConstructorComponent implements OnInit {\n private _store = inject(MENU_CONSTRUCTOR_STORE_TOKEN);\n private _ref = inject(DestroyRef);\n\n protected ROOT_TITLE = ROOT_TITLE;\n protected loading$ = this._store.loading$;\n protected originalTree: Map<string, FlatNode> = new Map([]);\n protected MIGRATION_HINT = MIGRATION_HINT;\n private deletedIds: string[] = [];\n\n public errorMsgOutput = output<IMenuConstructorError>();\n\n // плоское представление иерархического меню\n protected flatTree = signal<FlatNode[]>([]);\n\n // ветка элементов, которая перетаскивается\n protected draggedBranch = signal<FlatNode[]>([]);\n\n // вычисляемое свойство, возвращающее только видимые (не свернутые) элементы\n protected visibleFlatTree = computed<FlatNode[]>(() => {\n const flatTree = this.flatTree();\n return this._getVisibleFrom(flatTree);\n });\n\n private _pendingRecalc = false;\n\n ngOnInit(): void {\n this._store.menuItems$\n .pipe(\n filter((arr) => Array.isArray(arr) && arr.length > 0),\n takeUntilDestroyed(this._ref)\n )\n .subscribe((value) => {\n this.flatTree.set(this._convertToFlatNode(value));\n this.originalTree = new Map(this.flatTree().map((item) => [item.id, { ...item }]));\n });\n }\n\n /**\n * Переключает состояние свернутости узла (collapse/expand)\n * После изменения создает новый массив для триггера обновления сигнала\n */\n protected toggleCollapse(node: FlatNode): void {\n node.collapsed = !node.collapsed;\n this.flatTree.set([...this.flatTree()]);\n }\n\n /**\n * Начало перетаскивания: сохраняет всю ветку узла, которую тянут\n */\n protected dragStarted(node: FlatNode): void {\n const branch = this._collectBranch(this.flatTree(), node);\n this.draggedBranch.set(branch);\n }\n\n /**\n * Завершение перетаскивания: очищает информацию о текущей ветке\n */\n protected dragEnded(): void {\n this.draggedBranch.set([]);\n }\n\n /**\n * Основная логика drag&drop при отпускании элемента\n * Определяет новую позицию узла, пересчитывает глубины и связи\n */\n protected drop(event: CdkDragDrop<FlatNode[]>): void {\n const before = [...this.flatTree()];\n const visibleBefore = this._getVisibleFrom(before);\n const prevIdx = event.previousIndex;\n const currIdx = event.currentIndex;\n\n // Получает перетаскиваемый элемент из списка видимых\n const draggedVisible = visibleBefore[prevIdx];\n if (!draggedVisible) {\n return;\n }\n\n // Находит индекс узла в полном массиве\n const start = before.findIndex((n) => n.id === draggedVisible.id);\n if (start < 0) {\n return;\n }\n\n // Собирает всю ветку, начинающуюся с перетаскиваемого узла\n const branch = this._collectBranch(before, before[start]);\n const branchIds = new Set(branch.map((n) => n.id));\n\n // Убирает ветку из исходного списка\n const full = before.filter((n) => !branchIds.has(n.id));\n\n // Определяет видимые элементы после удаления ветки\n const visible = this._getVisibleFrom(full);\n const prevVisible = visible[currIdx - 1] ?? null;\n const nextVisible = visible[currIdx] ?? null;\n\n // Индекс вставки ветки в новый список\n const insert = nextVisible ? full.findIndex((n) => n.id === nextVisible.id) : full.length;\n\n // Рассчитывает глубину вставляемой ветки в зависимости от соседей\n let targetDepth;\n if (prevVisible && nextVisible) {\n targetDepth =\n prevVisible.depth < nextVisible.depth ? prevVisible.depth + 1 : nextVisible.depth;\n } else if (prevVisible && !nextVisible) {\n targetDepth = prevVisible.depth;\n } else if (!prevVisible && nextVisible) {\n targetDepth = nextVisible.depth;\n } else {\n targetDepth = 0;\n }\n\n // Вставляет ветку в новое место\n full.splice(insert, 0, ...branch);\n // Сдвигает глубину всей ветки\n this._applyDepthShift(branch, targetDepth - branch[0].depth);\n\n // Планирует пересчет структуры дерева\n this._scheduleRecalc(full);\n }\n\n /**\n * Увеличивает глубину (depth) конкретного узла, если возможно\n */\n protected indent(node: FlatNode): void {\n const arr = [...this.flatTree()];\n const index = arr.indexOf(node);\n if (index === -1) {\n return;\n }\n\n const proposedDepth = node.depth + 1;\n // Ищет подходящего родителя с нужной глубиной\n const parentCandidate = [...arr]\n .slice(0, index)\n .reverse()\n .find((n) => n.depth === proposedDepth - 1);\n\n if (!parentCandidate) {\n return;\n }\n\n node.depth = proposedDepth;\n this._scheduleRecalc(arr);\n }\n\n /**\n * Уменьшает глубину (depth) узла + по возможности превращает его в родителя\n */\n protected outdent(node: FlatNode): void {\n const arr = [...this.flatTree()];\n const index = arr.indexOf(node);\n if (index === -1 || node.depth <= 0) {\n return;\n }\n node.depth = Math.max(0, node.depth - 1);\n this._scheduleRecalc(arr);\n }\n\n /**\n * Увеличивает глубину всей ветки узла (вместе с потомками)\n */\n protected indentBranch(node: FlatNode): void {\n const arr = [...this.flatTree()];\n const index = arr.indexOf(node);\n if (index === -1) {\n return;\n }\n const proposedDepth = node.depth + 1;\n const parentCandidate = [...arr]\n .slice(0, index)\n .reverse()\n .find((n) => n.depth === proposedDepth - 1);\n\n if (!parentCandidate) {\n return;\n }\n\n const branch = this._collectBranch(arr, node);\n this._applyDepthShift(branch, 1);\n\n this._scheduleRecalc(arr);\n }\n\n /**\n * Уменьшает глубину всей ветки узла\n */\n protected outdentBranch(node: FlatNode): void {\n const arr = [...this.flatTree()];\n const branch = this._collectBranch(arr, node);\n this._applyDepthShift(branch, -1);\n this._scheduleRecalc(arr);\n }\n\n /**\n * Проверяет, есть ли у узла дочерние элементы\n */\n protected hasChildren(node: FlatNode): boolean {\n const arr = this.flatTree();\n const idx = arr.indexOf(node);\n if (idx === -1) {\n return false;\n }\n for (let i = idx + 1; i < arr.length; i++) {\n const next = arr[i];\n if (next.depth <= node.depth) {\n break;\n }\n if (next.depth === node.depth + 1) {\n return true;\n }\n }\n return false;\n }\n\n protected save(): void {\n // Флаг для логгирования на время отладки\n const logging = false;\n\n const changedElements = this.flatTree().filter((newItem) => {\n const originalItem = this.originalTree.get(newItem.id);\n\n // Новый элемент\n if (!originalItem) {\n if (logging) {\n console.log(`Новый элемент ${newItem.title}`);\n }\n\n return true;\n }\n\n const {\n order_num: originalOrderNum,\n id_parent: originalIdParent,\n title: originalTitle,\n allowed_roles: originalRoles,\n code: originalCode,\n route: originalRoute,\n icon: originalIcon,\n } = originalItem;\n\n const {\n order_num: newOrderNum,\n id_parent: newIdParent,\n title: newTitle,\n allowed_roles: newRoles,\n code: newCode,\n route: newRoute,\n icon: newIcon,\n } = newItem;\n\n const changedFields: string[] = [];\n\n if (originalOrderNum !== newOrderNum) {\n changedFields.push(`order_num: ${originalOrderNum} → ${newOrderNum}`);\n }\n if (originalIdParent !== newIdParent) {\n changedFields.push(`id_parent: ${originalIdParent} → ${newIdParent}`);\n }\n if (originalTitle !== newTitle) {\n changedFields.push(`title: ${originalTitle} → ${newTitle}`);\n }\n if (originalCode !== newCode) {\n changedFields.push(`code: ${originalCode} → ${newCode}`);\n }\n if (originalRoute !== newRoute) {\n changedFields.push(`route: ${originalRoute} → ${newRoute}`);\n }\n if (originalIcon !== newIcon) {\n changedFields.push(`icon: ${originalIcon} → ${newIcon}`);\n }\n if (JSON.stringify(originalRoles) !== JSON.stringify(newRoles)) {\n changedFields.push(`allowed_roles: ${originalRoles} → ${newRoles}`);\n }\n\n return changedFields.length > 0;\n });\n\n const isBlank = (s: unknown): boolean => typeof s !== 'string' || s.trim() === '';\n\n const isRouteValid = ({ route, code }: FlatNode): boolean => {\n // route считается заданным, только если это непустая строка\n const hasRoute = route.trim() !== '';\n\n return !hasRoute || route === code;\n };\n\n const invalidCodeTitles: string[] = [];\n const invalidRouteTitles: FlatNode[] = [];\n\n for (const el of changedElements) {\n if (isBlank(el.code)) {\n invalidCodeTitles.push(el.title ?? '(без названия)');\n }\n\n if (!isRouteValid(el)) {\n invalidRouteTitles.push(el);\n }\n }\n\n if (invalidCodeTitles.length > 0) {\n this.errorMsgOutput.emit({\n label: 'Конструктор меню',\n appearance: 'negative',\n // eslint-disable-next-line xss/no-mixed-html\n content: `Все поля code должны быть заполнены. </br>\n Исправьте следующие поля: </br>\n ${invalidCodeTitles.map((t) => `- ${t}`).join('</br>')}\n `,\n });\n\n return;\n }\n\n if (invalidRouteTitles.length > 0) {\n this.errorMsgOutput.emit({\n label: 'Конструктор меню',\n appearance: 'negative',\n // eslint-disable-next-line xss/no-mixed-html\n content: `Все поля code должны быть равны полю route. </br>\n Исправьте следующие поля: </br>\n ${invalidRouteTitles.map((t) => `- ${t.title} (${t.code} | ${t.route})`).join('</br>')}\n `,\n });\n\n return;\n }\n\n const elRoute = (route: string): string | null => (route === '' ? null : route);\n\n const normalizeElement = (el: FlatNode): IClsMenuItemInput => ({\n title: el.title.trim(),\n route: elRoute(el.route.trim()),\n code: el.code,\n icon: el.icon,\n order_num: el.order_num,\n allowed_roles: el.allowed_roles\n ? el.allowed_roles.split(',').map((value) => value.trim())\n : null,\n id_parent: el.id_parent,\n });\n\n const objectsToSave = changedElements\n .filter(({ id }) => !id.includes(NEW_ITEM_PREFIX))\n .map((el) => ({\n _set: normalizeElement(el),\n where: { id: { _eq: el.id } },\n }));\n\n const objectsToInsert = changedElements\n .filter(({ id }) => id.includes(NEW_ITEM_PREFIX))\n .map((element) => {\n element.id = EMPTY_UUID;\n\n return normalizeElement(element);\n });\n\n const objectsToDelete = [...this.deletedIds];\n\n if (logging) {\n console.log(`Измененные элементы`, objectsToSave);\n console.log(`Новые элементы`, objectsToInsert);\n console.log('Удалённые элементы:', objectsToDelete);\n }\n\n this._store.updateMenu(objectsToSave, objectsToInsert, objectsToDelete);\n\n this.deletedIds = [];\n }\n\n protected handleFold(state: boolean): void {\n for (const element of this.flatTree()) {\n if (element.title !== ROOT_TITLE) {\n element.collapsed = state;\n }\n }\n\n this.flatTree.set([...this.flatTree()]);\n }\n\n /**\n * Удаляет один элемент из дерева.\n * Потомки становятся дочерними элементами родителя удалённого узла.\n */\n protected deleteItem(node: FlatNode): void {\n const arr = [...this.flatTree()];\n const index = arr.indexOf(node);\n if (index === -1) {\n return;\n }\n\n const parentId = node.id_parent;\n const nodeDepth = node.depth;\n\n // Находим потомков, которые были напрямую под этим узлом\n for (let i = index + 1; i < arr.length; i++) {\n const next = arr[i];\n if (next.depth <= nodeDepth) {\n break;\n }\n if (next.depth === nodeDepth + 1) {\n // потомок становится ребёнком родителя удалённого узла\n next.id_parent = parentId ?? null;\n next.depth = nodeDepth; // поднимаем на один уровень вверх\n } else if (next.depth > nodeDepth + 1) {\n // поднимаем остальные на один уровень вверх\n next.depth -= 1;\n }\n }\n\n // Удаляем сам элемент\n arr.splice(index, 1);\n\n // Если id не временный — добавляем в список на удаление\n if (!node.id.includes(NEW_ITEM_PREFIX)) {\n this.deletedIds.push(node.id);\n }\n\n this._scheduleRecalc(arr);\n }\n\n /**\n * Добавляет новый элемент в дерево.\n * По умолчанию он создаётся как дочерний элемент root.\n */\n protected addNewItem(): void {\n const arr = [...this.flatTree()];\n\n const rootNode = arr.find((n) => n.title === this.ROOT_TITLE);\n\n if (!rootNode) {\n console.error('Root элемент не найден. Новый пункт не может быть добавлен.');\n return;\n }\n\n const newNode: FlatNode = {\n id: `${NEW_ITEM_PREFIX}${crypto.randomUUID()}`,\n id_parent: rootNode.id,\n title: 'Новый пункт меню',\n route: '',\n icon: '',\n order_num: 1,\n allowed_roles: null,\n collapsed: true,\n code: '',\n depth: rootNode.depth + 1,\n };\n\n const insertIndex = arr.findIndex((n) => n.id === rootNode.id) + 1;\n arr.splice(insertIndex, 0, newNode);\n\n this._scheduleRecalc(arr);\n }\n\n /**\n * Сбрасывает текущее состояние в исходное\n */\n protected reset(): void {\n const originalMenu = structuredClone(this._store.originalMenu);\n this.flatTree.set(this._convertToFlatNode(originalMenu));\n this.deletedIds = [];\n }\n\n /**\n * Проверяет, находится ли элемент в текущей перетаскиваемой ветке\n */\n protected isDragged(node: FlatNode): boolean {\n return this.draggedBranch().some((n) => n.id === node.id);\n }\n\n /**\n * Собирает всю ветку элементов начиная с указанного узла (включая потомков)\n */\n private _collectBranch(arr: FlatNode[], root: FlatNode): FlatNode[] {\n const start = arr.indexOf(root);\n if (start < 0) {\n return [];\n }\n const branch: FlatNode[] = [{ ...root }];\n for (let i = start + 1; i < arr.length; i++) {\n const n = arr[i];\n if (n.depth > root.depth) {\n branch.push(n);\n } else {\n break;\n }\n }\n return branch;\n }\n\n /**\n * Сдвигает глубину всех элементов ветки на указанную разницу\n * Не допускает отрицательных глубин\n */\n private _applyDepthShift(branch: FlatNode[], diff: number): void {\n if (diff === 0) {\n return;\n }\n for (const n of branch) {\n n.depth = Math.max(0, n.depth + diff);\n }\n }\n\n /**\n * Преобразует иерархический JSON в плоский массив FlatNode[]\n * Сохраняет порядок элементов и их вложенность\n */\n private _convertToFlatNode(data: IClsMenuItem[]): FlatNode[] {\n // Глубокая копия, чтобы не портить оригинал\n const cloned = structuredClone(data);\n\n const map = new Map<string, IClsMenuItem>();\n const roots: IClsMenuItem[] = [];\n\n for (const item of cloned) {\n map.set(item.id, item);\n }\n\n for (const item of cloned) {\n if (item.id_parent && map.has(item.id_parent)) {\n const parent = map.get(item.id_parent)!;\n if (!parent.children) {\n parent.children = [];\n }\n parent.children.push(item);\n } else {\n roots.push(item);\n }\n }\n\n const flat: FlatNode[] = [];\n const walk = (node: IClsMenuItem, depth: number): void => {\n flat.push({\n id: node.id,\n id_parent: node.id_parent,\n title: node.title ?? '',\n route: node.route ?? '',\n icon: node.icon ?? '',\n order_num: node.order_num ?? 0,\n allowed_roles: node.allowed_roles?.join(',') ?? null,\n collapsed: node.title !== ROOT_TITLE,\n code: node.code ?? '',\n depth,\n });\n\n if (node.children?.length) {\n const sortedChildren = [...node.children].sort(\n (a, b) => (a.order_num ?? 0) - (b.order_num ?? 0)\n );\n for (const child of sortedChildren) {\n walk(child, depth + 1);\n }\n }\n };\n\n const sortedRoots = [...roots].sort((a, b) => (a.order_num ?? 0) - (b.order_num ?? 0));\n for (const root of sortedRoots) {\n walk(root, 0);\n }\n\n return flat;\n }\n\n /**\n * Возвращает список видимых элементов на основе флагов collapsed\n * Использует стек для отслеживания свернутости на каждом уровне\n */\n private _getVisibleFrom(arr: FlatNode[] | (() => FlatNode[])): FlatNode[] {\n const source = typeof arr === 'function' ? arr() : arr;\n const out: FlatNode[] = [];\n const collapsedStack: boolean[] = [];\n\n for (const n of source) {\n while (collapsedStack.length > n.depth) {\n collapsedStack.pop();\n }\n\n if (!collapsedStack.includes(true)) {\n out.push(n);\n collapsedStack[n.depth] = !!n.collapsed;\n }\n }\n\n return out;\n }\n\n /**\n * Пересчитывает order_num и id_parent у всех элементов массива\n * После перемещений поддерживает корректную структуру дерева\n * order_num назначается относительно родителя (1..N)\n */\n private _recalculateTree(arr: FlatNode[]): void {\n const parents: FlatNode[] = [];\n const childCounters = new Map<string | null, number>();\n\n for (const node of arr) {\n while (parents.length > 0 && parents[parents.length - 1].depth >= node.depth) {\n parents.pop();\n }\n\n const parent = parents.length > 0 ? parents[parents.length - 1] : null;\n node.id_parent = parent ? parent.id : null;\n\n // вычисляем порядковый номер среди братьев\n if (node.title !== ROOT_TITLE) {\n const parentId = node.id_parent ?? null;\n const currentCount = childCounters.get(parentId) ?? 1;\n node.order_num = currentCount;\n childCounters.set(parentId, currentCount + 1);\n }\n\n parents.push(node);\n }\n }\n\n /**\n * Асинхронно планирует пересчет дерева через requestAnimationFrame\n * Это предотвращает множественные лишние пересчеты при частых изменениях\n */\n private _scheduleRecalc(arr: FlatNode[]): void {\n if (this._pendingRecalc) {\n return;\n }\n\n this._pendingRecalc = true;\n requestAnimationFrame(() => {\n this._recalculateTree([...arr]);\n const current = this.flatTree();\n if (!this._arraysEqual(current, arr)) {\n this.flatTree.set([...arr]);\n }\n this._pendingRecalc = false;\n });\n }\n\n /**\n * Проверяет равенство двух массивов FlatNode по ключевым свойствам\n */\n private _arraysEqual(a: FlatNode[], b: FlatNode[]): boolean {\n if (a.length !== b.length) {\n return false;\n }\n for (const [i, element] of a.entries()) {\n if (\n element.id !== b[i].id ||\n element.depth !== b[i].depth ||\n element.order_num !== b[i].order_num\n ) {\n return false;\n }\n }\n\n return true;\n }\n}\n","<div class=\"menu-constructor\">\n <div class=\"pane editor\">\n <div class=\"pane-header\">\n <h2>Редактор меню</h2>\n <div class=\"buttons\">\n <button [disabled]=\"$any(loading$ | async)\" class=\"btn secondary\" (click)=\"addNewItem()\">\n +\n </button>\n <button [disabled]=\"$any(loading$ | async)\" class=\"btn secondary\" (click)=\"reset()\">\n Сбросить\n </button>\n <button [disabled]=\"$any(loading$ | async)\" class=\"btn primary\" (click)=\"save()\">\n Сохранить\n </button>\n <button [disabled]=\"$any(loading$ | async)\" class=\"btn primary\" (click)=\"handleFold(false)\">\n Раскрыть все элементы\n </button>\n <button [disabled]=\"$any(loading$ | async)\" class=\"btn primary\" (click)=\"handleFold(true)\">\n Скрыть все элементы\n </button>\n </div>\n </div>\n\n <div\n class=\"list-wrapper\"\n cdkDropList\n [cdkDropListData]=\"visibleFlatTree()\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListLockAxis]=\"'y'\"\n >\n @for (node of visibleFlatTree(); track node.id + '-' + node.order_num) {\n <div\n class=\"node\"\n [style.marginLeft.px]=\"node.depth * 24\"\n [class.dragged]=\"isDragged(node)\"\n cdkDrag\n (cdkDragStarted)=\"dragStarted(node)\"\n (cdkDragEnded)=\"dragEnded()\"\n >\n <div class=\"node-bar\" cdkDragHandle>\n @if (hasChildren(node)) {\n <button\n class=\"collapse-btn\"\n (click)=\"toggleCollapse(node); $event.stopPropagation()\"\n [title]=\"node.collapsed ? 'Развернуть' : 'Свернуть'\"\n >\n {{ node.collapsed ? '▶' : '▼' }}\n </button>\n }\n\n @if (node.title === ROOT_TITLE) {\n <span class=\"root-title\">Корневой элемент</span>\n } @else {\n <div class=\"left-control\">\n <span class=\"grip\">⋮⋮</span>\n <input class=\"inp title\" [(ngModel)]=\"node.title\" placeholder=\"Название\" />\n <input\n class=\"inp code\"\n [required]=\"true\"\n [(ngModel)]=\"node.code\"\n placeholder=\"code\"\n />\n <input class=\"inp route\" [(ngModel)]=\"node.route\" placeholder=\"route\" />\n <input class=\"inp icon\" [(ngModel)]=\"node.icon\" placeholder=\"icon\" />\n <input class=\"inp roles\" [(ngModel)]=\"node.allowed_roles\" placeholder=\"Роли\" />\n </div>\n\n <div class=\"depth-controls\">\n <button class=\"btn small\" (click)=\"outdent(node)\">←</button>\n <button class=\"btn small\" (click)=\"indent(node)\">→</button>\n @if (hasChildren(node)) {\n <button class=\"btn small\" (click)=\"outdentBranch(node)\">⇐</button>\n <button class=\"btn small\" (click)=\"indentBranch(node)\">⇒</button>\n }\n <button class=\"btn small\" (click)=\"deleteItem(node)\">Удалить</button>\n </div>\n }\n </div>\n\n <ng-template cdkDragPreview>\n <div class=\"drag-branch-preview\">\n <div\n class=\"preview-bar\"\n *ngFor=\"let n of draggedBranch()\"\n [style.marginLeft.px]=\"(n.depth - node.depth) * 20\"\n >\n {{ n.title }}\n </div>\n </div>\n </ng-template>\n </div>\n }\n </div>\n </div>\n</div>\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { IClsMenuItemInput } from './sproc-menu-constructor.consts';\nimport { IClsMenuItem } from '../../page-menu';\nimport { Apollo } from 'apollo-angular';\nimport { DestroyRef, Injectable } from '@angular/core';\nimport { ScalarUUID } from 'hasura';\n\nexport abstract class SprocAbstractMenuConstructorStore {\n protected abstract _menuItems$: BehaviorSubject<IClsMenuItem[]>;\n protected abstract _loading$: BehaviorSubject<boolean>;\n protected abstract _apollo: Apollo;\n protected abstract _dr: DestroyRef;\n\n public abstract menuItems$: Observable<IClsMenuItem[]>;\n public abstract loading$: Observable<boolean>;\n public abstract originalMenu: IClsMenuItem[];\n\n public abstract getMenu(): IClsMenuItem[];\n\n public abstract updateMenu(\n objectsToUpdate: {\n _set: IClsMenuItemInput;\n where: { [key: string]: any };\n }[],\n objectsToInsert?: IClsMenuItemInput[],\n idsToDelete?: ScalarUUID[]\n ): void;\n\n protected abstract setLoading(state: boolean): void;\n\n protected abstract _fetchMenu(): void;\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[cellTemplateName]',\n standalone: true,\n})\nexport class CellTemplateDirective {\n @Input() cellTemplateName!: string;\n\n constructor(public tpl: TemplateRef<any>) {}\n}\n","import { OrderBy, WhereBoolExp } from 'hasura';\n\nexport type ColumnDataTypes = 'text' | 'num' | 'checkbox' | 'icon' | 'iconSvg' | 'empty' | 'date';\n\nexport enum EColumnDataType {\n TEXT = 'text',\n NUM = 'num',\n CHECKBOX = 'checkbox',\n ICON = 'icon',\n ICON_SVG = 'iconSvg',\n DATE = 'date',\n}\n\nexport interface IColumnData {\n name: string;\n type: EColumnDataType | ColumnDataTypes;\n value?: string;\n width?: string;\n isHeadTemplate?: boolean;\n isTemplate?: boolean;\n sortable?: boolean;\n tooltipText?: string;\n textStyle?: Record<string, string>;\n rowspan?: number;\n colspan?: number;\n children?: IColumnData[];\n datePattern?: string;\n numberPipe?: string;\n svgSrc?: string;\n isCell?: boolean;\n class?: string;\n classTd?: string;\n isLoading?: boolean;\n postfix?: string;\n fixed?: boolean;\n headerStyle?: string;\n}\n\nexport type ThWidthEntry = Pick<IColumnData, 'name' | 'width'>;\n\nexport interface IHasuraQueryFilter<T extends Record<string, any>> {\n where?: WhereBoolExp<T>;\n distinct_on?: (keyof T)[];\n limit?: number;\n offset?: number;\n order_by?: OrderBy<T>;\n}\n\nexport type RegisterTableSortOptions = {\n order: RegisterTableCellSortOrder;\n id: string;\n};\nexport type RegisterTableCellSorterHandler<T> = (\n a: T,\n b: T,\n options: RegisterTableSortOptions\n) => number;\nexport type RegisterTableCellSorter<T> = {\n options: RegisterTableSortOptions;\n sorter?: RegisterTableCellSorterHandler<T>;\n};\nexport type RegisterTableCellSortOrder = 'asc' | 'desc';\n","import { ElementRef, Injectable } from '@angular/core';\nimport { Observable, distinctUntilChanged, map, mergeMap } from 'rxjs';\n\n@Injectable()\nexport class DomIntersectionService {\n createAndObserve(element: ElementRef): Observable<boolean> {\n return new Observable<IntersectionObserverEntry[]>((observer) => {\n const intersectionObserver = new IntersectionObserver((entries) => {\n observer.next(entries);\n });\n\n intersectionObserver.observe(element.nativeElement);\n\n return () => {\n intersectionObserver.disconnect();\n };\n }).pipe(\n mergeMap((entries: IntersectionObserverEntry[]) => entries),\n map((entry) => entry.isIntersecting),\n distinctUntilChanged()\n );\n }\n}\n","import { Directive, input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[headerTemplateName]',\n standalone: true,\n})\nexport class HeaderTemplateDirective {\n public headerTemplateName = input.required<string>();\n\n constructor(public tpl: TemplateRef<any>) {}\n}\n","import { inject, Injectable, InjectionToken, OnDestroy } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nexport const KEY_PRESSED = new InjectionToken<string>('KEY_PRESSED_TOKEN');\n\n@Injectable()\nexport class KeyPressedService implements OnDestroy {\n private _keyName = inject(KEY_PRESSED);\n\n private readonly _isPressed$ = new BehaviorSubject(false);\n\n public readonly isPressed$ = this._isPressed$.asObservable();\n\n constructor() {\n window.addEventListener('keydown', this._keydownListener);\n window.addEventListener('keyup', this._keyupListener);\n }\n\n public isPressed(): boolean {\n return this._isPressed$.getValue();\n }\n\n public ngOnDestroy(): void {\n this._isPressed$.complete();\n window.removeEventListener('keydown', this._keydownListener);\n window.removeEventListener('keyup', this._keyupListener);\n }\n\n private readonly _keydownListener = (event: KeyboardEvent) => {\n if (event.key === this._keyName) {\n this._isPressed$.next(true);\n }\n };\n\n private readonly _keyupListener = (event: KeyboardEvent) => {\n if (event.key === this._keyName) {\n this._isPressed$.next(false);\n }\n };\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ColumnDataTypes, EColumnDataType } from '../model/schema';\n\n@Pipe({\n name: 'classByType',\n standalone: true,\n})\nexport class ClassByTypePipe implements PipeTransform {\n transform(type: ColumnDataTypes | EColumnDataType, element: 'th' | 'td' = 'th'): string {\n let classNamePostfix = 'text';\n\n if (element === 'td') {\n if (type === EColumnDataType.CHECKBOX) {\n classNamePostfix = 'checkbox';\n } else if (type === EColumnDataType.NUM) {\n classNamePostfix = 'num';\n } else if (type === EColumnDataType.DATE) {\n classNamePostfix = 'date';\n }\n }\n\n if (type === EColumnDataType.ICON || type === EColumnDataType.ICON_SVG) {\n classNamePostfix = 'icon';\n }\n\n return `register-table__cell-${classNamePostfix}`;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'stickyColumn',\n standalone: true,\n})\nexport class StickyColumnPipe implements PipeTransform {\n transform(value: string, array: string[] | undefined): boolean {\n return array?.includes(value) ?? false;\n }\n}\n","export const CHECKBOX_SELECTOR_KEY = 'checkbox-selector';\nexport const CHECKBOX_SELECTOR_WIDTH_PX = 32;\nexport const MIN_COL_WIDTH_PX = 8;\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n} from '@angular/core';\nimport { SelectionTypes, ApplySelectionTypes } from './checkbox-selector.types';\nimport { TuiButtonLoading, TuiCheckbox, TuiInputNumber, TuiTooltip } from '@taiga-ui/kit';\nimport { TuiButton, TuiDropdown, TuiIcon, TuiTextfield } from '@taiga-ui/core';\nimport { FormsModule } from '@angular/forms';\nimport { TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { ScalarUUID } from 'hasura';\nimport { ERegisterObjectState } from '../../types';\nimport { SelectedObjectsStateService } from '../../services';\n\n@Component({\n selector: 'sproc-checkbox-selector',\n templateUrl: './checkbox-selector.component.html',\n styleUrls: ['./checkbox-selector.component.less'],\n standalone: true,\n imports: [\n TuiCheckbox,\n TuiDropdown,\n TuiTextfield,\n FormsModule,\n TuiTextfieldControllerModule,\n TuiButton,\n TuiButtonLoading,\n TuiInputNumber,\n TuiTooltip,\n TuiIcon,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CheckboxSelectorComponent {\n public totalRecords = input<number>();\n /** @deprecated используйте stateObjects */\n public selected = input(new Set<ScalarUUID>());\n public disabled = input(false);\n public loading = input<boolean | null>(false);\n public inputMaxValue = input<number | null>(null);\n\n public onApply = output<ApplySelectionTypes>();\n\n private readonly _selectedService = inject(SelectedObjectsStateService, { optional: true });\n\n protected readonly ESelectionTypes = SelectionTypes;\n\n protected isOpen = signal(false);\n protected selectedElement = signal<SelectionTypes | null>(null);\n protected inputValue = signal<number | null>(null);\n\n protected readonly inputDescription = computed(() => {\n const max = this.inputMaxValue();\n\n if (max === null) {\n return '';\n }\n\n return `Максимум для ввода - ${max}`;\n });\n\n protected stateObjects = this._selectedService?.state;\n protected stateUnfetchedObjects = this._selectedService?.stateUnfetchedObjects;\n\n constructor() {\n effect(() => {\n const loading = this.loading();\n const isOpen = this.loading();\n\n if (loading === false && isOpen) {\n untracked(() => {\n this.close();\n });\n }\n });\n }\n\n protected selectElement(newElement: SelectionTypes): void {\n this.selectedElement.update((currentElement) =>\n currentElement === newElement ? null : newElement\n );\n }\n\n protected onInputFocus(): void {\n this.selectedElement.set(SelectionTypes.COUNT);\n }\n\n protected applySelection(): void {\n let result: SelectionTypes | number | null = this.selectedElement();\n\n if (!result) {\n return;\n }\n\n if (result === SelectionTypes.COUNT) {\n result = this.inputValue();\n }\n\n this.onApply.emit(result);\n this.close();\n }\n\n protected toggle(): void {\n if (!this.disabled()) {\n this.isOpen.update((isOpen) => !isOpen);\n }\n }\n\n protected calcIndeterminate(): boolean {\n const state = this.stateObjects?.();\n\n if (state) {\n const fetchedObjects = [...state.values()];\n const selectedObjects = fetchedObjects.filter(\n (obj) => obj.state === ERegisterObjectState.SELECTED\n );\n\n const someFetchedIsNotSelected = fetchedObjects.length !== selectedObjects.length;\n const fetchedIsAll = fetchedObjects.length === this.totalRecords();\n const unfetchedAreSelected = this.stateUnfetchedObjects!() === ERegisterObjectState.SELECTED;\n\n if (selectedObjects.length > 0) {\n return someFetchedIsNotSelected || !(fetchedIsAll || unfetchedAreSelected);\n }\n\n return !fetchedIsAll && unfetchedAreSelected;\n }\n\n return this.selected().size > 0 && this.selected().size !== this.totalRecords();\n }\n\n protected calcChecked(): boolean {\n const state = this.stateObjects?.();\n\n if (state) {\n const fetchedObjects = [...state.values()];\n const selectedObjects = fetchedObjects.filter(\n (obj) => obj.state === ERegisterObjectState.SELECTED\n );\n\n const fetchedAreSelected = fetchedObjects.length === selectedObjects.length;\n const selectedIsAll = selectedObjects.length === this.totalRecords();\n const unfetchedAreSelected = this.stateUnfetchedObjects!() === ERegisterObjectState.SELECTED;\n\n return (\n selectedObjects.length > 0 && fetchedAreSelected && (selectedIsAll || unfetchedAreSelected)\n );\n }\n\n return this.selected().size > 0 && this.selected().size === this.totalRecords();\n }\n\n protected close(): void {\n if (!this.disabled()) {\n this.isOpen.set(false);\n }\n }\n\n protected inputValueChanges(value: number): void {\n this.selectedElement.set(SelectionTypes.COUNT);\n this.inputValue.set(value);\n }\n\n protected dropSelection(): void {\n this.inputValue.set(null);\n this.selectedElement.set(null);\n this.onApply.emit(null);\n this.close();\n }\n}\n","<div class=\"checkbox__container\" (click)=\"toggle(); $event.stopImmediatePropagation()\">\n @let indeterminate = calcIndeterminate();\n @let checked = calcChecked();\n\n <input\n tuiCheckbox\n size=\"s\"\n type=\"checkbox\"\n [indeterminate]=\"indeterminate\"\n [tuiDropdown]=\"dropdown\"\n [tuiDropdownManual]=\"isOpen()\"\n [checked]=\"checked\"\n />\n</div>\n\n<ng-template #dropdown>\n <section class=\"dropdown__content\" id=\"checkbox__dropdown__content\">\n @let selected = selectedElement();\n\n <span\n class=\"dropdown__element\"\n [class.dropdown__element_selected]=\"selected === ESelectionTypes.ALL\"\n (click)=\"selectElement(ESelectionTypes.ALL)\"\n >\n Выбрать все\n </span>\n <span\n class=\"dropdown__element\"\n [class.dropdown__element_selected]=\"selected === ESelectionTypes.VISIBLE\"\n (click)=\"selectElement(ESelectionTypes.VISIBLE)\"\n >\n Выбрать видимое\n </span>\n <span\n class=\"dropdown__element\"\n [class.dropdown__element_selected]=\"selected === ESelectionTypes.INVERSE\"\n (click)=\"selectElement(ESelectionTypes.INVERSE)\"\n >\n Кроме выделенного\n </span>\n <div\n class=\"dropdown__select-value\"\n [class.dropdown__element_selected]=\"selected === ESelectionTypes.COUNT\"\n >\n <span>Выбрать</span>\n <tui-textfield\n tuiTextfieldSize=\"s\"\n tuiTextfieldAppearance=\"textfield\"\n [tuiTextfieldCleaner]=\"true\"\n class=\"flex-1\"\n >\n <input\n tuiInputNumber\n placeholder=\"Введите число\"\n [max]=\"inputMaxValue()\"\n [ngModel]=\"inputValue()\"\n (ngModelChange)=\"inputValueChanges($event)\"\n (focusin)=\"onInputFocus()\"\n />\n\n @if (inputDescription()) {\n <tui-icon\n icon=\"assets/ngx-register-base/icons/circle-question-empty.svg\"\n [tuiTooltip]=\"inputDescription()\"\n />\n }\n </tui-textfield>\n </div>\n <div class=\"dropdown__footer\">\n <button\n tuiButton\n class=\"dropdown__button dropdown__button__apply\"\n size=\"m\"\n appearance=\"outline\"\n [loading]=\"loading()\"\n (click)=\"applySelection()\"\n >\n Применить\n </button>\n <button\n tuiButton\n class=\"dropdown__button dropdown__button__cancel\"\n size=\"m\"\n appearance=\"outline-grayscale\"\n (click)=\"dropSelection()\"\n >\n Отмена\n </button>\n </div>\n </section>\n</ng-template>\n","import { Directive, HostListener, input } from '@angular/core';\nimport { InputElementEvent } from '../../types';\n\n/** Ввод только числовых выражений */\n@Directive({\n standalone: true,\n selector: '[numberOnly]',\n})\nexport class NumberOnlyDirective {\n /** Разрешать пользователю вводить дробные числа (возможность использовать точку или запятую) */\n public allowFractional = input(false);\n\n @HostListener('input', ['$event'])\n public onInput(event: InputElementEvent): void {\n const element = event.target;\n let value = element.value;\n\n if (this.allowFractional()) {\n value = value.replace(/,/g, '.');\n\n value = value.replace(/[^\\d.]/g, '');\n\n // Проверяем, чтобы точка была только одна\n const parts: string[] = value.split('.');\n if (parts.length > 2) {\n value = `${parts.shift()!}.${parts.join('')}`;\n }\n } else {\n value = value.replace(/\\D/g, '');\n }\n\n if (element.value !== value) {\n element.value = value;\n }\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { StickyDirective } from './sticky.directive';\nimport { Subject } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\n\n@Injectable()\nexport class StickyRelativeService implements OnDestroy {\n public element!: HTMLElement;\n\n private readonly _changesChildren$ = new Subject<void>();\n\n private readonly _resizeObserver = new ResizeObserver(() => {\n this._changesChildren$.next();\n });\n\n public readonly changesChildren$ = this._changesChildren$.pipe(shareReplay(1));\n\n public add(item: StickyDirective): void {\n this._resizeObserver.observe(item.elRef.nativeElement);\n }\n\n public delete(item: StickyDirective): void {\n this._resizeObserver.unobserve(item.elRef.nativeElement);\n }\n\n public nextChangesChildren(): void {\n this._changesChildren$.next();\n }\n\n public ngOnDestroy(): void {\n this._resizeObserver.disconnect();\n this._changesChildren$.complete();\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n HostBinding,\n inject,\n input,\n OnChanges,\n OnDestroy,\n OnInit,\n Renderer2,\n} from '@angular/core';\nimport { filter, map, observeOn, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { StickyRelativeService } from './sticky-relative.service';\nimport { animationFrameScheduler, of, Subject } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { toPx } from '../../utils';\nimport { moveInEventLoopIteration } from '../../utils';\n\n@Directive({\n selector: '[stickyLeft], [stickyRight], [stickyTop], [stickyBottom]',\n standalone: true,\n})\nexport class StickyDirective implements OnChanges, OnDestroy, OnInit {\n @HostBinding('class.sticky-left')\n public stickyLeft = input<boolean>();\n @HostBinding('class.sticky-right')\n public stickyRight = input<boolean>();\n @HostBinding('class.sticky-top')\n public stickyTop = input<boolean>();\n @HostBinding('class.sticky-bottom')\n public stickyBottom = input<boolean>();\n public stickyRelative = input<HTMLElement | undefined>();\n public position = input('sticky');\n public stylesOnSticky = input<Record<string, unknown> | undefined>();\n\n @HostBinding('style.position')\n get applySticky(): string {\n return this.stickyLeft() || this.stickyRight() || this.stickyTop() || this.stickyBottom()\n ? this.position()\n : '';\n }\n\n public readonly elRef = inject(ElementRef);\n\n private readonly _relativeService = inject(StickyRelativeService);\n private readonly _renderer = inject(Renderer2);\n private readonly _destroyRef = inject(DestroyRef);\n\n private readonly _destroyPrevious = new Subject<void>();\n private readonly _changedSides = {\n right: true,\n left: true,\n top: true,\n bottom: true,\n };\n\n private _setActiveStyle = false;\n\n public ngOnInit(): void {\n this._relativeService.add(this);\n }\n\n public ngOnDestroy(): void {\n this._relativeService.delete(this);\n this._destroyPrevious.complete();\n }\n\n public ngOnChanges(): void {\n this._init();\n }\n\n private _init(): void {\n this._destroyPrevious.next();\n\n const parent = this.stickyRelative() ?? this._relativeService?.element;\n this._relativeService?.changesChildren$\n .pipe(\n map(() => this.elRef.nativeElement.getBoundingClientRect()),\n observeOn(animationFrameScheduler),\n filter((i) => Boolean(i.width || i.height)),\n switchMap((result) => {\n if (this.stickyRight() || this._changedSides.right) {\n this._renderer.removeStyle(this.elRef.nativeElement, 'right');\n }\n if (this.stickyLeft() || this._changedSides.left) {\n this._renderer.removeStyle(this.elRef.nativeElement, 'left');\n }\n if (this.stickyTop() || this._changedSides.top) {\n this._renderer.removeStyle(this.elRef.nativeElement, 'top');\n }\n if (this.stickyBottom() || this._changedSides.bottom) {\n this._renderer.removeStyle(this.elRef.nativeElement, 'bottom');\n }\n\n this._clearStylesIfSet();\n\n return of(result).pipe(moveInEventLoopIteration(1));\n }),\n tap(() => {\n const parentRect = parent?.getBoundingClientRect();\n const elRect = this.elRef.nativeElement.getBoundingClientRect();\n let styleRight = 0;\n\n this._setStylesIfExist();\n\n if (this.stickyLeft()) {\n const left = parentRect?.left ? elRect.left - parentRect.left : elRect.left;\n this._renderer.setStyle(this.elRef.nativeElement, 'left', toPx(left));\n this._changedSides.left = true;\n } else {\n this._changedSides.left = true;\n }\n if (this.stickyRight()) {\n styleRight = Number.parseInt(this.elRef.nativeElement.style.right || '0', 10);\n\n let right = elRect.right;\n let scrollOffset = 0;\n let diff = 0;\n if (parent) {\n scrollOffset = parent.scrollWidth - parent.clientWidth - parent.scrollLeft;\n diff = Math.abs(elRect.right - parentRect.right - scrollOffset - styleRight);\n right = Math.floor(diff);\n }\n this._renderer.setStyle(this.elRef.nativeElement, 'right', toPx(right));\n this._changedSides.right = true;\n } else {\n this._changedSides.right = true;\n }\n if (this.stickyTop()) {\n const top = parentRect?.top ? elRect.top - parentRect.top : elRect.top;\n this._renderer.setStyle(this.elRef.nativeElement, 'top', toPx(top));\n this._changedSides.top = true;\n } else {\n this._changedSides.top = true;\n }\n if (this.stickyBottom()) {\n const bottom = parentRect?.bottom ? elRect.bottom - parentRect.bottom : elRect.bottom;\n this._renderer.setStyle(this.elRef.nativeElement, 'bottom', toPx(bottom));\n this._changedSides.bottom = true;\n } else {\n this._changedSides.bottom = true;\n }\n\n this._setStylesIfExist();\n }),\n // eslint-disable-next-line rxjs/no-unsafe-takeuntil\n takeUntil(this._destroyPrevious),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n\n private _clearStylesIfSet(): void {\n if (!this._setActiveStyle) {\n return;\n }\n\n const stylesOnSticky = this.stylesOnSticky();\n const keys = stylesOnSticky && Object.keys(stylesOnSticky);\n if (!keys?.length) {\n return;\n }\n\n for (const key of keys) {\n this.elRef.nativeElement.style[key] = '';\n }\n\n this._setActiveStyle = false;\n }\n\n private _setStylesIfExist(): void {\n if (!this.stickyRight() && !this.stickyLeft() && !this.stickyBottom() && !this.stickyTop()) {\n return;\n }\n\n const stylesOnSticky = this.stylesOnSticky();\n const keys = stylesOnSticky && Object.keys(stylesOnSticky);\n if (!keys?.length) {\n return;\n }\n\n for (const key of keys) {\n this.elRef.nativeElement.style[key] = (this.stylesOnSticky()?.[key] as string) ?? '';\n }\n\n this._setActiveStyle = true;\n }\n}\n","import { DestroyRef, Directive, ElementRef, inject, input, OnInit } from '@angular/core';\nimport { StickyRelativeService } from './sticky-relative.service';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { skip } from 'rxjs';\nimport {distinctUntilChangedJSONs} from '../../utils';\n\n@Directive({\n selector: '[stickyRelative]',\n standalone: true,\n providers: [StickyRelativeService],\n})\nexport class StickyRelativeDirective implements OnInit {\n public columns = input.required<unknown[]>();\n\n private _columnsChanges$ = toObservable(this.columns).pipe(distinctUntilChangedJSONs(), skip(1));\n\n private readonly _stickyRelativeService = inject(StickyRelativeService);\n private readonly _dr = inject(DestroyRef);\n private readonly _elRef = inject(ElementRef);\n\n constructor() {\n this._columnsChanges$.pipe(takeUntilDestroyed(this._dr)).subscribe(() => {\n this._stickyRelativeService.nextChangesChildren();\n });\n }\n\n public ngOnInit(): void {\n this._stickyRelativeService.element = this._elRef.nativeElement;\n }\n}\n","import { coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n inject,\n input,\n model,\n OnDestroy,\n output,\n signal,\n} from '@angular/core';\nimport { PolymorphContent, PolymorphModule } from '@prizm-ui/components';\nimport { debounceTime, Subject } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiButton, TuiDataListDirective, TuiHint, TuiLoader } from '@taiga-ui/core';\nimport { TuiDataListWrapperComponent, TuiPagination } from '@taiga-ui/kit';\nimport { TuiComboBoxModule, TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { IPaginatorOptions, IPaginatorOutput } from './types/paginator.types';\nimport { DividerComponent } from '../divider/divider.component';\nimport { NumberOnlyDirective } from '../../directives/number/number-only.directive';\n\nexport enum SvgSrc {\n CHEVRONS_DOUBLE_LEFT = 'assets/ngx-register-base/icons/chevrons-double-left.svg',\n CHEVRONS_DOUBLE_RIGHT = 'assets/ngx-register-base/icons/chevrons-double-right.svg',\n}\n\n@Component({\n selector: 'sproc-paginator',\n imports: [\n DividerComponent,\n CommonModule,\n PolymorphModule,\n ReactiveFormsModule,\n FormsModule,\n TuiPagination,\n TuiButton,\n TuiComboBoxModule,\n TuiDataListWrapperComponent,\n TuiTextfieldControllerModule,\n TuiDataListDirective,\n TuiLoader,\n TuiHint,\n NumberOnlyDirective,\n ],\n templateUrl: './paginator.component.html',\n styleUrls: ['./paginator.component.less'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PaginatorComponent implements OnDestroy {\n public textOnPage = input<PolymorphContent>('Строк на странице');\n public totalRecords = input(0, {\n transform: (value: NumberInput) => Math.max(coerceNumberProperty(value), 0),\n });\n /** Количество видимых страниц вокруг активной страницы */\n public pageLinkSize = input(3);\n public showMoreDisabled = input(false);\n public disabled = input(false);\n /** Количество отображаемых строк на странице */\n public rows = model<NumberInput>(0);\n /** Текущая страница */\n public page = model<NumberInput>(1);\n public paginatorOptions = input<IPaginatorOptions>({\n noRowsSelector: false,\n noRowsSelectorLabel: false,\n noFilterInfo: false,\n noInfo: false,\n noPages: false,\n });\n public rowsCountOptions = input(new Array<number>());\n public selectedCounter = input(0);\n public totalNotFiltered = input(0);\n public isLoading = input(false);\n /** Ограничения на количество отображаемых строк на странице */\n public minRowsCount = input<number>(1);\n public maxRowsCount = input<number>(99);\n protected isIncorrectRowsCount = signal(false);\n protected rowsCountErrorMessage = signal('');\n\n public paginatorChange = output<IPaginatorOutput>();\n public pageChange = output<number>();\n public rowsChange = output<number | null>();\n\n protected readonly SvgSrc = SvgSrc;\n protected pagesCount = computed(() => {\n const total = this.totalRecords();\n this.rows();\n\n return Math.ceil(total / this.currentRows);\n });\n\n private readonly _dr = inject(DestroyRef);\n\n protected readonly currentRowsInputChange = new Subject<NumberInput>();\n\n constructor() {\n this.currentRowsInputChange\n .pipe(debounceTime(500), takeUntilDestroyed(this._dr))\n .subscribe((value) => {\n this.changeRows(value);\n });\n }\n\n public ngOnDestroy(): void {\n this.currentRowsInputChange.complete();\n }\n\n protected changePage(page: number): void {\n const prev = this.currentPage;\n this.page.set(page);\n\n if (this.currentPage !== prev) {\n this.emitPageChange();\n }\n }\n\n protected toFirstPage(): void {\n this.changePage(0);\n }\n\n protected toLastPage(): void {\n this.changePage(this.pagesCount());\n }\n\n private emitPageChange(): void {\n this.pageChange.emit(this.currentPage);\n this._emitPaginatorChanges();\n }\n\n protected changeRows(rows: NumberInput): void {\n const rowsCount = Number(rows);\n\n if (!rowsCount) {\n this.rowsCountErrorMessage.set('');\n this.isIncorrectRowsCount.set(false);\n return;\n }\n\n const min = this.minRowsCount();\n const max = this.maxRowsCount();\n\n if (rowsCount < min || rowsCount > max) {\n this.rowsCountErrorMessage.set(`Поле принимает значение от ${min} до ${max}`);\n this.isIncorrectRowsCount.set(true);\n return;\n }\n\n this.rowsCountErrorMessage.set('');\n this.isIncorrectRowsCount.set(false);\n\n if (this.currentRows === rows) {\n return;\n }\n\n this.rows.set(rows);\n this.rowsChange.emit(this.currentRows);\n\n if (this.currentPage > this.pagesCount()) {\n this.changePage(0);\n } else {\n this._emitPaginatorChanges();\n }\n }\n\n private _emitPaginatorChanges(): void {\n this.paginatorChange.emit({\n page: this.currentPage,\n first: (this.currentPage - 1) * this.currentRows + 1,\n rows: this.currentRows,\n pagesCount: this.pagesCount(),\n });\n }\n\n /** get-методы */\n protected get currentPage(): number {\n return Math.max(coerceNumberProperty(this.page()), 1);\n }\n\n protected get currentRows(): number {\n let inputRows = Math.max(coerceNumberProperty(this.rows()), 0);\n\n if (!inputRows) {\n [inputRows] = this.rowsCountOptions();\n }\n\n return inputRows;\n }\n}\n","<tui-loader class=\"loader\" [showLoader]=\"isLoading()\" [overlay]=\"true\">\n <div class=\"container\">\n <div class=\"content\">\n @if (!paginatorOptions().noRowsSelector && !paginatorOptions().noRowsSelectorLabel) {\n <span class=\"rows rows__count\">\n <ng-container *polymorphOutlet=\"textOnPage() as title\">\n {{ title }}\n </ng-container>\n </span>\n }\n @if (!paginatorOptions().noRowsSelector) {\n <div class=\"rows-selector\">\n <tui-combo-box\n numberOnly\n [ngModel]=\"currentRows\"\n [ngModelOptions]=\"{ standalone: true }\"\n [strict]=\"false\"\n [tuiTextfieldLabelOutside]=\"true\"\n [tuiTextfieldCleaner]=\"false\"\n tuiTextfieldSize=\"s\"\n [disabled]=\"disabled()\"\n [tuiHint]=\"rowsCountErrorMessage()\"\n [tuiHintManual]=\"isIncorrectRowsCount()\"\n (ngModelChange)=\"currentRowsInputChange.next($event)\"\n >\n <tui-data-list-wrapper\n *tuiDataList\n [items]=\"rowsCountOptions().length ? rowsCountOptions() : [currentRows]\"\n />\n </tui-combo-box>\n </div>\n }\n\n <div class=\"selected-panel\">\n <div class=\"selected-container\">\n <span>Выбрано</span>\n <span class=\"selected-counter\">{{ selectedCounter() }}</span>\n </div>\n <sproc-divider layout=\"vertical\"></sproc-divider>\n @if (!paginatorOptions().noFilterInfo) {\n <div class=\"selected-container\">\n <span>Отфильтровано</span>\n <span class=\"selected-counter\">{{ totalRecords() }}</span>\n <span>из</span>\n <span class=\"selected-counter\">{{ totalNotFiltered() }}</span>\n </div>\n }\n </div>\n </div>\n\n <div class=\"content\">\n @if (!paginatorOptions().noInfo) {\n <span class=\"rows rows__show\" [hidden]=\"disabled()\">\n Показано строк: {{ (currentPage - 1) * currentRows + 1 }}-{{\n currentPage * currentRows > totalRecords() ? totalRecords() : currentPage * currentRows\n }}\n <ng-container> из {{ totalRecords() }} </ng-container>\n </span>\n }\n\n <div class=\"paginator\">\n <button\n tuiIconButton\n class=\"paginator__control\"\n appearance=\"flat\"\n type=\"button\"\n size=\"xs\"\n tabIndex=\"-1\"\n [disabled]=\"disabled() || currentPage === 1\"\n (click)=\"toFirstPage()\"\n >\n <img [src]=\"SvgSrc.CHEVRONS_DOUBLE_LEFT\" />\n </button>\n <tui-pagination\n [index]=\"currentPage - 1\"\n [length]=\"pagesCount()\"\n [activePadding]=\"pageLinkSize()\"\n (indexChange)=\"changePage($event + 1)\"\n />\n @if (paginatorOptions().noToLastPageBtn ?? true) {\n <button\n tuiIconButton\n class=\"paginator__control\"\n appearance=\"flat\"\n type=\"button\"\n size=\"xs\"\n tabIndex=\"-1\"\n [disabled]=\"disabled() || currentPage === pagesCount() || currentPage === 0\"\n (click)=\"toLastPage()\"\n >\n <img [src]=\"SvgSrc.CHEVRONS_DOUBLE_RIGHT\" />\n </button>\n }\n </div>\n </div>\n </div>\n</tui-loader>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n output,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { DomIntersectionService } from '../../services/dom-intersection.service';\nimport { TuiHint, TuiIcon, TuiLoader, TuiScrollbar } from '@taiga-ui/core';\nimport { TuiTable, TuiTableSortChange } from '@taiga-ui/addon-table';\nimport { AsyncPipe, DecimalPipe, NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n ColumnDataTypes,\n EColumnDataType,\n IColumnData,\n RegisterTableCellSorter,\n ThWidthEntry,\n} from './model/schema';\nimport { TuiCheckbox } from '@taiga-ui/kit';\nimport { EDatePattern, ETimezone } from '../../directives/date/date-time.types';\nimport {\n outputFromObservable,\n takeUntilDestroyed,\n toObservable,\n toSignal,\n} from '@angular/core/rxjs-interop';\nimport { HeaderTemplateDirective } from './directives/header-template.directive';\nimport { DateTimeService } from '../../services/date-time.service';\nimport { CellTemplateDirective } from './directives/cell-template.directive';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { KEY_PRESSED, KeyPressedService } from '../../services/key-pressed.service';\nimport { EOrder, THS_WIDTH_CHANGES_DEBOUNCE_TIME_MLS } from '../../consts/register-base.consts';\nimport { ClassByTypePipe } from './pipes/class-by-type.pipe';\nimport { StickyColumnPipe } from './pipes/sticky-column.pipe';\nimport {\n CHECKBOX_SELECTOR_KEY,\n CHECKBOX_SELECTOR_WIDTH_PX,\n MIN_COL_WIDTH_PX,\n} from './consts/register-table.consts';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n map,\n skip,\n Subject,\n switchMap,\n tap,\n} from 'rxjs';\nimport { CheckboxSelectorComponent } from '../checkbox-selector/checkbox-selector.component';\nimport { distinctUntilChangedJSONs } from '../../utils';\nimport { StickyDirective, StickyRelativeDirective } from '../../directives';\nimport { ScalarUUID } from 'hasura';\nimport { ERegisterObjectState, IRegisterObject } from '../../types';\nimport { ApplySelectionTypes } from '../checkbox-selector/checkbox-selector.types';\nimport { SelectedObjectsStateService } from '../../services';\nimport { TuiResizable, TuiResizer } from '@taiga-ui/cdk';\nimport { FormatDatePipe } from '../../directives/date/format-date.pipe';\nimport { IPaginatorOutput } from '../paginator/types/paginator.types';\nimport { PaginatorComponent } from '../paginator/paginator.component';\n\n/** Общий компонент для создания таблицы ресстра */\n@Component({\n selector: 'sproc-register-table',\n templateUrl: './register-table.component.html',\n styleUrls: ['./register-table.component.less'],\n standalone: true,\n imports: [\n TuiScrollbar,\n TuiLoader,\n NgClass,\n NgStyle,\n TuiCheckbox,\n NgTemplateOutlet,\n DecimalPipe,\n FormatDatePipe,\n AsyncPipe,\n FormsModule,\n ReactiveFormsModule,\n TuiLoader,\n TuiTable,\n ClassByTypePipe,\n StickyColumnPipe,\n TuiHint,\n PaginatorComponent,\n CheckboxSelectorComponent,\n StickyDirective,\n StickyRelativeDirective,\n TuiIcon,\n TuiResizer,\n TuiResizable,\n ],\n providers: [\n DomIntersectionService,\n KeyPressedService,\n {\n provide: KEY_PRESSED,\n useValue: 'Shift',\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RegisterTableComponent implements OnDestroy {\n /** Переданный контент для заголовков таблицы, темплейты с директивой HeaderTemplateDirective */\n public headerTemplates = contentChildren<HeaderTemplateDirective>(HeaderTemplateDirective);\n /** Переданный контент для ячеек таблицы, темплейты с директивой CellTemplateDirective */\n public cellTemplates = contentChildren<CellTemplateDirective>(CellTemplateDirective);\n\n /** Элементы строк таблицы */\n public bodyRows = viewChildren('bodyRow', { read: ElementRef });\n /** Элемент скролла таблицы */\n public scrollbar = viewChild(TuiScrollbar, { read: ElementRef });\n /** Состояние загрузки данных таблицы */\n public isLoading = input.required<boolean | null>();\n /** Состояние загрузки данных пагинации */\n public isPaginatorLoading = input<boolean>(false);\n /** Номер страницы */\n public page = input.required<number | null>();\n /** Количество записей на одной странице */\n public limit = input.required<number | null>();\n /** Отображение колонки выбора строк (по умолчанию отображается) */\n public checkboxColumn = input(true);\n /** Список столбцов */\n public columns = input.required<string[]>();\n /** Данные столбцов */\n public columnsData = input.required<IColumnData[]>();\n /** Идентификаторы фиксированных слева столбцов */\n public stickyLeftIds = input<string[] | undefined>();\n /** Идентификаторы фиксированных слева столбцов */\n public stickyRightIds = input<string[] | undefined>();\n /** Всего записей */\n public totalRecords = input.required<number>();\n /** Всего записей, без учета фильтра */\n public totalNotFiltered = input.required<number>();\n /** Значения таблицы */\n public rowData = input.required<any[]>();\n /**\n * @description Идентификаторы выбранных записей\n *\n * @deprecated Используйте stateObjects\n * */\n public selectedIds = input(new Set<ScalarUUID>());\n /**\n * @description Объекты выбранных записей\n *\n * @deprecated Используйте stateObjects\n * */\n public selectedObjects = input(new Set<any>());\n /** Загрузка дополнительных записей при выборе соответствущего пункта в чекбокс-селекторе */\n public isSelectloading = input<boolean | null>(false);\n /** Текст пустой таблицы */\n public emptyText = input<string>('Нет данных');\n /** Дизейбл сортировки */\n public sortingDisabled = input(false);\n /** Максимальное значения выбора чекбоксов через поле ввода */\n public checkboxInputMaxValue = input<number | null>(null);\n /** Дизейбл выбора чекбоксов */\n public checkboxDisabled = input(false);\n /** Дизейбл выбора чекбоксов */\n public paginatorDisabled = input(false);\n\n public selectedCounter = computed(() => {\n const selectedSize = this._selectedService?.selectedValues()?.size ?? null;\n const unselectedSize = this._selectedService?.unselectedValues()?.size ?? 0;\n const unfetchedObjects = this._selectedService?.stateUnfetchedObjects();\n const isNotSelected = unfetchedObjects !== ERegisterObjectState.SELECTED;\n\n if (selectedSize === null) {\n this._deprecatedSelectedRowsCounter();\n return this.selectedIds().size;\n }\n\n return isNotSelected ? selectedSize : this.totalRecords() - unselectedSize;\n });\n\n protected readonly dts = inject(DateTimeService);\n protected readonly destroyRef = inject(DestroyRef);\n\n private readonly _shift = inject(KeyPressedService);\n private readonly _domIntersectionService = inject(DomIntersectionService);\n // TODO удалить optional: true после выполнения задачи SMA2-3134\n private readonly _selectedService = inject(SelectedObjectsStateService, {\n optional: true,\n });\n\n /** Событие выбора в чекбокс-селекторе */\n public selectChanged = output<ApplySelectionTypes>();\n /** Событие изменения значений пагинатора */\n public paginatorChange = output<IPaginatorOutput>();\n /** Событие нажатия на строку */\n public rowClick = output<any>();\n /** Событие двойного нажатия на строку */\n public rowDblClick = output<any>();\n /** Событие нажатия на строку */\n public rowSelected = output<{ row: any[]; count: number }>();\n /** Событие сортировки значений в таблице */\n public sort = output<RegisterTableCellSorter<any>[]>();\n /** Событие изменения ширины колонки */\n private readonly _thsWidthMap = computed(\n () => new Map(this.columnsData().map(({ name, width }) => [name, new BehaviorSubject(width)]))\n );\n public thsWidthChange = outputFromObservable<ThWidthEntry[]>(\n toObservable(this._thsWidthMap).pipe(\n switchMap((changes) =>\n combineLatest(\n [...changes.entries()].map(([name, $width]) =>\n $width.asObservable().pipe(map((width) => ({ name, width })))\n )\n ).pipe(\n distinctUntilChangedJSONs(),\n debounceTime(THS_WIDTH_CHANGES_DEBOUNCE_TIME_MLS),\n skip(1)\n )\n )\n )\n );\n /** Событие изменения видимых строк таблицы */\n private readonly _observerRowsVisibilityDOM$ = toObservable(this.bodyRows).pipe(\n switchMap((bodyRows) =>\n combineLatest(\n bodyRows.map((bodyRow, index) =>\n this._domIntersectionService.createAndObserve(bodyRow).pipe(\n // TODO удалить tap, как только перестанет использоваться is_visible по проекту\n tap((isVisible) => {\n this.rowData()[index].is_visible = isVisible;\n }),\n map((isVisible) => (isVisible ? this.rowData()[index] : undefined))\n )\n )\n ).pipe(map((visibleRows) => visibleRows.filter((visibleRow) => !!visibleRow)))\n )\n );\n public visibleRowsChange = outputFromObservable<any[]>(this._observerRowsVisibilityDOM$);\n\n protected readonly EColumnDataType = EColumnDataType;\n protected readonly ETimezone = ETimezone;\n protected readonly EDatePattern = EDatePattern;\n protected readonly ERegisterObjectState = ERegisterObjectState;\n\n protected readonly CHECKBOX_SELECTOR_KEY = CHECKBOX_SELECTOR_KEY;\n protected readonly CHECKBOX_SELECTOR_WIDTH_PX = CHECKBOX_SELECTOR_WIDTH_PX;\n\n protected readonly stickyThStyle = Object.freeze({ 'z-index': 22 });\n protected readonly stickyTdStyle = Object.freeze({ 'z-index': 21 });\n\n protected readonly columnsWithCheckboxes = computed(() => [\n CHECKBOX_SELECTOR_KEY,\n ...this.columns(),\n ]);\n protected readonly scrollPosition = signal<{ top: number; left: number }>({ top: 0, left: 0 });\n protected readonly tableWidth = toSignal(\n combineLatest([toObservable(this.columnsWithCheckboxes), toObservable(this._thsWidthMap)]).pipe(\n map(\n ({ 0: visibleColumns, 1: changes }) =>\n new Map([...changes.entries()].filter(([thName]) => visibleColumns.includes(thName)))\n ),\n switchMap((changes) =>\n combineLatest(\n [...changes.entries()].map(({ 1: $width }) =>\n $width.asObservable().pipe(map((width) => width))\n )\n ).pipe(\n map((widths) => {\n let tableWidth = this.checkboxColumn() ? CHECKBOX_SELECTOR_WIDTH_PX : 0;\n\n for (const width of widths) {\n tableWidth += width ? Number(width) : 0;\n }\n\n return tableWidth;\n })\n )\n )\n )\n );\n\n protected stateObjects = this._selectedService?.state;\n\n protected visibleColumnsTree = computed(() =>\n this._filterVisibleColumns(this.columnsData(), this.columns())\n );\n protected maxDepth = computed(() => this._getMaxDepth(this.visibleColumnsTree()));\n protected leaves = computed(() => this._getFlatLeaves(this.visibleColumnsTree()));\n\n protected headerRows = computed(() => {\n const maxDepth = this.maxDepth();\n const rows: { col: IColumnData; rowspan: number; colspan: number }[][] = Array.from(\n { length: maxDepth },\n () => []\n );\n\n if (maxDepth === 0) {\n return rows;\n }\n\n for (const col of this.visibleColumnsTree()) {\n this._buildHeaderRecursive(col, 0, maxDepth, rows);\n }\n\n return rows;\n });\n\n private _deprecatedSelectedRowsCounter = signal(0);\n\n protected readonly timeZoneChanges$ = this.dts.isTimeZoneChanged$;\n\n protected readonly columnOrders = new Map<string, RegisterTableCellSorter<any>>();\n\n private readonly _projectedHeadersMap = new Map<string, TemplateRef<any>>();\n private readonly _projectedCellsMap = new Map<string, TemplateRef<any>>();\n\n private readonly _clickedRow$ = new Subject<unknown>();\n\n private readonly _hoveredRow$ = new BehaviorSubject<unknown>(null);\n\n protected lastSelectedRow: unknown;\n\n constructor() {\n this._setScrollPositionAfterDataLoading();\n this._projectHeaderTemplates();\n this._projectCellTemplates();\n // TODO удалить метод, как только перестанет использоваться is_visible по проекту\n this._syncRowVisibilityDOM();\n\n effect(() => {\n const data = this.rowData();\n\n if (data.length > 0 && !this.lastSelectedRow) {\n [this.lastSelectedRow] = data;\n }\n });\n }\n\n private _setScrollPositionAfterDataLoading(): void {\n effect(() => {\n if (!this.isLoading()) {\n untracked(() => {\n const { top, left } = this.scrollPosition();\n const scrollbarElement = this.scrollbar()?.nativeElement;\n\n if (scrollbarElement) {\n scrollbarElement.scrollTop = top;\n scrollbarElement.scrollLeft = left;\n }\n });\n }\n });\n }\n\n private _projectHeaderTemplates(): void {\n effect(() => {\n this._projectedHeadersMap.clear();\n for (const template of this.headerTemplates()) {\n this._projectedHeadersMap.set(template.headerTemplateName(), template.tpl);\n }\n });\n }\n\n private _projectCellTemplates(): void {\n effect(() => {\n this._projectedCellsMap.clear();\n for (const template of this.cellTemplates()) {\n this._projectedCellsMap.set(template.cellTemplateName, template.tpl);\n }\n });\n }\n\n private _syncRowVisibilityDOM(): void {\n this._observerRowsVisibilityDOM$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe();\n }\n\n public ngOnDestroy(): void {\n this._clickedRow$.complete();\n this._hoveredRow$.complete();\n for (const subject of this._thsWidthMap().values()) {\n subject.complete();\n }\n }\n\n protected getProjectionHeaderByName(name: string): TemplateRef<any> | undefined {\n return this._projectedHeadersMap.get(name);\n }\n\n protected getProjectionCellByName(name: string): TemplateRef<any> | undefined {\n return this._projectedCellsMap.get(name);\n }\n\n protected sortChange({ sortComparator }: TuiTableSortChange<Partial<Record<string, any>>>): void {\n if (!sortComparator) {\n return;\n }\n\n const id = sortComparator({}, {}) as any as string;\n const columnOrder = this.columnOrders.get(id);\n\n if (this._shift.isPressed()) {\n this.updateColumnOrder(id, columnOrder);\n } else {\n this.columnOrders.clear();\n this.updateColumnOrder(id, columnOrder);\n }\n\n this.sort.emit([...this.columnOrders.values()]);\n }\n\n private updateColumnOrder(\n id: string,\n columnOrder: RegisterTableCellSorter<any> | undefined\n ): void {\n if (columnOrder) {\n const { options } = columnOrder;\n const { order } = options;\n\n if (order === EOrder.DESC) {\n this.columnOrders.delete(id);\n } else {\n this.columnOrders.set(id, { options: { ...options, order: EOrder.DESC } });\n }\n } else {\n this.columnOrders.set(id, { options: { id, order: EOrder.ASC } });\n }\n }\n\n protected setThName(thName: string): any {\n return () => thName;\n }\n\n protected checkAvailableColumnSorting(columnData: IColumnData): boolean {\n const { sortable, type } = columnData;\n const availableSortColumnTypes: ColumnDataTypes[] = [\n EColumnDataType.TEXT,\n EColumnDataType.DATE,\n EColumnDataType.NUM,\n ];\n\n return !this.sortingDisabled() && sortable !== false && availableSortColumnTypes.includes(type);\n }\n\n protected checkResizeBlocked(columnData: IColumnData): boolean {\n const resizableBlockedTypes: ColumnDataTypes[] = [\n EColumnDataType.CHECKBOX,\n EColumnDataType.ICON,\n EColumnDataType.ICON_SVG,\n ];\n\n return columnData.fixed || resizableBlockedTypes.includes(columnData.type);\n }\n\n protected onRowHover(row: unknown): void {\n this._hoveredRow$.next(row);\n }\n\n protected onRowClick(event: MouseEvent, row: unknown): void {\n const blueHighlightsSelected = window.getSelection();\n blueHighlightsSelected?.removeAllRanges();\n\n const stateObjects = this.stateObjects?.();\n\n // TODO оставить только if после SMA2-3134\n if (stateObjects) {\n if (event.shiftKey) {\n this._changeRangeRowsState(stateObjects, this.lastSelectedRow, row);\n } else {\n if (event.ctrlKey) {\n this._changeOnlyRowState(stateObjects, row, true);\n } else {\n this._changeOnlyRowState(stateObjects, row);\n }\n this.lastSelectedRow = row;\n }\n\n this.rowClick.emit(row);\n\n const selectedObjects = this._selectedService?.selectedValues();\n\n if (selectedObjects) {\n this.rowSelected.emit({\n row: [...selectedObjects],\n count: selectedObjects.size,\n });\n }\n\n this._clickedRow$.next(row);\n return;\n }\n\n if (event.shiftKey) {\n this._selectRangeRows(this.lastSelectedRow, row);\n } else {\n if (event.ctrlKey) {\n this._selectOnlyRow(row, true);\n } else {\n this._selectOnlyRow(row);\n }\n this.lastSelectedRow = row;\n }\n\n this.rowClick.emit(row);\n this.rowSelected.emit({\n row: [...this.selectedObjects()],\n count: this.selectedObjects().size,\n });\n }\n\n private _changeOnlyRowState(\n state: Map<ScalarUUID, IRegisterObject>,\n row: unknown,\n saveSelected?: boolean\n ): void {\n if (typeof row !== 'object' || !row || !('id' in row)) {\n console.error('Поле id отсутствует в элементе', row);\n return;\n }\n\n const id = row.id as string;\n const wasSelected = state.get(id)?.state === ERegisterObjectState.SELECTED;\n\n if (saveSelected) {\n this.updateStateObjectByKey(id, {\n state: wasSelected ? ERegisterObjectState.UNSELECTED : ERegisterObjectState.SELECTED,\n });\n } else {\n this.updateAllStateObjectsByState(ERegisterObjectState.UNSELECTED);\n this.updateStateObjectByKey(id, { state: ERegisterObjectState.SELECTED });\n }\n }\n\n private _selectOnlyRow(row: unknown, saveSelected?: boolean): void {\n if (typeof row !== 'object' || !row || !('id' in row)) {\n console.error('Поле id отсутствует в элементе', row);\n return;\n }\n\n const id = row.id as string;\n const wasSelected = this.selectedIds().has(id);\n\n if (saveSelected) {\n if (wasSelected) {\n this.selectedIds().delete(id);\n this.selectedObjects().delete(row);\n } else {\n this.selectedIds().add(id);\n this.selectedObjects().add(row);\n }\n } else {\n this.selectedIds().clear();\n this.selectedObjects().clear();\n this.selectedIds().add(id);\n this.selectedObjects().add(row);\n }\n this._emitDeprecatedSelectedRows();\n }\n\n private _emitDeprecatedSelectedRows(): void {\n this._deprecatedSelectedRowsCounter.update((value) => value + 1);\n }\n\n private _changeRangeRowsState(\n stateObjects: Map<ScalarUUID, IRegisterObject>,\n previousRow: unknown,\n currentRow: unknown\n ): void {\n this.updateAllStateObjectsByState(ERegisterObjectState.UNSELECTED);\n\n let prevIndex = this.rowData().indexOf(previousRow);\n let currIndex = this.rowData().indexOf(currentRow);\n\n if (prevIndex > currIndex) {\n const tempIndex = prevIndex;\n prevIndex = currIndex;\n currIndex = tempIndex;\n }\n\n const idsObjectsShouldSelected: Set<ScalarUUID> = new Set(\n this.rowData()\n .slice(prevIndex === -1 ? 0 : prevIndex, currIndex + 1)\n .map((row) => row.id)\n );\n\n const slicedStateObjects = new Map(\n [...stateObjects].filter(([key]) => idsObjectsShouldSelected.has(key))\n );\n\n for (const key of slicedStateObjects.keys()) {\n this.updateStateObjectByKey(key, { state: ERegisterObjectState.SELECTED });\n }\n }\n\n private _selectRangeRows(previousRow: unknown, currentRow: unknown): void {\n let prevIndex = this.rowData().indexOf(previousRow);\n let currIndex = this.rowData().indexOf(currentRow);\n\n if (prevIndex > currIndex) {\n const tempIndex = prevIndex;\n prevIndex = currIndex;\n currIndex = tempIndex;\n }\n\n const itemsShouldSelected = this.rowData().slice(\n prevIndex === -1 ? 0 : prevIndex,\n currIndex + 1\n );\n\n this.selectedIds().clear();\n this.selectedObjects().clear();\n this._emitDeprecatedSelectedRows();\n\n for (const item of itemsShouldSelected) {\n this.selectedIds().add(item.id);\n this.selectedObjects().add(item);\n }\n }\n\n protected thResizeChanges(name: string, width: number): void {\n const thWidthChangesEntry = this._thsWidthMap().get(name);\n\n if (thWidthChangesEntry) {\n const validWidth = width > MIN_COL_WIDTH_PX ? width : MIN_COL_WIDTH_PX;\n thWidthChangesEntry.next(validWidth.toString());\n }\n }\n\n protected getThWidth(name: string): string | undefined {\n const thWidthChangesEntry = this._thsWidthMap().get(name);\n\n return thWidthChangesEntry?.getValue();\n }\n\n protected saveScrollEndPosition(): void {\n const scrollbarElement = this.scrollbar()?.nativeElement;\n\n if (scrollbarElement && !this.isLoading()) {\n const { scrollTop, scrollLeft } = scrollbarElement;\n\n this.scrollPosition.set({\n top: scrollTop,\n left: scrollLeft,\n });\n }\n }\n\n protected updateAllStateObjectsByState(state: ERegisterObjectState): void {\n this._selectedService?.setAllStateObjectsByState(state);\n }\n\n protected updateStateObjectByKey(key: ScalarUUID, updates: Partial<IRegisterObject>): void {\n this._selectedService?.setStateObjectByKey(key, updates);\n }\n\n protected markRowBeforeSelect(row: unknown): boolean {\n const shiftPressed = this._shift.isPressed();\n const prevRow = this.lastSelectedRow;\n const hoveredRow = this._hoveredRow$.getValue();\n\n if (shiftPressed && prevRow && hoveredRow) {\n let beforeIndex = this.rowData().indexOf(prevRow);\n let afterIndex = this.rowData().indexOf(hoveredRow);\n\n if (beforeIndex > afterIndex) {\n const tempIndex = beforeIndex;\n beforeIndex = afterIndex;\n afterIndex = tempIndex;\n }\n\n const currentIndex = this.rowData().indexOf(row);\n\n return beforeIndex <= currentIndex && currentIndex <= afterIndex;\n }\n\n return false;\n }\n\n private _buildHeaderRecursive(\n col: IColumnData,\n level: number,\n maxDepth: number,\n rows: { col: IColumnData; rowspan: number; colspan: number }[][]\n ): number {\n const children = col.children || [];\n const hasChildren = children.length > 0;\n\n const customRowspan = col.rowspan || 1;\n const nextLevel = level + customRowspan;\n\n let colspan = 0;\n\n if (hasChildren) {\n for (const child of children) {\n colspan += this._buildHeaderRecursive(child, nextLevel, maxDepth, rows);\n }\n } else {\n colspan = 1;\n }\n\n const rowspan = hasChildren ? customRowspan : maxDepth - level;\n\n if (rows[level]) {\n rows[level].push({ col, rowspan, colspan });\n }\n\n return colspan;\n }\n\n private _getFlatLeaves(columns: IColumnData[]): IColumnData[] {\n return columns.flatMap((col) => {\n if (col.children && col.children.length > 0) {\n return this._getFlatLeaves(col.children);\n }\n return [col];\n });\n }\n\n private _filterVisibleColumns(columns: IColumnData[], showedNames: string[]): IColumnData[] {\n return columns\n .map((col) => {\n if (col.children && col.children.length > 0) {\n const visibleChildren = this._filterVisibleColumns(col.children, showedNames);\n return { ...col, children: visibleChildren };\n }\n return col;\n })\n .filter((col) => showedNames.includes(col.name) || (col.children && col.children.length > 0));\n }\n\n private _getMaxDepth(columns: IColumnData[]): number {\n if (!columns || columns.length === 0) {\n return 0;\n }\n\n return 1 + Math.max(...columns.map((c) => this._getMaxDepth(c.children || [])));\n }\n}\n","<section class=\"register-table__section\">\n <tui-scrollbar class=\"register-table__scrollable\" (scrollend)=\"saveScrollEndPosition()\">\n <tui-loader class=\"register-table__loader\" [showLoader]=\"isLoading() || false\" [overlay]=\"true\">\n <table\n tuiTable\n class=\"table\"\n stickyRelative\n [columns]=\"columnsWithCheckboxes()\"\n [style.width.px]=\"tableWidth()\"\n tuiSortBy=\"\"\n (sortChange)=\"sortChange($event)\"\n >\n <thead>\n @for (hrow of headerRows(); track $index) {\n <tr tuiThGroup>\n @if ($first && checkboxColumn()) {\n <th\n tuiTh\n *tuiHead=\"CHECKBOX_SELECTOR_KEY\"\n class=\"register-table__th-background--table-cell-blue register-table__cell-icon register-table__cell-checkbox-selector\"\n [style.width.px]=\"CHECKBOX_SELECTOR_WIDTH_PX\"\n [sorter]=\"null\"\n [rowSpan]=\"maxDepth()\"\n >\n <sproc-checkbox-selector\n [selected]=\"selectedIds()\"\n [totalRecords]=\"totalRecords()\"\n [loading]=\"isSelectloading()\"\n [disabled]=\"checkboxDisabled()\"\n (onApply)=\"selectChanged.emit($event)\"\n ></sproc-checkbox-selector>\n </th>\n }\n @for (cell of hrow; track cell.col.name) {\n @let thClass = cell.col.class ?? '';\n @let thType = cell.col.type;\n @let thName = cell.col.name;\n @let sortable = checkAvailableColumnSorting(cell.col);\n @let resizeBlocked = checkResizeBlocked(cell.col);\n <th\n tuiTh\n tuiResizable\n *tuiHead=\"thName\"\n [ngClass]=\"['register-table__th', thType | classByType, thClass]\"\n [stickyLeft]=\"cell.col.fixed ?? (thName | stickyColumn: stickyLeftIds())\"\n [stickyRight]=\"cell.col.fixed ?? (thName | stickyColumn: stickyRightIds())\"\n [stylesOnSticky]=\"stickyThStyle\"\n [style]=\"cell.col.headerStyle ?? ''\"\n [style.min-width.px]=\"getThWidth(thName)\"\n [style.width.px]=\"getThWidth(thName)\"\n [style.max-width.px]=\"getThWidth(thName)\"\n [tuiSortable]=\"sortable\"\n [sorter]=\"sortable ? setThName(thName) : null\"\n [tuiHint]=\"cell.col.tooltipText ?? null\"\n [rowSpan]=\"cell.rowspan\"\n [colSpan]=\"cell.colspan\"\n [attr.order]=\"columnOrders.get(thName)?.options?.order\"\n >\n @if (cell.col.isHeadTemplate) {\n @let thProjection = getProjectionHeaderByName(thName);\n\n @if (thProjection) {\n <ng-container\n [ngTemplateOutlet]=\"thProjection\"\n [ngTemplateOutletContext]=\"{\n $implicit: cell.col,\n }\"\n ></ng-container>\n }\n } @else {\n @switch (thType) {\n @case (EColumnDataType.ICON) {\n <tui-icon\n class=\"register-table--icon-color\"\n [icon]=\"cell.col.value!\"\n ></tui-icon>\n }\n @case (EColumnDataType.ICON_SVG) {\n <img [src]=\"cell.col.value\" [alt]=\"thName\" />\n }\n @case (EColumnDataType.TEXT) {\n @if (cell.col.svgSrc) {\n <img [src]=\"cell.col.svgSrc\" [alt]=\"thName\" />\n }\n <span class=\"text-overflow--ellipsis\" [ngStyle]=\"cell.col.textStyle\">\n {{ cell.col.value }}\n </span>\n }\n @case (EColumnDataType.NUM) {\n <span [ngStyle]=\"cell.col.textStyle\">\n {{ cell.col.value }}\n </span>\n }\n @case (EColumnDataType.DATE) {\n <span [ngStyle]=\"cell.col.textStyle\">\n {{ cell.col.value }}\n </span>\n }\n @case (EColumnDataType.CHECKBOX) {\n {{ cell.col.value }}\n }\n }\n }\n @if (!resizeBlocked) {\n <div\n class=\"register-table__cell-resizer\"\n [tuiResizer]=\"[1, 0]\"\n (tuiSizeChange)=\"thResizeChanges(cell.col.name, $event[0])\"\n (click)=\"$event.stopPropagation()\"\n ></div>\n }\n </th>\n }\n </tr>\n }\n </thead>\n @let rows = rowData();\n <tbody tuiTbody>\n @for (row of rows; track row.id) {\n @let state = stateObjects?.();\n @let trSelected =\n state\n ? state.get(row.id)?.state === ERegisterObjectState.SELECTED\n : selectedIds().has(row.id);\n\n <tr\n #bodyRow\n tuiTr\n class=\"register-table__row\"\n [class.selected]=\"trSelected\"\n [class.shift-pressed]=\"markRowBeforeSelect(row)\"\n (mouseenter)=\"onRowHover(row)\"\n (mouseleave)=\"onRowHover(null)\"\n (click)=\"onRowClick($event, row)\"\n (dblclick)=\"rowDblClick.emit(row)\"\n >\n @if (checkboxColumn()) {\n <td\n tuiTd\n *tuiCell=\"CHECKBOX_SELECTOR_KEY\"\n class=\"register-table__cell-checkbox-selector\"\n >\n <input\n tuiCheckbox\n size=\"s\"\n type=\"checkbox\"\n class=\"checkbox\"\n [checked]=\"trSelected\"\n [disabled]=\"checkboxDisabled()\"\n />\n </td>\n }\n @for (columnData of leaves(); track columnData.name) {\n @let tdType = columnData.type;\n @let tdKey = columnData.name;\n @let tdValue = row[tdKey];\n @let tdClass = columnData.classTd ?? '';\n\n <td\n tuiTd\n *tuiCell=\"tdKey\"\n [ngClass]=\"[tdType | classByType: 'td', tdClass]\"\n [stickyLeft]=\"tdKey | stickyColumn: stickyLeftIds()\"\n [stickyRight]=\"tdKey | stickyColumn: stickyRightIds()\"\n [stylesOnSticky]=\"stickyTdStyle\"\n >\n @if (columnData.isTemplate) {\n @let tdProjection = getProjectionCellByName(tdKey);\n\n @if (tdProjection) {\n <ng-container\n [ngTemplateOutlet]=\"tdProjection\"\n [ngTemplateOutletContext]=\"{\n $implicit: tdValue,\n row,\n }\"\n ></ng-container>\n }\n } @else {\n @switch (tdType) {\n @case (EColumnDataType.ICON) {\n @if (tdValue) {\n <tui-icon\n class=\"register-table--icon-color\"\n [icon]=\"columnData.value!\"\n ></tui-icon>\n }\n }\n @case (EColumnDataType.ICON_SVG) {\n @if (tdValue) {\n <img [src]=\"columnData.value\" [alt]=\"tdKey\" />\n }\n }\n @case (EColumnDataType.CHECKBOX) {\n <input\n tuiCheckbox\n size=\"s\"\n type=\"checkbox\"\n class=\"checkbox\"\n [checked]=\"!!tdValue\"\n [disabled]=\"true\"\n />\n }\n @case (EColumnDataType.TEXT) {\n <span [tuiHint]=\"tdValue\">\n {{ tdValue ?? '' }}\n </span>\n <span>\n {{ tdValue ? columnData.postfix : '' }}\n </span>\n }\n @case (EColumnDataType.NUM) {\n {{ tdValue ?? '' | number: columnData.numberPipe }}\n {{ tdValue ? columnData.postfix : '' }}\n }\n @case (EColumnDataType.DATE) {\n {{\n (tdValue\n | formatDate\n : ETimezone.UTC\n : columnData.datePattern ?? EDatePattern.DATE_TIME_WITHOUT_SECONDS\n : (timeZoneChanges$ | async)) ?? ''\n }}\n {{ tdValue ? columnData.postfix : '' }}\n }\n }\n }\n </td>\n }\n </tr>\n } @empty {\n <tr class=\"empty-layer\">\n <td colspan=\"100%\">\n <div class=\"centered-text\">{{ emptyText() }}</div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </tui-loader>\n </tui-scrollbar>\n\n <sproc-paginator\n class=\"register-table__paginator\"\n [page]=\"page()\"\n [rows]=\"limit()\"\n [pageLinkSize]=\"1\"\n [totalRecords]=\"totalRecords()\"\n [totalNotFiltered]=\"totalNotFiltered()\"\n [rowsCountOptions]=\"[30, 40, 50]\"\n [selectedCounter]=\"selectedCounter()\"\n (paginatorChange)=\"paginatorChange.emit($event)\"\n [disabled]=\"paginatorDisabled()\"\n [isLoading]=\"isPaginatorLoading()\"\n >\n </sproc-paginator>\n</section>\n","import { ChangeDetectionStrategy, Component, Injector, input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { TuiIcon, TuiTextfield } from '@taiga-ui/core';\nimport { CommonModule } from '@angular/common';\nimport { InputsModule } from '../inputs';\nimport { FormatterGqlValueType, IInputControl } from '../../types';\n\n@Component({\n selector: 'sproc-search-input',\n standalone: true,\n templateUrl: './search-input.component.html',\n styleUrls: ['./search-input.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, ReactiveFormsModule, InputsModule, TuiIcon, TuiTextfield],\n})\nexport class SearchInputComponent {\n public searchControl = input.required<\n FormControl<string | null> | IInputControl<string | null>\n >();\n public searchGqlFormatter = input<FormatterGqlValueType<string>>();\n public disabled = input<boolean>(false);\n\n public readonly formatGqlValueProxy: FormatterGqlValueType<string> = (\n value: string,\n injector?: Injector\n ) => {\n const formatter = this.searchGqlFormatter();\n const trimmedValue = value.trim();\n return formatter ? formatter(trimmedValue, injector) : undefined;\n };\n}\n","<sproc-param-custom [formControl]=\"searchControl()\" [formatGqlValue]=\"formatGqlValueProxy\">\n <tui-textfield tuiTextfieldSize=\"m\" [tuiTextfieldCleaner]=\"true\">\n <input placeholder=\"Поиск\" tuiTextfield [formControl]=\"searchControl()\" />\n <tui-icon icon=\"@tui.search\" [style.width.px]=\"16\" />\n </tui-textfield>\n</sproc-param-custom>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DialogOverlayInsidePlacement","i1.FiltersTransmitService","rxjsFilter","SvgSrc","RuntimeError","i1.FiltersStateService","i2.FiltersStateService","i3","i4","i1.FiltersService","i3.FilterListService","i5","i6.DividerComponent","i1","i1.RegisterBaseStore","i2.FiltersService","i4.FilterEditComponent","i5.FilterListSavedComponent","i6.FilterListHeaderComponent","i7.FilterListFooterComponent","i8.DividerComponent","i9.SlidingPanelComponent","i10","i2","moment","i1.DateTimeService","i4.FormatDatePipe","map","filter","switchMap","tap","takeUntil","i2.ParamCustomComponent"],"mappings":"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"}
|