@tetacom/ng-components 1.6.2 → 1.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tetacom-ng-components.mjs","sources":["../../src/component/accordion/accordion/accordion.component.ts","../../src/component/accordion/accordion/accordion.component.html","../../src/component/accordion/accordion-content.directive.ts","../../src/component/accordion/accordion-item/accordion-item.component.ts","../../src/component/accordion/accordion-item/accordion-item.component.html","../../src/common/enum/teta-size.enum.ts","../../src/component/icon/icon.service.ts","../../src/component/icon/icon-sprite.directive.ts","../../src/component/icon/icon/icon.component.ts","../../src/component/icon/icon/icon.component.html","../../src/component/accordion/accordion-head/accordion-head.component.ts","../../src/component/accordion/accordion-head/accordion-head.component.html","../../src/component/avatar/model/avatar-color.enum.ts","../../src/component/avatar/avatar/avatar.component.ts","../../src/component/avatar/avatar/avatar.component.html","../../src/component/autocomplete/autocomplete/autocomplete.component.ts","../../src/component/autocomplete/autocomplete/autocomplete.component.html","../../src/component/button/button/button.component.ts","../../src/component/button/button/button.component.html","../../src/component/chart-3d/model/chart-3d-options.ts","../../src/component/theme-switch/theme-switch.service.ts","../../src/component/chart-3d/chart3d/chart3d.component.ts","../../src/component/chart-3d/chart3d/chart3d.component.html","../../src/component/checkbox/checkbox/checkbox.component.ts","../../src/component/checkbox/checkbox/checkbox.component.html","../../src/common/enum/align.enum.ts","../../src/common/enum/vertical-align.enum.ts","../../src/component/date-picker/base-picker.ts","../../src/locale/en.ts","../../src/locale/teta-config.service.ts","../../src/component/date-picker/model/day-model.ts","../../src/component/date-picker/base-calendar.ts","../../src/component/date-picker/year-picker/scroll-to-selected-year.directive.ts","../../src/component/date-picker/year-picker/year-picker.component.ts","../../src/component/date-picker/year-picker/year-picker.component.html","../../src/component/date-picker/month-picker/month-picker.component.ts","../../src/component/date-picker/month-picker/month-picker.component.html","../../src/component/date-picker/day-picker/day-item/day-item.component.ts","../../src/component/date-picker/day-picker/day-item/day-item.component.html","../../src/component/date-picker/day-picker/day-picker.component.ts","../../src/component/date-picker/day-picker/day-picker.component.html","../../src/component/date-picker/date-picker/date-calendar/date-calendar.component.ts","../../src/component/date-picker/date-picker/date-calendar/date-calendar.component.html","../../src/component/dropdown/dropdown-content.directive.ts","../../src/common/contract/dynamic-data.ts","../../src/common/contract/teta-content-ref.ts","../../src/common/service/dynamic-component.service.ts","../../src/common/util/array-util.ts","../../src/common/util/dom-util.ts","../../src/common/util/position-util.ts","../../src/component/dynamic-component/popup-content/popup-content.component.ts","../../src/component/dynamic-component/popup-content/popup-content.component.html","../../src/directive/dynamic-content-base.directive.ts","../../src/directive/hint/hint.directive.ts","../../src/component/input/input/input.component.ts","../../src/component/input/input/input.component.html","../../src/component/dropdown/dropdown-head.directive.ts","../../src/component/dropdown/dropdown-base.ts","../../src/component/dropdown/dropdown/dropdown.component.ts","../../src/component/dropdown/dropdown/dropdown.component.html","../../src/component/date-picker/date-picker/date-picker.component.ts","../../src/component/date-picker/date-picker/date-picker.component.html","../../src/component/date-picker/date-range/range-calendar/range-calendar.component.ts","../../src/component/date-picker/date-range/range-calendar/range-calendar.component.html","../../src/component/date-picker/date-range/date-range.component.ts","../../src/component/date-picker/date-range/date-range.component.html","../../src/component/date-picker/model/date-period.ts","../../src/component/date-picker/model/date-picker-mode.enum.ts","../../src/component/delimiter/delimiter/delimiter.component.ts","../../src/component/delimiter/delimiter/delimiter.component.html","../../src/component/dropdown/dropdown.directive.ts","../../src/component/toolbar/toolbar/toolbar.component.ts","../../src/component/toolbar/toolbar/toolbar.component.html","../../src/component/expand-card/expand-card/expand-card.component.ts","../../src/component/expand-card/expand-card/expand-card.component.html","../../src/component/expand-card/expand-item/expand-item.component.ts","../../src/component/expand-card/expand-item/expand-item.component.html","../../src/component/expand-panel/expand-panel-content.directive.ts","../../src/component/expand-panel/expand-panel-head.directive.ts","../../src/component/expand-panel/expand-panel/expand-panel.component.ts","../../src/component/expand-panel/expand-panel/expand-panel.component.html","../../src/component/file-upload/file-upload-area/file-upload-area.component.ts","../../src/component/file-upload/file-upload-area/file-upload-area.component.html","../../src/component/file-upload/file-item/file-item.component.ts","../../src/component/file-upload/file-item/file-item.component.html","../../src/component/filter/contarct/date-filter-value.ts","../../src/util/string-util.ts","../../src/component/filter/base/filter-base.ts","../../src/component/filter/contarct/date-filter.ts","../../src/component/filter/enum/string-filter-type.enum.ts","../../src/component/filter/contarct/string-filter.ts","../../src/component/filter/contarct/numeric-filter.ts","../../src/component/filter/enum/list-filter-type.enum.ts","../../src/component/filter/contarct/list-filter.ts","../../src/component/filter/contarct/sort-param.ts","../../src/component/filter/contarct/numeric-filter-value.ts","../../src/component/filter/contarct/boolean-filter.ts","../../src/component/filter/contarct/filter-state.ts","../../src/component/filter/base/filter-component-base.ts","../../src/component/filter/contarct/filter-item.ts","../../src/component/filter/date-filter/date-filter.component.ts","../../src/component/filter/date-filter/date-filter.component.html","../../src/directive/scrollable/scrollable.directive.ts","../../src/directive/let/let.directive.ts","../../src/directive/scrollable/scrollable/scrollable.component.ts","../../src/directive/scrollable/scrollable/scrollable.component.html","../../src/pipe/util/number-helper.ts","../../src/pipe/number-pipe/number.pipe.ts","../../src/directive/only-number/only-number.directive.ts","../../src/component/input/text-field/text-field.component.ts","../../src/component/input/text-field/text-field.component.html","../../src/component/filter/list-filter/list-filter.component.ts","../../src/component/filter/list-filter/list-filter.component.html","../../src/component/filter/numeric-filter/numeric-filter.component.ts","../../src/component/filter/numeric-filter/numeric-filter.component.html","../../src/component/filter/string-filter/string-filter.component.ts","../../src/component/filter/string-filter/string-filter.component.html","../../src/component/radio/radio/radio.component.ts","../../src/component/radio/radio/radio.component.html","../../src/component/radio/radio-button/radio-button.component.ts","../../src/component/radio/radio-button/radio-button.component.html","../../src/component/filter/boolean-filter/boolean-filter.component.ts","../../src/component/filter/boolean-filter/boolean-filter.component.html","../../src/component/filter/enum/filter-type.enum.ts","../../src/component/filter/contarct/filter-component-map.ts","../../src/component/filter/filter-host/filter-host.component.ts","../../src/component/icon/icon-file/icon-file.component.ts","../../src/component/icon/icon-file/icon-file.component.html","../../src/component/input/color-input/color-input.component.ts","../../src/component/input/color-input/color-input.component.html","../../src/component/input/form-group-title/form-group-title.component.ts","../../src/component/input/form-group-title/form-group-title.component.html","../../src/component/message/message.service.ts","../../src/component/message/model/message.ts","../../src/component/message/message/message.component.ts","../../src/component/message/message/message.component.html","../../src/component/message/message-host/message-host.component.ts","../../src/component/message/message-host/message-host.component.html","../../src/component/modal/model/modal-close-reason.enum.ts","../../src/component/modal/modal-container/modal-container.component.ts","../../src/component/modal/modal-container/modal-container.component.html","../../src/component/modal/model/current-modal.ts","../../src/component/modal/dialog/dialog.component.ts","../../src/component/modal/dialog/dialog.component.html","../../src/component/modal/modal.module.ts","../../src/component/modal/model/modal-instance.ts","../../src/component/modal/modal.service.ts","../../src/component/modal/dialog.service.ts","../../src/component/pager/pager/pager.component.ts","../../src/component/pager/pager/pager.component.html","../../src/component/pager/model/pager-state.ts","../../src/component/pager/util/pager-util.ts","../../src/component/panel/panel/panel.component.ts","../../src/component/panel/panel/panel.component.html","../../src/component/progress-bar/progress-bar/progress-bar.component.ts","../../src/component/progress-bar/progress-bar/progress-bar.component.html","../../src/util/is-function.ts","../../src/util/bool-or-func.ts","../../src/util/forms-util.ts","../../src/component/property-grid/property-grid/property-grid-item-description.directive.ts","../../src/component/toggle/toggle/toggle.component.ts","../../src/component/toggle/toggle/toggle.component.html","../../src/component/select/select-option.directive.ts","../../src/component/select/select-value.directive.ts","../../src/directive/highlight/highlight.directive.ts","../../src/component/select/select/select.component.ts","../../src/component/select/select/select.component.html","../../src/directive/disable-control/disable-control.directive.ts","../../src/component/property-grid/property-grid/property-grid-item/property-grid-item.component.ts","../../src/component/property-grid/property-grid/property-grid-item/property-grid-item.component.html","../../src/component/property-grid/property-grid/property-grid-group/property-grid-group.component.ts","../../src/component/property-grid/property-grid/property-grid-group/property-grid-group.component.html","../../src/component/property-grid/property-grid/property-grid.component.ts","../../src/component/property-grid/property-grid/property-grid.component.html","../../src/component/sidebar/sidebar-position.enum.ts","../../src/component/sidebar/sidebar/sidebar.component.ts","../../src/component/sidebar/sidebar/sidebar.component.html","../../src/component/switch/switch.service.ts","../../src/component/switch/switch/switch.component.ts","../../src/component/switch/switch/switch.component.html","../../src/component/switch/switch-button/switch-button.component.ts","../../src/component/switch/switch-button/switch-button.component.html","../../src/component/table/enum/edit-event.enum.ts","../../src/component/table/enum/edit-type.enum.ts","../../src/component/table/enum/select-type.enum.ts","../../src/util/date-util.ts","../../src/component/table/contract/column-reorder-event.ts","../../src/component/table/contract/table-column.ts","../../src/component/table/contract/table-column-store.ts","../../src/component/table/contract/table-row.ts","../../src/component/table/util/state-util.ts","../../src/component/table/service/table.service.ts","../../src/component/table/enum/aggregation-type.enum.ts","../../src/component/table/base/cell-component-base.ts","../../src/component/table/default/numeric-cell/numeric-cell.component.ts","../../src/component/table/default/numeric-cell/numeric-cell.component.html","../../src/component/table/default/date-cell/date-cell.component.ts","../../src/component/table/default/date-cell/date-cell.component.html","../../src/component/table/default/list-cell/list-cell.component.ts","../../src/component/table/default/list-cell/list-cell.component.html","../../src/component/table/default/string-cell/string-cell.component.ts","../../src/component/table/default/string-cell/string-cell.component.html","../../src/component/table/default/boolean-cell/boolean-cell.component.ts","../../src/component/table/default/boolean-cell/boolean-cell.component.html","../../src/component/table/contract/cell-components-map.ts","../../src/component/table/cell-host/cell-host.component.ts","../../src/component/table/cell/cell.component.ts","../../src/component/table/cell/cell.component.html","../../src/component/table/selection-cell/selection-cell.component.ts","../../src/component/table/selection-cell/selection-cell.component.html","../../src/component/table/table-row/table-row.component.ts","../../src/component/table/table-row/table-row.component.html","../../src/component/table/table-body/table-body.component.ts","../../src/component/table/table-body/table-body.component.html","../../src/common/service/click.service.ts","../../src/directive/context-menu/context-menu.directive.ts","../../src/component/table/util/table-util.ts","../../src/component/table/contract/column-resize-event.ts","../../src/component/tree/tree.service.ts","../../src/component/tree/tree-item-toggle/tree-item-toggle.component.ts","../../src/component/tree/tree-item-toggle/tree-item-toggle.component.html","../../src/directive/teta-template/teta-template.directive.ts","../../src/component/tree/tree-item/tree-item.component.ts","../../src/component/tree/tree-item/tree-item.component.html","../../src/component/tree/tree/tree.component.ts","../../src/component/tree/tree/tree.component.html","../../src/component/table/table-head/visibility-dropdown-tab/visibility-dropdown-tab.component.ts","../../src/component/table/table-head/visibility-dropdown-tab/visibility-dropdown-tab.component.html","../../src/component/table/table-head/filter-dropdown-tab/filter-dropdown-tab.component.ts","../../src/component/table/table-head/filter-dropdown-tab/filter-dropdown-tab.component.html","../../src/component/table/contract/sort-event.ts","../../src/component/table/table-head/main-dropdown-tab/main-dropdown-tab.component.ts","../../src/component/table/table-head/main-dropdown-tab/main-dropdown-tab.component.html","../../src/directive/resize-drag/resize-drag.directive.ts","../../src/component/tabs/tab-content.directive.ts","../../src/component/tabs/tab-title.directive.ts","../../src/component/tabs/tab/tab.component.ts","../../src/component/tabs/tabs/tabs.component.ts","../../src/component/tabs/tabs/tabs.component.html","../../src/component/table/head-cell-dropdown/head-cell-dropdown.component.ts","../../src/component/table/head-cell-dropdown/head-cell-dropdown.component.html","../../src/component/table/base/head-cell-component-base.ts","../../src/component/table/default/default-head-cell/default-head-cell.component.ts","../../src/component/table/default/default-head-cell/default-head-cell.component.html","../../src/component/table/head-cell-host/head-cell-host.component.ts","../../src/component/table/head-cell/head-cell.component.ts","../../src/component/table/head-cell/head-cell.component.html","../../src/component/table/table-head-group/table-head-group.component.ts","../../src/component/table/table-head-group/table-head-group.component.html","../../src/component/table/selection-head-cell/selection-head-cell.component.ts","../../src/component/table/selection-head-cell/selection-head-cell.component.html","../../src/component/table/table-head/table-head.component.ts","../../src/component/table/table-head/table-head.component.html","../../src/component/table/table/table.component.ts","../../src/component/table/table/table.component.html","../../src/component/table/default/date-time-cell/date-time-cell.component.ts","../../src/component/table/default/date-time-cell/date-time-cell.component.html","../../src/component/table/base/detail-component-base.ts","../../src/component/table/public-api.ts","../../src/component/tabs/public-api.ts","../../src/component/theme-switch/theme-switch/theme-switch.component.ts","../../src/component/theme-switch/theme-switch/theme-switch.component.html","../../src/component/toolbar/public-api.ts","../../src/component/stepper/stepper/stepper.component.ts","../../src/component/stepper/stepper/stepper.component.html","../../src/component/divider/divider/divider.component.ts","../../src/component/divider/divider/divider.component.html","../../src/component/resize-panel/resize-panel/resize-panel.component.ts","../../src/component/resize-panel/resize-panel/resize-panel.component.html","../../src/component/public-api.ts","../../src/directive/auto-position/auto-position.directive.ts","../../src/directive/click-outside/click-outside.directive.ts","../../src/directive/drag-drop/drag-preview.directive.ts","../../src/directive/drag-drop/model/drag-container-instance.ts","../../src/directive/drag-drop/drag-drop.service.ts","../../src/directive/drag-drop/drag-container.directive.ts","../../src/directive/drag-drop/model/drag-instance.ts","../../src/directive/drag-drop/drag.directive.ts","../../src/directive/drag-drop/drag-placeholder.directive.ts","../../src/directive/drag-sort/drag-sort-container.directive.ts","../../src/directive/drag-sort/drag-sort-item.directive.ts","../../src/directive/loader/loader.directive.ts","../../src/directive/tooltip/tooltip.directive.ts","../../src/directive/no-autofill/no-autofill.directive.ts","../../src/directive/scroll-into-view/scroll-into-view.directive.ts","../../src/pipe/prepend-zero/prepend-zero.pipe.ts","../../src/pipe/date-pipe/teta-date.pipe.ts","../../src/common/service/overlay-container.service.ts","../../src/util/export-dom-image.ts","../../src/locale/ru.ts","../../src/observable/animation-frame.ts","../../src/observable/zone-observable.ts","../../src/tetacom-ng-components.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'teta-accordion',\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class AccordionComponent {\n @HostBinding('class.accordion') private readonly accordionClassName = true;\n}\n","<ng-content></ng-content>\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaAccordionContent]',\n standalone: true,\n})\nexport class AccordionContentDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n HostBinding,\n Inject,\n Input,\n Optional,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\nimport { AccordionComponent } from '../accordion/accordion.component';\nimport { AccordionContentDirective } from '../accordion-content.directive';\nimport { viewType } from '../../../common/model/view-type.model';\n\n@Component({\n selector: 'teta-accordion-item',\n templateUrl: './accordion-item.component.html',\n styleUrls: ['./accordion-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet]\n})\nexport class AccordionItemComponent {\n @ContentChild(AccordionContentDirective, { static: false })\n content?: AccordionContentDirective;\n\n @HostBinding('class.accordion-item_active')\n @Input()\n open = false;\n @Input()\n disabled = false;\n @HostBinding('class.accordion-item') private readonly accordionItemClass = true;\n\n @Input()\n divider: boolean = false;\n @HostBinding('class.accordion-item_divider') get dividerClass() {\n return this.divider;\n }\n\n @Input()\n viewType: viewType = 'rounded';\n @HostBinding(`class`)\n get class() {\n return `accordion-item_${this.viewType}`;\n }\n\n private readonly accordion$: AccordionComponent;\n\n constructor(\n @Optional() @Inject(AccordionComponent) accordion: AccordionComponent,\n private cdr$: ChangeDetectorRef,\n ) {\n this.accordion$ = accordion;\n }\n\n toggle() {\n this.open = !this.open;\n this.cdr$.detectChanges();\n }\n}\n","<ng-content select=\"teta-accordion-head\"></ng-content>\n@if (open) {\n <div class=\"accordion-content\">\n <ng-container *ngTemplateOutlet=\"content!.template\"></ng-container>\n </div>\n}\n","export enum TetaSize {\n XS,\n S,\n M,\n L,\n XL,\n}\n","import { Inject, Injectable, Renderer2, RendererFactory2 } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { HttpBackend, HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IconService {\n private static _loaded: string[] = [];\n private static _pending: string[] = [];\n private _renderer: Renderer2;\n\n constructor(\n @Inject(DOCUMENT) protected _document: any,\n private _rendererFactory: RendererFactory2,\n private _httpBackend: HttpBackend,\n private _http: HttpClient,\n ) {\n this._renderer = this._rendererFactory.createRenderer(null, null);\n }\n\n addSprite(url: string, bypassInterceptors: boolean = true) {\n if (IconService._loaded.indexOf(url) < 0 && IconService._pending.indexOf(url) < 0) {\n IconService._pending.push(url);\n this.getSVG(url, bypassInterceptors).subscribe((svg) => {\n IconService._pending = IconService._pending.filter((_) => _ !== url);\n IconService._loaded.push(url);\n this._renderer.insertBefore(this._document.body, svg, this._document.body.firstChild);\n });\n }\n }\n\n private getSVG(url: string, bypassInterceptors: boolean = true): Observable<SVGElement> {\n const http = bypassInterceptors ? new HttpClient(this._httpBackend) : this._http;\n return http.get(url, { responseType: 'text' }).pipe(\n map((svgText: string) => {\n const svgEl = this.svgElementFromString(svgText);\n return this.cloneSVG(svgEl);\n }),\n );\n }\n\n private svgElementFromString(str: string): SVGElement | never {\n const div = this._renderer.createElement('DIV');\n div.innerHTML = str;\n const svg = div.querySelector('svg') as SVGElement;\n if (!svg) {\n throw new Error('No SVG found in loaded contents');\n }\n return svg;\n }\n\n private cloneSVG(svg: SVGElement): SVGElement {\n return svg.cloneNode(true) as SVGElement;\n }\n}\n","import { Directive, Input, OnInit } from '@angular/core';\nimport { IconService } from './icon.service';\n\n@Directive({\n selector: '[tetaIconSprite]',\n standalone: true,\n})\nexport class IconSpriteDirective implements OnInit {\n @Input() tetaIconSprite: string | string[];\n @Input() bypassInterceptors = true;\n\n constructor(private _iconService: IconService) {}\n\n ngOnInit(): void {\n if (typeof this.tetaIconSprite === 'string') {\n this._iconService.addSprite(this.tetaIconSprite, this.bypassInterceptors);\n }\n if (this.tetaIconSprite instanceof Array && this.tetaIconSprite?.length) {\n this.tetaIconSprite.forEach((sprite: string) => {\n this._iconService.addSprite(sprite, this.bypassInterceptors);\n });\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\nimport { TetaSize } from '../../../common/enum/teta-size.enum';\nimport { IconSpriteDirective } from '../icon-sprite.directive';\n\n@Component({\n selector: 'teta-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n imports: [IconSpriteDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class IconComponent {\n @Input() name: string;\n @Input() size: TetaSize = TetaSize.M;\n @Input() palette: string;\n\n @Input() class;\n\n @HostBinding('class')\n private get getClass(): string {\n const result = [this.class, 'icon'];\n if (this.palette) {\n result.push(`icon-${this.palette}`);\n }\n switch (this.size) {\n case TetaSize.XL:\n result.push(`icon-xl`);\n break;\n case TetaSize.L:\n result.push(`icon-l`);\n break;\n case TetaSize.M:\n result.push(`icon-m`);\n break;\n case TetaSize.S:\n result.push(`icon-s`);\n break;\n case TetaSize.XS:\n result.push(`icon-xs`);\n break;\n }\n return result.join(' ');\n }\n\n getName(): string {\n return `#${this.name}`;\n }\n}\n","<svg class=\"icon__image\" style=\"width: 100%; height: 100%\">\n <use [attr.xlink:href]=\"getName()\"></use>\n</svg>\n","import {\n ChangeDetectionStrategy,\n Component,\n Host,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnInit,\n} from '@angular/core';\nimport { AccordionItemComponent } from '../accordion-item/accordion-item.component';\nimport { IconComponent } from '../../icon/icon/icon.component';\n\n@Component({\n selector: 'teta-accordion-head',\n templateUrl: './accordion-head.component.html',\n styleUrls: ['./accordion-head.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [IconComponent]\n})\nexport class AccordionHeadComponent implements OnInit {\n @HostBinding('class.accordion-head') private readonly accordionHeadClass = true;\n\n @Input() showToggle = true;\n\n private readonly accordionItem$: AccordionItemComponent;\n\n constructor(\n @Host()\n @Inject(AccordionItemComponent)\n accordionItem: AccordionItemComponent,\n ) {\n this.accordionItem$ = accordionItem;\n }\n\n @HostListener('click')\n toggle(): void {\n if (this.disabled) {\n return;\n }\n this.accordionItem$.toggle();\n }\n\n @HostBinding('class.accordion-head_open')\n get open(): boolean {\n return this.accordionItem$.open;\n }\n\n @HostBinding('class.accordion-head_disabled')\n get disabled(): boolean {\n return this.accordionItem$.disabled;\n }\n\n ngOnInit() {}\n}\n","<ng-content></ng-content>\n@if (showToggle) {\n <div class=\"accordion-toggle\" [class.accordion-toggle_opened]=\"open\">\n <teta-icon [name]=\"'arrowDownKey'\"></teta-icon>\n </div>\n}\n","export enum AvatarColorEnum {\n vibrant,\n nebula,\n gorgonzola,\n lagoon,\n lime,\n pumpkin,\n vanity,\n navy,\n turquoise,\n greyish,\n heart,\n gloomy,\n rockman,\n hair,\n cerise,\n iris,\n caribbean,\n poisonous,\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { AvatarColorEnum } from '../model/avatar-color.enum';\nimport { viewType } from '../../../common/model/view-type.model';\nimport { IconComponent } from '../../icon/icon/icon.component';\n\n@Component({\n selector: 'teta-avatar',\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [IconComponent]\n})\nexport class AvatarComponent implements OnInit {\n @Input() photo?: string | ArrayBuffer;\n @Input() name?: string;\n @Input() id?: number = 0;\n @Input() viewType?: viewType;\n @Input() size?: '24' | '28' | '32' | '44' | '64' | '128' | '200' = '28';\n\n @HostBinding('class') get avatar() {\n let avatar = 'avatar ';\n avatar += 'avatar-size-' + this.size;\n return avatar;\n }\n\n public colorMap: Map<AvatarColorEnum, string> = new Map<AvatarColorEnum, string>()\n .set(AvatarColorEnum.vibrant, '#FAB13C')\n .set(AvatarColorEnum.pumpkin, '#F67A1A')\n .set(AvatarColorEnum.heart, '#CC3E3E')\n .set(AvatarColorEnum.cerise, '#EB3673')\n .set(AvatarColorEnum.nebula, '#9121A3')\n .set(AvatarColorEnum.vanity, '#9C2AD6')\n .set(AvatarColorEnum.gloomy, '#855EE1')\n .set(AvatarColorEnum.iris, '#5350D1')\n .set(AvatarColorEnum.gorgonzola, '#3858DA')\n .set(AvatarColorEnum.navy, '#1F7CE0')\n .set(AvatarColorEnum.rockman, '#3AA2F4')\n .set(AvatarColorEnum.caribbean, '#1CC3D9')\n .set(AvatarColorEnum.lagoon, '#1D96AE')\n .set(AvatarColorEnum.turquoise, '#1F9D8C')\n .set(AvatarColorEnum.hair, '#1EAE66')\n .set(AvatarColorEnum.poisonous, '#33C333')\n .set(AvatarColorEnum.lime, '#80C026')\n .set(AvatarColorEnum.greyish, '#7F8697');\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<div [class]=\"avatar\">\n @if (photo) {\n <img [class]=\"'avatar_' + this.viewType\" [src]=\"photo\" alt=\"\" />\n } @else {\n <div\n [class]=\"'avatar_' + this.viewType\"\n [style.background-color]=\"colorMap.get(id % 17) || colorMap.get(0)\"\n class=\"column align-center justify-content-center position-relative\"\n >\n @if (name) {\n <p>{{ name }}</p>\n } @else {\n <teta-icon\n class=\"width-10 height-10\"\n style=\"fill: white;width:{{ size }}px; height:{{ size }}px\"\n name=\"photoCamera\"\n ></teta-icon>\n }\n <div\n [class]=\"'avatar_' + this.viewType\"\n class=\"position-absolute\"\n style=\"width: 100%;z-index:1;height: 100%; background: linear-gradient(180deg, rgba(255, 255, 255, 0.24) 0%, rgba(255, 255, 255, 0) 100%);'\"\n ></div>\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'teta-autocomplete',\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class AutocompleteComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<p>autocomplete works!</p>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { viewType } from '../../../common/model/view-type.model';\nimport { TetaSize } from '../../../common/enum/teta-size.enum';\n\nexport type ButtonViewType = 'primary' | 'outline' | 'ghost';\n\n@Component({\n selector: 'button[teta-button], teta-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class ButtonComponent {\n @Input() palette: string;\n @Input() class;\n @Input() view: ButtonViewType = 'primary';\n @Input() square = false;\n @Input() viewType: viewType = 'rounded';\n @Input() size: TetaSize = TetaSize.M;\n\n @HostBinding('class')\n private get getClass(): string {\n const result = [this.class, 'button'];\n if (this.palette) {\n result.push(`button-${this.palette}`);\n }\n if (this.view) {\n result.push(`button_${this.view}`);\n }\n if (this.square) {\n result.push(`button-square`);\n }\n switch (this.size) {\n case TetaSize.XL:\n result.push(`button-xl`);\n break;\n case TetaSize.L:\n result.push(`button-l`);\n break;\n case TetaSize.M:\n result.push(`font-button-2`);\n result.push(`button-m`);\n break;\n case TetaSize.S:\n result.push(`font-button-3`);\n result.push(`button-s`);\n break;\n case TetaSize.XS:\n result.push(`font-button-3`);\n result.push(`button-xs`);\n break;\n }\n result.push(`button_${this.viewType}`);\n return result.join(' ');\n }\n}\n","<ng-content></ng-content>\n","import { Base3dPoint } from './base-3d-point';\nimport { Series3d } from './series-3d';\n\nexport class Chart3dOptions {\n axes?: {\n min?: number;\n max?: number;\n };\n\n series: Series3d<Base3dPoint>[];\n\n constructor(options?: Chart3dOptions) {\n this.axes = { ...options?.axes };\n this.series = options?.series || [];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThemeSwitchService {\n theme: Observable<boolean>;\n private theme$: BehaviorSubject<boolean>;\n\n constructor() {\n const value = this.restoreTheme();\n this.theme$ = new BehaviorSubject<boolean>(value);\n this.theme = this.theme$.asObservable();\n }\n\n switchTheme() {\n const value = !this.theme$.value;\n this.saveTheme(value);\n this.theme$.next(value);\n }\n\n saveTheme(value: boolean) {\n localStorage.setItem('theme', value.toString());\n }\n\n restoreTheme(): boolean {\n const theme = localStorage.getItem('theme');\n if (theme) {\n return JSON.parse(theme);\n }\n return true;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport * as THREE from 'three';\nimport * as d3 from 'd3';\nimport { Chart3dOptions } from '../model/chart-3d-options';\nimport { Base3dPoint } from '../model/base-3d-point';\nimport { Series3d } from '../model/series-3d';\nimport { ThemeSwitchService } from '../../theme-switch/theme-switch.service';\nimport { takeWhile, tap } from 'rxjs/operators';\nimport { OrbitControls } from 'three-stdlib';\n\n@Component({\n selector: 'teta-chart3d',\n templateUrl: './chart3d.component.html',\n styleUrls: ['./chart3d.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class Chart3dComponent implements OnInit, AfterViewInit, OnDestroy {\n @ViewChild('canvas') canvasRef: ElementRef;\n\n private _scene: THREE.Scene;\n private _camera: THREE.PerspectiveCamera;\n private _renderer: THREE.WebGLRenderer;\n private _controls: OrbitControls;\n private _obs: ResizeObserver;\n private _config: Chart3dOptions;\n\n private SIDE_SIZE = 100;\n private gridColor: any;\n private axesColor: any;\n\n private _alive = true;\n\n constructor(\n private _elementRef: ElementRef,\n private _themeService: ThemeSwitchService,\n ) {}\n\n @Input() set config(config: Chart3dOptions) {\n if (config) {\n this._config = config;\n this.init();\n }\n }\n\n get config() {\n return this._config;\n }\n\n private get canvas(): HTMLCanvasElement {\n return this.canvasRef.nativeElement;\n }\n\n ngOnInit(): void {\n this._themeService.theme\n .pipe(\n takeWhile((_) => this._alive),\n tap((_) => {\n this.gridColor = _ ? '#5d6a73' : '#bdbdc6';\n this.axesColor = _ ? '#8e8f9d' : '#7d8f9a';\n this.init();\n }),\n )\n .subscribe();\n }\n\n ngAfterViewInit() {\n this.addResizeObserver();\n this.createScene();\n this.startRenderingLoop();\n this.init();\n }\n\n ngOnDestroy() {\n this._alive = false;\n this.removeResizeObserver();\n }\n\n private init() {\n if (!this._scene) {\n return;\n }\n\n while (this._scene.children.length > 0) {\n this._scene.remove(this._scene.children[0]);\n }\n\n const { x, y, z } = this.getScales(this._config.series);\n\n this.config.series.forEach((data, idx) => {\n if (!data.points?.length) {\n return;\n }\n\n const points = data.points.map((_) => new THREE.Vector3(x(_.x), y(_.y), z(_.z)));\n\n const color = d3.scaleOrdinal(d3.schemeTableau10);\n\n const material = new THREE.LineBasicMaterial({\n color: data?.color ?? color(idx.toString()),\n });\n\n const tubeGeometry = new THREE.TubeGeometry(new THREE.CatmullRomCurve3(points), 1024, 0.5, 20, false);\n\n let tube = new THREE.Line(tubeGeometry, material);\n this._scene.add(tube);\n });\n\n const circles = x.ticks(this.SIDE_SIZE / 10);\n\n const material = new THREE.LineBasicMaterial({ color: this.axesColor });\n const pointsLines = [];\n pointsLines.push(new THREE.Vector3(0, 0, 0));\n pointsLines.push(new THREE.Vector3(0, 0, z(-z.domain()[1])));\n\n pointsLines.push(new THREE.Vector3(0, 0, 0));\n pointsLines.push(new THREE.Vector3(x(-x.domain()[1]), 0, 0));\n\n const geometryLines = new THREE.BufferGeometry().setFromPoints(pointsLines);\n const line = new THREE.Line(geometryLines, material);\n\n this._scene.add(line);\n\n circles.forEach((r) => {\n const material = new THREE.LineDashedMaterial({\n color: this.gridColor,\n dashSize: 1,\n gapSize: 3,\n });\n\n const circleGeometry = new THREE.BufferGeometry().setFromPoints(\n new THREE.Path().absarc(0, 0, x(r), 0, Math.PI * 2, false).getSpacedPoints(100),\n );\n\n const circle = new THREE.LineSegments(circleGeometry, material);\n\n circle.geometry.rotateX(-Math.PI / 2);\n\n this._scene.add(circle);\n });\n\n this.drawTicks(x, y, z);\n\n if (!this._controls) {\n this._controls = new OrbitControls(this._camera, this._renderer.domElement);\n\n this._controls.enableDamping = true;\n this._controls.enablePan = true;\n this._controls.dampingFactor = 0.25;\n this._controls.screenSpacePanning = true;\n this._controls.minDistance = 0;\n this._controls.maxDistance = 10000;\n this._controls.maxPolarAngle = Math.PI / 2;\n\n this._controls.enableZoom = true;\n }\n }\n\n private createScene() {\n this._scene = new THREE.Scene();\n\n const aspectRatio = this._elementRef.nativeElement.clientWidth / this._elementRef.nativeElement.clientHeight;\n\n const fieldOfView = 10;\n const nearClippingPane = 1;\n const farClippingPane = 10000;\n\n this._camera = new THREE.PerspectiveCamera(fieldOfView, aspectRatio, nearClippingPane, farClippingPane);\n\n this._camera.position.set(1300, 1300, 1300).setLength(1300);\n this._scene.add(this._camera);\n }\n\n private setSize(width: number, height: number) {\n this._camera.aspect = width / height;\n this._renderer.setSize(width, height);\n\n this._camera.updateProjectionMatrix();\n }\n\n private render() {\n this._renderer.render(this._scene, this._camera);\n }\n\n private startRenderingLoop() {\n this._renderer = new THREE.WebGLRenderer({\n antialias: true,\n canvas: this.canvas,\n alpha: true,\n preserveDrawingBuffer: true,\n });\n\n const animate = () => {\n requestAnimationFrame(animate);\n this._controls?.update();\n this.render();\n };\n\n animate();\n }\n\n private addResizeObserver() {\n this._obs = new ResizeObserver((_) => {\n this.setSize(_[0]?.contentRect.width, _[0]?.contentRect.height);\n });\n\n this._obs.observe(this._elementRef.nativeElement);\n }\n\n private removeResizeObserver() {\n this._obs.unobserve(this._elementRef.nativeElement);\n this._obs.disconnect();\n }\n\n private makeSprite(text: string, opts?: { fontSize?: number }): THREE.Sprite {\n const fontSize = 20;\n\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n const textWidth = text.length * 50;\n canvas.height = 50;\n canvas.width = 50;\n\n if (ctx) {\n ctx.font = `${fontSize}px Arial`;\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillStyle = '#A0A0A0';\n ctx.fillText(text, 25, 25);\n }\n\n const texture = new THREE.Texture(canvas);\n texture.minFilter = THREE.LinearFilter;\n texture.needsUpdate = true;\n const spriteMaterial = new THREE.SpriteMaterial({\n map: texture,\n });\n\n const sprite = new THREE.Sprite(spriteMaterial);\n sprite.scale.set(0.4 * fontSize, 0.4 * fontSize, 0.4 * fontSize);\n\n return sprite;\n }\n\n private drawTicks(x: any, y: any, z: any) {\n const ticks = new THREE.Object3D();\n const scalesExtrems: any[] = [];\n\n [x, y, z].forEach((scale, idx) => {\n const generatedTicks = scale.ticks(this.SIDE_SIZE / 10);\n\n scalesExtrems.push(d3.max(generatedTicks));\n\n generatedTicks.forEach((_: any) => {\n const sprite = this.makeSprite(_);\n\n if (idx === 0) {\n sprite.position.set(x(_), y(y.domain()[1]), 0);\n }\n\n if (idx === 1) {\n sprite.position.set(-10, y(_), 0);\n }\n\n if (idx === 2) {\n sprite.position.set(0, y(y.domain()[1]), z(_));\n }\n\n ticks.add(sprite);\n });\n });\n\n const northLabel = this.makeSprite('X', { fontSize: 28 });\n const westLabel = this.makeSprite('Y', { fontSize: 28 });\n const tvdLabel = this.makeSprite('TVD', { fontSize: 28 });\n\n northLabel.position.set(x(x.domain()[1]) + 5, 0, 0);\n westLabel.position.set(0, 0, y(y.domain()[0]) + 5);\n tvdLabel.position.set(0, z(z.domain()[1]) + 5, 0);\n\n ticks.add(northLabel, westLabel, tvdLabel);\n\n const axesHelper = new THREE.AxesHelper(this.SIDE_SIZE);\n axesHelper.setColors(this.axesColor, this.axesColor, this.axesColor);\n\n this._scene.add(axesHelper);\n\n this._scene.add(ticks);\n }\n\n private getScales(series: Series3d<Base3dPoint>[]) {\n const extrems = series.map((_) => ({\n x: d3.extent(_.points, (p: any) => p.x),\n y: d3.extent(_.points, (p: any) => p.y),\n z: d3.extent(_.points, (p: any) => p.z),\n }));\n\n const flattenExtrems = extrems.reduce(\n (acc: any, _): { x: [number]; y: [number]; z: [number] } => {\n acc.x = acc.x.concat(_.x);\n acc.y = acc.y.concat(_.y);\n acc.z = acc.z.concat(_.z);\n return acc as any;\n },\n { x: [], y: [], z: [] },\n );\n\n const x = d3\n .scaleLinear()\n .domain([0, this._config?.axes?.max == null ? parseInt(d3.max(flattenExtrems.x)) : this._config.axes.max])\n .range([0, this.SIDE_SIZE])\n .nice();\n\n const y = d3\n .scaleLinear()\n .domain([0, parseInt(d3.max(flattenExtrems.y), 10)])\n .range([this.SIDE_SIZE, 0]);\n\n const z = d3\n .scaleLinear()\n .domain([0, this._config?.axes?.max == null ? parseInt(d3.max(flattenExtrems.z)) : this._config.axes.max])\n .range([0, this.SIDE_SIZE])\n .nice();\n\n return { x, y, z };\n }\n}\n","<canvas #canvas></canvas>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n OnInit,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { IconComponent } from '../../icon/icon/icon.component';\n\nexport const CHECKBOX_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true,\n};\n\n@Component({\n selector: 'teta-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n providers: [CHECKBOX_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [IconComponent, NgTemplateOutlet]\n})\nexport class CheckboxComponent implements ControlValueAccessor, OnInit {\n @HostBinding('attr.tabindex') tabindex = 0;\n\n @Input() class;\n\n @HostBinding('class')\n private get getClass() {\n const result = [this.class, 'checkbox'];\n if (this.palette) {\n result.push(`checkbox-${this.palette}`);\n }\n return result.join(' ');\n }\n\n @Input() palette = 'primary';\n @Input() noLabel: boolean;\n\n /**\n * компонент неактивен\n */\n @HostBinding('class.checkbox_disabled')\n @Input()\n disabled: boolean;\n /**\n * true/false или list\n */\n @Input() value: any;\n /**\n * true/false или list\n */\n @Input() binary: boolean;\n @Input() labelPosition: 'left' | 'right' = 'right';\n @Input() allowNull: boolean;\n\n checked: boolean;\n\n /**\n * Значение\n */\n private model$: any = null;\n\n get model(): any {\n return this.model$;\n }\n\n set model(v: any) {\n if (v !== this.model$) {\n this.model$ = v;\n this.onChange(v);\n }\n }\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n @HostListener('click')\n changeValue() {\n if (this.disabled) {\n return;\n }\n if (this.binary) {\n this.model = !this.model;\n } else {\n if (!this.isChecked()) {\n this.addValue();\n } else {\n this.removeValue();\n }\n }\n this.checked = this.isChecked();\n }\n\n writeValue(model: any) {\n if (this.binary) {\n this.model$ = model;\n } else {\n if (model && model instanceof Array) {\n this.model$ = model;\n } else {\n this.model$ = [];\n }\n }\n this.checked = this.isChecked();\n this.cdr.detectChanges();\n }\n\n isChecked(): boolean {\n if (this.binary) {\n return this.allowNull ? this.model : !!this.model;\n } else {\n return this.model && this.model.indexOf(this.value) >= 0;\n }\n }\n\n removeValue() {\n this.model = this.model.filter((val: any) => val !== this.value);\n }\n\n addValue() {\n if (this.model) {\n this.model = [...this.model, this.value];\n } else {\n this.model = [this.value];\n }\n }\n\n ngOnInit() {}\n\n onChange(_: any) {}\n\n onTouched() {}\n\n registerOnChange(fn: (_: any) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.detectChanges();\n }\n}\n","@if (labelPosition === 'right') {\n <div class=\"checkbox__tick\" [class.checkbox__tick_active]=\"checked != false\">\n <teta-icon [name]=\"checked ? 'tick' : checked === false ? '' : 'dash'\"></teta-icon>\n </div>\n @if (!noLabel) {\n <span class=\"font-body-3\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </span>\n }\n}\n@if (labelPosition === 'left') {\n @if (!noLabel) {\n <span class=\"font-body-3\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </span>\n }\n <div class=\"checkbox__tick\" [class.checkbox__tick_active]=\"checked != false\">\n <teta-icon [name]=\"checked ? 'tick' : checked === false ? '' : 'dash'\"></teta-icon>\n </div>\n}\n<ng-template #content><ng-content></ng-content></ng-template>\n","export enum Align {\n left,\n right,\n center,\n auto,\n fitWidth,\n minWidth,\n outerLeft,\n outerRight,\n outerAuto,\n}\n","export enum VerticalAlign {\n top,\n bottom,\n center,\n auto,\n innerTop,\n innerBottom,\n innerAuto,\n}\n","import { DatePipe } from '@angular/common';\nimport { ChangeDetectorRef, ElementRef, EventEmitter } from '@angular/core';\nimport { MaskitoOptions } from '@maskito/core';\nimport dayjs from 'dayjs';\nimport { Observable, ReplaySubject } from 'rxjs';\n\nimport { Align } from '../../common/enum/align.enum';\nimport { VerticalAlign } from '../../common/enum/vertical-align.enum';\nimport { viewType } from '../../common/model/view-type.model';\nimport { DateFromToModel } from './model/from-to.model';\nimport { TetaLocalisation } from '../../locale/teta-localisation';\n\nexport abstract class BasePicker {\n abstract mask: string;\n abstract date;\n abstract locale: Observable<TetaLocalisation>;\n abstract showTime: boolean;\n abstract minDate: Date | string | number;\n abstract maxDate: Date | string | number;\n abstract invalid: boolean;\n abstract disabled: boolean;\n abstract align: Align;\n abstract verticalAlign: VerticalAlign;\n abstract viewType: viewType;\n abstract appendToBody: boolean;\n abstract backdrop: boolean;\n abstract allowNull: boolean;\n abstract input: ElementRef;\n abstract selectDate: EventEmitter<Date> | EventEmitter<DateFromToModel>;\n public open = false;\n abstract selectedDate: ReplaySubject<any>;\n public placeholder = '';\n public inputText: string;\n public maskitoOptions: MaskitoOptions;\n\n protected constructor(\n protected _elementRef: ElementRef,\n protected _cdr: ChangeDetectorRef,\n protected datePipe: DatePipe,\n ) {\n this.inputText = this.checkNull();\n }\n\n abstract onChange(date: Date);\n\n abstract prepareInput();\n\n abstract onBlur();\n\n abstract setDate(date);\n\n changeInput(v) {\n this.changePlaceholder(v);\n }\n\n changePlaceholder(value: string) {\n const val = this.mask.split('');\n for (let i = 0; value.length > i; i++) {\n val.splice(i, 1, value[i]);\n }\n\n this.placeholder = val.join('');\n }\n\n openChange(e: boolean) {\n if (!e) {\n this.onBlur();\n }\n this.open = e;\n }\n\n checkNull() {\n if (!this.date && this.allowNull) {\n return null;\n }\n return this.datePipe.transform(new Date(), 'dd.MM.yyyy, HH:mm');\n }\n\n openPicker = (show: boolean) => {\n if (this.disabled) {\n return;\n }\n this.open = show;\n this._cdr.markForCheck();\n };\n\n changeSelectedDate(date, selectedDate?) {\n this.setDate(date);\n this.emitValue(date);\n this.open = false;\n }\n\n emitValue(value) {\n if (this.isValueChange(value)) {\n this.date = value;\n this.selectDate.emit(value);\n this.onChange(value);\n }\n }\n\n isValueChange(value) {\n return new Date(value).getTime() !== new Date(this.date).getTime();\n }\n\n checkEnter(e) {\n if (e.key === 'Enter') {\n this.inputText = e.target.value;\n this.onBlur();\n }\n if (e.key === '-') {\n e.preventDefault();\n }\n this.open = true;\n }\n\n isAvailableLength(val: string, length: number) {\n if (val?.length) {\n return val.length === length;\n }\n return false;\n }\n\n getDateFromStr(str: string, separator = '.') {\n const date = str?.split(separator);\n const day = this.isAvailableLength(date?.[0], 2) ? Number(date[0]) : null;\n const month = this.isAvailableLength(date?.[1], 2) ? Number(date[1]) : null;\n const year = this.isAvailableLength(date?.[2], 4) ? Number(date[2]) : null;\n return { day, month, year };\n }\n\n getTimeFromStr(str: string, separator = ':') {\n const time = str?.trim().split(separator);\n const hours = this.isAvailableLength(time?.[0], 2) ? Number(time[0]) : null;\n const mins = this.isAvailableLength(time?.[1], 2) ? Number(time[1]) : null;\n return { hours, mins };\n }\n\n focus() {\n this._elementRef.nativeElement.focus();\n }\n\n getLocaleString(date: Date | number | string) {\n return new Date(date).toLocaleString(['ru'], {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour12: false,\n hour: this.showTime ? '2-digit' : undefined,\n minute: this.showTime ? '2-digit' : undefined,\n });\n }\n\n getAvailableDate(min: Date | number | string, max: Date | number | string, date: Date | number | string) {\n const minDate = this.showTime ? new Date(min) : dayjs(new Date(min)).startOf('day').toDate();\n const maxDate = this.showTime ? new Date(max) : dayjs(new Date(max)).endOf('day').toDate();\n if (min && minDate.getTime() >= new Date(date).getTime()) {\n return minDate || new Date();\n }\n if (max && maxDate.getTime() <= new Date(date).getTime()) {\n return maxDate;\n }\n return new Date(date);\n }\n}\n","import { TetaLocalisation } from './teta-localisation';\n\nexport const enLocale: TetaLocalisation = {\n apply: 'Apply',\n cancel: 'Cancel',\n clear: 'Clear',\n pin: 'Pin',\n unpin: 'Unpin',\n sortAsc: 'Sort asc',\n sortDesc: 'Sort desc',\n clearSort: 'Clear sort',\n clearAllSort: 'Clear all sort',\n clearFilter: 'Clear filter',\n clearAllFilters: 'Clear all filters',\n dateRangeMask: 'dd.mm.yyyy - dd.mm.yyyy',\n dateMask: 'dd.mm.yyyy',\n dateTimeMask: 'dd.mm.yyyy, hh:mm',\n autosizeColumn: 'Autosize column',\n autosizeAll: 'Autosize all columns',\n resetColumnsSize: 'Reset columns settings',\n from: 'From',\n to: 'To',\n all: 'All',\n min: 'Min',\n max: 'Max',\n sum: 'Sum',\n avg: 'Avg',\n search: 'Search',\n selectYear: 'Select year',\n selected: 'Selected',\n notSelected: 'Not selected',\n notFound: 'Not found',\n yes: 'Yes',\n no: 'No',\n months: [\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 days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n daysShort: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n};\n","import { Injectable } from '@angular/core';\nimport { TetaLocalisation } from './teta-localisation';\nimport { BehaviorSubject } from 'rxjs';\nimport { enLocale } from './en';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TetaConfigService {\n private defaultLocale: TetaLocalisation = enLocale;\n private locale$ = new BehaviorSubject<TetaLocalisation>(this.defaultLocale);\n locale = this.locale$.asObservable();\n\n constructor() {}\n\n setLocale(newLocale: TetaLocalisation) {\n if (newLocale) {\n this.locale$.next(newLocale);\n } else {\n this.locale$.next(this.defaultLocale);\n }\n }\n}\n","export class DayModel {\n disabled: boolean;\n isCurrentMonth: boolean;\n today: boolean;\n selected: boolean;\n date: Date;\n weekend: boolean;\n\n public constructor(options?: {\n disabled?: boolean;\n isCurrentMonth?: boolean;\n today?: boolean;\n selected?: boolean;\n date: Date;\n weekend?: boolean;\n }) {\n if (options) {\n this.disabled = options.disabled;\n this.isCurrentMonth = options.isCurrentMonth;\n this.today = options.today;\n this.selected = options.selected;\n this.date = options.date;\n this.weekend = options.weekend;\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n} from '@angular/core';\nimport dayjs, { Dayjs } from 'dayjs';\nimport { BehaviorSubject, ReplaySubject } from 'rxjs';\n\nimport { viewType } from '../../common/model/view-type.model';\nimport { DayModel } from './model/day-model';\nimport { MinMaxDateModel } from './model/min-max-date.model';\nimport { TetaLocalisation } from '../../locale/teta-localisation';\n\n@Component({\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport abstract class BaseCalendar implements OnChanges, OnDestroy {\n abstract selectedDate;\n abstract locale: TetaLocalisation;\n abstract open: boolean;\n abstract viewType: viewType;\n abstract min: Date | string | number;\n abstract isDateNull: boolean;\n abstract max: Date | string | number;\n abstract setDate: EventEmitter<Date>;\n public currentMonth: ReplaySubject<number> = new ReplaySubject<number>(1);\n public minMax: ReplaySubject<MinMaxDateModel> = new ReplaySubject<MinMaxDateModel>(1);\n public currentYear: ReplaySubject<number> = new ReplaySubject<number>(1);\n public selectedPicker: BehaviorSubject<'day' | 'month' | 'year'> = new BehaviorSubject<'day' | 'month' | 'year'>(\n 'day',\n );\n abstract calendar: DayModel[] | { currentMonth: DayModel[]; nextMonth: DayModel[] };\n\n public alive = true;\n\n protected constructor(protected _cdr: ChangeDetectorRef) {}\n\n generateCalendar(selectedDate: Dayjs, year: number, month: number, minMax: MinMaxDateModel): DayModel[] {\n const calendarStartDay = selectedDate.set('year', year).set('month', month).set('date', 1).startOf('week');\n const calendar = new Array(42).fill(1).map((v, i) => {\n return calendarStartDay.add(i, 'day');\n });\n return calendar.map((d) => {\n return new DayModel({\n date: new Date(d.toDate()),\n isCurrentMonth: month === d.month(),\n disabled: !this.isSuitableMinDate(d.toDate(), minMax.min) || !this.isSuitableMaxDate(d.toDate(), minMax.max),\n selected: this.isSelected(d.toDate(), selectedDate.toDate()),\n });\n });\n }\n\n isSuitableMinDate(d: Date, minDate: Date | string | number) {\n return dayjs(new Date(minDate)).startOf('date').toDate() <= new Date(d) || !minDate;\n }\n\n isSuitableMaxDate(d: Date, maxDate: Date | string | number) {\n return new Date(d) < dayjs(new Date(maxDate)).endOf('date').toDate() || !maxDate;\n }\n\n isSelected(date: Date, selectedDate: Date) {\n const isSelectedDate = date.getDate() === selectedDate?.getDate();\n const isSelectedYear = date.getFullYear() === selectedDate?.getFullYear();\n const isSelectedMonth = date.getMonth() === selectedDate?.getMonth();\n return isSelectedDate && isSelectedMonth && isSelectedYear && !this.isDateNull;\n }\n\n ngOnDestroy(): void {\n this.alive = false;\n }\n\n selectPicker(entity: 'day' | 'month' | 'year') {\n this.selectedPicker.next(entity);\n }\n\n selectMonth(month: number) {\n this.currentMonth.next(month);\n this.selectPicker('day');\n }\n\n selectYear(year: number) {\n this.setYear(year);\n this.selectPicker('day');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.changeCalendarData(this.selectedDate);\n if (changes['open']) {\n this.selectedPicker.next('day');\n }\n }\n\n changeCalendarData(selectedDate: Date | number | string) {\n let date: Date | string | number;\n if (!this.isSuitableMinDate(new Date(selectedDate), this.min)) {\n date = this.min;\n } else if (!this.isSuitableMaxDate(new Date(selectedDate), this.max)) {\n date = this.max;\n } else {\n date = selectedDate ? selectedDate : this.min ? this.min : this.max ? this.max : new Date();\n }\n this.currentMonth.next(new Date(date).getMonth());\n this.currentYear.next(new Date(date).getFullYear());\n this.minMax.next({ min: this.min, max: this.max });\n }\n\n setYear(year: number) {\n this.currentYear.next(year);\n }\n\n changeMonth(month: number, year: number) {\n const { availableYear, availableMonth } = this.getAvailableMonthYear(month, year);\n this.currentMonth.next(availableMonth);\n this.currentYear.next(availableYear);\n }\n\n getAvailableMonthYear(month: number, year: number) {\n if (month > 11) {\n return { availableMonth: month - 12, availableYear: year + 1 };\n }\n if (month < 0) {\n return { availableMonth: 12 + month, availableYear: year - 1 };\n }\n return { availableMonth: month, availableYear: year };\n }\n\n getMothName(month: number) {\n return this.locale.months[month];\n }\n\n selectDate(date: Date) {\n this.setDate.emit(date);\n }\n\n scrollMonth = (e: any, month: number, year: number) => {\n const delta = e?.deltaY ?? e;\n if (e instanceof WheelEvent) {\n e.preventDefault();\n }\n if (delta > 0) {\n this.changeMonth(month - 1, year);\n } else {\n this.changeMonth(month + 1, year);\n }\n };\n}\n","import { Directive, ElementRef, Inject, OnDestroy } from '@angular/core';\n\n@Directive({\n selector: '[tetaScrollToSelectedYear]',\n standalone: true,\n})\nexport class ScrollToSelectedYearDirective implements OnDestroy {\n public alive = true;\n\n constructor(@Inject(ElementRef) private readonly el: ElementRef<Element>) {}\n\n ngOnDestroy(): void {\n this.alive = false;\n }\n\n ngAfterViewInit(): void {\n this.el.nativeElement.scrollIntoView({ inline: 'center', block: 'center' });\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { viewType } from '../../../common/model/view-type.model';\nimport dayjs from 'dayjs';\nimport { MinMaxDateModel } from '../model/min-max-date.model';\nimport { TetaLocalisation } from '../../../locale/teta-localisation';\nimport { ScrollToSelectedYearDirective } from './scroll-to-selected-year.directive';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'teta-year-picker',\n templateUrl: './year-picker.component.html',\n styleUrls: ['./year-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, ScrollToSelectedYearDirective]\n})\nexport class YearPickerComponent implements OnInit {\n @Input() selectedYear: number;\n @Input() viewType: viewType;\n @Input() minMax?: MinMaxDateModel;\n @Input() locale: TetaLocalisation;\n @Output() selectYear: EventEmitter<number> = new EventEmitter<number>();\n public years: { id: number; isSelected: boolean; disabled: boolean }[];\n\n constructor() {}\n\n pickYear(year: number, disabled: boolean) {\n if (!disabled) {\n this.selectYear.emit(year);\n }\n }\n\n ngOnInit(): void {\n this.years = new Array(100).fill(1).map((v, i) => {\n const year = new Date().getFullYear() + (i - 50);\n return { id: year, isSelected: year === this.selectedYear, disabled: this.isDisabled(year) };\n });\n }\n\n isDisabled(year: number) {\n if (this.minMax) {\n const isSuitableMax =\n dayjs(new Date().setFullYear(year)).startOf('year').isAfter(new Date(this.minMax.max)) &&\n this.minMax.max !== null;\n const isSuitableMin =\n dayjs(new Date().setFullYear(year)).endOf('year').isBefore(new Date(this.minMax.min)) &&\n this.minMax.min !== null;\n return isSuitableMax || isSuitableMin;\n }\n return false;\n }\n}\n","<div class=\"column\">\n <div class=\"font-title-3 padding-v-4 padding-h-3\">\n <p>{{ locale.selectYear }}</p>\n </div>\n <div class=\"datepicker-year overflow-y-auto\">\n @for (y of years; track y) {\n <div class=\"font-button-2\" (click)=\"pickYear(y.id, y.disabled)\">\n <div\n [ngClass]=\"{ 'datepicker-year_item_active': y.isSelected, 'datepicker-year_item_disabled': y.disabled }\"\n [class]=\"'datepicker-year_item column align-center justify-content-center datepicker_' + viewType\"\n >\n @if (y.isSelected === true) {\n <div tetaScrollToSelectedYear>\n <span>{{ y.id }}</span>\n </div>\n }\n @if (!y.isSelected) {\n <div>\n <span>{{ y.id }} </span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { viewType } from '../../../common/model/view-type.model';\nimport { NgClass } from '@angular/common';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { ButtonComponent } from '../../button/button/button.component';\n\n@Component({\n selector: 'teta-month-picker',\n templateUrl: './month-picker.component.html',\n styleUrls: ['./month-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ButtonComponent, IconComponent, NgClass]\n})\nexport class MonthPickerComponent implements OnInit {\n @Input() selectedMonth: number = 1;\n @Input() viewType: viewType;\n @Input() currentYear: number;\n @Input() localeMoths: string[];\n @Output() selectMonth: EventEmitter<number> = new EventEmitter<number>();\n @Output() changeYear: EventEmitter<number> = new EventEmitter<number>();\n public months: IIdName<any>[] = [];\n\n constructor() {}\n\n pickMonth(monthId: number) {\n this.selectMonth.emit(monthId);\n }\n\n pickYear(year: number) {\n this.changeYear.emit(year);\n }\n\n ngOnInit(): void {\n this.months = this.localeMoths.map((m, i) => {\n return {\n id: i,\n name: m,\n isSelected: this.selectedMonth === i,\n };\n });\n }\n}\n","<div class=\"padding-h-3 padding-v-2 gap-8 column datepicker-month-wrapper\">\n <div class=\"row align-center justify-content-between font-button-2\">\n <teta-button\n [class]=\"'change-month-button datepicker_' + viewType\"\n [square]=\"true\"\n (click)=\"pickYear(currentYear - 1)\"\n palette=\"text\"\n view=\"ghost\"\n >\n <teta-icon name=\"arrowLeftKey\" [palette]=\"'text'\"></teta-icon>\n </teta-button>\n <p>{{ currentYear }}</p>\n <teta-button\n [square]=\"true\"\n [class]=\"'change-month-button datepicker_' + viewType\"\n (click)=\"pickYear(currentYear + 1)\"\n palette=\"text\"\n view=\"ghost\"\n >\n <teta-icon name=\"arrowRightKey\" [palette]=\"'text'\"></teta-icon>\n </teta-button>\n </div>\n <div class=\"datepicker-month font-body-3 color-text-90\" style=\"width: 100%\">\n @for (month of months; track month) {\n <div (click)=\"pickMonth(month.id)\">\n <div\n [ngClass]=\"{ 'datepicker-month_item_active': month['isSelected'] }\"\n [class]=\"'datepicker-month_item column align-center justify-content-center datepicker_' + viewType\"\n >\n <p>\n {{ month.name }}\n </p>\n </div>\n </div>\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { DayModel } from '../../model/day-model';\n\n@Component({\n selector: 'teta-day-item',\n templateUrl: './day-item.component.html',\n styleUrls: ['./day-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class DayItemComponent implements OnInit {\n @Input() day: DayModel;\n\n ngOnInit(): void {}\n}\n","<p>{{ day.date.getDate() }}</p>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { DayModel } from '../model/day-model';\nimport { DateFromToModel } from '../model/from-to.model';\nimport dayjs from 'dayjs';\nimport { viewType } from '../../../common/model/view-type.model';\nimport { TetaLocalisation } from '../../../locale/teta-localisation';\nimport { DayItemComponent } from './day-item/day-item.component';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'teta-day-picker',\n templateUrl: './day-picker.component.html',\n styleUrls: ['./day-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, DayItemComponent]\n})\nexport class DayPickerComponent implements OnChanges {\n @Input() date: Date | string | number = new Date();\n @Input() calendar: DayModel[];\n @Input() viewType: viewType;\n @Input() range?: DateFromToModel;\n @Input() min: Date | string | number;\n @Input() max: Date | string | number;\n @Input() locale: TetaLocalisation;\n @Input() hoveredDate?: Date;\n @Output() hoveredDateChange?: EventEmitter<Date> = new EventEmitter<Date>();\n @Output() selectDate: EventEmitter<Date> = new EventEmitter<Date>();\n public dayOrder: string[];\n constructor() {}\n\n isInRange(day: DayModel, from: Date | number | string, to: Date | number | string) {\n const matchesMinDate = dayjs(new Date(from)).startOf('date').toDate() <= day.date;\n const matchesMaxDate = day.date < dayjs(new Date(to)).endOf('date').toDate();\n return matchesMinDate && matchesMaxDate;\n }\n\n isHoveredRange(day: DayModel) {\n if (!this.range?.to && this.range?.from) {\n return (\n this.isInRange(day, this.range.from, this.hoveredDate) || this.isInRange(day, this.hoveredDate, this.range.from)\n );\n }\n return false;\n }\n\n isActiveRange(day: DayModel) {\n if (this.range?.from && this.range?.to) {\n return this.isInRange(day, this.range.from, this.range.to);\n }\n return false;\n }\n\n pickDate(day: DayModel) {\n if (!day.disabled) {\n this.selectDate.emit(day.date);\n }\n }\n\n getRangeActiveClass(d: DayModel) {\n if (this.range && new Date(this.range?.from).getTime() !== new Date(this.range?.to).getTime()) {\n if (this.range.to) {\n return this.getClassStaticItem(d);\n } else {\n if (this.hoveredDate.getTime() === d.date.getTime()) {\n return this.getClassHoveredItem();\n } else {\n return this.getClassSelectedItem(d);\n }\n }\n }\n return '';\n }\n\n hover(date: Date) {\n if (date?.getTime() !== this.hoveredDate?.getTime()) {\n this.hoveredDate = date;\n this.hoveredDateChange.emit(date);\n }\n }\n\n getClassStaticItem(d: DayModel) {\n const from = dayjs(new Date(this.range.from)).startOf('day').toDate();\n const to = dayjs(new Date(this.range.to)).startOf('day').toDate();\n const itemDate = dayjs(new Date(d.date)).startOf('day').toDate();\n if (from.getTime() === itemDate.getTime()) {\n return 'datepicker-date_active-first';\n }\n if (to.getTime() === itemDate.getTime()) {\n return 'datepicker-date_active-second';\n }\n return '';\n }\n\n getClassHoveredItem() {\n if (new Date(this.range.from) > this.hoveredDate) {\n return 'datepicker-date_active-first';\n }\n if (new Date(this.range.from) < this.hoveredDate) {\n return 'datepicker-date_active-second';\n }\n return '';\n }\n\n getClassSelectedItem(d: DayModel) {\n if (d.selected && d.date < this.hoveredDate) {\n return 'datepicker-date_active-first';\n }\n if (d.selected && d.date > this.hoveredDate) {\n return 'datepicker-date_active-second';\n }\n return '';\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const arr = [...this.locale.daysShort];\n arr.push(arr.shift());\n this.dayOrder = arr;\n }\n}\n","<div class=\"datepicker-week font-caption\">\n @for (day of dayOrder; track day) {\n <p class=\"datepicker-day\">\n {{ day }}\n </p>\n }\n</div>\n<div class=\"datepicker-picker color-text-90 font-body-3\">\n @for (day of calendar; track day.date.getTime()) {\n <div\n [class]=\"getRangeActiveClass(day) + ' datepicker-date font-body-3 datepicker_' + viewType\"\n (mouseenter)=\"hover(day.date)\"\n (click)=\"pickDate(day)\"\n [ngClass]=\"{\n 'datepicker-date_active': day.selected || (day.date === hoveredDate && range && !range.to),\n 'datepicker-date-range_hover': range && isHoveredRange(day),\n 'datepicker-date_disabled': day.disabled,\n 'color-text-30': day.disabled || (!range && !day.isCurrentMonth),\n 'datepicker-date-range_disabled': !day.isCurrentMonth && range,\n 'datepicker-date-range_active': isActiveRange(day),\n }\"\n >\n <teta-day-item [day]=\"day\"></teta-day-item>\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport dayjs from 'dayjs';\nimport { combineLatest, filter, map, takeWhile } from 'rxjs';\n\nimport { viewType } from '../../../../common/model/view-type.model';\nimport { BaseCalendar } from '../../base-calendar';\nimport { DayModel } from '../../model/day-model';\nimport { TetaLocalisation } from '../../../../locale/teta-localisation';\nimport { AsyncPipe } from '@angular/common';\nimport { YearPickerComponent } from '../../year-picker/year-picker.component';\nimport { MonthPickerComponent } from '../../month-picker/month-picker.component';\nimport { DayPickerComponent } from '../../day-picker/day-picker.component';\nimport { IconComponent } from '../../../icon/icon/icon.component';\nimport { ButtonComponent } from '../../../button/button/button.component';\n\n@Component({\n selector: 'teta-date-calendar',\n templateUrl: './date-calendar.component.html',\n styleUrls: ['./date-calendar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ButtonComponent, IconComponent, DayPickerComponent, MonthPickerComponent, YearPickerComponent, AsyncPipe]\n})\nexport class DateCalendarComponent extends BaseCalendar implements OnChanges, OnDestroy {\n @Input() selectedDate: Date | string | number = new Date();\n @Input() open: boolean;\n @Input() locale: TetaLocalisation;\n @Input() viewType: viewType;\n @Input() min: Date | string | number;\n @Input() isDateNull: boolean;\n @Input() max: Date | string | number;\n @Output() setDate: EventEmitter<Date> = new EventEmitter<Date>();\n public calendar: DayModel[] = [];\n\n constructor(override _cdr: ChangeDetectorRef) {\n super(_cdr);\n combineLatest([this.currentYear, this.currentMonth, this.minMax])\n .pipe(\n takeWhile(() => this.alive),\n filter(([currentYear, currentMonth]) => currentMonth !== null && currentYear !== null),\n map(([year, month, minMax]) => {\n return this.generateCalendar(\n dayjs(new Date(this.selectedDate)).locale('ru', { weekStart: 1 }),\n year,\n month,\n minMax,\n );\n }),\n )\n .subscribe((_) => {\n this.calendar = _;\n });\n }\n}\n","@if (\n { currentMonth: currentMonth | async, currentYear: currentYear | async, selectedPicker: selectedPicker | async };\n as data\n) {\n <div class=\"datepicker-content overflow-y-auto\">\n @if (data.selectedPicker === 'day') {\n <div class=\"padding-h-3 padding-v-2\" (wheel)=\"scrollMonth($event, data.currentMonth, data.currentYear)\">\n <div class=\"row align-center justify-content-between\">\n <teta-button\n [class]=\"'change-month-button datepicker_' + viewType\"\n [square]=\"true\"\n (click)=\"changeMonth(data.currentMonth - 1, data.currentYear)\"\n palette=\"text\"\n view=\"ghost\"\n >\n <teta-icon name=\"arrowLeftKey\" [palette]=\"'text'\"></teta-icon>\n </teta-button>\n <div class=\"row gap-4 font-button-2\">\n <button\n [class]=\"'datepicker_' + viewType\"\n teta-button\n view=\"ghost\"\n palette=\"text\"\n (click)=\"selectPicker('month')\"\n >\n {{ getMothName(data.currentMonth) }}\n </button>\n <button\n [class]=\"'datepicker_' + viewType\"\n teta-button\n view=\"ghost\"\n palette=\"text\"\n (click)=\"selectPicker('year')\"\n >\n {{ data.currentYear }}\n </button>\n </div>\n <teta-button\n [square]=\"true\"\n [class]=\"'change-month-button datepicker_' + viewType\"\n (click)=\"changeMonth(data.currentMonth + 1, data.currentYear)\"\n palette=\"text\"\n view=\"ghost\"\n >\n <teta-icon name=\"arrowRightKey\" [palette]=\"'text'\"></teta-icon>\n </teta-button>\n </div>\n <div>\n <teta-day-picker\n [viewType]=\"viewType\"\n (selectDate)=\"selectDate($event)\"\n [locale]=\"locale\"\n [calendar]=\"calendar\"\n ></teta-day-picker>\n </div>\n </div>\n }\n @if (data.selectedPicker === 'month') {\n <teta-month-picker\n [localeMoths]=\"locale.months\"\n [currentYear]=\"data.currentYear\"\n (changeYear)=\"setYear($event)\"\n [selectedMonth]=\"data.currentMonth\"\n [viewType]=\"viewType\"\n (selectMonth)=\"selectMonth($event)\"\n ></teta-month-picker>\n }\n @if (data.selectedPicker === 'year') {\n <teta-year-picker\n [locale]=\"locale\"\n [viewType]=\"viewType\"\n (selectYear)=\"selectYear($event)\"\n [selectedYear]=\"data.currentYear\"\n ></teta-year-picker>\n }\n </div>\n}\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaDropdownContent]',\n standalone: true,\n})\nexport class DropdownContentDirective {\n nativeElement: HTMLElement;\n\n constructor(private _elementRef: ElementRef<HTMLElement>) {\n this.nativeElement = _elementRef.nativeElement;\n }\n}\n","export class DynamicData {\n [key: string]: any;\n\n constructor(value: { [key: string]: any }) {\n for (const key in value) {\n if (value.hasOwnProperty(key)) {\n this[key] = value[key];\n }\n }\n }\n}\n","import { ComponentRef, ViewRef } from '@angular/core';\n\nexport class TetaContentRef {\n constructor(\n public nodes: any[],\n public viewRef?: ViewRef,\n public componentRef?: ComponentRef<any>,\n ) {}\n}\n","import {\n ApplicationRef,\n ComponentFactoryResolver,\n ComponentRef,\n Injectable,\n Injector,\n Renderer2,\n RendererFactory2,\n TemplateRef,\n Type,\n} from '@angular/core';\n\nimport { DynamicData } from '../contract/dynamic-data';\nimport { TetaContentRef } from '../contract/teta-content-ref';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DynamicComponentService {\n private _renderer: Renderer2;\n\n constructor(\n private _componentFactoryResolver: ComponentFactoryResolver,\n private _rendererFactory: RendererFactory2,\n private _appRef: ApplicationRef,\n ) {\n this._renderer = this._rendererFactory.createRenderer(null, null);\n }\n\n createComponent<T>(\n component: Type<T>,\n contentRef: TetaContentRef,\n injector: Injector,\n container: any,\n ): ComponentRef<T> {\n const componentRef = this._componentFactoryResolver\n .resolveComponentFactory(component)\n .create(injector, contentRef.nodes);\n this._appRef.attachView(componentRef.hostView);\n container.appendChild(componentRef.location.nativeElement);\n return componentRef;\n }\n\n createContent(\n content: string | TemplateRef<any> | Type<any> | null | undefined,\n injector: Injector,\n context?: any,\n ): TetaContentRef {\n if (content === null || content === undefined) {\n throw new Error('Content is undefined');\n }\n if (typeof content === 'string') {\n return this.fromString(content);\n } else if (content instanceof TemplateRef) {\n return this.fromTemplate(content, context);\n } else {\n return this.fromComponent(content, injector, context);\n }\n }\n\n destroy<T>(\n component: ComponentRef<T> | null | undefined,\n content: TetaContentRef | null,\n container: HTMLElement,\n ): void {\n if (component) {\n this._appRef.detachView(component.hostView);\n component.destroy();\n }\n if (content && content.viewRef) {\n content.viewRef.destroy();\n }\n content = null;\n }\n\n getContext(content: string | TemplateRef<any> | Type<any> | null | undefined, context: any): any {\n if (content instanceof TemplateRef) {\n return {\n $implicit: context,\n data: context,\n };\n }\n return context;\n }\n\n getInjector(data: DynamicData, parent: Injector): Injector {\n return Injector.create({\n providers: [\n {\n provide: DynamicData,\n useValue: data,\n },\n ],\n parent,\n });\n }\n\n private fromString(content: string): TetaContentRef {\n return new TetaContentRef([[this._renderer.createText(`${content}`)]]);\n }\n\n private fromTemplate(content: TemplateRef<any>, context: any): TetaContentRef {\n const viewRef = content.createEmbeddedView(context);\n this._appRef.attachView(viewRef);\n return new TetaContentRef([viewRef.rootNodes], viewRef);\n }\n\n private fromComponent(content: any, injector: Injector, context: any): TetaContentRef {\n const componentFactory = this._componentFactoryResolver.resolveComponentFactory<any>(content);\n const componentRef = componentFactory.create(injector);\n for (const key in context) {\n if (Object.prototype.hasOwnProperty.call(context, key)) {\n componentRef.instance[key] = context[key];\n }\n }\n const componentNativeEl = componentRef.location.nativeElement;\n this._appRef.attachView(componentRef.hostView);\n return new TetaContentRef([[componentNativeEl]], componentRef.hostView, componentRef);\n }\n}\n","export class ArrayUtil {\n public static asArray<T>(value: T | T[]): T[] {\n if (value === null || value === undefined) {\n return [];\n }\n if (value instanceof Array) {\n return value;\n }\n return [value];\n }\n\n public static flatten(data: any[], children?: string | ((item: any) => any[]), onlyLeafs?: boolean): any[] {\n const result: any[] = [];\n data.forEach((child) => {\n let childItems: any[] = [];\n if (children) {\n if (typeof children === 'string') {\n childItems = child[children];\n }\n if (typeof children === 'function') {\n childItems = children(child);\n }\n } else {\n childItems = child.children;\n }\n if (childItems !== null && childItems !== undefined && childItems.length > 0) {\n if (!onlyLeafs) {\n result.push(child);\n }\n result.push(...ArrayUtil.flatten(childItems, children, onlyLeafs));\n } else {\n result.push(child);\n }\n });\n return result;\n }\n\n static findRecursive(tree: any[], comparer: (iterableNode: any) => boolean, children = 'children'): any {\n const found = tree.find((x) => comparer(x));\n if (found !== null && found !== undefined) {\n return found;\n }\n for (let i = 0, l = tree.length; i < l; i++) {\n const item = tree[i];\n if (item[children] && item[children].length) {\n const res = ArrayUtil.findRecursive(item[children], comparer);\n if (res !== null && res !== undefined) {\n return res;\n }\n }\n }\n return null;\n }\n\n static filterRecursive(\n array: any[],\n filter: (item: any) => boolean,\n children = 'children',\n keepChildren = true,\n fullscanChildren = false,\n ): any {\n const result = [];\n if (array && array.length) {\n for (const item of array) {\n const resultItem = Object.assign({}, item);\n if (filter(resultItem)) {\n result.push(resultItem);\n if (!keepChildren) {\n resultItem[children] = [];\n if (fullscanChildren) {\n continue;\n }\n break;\n }\n } else if (item[children] && item[children].length > 0) {\n resultItem[children] = [];\n const found = ArrayUtil.filterRecursive(item[children], filter, children, keepChildren, fullscanChildren);\n if (found?.length > 0) {\n resultItem[children] = found;\n result.push(resultItem);\n }\n }\n }\n }\n return result;\n }\n\n static distinct<T>(array: T[], comparator: (item: T) => any): T[] {\n const result: T[] = [];\n if (array && array.length) {\n for (const item of array) {\n const found = result.find((_) => comparator(_) === comparator(item));\n if (!found) {\n result.push(item);\n }\n }\n }\n return result;\n }\n\n static findParents(tree: any[], item: any): any[] | null {\n if (tree?.indexOf(item) >= 0) {\n return tree;\n }\n if (Array.isArray(tree)) {\n for (const treeNode of tree) {\n const childResult = this.findParents(treeNode.children, item);\n if (Array.isArray(childResult)) {\n return [treeNode].concat(childResult);\n }\n }\n }\n return null;\n }\n\n static moveItem(list: any[], sourceIndex: number, targetIndex: number) {\n const res = [...list];\n const item = list[sourceIndex];\n if (targetIndex > sourceIndex) {\n res.splice(targetIndex, 0, item);\n res.splice(sourceIndex, 1);\n } else {\n res.splice(sourceIndex, 1);\n res.splice(targetIndex, 0, item);\n }\n return res;\n }\n}\n","export class DomUtil {\n public static clickedInside(target: HTMLElement | undefined | null, event: MouseEvent): boolean {\n return !!target && event.composedPath().indexOf(target) >= 0;\n }\n\n public static findTransformedParent(node: HTMLElement) {\n while (node !== null && node.tagName !== 'BODY') {\n const style = getComputedStyle(node);\n if (style.transform !== 'none') {\n return node;\n }\n node = node.parentNode as HTMLElement;\n }\n return null;\n }\n\n public static isOverflown(element: HTMLElement) {\n return element.scrollHeight > element.clientHeight || element.scrollWidth > element.clientWidth;\n }\n}\n","import { IRect } from '../contract/i-rect';\nimport { Align } from '../enum/align.enum';\nimport { VerticalAlign } from '../enum/vertical-align.enum';\n\nexport class PositionUtil {\n public static getPosition(\n containerPosition: IRect,\n elementPosition: IRect,\n align: Align,\n verticalAlign: VerticalAlign,\n margin = 0,\n verticalMargin = 0,\n transformedParentRect: IRect = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n },\n ): IRect {\n const rect: IRect = {};\n const elementWidth = elementPosition.right - elementPosition.left;\n const elementHeight = elementPosition.bottom - elementPosition.top;\n const containerWidth = containerPosition.right - containerPosition.left;\n const containerHeight = containerPosition.bottom - containerPosition.top;\n if (align === Align.auto) {\n align = Align.left;\n if (window.innerWidth < containerPosition.left + elementWidth) {\n align = Align.right;\n }\n }\n if (align === Align.left) {\n rect.left = containerPosition.left + margin;\n }\n if (align === Align.right) {\n rect.left = containerPosition.right - elementWidth - margin;\n }\n if (align === Align.center) {\n rect.left = (containerPosition.left + containerPosition.right) / 2 - elementWidth / 2;\n }\n if (align === Align.outerAuto) {\n align = Align.outerRight;\n if (window.innerWidth < containerPosition.right + elementWidth) {\n align = Align.outerLeft;\n }\n }\n if (align === Align.outerLeft) {\n rect.left = containerPosition.left - elementWidth + margin;\n }\n if (align === Align.outerRight) {\n rect.left = containerPosition.right - margin;\n }\n\n if (align === Align.fitWidth) {\n rect.left = containerPosition.left + margin;\n rect.right = window.innerWidth - containerPosition.right + margin;\n }\n\n if (align === Align.minWidth) {\n rect.left = containerPosition.left + margin;\n rect.minWidth = containerWidth;\n }\n\n if (verticalAlign === VerticalAlign.auto) {\n if (\n containerPosition.bottom + elementHeight > window.innerHeight &&\n containerPosition.bottom >= window.innerHeight / 2\n ) {\n verticalAlign = VerticalAlign.top;\n } else {\n verticalAlign = VerticalAlign.bottom;\n }\n }\n if (verticalAlign === VerticalAlign.innerAuto) {\n if (\n containerPosition.bottom + elementHeight > window.innerHeight &&\n containerPosition.bottom >= window.innerHeight / 2\n ) {\n verticalAlign = VerticalAlign.innerTop;\n } else {\n verticalAlign = VerticalAlign.innerBottom;\n }\n }\n if (verticalAlign === VerticalAlign.top) {\n rect.top = containerPosition.top - elementHeight - verticalMargin;\n }\n if (verticalAlign === VerticalAlign.bottom) {\n rect.top = containerPosition.bottom + verticalMargin;\n }\n if (verticalAlign === VerticalAlign.innerTop) {\n rect.top = containerPosition.bottom - elementHeight - verticalMargin;\n }\n if (verticalAlign === VerticalAlign.innerBottom) {\n rect.top = containerPosition.top + verticalMargin;\n }\n if (verticalAlign === VerticalAlign.center) {\n rect.top = (containerPosition.top + containerPosition.bottom) / 2 - elementHeight / 2;\n }\n\n if (rect.left + elementWidth > window.innerWidth) {\n rect.left = window.innerWidth - elementWidth;\n }\n if (rect.left < 0) {\n rect.left = 0;\n }\n if (rect.top + elementHeight > window.innerHeight || rect.bottom < 0) {\n rect.bottom = 0;\n }\n if (rect.top < 0) {\n rect.top = 0;\n }\n if (\n verticalAlign === VerticalAlign.bottom ||\n verticalAlign === VerticalAlign.center ||\n verticalAlign === VerticalAlign.innerBottom\n ) {\n rect.maxHeight = window.innerHeight - rect.top;\n }\n if (verticalAlign === VerticalAlign.top || verticalAlign === VerticalAlign.innerTop) {\n rect.maxHeight = containerPosition.top;\n }\n if (!isNaN(rect.left)) {\n rect.left = rect.left - transformedParentRect.left;\n }\n if (!isNaN(rect.right)) {\n rect.right = rect.right - transformedParentRect.left;\n }\n if (!isNaN(rect.top)) {\n rect.top = rect.top - transformedParentRect.top;\n }\n if (!isNaN(rect.bottom)) {\n rect.bottom = rect.bottom ? rect.bottom - transformedParentRect.bottom : rect.bottom;\n }\n return rect;\n }\n\n public static setElementPosition(element: HTMLElement, rect: IRect): void {\n element.style.left = rect.left != null ? `${rect.left}px` : '';\n element.style.right = rect.right != null ? `${rect.right}px` : '';\n element.style.top = rect.top != null ? `${rect.top}px` : '';\n element.style.bottom = rect.bottom != null ? `${rect.bottom}px` : '';\n element.style.maxHeight = rect.maxHeight != null ? `${rect.maxHeight}px` : '';\n element.style.minWidth = rect.minWidth != null ? `${rect.minWidth}px` : '';\n }\n\n public static getMaxHeight(position: IRect): number | null {\n let maxHeight = null;\n maxHeight = 1;\n return maxHeight;\n }\n\n public static getMaxWidth(position: IRect): number | null {\n let maxWidth = null;\n maxWidth = 1;\n return maxWidth;\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnDestroy, OnInit } from '@angular/core';\nimport { ArrayUtil } from '../../../common/util/array-util';\nimport { animate, style, transition, trigger } from '@angular/animations';\n\n@Component({\n selector: 'teta-popup-content',\n templateUrl: './popup-content.component.html',\n styleUrls: ['./popup-content.component.scss'],\n animations: [\n trigger('dialog', [\n transition('void => *', [style({ opacity: '0' }), animate(200, style({ opacity: '1' }))]),\n transition('* => void', [animate(200, style({ opacity: '0' }))]),\n ]),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class PopupContentComponent implements OnInit, OnDestroy {\n @HostBinding('@dialog') dialog = true;\n\n @Input() className: string | string[];\n\n @HostBinding('class')\n private get getClass(): string {\n const result = [...ArrayUtil.asArray(this.className), 'popup-content'];\n return result.join(' ');\n }\n\n constructor() {}\n\n addClass(className: string) {\n if (this.className) {\n if (typeof this.className === 'string') {\n this.className = className;\n }\n if (this.className instanceof Array) {\n this.className.push(className);\n }\n } else {\n this.className = [className];\n }\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {}\n}\n","<ng-content></ng-content>\n","import {\n ChangeDetectorRef,\n ComponentRef,\n Directive,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n Type,\n} from '@angular/core';\nimport { filter, takeWhile } from 'rxjs/operators';\n\nimport { TetaContentRef } from '../common/contract/teta-content-ref';\nimport { Align } from '../common/enum/align.enum';\nimport { VerticalAlign } from '../common/enum/vertical-align.enum';\nimport { DynamicComponentService } from '../common/service/dynamic-component.service';\nimport { PopupContentComponent } from '../component/dynamic-component/popup-content/popup-content.component';\n\n@Directive()\nexport abstract class DynamicContentBaseDirective implements OnDestroy {\n @Input() data: any;\n @Input() className?: string | string[];\n @Input() align: Align = Align.left;\n @Input() verticalAlign: VerticalAlign = VerticalAlign.auto;\n @Input() appendToBody = false;\n\n @Input() set open(open: boolean) {\n this._open = open;\n if (this._open) {\n this.createContentRef();\n } else {\n this.destroyContentRef();\n }\n }\n\n @Output() openChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n protected _alive = true;\n protected _componentRef?: ComponentRef<any> | null;\n protected _content?: TetaContentRef;\n protected _open = false;\n\n protected abstract get _dynamicContent(): string | TemplateRef<any> | Type<any> | null | undefined;\n\n protected constructor(\n protected _document: any,\n protected _elementRef: ElementRef,\n protected _service: DynamicComponentService,\n protected _injector: Injector,\n protected _zone: NgZone,\n protected _cdr: ChangeDetectorRef,\n ) {\n this._zone.onStable\n .pipe(\n takeWhile((_) => this._alive),\n filter((_) => this._open),\n )\n .subscribe((_) => {\n this.setPosition();\n });\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n this.destroyContentRef();\n }\n\n protected createContentRef<T>(className?: string | string[]): ComponentRef<T> {\n if (!this._componentRef) {\n this._open = true;\n const injector = this._service.getInjector(this.data, this._injector);\n const context = this._service.getContext(this._dynamicContent, this.data);\n this._content = this._service.createContent(this._dynamicContent, this._injector, context);\n this._componentRef = this._service.createComponent(\n PopupContentComponent,\n this._content,\n injector,\n this.appendToBody ? this._document.body : this._elementRef.nativeElement,\n );\n if (className) {\n this._componentRef.instance.addClass(className);\n }\n }\n return this._componentRef;\n }\n\n protected destroyContentRef(): void {\n this._open = false;\n this._service.destroy(\n this._componentRef,\n this._content,\n this.appendToBody ? this._document.body : this._elementRef.nativeElement,\n );\n this._componentRef = null;\n }\n\n protected abstract setPosition(): void;\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n HostListener,\n Inject,\n Injector,\n Input,\n NgZone,\n OnDestroy,\n TemplateRef,\n Type,\n} from '@angular/core';\n\nimport { Align } from '../../common/enum/align.enum';\nimport { VerticalAlign } from '../../common/enum/vertical-align.enum';\nimport { viewType } from '../../common/model/view-type.model';\nimport { DynamicComponentService } from '../../common/service/dynamic-component.service';\nimport { ArrayUtil } from '../../common/util/array-util';\nimport { DomUtil } from '../../common/util/dom-util';\nimport { PositionUtil } from '../../common/util/position-util';\nimport { DynamicContentBaseDirective } from '../dynamic-content-base.directive';\n\n@Directive({\n selector: '[tetaHint]',\n standalone: true,\n})\nexport class HintDirective extends DynamicContentBaseDirective implements OnDestroy {\n /**\n * Строка, шаблон или компонент для создания контекстного меню\n */\n @Input() tetaHint?: string | TemplateRef<any> | Type<any>;\n @Input() override align: Align = Align.center;\n @Input() override verticalAlign: VerticalAlign = VerticalAlign.top;\n @Input() delay = 300;\n @Input() viewType: viewType = 'rounded';\n @Input() overflownOnly = false;\n\n get _dynamicContent() {\n return this.tetaHint;\n }\n\n private _timeout?: any;\n private _componentRect: any;\n\n constructor(\n @Inject(DOCUMENT)\n protected override _document: any,\n protected override _elementRef: ElementRef,\n protected override _service: DynamicComponentService,\n protected override _injector: Injector,\n protected override _zone: NgZone,\n protected override _cdr: ChangeDetectorRef,\n ) {\n super(_document, _elementRef, _service, _injector, _zone, _cdr);\n }\n\n @HostListener('mouseenter', ['$event'])\n mouseenter(): void {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(() => {\n this.createHint();\n }, this.delay);\n }\n\n @HostListener('mouseleave', ['$event'])\n mouseleave(): void {\n clearTimeout(this._timeout);\n if (this._open && this._componentRef) {\n this._timeout = setTimeout(() => {\n this.destroyContentRef();\n }, this.delay);\n }\n }\n\n @HostListener('click', ['$event'])\n click(event: MouseEvent): void {\n if (this._open && this._componentRef && DomUtil.clickedInside(this._componentRef.location.nativeElement, event)) {\n event.stopPropagation();\n }\n }\n\n protected setPosition() {\n if (this._componentRef && this._open) {\n if (!this._componentRect) {\n this._componentRect = this._componentRef.location.nativeElement.getBoundingClientRect();\n }\n const position = PositionUtil.getPosition(\n this._elementRef.nativeElement.getBoundingClientRect(),\n this._componentRect,\n this.align,\n this.verticalAlign,\n 0,\n 4,\n );\n PositionUtil.setElementPosition(this._componentRef.location.nativeElement, position);\n }\n }\n\n private createHint(): void {\n if (!this._dynamicContent || (this.overflownOnly && !DomUtil.isOverflown(this._elementRef.nativeElement))) {\n return;\n }\n this._componentRef = this.createContentRef();\n this._componentRef.instance.className = [...ArrayUtil.asArray(this.className), 'hint ', 'hint_' + this.viewType];\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\nimport { Align } from '../../../common/enum/align.enum';\nimport { viewType } from '../../../common/model/view-type.model';\nimport { HintDirective } from '../../../directive/hint/hint.directive';\n\n@Component({\n selector: 'teta-input',\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [HintDirective]\n})\nexport class InputComponent {\n @Input() label?: string;\n @Input() hint?: string;\n @Input() viewType: viewType = 'rounded';\n\n @Input()\n @HostBinding('class.row')\n horizontal = false;\n\n @Input()\n required = false;\n\n @HostBinding('class.column')\n get column() {\n return !this.horizontal;\n }\n\n align = Align;\n}\n","@if (label?.length > 0) {\n <div\n class=\"font-caption color-text-70 align-center row nowrap overflow-hidden text-overflow-ellipsis\"\n [class.row_6]=\"horizontal\"\n [class.text-field_required]=\"required\"\n >\n <span\n class=\"overflow-hidden text-overflow-ellipsis\"\n [tetaHint]=\"hint ?? label\"\n [align]=\"align.left\"\n [overflownOnly]=\"!hint || hint === label\"\n >\n {{ label }}\n </span>\n </div>\n}\n<div [class]=\"'input-container input_' + viewType\" [class.row_6]=\"horizontal\">\n <ng-content></ng-content>\n <div class=\"input-message font-error-message font-caption\">\n <ng-content select=\"message\"></ng-content>\n </div>\n</div>\n","import { Directive, Optional, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaDropdownHead]',\n standalone: true,\n})\nexport class DropdownHeadDirective {\n constructor(@Optional() public template: TemplateRef<any>) {}\n}\n","import {\n ChangeDetectorRef,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n NgZone,\n Output,\n Renderer2,\n} from '@angular/core';\nimport { takeWhile, throttleTime } from 'rxjs/operators';\n\nimport { AutoCloseIgnoreCase } from '../../common/contract/auto-close-ignore-case';\nimport { IRect } from '../../common/contract/i-rect';\nimport { Align } from '../../common/enum/align.enum';\nimport { VerticalAlign } from '../../common/enum/vertical-align.enum';\nimport { viewType } from '../../common/model/view-type.model';\nimport { DomUtil } from '../../common/util/dom-util';\nimport { PositionUtil } from '../../common/util/position-util';\nimport { DropdownContentDirective } from './dropdown-content.directive';\nimport { DropdownHeadDirective } from './dropdown-head.directive';\n\n@Directive()\nexport class DropdownBase {\n @Input() align: Align = Align.left;\n @Input() verticalAlign: VerticalAlign = VerticalAlign.auto;\n @Input() appendToBody: boolean;\n @Input() disabled: boolean;\n @Input() backdrop = false;\n @Input() className: string | string[];\n @Input() viewType: viewType = 'rounded';\n\n @Input()\n set open(val: boolean) {\n if (val != null && val !== this._open && !this.disabled) {\n if (val) {\n this.openDropdown();\n } else {\n this.closeDropdown();\n }\n }\n }\n\n get open(): boolean {\n return this._open;\n }\n\n get container() {\n return this.appendToBody ? this._document.body : this._elementRef.nativeElement;\n }\n\n @Output() openChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Input() autoClose = true;\n @Input() autoCloseIgnore: Array<AutoCloseIgnoreCase> = ['inside'];\n\n @ContentChild(DropdownHeadDirective, {\n static: false,\n read: ElementRef,\n })\n protected _head: ElementRef;\n\n @ContentChild(DropdownContentDirective, { static: false })\n protected _content: DropdownContentDirective;\n\n protected _body: HTMLElement | null = null;\n protected _backdrop: HTMLElement | null = null;\n protected _open = false;\n protected _alive = true;\n\n constructor(\n protected _cdr: ChangeDetectorRef,\n protected _document: any,\n protected _elementRef: ElementRef<HTMLElement>,\n protected _zone: NgZone,\n protected _renderer: Renderer2,\n ) {\n this._zone.onStable\n .pipe(\n takeWhile((_) => this._alive),\n throttleTime(10, undefined, { trailing: true }),\n )\n .subscribe((_) => {\n if (this._head?.nativeElement && this._body) {\n setTimeout(() => {\n if (this._head?.nativeElement && this._body) {\n this.setPosition(this._head.nativeElement, this._body);\n }\n });\n }\n });\n this.addScrollListener();\n }\n\n @HostListener('click', ['$event']) click(event: MouseEvent): void {\n if (this.open) {\n if (!DomUtil.clickedInside(this._body, event) || this.autoCloseIgnore.indexOf('inside') < 0) {\n this.closeDropdown();\n }\n } else {\n if (DomUtil.clickedInside(this._head.nativeElement, event)) {\n this.openDropdown();\n }\n }\n }\n\n @HostListener('document:click', ['$event']) documentClick(event: MouseEvent): void {\n if (!this.open || !this.autoClose || event.detail === 0 || DomUtil.clickedInside(this._head.nativeElement, event)) {\n return;\n }\n if (DomUtil.clickedInside(this._body, event)) {\n if (this.autoCloseIgnore.indexOf('inside') < 0) {\n this.closeDropdown();\n }\n } else {\n if (this.autoCloseIgnore.indexOf('outside') < 0) {\n this.closeDropdown();\n }\n }\n }\n\n @HostListener('window:keyup', ['$event']) keyUp(event: KeyboardEvent): void {\n const key: AutoCloseIgnoreCase[] = ['esc', 'enter'];\n if (!this.open || !this.autoClose || key.every((_) => this.autoCloseIgnore.indexOf(_) >= 0)) {\n return;\n }\n if (\n (event.code === 'Escape' && this.autoCloseIgnore.indexOf('esc') < 0) ||\n (event.code === 'Enter' && this.autoCloseIgnore.indexOf('enter') < 0)\n ) {\n this.closeDropdown();\n }\n }\n\n protected addScrollListener() {\n window.addEventListener('scroll', this.scrollListener, true);\n }\n\n protected removeScrollListener() {\n window.removeEventListener('scroll', this.scrollListener, true);\n }\n\n private scrollListener = (event) => {\n if (this.open && !this._body.contains(event.target) && this._body !== event.target) {\n this.closeDropdown();\n }\n };\n\n protected closeDropdown(): void {\n if (this.open && this._body && this.container.contains(this._body)) {\n this._renderer.removeChild(this.container, this._body);\n this._open = false;\n this._body = null;\n if (this._backdrop) {\n this._renderer.removeChild(this._document.body, this._backdrop);\n }\n this.openChange.emit(this.open);\n this._cdr.detectChanges();\n }\n }\n\n private openDropdown(): void {\n if (this._open || !this._content || this.disabled) {\n return;\n }\n this._open = true;\n this.openChange.emit(this.open);\n const renderer = this._renderer;\n const content = this._content.nativeElement;\n const container = (this._body = this._body || renderer.createElement('div'));\n renderer.addClass(container, 'dropdown');\n renderer.addClass(container, 'dropdown_' + this.viewType);\n if (this.backdrop) {\n this._backdrop = renderer.createElement('div');\n renderer.addClass(this._backdrop, 'dropdown-backdrop');\n renderer.appendChild(this._document.body, this._backdrop);\n }\n if (this.className != null) {\n if (this.className instanceof Array && this.className.length > 0) {\n this.className.forEach((_) => {\n renderer.addClass(container, _);\n });\n }\n if (typeof this.className === 'string') {\n renderer.addClass(container, this.className);\n }\n }\n renderer.appendChild(container, content);\n renderer.appendChild(this.container, container);\n setTimeout(() => {\n this.setPosition(this._head.nativeElement, this._body);\n });\n }\n\n private setPosition(container: HTMLElement, target: HTMLElement): void {\n const containerPosition = container.getBoundingClientRect();\n // target.style.maxHeight = null;\n const targetPosition = target.getBoundingClientRect();\n\n const rect: IRect = {\n bottom: containerPosition.bottom,\n top: containerPosition.top,\n left: containerPosition.left,\n right: containerPosition.right,\n };\n\n const targetRect: IRect = {\n bottom: targetPosition.bottom,\n top: targetPosition.top,\n left: targetPosition.left,\n right: targetPosition.right,\n };\n\n const targetTransformedParent = DomUtil.findTransformedParent(target);\n let parentPosition = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n };\n if (targetTransformedParent) {\n parentPosition = targetTransformedParent.getBoundingClientRect();\n }\n\n const position = PositionUtil.getPosition(rect, targetRect, this.align, this.verticalAlign, 0, 0, parentPosition);\n\n PositionUtil.setElementPosition(target, position);\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n NgZone,\n OnDestroy,\n OnInit,\n Renderer2,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { DropdownBase } from '../dropdown-base';\n\n@Component({\n selector: 'teta-dropdown',\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'dropdown',\n standalone: true,\n})\nexport class DropdownComponent extends DropdownBase implements OnInit, OnDestroy {\n constructor(\n protected override _cdr: ChangeDetectorRef,\n @Inject(DOCUMENT) protected override _document: any,\n protected override _elementRef: ElementRef<HTMLElement>,\n protected override _zone: NgZone,\n protected override _renderer: Renderer2,\n ) {\n super(_cdr, _document, _elementRef, _zone, _renderer);\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this.closeDropdown();\n this.removeScrollListener();\n this._alive = false;\n }\n}\n","<ng-content select=\"[tetaDropdownHead]\"></ng-content>\n","import { DatePipe, NgClass, AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { maskitoDateOptionsGenerator, maskitoDateTimeOptionsGenerator } from '@maskito/kit';\nimport dayjs from 'dayjs';\nimport { lastValueFrom, Observable, ReplaySubject, take } from 'rxjs';\n\nimport { Align } from '../../../common/enum/align.enum';\nimport { VerticalAlign } from '../../../common/enum/vertical-align.enum';\nimport { viewType } from '../../../common/model/view-type.model';\nimport { BasePicker } from '../base-picker';\nimport { DatePeriod } from '../model/date-period';\nimport { TetaConfigService } from '../../../locale/teta-config.service';\nimport { TetaLocalisation } from '../../../locale/teta-localisation';\nimport { DateCalendarComponent } from './date-calendar/date-calendar.component';\nimport { DropdownContentDirective } from '../../dropdown/dropdown-content.directive';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { MaskitoModule } from '@maskito/angular';\nimport { InputComponent } from '../../input/input/input.component';\nimport { DropdownHeadDirective } from '../../dropdown/dropdown-head.directive';\nimport { DropdownComponent } from '../../dropdown/dropdown/dropdown.component';\n\nexport const DATE_PICKER_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true,\n};\n\n@Component({\n selector: 'teta-date-picker',\n templateUrl: './date-picker.component.html',\n styleUrls: ['./date-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [DATE_PICKER_CONTROL_VALUE_ACCESSOR, DatePipe],\n imports: [\n DropdownComponent,\n DropdownHeadDirective,\n NgClass,\n InputComponent,\n FormsModule,\n MaskitoModule,\n IconComponent,\n DropdownContentDirective,\n DateCalendarComponent,\n AsyncPipe,\n ]\n})\nexport class DatePickerComponent extends BasePicker implements OnInit, ControlValueAccessor, OnChanges {\n @Input() date: Date | string | number = null;\n public locale: Observable<TetaLocalisation>;\n @Input() showTime = false;\n @Input() minDate: Date | string | number = null;\n @Input() maxDate: Date | string | number = null;\n @Input() invalid = false;\n @Input() disabled = false;\n @Input() align: Align = Align.left;\n @Input() verticalAlign: VerticalAlign = VerticalAlign.auto;\n @Input() viewType: viewType = 'rounded';\n @Input() appendToBody: boolean;\n @Input() backdrop = false;\n @Input() allowNull = true;\n\n @Input() firstDayOfWeek = 1;\n @Input() disabledDates: Date[];\n @Input() disabledPeriods: DatePeriod[];\n @Input() disabledDays: number[];\n @Input() minYearDate: Date;\n @Input() maxYearDate: Date;\n\n @ViewChild('input') input: ElementRef;\n @Output() selectDate: EventEmitter<Date> = new EventEmitter<Date>();\n public selectedDate: ReplaySubject<Date | string | number> = new ReplaySubject<Date | string | number>(1);\n public mask = '';\n @HostBinding('class.datepicker') private readonly classDatepicker = true;\n @HostBinding('class.datepicker-time') get dateTimeClass() {\n return this.showTime;\n }\n @HostBinding('tabindex') private readonly tabindex = 0;\n\n constructor(\n override _elementRef: ElementRef,\n override _cdr: ChangeDetectorRef,\n override datePipe: DatePipe,\n private localeService: TetaConfigService,\n ) {\n super(_elementRef, _cdr, datePipe);\n this.locale = this.localeService.locale;\n }\n\n ngOnInit(): void {\n if (!this.date) {\n this.setDate(this.allowNull ? null : new Date());\n this.date = this.allowNull ? null : new Date();\n } else {\n this.setDate(new Date(this.date));\n }\n this.prepareInput(true);\n }\n\n async prepareInput(isFirstRender?: boolean) {\n const config = await lastValueFrom(this.localeService.locale.pipe(take(1)));\n const str = this.date ? this.getLocaleString(this.date) : '';\n let option;\n const setMinMax = () => {\n if (this.minDate && !isFirstRender) {\n option.min = dayjs(new Date(this.minDate)).startOf('day');\n }\n if (this.maxDate && !isFirstRender) {\n option.max = dayjs(new Date(this.maxDate)).endOf('day');\n }\n };\n if (this.showTime) {\n this.mask = config.dateTimeMask;\n option = {\n dateMode: 'dd/mm/yyyy',\n timeMode: 'HH:MM',\n dateSeparator: '.',\n };\n setMinMax();\n this.maskitoOptions = maskitoDateTimeOptionsGenerator(option);\n } else {\n this.mask = config.dateMask;\n option = {\n mode: 'dd/mm/yyyy',\n separator: '.',\n };\n setMinMax();\n this.maskitoOptions = maskitoDateOptionsGenerator(option);\n }\n this.changePlaceholder(str);\n }\n\n onBlur() {\n if (this.allowNull && this.inputText.trim() === '') {\n this.setDate(null);\n this.emitValue(null);\n } else {\n const val = this.inputText.split(',');\n const { day, year, month } = this.getDateFromStr(val[0]);\n const { mins, hours } = this.getTimeFromStr(val[1]);\n if (day && year && month) {\n let date = new Date(year, month - 1, day);\n if (this.showTime) {\n date = new Date(date.setHours(hours || 0, mins || 0));\n }\n this.changeSelectedDate(this.getAvailableDate(this.minDate, this.maxDate, date));\n } else {\n this.setDate(this.date);\n }\n }\n }\n\n setDate(date) {\n if (!date && this.allowNull) {\n this.inputText = '';\n this.changePlaceholder('');\n this.selectedDate.next(new Date(this.minDate || new Date()));\n } else {\n this.inputText = this.getLocaleString(date);\n this.changePlaceholder(this.getLocaleString(date));\n this.selectedDate.next(date);\n }\n }\n\n onChange(date: Date) {}\n\n registerOnChange(fn: (date: Date) => any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {}\n\n writeValue(obj: Date | string | number): void {\n if (obj) {\n this.date = new Date(obj);\n this.setDate(new Date(this.date));\n } else {\n if (this.allowNull) {\n this.date = null;\n this.selectedDate.next(null);\n } else {\n this.date = this.minDate || new Date();\n this.selectedDate.next(this.minDate || new Date());\n }\n }\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.prepareInput(false);\n }\n}\n","@if ({ selectedDate: selectedDate | async }; as data) {\n <teta-dropdown\n class=\"row row_auto\"\n [appendToBody]=\"appendToBody\"\n [backdrop]=\"backdrop\"\n [open]=\"open\"\n (openChange)=\"openChange($event)\"\n [viewType]=\"viewType\"\n [disabled]=\"disabled\"\n [verticalAlign]=\"verticalAlign\"\n [align]=\"align\"\n [autoCloseIgnore]=\"['esc', 'inside', 'enter']\"\n >\n <div\n tetaDropdownHead\n [class]=\"'datepicker-head font-body-3 gap-8 datepicker_' + viewType\"\n [ngClass]=\"{ 'datepicker-head_invalid': invalid, 'datepicker-head_disabled': disabled }\"\n >\n <teta-input class=\"row row_auto flex\">\n <div [class]=\"'row_auto row datepicker_' + viewType\">\n <div class=\"row row_auto position-relative font-body-3 align-center\">\n <input\n [ngClass]=\"{ 'color-text-90': !disabled }\"\n [disabled]=\"disabled\"\n #input\n style=\"z-index: 1\"\n class=\"row_auto border-0\"\n (keydown)=\"checkEnter($event)\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"changeInput($event)\"\n [maskito]=\"maskitoOptions\"\n />\n @if (data.selectedDate || allowNull) {\n <div\n (click)=\"input.focus()\"\n class=\"position-absolute color-text-10\"\n style=\"cursor: text; user-select: none\"\n >\n {{ placeholder }}\n </div>\n }\n </div>\n <teta-icon [name]=\"'calendar'\" [palette]=\"'text'\"></teta-icon>\n </div>\n </teta-input>\n </div>\n <div tetaDropdownContent (click)=\"$event.preventDefault()\">\n <teta-date-calendar\n [isDateNull]=\"date === null\"\n [open]=\"open\"\n [max]=\"maxDate\"\n [min]=\"minDate\"\n (setDate)=\"changeSelectedDate($event)\"\n [selectedDate]=\"data.selectedDate\"\n [viewType]=\"viewType\"\n [locale]=\"locale | async\"\n ></teta-date-calendar>\n </div>\n </teta-dropdown>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport dayjs from 'dayjs';\nimport { combineLatest, filter, map, shareReplay, takeWhile } from 'rxjs';\n\nimport { viewType } from '../../../../common/model/view-type.model';\nimport { BaseCalendar } from '../../base-calendar';\nimport { DayModel } from '../../model/day-model';\nimport { DateFromToModel } from '../../model/from-to.model';\nimport { TetaLocalisation } from '../../../../locale/teta-localisation';\nimport { YearPickerComponent } from '../../year-picker/year-picker.component';\nimport { MonthPickerComponent } from '../../month-picker/month-picker.component';\nimport { DayPickerComponent } from '../../day-picker/day-picker.component';\nimport { IconComponent } from '../../../icon/icon/icon.component';\nimport { NgClass, AsyncPipe } from '@angular/common';\nimport { ButtonComponent } from '../../../button/button/button.component';\n\n@Component({\n selector: 'teta-range-calendar',\n templateUrl: './range-calendar.component.html',\n styleUrls: ['./range-calendar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ButtonComponent,\n NgClass,\n IconComponent,\n DayPickerComponent,\n MonthPickerComponent,\n YearPickerComponent,\n AsyncPipe,\n ]\n})\nexport class RangeCalendarComponent extends BaseCalendar implements OnChanges, OnDestroy {\n @Input() locale: TetaLocalisation;\n @Input() open: boolean;\n @Input() date: DateFromToModel;\n @Input() viewType: viewType;\n @Input() allowNull = true;\n @Input() selectedDate: DateFromToModel;\n @Input() min: Date | string | number;\n @Input() isDateNull: boolean;\n @Input() max: Date | string | number;\n @Output() hoveredDateChange: EventEmitter<Date> = new EventEmitter<Date>();\n @Output() setDate: EventEmitter<Date> = new EventEmitter<Date>();\n public calendar: { currentMonth: DayModel[]; nextMonth: DayModel[] };\n public _hoveredDate: Date = null;\n get hoveredDate() {\n return this._hoveredDate;\n }\n\n set hoveredDate(e) {\n this._hoveredDate = e;\n this._cdr.detectChanges();\n }\n\n constructor(override _cdr: ChangeDetectorRef) {\n super(_cdr);\n combineLatest([this.currentYear, this.currentMonth, this.minMax])\n .pipe(\n takeWhile(() => this.alive),\n shareReplay({ bufferSize: 1, refCount: false }),\n filter(([currentYear, currentMonth]) => currentMonth !== null && currentYear !== null),\n map(([year, month, minMax]) => {\n const { availableYear, availableMonth } = this.getAvailableMonthYear(month + 1, year);\n return {\n currentMonth: this.generateCalendar(\n dayjs(new Date(this.selectedDate.from || new Date())).locale('ru', { weekStart: 1 }),\n year,\n month,\n minMax,\n ),\n nextMonth: this.generateCalendar(\n dayjs(new Date(this.selectedDate.from || new Date())).locale('ru', { weekStart: 1 }),\n availableYear,\n availableMonth,\n minMax,\n ),\n };\n }),\n )\n .subscribe((_) => {\n this.calendar = _;\n });\n }\n\n getFromTo() {\n let dateFrom;\n let dateTo;\n if (this.selectedDate?.from) {\n dateFrom = new Date(this.selectedDate.from);\n dateTo = null;\n } else {\n if (this.allowNull) {\n dateFrom = this.date?.from ? new Date(this.date.from) : null;\n dateTo = this.date?.to ? new Date(this.date.to) : null;\n } else {\n dateFrom = this.date?.from ? new Date(this.date.from) : new Date();\n dateTo = this.date?.to ? new Date(this.date.to) : new Date();\n }\n }\n\n return { from: dateFrom, to: dateTo };\n }\n\n override isSelected(d: Date, selectedDate: Date) {\n const { from, to } = this.getFromTo();\n return this.checkSelected(d, from) || this.checkSelected(d, to);\n }\n\n checkSelected(date: Date, selectedDate: Date) {\n const isSelectedDate = date.getDate() === selectedDate?.getDate();\n const isSelectedYear = date.getFullYear() === selectedDate?.getFullYear();\n const isSelectedMonth = date.getMonth() === selectedDate?.getMonth();\n return isSelectedDate && isSelectedMonth && isSelectedYear;\n }\n\n isFirstDaySuitable(m: number, y: number, max: string | number | Date) {\n const { availableYear, availableMonth } = this.getAvailableMonthYear(m, y);\n return this.isSuitableMaxDate(dayjs(new Date(availableYear, availableMonth)).startOf('month').toDate(), max);\n }\n\n isLastDaySuitable(m: number, y: number, min: string | number | Date) {\n const { availableYear, availableMonth } = this.getAvailableMonthYear(m, y);\n return this.isSuitableMinDate(dayjs(new Date(availableYear, availableMonth)).endOf('month').toDate(), min);\n }\n\n override ngOnChanges(changes: SimpleChanges): void {\n if (!changes?.['hoveredDate']) {\n this.changeCalendarData(this.selectedDate.from || this.date.from);\n }\n }\n}\n","@if (\n {\n currentMonth: currentMonth | async,\n currentYear: currentYear | async,\n selectedPicker: selectedPicker | async,\n minMax: minMax | async,\n };\n as data\n) {\n <div class=\"datepicker-content overflow-y-auto\">\n @if (data.selectedPicker === 'day') {\n <div class=\"row\" (wheel)=\"scrollMonth($event, data.currentMonth, data.currentYear)\">\n <div class=\"padding-h-3 padding-v-2\">\n <div class=\"row align-center justify-content-between\">\n <teta-button\n [ngClass]=\"{\n 'datepicker-arrow_hidden': !isLastDaySuitable(data.currentMonth - 1, data.currentYear, min),\n }\"\n [class]=\"'change-month-button datepicker_' + viewType\"\n [square]=\"true\"\n (click)=\"changeMonth(data.currentMonth - 1, data.currentYear)\"\n palette=\"text\"\n view=\"ghost\"\n >\n <teta-icon name=\"arrowLeftKey\" [palette]=\"'text'\"></teta-icon>\n </teta-button>\n <div class=\"row gap-4 font-button-2 align-center padding-left-1\">\n <p>{{ getMothName(data.currentMonth) }}</p>\n <button\n [class]=\"'datepicker_' + viewType\"\n teta-button\n view=\"ghost\"\n palette=\"text\"\n (click)=\"selectPicker('year')\"\n >\n {{ data.currentYear }}\n </button>\n </div>\n <teta-button\n [square]=\"true\"\n [class]=\"'change-month-button datepicker-arrow_hidden datepicker_' + viewType\"\n palette=\"text\"\n view=\"ghost\"\n >\n <teta-icon name=\"arrowRightKey\" [palette]=\"'text'\"></teta-icon>\n </teta-button>\n </div>\n <div>\n <teta-day-picker\n [(hoveredDate)]=\"hoveredDate\"\n [range]=\"getFromTo()\"\n [viewType]=\"viewType\"\n (selectDate)=\"selectDate($event)\"\n [locale]=\"locale\"\n [calendar]=\"calendar.currentMonth\"\n ></teta-day-picker>\n </div>\n </div>\n @if (getAvailableMonthYear(data.currentMonth + 1, data.currentYear); as availableMonthYear) {\n <div class=\"padding-h-3 padding-v-2\">\n <div class=\"row align-center justify-content-between\">\n <teta-button\n [square]=\"true\"\n [class]=\"'change-month-button datepicker-arrow_hidden datepicker_' + viewType\"\n palette=\"text\"\n view=\"ghost\"\n >\n <teta-icon name=\"arrowLeftKey\" [palette]=\"'text'\"></teta-icon>\n </teta-button>\n <div class=\"row gap-4 font-button-2 align-center padding-left-1\">\n <p>{{ getMothName(availableMonthYear.availableMonth) }}</p>\n <button\n [class]=\"'datepicker_' + viewType\"\n teta-button\n view=\"ghost\"\n palette=\"text\"\n (click)=\"selectPicker('year')\"\n >\n {{ availableMonthYear.availableYear }}\n </button>\n </div>\n <teta-button\n [square]=\"true\"\n [ngClass]=\"{\n 'datepicker-arrow_hidden': !isFirstDaySuitable(data.currentMonth + 2, data.currentYear, max),\n }\"\n [class]=\"'change-month-button datepicker_' + viewType\"\n (click)=\"changeMonth(data.currentMonth + 1, data.currentYear)\"\n palette=\"text\"\n view=\"ghost\"\n >\n <teta-icon name=\"arrowRightKey\" [palette]=\"'text'\"></teta-icon>\n </teta-button>\n </div>\n <div>\n <teta-day-picker\n [(hoveredDate)]=\"hoveredDate\"\n [range]=\"getFromTo()\"\n [viewType]=\"viewType\"\n (selectDate)=\"selectDate($event)\"\n [locale]=\"locale\"\n [calendar]=\"calendar.nextMonth\"\n ></teta-day-picker>\n </div>\n </div>\n }\n </div>\n }\n @if (data.selectedPicker === 'month') {\n <teta-month-picker\n [localeMoths]=\"locale.months\"\n [currentYear]=\"data.currentYear\"\n (changeYear)=\"setYear($event)\"\n [selectedMonth]=\"data.currentMonth\"\n [viewType]=\"viewType\"\n (selectMonth)=\"selectMonth($event)\"\n ></teta-month-picker>\n }\n @if (data.selectedPicker === 'year') {\n <teta-year-picker\n [minMax]=\"data.minMax\"\n [locale]=\"locale\"\n [viewType]=\"viewType\"\n (selectYear)=\"selectYear($event)\"\n [selectedYear]=\"data.currentYear\"\n ></teta-year-picker>\n }\n </div>\n}\n","import { DatePipe, NgClass, AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { maskitoDateRangeOptionsGenerator } from '@maskito/kit';\nimport dayjs from 'dayjs';\nimport { lastValueFrom, Observable, ReplaySubject, take } from 'rxjs';\n\nimport { Align } from '../../../common/enum/align.enum';\nimport { VerticalAlign } from '../../../common/enum/vertical-align.enum';\nimport { viewType } from '../../../common/model/view-type.model';\nimport { BasePicker } from '../base-picker';\nimport { DateFromToModel } from '../model/from-to.model';\nimport { TetaConfigService } from '../../../locale/teta-config.service';\nimport { TetaLocalisation } from '../../../locale/teta-localisation';\nimport { ruLocale } from '../../../locale/ru';\nimport { RangeCalendarComponent } from './range-calendar/range-calendar.component';\nimport { DropdownContentDirective } from '../../dropdown/dropdown-content.directive';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { MaskitoModule } from '@maskito/angular';\nimport { InputComponent } from '../../input/input/input.component';\nimport { DropdownHeadDirective } from '../../dropdown/dropdown-head.directive';\nimport { DropdownComponent } from '../../dropdown/dropdown/dropdown.component';\n\nexport const DATE_Range_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateRangeComponent),\n multi: true,\n};\n\n@Component({\n selector: 'teta-date-range',\n templateUrl: './date-range.component.html',\n styleUrls: ['./date-range.component.scss'],\n providers: [DATE_Range_CONTROL_VALUE_ACCESSOR, DatePipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n DropdownComponent,\n DropdownHeadDirective,\n NgClass,\n InputComponent,\n FormsModule,\n MaskitoModule,\n IconComponent,\n DropdownContentDirective,\n RangeCalendarComponent,\n AsyncPipe,\n ]\n})\nexport class DateRangeComponent extends BasePicker implements OnInit, ControlValueAccessor {\n @Input() date: DateFromToModel = { from: null, to: null };\n public locale: Observable<TetaLocalisation>;\n @Input() showTime = false;\n @Input() minDate: Date | string | number = null;\n @Input() maxDate: Date | string | number = null;\n @Input() invalid = false;\n @Input() disabled = false;\n @Input() align: Align = Align.left;\n @Input() verticalAlign: VerticalAlign = VerticalAlign.auto;\n @Input() viewType: viewType = 'rounded';\n @Input() appendToBody: boolean;\n @Input() backdrop: boolean;\n @Input() allowNull = true;\n @ViewChild('input') input: ElementRef;\n @Output() selectDate: EventEmitter<DateFromToModel> = new EventEmitter<DateFromToModel>();\n public mask = '';\n public selectedDate: ReplaySubject<DateFromToModel> = new ReplaySubject<DateFromToModel>(1);\n @HostBinding('class.daterange') private readonly classDaterange = true;\n constructor(\n override _cdr: ChangeDetectorRef,\n override _elementRef: ElementRef,\n override datePipe: DatePipe,\n private localeService: TetaConfigService,\n ) {\n super(_elementRef, _cdr, datePipe);\n this.locale = this.localeService.locale;\n }\n\n override changeSelectedDate(date: Date, selectedDate: DateFromToModel) {\n if (selectedDate.from) {\n const from = new Date(Math.min(new Date(selectedDate.from).getTime(), date.getTime()));\n const to = new Date(Math.max(new Date(selectedDate.from).getTime(), date.getTime()));\n this.setDate({ from, to });\n this.selectedDate.next({ from: null, to: null });\n this.open = false;\n this._cdr.detectChanges();\n } else {\n this.setDate({ from: date, to: null });\n this.selectedDate.next({ from: date, to: null });\n }\n }\n\n override checkNull() {\n if (this.allowNull) {\n return null;\n }\n return (\n this.datePipe.transform(new Date(), 'dd.MM.yyyy') + ' - ' + this.datePipe.transform(new Date(), 'dd.MM.yyyy')\n );\n }\n\n async prepareInput() {\n const config = await lastValueFrom(this.localeService.locale.pipe(take(1)));\n let str = this.getLocaleString(this.date.from) + ' - ' + this.getLocaleString(this.date.to);\n if (!this.date?.from) {\n str = this.allowNull ? '' : this.getLocaleString(new Date()) + ' - ' + this.getLocaleString(new Date());\n }\n const option: { mode; separator; min?; max?; minLength?; maxLength? } = {\n mode: 'dd/mm/yyyy',\n separator: '.',\n };\n this.mask = config.dateRangeMask;\n if (this.minDate) {\n option.min = dayjs(new Date(this.minDate)).startOf('day');\n }\n if (this.maxDate) {\n option.max = dayjs(new Date(this.maxDate)).endOf('day');\n }\n this.maskitoOptions = maskitoDateRangeOptionsGenerator(option);\n this.changePlaceholder(str);\n }\n\n onBlur() {\n if (this.allowNull && this.inputText.trim() === '') {\n this.setDate({ from: null, to: null });\n this.selectedDate.next({ from: null, to: null });\n this.emitValue({ from: null, to: null });\n } else {\n const val = this.inputText.replace('–', '-').split('-');\n const from = this.getDateFromStr(val[0].trim());\n const to = this.getDateFromStr(val[1]?.trim());\n if (to.day && to.year && to.month) {\n let fromDate = this.getAvailableDate(this.minDate, this.maxDate, new Date(from.year, from.month - 1, from.day));\n let toDate = this.getAvailableDate(this.minDate, this.maxDate, new Date(to.year, to.month - 1, to.day));\n if (fromDate.getTime() > toDate.getTime()) {\n [fromDate, toDate] = [toDate, fromDate];\n }\n\n this.setDate({ from: fromDate, to: toDate });\n this.emitValue({ from: fromDate, to: toDate });\n this.selectedDate.next({ from: null, to: null });\n if (toDate && fromDate) {\n this.open = false;\n }\n } else {\n this.setDate(this.date);\n this.selectedDate.next({ from: null, to: null });\n }\n }\n }\n\n setDate(range: DateFromToModel) {\n if (!range?.from && !range?.to && this.allowNull) {\n this.inputText = '';\n\n this.changePlaceholder('');\n this.selectedDate.next({\n from: range?.from || null,\n to: range?.to || null,\n });\n } else {\n const from = this.getLocaleString(range.from);\n const to = range.from && !range.to ? '' : this.getLocaleString(range.to);\n this.inputText = from + ' - ' + to;\n this.changePlaceholder(from + ' - ' + to);\n }\n }\n\n writeValue(obj: DateFromToModel): void {\n if (obj?.from) {\n this.date = {\n from: new Date(obj.from),\n to: new Date(obj.to),\n };\n this.setDate({\n from: new Date(obj.from),\n to: new Date(obj.to),\n });\n } else {\n this.date = { from: null, to: null };\n }\n this.selectedDate.next({\n from: null,\n to: null,\n });\n }\n\n override isValueChange(value) {\n return !(\n new Date(value.from).getTime() === new Date(this.date.from).getTime() &&\n new Date(value.to).getTime() === new Date(this.date.to).getTime()\n );\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {}\n\n ngOnInit(): void {\n if (this.date?.from) {\n this.setDate({\n from: this.allowNull ? null : new Date(this.date?.from),\n to: this.allowNull ? null : new Date(this.date?.to),\n });\n } else {\n this.setDate({\n from: this.allowNull ? null : new Date(),\n to: this.allowNull ? null : new Date(),\n });\n }\n\n this.selectedDate.next({\n from: null,\n to: null,\n });\n\n this.prepareInput();\n }\n\n onChange(date) {}\n}\n","@if ({ selectedDate: selectedDate | async }; as data) {\n <teta-dropdown\n [appendToBody]=\"appendToBody\"\n [backdrop]=\"backdrop\"\n class=\"row row_auto\"\n [(open)]=\"open\"\n (openChange)=\"openChange($event)\"\n [viewType]=\"viewType\"\n [disabled]=\"disabled\"\n [verticalAlign]=\"verticalAlign\"\n [align]=\"align\"\n [autoCloseIgnore]=\"['esc', 'inside', 'enter']\"\n >\n <div\n tetaDropdownHead\n [class]=\"'datepicker-head font-body-3 gap-8 datepicker_' + viewType\"\n [ngClass]=\"{ 'datepicker-head_invalid': invalid, 'datepicker-head_disabled': disabled }\"\n >\n <teta-input class=\"row row_auto flex\">\n <div [class]=\"'row_auto row datepicker_' + viewType\">\n <div class=\"row row_auto position-relative font-body-3 align-center\">\n <input\n [ngClass]=\"{ 'color-text-90': !disabled }\"\n [disabled]=\"disabled\"\n #input\n style=\"z-index: 1\"\n class=\"border-0 color-text-90\"\n (keydown)=\"checkEnter($event)\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"changeInput($event)\"\n [maskito]=\"maskitoOptions\"\n />\n @if (data.selectedDate || allowNull) {\n <div\n (click)=\"input.focus()\"\n class=\"position-absolute color-text-10\"\n style=\"cursor: text; user-select: none\"\n >\n {{ placeholder }}\n </div>\n }\n </div>\n <teta-icon [name]=\"'calendar'\" [palette]=\"'text'\"></teta-icon>\n </div>\n </teta-input>\n </div>\n <div tetaDropdownContent class=\"scrollable\" (click)=\"$event.preventDefault()\">\n @if (open) {\n <div class=\"row\">\n <teta-range-calendar\n [isDateNull]=\"date === null || (date?.from === null && date?.to === null)\"\n [open]=\"open\"\n [max]=\"maxDate\"\n [allowNull]=\"allowNull\"\n [min]=\"minDate\"\n (setDate)=\"changeSelectedDate($event, data.selectedDate)\"\n [selectedDate]=\"data.selectedDate\"\n [date]=\"date\"\n [viewType]=\"viewType\"\n [locale]=\"locale | async\"\n ></teta-range-calendar>\n </div>\n }\n </div>\n </teta-dropdown>\n}\n","export class DatePeriod {\n start: Date;\n end: Date;\n\n constructor(start: Date, end: Date) {\n this.start = start;\n this.end = end;\n }\n}\n","export enum DatePickerMode {\n date,\n month,\n year,\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'teta-delimiter',\n templateUrl: './delimiter.component.html',\n styleUrls: ['./delimiter.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class DelimiterComponent implements OnInit {\n @Input() direction: 'vertical' | 'horizontal' = 'vertical';\n @Input() palette = 'text';\n @Input() height = 32;\n @Input() verticalMargin = 4;\n @Input() horizontalMargin = 8;\n\n @Input() class;\n\n @HostBinding('class')\n private get getClass(): string {\n return [\n this.class,\n 'delimiter',\n this.getBgColor(),\n this.direction === 'horizontal' ? 'display-flex' : 'display-inline-flex',\n ].join(' ');\n }\n\n @HostBinding('style.height')\n private get getHeight(): string {\n return this.direction === 'vertical' ? '' : '1px';\n }\n\n @HostBinding('style.width')\n private get getWidth(): string {\n return this.direction === 'horizontal' ? '' : '1px';\n }\n\n @HostBinding('style.margin')\n private get getMargin(): string {\n return this.direction === 'horizontal' ? '8px' : '0';\n }\n\n constructor() {}\n\n getBgColor() {\n return this.palette ? `bg-${this.palette}-10` : '';\n }\n\n ngOnInit(): void {}\n}\n","","import {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n Inject,\n NgZone,\n OnDestroy,\n OnInit,\n Renderer2,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { DropdownBase } from './dropdown-base';\n\n@Directive({\n selector: '[tetaDropdown]',\n standalone: true,\n})\nexport class DropdownDirective extends DropdownBase implements OnInit, OnDestroy, AfterViewInit {\n constructor(\n protected override _cdr: ChangeDetectorRef,\n @Inject(DOCUMENT) protected override _document: any,\n protected override _elementRef: ElementRef<HTMLElement>,\n protected override _zone: NgZone,\n protected override _renderer: Renderer2,\n ) {\n super(_cdr, _document, _elementRef, _zone, _renderer);\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this.closeDropdown();\n this.removeScrollListener();\n this._alive = false;\n }\n\n ngAfterViewInit(): void {\n if (this._content) {\n this._renderer.removeChild(this._content.nativeElement.parentNode, this._content.nativeElement);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'teta-toolbar',\n templateUrl: './toolbar.component.html',\n styleUrls: ['./toolbar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class ToolbarComponent implements OnInit {\n @Input() palette: string;\n @Input() class;\n\n @HostBinding('class')\n private get getClass() {\n const result = [this.class, 'toolbar'];\n if (this.palette) {\n result.push(`toolbar-${this.palette}`);\n }\n return result.join(' ');\n }\n\n ngOnInit(): void {}\n}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { DelimiterComponent } from '../../delimiter/delimiter/delimiter.component';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { ButtonComponent } from '../../button/button/button.component';\nimport { ToolbarComponent } from '../../toolbar/toolbar/toolbar.component';\n\n@Component({\n selector: 'teta-expand-card',\n templateUrl: './expand-card.component.html',\n styleUrls: ['./expand-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'expand-card',\n imports: [ToolbarComponent, ButtonComponent, IconComponent, DelimiterComponent]\n})\nexport class ExpandCardComponent implements OnInit {\n @Input() open = true;\n @Output() openChange = new EventEmitter<boolean>();\n @Input() showCross: boolean = true;\n @Output() crossClick = new EventEmitter<MouseEvent>();\n constructor() {}\n\n ngOnInit(): void {}\n\n setOpen() {\n this.open = !this.open;\n this.openChange.emit(this.open);\n }\n}\n","<teta-toolbar class=\"justify-content-between align-center\">\n <ng-content select=\"head\"></ng-content>\n <div class=\"row gap align-center\">\n <button type=\"button\" teta-button (click)=\"setOpen()\" [palette]=\"'text'\" [view]=\"'ghost'\" [square]=\"true\">\n <teta-icon [name]=\"open ? 'arrowUpKey' : 'arrowDownKey'\" [palette]=\"'text'\"></teta-icon>\n </button>\n @if (showCross) {\n <teta-delimiter [palette]=\"'text'\" class=\"height-4\"></teta-delimiter>\n <button\n type=\"button\"\n teta-button\n (click)=\"crossClick.emit($event)\"\n [palette]=\"'text'\"\n [view]=\"'ghost'\"\n [square]=\"true\"\n >\n <teta-icon [name]=\"'closeBig'\" [palette]=\"'text'\"></teta-icon>\n </button>\n }\n </div>\n</teta-toolbar>\n@if (open) {\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { ButtonComponent } from '../../button/button/button.component';\n\n@Component({\n selector: 'teta-expand-item',\n templateUrl: './expand-item.component.html',\n styleUrls: ['./expand-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'expand-item',\n imports: [ButtonComponent, IconComponent]\n})\nexport class ExpandItemComponent {\n @Input() open = true;\n @Output() openChange = new EventEmitter<boolean>();\n\n setOpen() {\n this.open = !this.open;\n this.openChange.emit(this.open);\n }\n}\n","<div class=\"row align-center gap color-text-90 height-6\">\n <div class=\"row row_auto align-center font-title-2\">\n <ng-content select=\"head\"></ng-content>\n </div>\n <button type=\"button\" teta-button (click)=\"setOpen()\" [palette]=\"'text'\" [view]=\"'ghost'\" [square]=\"true\">\n <teta-icon [name]=\"open ? 'arrowUpKey' : 'arrowDownKey'\" [palette]=\"'text'\"></teta-icon>\n </button>\n</div>\n@if (open) {\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaExpandPanelContent]',\n standalone: true,\n})\nexport class ExpandPanelContentDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaExpandPanelHead]',\n standalone: true,\n})\nexport class ExpandPanelHeadDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\nimport { ExpandPanelContentDirective } from '../expand-panel-content.directive';\nimport { ExpandPanelHeadDirective } from '../expand-panel-head.directive';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { ButtonComponent } from '../../button/button/button.component';\nimport { ToolbarComponent } from '../../toolbar/toolbar/toolbar.component';\n\n@Component({\n selector: 'teta-expand-panel',\n templateUrl: './expand-panel.component.html',\n styleUrls: ['./expand-panel.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ToolbarComponent, ButtonComponent, IconComponent, NgTemplateOutlet]\n})\nexport class ExpandPanelComponent implements OnInit {\n @ContentChild(ExpandPanelContentDirective, { static: false })\n content: ExpandPanelContentDirective;\n\n @ContentChild(ExpandPanelHeadDirective, { static: false })\n head: ExpandPanelHeadDirective;\n\n @Input() placeholder: string;\n @Input() open = true;\n @Output() openChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Input() cookieName: string;\n @Input() direction: 'left' | 'right' = 'left';\n\n constructor() {}\n\n openPanel() {\n this.open = true;\n this.openChange.emit(true);\n this.saveCookie();\n }\n\n closePanel() {\n this.open = false;\n this.openChange.emit(false);\n this.saveCookie();\n }\n\n ngOnInit(): void {\n this.restoreCookie();\n }\n\n private saveCookie() {\n if (!this.cookieName?.length) {\n return;\n }\n localStorage.setItem(this.cookieName, JSON.stringify(this.open));\n }\n\n private restoreCookie() {\n if (!this.cookieName?.length) {\n return;\n }\n const cookie = localStorage.getItem(this.cookieName);\n this.open = cookie != null ? JSON.parse(cookie) : true;\n this.openChange.emit(this.open);\n }\n}\n","@if (open) {\n <teta-toolbar\n style=\"display: flex\"\n [style.justifyContent]=\"direction === 'right' ? 'space-between' : 'unset'\"\n [style.flexDirection]=\"direction === 'right' ? 'row-reverse' : 'row'\"\n >\n <button teta-button [square]=\"true\" [palette]=\"'text'\" [view]=\"'ghost'\" (click)=\"closePanel()\">\n <teta-icon [palette]=\"'text'\" [name]=\"direction === 'right' ? 'start' : 'end'\"></teta-icon>\n </button>\n <span class=\"font-title-2\" style=\"display: contents\">\n <ng-container *ngTemplateOutlet=\"head?.template\"></ng-container>\n </span>\n </teta-toolbar>\n <ng-container *ngTemplateOutlet=\"content?.template\"></ng-container>\n}\n@if (!open) {\n <div class=\"width-10 overflow-hidden\" style=\"height: 100%\">\n <button\n teta-button\n style=\"transform-origin: 0 0; transform: rotate(-90deg) translateX(-100%); margin: 6px\"\n [palette]=\"'text'\"\n [view]=\"'ghost'\"\n (click)=\"openPanel()\"\n >\n <div class=\"font-button-2 nowrap\">{{ placeholder }}</div>\n <teta-icon\n style=\"transform-origin: 0 0; transform: rotate(-90deg) translateX(-100%)\"\n [palette]=\"'text'\"\n [name]=\"direction === 'right' ? 'start' : 'end'\"\n ></teta-icon>\n </button>\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { TranslocoModule } from '@jsverse/transloco';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { ButtonComponent } from '../../button/button/button.component';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'teta-file-upload-area',\n templateUrl: './file-upload-area.component.html',\n styleUrls: ['./file-upload-area.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, ButtonComponent, IconComponent, TranslocoModule]\n})\nexport class FileUploadAreaComponent {\n @HostBinding('class.file-upload') fileUpload = true;\n\n @HostBinding('class.file-upload_active')\n get fileUploadActive() {\n return this._asActive;\n }\n\n @Input() multiple = true;\n @Input() disabled = false;\n @Input() accept: string[] = [];\n\n @Output() upload: EventEmitter<FileList> = new EventEmitter();\n\n @ViewChild('fileUpload', { static: false }) input?: ElementRef;\n @ContentChild('buttonTemplate') buttonTemplate?: TemplateRef<any>;\n files: any;\n\n private _asActive = false;\n\n @HostListener('dragenter', ['$event']) dragEnter(event: DragEvent) {\n this.preventDefaults(event);\n this._asActive = true;\n }\n\n @HostListener('dragover', ['$event']) dragOver(event: DragEvent) {\n this.preventDefaults(event);\n this._asActive = true;\n }\n\n @HostListener('dragleave', ['$event']) dragLeave(event: DragEvent) {\n this.preventDefaults(event);\n this._asActive = false;\n }\n\n @HostListener('drop', ['$event']) drop(event: DragEvent) {\n this.upload.emit(event.dataTransfer?.files);\n this.preventDefaults(event);\n }\n\n fileChanged(event: any) {\n if (event.target && event.target.files) {\n this.upload.emit(event.target.files);\n if (this.input) {\n this.input.nativeElement.value = null;\n }\n }\n }\n\n private preventDefaults(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n }\n}\n","<ng-content></ng-content>\n<label class=\"file-upload-label\">\n <input\n #fileUpload\n id=\"upload-input\"\n class=\"file-upload-input\"\n type=\"file\"\n name=\"fileUpload\"\n [attr.accept]=\"accept\"\n [attr.multiple]=\"multiple ? 'multiple' : null\"\n [disabled]=\"disabled\"\n (change)=\"fileChanged($event)\"\n />\n <ng-container [ngTemplateOutlet]=\"buttonTemplate || defaultTemplate\"></ng-container>\n</label>\n<ng-template #defaultTemplate>\n <teta-button [palette]=\"'primary'\" type=\"button\">\n <teta-icon [name]=\"'search'\" [palette]=\"'white'\"></teta-icon>\n {{ 'common.browse' | transloco }}\n </teta-button>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'teta-file-item',\n templateUrl: './file-item.component.html',\n styleUrls: ['./file-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class FileItemComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<p>file-item works!</p>\n","export class DateFilterValue {\n /**\n * Значение должно быть меньше чем\n */\n lessThan: Date | undefined | null;\n /**\n * Значение должно быть больше чем\n */\n greaterThan: Date | undefined | null;\n\n constructor(options?: { lessThan?: Date | undefined | null; greaterThan?: Date | undefined | null }) {\n if (options) {\n this.lessThan = typeof options.lessThan === 'string' ? new Date(options.lessThan) : options.lessThan;\n this.greaterThan = typeof options.greaterThan === 'string' ? new Date(options.greaterThan) : options.greaterThan;\n }\n }\n}\n","export class StringUtil {\n static firstLetterToLower(input: string) {\n return input.charAt(0).toLocaleLowerCase() + input.slice(1);\n }\n\n static firstLetterToUpper(input: string) {\n return input.charAt(0).toLocaleUpperCase() + input.slice(1);\n }\n}\n","import { IFilter } from '../contarct/i-filter';\nimport { StringUtil } from '../../../util/string-util';\n\nexport class FilterBase<T> implements IFilter<T> {\n field: string;\n name: string;\n value: T;\n\n constructor(options?: { field: string; name: string }) {\n if (options) {\n this.field = StringUtil.firstLetterToLower(options.field);\n this.name = StringUtil.firstLetterToLower(options.name);\n }\n }\n}\n","import { FilterBase } from '../base/filter-base';\nimport { DateFilterValue } from './date-filter-value';\n\nexport class DateFilter extends FilterBase<DateFilterValue> {\n constructor(options?: { value?: DateFilterValue; field: string; name: string }) {\n super(options);\n if (options) {\n this.value = new DateFilterValue(options.value);\n }\n }\n}\n","export enum StringFilterType {\n /**\n * Строгое совпадение\n */\n Equals = 1,\n /**\n * Начинается с указанной подстроки\n */\n StartsWith = 2,\n /**\n * Оканчивается указанной подстрокой\n */\n EndsWith = 3,\n /**\n * Содержит указанную подстроку\n */\n Contains = 4,\n}\n","import { FilterBase } from '../base/filter-base';\nimport { StringFilterType } from '../enum/string-filter-type.enum';\n\nexport class StringFilter extends FilterBase<string> {\n type: StringFilterType;\n\n constructor(options?: { value?: string; type?: StringFilterType; field: string; name: string }) {\n super(options);\n if (options) {\n this.value = options.value || this.value;\n this.type = options.type || StringFilterType.Contains;\n }\n }\n}\n","import { FilterBase } from '../base/filter-base';\nimport { NumericFilterValue } from './numeric-filter-value';\n\nexport class NumericFilter extends FilterBase<NumericFilterValue> {\n strict: boolean;\n\n constructor(options?: { value?: NumericFilterValue; strict?: boolean; field: string; name: string }) {\n super(options);\n this.value = options?.value || this.value;\n this.strict = options?.strict || false;\n }\n}\n","export enum ListFilterType {\n None,\n Excluded,\n}\n","import { FilterBase } from '../base/filter-base';\nimport { ListFilterType } from '../enum/list-filter-type.enum';\n\nexport class ListFilter extends FilterBase<any[]> {\n type: ListFilterType;\n\n constructor(options?: { value?: any[]; type?: ListFilterType; field: string; name: string }) {\n super(options);\n if (options) {\n this.value = options.value || this.value;\n this.type = options.type || ListFilterType.None;\n }\n }\n}\n","import { StringUtil } from '../../../util/string-util';\n\nexport class SortParam {\n /**\n * Поле сортировки\n */\n field: string;\n /**\n * Направление (true: Asc, false: Desc)\n */\n asc: boolean;\n /**\n * Порядок сортировки\n */\n order: number;\n\n /**\n * Инициализация из анонимного объекта\n */\n constructor(options?: { field?: string; asc?: boolean; order?: number }) {\n if (options) {\n this.field = StringUtil.firstLetterToLower(options.field || this.field);\n this.asc = options.asc || false;\n this.order = options.order || this.order;\n }\n }\n}\n","export class NumericFilterValue {\n /**\n * Значение должно быть меньше чем\n */\n lessThan: number | null | undefined;\n /**\n * Значение должно быть больше чем\n */\n greaterThan: number | null | undefined;\n /**\n * Значение должно быть равно\n */\n equalsTo: number | null | undefined;\n\n constructor(options?: {\n lessThan?: number | null | undefined;\n greaterThan?: number | null | undefined;\n equalsTo?: number | null | undefined;\n }) {\n if (options) {\n this.lessThan = options.lessThan;\n this.greaterThan = options.greaterThan;\n this.equalsTo = options.equalsTo;\n }\n }\n}\n","import { FilterBase } from '../base/filter-base';\n\nexport class BooleanFilter extends FilterBase<boolean> {\n constructor(options?: { value?: boolean; field: string; name: string }) {\n super(options);\n this.value = !!options?.value;\n }\n}\n","import { StringFilter } from './string-filter';\nimport { NumericFilter } from './numeric-filter';\nimport { DateFilter } from './date-filter';\nimport { ListFilter } from './list-filter';\nimport { SortParam } from './sort-param';\nimport { DateFilterValue } from './date-filter-value';\nimport { NumericFilterValue } from './numeric-filter-value';\nimport { ListFilterType } from '../enum/list-filter-type.enum';\nimport { BooleanFilter } from './boolean-filter';\n\nexport class FilterState {\n stringFilters: StringFilter[] = [];\n numericFilters: NumericFilter[] = [];\n dateFilters: DateFilter[] = [];\n listFilters: ListFilter[] = [];\n booleanFilters: BooleanFilter[] = [];\n sortParams: SortParam[] = [];\n\n constructor(options?: {\n stringFilters?: any[];\n booleanFilters?: any[];\n numericFilters?: any[];\n dateFilters?: any[];\n listFilters?: any[];\n sortParams?: any[];\n }) {\n if (options) {\n if (options.stringFilters && options.stringFilters.length) {\n this.stringFilters = options.stringFilters.map((x: any) => new StringFilter(x));\n }\n\n if (options.booleanFilters && options.booleanFilters.length) {\n this.booleanFilters = options.booleanFilters.map((x: any) => new BooleanFilter(x));\n }\n\n if (options.numericFilters && options.numericFilters.length) {\n this.numericFilters = options.numericFilters.map((x: any) => new NumericFilter(x));\n }\n\n if (options.dateFilters && options.dateFilters.length) {\n this.dateFilters = options.dateFilters.map((x: any) => new DateFilter(x));\n }\n\n if (options.listFilters && options.listFilters.length) {\n this.listFilters = options.listFilters.map((x: any) => new ListFilter(x));\n }\n\n if (options.sortParams && options.sortParams.length) {\n this.sortParams = options.sortParams.map((x: any) => new SortParam(x));\n }\n }\n }\n\n static restore(cookie: string): any {\n const state = localStorage.getItem(cookie) || 'null';\n return JSON.parse(state);\n }\n\n save(cookieName: string): void {\n if (cookieName) {\n localStorage.setItem(cookieName, JSON.stringify(this));\n }\n }\n\n addListFilter(value: ListFilter): ListFilter {\n if (this.listFilters === null || this.listFilters === undefined) {\n this.listFilters = [];\n }\n const filter = this.listFilters.find((f) => f.field === value.field);\n if (filter === null || filter === undefined) {\n this.listFilters.push(value);\n return value;\n } else {\n filter.value = value.value;\n return filter;\n }\n }\n\n addDateFilter(value: DateFilter): DateFilter {\n if (this.dateFilters === null || this.dateFilters === undefined) {\n this.dateFilters = [];\n }\n const filter = this.dateFilters.find((f) => f.field === value.field);\n if (filter === null || filter === undefined) {\n this.dateFilters.push(value);\n return value;\n } else {\n filter.value = value.value;\n return filter;\n }\n }\n\n addStringFilter(value: StringFilter): StringFilter {\n if (this.stringFilters === null || this.stringFilters === undefined) {\n this.stringFilters = [];\n }\n const filter = this.stringFilters.find((f) => f.field === value.field);\n if (filter === null || filter === undefined) {\n this.stringFilters.push(value);\n return value;\n } else {\n filter.value = value.value;\n return filter;\n }\n }\n\n addBooleanFilter(value: BooleanFilter): BooleanFilter {\n if (this.booleanFilters === null || this.booleanFilters === undefined) {\n this.booleanFilters = [];\n }\n const filter = this.booleanFilters.find((f) => f.field === value.field);\n if (filter === null || filter === undefined) {\n this.booleanFilters.push(value);\n return value;\n } else {\n filter.value = value.value;\n return filter;\n }\n }\n\n addNumericFilter(value: NumericFilter): NumericFilter {\n if (this.numericFilters === null || this.numericFilters === undefined) {\n this.numericFilters = [];\n }\n const filter = this.numericFilters.find((f) => f.field === value.field);\n if (filter === null || filter === undefined) {\n this.numericFilters.push(value);\n return value;\n } else {\n filter.value = value.value;\n return filter;\n }\n }\n\n clear(): void {\n this.sortParams.length = 0;\n\n this.stringFilters.map((f: StringFilter) => {\n f.value = '';\n });\n this.booleanFilters.map((f: BooleanFilter) => {\n f.value = null;\n });\n this.dateFilters.map((f: DateFilter) => {\n f.value = new DateFilterValue({\n lessThan: null,\n greaterThan: null,\n });\n });\n this.numericFilters.map((f: NumericFilter) => {\n f.value = new NumericFilterValue({\n lessThan: null,\n greaterThan: null,\n equalsTo: null,\n });\n });\n this.listFilters.map((f: ListFilter) => {\n f.value = [];\n f.type = ListFilterType.None;\n });\n }\n}\n","import { FilterState } from '../contarct/filter-state';\nimport { EventEmitter } from '@angular/core';\nimport { FilterItem } from '../contarct/filter-item';\nimport { IFilter } from '../contarct/i-filter';\nimport { IIdName } from '../../../common/contract/i-id-name';\n\nexport abstract class FilterComponentBase<T> {\n abstract column: FilterItem;\n abstract state: FilterState;\n abstract data: T[];\n abstract filterOptions: IIdName<any>[];\n abstract filterChanged: EventEmitter<IFilter<any>>;\n}\n","import { FilterType } from '../enum/filter-type.enum';\nimport { StringFilterType } from '../enum/string-filter-type.enum';\nimport { ListFilterType } from '../enum/list-filter-type.enum';\nimport { StringUtil } from '../../../util/string-util';\n\nexport interface IFilterItemOptions {\n sortOrder?: number;\n name?: string;\n caption?: string;\n hint?: string;\n sortable?: boolean;\n sortField?: string;\n filterable?: boolean;\n filterField?: string;\n filterType?: FilterType | null;\n stringFilterType?: StringFilterType;\n listFilterType?: ListFilterType;\n strict?: boolean;\n filterComponent?: any;\n columns?: FilterItem[];\n}\n\nexport class FilterItem {\n /**\n * Порядковый номер\n */\n sortOrder: number = Number.MAX_VALUE;\n /**\n * Название столбца для заголовка таблицы\n */\n caption: string;\n /**\n * Подсказка\n */\n hint: string;\n /**\n * Название столбца в строке результатов\n */\n name: string;\n /**\n * Возможность сортировать поле\n */\n sortable = true;\n /**\n * Возможность фильтровать поле\n */\n filterable = true;\n /**\n * Поле для сортировки\n */\n sortField: string;\n /**\n * Поле для фильтрации\n */\n filterField: string;\n /**\n * Тип фильтра\n */\n filterType: FilterType | null;\n /**\n * Тип сравнения строкового фильтра\n */\n stringFilterType: StringFilterType;\n /**\n * Тип сравнения строкового фильтра\n */\n listFilterType: ListFilterType;\n /**\n * Строгое сравнение\n */\n strict: boolean;\n /**\n * Компонент для рендера фильтра\n */\n filterComponent: any;\n\n /**\n * Дочерние элементы\n */\n columns: FilterItem[];\n\n constructor(options?: IFilterItemOptions) {\n this.sortOrder = options?.sortOrder ?? Number.MAX_VALUE;\n this.name = options?.name ?? '';\n this.caption = options?.caption ?? this.name;\n this.hint = options?.hint ?? '';\n this.sortable = options?.sortable ?? true;\n this.filterable = options?.filterable ?? true;\n this.sortField = StringUtil.firstLetterToLower(options?.sortField ?? this.name);\n this.filterField = StringUtil.firstLetterToLower(options?.filterField ?? this.name);\n this.filterType = options?.filterType;\n this.stringFilterType = options?.stringFilterType ?? StringFilterType.Contains;\n this.listFilterType = options?.listFilterType ?? ListFilterType.None;\n this.strict = options?.strict ?? false;\n this.filterComponent = options?.filterComponent;\n this.columns = options?.columns?.map((_) => new FilterItem(_)) ?? [];\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { DateFilterValue } from '../contarct/date-filter-value';\nimport { DateFilter } from '../contarct/date-filter';\nimport { FilterState } from '../contarct/filter-state';\nimport { FilterBase } from '../base/filter-base';\nimport { FilterComponentBase } from '../base/filter-component-base';\nimport { FilterItem } from '../contarct/filter-item';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { Observable } from 'rxjs';\nimport { TetaLocalisation } from '../../../locale/teta-localisation';\nimport { TetaConfigService } from '../../../locale/teta-config.service';\nimport { AsyncPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { DatePickerComponent } from '../../date-picker/date-picker/date-picker.component';\nimport { InputComponent } from '../../input/input/input.component';\n\n@Component({\n selector: 'teta-date-filter',\n templateUrl: './date-filter.component.html',\n styleUrls: ['./date-filter.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [InputComponent, DatePickerComponent, FormsModule, AsyncPipe]\n})\nexport class DateFilterComponent<T> extends FilterComponentBase<T> implements OnInit {\n @Input() column: FilterItem;\n @Input() data: T[];\n @Input() filterOptions: IIdName<any>[] = [];\n @Output() filterChanged: EventEmitter<FilterBase<DateFilterValue>> = new EventEmitter<FilterBase<DateFilterValue>>();\n\n filter: DateFilter;\n state$: FilterState;\n\n @Input()\n set state(val: FilterState) {\n this.state$ = val;\n this.filter = this.getFilter();\n this.changeDetector.detectChanges();\n this.changeDetector.markForCheck();\n }\n\n get state() {\n return this.state$;\n }\n locale: Observable<TetaLocalisation>;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private _config: TetaConfigService,\n ) {\n super();\n this.locale = this._config.locale;\n }\n\n ngOnInit() {\n this.filter = this.getFilter();\n }\n\n private getFilter(): DateFilter {\n let filter = this.state.dateFilters.find((f) => f.field === this.column.filterField);\n if (filter === null || filter === undefined) {\n filter = this.state.addDateFilter(\n new DateFilter({\n value: new DateFilterValue(),\n field: this.column.filterField,\n name: this.column.name,\n }),\n );\n }\n return filter;\n }\n}\n","@if (locale | async; as loc) {\n <div class=\"form-row padding-3\">\n <teta-input [label]=\"loc.from\">\n <teta-date-picker\n style=\"width: 110px\"\n [ngModel]=\"filter.value?.greaterThan\"\n [appendToBody]=\"false\"\n (ngModelChange)=\"filter.value.greaterThan = $event\"\n ></teta-date-picker>\n </teta-input>\n <teta-input [label]=\"loc.to\">\n <teta-date-picker\n style=\"width: 110px\"\n [ngModel]=\"filter.value?.lessThan\"\n [appendToBody]=\"false\"\n (ngModelChange)=\"filter.value.lessThan = $event\"\n ></teta-date-picker>\n </teta-input>\n </div>\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[tetaScrollable]',\n standalone: true,\n})\nexport class ScrollableDirective {\n @HostBinding('class.scrollable_hide_scroll') private readonly hideScrollClass = true;\n}\n","import { Directive, Inject, Input, TemplateRef, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaLet]',\n standalone: true,\n})\nexport class LetDirective<T> {\n @Input()\n tetaLet!: T;\n\n constructor(\n @Inject(ViewContainerRef) viewContainer: ViewContainerRef,\n @Inject(TemplateRef) templateRef: TemplateRef<LetContext<T>>,\n ) {\n viewContainer.createEmbeddedView(templateRef, new LetContext<T>(this));\n }\n\n static ngTemplateContextGuard<T>(\n _dir: LetDirective<T>,\n _ctx: any,\n ): _ctx is LetDirective<Exclude<T, null | undefined>> {\n return true;\n }\n}\n\nexport class LetContext<T> implements ContextWithImplicit<T> {\n constructor(private readonly internalDirectiveInstance: LetDirective<T>) {}\n\n get $implicit(): T {\n return this.internalDirectiveInstance.tetaLet;\n }\n\n get tetaLet(): T {\n return this.internalDirectiveInstance.tetaLet;\n }\n}\n\nexport interface ContextWithImplicit<T> {\n $implicit: T;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {\n animationFrameScheduler,\n debounceTime,\n distinctUntilChanged,\n fromEvent,\n Observable,\n shareReplay,\n Subject,\n tap,\n} from 'rxjs';\nimport { map, takeWhile } from 'rxjs/operators';\n\nimport { ScrollableDirective } from '../scrollable.directive';\nimport { NgClass, AsyncPipe } from '@angular/common';\nimport { LetDirective } from '../../let/let.directive';\n\ntype ScrollDimensions = {\n clientHeight: number;\n clientWidth: number;\n scrollHeight: number;\n scrollWidth: number;\n};\n\n@Component({\n selector: 'teta-scrollable',\n templateUrl: './scrollable.component.html',\n styleUrls: ['./scrollable.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [LetDirective, NgClass, AsyncPipe, ScrollableDirective],\n})\nexport class ScrollableComponent implements OnInit, OnDestroy {\n @ContentChild(ScrollableDirective, {\n static: true,\n read: ElementRef,\n })\n private _scrollDirective: ElementRef;\n\n @ViewChild('scrollableWrapper', {\n static: true,\n })\n private _scrollableWrapper: ElementRef;\n\n @ViewChild('scrollbarVertical', {\n static: true,\n })\n private _scrollbarVertical: ElementRef;\n\n @ViewChild('scrollbarHorizontal', {\n static: true,\n })\n private _scrollbarHorizontal: ElementRef;\n\n @Input() direction: 'row' | 'column' = 'row';\n @Input()\n @HostBinding('class.show-scrollbars')\n showScrollbars = false;\n\n @Input() contentClass: string | string[];\n\n @Output() scroll = new EventEmitter<Event>();\n\n private _scrollSize = new Subject<void>();\n scrollSize: Observable<ScrollDimensions>;\n\n private _container: ElementRef;\n private _alive = true;\n private resizeObserver: ResizeObserver;\n private mutationObserver: MutationObserver;\n\n constructor() {\n this.scrollSize = this._scrollSize.asObservable().pipe(\n debounceTime(100, animationFrameScheduler),\n map(() => {\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = this._container.nativeElement;\n return {\n scrollHeight,\n clientHeight,\n scrollWidth,\n clientWidth,\n };\n }),\n distinctUntilChanged((previous, current) => {\n return (\n previous.scrollHeight === current.scrollHeight &&\n previous.clientHeight === current.clientHeight &&\n previous.scrollWidth === current.scrollWidth &&\n previous.clientWidth === current.clientWidth\n );\n }),\n shareReplay({\n refCount: true,\n bufferSize: 1,\n }),\n );\n this.resizeObserver = new ResizeObserver(this._observe);\n this.mutationObserver = new MutationObserver(this._observe);\n }\n\n private _observe = () => {\n this._scrollSize.next();\n };\n\n scrollVertical(event) {\n this._container.nativeElement.scrollTop = event.target.scrollTop;\n }\n\n scrollHorizontal(event) {\n this._container.nativeElement.scrollLeft = event.target.scrollLeft;\n }\n\n ngOnInit(): void {\n this._container = this._scrollableWrapper;\n if (this._scrollDirective) {\n this._container = this._scrollDirective;\n }\n\n fromEvent(this._container.nativeElement, 'scroll')\n .pipe(\n takeWhile(() => this._alive),\n tap((event: any) => {\n this._scrollbarHorizontal.nativeElement.scrollLeft = event.target.scrollLeft;\n this._scrollbarVertical.nativeElement.scrollTop = event.target.scrollTop;\n this.scroll.emit(event);\n }),\n )\n .subscribe();\n\n this.resizeObserver.observe(this._container.nativeElement);\n this.mutationObserver.observe(this._container.nativeElement, {\n attributes: false,\n childList: true,\n subtree: true,\n });\n }\n\n ngOnDestroy() {\n this._alive = false;\n this.resizeObserver.unobserve(this._container.nativeElement);\n this.resizeObserver.disconnect();\n this.mutationObserver.disconnect();\n }\n}\n","<div class=\"scroll-controls\" *tetaLet=\"scrollSize | async as scrollSize\">\n <div\n #scrollbarVertical\n [class.display-none]=\"scrollSize?.scrollHeight <= scrollSize?.clientHeight\"\n class=\"scroll-scrollbar scroll-scrollbar-vertical\"\n (scroll)=\"scrollVertical($event)\"\n >\n <div [style.height.px]=\"scrollSize?.scrollHeight\" style=\"width: 1px\"></div>\n </div>\n <div\n #scrollbarHorizontal\n [class.display-none]=\"scrollSize?.scrollWidth <= scrollSize?.clientWidth\"\n class=\"scroll-scrollbar scroll-scrollbar-horizontal\"\n (scroll)=\"scrollHorizontal($event)\"\n >\n <div [style.width.px]=\"scrollSize?.scrollWidth\" style=\"height: 1px\"></div>\n </div>\n</div>\n\n<div #scrollableWrapper class=\"scroll-content-wrapper\" [ngClass]=\"contentClass\" [class.column]=\"direction === 'column'\">\n <ng-content></ng-content>\n</div>\n","export const getPrecision = (a: number) => {\n if (!isFinite(a)) {\n return 0;\n }\n let e = 1;\n let p = 0;\n while (Math.round(a * e) / e !== a) {\n e *= 10;\n p++;\n }\n return p;\n};\n\nexport const formatNumber = (\n value: any,\n decimalLength: number,\n chunkDelimiter: string,\n decimalDelimiter: string,\n chunkLength: number,\n) => {\n const abs = Math.abs(value);\n if (0 < abs && 1 > abs) {\n const firstDigitIndex = Math.floor(Math.abs(Math.log10(abs)));\n decimalLength += firstDigitIndex;\n }\n const precision = Math.min(getPrecision(value), Math.floor(decimalLength));\n const result = '\\\\d(?=(\\\\d{' + chunkLength + '})+' + (precision > 0 ? '\\\\D' : '$') + ')';\n const num = value.toFixed(precision);\n return (decimalDelimiter ? num.replace('.', decimalDelimiter) : num).replace(\n new RegExp(result, 'g'),\n '$&' + chunkDelimiter,\n );\n};\n\nexport const prependZero = (input: number, length: number) => ('0'.repeat(length) + input).slice(-length);\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { formatNumber } from '../util/number-helper';\n\n@Pipe({\n name: 'tetaNumber',\n standalone: true,\n})\nexport class NumberPipe implements PipeTransform {\n transform(\n value: number | string | null | undefined,\n decimalLength: number = 2,\n chunkDelimiter: string = '',\n decimalDelimiter: string = '.',\n chunkLength: number = 3,\n ): string {\n if (value === null || value === undefined || value === '') {\n return '';\n }\n if (typeof value === 'string' && isNaN(parseFloat(value))) {\n return value.toString();\n }\n if (decimalLength === null) {\n return value.toString();\n }\n value = Number(value);\n return formatNumber(value, decimalLength, chunkDelimiter, decimalDelimiter, chunkLength);\n }\n}\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n selector: '[tetaOnlyNumber]',\n standalone: true,\n})\nexport class OnlyNumberDirective {\n @Input() tetaOnlyNumber = true;\n @Input() allowDecimals = true;\n @Input() allowSign = true;\n @Input() decimalSeparator = '.';\n @Input() commaSeparator = ',';\n @Input() onlyPositive = false;\n\n private _previousValue = '';\n\n private _integerUnsigned = '^[0-9]*$';\n private _integerSigned = '^-?[0-9]+$';\n private _decimalUnsigned = '^[0-9]+(.[0-9]+)?$';\n private _decimalSigned = '^-?[0-9]+(.[0-9]+)?$';\n\n private readonly _minusSign: string = '-';\n\n constructor(\n private _elementRef: ElementRef<HTMLInputElement>,\n private _control: NgControl,\n ) {}\n\n @HostListener('input', ['$event']) onChange(e: any) {\n if (this.tetaOnlyNumber === false) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n // this.validateValue(this._elementRef.nativeElement.value);\n }\n\n @HostListener('blur', ['$event']) onBlur(e: any) {\n e.preventDefault();\n e.stopPropagation();\n const value = this._elementRef.nativeElement.value;\n if (value.endsWith('.')) {\n this._elementRef.nativeElement.value = value.replace('.', '');\n this._elementRef.nativeElement.dispatchEvent(new Event('input'));\n }\n }\n\n @HostListener('dblclick', ['$event']) dblclick(e: any) {\n if (this.tetaOnlyNumber === false) {\n return;\n }\n this._elementRef.nativeElement.select();\n }\n\n @HostListener('paste', ['$event']) onPaste(e: any) {\n if (this.tetaOnlyNumber === false) {\n return;\n }\n this.validateValue(e.clipboardData.getData('text/plain'));\n this._elementRef.nativeElement.dispatchEvent(new Event('input'));\n e.preventDefault();\n }\n\n @HostListener('keydown', ['$event']) onKeyDown(e: KeyboardEvent) {\n if (this.tetaOnlyNumber === false) {\n return;\n }\n const cursorPosition: number = (e.target as HTMLInputElement).selectionStart ?? 0;\n const originalValue: string = (e.target as HTMLInputElement).value;\n const controlOrCommand = e.ctrlKey === true || e.metaKey === true;\n const signExists = originalValue.includes('-');\n const separatorExists =\n originalValue.includes(this.decimalSeparator) || originalValue.includes(this.commaSeparator);\n\n const allowedKeys = ['Backspace', 'ArrowLeft', 'ArrowRight', 'Delete', 'Escape', 'Tab', 'Home', 'End'];\n\n const separatorIsCloseToSign = signExists && cursorPosition <= 1;\n if (this.allowDecimals && !separatorIsCloseToSign && !separatorExists) {\n allowedKeys.push('.');\n }\n\n const firstCharacterIsSeparator = originalValue.charAt(0) !== this.decimalSeparator;\n if (this.allowSign && !signExists && firstCharacterIsSeparator && cursorPosition === 0 && !this.onlyPositive) {\n allowedKeys.push('-');\n }\n\n if (\n allowedKeys.indexOf(e.key) !== -1 ||\n (e.code === 'KeyA' && controlOrCommand) ||\n (e.code === 'KeyC' && controlOrCommand) ||\n (e.code === 'KeyV' && controlOrCommand) ||\n (e.code === 'KeyZ' && controlOrCommand) ||\n (e.code === 'KeyX' && controlOrCommand)\n ) {\n return;\n }\n this._previousValue = originalValue;\n\n const isNumber = new RegExp(this._integerUnsigned).test(e.key);\n if (isNumber) {\n return;\n } else {\n if (e.key === ',' && originalValue.indexOf('.') < 0) {\n this._elementRef.nativeElement.value = `${originalValue.slice(0, cursorPosition)}.${originalValue.slice(cursorPosition)}`;\n this._elementRef.nativeElement.dispatchEvent(new Event('input'));\n if (this._elementRef.nativeElement.setSelectionRange) {\n this._elementRef.nativeElement.setSelectionRange(cursorPosition + 1, cursorPosition + 1);\n }\n }\n e.preventDefault();\n }\n }\n\n validateValue(value: string): void {\n if (this.tetaOnlyNumber === false) {\n return;\n }\n value = value.replace(',', '.').trim();\n let regex: string = this._integerUnsigned;\n if (!this.allowDecimals && !this.allowSign) {\n regex = this._integerUnsigned;\n }\n if (!this.allowDecimals && this.allowSign) {\n regex = this._integerSigned;\n }\n if (this.allowDecimals && !this.allowSign) {\n regex = this._decimalUnsigned;\n }\n if (this.allowDecimals && this.allowSign) {\n regex = this._decimalSigned;\n }\n\n let firstCharacter = value.charAt(0);\n if (firstCharacter === this.decimalSeparator) {\n value = 0 + value;\n }\n\n const lastCharacter = value.charAt(value.length - 1);\n if (lastCharacter === this.decimalSeparator) {\n value = value + 0;\n }\n\n let signedValue = false;\n if (firstCharacter === this._minusSign) {\n signedValue = true;\n value = value.substring(1);\n firstCharacter = value.charAt(0);\n }\n let secondChar = value.charAt(1);\n while (firstCharacter === '0' && secondChar !== '' && secondChar !== this.decimalSeparator) {\n value = value.substring(1);\n firstCharacter = value.charAt(0);\n secondChar = value.charAt(1);\n }\n if (signedValue === true) {\n value = this._minusSign + value;\n }\n\n const valueParts = value.split(this.decimalSeparator);\n const naturalPart = valueParts?.[0];\n let decimalPart = valueParts?.[1];\n\n if (decimalPart != null && /^0+$/.test(decimalPart)) {\n decimalPart = '0';\n value = naturalPart + '.' + decimalPart;\n }\n if (value === '-0') {\n value = '0';\n }\n if (value === '-0.0') {\n value = '0.0';\n }\n if (value === null || value === undefined || value === '') {\n return;\n }\n const valid: boolean = new RegExp(regex).test(value.toString());\n\n if (valid) {\n this._control.control.patchValue(parseFloat(value), {\n emitEvent: false,\n });\n } else {\n console.error('INVALID VALUE');\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { NumberPipe } from '../../../pipe/number-pipe/number.pipe';\nimport { NgClass } from '@angular/common';\nimport { OnlyNumberDirective } from '../../../directive/only-number/only-number.directive';\nimport { IconComponent } from '../../icon/icon/icon.component';\n\n@Component({\n selector: 'teta-text-field',\n templateUrl: './text-field.component.html',\n styleUrls: ['./text-field.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextFieldComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [IconComponent, FormsModule, OnlyNumberDirective, NgClass, NumberPipe]\n})\nexport class TextFieldComponent implements ControlValueAccessor {\n @Input() placeholder = '';\n @Input() leftIconName?: string;\n @HostBinding('class.text-field_disabled')\n @Input()\n disabled = false;\n @Input() onlyNumber = false;\n @Input() decimalPart: number;\n @HostBinding('class.text-field_invalid')\n @Input()\n invalid: boolean;\n @ViewChild('input', { static: false }) input: ElementRef;\n inputFocused: boolean;\n @HostBinding('class.text-field')\n private readonly textField = true;\n value = '';\n\n constructor(private _cdr: ChangeDetectorRef) {}\n\n @HostListener('click') onFocus() {\n if (this.disabled) {\n return;\n }\n this.input.nativeElement.focus();\n }\n\n keyPress(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.keyCode === 13) {\n this.emitBlur();\n }\n }\n\n emitBlur() {\n this.onTouched();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._cdr.markForCheck();\n }\n\n writeValue(input: string): void {\n this.value = input;\n this._cdr.detectChanges();\n }\n\n onChange(input: string): void {}\n\n onTouched(): void {}\n}\n","@if (leftIconName) {\n <teta-icon [name]=\"leftIconName\" [palette]=\"'text'\"></teta-icon>\n}\n<input\n #input\n [ngModel]=\"value | tetaNumber: (!onlyNumber ? null : inputFocused ? 1000 : decimalPart)\"\n [tetaOnlyNumber]=\"onlyNumber\"\n (ngModelChange)=\"value = $event; onChange($event)\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [ngClass]=\"{ 'color-text-40': disabled }\"\n (focus)=\"inputFocused = true\"\n (blur)=\"inputFocused = false; emitBlur()\"\n (keydown)=\"keyPress($event)\"\n type=\"text\"\n/>\n@if (value && !disabled) {\n <teta-icon\n class=\"close-icon\"\n [name]=\"'closeCircle'\"\n [palette]=\"'text'\"\n (click)=\"value = ''; onChange('')\"\n ></teta-icon>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { ListFilter } from '../contarct/list-filter';\nimport { ListFilterType } from '../enum/list-filter-type.enum';\nimport { FilterComponentBase } from '../base/filter-component-base';\nimport { FilterBase } from '../base/filter-base';\nimport { FilterState } from '../contarct/filter-state';\nimport { FilterItem } from '../contarct/filter-item';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { Observable } from 'rxjs';\nimport { TetaLocalisation } from '../../../locale/teta-localisation';\nimport { TetaConfigService } from '../../../locale/teta-config.service';\nimport { AsyncPipe } from '@angular/common';\nimport { CheckboxComponent } from '../../checkbox/checkbox/checkbox.component';\nimport { ScrollableComponent } from '../../../directive/scrollable/scrollable/scrollable.component';\nimport { FormsModule } from '@angular/forms';\nimport { TextFieldComponent } from '../../input/text-field/text-field.component';\n\n@Component({\n selector: 'teta-list-filter',\n templateUrl: './list-filter.component.html',\n styleUrls: ['./list-filter.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TextFieldComponent, FormsModule, ScrollableComponent, CheckboxComponent, AsyncPipe]\n})\nexport class ListFilterComponent<T> extends FilterComponentBase<T> implements OnInit {\n @Input() column: FilterItem;\n @Input() data: T[];\n @Input() filterOptions: IIdName<any>[] = [];\n @Output() filterChanged: EventEmitter<FilterBase<any[]>> = new EventEmitter<FilterBase<any[]>>();\n\n filter: ListFilter;\n state$: FilterState;\n search = '';\n locale: Observable<TetaLocalisation>;\n\n get visibleOptions() {\n return this.filterOptions?.filter((option: IIdName<any>) => {\n return option.name?.toLowerCase().toString().indexOf(this.search?.toLowerCase()) >= 0;\n });\n }\n\n @Input()\n set state(val: FilterState) {\n this.state$ = val;\n this.filter = this.getFilter();\n this.changeDetector.detectChanges();\n }\n\n get state() {\n return this.state$;\n }\n\n excluded: boolean;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private _config: TetaConfigService,\n ) {\n super();\n this.locale = this._config.locale;\n }\n\n ngOnInit() {}\n\n all() {\n if (!this.filter?.value || this.filter?.value?.length === 0) {\n return false;\n }\n const notSet = this.visibleOptions?.find((_) => this.filter?.value?.indexOf(_.id) < 0);\n if (!notSet) {\n return true;\n }\n return null;\n }\n\n setAll(value: boolean) {\n if (value) {\n this.setFilter(this.visibleOptions?.map((_) => _.id));\n } else {\n this.setFilter([]);\n }\n }\n\n setType() {\n this.excluded = !this.excluded;\n this.filter.type = this.excluded ? ListFilterType.Excluded : ListFilterType.None;\n }\n\n setFilter(value: any[]) {\n this.filter.value = value;\n this.filterChanged.emit(this.filter);\n }\n\n private getFilter(): ListFilter {\n let filter = this.state.listFilters?.find((f) => f.field === this.column.filterField);\n if (!filter) {\n filter = this.state.addListFilter(\n new ListFilter({\n field: this.column.filterField,\n value: [],\n type: this.column.listFilterType,\n name: this.column.name,\n }),\n );\n }\n this.excluded = filter.type === ListFilterType.Excluded;\n return filter;\n }\n}\n","<div class=\"padding-2\">\n <teta-text-field [(ngModel)]=\"search\"></teta-text-field>\n</div>\n<teta-scrollable class=\"column column_auto\" [contentClass]=\"['list', 'padding-v-2']\">\n <div class=\"list-item\">\n <teta-checkbox [binary]=\"true\" [allowNull]=\"true\" [ngModel]=\"all()\" (ngModelChange)=\"setAll($event)\">\n {{ (locale | async)?.all }}\n </teta-checkbox>\n </div>\n <div class=\"list-divider\"></div>\n @for (option of visibleOptions; track option) {\n <div class=\"list-item\">\n <teta-checkbox [ngModel]=\"filter.value\" (ngModelChange)=\"setFilter($event)\" [value]=\"option.id\" [binary]=\"false\">\n {{ option.name }}\n </teta-checkbox>\n </div>\n }\n</teta-scrollable>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { NumericFilter } from '../contarct/numeric-filter';\nimport { FilterComponentBase } from '../base/filter-component-base';\nimport { FilterBase } from '../base/filter-base';\nimport { FilterState } from '../contarct/filter-state';\nimport { FilterItem } from '../contarct/filter-item';\nimport { NumericFilterValue } from '../contarct/numeric-filter-value';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { TetaConfigService } from '../../../locale/teta-config.service';\nimport { Observable } from 'rxjs';\nimport { TetaLocalisation } from '../../../locale/teta-localisation';\nimport { AsyncPipe } from '@angular/common';\nimport { OnlyNumberDirective } from '../../../directive/only-number/only-number.directive';\nimport { FormsModule } from '@angular/forms';\nimport { InputComponent } from '../../input/input/input.component';\n\n@Component({\n selector: 'teta-numeric-filter',\n templateUrl: './numeric-filter.component.html',\n styleUrls: ['./numeric-filter.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [InputComponent, FormsModule, OnlyNumberDirective, AsyncPipe]\n})\nexport class NumericFilterComponent<T> extends FilterComponentBase<T> implements OnInit {\n @Input() column: FilterItem;\n @Input() data: T[];\n @Input() filterOptions: IIdName<any>[] = [];\n @Output() filterChanged: EventEmitter<FilterBase<NumericFilterValue>> = new EventEmitter<\n FilterBase<NumericFilterValue>\n >();\n\n filter: NumericFilter;\n\n private state$: FilterState;\n\n @Input()\n set state(val: FilterState) {\n this.state$ = val;\n this.filter = this.getFilter();\n this.changeDetector.detectChanges();\n }\n\n get state() {\n return this.state$;\n }\n locale: Observable<TetaLocalisation>;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private _config: TetaConfigService,\n ) {\n super();\n this.locale = this._config.locale;\n }\n\n ngOnInit() {\n this.filter = this.getFilter();\n }\n\n private getFilter(): NumericFilter {\n let filter = this.state.numericFilters?.find((f) => f.field === this.column.filterField);\n if (filter === null || filter === undefined) {\n filter = this.state.addNumericFilter(\n new NumericFilter({\n value: new NumericFilterValue(),\n field: this.column.filterField,\n name: this.column.name,\n strict: true,\n }),\n );\n }\n return filter;\n }\n}\n","@if (locale | async; as loc) {\n <div class=\"form-row padding-3\">\n <teta-input [label]=\"loc.from\">\n <input\n class=\"input\"\n type=\"text\"\n style=\"width: 110px\"\n [tetaOnlyNumber]=\"true\"\n [ngModel]=\"filter.value?.greaterThan\"\n (ngModelChange)=\"filter.value.greaterThan = $event\"\n />\n </teta-input>\n <teta-input [label]=\"loc.to\">\n <input\n class=\"input\"\n type=\"text\"\n style=\"width: 110px\"\n [tetaOnlyNumber]=\"true\"\n [ngModel]=\"filter.value?.lessThan\"\n (ngModelChange)=\"filter.value.lessThan = $event\"\n />\n </teta-input>\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { StringFilter } from '../contarct/string-filter';\nimport { FilterState } from '../contarct/filter-state';\nimport { FilterBase } from '../base/filter-base';\nimport { FilterComponentBase } from '../base/filter-component-base';\nimport { FilterItem } from '../contarct/filter-item';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { TetaConfigService } from '../../../locale/teta-config.service';\nimport { Observable } from 'rxjs';\nimport { TetaLocalisation } from '../../../locale/teta-localisation';\nimport { AsyncPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { InputComponent } from '../../input/input/input.component';\n\n@Component({\n selector: 'teta-string-filter',\n templateUrl: './string-filter.component.html',\n styleUrls: ['./string-filter.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [InputComponent, FormsModule, AsyncPipe]\n})\nexport class StringFilterComponent<T> extends FilterComponentBase<T> implements OnInit {\n @Input() column: FilterItem;\n @Input() data: T[];\n @Input() filterOptions: IIdName<any>[] = [];\n @Output() filterChanged: EventEmitter<FilterBase<string>> = new EventEmitter<FilterBase<string>>();\n\n filter: StringFilter;\n state$: FilterState;\n\n @Input()\n set state(val: FilterState) {\n this.state$ = val;\n this.filter = this.getFilter();\n this.changeDetector.detectChanges();\n }\n\n get state() {\n return this.state$;\n }\n locale: Observable<TetaLocalisation>;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private _config: TetaConfigService,\n ) {\n super();\n this.locale = this._config.locale;\n }\n\n ngOnInit() {}\n\n setFilter() {\n this.filterChanged.emit(this.filter);\n }\n\n private getFilter(): StringFilter {\n let filter = this.state.stringFilters.find((f) => f.field === this.column.filterField);\n if (!filter) {\n filter = this.state.addStringFilter(\n new StringFilter({\n value: '',\n field: this.column.filterField,\n type: this.column.stringFilterType,\n name: this.column.name,\n }),\n );\n }\n filter.type = this.column.stringFilterType;\n return filter;\n }\n}\n","<div class=\"padding-3\">\n <teta-input [label]=\"(locale | async)?.search\">\n <input type=\"text\" class=\"input\" [(ngModel)]=\"filter.value\" (blur)=\"setFilter()\" (keydown.enter)=\"setFilter()\" />\n </teta-input>\n</div>\n","import {\n Component,\n OnInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Input,\n forwardRef,\n HostBinding,\n HostListener,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { RadioButtonComponent } from '../radio-button/radio-button.component';\n\ntype ButtonOrNullOrUndefined = RadioButtonComponent | undefined | null;\n\n@Component({\n selector: 'teta-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class RadioComponent implements ControlValueAccessor {\n @HostBinding('tabindex') tabindex = 0;\n @HostBinding('class.radio') radioClass = true;\n\n /** Менять значение при изменении выбранного */\n @Input()\n @HostBinding('class.radio_inline')\n inline: boolean;\n\n @Input() checkChangeSelected = true;\n\n @Input() set disabled(val: boolean) {\n this.disabled$ = val;\n this.buttons$.forEach((b) => (b.disabled = this.disabled));\n }\n\n get disabled() {\n return this.disabled$;\n }\n\n @Input() get value(): any {\n if (this.checkedButton$) {\n return this.checkedButton$.value;\n }\n return null;\n }\n\n set value(val: any) {\n this.writeValue(val);\n }\n\n private buttons$: RadioButtonComponent[] = [];\n private checkedButton$: ButtonOrNullOrUndefined;\n private selectedButton$: ButtonOrNullOrUndefined;\n private disabled$ = false;\n\n constructor(private _cdr: ChangeDetectorRef) {}\n\n @HostListener('focus', ['$event'])\n focusHandler(event: FocusEvent) {\n this.selectFirst();\n }\n\n @HostListener('focusout', ['$event'])\n focusoutHandler(event: FocusEvent) {\n if (this.selectedButton$) {\n this.selectedButton$.selected = false;\n this.selectedButton$ = null;\n }\n }\n\n @HostListener('keydown', ['$event'])\n keyEvent(event: KeyboardEvent) {\n const key = event.code || event.key;\n switch (key) {\n case 'Space':\n case 'Enter':\n case 'Spacebar':\n this.checkSelected();\n break;\n\n case 'ArrowUp':\n case 'Up':\n case 'ArrowLeft':\n case 'Left':\n this.selectPrevious();\n break;\n\n case 'ArrowDown':\n case 'Down':\n case 'ArrowRight':\n case 'Right':\n this.selectNext();\n break;\n default:\n return false;\n }\n\n event.cancelBubble = true;\n if (event.stopPropagation) {\n event.stopPropagation();\n }\n return false;\n }\n\n selectFirst() {\n if (!this.selectedButton$) {\n if (this.checkedButton$) {\n this.selectedButton$ = this.checkedButton$;\n this.selectedButton$.selected = true;\n return true;\n }\n\n for (const btn of this.buttons$) {\n if (!btn.disabled) {\n this.selectedButton$ = btn;\n this.selectedButton$.selected = true;\n return true;\n }\n }\n }\n return false;\n }\n\n _setChecked(btn: RadioButtonComponent) {\n if (this.checkedButton$) {\n this.checkedButton$.checked = false;\n }\n this.checkedButton$ = btn;\n this.checkedButton$.checked = true;\n if (this.selectedButton$) {\n this.selectedButton$.selected = false;\n }\n this.selectedButton$ = btn;\n this.selectedButton$.selected = true;\n this._onChange(this.value);\n this._cdr.markForCheck();\n }\n\n _addButton(btn: RadioButtonComponent) {\n if (this.disabled) {\n btn.disabled = this.disabled;\n }\n return this.buttons$.push(btn) - 1;\n }\n\n _removeButton(btn: RadioButtonComponent) {\n const index = this.buttons$.indexOf(btn);\n if (index > -1) {\n this.buttons$.splice(index, 1);\n }\n }\n\n /** Writes a new value to the element. */\n writeValue(obj: any): void {\n if (this.checkedButton$) {\n this.checkedButton$.checked = false;\n }\n\n this.checkedButton$ = this.buttons$.find((b) => b.value === obj);\n if (this.checkedButton$) {\n this.checkedButton$.checked = true;\n }\n this._cdr.markForCheck();\n }\n\n /** model callback вызовется когда модель измениться из ui */\n _onChange: (value: any) => void = () => {};\n\n /** Registers a callback function that should be called when the control's value changes in the UI */\n registerOnChange(fn: (value: any) => void): void {\n this._onChange = fn;\n }\n\n _onTouched = () => {};\n\n /** Registers a callback function that should be called when the control receives a blur event. */\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n /** This function is called by the forms API when the control status changes to or from \"DISABLED\". */\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._cdr.markForCheck();\n }\n\n private selectBtn(btn: RadioButtonComponent) {\n if (this.selectedButton$) {\n this.selectedButton$.selected = false;\n }\n this.selectedButton$ = btn;\n this.selectedButton$.selected = true;\n if (this.checkChangeSelected) {\n this.checkSelected();\n }\n this._cdr.markForCheck();\n }\n\n private selectNext() {\n if (this.selectFirst()) {\n return;\n }\n\n const length = this.buttons$.length;\n let newIndex = this.selectedButton$ ? this.buttons$.indexOf(this.selectedButton$) : 0;\n let firstCycle = true;\n do {\n newIndex++;\n if (firstCycle && newIndex === length) {\n newIndex = 0;\n firstCycle = false;\n }\n const btn = this.buttons$[newIndex];\n if (btn && !btn.disabled) {\n this.selectBtn(btn);\n return;\n }\n } while (newIndex < length);\n }\n\n private selectPrevious() {\n if (this.selectFirst()) {\n return;\n }\n\n let newIndex = this.selectedButton$ ? this.buttons$.indexOf(this.selectedButton$) : 0;\n let firstCycle = true;\n do {\n newIndex--;\n if (firstCycle && newIndex === -1) {\n newIndex = this.buttons$.length - 1;\n firstCycle = false;\n }\n const btn = this.buttons$[newIndex];\n if (btn && !btn.disabled) {\n this.selectBtn(btn);\n return;\n }\n } while (newIndex >= 0);\n }\n\n private checkSelected() {\n if (this.selectFirst()) {\n return;\n }\n if (this.selectedButton$) {\n this._setChecked(this.selectedButton$);\n }\n }\n}\n","<ng-content></ng-content>\n","import {\n Component,\n OnInit,\n Host,\n OnDestroy,\n ViewContainerRef,\n Input,\n HostListener,\n HostBinding,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { RadioComponent } from '../radio/radio.component';\n\n@Component({\n selector: 'teta-radio-button',\n templateUrl: './radio-button.component.html',\n styleUrls: ['./radio-button.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n})\nexport class RadioButtonComponent implements OnInit, OnDestroy {\n @HostBinding('class.radio-button')\n radioButton = true;\n\n @HostBinding('class.radio-button-selected')\n selected: boolean;\n\n @Input()\n @HostBinding('class.radio-button-checked')\n checked: boolean;\n\n @Input()\n @HostBinding('class.radio-button_disabled')\n disabled: boolean;\n\n @Input() set value(val: any) {\n this._value = val;\n }\n\n get value() {\n if (this._value === undefined) {\n if (this.container.element.nativeElement instanceof HTMLElement) {\n return this.container.element.nativeElement.innerText;\n }\n }\n return this._value;\n }\n\n private _value: any;\n\n constructor(\n private container: ViewContainerRef,\n @Host() public radio: RadioComponent,\n ) {}\n\n @HostListener('click')\n hostClick() {\n if (!this.disabled) {\n this.radio._setChecked(this);\n }\n }\n\n ngOnInit() {\n this.radio._addButton(this);\n }\n\n ngOnDestroy(): void {\n this.radio._removeButton(this);\n }\n}\n","<div class=\"radio-button-icon\">\n @if (checked) {\n <div class=\"radio-button-small-icon\"></div>\n }\n</div>\n<ng-content></ng-content>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { FilterComponentBase } from '../base/filter-component-base';\nimport { FilterItem } from '../contarct/filter-item';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { FilterBase } from '../base/filter-base';\nimport { FilterState } from '../contarct/filter-state';\nimport { BooleanFilter } from '../contarct/boolean-filter';\nimport { TetaConfigService } from '../../../locale/teta-config.service';\nimport { Observable } from 'rxjs';\nimport { TetaLocalisation } from '../../../locale/teta-localisation';\nimport { AsyncPipe } from '@angular/common';\nimport { RadioButtonComponent } from '../../radio/radio-button/radio-button.component';\nimport { FormsModule } from '@angular/forms';\nimport { RadioComponent } from '../../radio/radio/radio.component';\n\n@Component({\n selector: 'teta-boolean-filter',\n templateUrl: './boolean-filter.component.html',\n styleUrls: ['./boolean-filter.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RadioComponent, FormsModule, RadioButtonComponent, AsyncPipe]\n})\nexport class BooleanFilterComponent<T> extends FilterComponentBase<T> implements OnInit {\n @Input() column: FilterItem;\n @Input() data: T[];\n @Input() filterOptions: IIdName<any>[] = [];\n @Output() filterChanged: EventEmitter<FilterBase<boolean>> = new EventEmitter<FilterBase<boolean>>();\n\n filter: BooleanFilter;\n state$: FilterState;\n\n @Input()\n set state(val: FilterState) {\n this.state$ = val;\n this.filter = this.getFilter();\n this.changeDetector.detectChanges();\n }\n\n get state() {\n return this.state$;\n }\n\n locale: Observable<TetaLocalisation>;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private _config: TetaConfigService,\n ) {\n super();\n this.locale = this._config.locale;\n }\n\n ngOnInit() {}\n\n setFilter() {\n this.filterChanged.emit(this.filter);\n }\n\n private getFilter(): BooleanFilter {\n let filter = this.state.booleanFilters.find((f) => f.field === this.column.filterField);\n if (!filter) {\n filter = this.state.addBooleanFilter(\n new BooleanFilter({\n value: null,\n field: this.column.filterField,\n name: this.column.name,\n }),\n );\n }\n return filter;\n }\n}\n","@if (locale | async; as loc) {\n <div class=\"padding-3\">\n <teta-radio [ngModel]=\"filter.value\" (ngModelChange)=\"setFilter()\">\n <teta-radio-button [value]=\"null\">{{ loc?.notSelected }}</teta-radio-button>\n <teta-radio-button [value]=\"true\">{{ loc?.yes }}</teta-radio-button>\n <teta-radio-button [value]=\"false\">{{ loc?.no }}</teta-radio-button>\n </teta-radio>\n </div>\n}\n","export enum FilterType {\n string,\n number,\n date,\n list,\n boolean,\n custom,\n}\n","import { FilterType } from '../enum/filter-type.enum';\nimport { Type } from '@angular/core';\nimport { NumericFilterComponent } from '../numeric-filter/numeric-filter.component';\nimport { DateFilterComponent } from '../date-filter/date-filter.component';\nimport { ListFilterComponent } from '../list-filter/list-filter.component';\nimport { StringFilterComponent } from '../string-filter/string-filter.component';\nimport { FilterItem } from './filter-item';\nimport { BooleanFilterComponent } from '../boolean-filter/boolean-filter.component';\n\nconst filterComponentsMap: Map<FilterType, Type<any>> = new Map<FilterType, Type<any>>()\n .set(FilterType.number, NumericFilterComponent)\n .set(FilterType.date, DateFilterComponent)\n .set(FilterType.list, ListFilterComponent)\n .set(FilterType.string, StringFilterComponent)\n .set(FilterType.boolean, BooleanFilterComponent)\n .set(FilterType.custom, StringFilterComponent);\n\nexport const getFilterComponent = (item: FilterItem): Type<any> =>\n filterComponentsMap.has(item.filterType) ? filterComponentsMap.get(item.filterType) : StringFilterComponent;\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewContainerRef,\n} from '@angular/core';\nimport { FilterState } from '../contarct/filter-state';\nimport { FilterItem } from '../contarct/filter-item';\nimport { FilterBase } from '../base/filter-base';\nimport { FilterComponentBase } from '../base/filter-component-base';\nimport { takeWhile } from 'rxjs/operators';\nimport { getFilterComponent } from '../contarct/filter-component-map';\nimport { IIdName } from '../../../common/contract/i-id-name';\n\n@Component({\n selector: 'teta-filter-host',\n template: '',\n styles: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class FilterHostComponent<T> implements OnInit, OnDestroy {\n @Input()\n set column(val: FilterItem) {\n this._column = val;\n if (this._init) {\n this._componentRef.instance.filterField = this._column;\n this._componentRef.injector.get(ChangeDetectorRef).detectChanges();\n }\n }\n\n @Input()\n set state(val: FilterState) {\n this._state = val;\n if (this._init) {\n this._componentRef.instance.state = this._state;\n this._componentRef.injector.get(ChangeDetectorRef).detectChanges();\n }\n }\n\n @Input()\n set data(data: T[]) {\n this._data = data;\n if (this._init) {\n this._componentRef.instance.data = this._data;\n this._componentRef.injector.get(ChangeDetectorRef).detectChanges();\n }\n }\n\n @Input()\n set filterOptions(val: IIdName<any>[]) {\n this._filterOptions = val;\n if (this._init) {\n this._componentRef.instance.filterOptions = this._filterOptions;\n this._componentRef.injector.get(ChangeDetectorRef).detectChanges();\n }\n }\n\n @Output() filterChanged: EventEmitter<FilterBase<any>> = new EventEmitter();\n\n private _alive = true;\n private _column: FilterItem;\n private _state: FilterState;\n private _data: T[];\n private _filterOptions: IIdName<any>[];\n private _componentRef: ComponentRef<any>;\n private _init: boolean;\n\n constructor(private viewContainerRef: ViewContainerRef) {}\n\n ngOnInit() {\n if (!FilterComponentBase.isPrototypeOf(this._column.filterComponent)) {\n this._column.filterComponent = getFilterComponent(this._column);\n }\n this._componentRef = this.viewContainerRef.createComponent<FilterComponentBase<T>>(this._column.filterComponent);\n this._componentRef.instance.column = this._column;\n this._componentRef.instance.state = this._state;\n this._componentRef.instance.data = this._data;\n this._componentRef.instance.filterOptions = this._filterOptions;\n this._componentRef.injector.get(ChangeDetectorRef).detectChanges();\n this._init = true;\n this._componentRef.instance.filterChanged\n .pipe(takeWhile((_) => this._alive))\n .subscribe((filter: FilterBase<any>) => {\n this.filterChanged.emit(filter);\n });\n }\n\n ngOnDestroy() {\n this._alive = false;\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'teta-icon-file',\n templateUrl: './icon-file.component.html',\n styleUrls: ['./icon-file.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class IconFileComponent implements OnInit {\n @Input() name: string;\n @Input() class;\n\n @HostBinding('class')\n private get getClass(): string {\n const result = [this.class, 'icon icon-file'];\n return result.join(' ');\n }\n\n constructor() {}\n\n ngOnInit(): void {}\n\n getName(): string {\n return `#${this.name}`;\n }\n}\n","<svg class=\"icon__image\">\n <use [attr.xlink:href]=\"getName()\"></use>\n</svg>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n HostListener,\n inject,\n Input,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'teta-color-input',\n templateUrl: './color-input.component.html',\n styleUrls: ['./color-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorInputComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule],\n})\nexport class ColorInputComponent implements ControlValueAccessor {\n private elementRef = inject(ElementRef);\n @Input() disabled = false;\n @ViewChild('input', { static: false }) input: ElementRef;\n value = '';\n\n constructor(private _cdr: ChangeDetectorRef) {}\n\n @HostListener('click') onFocus() {\n if (this.disabled) {\n return;\n }\n this.input.nativeElement.focus();\n }\n\n emitBlur() {\n this.onTouched();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._cdr.markForCheck();\n }\n\n writeValue(input: string): void {\n this.value = input;\n this._cdr.detectChanges();\n }\n\n onChange(input: string): void {}\n\n onTouched(): void {}\n\n getHexColor(color: string) {\n if (color && color.startsWith('var')) {\n const value = color.substring(color.indexOf('(') + 1, color.lastIndexOf(')'));\n const varColor = getComputedStyle(this.elementRef.nativeElement).getPropertyValue(value).trim();\n if (varColor) {\n color = varColor;\n }\n }\n if (color && color.startsWith('rgb')) {\n const value = color.substring(color.indexOf('(') + 1, color.lastIndexOf(')'));\n const colorArray = value.split(',');\n color = `#${('00' + parseInt(colorArray[0], 10).toString(16)).slice(-2)}${(\n '00' + parseInt(colorArray[1], 10).toString(16)\n ).slice(-2)}${('00' + parseInt(colorArray[2], 10).toString(16)).slice(-2)}`;\n }\n return color;\n }\n}\n","<input\n type=\"color\"\n #input\n [disabled]=\"disabled\"\n (blur)=\"emitBlur()\"\n [ngModel]=\"getHexColor(value)\"\n (ngModelChange)=\"value = $event; onChange($event)\"\n [ngModelOptions]=\"{ updateOn: 'blur' }\"\n/>\n","import { ChangeDetectionStrategy, Component, HostBinding, OnInit } from '@angular/core';\n\n@Component({\n selector: 'teta-form-group-title',\n templateUrl: './form-group-title.component.html',\n styleUrls: ['./form-group-title.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class FormGroupTitleComponent implements OnInit {\n @HostBinding('class.form-group-title') private readonly className = true;\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<div class=\"font-overline form-group-title-text\">\n <ng-content></ng-content>\n</div>\n<div class=\"form-group-title-line\"></div>\n","import { Injectable } from '@angular/core';\nimport { Observable, ReplaySubject, Subject } from 'rxjs';\nimport { Message } from './model/message';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MessageService {\n message: Observable<Message>;\n clear: Observable<string>;\n\n private _message = new ReplaySubject<Message>(1);\n private _clear = new Subject<string>();\n\n constructor() {\n this.message = this._message.asObservable();\n this.clear = this._clear.asObservable();\n }\n\n add(message: Message) {\n if (message) {\n this._message.next(message);\n }\n }\n\n addMultiple(messages: Message[]) {\n if (messages && messages.length) {\n messages.forEach((n) => {\n this._message.next(n);\n });\n }\n }\n\n clearMessages(name: string) {\n this._clear.next(name);\n }\n}\n","import { TemplateRef } from '@angular/core';\nimport { viewType } from '../../../common/model/view-type.model';\n\nexport class Message {\n name: string | null | undefined;\n title: string | null | undefined;\n text: string | null | undefined;\n infinite: boolean;\n viewType?: viewType = 'rounded';\n duration = 10000;\n className: string[] | null | undefined;\n palette = 'primary';\n template: TemplateRef<any>;\n\n constructor(options?: {\n name?: string;\n title: string;\n text?: string;\n infinite?: boolean;\n duration?: number;\n viewType?: viewType;\n palette?: string;\n className?: string[];\n template?: TemplateRef<any>;\n }) {\n if (options) {\n this.name = options.name;\n this.title = options.title;\n this.viewType = options.viewType || 'rounded';\n this.text = options.text;\n this.infinite = options.infinite || false;\n this.className = options.className;\n if (options.palette) {\n this.palette = options.palette;\n }\n this.template = options.template;\n if (options.duration && options.duration > 0) {\n this.duration = options.duration;\n }\n }\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport { Message } from '../model/message';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { ButtonComponent } from '../../button/button/button.component';\n\n@Component({\n selector: 'teta-message',\n templateUrl: './message.component.html',\n styleUrls: ['./message.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ButtonComponent, IconComponent, NgTemplateOutlet]\n})\nexport class MessageComponent implements AfterViewInit, OnDestroy {\n @Input() message: Message;\n @Input() index: number;\n @Output() closed: EventEmitter<any> = new EventEmitter();\n @Input() class;\n\n @HostBinding('class')\n private get getClass() {\n const result = ['message'];\n if (this.message.className?.length > 0) {\n result.push(...this.message.className);\n }\n if (this.message.palette) {\n result.push(`message-${this.message.palette}`);\n }\n result.push('message_' + this.message.viewType);\n return result.join(' ');\n }\n\n timeout: any;\n\n constructor() {}\n\n @HostListener('mouseleave')\n init() {\n if (!this.message.infinite) {\n this.timeout = setTimeout(() => {\n this.closed.emit({\n index: this.index,\n message: this.message,\n });\n }, this.message.duration);\n }\n }\n\n @HostListener('mouseenter')\n reset() {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n }\n\n closeMe(event: MouseEvent) {\n this.reset();\n\n this.closed.emit({\n index: this.index,\n message: this.message,\n });\n\n event.preventDefault();\n }\n\n ngAfterViewInit() {\n this.init();\n }\n\n ngOnDestroy() {\n this.reset();\n }\n}\n","<div class=\"row align-center justify-content-between\">\n <div class=\"font-title-2 padding-left-4\">\n {{ message.title }}\n </div>\n <button teta-button type=\"button\" [square]=\"true\" [view]=\"'ghost'\" (click)=\"closeMe($event)\">\n <teta-icon class=\"fill-text-90\" [name]=\"'closeBig'\"></teta-icon>\n </button>\n</div>\n@if (!message.template && message.text) {\n <div class=\"font-body-3 padding-v-2 padding-left-4\">\n {{ message.text }}\n </div>\n}\n@if (message.template) {\n <ng-container *ngTemplateOutlet=\"message.template; context: { $implicit: message }\"></ng-container>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { MessageService } from '../message.service';\nimport { Message } from '../model/message';\nimport { Align } from '../../../common/enum/align.enum';\nimport { VerticalAlign } from '../../../common/enum/vertical-align.enum';\nimport { takeWhile } from 'rxjs/operators';\nimport { MessageComponent } from '../message/message.component';\n\n@Component({\n selector: 'teta-message-host',\n templateUrl: './message-host.component.html',\n styleUrls: ['./message-host.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MessageComponent]\n})\nexport class MessageHostComponent implements OnInit, OnDestroy {\n @Input() class;\n @Input() align: Align = Align.right;\n @Input() verticalAlign: VerticalAlign = VerticalAlign.bottom;\n @Output() itemClose: EventEmitter<any> = new EventEmitter();\n\n messages: Message[] = [];\n private readonly _alignMap: Map<Align, string> = new Map<Align, string>()\n .set(Align.right, 'message-host_right')\n .set(Align.left, 'message-host_left')\n .set(Align.center, 'message-host_center');\n private readonly _valignMap: Map<VerticalAlign, string> = new Map<VerticalAlign, string>()\n .set(VerticalAlign.top, 'message-host_top')\n .set(VerticalAlign.center, 'message-host_vertical-center')\n .set(VerticalAlign.bottom, 'message-host_bottom');\n\n @HostBinding('class')\n private get getClass(): string {\n const result = [this.class, 'message-host'];\n if (this._alignMap.has(this.align)) {\n result.push(this._alignMap.get(this.align));\n }\n if (this._valignMap.has(this.verticalAlign)) {\n result.push(this._valignMap.get(this.verticalAlign));\n }\n return result.join(' ');\n }\n\n private _alive = true;\n\n constructor(\n private _svc: MessageService,\n private _cdr: ChangeDetectorRef,\n ) {}\n\n ngOnInit() {\n this._svc.message.pipe(takeWhile((_) => this._alive)).subscribe((messages) => {\n if (messages) {\n if (!this.messages) {\n this.messages = [];\n }\n this.messages.push(messages);\n }\n this._cdr.markForCheck();\n });\n\n this._svc.clear.pipe(takeWhile((_) => this._alive)).subscribe((x: string) => {\n if (!x) {\n this.messages = [];\n } else {\n this.messages = this.messages?.filter((_) => _.name !== x);\n }\n this._cdr.markForCheck();\n });\n }\n\n closedItem(event: any) {\n this.messages.splice(event.index, 1);\n this.itemClose.emit({\n message: event.message,\n });\n }\n\n ngOnDestroy() {\n this._alive = false;\n }\n}\n","@for (message of messages; track message; let i = $index) {\n <teta-message (closed)=\"closedItem($event)\" [message]=\"message\" [index]=\"i\"> </teta-message>\n}\n","export enum ModalCloseReason {\n resolve,\n exit,\n backdrop,\n esc,\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n Output,\n} from '@angular/core';\nimport { IModalConfig } from '../model/i-modal-config';\nimport { IModalResult } from '../model/i-modal-result';\nimport { ModalCloseReason } from '../model/modal-close-reason.enum';\nimport { animate, style, transition, trigger } from '@angular/animations';\n\n@Component({\n selector: 'teta-modal-container',\n templateUrl: './modal-container.component.html',\n styleUrls: ['./modal-container.component.scss'],\n animations: [\n trigger('dialog', [\n transition('void => *', [style({ top: '-100%' }), animate('150ms ease-in', style({ top: '0' }))]),\n transition('* => void', [animate('150ms ease-in', style({ top: '-100%' }))]),\n ]),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class ModalContainerComponent {\n @Input() config: IModalConfig;\n @Output() closeEvent = new EventEmitter<IModalResult>();\n\n @HostBinding('attr.tabindex') tabindex = -1;\n @HostBinding('@dialog') dialog = true;\n\n @HostBinding('class')\n get classList(): string {\n const classList = ['modal__window'];\n if (this.config) {\n if (this.config && this.config.class) {\n classList.push(...this.config.class);\n }\n if (this.config.backdrop) {\n classList.push('modal__backdrop');\n }\n }\n return classList.join(' ');\n }\n\n constructor(private elRef$: ElementRef) {}\n\n @HostListener('keyup', ['$event']) keyup(event: KeyboardEvent): void {\n if (this.config && this.config.esc && !event.defaultPrevented) {\n const key = event.key || event.keyCode;\n\n if (key === 'Escape' || key === 'Esc' || key === 27) {\n this.closeEvent.emit({\n reason: ModalCloseReason.esc,\n });\n }\n }\n }\n\n @HostListener('click', ['$event']) click(event: MouseEvent): void {\n if (this.config.closeOnBackdropClick === true && this.elRef$.nativeElement === event.target) {\n this.closeEvent.emit({\n reason: ModalCloseReason.backdrop,\n });\n }\n }\n}\n","<div class=\"modal__container\" [class.modal__container_resize]=\"config?.resizable\">\n <ng-content></ng-content>\n</div>\n","import { IModalResult } from './i-modal-result';\n\nexport class CurrentModal {\n close: (result?: IModalResult) => void;\n}\n","import { Component, Input } from '@angular/core';\nimport { CurrentModal } from '../model/current-modal';\nimport { ModalCloseReason } from '../model/modal-close-reason.enum';\nimport { TranslocoModule } from '@jsverse/transloco';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { ButtonComponent } from '../../button/button/button.component';\nimport { ToolbarComponent } from '../../toolbar/toolbar/toolbar.component';\nimport { DialogButtonType } from '../model/dialog-data';\n\n@Component({\n selector: 'teta-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss'],\n imports: [ToolbarComponent, ButtonComponent, IconComponent, TranslocoModule],\n})\nexport class DialogComponent {\n @Input({ required: true }) title: string;\n\n private _text: string;\n get text(): string {\n return this._text;\n }\n @Input() set text(value: string) {\n this._text = value || '';\n }\n\n private _confirm: DialogButtonType;\n get confirm(): DialogButtonType {\n return this._confirm;\n }\n @Input() set confirm(value: DialogButtonType) {\n this._confirm = value || { text: 'common.ok', palette: 'primary' };\n }\n\n private _decline: null | DialogButtonType;\n get decline(): null | DialogButtonType {\n return this._decline;\n }\n @Input() set decline(value: null | DialogButtonType) {\n this._decline = value !== undefined ? value : { text: 'common.cancel', palette: 'text' };\n }\n\n constructor(public modal: CurrentModal) {}\n\n cancel() {\n this.modal.close({\n reason: ModalCloseReason.exit,\n });\n }\n\n ok() {\n this.modal.close({\n reason: ModalCloseReason.resolve,\n });\n }\n}\n","<h3 class=\"padding-2 font-title-2\">\n {{ title | transloco }}\n</h3>\n\n@if (text) {\n <p class=\"padding-2 font-body-3\">\n {{ text | transloco }}\n </p>\n}\n\n<teta-toolbar class=\"justify-content-end\">\n @if (decline) {\n <button teta-button (click)=\"cancel()\" [palette]=\"decline?.palette || 'text'\" [view]=\"'ghost'\">\n @if (decline?.icon) {\n <teta-icon [name]=\"decline.icon\"></teta-icon>\n }\n @if (decline.text) {\n {{ decline.text | transloco }}\n }\n </button>\n }\n\n <button teta-button (click)=\"ok()\" [palette]=\"confirm?.palette || 'primary'\">\n @if (confirm?.icon) {\n <teta-icon [name]=\"confirm.icon\"></teta-icon>\n }\n @if (confirm.text) {\n {{ confirm.text | transloco }}\n }\n </button>\n</teta-toolbar>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ModalContainerComponent } from './modal-container/modal-container.component';\nimport { DialogComponent } from './dialog/dialog.component';\n\nimport { TRANSLOCO_SCOPE, TranslocoModule } from '@jsverse/transloco';\n\n@NgModule({\n exports: [ModalContainerComponent, DialogComponent],\n imports: [CommonModule, TranslocoModule, ModalContainerComponent, DialogComponent],\n providers: [\n {\n provide: TRANSLOCO_SCOPE,\n useValue: { scope: 'common', alias: 'common' },\n multi: true,\n },\n ],\n})\nexport class ModalModule {}\n","import { Observable, Subject } from 'rxjs';\nimport { IModalResult } from './i-modal-result';\nimport { ComponentRef } from '@angular/core';\nimport { TetaContentRef } from '../../../common/contract/teta-content-ref';\nimport { ModalContainerComponent } from '../modal-container/modal-container.component';\n\nexport class ModalInstance<T = any> {\n onClose: Observable<IModalResult<T>>;\n private _onClose: Subject<IModalResult<T>> = new Subject<IModalResult<T>>();\n\n constructor(\n private _window: ComponentRef<ModalContainerComponent>,\n private _content: TetaContentRef,\n ) {\n this.onClose = this._onClose.asObservable();\n if (this._window && this._window.instance) {\n this._window.instance.closeEvent.subscribe((event: IModalResult) => {\n this.close(event);\n });\n }\n }\n\n get window(): ComponentRef<ModalContainerComponent> {\n return this._window;\n }\n\n get component(): ComponentRef<any> | null {\n return this._content.componentRef ? this._content.componentRef : null;\n }\n\n close = (event?: IModalResult) => {\n this._onClose.next(event);\n this._onClose.complete();\n this.destroy();\n };\n\n private destroy(): void {\n this._window.destroy();\n\n if (this._content && this._content.viewRef) {\n setTimeout(() => {\n this._content.viewRef.destroy();\n }, 150);\n }\n }\n}\n","import { Inject, Injectable, Injector, TemplateRef, Type } from '@angular/core';\nimport { ModalInstance } from './model/modal-instance';\nimport { Subject } from 'rxjs';\nimport { DynamicComponentService } from '../../common/service/dynamic-component.service';\nimport { ModalCloseReason } from './model/modal-close-reason.enum';\nimport { IModalConfig } from './model/i-modal-config';\nimport { CurrentModal } from './model/current-modal';\nimport { DynamicData } from '../../common/contract/dynamic-data';\nimport { ModalContainerComponent } from './modal-container/modal-container.component';\nimport { IModalResult } from './model/i-modal-result';\nimport { DOCUMENT } from '@angular/common';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModalService {\n private _stack: ModalInstance[] = [];\n private _modalChanged = new Subject<void>();\n private readonly _container: any;\n\n constructor(\n @Inject(DOCUMENT)\n private _document: any,\n private _injector: Injector,\n private _factory: DynamicComponentService,\n ) {\n this._container = this._document.body;\n\n this._modalChanged.subscribe(() => {\n if (this._stack && this._stack.length > 0) {\n this.focus(this._stack[this._stack.length - 1]);\n }\n });\n }\n\n closeAll(): void {\n if (this._stack && this._stack.length > 0) {\n this._stack.forEach((instance: ModalInstance) => {\n instance.close({\n reason: ModalCloseReason.exit,\n });\n });\n }\n }\n\n create<T = any>(\n content: string | TemplateRef<any> | Type<any>,\n data?: any,\n config?: IModalConfig,\n injector?: Injector,\n ): ModalInstance<T> {\n if (content === null || content === undefined) {\n throw new Error('Specify template or component to render');\n }\n if (config === null || config === undefined) {\n config = Object.assign(\n {\n backdrop: true,\n class: [],\n esc: true,\n },\n config,\n );\n }\n if (injector === null || injector === undefined) {\n injector = this._injector;\n }\n const currentModal = new CurrentModal();\n const modalData = new DynamicData(data);\n\n injector = this.getInjector(currentModal, modalData, injector);\n const contentInstance = this._factory.createContent(\n content,\n injector,\n this.getContext(content, modalData, currentModal),\n );\n const window = this._factory.createComponent(ModalContainerComponent, contentInstance, injector, this._container);\n window.instance.config = config;\n\n const instance = new ModalInstance(window, contentInstance);\n currentModal.close = instance.close;\n this.register(instance);\n return instance;\n }\n\n private getContext(content: string | TemplateRef<any> | Type<any>, context: any, currentModal: CurrentModal): any {\n if (content instanceof TemplateRef) {\n return {\n $implicit: {\n modal: currentModal,\n data: context,\n },\n modal: currentModal,\n data: context,\n close: (result: IModalResult): void => {\n currentModal.close(result);\n },\n };\n }\n return context;\n }\n\n private getInjector(currentModal: CurrentModal, data: DynamicData, parent: Injector): Injector {\n return Injector.create({\n providers: [\n {\n provide: CurrentModal,\n useValue: currentModal,\n },\n {\n provide: DynamicData,\n useValue: data,\n },\n ],\n parent,\n });\n }\n\n private register(instance: ModalInstance): void {\n this._stack.push(instance);\n this._modalChanged.next();\n instance.onClose.subscribe(() => this.unregister(instance));\n }\n\n private unregister = (instance: ModalInstance) => {\n const index = this._stack.indexOf(instance);\n if (index > -1) {\n this._stack.splice(index, 1);\n this._modalChanged.next();\n }\n };\n\n private focus(instance: ModalInstance): void {\n if (instance && instance.window && instance.window.location.nativeElement) {\n setTimeout(() => {\n instance.window.location.nativeElement.focus();\n }, 0);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ModalService } from './modal.service';\nimport { Observable } from 'rxjs';\nimport { IModalResult } from './model/i-modal-result';\nimport { DialogComponent } from './dialog/dialog.component';\nimport { map } from 'rxjs/operators';\nimport { ModalCloseReason } from './model/modal-close-reason.enum';\nimport { DialogDataType } from './model/dialog-data';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DialogService {\n constructor(private _modal: ModalService) {}\n\n alert(title: string): void {\n this.createDialog({ title, decline: null });\n }\n\n confirm(confirmDialogData: DialogDataType): Observable<boolean> {\n return this.createDialog(confirmDialogData).pipe(\n map((result: IModalResult) => result.reason === ModalCloseReason.resolve),\n );\n }\n\n private createDialog(dialogData: DialogDataType): Observable<IModalResult> {\n const { title, text, confirm, decline } = dialogData;\n\n const dialog = this._modal.create(\n DialogComponent,\n {\n title,\n text,\n confirm,\n decline,\n },\n {\n esc: true,\n backdrop: true,\n },\n );\n return dialog.onClose;\n }\n}\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'teta-pager',\n templateUrl: './pager.component.html',\n styleUrls: ['./pager.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class PagerComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<p>pager works!</p>\n","export class PagerState {\n /**\n * Текущая страница\n */\n page = 0;\n\n /**\n * Количество записей на странице\n */\n pageSize = 30;\n /**\n * Количество страниц\n */\n count: number;\n /**\n * Количество записей\n */\n totalCount: number;\n /**\n * первая видимая страница\n */\n start: number;\n /**\n * Последняя видимая страница\n */\n end: number;\n /**\n * Список страниц\n */\n pages: number[];\n\n /**\n * Инициализация из анонимного объекта\n */\n constructor(options?: { page?: number; pageSize?: number; count?: number; totalCount?: number }) {\n if (options) {\n this.pageSize = options.pageSize || 30;\n this.count = options.count !== null && options.count !== undefined ? options.count : this.count;\n this.totalCount =\n options.totalCount !== null && options.totalCount !== undefined ? options.totalCount : this.totalCount;\n this.page = options.page !== null && options.page !== undefined ? options.page : 0;\n this.createPages();\n }\n }\n\n createPages() {\n if (this.page > this.count) {\n this.page = this.count > 0 ? this.count - 1 : 0;\n }\n\n let start = 0;\n let end = this.count - 1;\n if (this.count > 5) {\n start = this.page - 2;\n end = this.page + 2;\n if (start < 0) {\n start = 0;\n end = 4;\n }\n const rightShift = this.count - 1 - end;\n if (rightShift < 0) {\n start = this.count - 5;\n end = this.count - 1;\n }\n }\n\n const arr = [];\n for (let i = start; i <= end; i++) {\n arr.push(i);\n }\n\n this.start = start;\n this.end = end;\n this.pages = arr;\n }\n}\n","import { PagerState } from '../model/pager-state';\n\nexport class PagerUtil {\n static getPage<T>(data: T[], paging: PagerState): T[] {\n return data.slice(paging.page * paging.pageSize, (paging.page + 1) * paging.pageSize);\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { animate, style, transition, trigger } from '@angular/animations';\n\n@Component({\n selector: 'teta-panel',\n templateUrl: './panel.component.html',\n styleUrls: ['./panel.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('panel', [\n transition('void => *', [style({ opacity: '0' }), animate(300, style({ opacity: '1' }))]),\n transition('* => void', [animate(150, style({ opacity: '0' }))]),\n ]),\n ],\n standalone: true,\n})\nexport class PanelComponent implements OnInit {\n @Input() width = 500;\n\n @HostBinding('@panel')\n private get panel() {\n return {\n value: true,\n params: { width: this.width },\n };\n }\n\n @HostBinding('class.column') private readonly column = true;\n @HostBinding('class.column_fixed') private readonly auto = true;\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<ng-content></ng-content>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnInit,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport const SLIDER_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ProgressBarComponent),\n multi: true,\n};\n\n@Component({\n selector: 'teta-progress-bar',\n templateUrl: './progress-bar.component.html',\n styleUrls: ['./progress-bar.component.scss'],\n providers: [SLIDER_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class ProgressBarComponent implements OnInit, ControlValueAccessor {\n @Input() min = 0;\n @Input() max = 100;\n @Input() step = 0;\n\n @ViewChild('progressSlider', { static: true })\n private readonly slider: ElementRef;\n @HostBinding('class.progress') private readonly progressBar = true;\n\n percent: number;\n moving: boolean;\n\n set value(value: number) {\n this._value = value;\n this.percent = this.setPercentFromValue();\n this._cdr.detectChanges();\n }\n\n get value() {\n return this._value;\n }\n\n get containerPosition() {\n const rect = this._elementRef.nativeElement.getBoundingClientRect();\n return { min: rect.x, max: rect.x + rect.width };\n }\n\n private _value;\n\n constructor(\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n private _cdr: ChangeDetectorRef,\n @Inject(DOCUMENT) private _document: any,\n ) {}\n\n @HostListener('document:mouseup', ['$event']) mouseup() {\n this.moving = false;\n this.restoreGlobalMouseEvents();\n this.removeListener();\n }\n\n @HostListener('click', ['$event']) click = (event: MouseEvent) => {\n this.getMousePositionInPercents(event);\n };\n\n onChange(_: any) {}\n\n onTouched() {}\n\n registerOnChange(fn: (_: any) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {}\n\n writeValue(value: number): void {\n this.value = value;\n }\n\n mousedown = () => {\n this.moving = true;\n this.preventGlobalMouseEvents();\n this.addListener();\n };\n\n ngOnInit(): void {}\n\n private mousemove = (event: MouseEvent) => {\n event.preventDefault();\n this.getMousePositionInPercents(event);\n };\n\n private getMousePositionInPercents = (event: MouseEvent) => {\n const position = event.clientX - this.containerPosition.min;\n let percent = (100 / (this.containerPosition.max - this.containerPosition.min)) * position;\n percent = percent <= 0 ? 0 : percent > 100 ? 100 : percent;\n this.setValue(this.getValueFromPercent(percent));\n };\n\n private setValue(value: number) {\n this.value = value;\n this.onChange(this.value);\n }\n\n private getValueFromPercent(percent: number): number {\n if (percent === 0) {\n return this.min;\n }\n if (percent === 100) {\n return this.max;\n }\n const exactValue = this.min + (percent * (this.max - this.min)) / 100;\n if (!this.step || this.step <= 0 || isNaN(this.step)) {\n return exactValue;\n }\n return Math.round((exactValue - this.min) / this.step) * this.step + this.min;\n }\n\n private preventGlobalMouseEvents = () => {\n this._document.body.style['pointer-events'] = 'none';\n };\n\n private restoreGlobalMouseEvents = () => {\n this._document.body.style['pointer-events'] = 'auto';\n };\n\n private addListener() {\n this._document.addEventListener('mousemove', this.mousemove);\n }\n\n private removeListener() {\n this._document.removeEventListener('mousemove', this.mousemove);\n }\n\n private setPercentFromValue() {\n const range = this.max - this.min;\n return (100 / range) * (this.value - this.min);\n }\n}\n","<div class=\"progress-bar\" [style.width.%]=\"percent\"></div>\n<div\n class=\"progress-slider\"\n [class.progress-slider_visible]=\"moving\"\n #progressSlider\n (mousedown)=\"mousedown()\"\n (click)=\"click($event)\"\n [style.left.%]=\"percent\"\n></div>\n","export function isFunction(obj: any) {\n return !!(obj && obj?.constructor && obj?.call && obj?.apply);\n}\n","import { isFunction } from './is-function';\n\nexport function boolOrFuncCallback<M>(variable: boolean | ((row: M | undefined) => boolean)) {\n return (args: M) => {\n if (typeof variable === 'boolean') {\n return variable;\n } else if (isFunction(variable)) {\n return (variable as (row: M) => boolean)(args);\n }\n return true;\n };\n}\n","import { inject, Provider } from '@angular/core';\nimport {\n AbstractControl,\n ControlContainer,\n UntypedFormControl,\n UntypedFormGroup,\n ValidationErrors,\n Validators,\n} from '@angular/forms';\n\nimport { ArrayUtil } from '../common/util/array-util';\nimport { FilterType } from '../component/filter/enum/filter-type.enum';\nimport { TableColumn } from '../component/table/contract/table-column';\n\nexport class FormsUtil {\n static validateAllFormFields(formGroup: UntypedFormGroup) {\n formGroup.updateValueAndValidity();\n Object.keys(formGroup.controls).forEach((field) => {\n const control = formGroup.get(field);\n if (control instanceof UntypedFormControl) {\n control.markAsTouched({ onlySelf: true });\n control.markAsDirty({ onlySelf: true });\n } else if (control instanceof UntypedFormGroup) {\n this.validateAllFormFields(control);\n }\n });\n }\n\n static controlIsInvalid(formGroup: UntypedFormGroup, controlName: string) {\n return formGroup.controls[controlName]?.invalid && formGroup.controls[controlName]?.dirty;\n }\n\n static getControlErrors(formGroup: UntypedFormGroup, controlName: string): string[] {\n if (FormsUtil.controlIsInvalid(formGroup, controlName)) {\n return Object.keys(formGroup.controls[controlName]?.errors);\n }\n return [];\n }\n\n static matchValuesValidator(matchTo: string): (control: AbstractControl) => ValidationErrors | null {\n return (control: AbstractControl): ValidationErrors | null =>\n !!control.parent && !!control.parent.value && control.value === control.parent.controls[matchTo].value\n ? null\n : { isMatching: false };\n }\n\n static requiredIf(value: boolean): (control: AbstractControl) => ValidationErrors | null {\n return (control: AbstractControl): ValidationErrors | null =>\n !!control.parent && !!control.parent.value && control.value != null && value ? null : { isMatching: false };\n }\n\n static initFormFromColumns(columns: TableColumn[], dataItem: any) {\n const form = new UntypedFormGroup({});\n const flat = ArrayUtil.flatten(columns, 'columns');\n flat.forEach((column: TableColumn) => {\n const control = FormsUtil.initControlFromColumn(column, dataItem);\n form.registerControl(column.name, control);\n });\n return form;\n }\n\n static initControlFromColumn(column: TableColumn, dataItem: any) {\n return new UntypedFormControl(\n {\n value: dataItem ? dataItem[column.name] : undefined,\n disabled: !column.editable,\n },\n {\n validators: FormsUtil.getValidators(column),\n updateOn:\n column.filterType === FilterType.number || column.filterType === FilterType.string ? 'blur' : 'change',\n },\n );\n }\n\n static getValidators(column: TableColumn) {\n const validators = [];\n if (column.required) {\n validators.push(Validators.required);\n validators.push(FormsUtil.validatorNotEmpty);\n }\n if (column.minValue != null) {\n validators.push(Validators.min(column.minValue));\n }\n if (column.maxValue != null) {\n validators.push(Validators.max(column.maxValue));\n }\n if (column.maxLength != null) {\n validators.push(Validators.maxLength(column.maxLength));\n }\n if (column.validators?.length > 0) {\n validators.push(...column.validators);\n }\n return validators;\n }\n\n static validatorNotEmpty(control: AbstractControl): ValidationErrors | null {\n if (control?.value?.toString()?.trim()?.length <= 0) {\n return { required: true };\n }\n return null;\n }\n\n static formProvider: Provider = {\n provide: ControlContainer,\n useFactory: () => inject(ControlContainer, { skipSelf: true }),\n };\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaPropertyGridItemDescription]',\n standalone: true,\n})\nexport class PropertyGridItemDescriptionDirective {\n @Input('tetaPropertyGridItemDescription') name: string;\n\n constructor(public template: TemplateRef<any>) {}\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n OnInit,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgClass } from '@angular/common';\n\nexport const TOGGLE_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ToggleComponent),\n multi: true,\n};\n\n@Component({\n selector: 'teta-toggle',\n templateUrl: './toggle.component.html',\n styleUrls: ['./toggle.component.scss'],\n providers: [TOGGLE_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass]\n})\nexport class ToggleComponent implements ControlValueAccessor {\n @HostBinding('attr.tabindex') tabindex = 0;\n @HostBinding('class.toggle') toggleClass = true;\n\n get paletteClass() {\n if (this.palette) {\n return `toggle-button-${this.palette}`;\n }\n return '';\n }\n\n @Input() palette = 'primary';\n @Input() noLabel: boolean;\n\n /**\n * компонент неактивен\n */\n @HostBinding('class.toggle_disabled')\n @Input()\n disabled: boolean;\n\n /**\n * Значение\n */\n private model$: boolean;\n\n get model(): any {\n return this.model$;\n }\n\n set model(v: any) {\n if (v !== this.model$) {\n this.model$ = v;\n this.onChange(v);\n }\n }\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n @HostListener('click')\n changeValue() {\n if (this.disabled) {\n return;\n }\n this.model = !this.model;\n }\n\n writeValue(model: boolean) {\n this.model$ = model;\n this.cdr.markForCheck();\n }\n\n onChange(_: any) {}\n\n onTouched() {}\n\n registerOnChange(fn: (_: any) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n}\n","@if (!noLabel) {\n <span class=\"font-body-3 row_auto\">\n <ng-content></ng-content>\n </span>\n}\n<div class=\"toggle-button\" [class.toggle-button-on]=\"model\" [ngClass]=\"paletteClass\">\n <div class=\"toggle-button-circle\"></div>\n</div>\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaSelectOption]',\n standalone: true,\n})\nexport class SelectOptionDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaSelectValue]',\n standalone: true,\n})\nexport class SelectValueDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({\n selector: '[tetaHighlight]',\n standalone: true,\n})\nexport class HighlightDirective {\n @Input() set tetaHighlight(text: string) {\n setTimeout(() => {\n if (this._initialElement) {\n this.elementRef.nativeElement.innerHTML = this._initialElement;\n }\n if (!text) {\n return;\n }\n const pattern = /[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g;\n const searchWithOutRegExp = text\n .toLowerCase()\n .replace(pattern, '\\\\$&')\n .split(' ')\n .filter((t) => t.length > 0)\n .join('|');\n this._initialElement = this.elementRef.nativeElement.innerHTML;\n this.recursiveReplaceNode(this.elementRef.nativeElement.childNodes, searchWithOutRegExp);\n }, 10);\n }\n\n private _initialElement = null;\n\n constructor(private elementRef: ElementRef) {}\n\n private recursiveReplaceNode(nodes: NodeListOf<ChildNode>, searchWithOutRegExp: string): boolean {\n let match = false;\n const cacheNodes: ChildNode[] = [];\n nodes.forEach((node: ChildNode) => {\n cacheNodes.push(node);\n });\n cacheNodes.forEach((node) => {\n if (node.nodeType === 3) {\n if (node.nodeValue && node.nodeValue.search(new RegExp(searchWithOutRegExp, 'i')) > -1) {\n match = true;\n this.wrapNode(node, searchWithOutRegExp);\n }\n } else {\n match = this.recursiveReplaceNode(node.childNodes, searchWithOutRegExp) || match;\n }\n });\n\n return match;\n }\n\n private wrapNode(textNode: ChildNode, searchWithOutRegExp: string) {\n if (!textNode || !textNode.nodeValue) {\n return;\n }\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = textNode.nodeValue.replace(\n new RegExp(searchWithOutRegExp, 'gi'),\n (match) => `<mark>${match}</mark>`,\n );\n\n const parentNode = textNode.parentNode;\n if (parentNode) {\n while (tempDiv.firstChild) {\n parentNode.insertBefore(tempDiv.firstChild, textNode);\n }\n parentNode.removeChild(textNode);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n forwardRef,\n HostBinding,\n Input,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { Observable } from 'rxjs';\n\nimport { AutoCloseIgnoreCase } from '../../../common/contract/auto-close-ignore-case';\nimport { Align } from '../../../common/enum/align.enum';\nimport { VerticalAlign } from '../../../common/enum/vertical-align.enum';\nimport { viewType } from '../../../common/model/view-type.model';\nimport { TetaConfigService } from '../../../locale/teta-config.service';\nimport { TetaLocalisation } from '../../../locale/teta-localisation';\nimport { SelectOptionDirective } from '../select-option.directive';\nimport { SelectValueDirective } from '../select-value.directive';\nimport { HighlightDirective } from '../../../directive/highlight/highlight.directive';\nimport { ScrollableDirective } from '../../../directive/scrollable/scrollable.directive';\nimport { CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll, CdkVirtualForOf } from '@angular/cdk/scrolling';\nimport { ScrollableComponent } from '../../../directive/scrollable/scrollable/scrollable.component';\nimport { TextFieldComponent } from '../../input/text-field/text-field.component';\nimport { DropdownContentDirective } from '../../dropdown/dropdown-content.directive';\nimport { NgTemplateOutlet, AsyncPipe } from '@angular/common';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { DropdownHeadDirective } from '../../dropdown/dropdown-head.directive';\nimport { DropdownComponent } from '../../dropdown/dropdown/dropdown.component';\nimport { LetDirective } from '../../../directive/let/let.directive';\n\n@Component({\n selector: 'teta-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n LetDirective,\n DropdownComponent,\n DropdownHeadDirective,\n IconComponent,\n NgTemplateOutlet,\n DropdownContentDirective,\n TextFieldComponent,\n FormsModule,\n ScrollableComponent,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n ScrollableDirective,\n CdkVirtualForOf,\n HighlightDirective,\n AsyncPipe,\n ]\n})\nexport class SelectComponent implements ControlValueAccessor {\n @HostBinding('class.select_multiple')\n @Input()\n multiple: boolean;\n\n @Input() set options(options: any[]) {\n this._options = options;\n if (this._internalValue !== null && this._internalValue !== undefined && this.options) {\n this.getSelectedValue(this._internalValue);\n }\n }\n\n get options() {\n return this._options;\n }\n\n @Input() invalid: boolean;\n @Input() align: Align = Align.minWidth;\n @Input() verticalAlign: VerticalAlign = VerticalAlign.auto;\n @Input() autoClose = true;\n @Input() autoCloseIgnore: Array<AutoCloseIgnoreCase> = ['inside'];\n @Input() disabled: boolean;\n @Input() itemSize = 32;\n @Input() virtual: boolean;\n @Input() icon: string;\n @Input() placeholder: string;\n @Input() appendToBody: boolean;\n @Input() allowNull = true;\n @Input() viewType: viewType = 'rounded';\n @Input() notFoundText: string;\n @Input() valueRef: ((item: any) => any) | string;\n @Input() textRef: ((item: any) => string) | string;\n @Input() searchRef: string | ((item: any) => string);\n\n @ContentChild(SelectOptionDirective, { static: true })\n optionDirective: SelectOptionDirective;\n\n @ContentChild(SelectValueDirective, { static: true })\n valueDirective: SelectValueDirective;\n\n @HostBinding('class.select_open') open = false;\n\n @HostBinding('class.select') private readonly selectClass = true;\n\n @HostBinding('tabindex')\n private get tabindex() {\n return this.disabled ? null : 0;\n }\n\n @HostBinding('class.select_disabled')\n get isDisabled() {\n return this.disabled;\n }\n\n value: any | any[];\n searchText: string;\n locale: Observable<TetaLocalisation>;\n\n get visibleOptions(): any[] {\n if (!this.searchText) {\n return this.options;\n }\n return this.options?.filter(\n (option) => this.getSearchString(option).toLowerCase().indexOf(this.searchText.toLowerCase()) >= 0,\n );\n }\n\n private _options: any | any[];\n private _internalValue: any;\n\n constructor(\n private _cdr: ChangeDetectorRef,\n private _elementRef: ElementRef,\n private _config: TetaConfigService,\n ) {\n this.locale = this._config.locale;\n }\n\n clear() {\n let val: any;\n if (this.multiple === true) {\n val = [];\n } else {\n val = null;\n }\n this.value = val;\n this.onChange(this.value);\n this.open = false;\n this._cdr.markForCheck();\n this._cdr.detectChanges();\n }\n\n clickOption(option: any, event: MouseEvent): void {\n if (this.multiple === true) {\n if (!this.value?.length) {\n this.value = [];\n }\n if (this.value.indexOf(option) >= 0) {\n this.removeItem(option);\n } else {\n this.value = [...this.value, option];\n }\n this._internalValue = this.value.map((_) => this.getValue(_));\n this.onChange(this._internalValue);\n } else {\n this.value = option;\n this._internalValue = this.getValue(this.value);\n this.onChange(this._internalValue);\n this.open = false;\n }\n this._cdr.markForCheck();\n this._cdr.detectChanges();\n }\n\n itemSelected(option: any): boolean {\n if (this.multiple) {\n return this.value?.indexOf(option) >= 0;\n } else {\n return this.value === option;\n }\n }\n\n removeItemClick(option: any, event: MouseEvent): void {\n event.stopPropagation();\n this.removeItem(option);\n this._internalValue = this.value.map((_) => this.getValue(_));\n this.onChange(this._internalValue);\n }\n\n removeItem(option: any): void {\n this.value = this.value.filter((_) => _ !== option);\n }\n\n search(text: string): void {\n this.searchText = text;\n }\n\n getText(option: any): string {\n if (option == null) {\n return '';\n }\n switch (typeof this.textRef) {\n case 'string':\n return option[this.textRef];\n case 'function':\n return this.textRef(option);\n default:\n return option;\n }\n }\n\n getValue(option: any): any {\n switch (typeof this.valueRef) {\n case 'string':\n return option[this.valueRef];\n case 'function':\n return this.valueRef(option);\n default:\n return option;\n }\n }\n\n getSearchString(option: any): string {\n switch (typeof this.searchRef) {\n case 'string':\n return option[this.searchRef];\n case 'function':\n return this.searchRef(option);\n default:\n return '';\n }\n }\n\n focus() {\n this._elementRef.nativeElement.focus();\n }\n\n writeValue(value: any | any[]): void {\n this._internalValue = value;\n this.getSelectedValue(value);\n this._cdr.detectChanges();\n }\n\n onChange: (value: any) => void = () => {};\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = fn;\n }\n\n onTouched = () => {};\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._cdr.markForCheck();\n }\n\n private getSelectedValue(value: any | any[]) {\n if (this.multiple) {\n this.value =\n value && this.options ? this.options.filter((option) => value.indexOf(this.getValue(option)) > -1) : [];\n } else {\n this.value = this.options && this.options?.find((option) => this.getValue(option) === value);\n }\n }\n}\n","@if (locale | async; as loc) {\n <teta-dropdown\n [align]=\"align\"\n [verticalAlign]=\"verticalAlign\"\n [autoClose]=\"autoClose\"\n [autoCloseIgnore]=\"autoCloseIgnore\"\n [(open)]=\"open\"\n [appendToBody]=\"appendToBody\"\n [disabled]=\"disabled\"\n [viewType]=\"viewType\"\n class=\"row row_auto\"\n >\n <div tetaDropdownHead [class]=\"'row row_auto select-head select_' + viewType\" [class.select-head_invalid]=\"invalid\">\n <div class=\"row_auto flex align-center\">\n @if (icon) {\n <teta-icon [name]=\"icon\" [palette]=\"'text'\" class=\"margin-right-1\"></teta-icon>\n }\n @if ((value === null || value === undefined || value?.length === 0) && !multiple) {\n <span class=\"placeholder\">\n {{ placeholder || loc.notSelected }}\n </span>\n }\n <ng-container\n *ngTemplateOutlet=\"\n valueDirective ? valueDirective.template : valueDefault;\n context: { $implicit: value, value: value }\n \"\n ></ng-container>\n </div>\n <teta-icon [name]=\"'arrowDownSmall'\" [palette]=\"'text'\"></teta-icon>\n </div>\n @if (options?.length) {\n <div tetaDropdownContent class=\"select-body row_auto\" (click)=\"$event.preventDefault()\">\n @if (searchRef) {\n <div class=\"select-search padding-h-2 padding-top-2\">\n <teta-text-field\n [ngModel]=\"searchText\"\n [class]=\"'select_' + viewType\"\n (ngModelChange)=\"search($event)\"\n [placeholder]=\"loc.search\"\n [leftIconName]=\"'search'\"\n ></teta-text-field>\n </div>\n }\n @if (visibleOptions?.length) {\n @if (!multiple && allowNull) {\n <div [class]=\"'margin-h-2 list-item list-item_interactive select_' + viewType\" (click)=\"clear()\">\n {{ loc.notSelected }}\n </div>\n <div class=\"list-divider margin-bottom-0\"></div>\n }\n @if (virtual) {\n <teta-scrollable class=\"column column_auto\">\n <cdk-virtual-scroll-viewport tetaScrollable [itemSize]=\"40\" minBufferPx=\"200\" maxBufferPx=\"600\">\n <div\n [class]=\"'list-item list-item_interactive justify-content-between select_' + viewType\"\n *cdkVirtualFor=\"let option of visibleOptions; templateCacheSize: 0\"\n [class.list-item_active]=\"itemSelected(option)\"\n [tetaHighlight]=\"searchText\"\n (click)=\"clickOption(option, $event)\"\n >\n <div [tetaHighlight]=\"searchText\">\n <ng-container\n *ngTemplateOutlet=\"\n optionDirective ? optionDirective.template : optionDefault;\n context: { $implicit: option, option: option }\n \"\n >\n </ng-container>\n </div>\n @if (itemSelected(option)) {\n <teta-icon [name]=\"'tick'\" [palette]=\"'text'\" class=\"margin-left-2\"></teta-icon>\n }\n </div>\n </cdk-virtual-scroll-viewport>\n </teta-scrollable>\n } @else {\n <teta-scrollable class=\"column column_auto\" [contentClass]=\"['column', 'column_auto']\">\n <div class=\"list\">\n @for (option of visibleOptions; track option) {\n <div\n [class]=\"'list-item list-item_interactive justify-content-between select_' + viewType\"\n [class.list-item_active]=\"itemSelected(option)\"\n (click)=\"clickOption(option, $event)\"\n >\n <span [tetaHighlight]=\"searchText\">\n <ng-container\n *ngTemplateOutlet=\"\n optionDirective ? optionDirective.template : optionDefault;\n context: { $implicit: option, option: option }\n \"\n >\n </ng-container>\n </span>\n @if (itemSelected(option) && multiple) {\n <teta-icon [name]=\"'tick'\" [palette]=\"'text'\"></teta-icon>\n }\n </div>\n }\n </div>\n </teta-scrollable>\n }\n } @else {\n <p class=\"padding-h-3 text-overflow-ellipsis overflow-hidden select-not-found-option\">\n {{ notFoundText || loc.notFound }}\n </p>\n }\n @if (multiple && value?.length) {\n <div class=\"row row_auto select-chip-field flex-wrap\">\n @for (item of value; track item) {\n <div class=\"tag\">\n <p>{{ getText(item) }}</p>\n <teta-icon\n class=\"cursor-pointer\"\n [palette]=\"'text'\"\n [name]=\"'closeCircle'\"\n (click)=\"removeItemClick(item, $event)\"\n ></teta-icon>\n </div>\n }\n </div>\n }\n </div>\n }\n </teta-dropdown>\n <ng-template #notFound>\n <p class=\"padding-h-3 text-overflow-ellipsis overflow-hidden select-not-found-option\">\n {{ notFoundText || loc.notFound }}\n </p>\n </ng-template>\n <ng-template #optionDefault let-option>\n {{ getText(option) }}\n </ng-template>\n <ng-template #valueDefault let-value>\n @if (multiple) {\n <div class=\"row_auto overflow-hidden text-overflow-ellipsis\">\n {{ loc.selected + ' ' + value?.length }}\n </div>\n }\n @if (!multiple) {\n <span class=\"row row_auto overflow-hidden text-overflow-ellipsis\">{{ getText(value) }}</span>\n }\n </ng-template>\n}\n","import { Directive, Input } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n selector: '[tetaDisableControl]',\n standalone: true,\n})\nexport class DisableControlDirective {\n @Input() set tetaDisableControl(val: boolean) {\n if (this.ngControl.control) {\n if (val) {\n this.ngControl.control.disable({\n emitEvent: false,\n });\n } else {\n this.ngControl.control.enable({\n emitEvent: false,\n });\n }\n }\n }\n\n constructor(private ngControl: NgControl) {}\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n OnChanges,\n OnDestroy,\n output,\n} from '@angular/core';\nimport { ControlContainer, FormGroup, FormsModule, NgForm, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { Subscription } from 'rxjs';\nimport { takeWhile } from 'rxjs/operators';\n\nimport { IDictionary } from '../../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../../common/contract/i-id-name';\nimport { Align } from '../../../../common/enum/align.enum';\nimport { boolOrFuncCallback } from '../../../../util/bool-or-func';\nimport { FormsUtil } from '../../../../util/forms-util';\nimport { FilterType } from '../../../filter/enum/filter-type.enum';\nimport { TableColumn } from '../../../table/contract/table-column';\nimport { PropertyGridItemDescriptionDirective } from '../property-grid-item-description.directive';\nimport { TextFieldComponent } from '../../../input/text-field/text-field.component';\nimport { ToggleComponent } from '../../../toggle/toggle/toggle.component';\nimport { DatePickerComponent } from '../../../date-picker/date-picker/date-picker.component';\nimport { SelectComponent } from '../../../select/select/select.component';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { InputComponent } from '../../../input/input/input.component';\nimport { DisableControlDirective } from '../../../../directive/disable-control/disable-control.directive';\n\n@Component({\n selector: 'teta-property-grid-item',\n templateUrl: './property-grid-item.component.html',\n styleUrls: ['./property-grid-item.component.scss'],\n viewProviders: [FormsUtil.formProvider],\n imports: [\n InputComponent,\n FormsModule,\n ReactiveFormsModule,\n NgTemplateOutlet,\n SelectComponent,\n DatePickerComponent,\n ToggleComponent,\n TextFieldComponent,\n DisableControlDirective,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PropertyGridItemComponent<T> implements OnDestroy, OnChanges {\n private transloco = inject(TranslocoService);\n private _formGroup = inject(ControlContainer);\n\n column = input<TableColumn>();\n hideNonEditable = input<boolean>();\n dict = input<IDictionary<IIdName<any>[]>>();\n decimalPart = input<number>();\n item = input<T>();\n itemTemplates = input<readonly PropertyGridItemDescriptionDirective[]>();\n template = computed(() => {\n return this.itemTemplates().find((item) => item.name === this.column().name);\n });\n\n get formGroup(): FormGroup {\n if (this._formGroup instanceof FormGroup) {\n return this._formGroup;\n }\n if (this._formGroup instanceof NgForm) {\n return this._formGroup.form;\n }\n return null;\n }\n\n editable = computed(() => {\n return boolOrFuncCallback(this.column().editable)({\n column: this.column(),\n row: this.formGroup?.getRawValue(),\n });\n });\n\n horizontal = input<boolean>();\n controlValueChange = output<IIdName<any>>();\n align = Align;\n filterTypeEnum = FilterType;\n\n private _formSub: Subscription;\n\n caption = computed(() => {\n if (this.column().filterType === FilterType.boolean) {\n return '';\n }\n return `${this.column().caption}${this.column().unit ? `, ${this.column().unit}` : ''}`;\n });\n\n hint = computed(() => {\n if (this.column().filterType === FilterType.boolean) {\n return '';\n }\n return `${this.column().hint || this.column().caption}${this.column().unit ? `, ${this.column().unit}` : ''}`;\n })\n\n private _alive = true;\n\n getDict() {\n const dict = this.dict() ? this.dict()[this.column().name] : [];\n if (this.column().parentName?.length > 0) {\n return dict?.filter(\n (dictItem: IIdName<any>) => dictItem.parentId === this.formGroup?.getRawValue()[this.column().parentName],\n );\n }\n return dict;\n }\n\n controlIsInvalid(controlName: string) {\n return FormsUtil.controlIsInvalid(this.formGroup, controlName);\n }\n\n getError(column: TableColumn) {\n const control = this.formGroup?.get(column.name);\n if (control?.hasError('required')) {\n return this.transloco.translate('errors.field_is_required');\n }\n if (control?.hasError('min')) {\n return this.transloco.translate('errors.min_value', {\n value: column.minValue,\n });\n }\n if (control?.hasError('max')) {\n return this.transloco.translate('errors.max_value', {\n value: column.maxValue,\n });\n }\n if (control?.hasError('maxlength')) {\n return this.transloco.translate('errors.max_length', {\n value: column.maxLength,\n });\n }\n return null;\n }\n\n ngOnDestroy() {\n this._alive = false;\n this._formSub?.unsubscribe();\n }\n\n ngOnChanges() {\n if (this.column() && this.item()) {\n if (!this.formGroup.get(this.column().name)) {\n this.formGroup.setControl(this.column().name, FormsUtil.initControlFromColumn(this.column(), this.item()));\n }\n this._formSub?.unsubscribe();\n this._formSub = this.formGroup?.controls[this.column().name]?.valueChanges\n .pipe(takeWhile(() => this._alive))\n .subscribe((_) => {\n this.controlValueChange.emit({\n id: _,\n name: this.column().name,\n });\n });\n }\n }\n}\n","@if (editable() || !hideNonEditable()) {\n <teta-input\n [label]=\"caption()\"\n [hint]=\"hint()\"\n [formGroup]=\"formGroup\"\n [horizontal]=\"horizontal()\"\n [required]=\"column().required\"\n >\n @if (template()) {\n <ng-container\n *ngTemplateOutlet=\"template().template; context: { $implicit: formGroup?.get(column().name) }\"\n ></ng-container>\n } @else {\n @if (formGroup?.get(column().name)) {\n @switch (column().filterType) {\n @case (filterTypeEnum.list) {\n <teta-select\n class=\"row_auto\"\n [tetaDisableControl]=\"!editable()\"\n [searchRef]=\"getDict()?.length > 10 ? 'name' : ''\"\n [allowNull]=\"!column().required\"\n [appendToBody]=\"true\"\n [invalid]=\"controlIsInvalid(column().name)\"\n [formControlName]=\"column().name\"\n [options]=\"getDict()\"\n [valueRef]=\"'id'\"\n [textRef]=\"'name'\"\n [multiple]=\"false\"\n ></teta-select>\n }\n @case (filterTypeEnum.date) {\n <teta-date-picker\n class=\"row_auto\"\n [appendToBody]=\"true\"\n [tetaDisableControl]=\"!editable()\"\n [invalid]=\"controlIsInvalid(column().name)\"\n [formControlName]=\"column().name\"\n ></teta-date-picker>\n }\n @case (filterTypeEnum.boolean) {\n <teta-toggle [tetaDisableControl]=\"!editable()\" [formControlName]=\"column().name\">\n {{ column().caption }}\n </teta-toggle>\n }\n @default {\n <teta-text-field\n class=\"row_auto\"\n [tetaDisableControl]=\"!editable()\"\n [decimalPart]=\"column().filterType === filterTypeEnum.number ? decimalPart() : null\"\n [onlyNumber]=\"column().filterType === filterTypeEnum.number\"\n [placeholder]=\"column().caption\"\n [invalid]=\"controlIsInvalid(column().name)\"\n [formControlName]=\"column().name\"\n ></teta-text-field>\n }\n }\n }\n }\n @if (controlIsInvalid(column().name)) {\n <div ngProjectAs=\"message\" class=\"color-red-50\">\n {{ getError(column()) }}\n </div>\n }\n </teta-input>\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { IDictionary } from '../../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../../common/contract/i-id-name';\nimport { FormsUtil } from '../../../../util/forms-util';\nimport { TableColumn } from '../../../table/contract/table-column';\nimport { PropertyGridItemDescriptionDirective } from '../property-grid-item-description.directive';\nimport { PropertyGridItemComponent } from '../property-grid-item/property-grid-item.component';\nimport { ExpandItemComponent } from '../../../expand-card/expand-item/expand-item.component';\n\n@Component({\n selector: 'teta-property-grid-group',\n templateUrl: './property-grid-group.component.html',\n styleUrls: ['./property-grid-group.component.scss'],\n viewProviders: [FormsUtil.formProvider],\n imports: [ExpandItemComponent, PropertyGridItemComponent],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PropertyGridGroupComponent<T> {\n column = input<TableColumn>();\n hideNonEditable = input<boolean>();\n dict = input<IDictionary<IIdName<any>[]>>();\n item = input<T>();\n horizontal = input<boolean>();\n controlValueChange = output<IIdName<any>>();\n decimalPart = input<number>();\n itemTemplates = input<readonly PropertyGridItemDescriptionDirective[]>();\n}\n","<teta-expand-item>\n <span ngProjectAs=\"head\">\n {{ column().caption }}\n </span>\n <div class=\"form-container\">\n @for (col of column().columns; track col.name) {\n @if (col.columns?.length < 1) {\n @if (column().editable || !hideNonEditable) {\n <teta-property-grid-item\n [id]=\"col.name\"\n [dict]=\"dict()\"\n [column]=\"col\"\n [item]=\"item()\"\n [itemTemplates]=\"itemTemplates()\"\n [decimalPart]=\"decimalPart()\"\n [hideNonEditable]=\"hideNonEditable()\"\n (controlValueChange)=\"controlValueChange.emit($event)\"\n [horizontal]=\"horizontal()\"\n ></teta-property-grid-item>\n }\n } @else {\n <teta-property-grid-group\n [id]=\"col.name\"\n [dict]=\"dict()\"\n [column]=\"col\"\n [item]=\"item()\"\n [itemTemplates]=\"itemTemplates()\"\n [decimalPart]=\"decimalPart()\"\n [hideNonEditable]=\"hideNonEditable()\"\n [horizontal]=\"horizontal()\"\n (controlValueChange)=\"controlValueChange.emit($event)\"\n ></teta-property-grid-group>\n }\n }\n </div>\n</teta-expand-item>\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n effect,\n HostBinding,\n input,\n Optional,\n output,\n} from '@angular/core';\nimport {\n ControlContainer,\n FormGroup,\n FormsModule,\n NgForm,\n ReactiveFormsModule,\n UntypedFormControl,\n} from '@angular/forms';\n\nimport { IDictionary } from '../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { boolOrFuncCallback } from '../../../util/bool-or-func';\nimport { FormsUtil } from '../../../util/forms-util';\nimport { TableColumn } from '../../table/contract/table-column';\nimport { PropertyGridItemDescriptionDirective } from './property-grid-item-description.directive';\nimport { PropertyGridGroupComponent } from './property-grid-group/property-grid-group.component';\nimport { PropertyGridItemComponent } from './property-grid-item/property-grid-item.component';\nimport { ArrayUtil } from '../../../common/util/array-util';\n\n@Component({\n selector: 'teta-property-grid',\n templateUrl: './property-grid.component.html',\n styleUrls: ['./property-grid.component.scss'],\n viewProviders: [FormsUtil.formProvider],\n imports: [PropertyGridItemComponent, FormsModule, ReactiveFormsModule, PropertyGridGroupComponent],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PropertyGridComponent<T> {\n @HostBinding('class.form-container') formClass = true;\n itemTemplates = contentChildren(PropertyGridItemDescriptionDirective);\n hideNonEditable = input<boolean>();\n columns = input<TableColumn[]>();\n dict = input<IDictionary<IIdName<any>[]>>();\n item = input<T>();\n\n horizontal = input<boolean>();\n decimalPart = input<number>();\n\n controlValueChange = output<IIdName<any>>();\n\n get formGroup(): FormGroup {\n if (this._formGroup instanceof FormGroup) {\n return this._formGroup;\n }\n if (this._formGroup instanceof NgForm) {\n return this._formGroup.form;\n }\n return null;\n }\n\n constructor(@Optional() private _formGroup: ControlContainer) {\n effect(() => {\n if (this.item() && this.columns()?.length && this.formGroup) {\n for (const key in this.item()) {\n if (Object.prototype.hasOwnProperty.call(this.item(), key)) {\n if (!this.formGroup.get(key)) {\n const currentColumn = ArrayUtil.findRecursive(this.columns(), (item) => item.name === key, 'columns');\n\n if (currentColumn) {\n this.formGroup.setControl(key, FormsUtil.initControlFromColumn(currentColumn, this.item()), {\n emitEvent: false,\n });\n } else {\n this.formGroup.setControl(key, new UntypedFormControl(this.item()[key]), {\n emitEvent: false,\n });\n }\n } else {\n this.formGroup.patchValue(this.item(), {\n emitEvent: false,\n });\n }\n }\n }\n }\n });\n }\n\n getEditable(column: TableColumn) {\n return boolOrFuncCallback(column.editable)({\n column: column,\n row: this.formGroup?.getRawValue(),\n });\n }\n\n onControlValueChange(event: IIdName<any>) {\n const affected = this.columns().filter((_) => _.parentName === event.name);\n if (affected?.length) {\n affected.forEach((item) => {\n const value = this.formGroup.getRawValue()[item.name];\n if (value) {\n const dictValue = this.getDictValue(value, item.name);\n if (dictValue && dictValue.parentId !== event.id) {\n const newObj = {};\n newObj[item.name] = null;\n this.formGroup.patchValue(newObj);\n }\n }\n });\n }\n this.controlValueChange.emit(event);\n }\n\n private getDictValue(value: any, name: string) {\n return this.dict()[name]?.find((_) => _.id === value);\n }\n}\n","@if (columns()?.length) {\n @for (column of columns(); track column.name) {\n @if (column.columns?.length < 1 && (getEditable(column) || !hideNonEditable())) {\n <teta-property-grid-item\n [dict]=\"dict()\"\n [column]=\"column\"\n [item]=\"item()\"\n [id]=\"column.name\"\n [itemTemplates]=\"itemTemplates()\"\n [decimalPart]=\"decimalPart()\"\n [formGroup]=\"formGroup\"\n [horizontal]=\"horizontal()\"\n (controlValueChange)=\"onControlValueChange($event)\"\n [hideNonEditable]=\"hideNonEditable()\"\n ></teta-property-grid-item>\n }\n @if (column.columns?.length > 0 && (getEditable(column) || !hideNonEditable())) {\n <teta-property-grid-group\n [id]=\"column.name\"\n [dict]=\"dict()\"\n [column]=\"column\"\n [item]=\"item()\"\n [itemTemplates]=\"itemTemplates()\"\n [decimalPart]=\"decimalPart()\"\n [formGroup]=\"formGroup\"\n [horizontal]=\"horizontal()\"\n (controlValueChange)=\"onControlValueChange($event)\"\n [hideNonEditable]=\"hideNonEditable()\"\n ></teta-property-grid-group>\n }\n }\n}\n","export enum SidebarPosition {\n left,\n right,\n bottom,\n top,\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, OnInit, Output } from '@angular/core';\nimport { SidebarPosition } from '../sidebar-position.enum';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'teta-sidebar',\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('sidebar', [\n transition('void => *', [style({ opacity: '0' }), animate(300, style({ opacity: '1' }))]),\n transition('* => void', [animate(300, style({ opacity: '0' }))]),\n ]),\n ],\n imports: [NgClass]\n})\nexport class SidebarComponent implements OnInit {\n @Input() position: SidebarPosition = SidebarPosition.left;\n @Input() backdrop: boolean;\n @Input() open: boolean;\n @Output() openChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Input() className: string | string[];\n\n @HostBinding('style.z-index') zIndex = 10;\n\n sidebarPosition = SidebarPosition;\n\n constructor() {}\n\n setOpen(value: boolean) {\n this.open = value;\n this.openChange.emit(this.open);\n }\n\n ngOnInit(): void {}\n}\n","@if (backdrop && open) {\n <div [@sidebar] (click)=\"setOpen(false)\" class=\"sidebar-backdrop\"></div>\n}\n@if (open) {\n <div\n class=\"sidebar\"\n [@sidebar]\n [ngClass]=\"className\"\n [class.sidebar-top]=\"position === sidebarPosition.top\"\n [class.sidebar-bottom]=\"position === sidebarPosition.bottom\"\n [class.sidebar-left]=\"position === sidebarPosition.left\"\n [class.sidebar-right]=\"position === sidebarPosition.right\"\n >\n <ng-content></ng-content>\n </div>\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SwitchService {\n readonly value: Observable<any>;\n private readonly value$: ReplaySubject<any> = new ReplaySubject<any>(1);\n\n constructor() {\n this.value = this.value$.asObservable();\n }\n\n setValue(value: any) {\n this.value$.next(value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SwitchService } from '../switch.service';\nimport { filter, takeWhile } from 'rxjs/operators';\nimport { viewType } from '../../../common/model/view-type.model';\n\nexport const SWITCH_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SwitchComponent),\n multi: true,\n};\n\n@Component({\n selector: 'teta-switch',\n templateUrl: './switch.component.html',\n styleUrls: ['./switch.component.scss'],\n providers: [SWITCH_CONTROL_VALUE_ACCESSOR, SwitchService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class SwitchComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() viewType: viewType = 'rounded';\n @HostBinding('class.switch') switchClass = true;\n\n @HostBinding('class')\n get class() {\n return `switch_` + this.viewType;\n }\n\n private _alive = true;\n private _value: any;\n\n constructor(\n private svc: SwitchService,\n private cdr: ChangeDetectorRef,\n ) {\n this.svc.value\n .pipe(\n takeWhile((_) => this._alive),\n filter((_) => _ !== this._value),\n )\n .subscribe((_) => {\n this.onChange(_);\n this._value = _;\n });\n }\n\n writeValue(model: any) {\n this._value = model;\n this.svc.setValue(model);\n this.cdr.markForCheck();\n }\n\n onChange(_: any) {}\n\n onTouched() {}\n\n registerOnChange(fn: (_: any) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","<ng-content></ng-content>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { SwitchService } from '../switch.service';\nimport { takeWhile } from 'rxjs/operators';\n\n@Component({\n selector: 'teta-switch-button',\n templateUrl: './switch-button.component.html',\n styleUrls: ['./switch-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class SwitchButtonComponent implements OnInit, OnDestroy {\n @Input() value: any;\n @Input() class: string;\n\n @HostBinding('class')\n private get getClass(): string {\n const result = [this.class, 'switch-button'];\n if (this.svcValue === this.value || (this.svcValue instanceof Array && this.svcValue.indexOf(this.value) >= 0)) {\n result.push('switch-button_active');\n }\n return result.join(' ');\n }\n\n private svcValue: any;\n private _alive = true;\n\n constructor(\n private svc: SwitchService,\n private cdr: ChangeDetectorRef,\n ) {\n this.svc.value.pipe(takeWhile((_) => this._alive)).subscribe((_) => {\n this.svcValue = _;\n this.cdr.markForCheck();\n });\n }\n\n @HostListener('click', ['$event']) click(event: MouseEvent): void {\n this.svc.setValue(this.value);\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","<ng-content></ng-content>\n","export enum EditEvent {\n click,\n focus,\n doubleClick,\n}\n","export enum EditType {\n none,\n cell,\n row,\n}\n","export enum SelectType {\n none,\n checkBox,\n mouse,\n}\n","import { prependZero } from '../pipe/util/number-helper';\n\nexport class DateUtil {\n /**\n * Вычесть n-дней\n */\n\n public static subtractDays(date: Date, days = 0): Date | null {\n if (date && date instanceof Date) {\n const dt = new Date(date.getTime());\n\n dt.setDate(dt.getDate() - days);\n return dt;\n }\n\n return null;\n }\n\n /**\n * Добавить n-дней\n */\n\n public static addDays(date: Date, days = 0): Date | null {\n if (date && date instanceof Date) {\n const dt = new Date(date.getTime());\n\n dt.setDate(dt.getDate() + days);\n return dt;\n }\n\n return null;\n }\n\n /**\n * Получить дату из строки\n */\n public static parseString(dat: string): Date | null {\n if (!dat || dat.length < 1) {\n return null;\n }\n\n const parts = dat.split(' ');\n const dtPart = parts[0].split('.');\n const tPart = parts[1]?.split(':') ?? ['0', '0', '0'];\n const parsedDate = new Date(\n parseInt(dtPart[2], 10),\n parseInt(dtPart[1], 10) - 1,\n parseInt(dtPart[0], 10),\n parseInt(tPart[0], 10),\n parseInt(tPart[1], 10),\n parseInt(tPart[2], 10),\n );\n if (isNaN(parsedDate.getTime())) {\n return null;\n }\n return parsedDate;\n }\n\n /**\n * Привести дату к строке\n */\n public static toString(dat: Date): string {\n if (!dat || !(dat instanceof Date)) {\n return '';\n }\n const month = dat.getMonth() + 1;\n return `${prependZero(dat.getDate(), 2)}.${prependZero(month, 2)}.${dat.getFullYear()} ${prependZero(\n dat.getHours(),\n 2,\n )}:${prependZero(dat.getMinutes(), 2)}:${prependZero(dat.getSeconds(), 2)}`;\n }\n\n /**\n * Подготовка даты к отправке на сервер, чтобы небыло смещения часов\n */\n public static convertUTC2DateLocal(date?: Date): Date | null {\n if (date && date instanceof Date) {\n const timezoneOffsetMs: number =\n new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTimezoneOffset() * 60000;\n return new Date(date.getTime() - timezoneOffsetMs);\n }\n return null;\n }\n\n /**\n * Подготовка даты к отправке на сервер, чтобы небыло смещения часов\n */\n public static convertDateLocal2UTC(date?: Date): Date | null {\n if (date && date instanceof Date) {\n const timezoneOffsetMs: number =\n new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTimezoneOffset() * 60000;\n return date == null ? null : new Date(date.getTime() + timezoneOffsetMs);\n }\n return null;\n }\n\n public static convertDateStringsToDates(input: any): any {\n const regexIso8601 = /^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(\\.\\d+)?(([+-]\\d\\d:\\d\\d)|Z)?$/i;\n if (typeof input === 'string' && regexIso8601.test(input)) {\n return DateUtil.convertStringToLocalDate(input);\n }\n if (typeof input !== 'object' || !input) {\n return input;\n }\n let res: any | any[];\n if (input instanceof Array) {\n res = [];\n } else {\n res = {};\n }\n return DateUtil.fillConvertDateStringsToDates(res, input);\n }\n\n public static convertDates(input: any | any[]): any | any[] {\n if (typeof input !== 'object' || !input) {\n return input;\n }\n if (input instanceof Date) {\n return DateUtil.convertUTC2DateLocal(input);\n }\n let res: any | any[];\n if (input instanceof Array) {\n res = [];\n } else {\n res = {};\n }\n return DateUtil.fillConvertDates(res, input);\n }\n\n public static getMonthDaysCount(date: Date): number {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n }\n\n // Возвращает список месяцев между двумя датами\n public static getRangeOfMonths(start: Date, end: Date): Date[] {\n if (start > end || !start || !end) {\n return null;\n }\n const resDates: Date[] = [];\n let i = 0;\n let dateTmp = new Date(start.getFullYear(), start.getMonth() + i, 1);\n while (end >= dateTmp) {\n resDates.push(dateTmp);\n i++;\n dateTmp = new Date(start.getFullYear(), start.getMonth() + i, 1);\n }\n return resDates;\n }\n\n public static truncateToMonth(date: Date): Date {\n const res = new Date(date.getFullYear(), date.getMonth(), 1, 0, 0, 0);\n return res;\n }\n\n public static truncateToDay(date: Date): Date {\n const res = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n return res;\n }\n\n public static truncateToHour(date: Date): Date {\n const res = new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), 0, 0);\n return res;\n }\n\n public static toISOString(date: number): string {\n return new Date(date - new Date().getTimezoneOffset() * 60000).toISOString().slice(0, -5) + 'Z';\n }\n\n public static isValidDate(date: any): boolean {\n return date instanceof Date && !isNaN(date.getTime());\n }\n\n public static millisecondToHumanFormat(milliSeconds: number, maxValue = 5000, showDays = false): string {\n const negative = milliSeconds < 0;\n if (negative) {\n milliSeconds = -milliSeconds;\n }\n let d;\n if (showDays) {\n d = Math.trunc(milliSeconds / (60000 * 60 * 24));\n milliSeconds = milliSeconds - 60000 * 60 * 24 * d;\n }\n const h = Math.trunc(milliSeconds / (60000 * 60));\n milliSeconds = milliSeconds - 60000 * 60 * h;\n const m = Math.trunc(milliSeconds / 60000);\n milliSeconds = milliSeconds - 60000 * m;\n const s = Math.trunc(milliSeconds / 1000);\n milliSeconds = milliSeconds - 1000 * s;\n const frac = milliSeconds;\n let result = m ? m + ' м ' : ''; // start with minutes\n if (maxValue < 60000 * 60) {\n if (s) {\n result = result + s + ' с '; // add seconds value\n }\n\n if (s === 0 && !m) {\n result = result + '0 c';\n }\n }\n if (maxValue < 5000) {\n result = frac ? result + frac + ' мс ' : result;\n }\n\n if (h) {\n result = h + ' ч ' + result;\n }\n if (d) {\n result = d + 'д ' + result;\n }\n if (negative) {\n result = '-' + result;\n }\n\n return result.trim();\n }\n\n private static fillConvertDates(result: any, input: any): any {\n for (const key in input) {\n if (!input.hasOwnProperty || !input.hasOwnProperty(key)) {\n continue;\n }\n if (input.hasOwnProperty(key)) {\n let value = input[key];\n if (value instanceof Date) {\n if (value !== null && value !== undefined) {\n value = DateUtil.convertUTC2DateLocal(value);\n }\n result[key] = value;\n } else if (typeof value === 'object') {\n result[key] = DateUtil.convertDates(value);\n } else {\n result[key] = value;\n }\n }\n }\n return result;\n }\n\n private static fillConvertDateStringsToDates(result: any, input: any): any {\n const regexIso8601 = /^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(\\.\\d+)?(([+-]\\d\\d:\\d\\d)|Z?)?$/i;\n for (const key in input) {\n if (!input.hasOwnProperty(key)) {\n continue;\n }\n const value = input[key];\n if (typeof value === 'string' && regexIso8601.test(value)) {\n result[key] = DateUtil.convertStringToLocalDate(value);\n } else if (typeof value === 'object') {\n result[key] = DateUtil.convertDateStringsToDates(value);\n } else {\n result[key] = value;\n }\n }\n return result;\n }\n\n private static convertStringToLocalDate(dateString: string): Date | null {\n const milliseconds = Date.parse(dateString);\n if (!isNaN(milliseconds)) {\n const dt = new Date(milliseconds);\n return DateUtil.convertDateLocal2UTC(dt);\n }\n return null;\n }\n}\n","import { TableColumn } from './table-column';\n\nexport class ColumnReorderEvent {\n source: TableColumn;\n target: TableColumn;\n\n constructor(source: TableColumn, target: TableColumn) {\n this.source = source;\n this.target = target;\n }\n}\n","import { Type } from '@angular/core';\nimport { ValidatorFn } from '@angular/forms';\n\nimport { FilterItem, IFilterItemOptions } from '../../filter/contarct/filter-item';\nimport { FilterType } from '../../filter/enum/filter-type.enum';\nimport { ListFilterType } from '../../filter/enum/list-filter-type.enum';\nimport { StringFilterType } from '../../filter/enum/string-filter-type.enum';\nimport { CellComponentBase } from '../base/cell-component-base';\nimport { AggregationType } from '../enum/aggregation-type.enum';\nimport { HeadDropdownTabConfig } from './head-dropdown-tab';\nimport { IColumnRow } from './i-cell-instance';\n\nexport interface ITableColumnOptions extends IFilterItemOptions {\n width?: number;\n flex?: number;\n sortOrder?: number;\n locked?: boolean;\n name?: string;\n parentName?: string;\n caption?: string;\n hint?: string;\n unit?: string;\n unitMeasureParameterId?: number;\n unitId?: number;\n sortable?: boolean;\n sortField?: string;\n filterable?: boolean;\n filterField?: string;\n filterType?: FilterType | null;\n stringFilterType?: StringFilterType;\n listFilterType?: ListFilterType;\n strict?: boolean;\n headCellClass?: string[];\n cellClass?: string[];\n data?: any;\n editable?: boolean | ((coordinates: IColumnRow<any>) => boolean);\n objectType?: boolean;\n cellComponent?: Type<CellComponentBase<any>>;\n headCellComponent?: any;\n headDropdownConfig?: HeadDropdownTabConfig;\n filterComponent?: any;\n columns?: any[];\n aggregate?: AggregationType;\n defaultValue?: any;\n maxValue?: number;\n minValue?: number;\n maxLength?: number;\n required?: boolean;\n validators?: ValidatorFn[];\n}\n\nexport class TableColumn extends FilterItem {\n /**\n * Ширина\n */\n width = 80;\n /**\n * Коэффициент растяжения ячейки\n */\n flex = 1;\n /**\n * Стобец закреплен\n */\n locked: boolean;\n /**\n * Название столбца родителя\n */\n parentName: string;\n /**\n * Единицы измерения\n */\n unit: string;\n unitMeasureParameterId: number;\n unitId: number;\n /**\n * список style классов для шапки таблицы\n */\n headCellClass: string[];\n /**\n * список style классов для ячейки таблицы\n */\n cellClass: string[];\n /**\n * Дополнительные данные, свободное описание, доступны внутри компонета ячейки, можно прокинуть callback например\n */\n data: any;\n /**\n * Колонка доступна для редактирования\n */\n editable: boolean | ((coordinates: IColumnRow<any>) => boolean);\n /**\n * Компонент для рендера ячейки\n */\n cellComponent: any;\n /**\n * Компонент для рендера заголовка столбца ячейки\n */\n headCellComponent: any;\n /**\n * Custom head dropdown for column\n */\n headDropdownConfig: HeadDropdownTabConfig;\n /**\n * Дочерние колонки\n */\n override columns: TableColumn[] = [];\n /**\n * Aggregate type\n */\n aggregate: AggregationType;\n /**\n * Значение по умолчанию при создании записи\n */\n defaultValue: any;\n /**\n * Значение по умолчанию при создании записи\n */\n maxValue: number;\n /**\n * Значение по умолчанию при создании записи\n */\n minValue: number;\n /**\n * Максимальная длина\n */\n maxLength: number;\n /**\n * Поле обязательно для заполнения\n */\n required: boolean;\n /**\n * Функции валидации\n */\n validators: ValidatorFn[];\n /**\n * Инициализация из анонимного объекта\n */\n constructor(options?: ITableColumnOptions) {\n super(options);\n this.width = options?.width ?? 80;\n this.flex = options?.flex ?? 1;\n this.headCellClass = options?.headCellClass ?? [];\n this.cellClass = options?.cellClass ?? [];\n this.locked = options?.locked ?? false;\n this.parentName = options?.parentName;\n this.unit = options?.unit ?? '';\n this.unitMeasureParameterId = options?.unitMeasureParameterId;\n this.unitId = options?.unitId;\n this.data = options?.data;\n this.editable = options?.editable ?? true;\n this.headCellComponent = options?.headCellComponent;\n this.headDropdownConfig = options?.headDropdownConfig;\n this.cellComponent = options?.cellComponent;\n this.aggregate = options?.aggregate;\n this.defaultValue = options?.defaultValue;\n this.maxValue = options?.maxValue;\n this.minValue = options?.minValue;\n this.maxLength = options?.maxLength;\n this.required = options?.required;\n this.columns = options?.columns?.map((x) => new TableColumn(x)) ?? [];\n this.validators = options?.validators;\n }\n}\n","export class TableColumnStore {\n width: number;\n flex: number;\n locked: boolean;\n name: string;\n columns: TableColumnStore[];\n\n constructor(options?: {\n width?: number;\n flex?: number;\n sortOrder?: number;\n locked?: boolean;\n name?: string;\n columns?: any[];\n }) {\n if (options) {\n this.width = options?.width;\n this.flex = options?.flex;\n this.locked = options?.locked;\n this.name = options?.name;\n this.columns = options?.columns?.map((x) => new TableColumnStore(x));\n }\n }\n}\n","export class TableRow<T> {\n valid: boolean;\n data: T;\n\n constructor(options?: { valid?: boolean; data: T }) {\n this.valid = options?.valid;\n this.data = options?.data;\n }\n}\n","import { FilterState } from '../../filter/contarct/filter-state';\nimport { TableColumn } from '../contract/table-column';\nimport { SortParam } from '../../filter/contarct/sort-param';\nimport { FilterType } from '../../filter/enum/filter-type.enum';\nimport { SortEvent } from '../contract/sort-event';\n\nexport class StateUtil {\n static hasSortedColumns(state: FilterState): boolean {\n return state.sortParams && state.sortParams.length > 0;\n }\n\n static hasFilteredColumns(state: FilterState): boolean {\n let hasFilters = false;\n if (state.stringFilters && state.stringFilters.some((filter) => filter.value && filter.value.length)) {\n hasFilters = true;\n }\n if (state.listFilters && state.listFilters.some((filter) => filter.value && filter.value.length)) {\n hasFilters = true;\n }\n if (\n state.numericFilters &&\n state.numericFilters.some(\n (filter) =>\n filter &&\n filter.value &&\n ((filter.value.lessThan !== null && filter.value.lessThan !== undefined) ||\n (filter.value.greaterThan !== null && filter.value.greaterThan !== undefined) ||\n (filter.value.equalsTo !== null && filter.value.equalsTo !== undefined)),\n )\n ) {\n hasFilters = true;\n }\n if (\n state.dateFilters &&\n state.dateFilters.some(\n (filter) =>\n filter &&\n filter.value &&\n ((filter.value.lessThan !== null && filter.value.lessThan !== undefined) ||\n (filter.value.greaterThan !== null && filter.value.greaterThan !== undefined)),\n )\n ) {\n hasFilters = true;\n }\n\n return hasFilters;\n }\n\n static getSortState(state: FilterState, column: TableColumn): SortParam | null {\n if (state?.sortParams && state.sortParams.length) {\n const param = state.sortParams.find((x) => x.field === column.sortField);\n if (param) {\n return param;\n }\n }\n return null;\n }\n\n static isColumnFiltered(state: FilterState, column: TableColumn): boolean {\n if (!column.filterable) {\n return false;\n }\n let filtered = false;\n switch (column.filterType) {\n case FilterType.string:\n if (state?.stringFilters) {\n const filter = state.stringFilters.find((x) => x.field === column.filterField);\n if (filter && filter.value && filter.value.length) {\n filtered = true;\n }\n }\n break;\n case FilterType.list:\n if (state?.listFilters) {\n const filter = state.listFilters.find((x) => x.field === column.filterField);\n if (filter && filter.value && filter.value.length) {\n filtered = true;\n }\n }\n break;\n case FilterType.number:\n if (state?.numericFilters) {\n const filter = state.numericFilters.find((x) => x.field === column.filterField);\n if (\n filter &&\n filter.value &&\n ((filter.value.lessThan !== null && filter.value.lessThan !== undefined) ||\n (filter.value.greaterThan !== null && filter.value.greaterThan !== undefined) ||\n (filter.value.equalsTo !== null && filter.value.equalsTo !== undefined))\n ) {\n filtered = true;\n }\n }\n break;\n case FilterType.date:\n if (state?.dateFilters) {\n const filter = state.dateFilters.find((x) => x.field === column.filterField);\n if (\n filter &&\n filter.value &&\n ((filter.value.lessThan !== null && filter.value.lessThan !== undefined) ||\n (filter.value.greaterThan !== null && filter.value.greaterThan !== undefined))\n ) {\n filtered = true;\n }\n }\n break;\n }\n return filtered;\n }\n\n static sortColumn(sortEvent: SortEvent, state: FilterState): FilterState {\n const column = sortEvent.column;\n const shiftKey = sortEvent.shiftKey;\n const sort = state.sortParams.find((sortParam: SortParam) => sortParam.field === column.sortField);\n if (sort === null || sort === undefined) {\n if (!shiftKey) {\n state.sortParams.length = 0;\n }\n state.sortParams.push(new SortParam({ field: column.sortField, asc: true, order: 0 }));\n } else {\n if (!sort.asc) {\n state.sortParams = StateUtil.clearSortParam(sort, state.sortParams);\n } else {\n sort.asc = !sort.asc;\n if (!shiftKey) {\n state.sortParams = [sort];\n }\n }\n }\n return new FilterState(state);\n }\n\n static sortAsc(sortEvent: SortEvent, state: FilterState): FilterState {\n return StateUtil.sort(sortEvent, state, true);\n }\n\n static sortDesc(sortEvent: SortEvent, state: FilterState): FilterState {\n return StateUtil.sort(sortEvent, state, false);\n }\n\n static sort(sortEvent: SortEvent, state: FilterState, asc: boolean) {\n const column = sortEvent.column;\n const shiftKey = sortEvent.shiftKey;\n const sort = state.sortParams.find((sortParam: SortParam) => sortParam.field === column.sortField);\n if (sort) {\n state.sortParams = StateUtil.clearSortParam(sort, state.sortParams);\n }\n if (!shiftKey) {\n state.sortParams.length = 0;\n }\n state.sortParams.push(new SortParam({ field: column.sortField, asc: asc, order: 0 }));\n return new FilterState(state);\n }\n\n static clearSortParam(sort: SortParam, sortParams: SortParam[]) {\n const index = sortParams.indexOf(sort);\n sortParams.splice(index, 1);\n return sortParams;\n }\n\n static clearSort(column: TableColumn, state: FilterState): FilterState {\n state.sortParams = state.sortParams.filter((_) => _.field !== column.sortField);\n return new FilterState(state);\n }\n\n static clearAllSort(state: FilterState): FilterState {\n state.sortParams = [];\n return new FilterState(state);\n }\n}\n","import { Injectable } from '@angular/core';\nimport objectHash from 'object-hash';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\n\nimport { IDictionary } from '../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { ArrayUtil } from '../../../common/util/array-util';\nimport { boolOrFuncCallback } from '../../../util/bool-or-func';\nimport { DateUtil } from '../../../util/date-util';\nimport { DateFilter } from '../../filter/contarct/date-filter';\nimport { DateFilterValue } from '../../filter/contarct/date-filter-value';\nimport { FilterState } from '../../filter/contarct/filter-state';\nimport { ListFilter } from '../../filter/contarct/list-filter';\nimport { NumericFilter } from '../../filter/contarct/numeric-filter';\nimport { NumericFilterValue } from '../../filter/contarct/numeric-filter-value';\nimport { StringFilter } from '../../filter/contarct/string-filter';\nimport { FilterType } from '../../filter/enum/filter-type.enum';\nimport { ListFilterType } from '../../filter/enum/list-filter-type.enum';\nimport { ColumnReorderEvent } from '../contract/column-reorder-event';\nimport { ColumnResizeEvent } from '../contract/column-resize-event';\nimport { ICellCoordinates } from '../contract/i-cell-coordinates';\nimport { ICellEvent } from '../contract/i-cell-event';\nimport { ICellInstance, ICellInstanceValue, IColumnRow } from '../contract/i-cell-instance';\nimport { ICellValue } from '../contract/i-cell-value';\nimport { SortEvent } from '../contract/sort-event';\nimport { TableColumn } from '../contract/table-column';\nimport { TableColumnStore } from '../contract/table-column-store';\nimport { TableRow } from '../contract/table-row';\nimport { EditEvent } from '../enum/edit-event.enum';\nimport { EditType } from '../enum/edit-type.enum';\nimport { SelectType } from '../enum/select-type.enum';\nimport { StateUtil } from '../util/state-util';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TableService<T> {\n columns: Observable<TableColumn[]>;\n displayData: Observable<TableRow<T>[]>;\n dict: Observable<IDictionary<IIdName<any>[]>>;\n filterOptions: Observable<IDictionary<IIdName<any>[]>>;\n state: Observable<FilterState>;\n selectType: SelectType = SelectType.mouse;\n editRowStart: Observable<ICellEvent | null>;\n editRowStop: Observable<ICellCoordinates | null>;\n editCellStart: Observable<ICellEvent | null>;\n editCellStop: Observable<ICellCoordinates | null>;\n valueChanged: Observable<ICellCoordinates | null>;\n valueSet: Observable<ICellValue>;\n stateChanged: Observable<FilterState>;\n filterClear: Observable<TableColumn>;\n selectedRows: Observable<T[]>;\n activeRow: Observable<T | null>;\n hiddenColumns: Observable<string[]>;\n scrollIndex: Observable<number>;\n\n editType: EditType = EditType.cell;\n editEvent: EditEvent = EditEvent.doubleClick;\n rowEditable?: boolean | ((row: T) => boolean);\n trackRow: (index: number, row: T) => any = (index: number, row: T) => {\n const rowId = (row as any)['id'];\n if (rowId) {\n return rowId;\n }\n return index;\n };\n\n get dragSource() {\n return this._dragSource;\n }\n\n private initialColumnsHash = '';\n private initialColumns: TableColumn[] = [];\n private displayColumns: TableColumn[] = [];\n private _columns: BehaviorSubject<TableColumn[]> = new BehaviorSubject<TableColumn[]>([]);\n private _hiddenColumns = new BehaviorSubject<string[]>([]);\n private _displayData: BehaviorSubject<TableRow<T>[]> = new BehaviorSubject<TableRow<T>[]>([]);\n private _dict: BehaviorSubject<IDictionary<IIdName<any>[]>> = new BehaviorSubject<IDictionary<IIdName<any>[]>>({});\n private _filterOptions: BehaviorSubject<IDictionary<IIdName<any>[]>> = new BehaviorSubject<\n IDictionary<IIdName<any>[]>\n >({});\n private _state: BehaviorSubject<FilterState> = new BehaviorSubject<FilterState>(new FilterState());\n private _cookieName?: string;\n private _hiddenCookieName?: string;\n private _columnsCookieName?: string;\n private _editRowStart = new Subject<ICellEvent | null>();\n private _editRowStop = new Subject<ICellCoordinates | null>();\n private _editCellStart = new Subject<ICellEvent | null>();\n private _editCellStop = new Subject<ICellCoordinates | null>();\n private _valueChanged = new Subject<ICellCoordinates | null>();\n private _valueSet = new Subject<ICellValue>();\n private _stateChanged = new Subject<FilterState>();\n private _filterClear = new Subject<TableColumn>();\n private _dragSource?: TableColumn;\n private _selectedRows = new BehaviorSubject<T[]>([]);\n private _activeRow = new BehaviorSubject<T | null>(null);\n private _scrollIndex = new Subject<number | null>();\n\n private _currentEditCell?: ICellCoordinates;\n\n get currentEditCell() {\n return this._currentEditCell;\n }\n\n constructor() {\n this.columns = this._columns.asObservable();\n this.displayData = this._displayData.asObservable();\n this.dict = this._dict.asObservable();\n this.filterOptions = this._filterOptions.asObservable();\n this.state = this._state.asObservable();\n this.editRowStart = this._editRowStart.asObservable();\n this.editRowStop = this._editRowStop.asObservable();\n this.editCellStart = this._editCellStart.asObservable();\n this.editCellStop = this._editCellStop.asObservable();\n this.valueChanged = this._valueChanged.asObservable();\n this.valueSet = this._valueSet.asObservable();\n this.stateChanged = this._stateChanged.asObservable();\n this.filterClear = this._filterClear.asObservable();\n this.selectedRows = this._selectedRows.asObservable();\n this.activeRow = this._activeRow.asObservable();\n this.hiddenColumns = this._hiddenColumns.asObservable();\n this.scrollIndex = this._scrollIndex.asObservable();\n }\n\n setData(data: T[]): void {\n this._displayData.next(\n data?.map(\n (item) =>\n new TableRow<T>({\n data: item,\n }),\n ) ?? [],\n );\n }\n\n setDict(dict: IDictionary<IIdName<any>[]>): void {\n this._dict.next(dict);\n }\n\n setFilterOptions(filterOptions: IDictionary<IIdName<any>[]>): void {\n this._filterOptions.next(filterOptions);\n }\n\n setColumns(columns: TableColumn[]): void {\n this.initialColumns = columns ? columns.map((_) => new TableColumn(_)) : [];\n const excludeKeys = ['editable', 'cellComponent', 'headCellComponent', 'headDropdownConfig'];\n this.initialColumnsHash = objectHash(this.initialColumns, {\n algorithm: 'sha1',\n ignoreUnknown: true,\n excludeKeys: (key: string) => {\n return excludeKeys.indexOf(key) >= 0;\n },\n });\n const restored = this.restoreColumns();\n\n if (restored) {\n this.setDisplayColumns(restored);\n } else {\n this.setDisplayColumns(this.initialColumns);\n }\n }\n\n restoreDefaultColumns() {\n this.setDisplayColumns(this.initialColumns);\n this.clearColumnsState();\n }\n\n updateColumns(columns: TableColumn[]): void {\n this.setDisplayColumns(columns);\n this.saveColumnsState();\n }\n\n saveColumnsState() {\n if (this._columnsCookieName) {\n localStorage.setItem(\n this._columnsCookieName,\n JSON.stringify({\n hash: this.initialColumnsHash,\n columns: this.displayColumns.map((_) => new TableColumnStore(_)),\n }),\n );\n }\n }\n\n clearColumnsState() {\n if (this._columnsCookieName) {\n localStorage.removeItem(this._columnsCookieName);\n }\n }\n\n setDisplayColumns(columns: TableColumn[]): void {\n this.displayColumns = columns ? columns.map((_) => new TableColumn(_)) : [];\n this._columns.next(this.displayColumns);\n }\n\n restoreColumns() {\n if (this._columnsCookieName) {\n const savedColumns = JSON.parse(localStorage.getItem(this._columnsCookieName));\n if (savedColumns && savedColumns.hash === this.initialColumnsHash) {\n return this.restoreColumnsState(savedColumns.columns);\n }\n }\n return null;\n }\n\n restoreColumnsState(columns: TableColumnStore[]) {\n return columns.map((column: TableColumnStore) => {\n const found = ArrayUtil.findRecursive(this.initialColumns, (item) => item.name === column.name, 'columns');\n const resultColumn = new TableColumn(found);\n resultColumn.width = column.width;\n resultColumn.flex = column.flex;\n resultColumn.locked = column.locked;\n if (column.columns?.length > 0) {\n resultColumn.columns = this.restoreColumnsState(column.columns);\n }\n return resultColumn;\n });\n }\n\n setState(state: FilterState): void {\n if (this._cookieName) {\n state.save(this._cookieName);\n }\n this._state.next(state);\n }\n\n setCookieName(name: string): void {\n this._cookieName = name;\n this._hiddenCookieName = `${this._cookieName}_hidden_columns`;\n this._columnsCookieName = `${this._cookieName}_columns`;\n }\n\n restoreState(): void {\n let state: FilterState;\n if (this._cookieName && this._cookieName?.length > 0 && FilterState.restore(this._cookieName)) {\n let newState = Object.assign(this._state.value, FilterState.restore(this._cookieName));\n newState = DateUtil.convertDateStringsToDates(newState);\n state = new FilterState(newState);\n } else {\n state = new FilterState();\n }\n this.setState(state);\n }\n\n saveHiddenColumns(hiddenColumns: string[]): void {\n if (this._hiddenCookieName) {\n localStorage.setItem(this._hiddenCookieName, JSON.stringify(hiddenColumns));\n }\n }\n\n restoreHiddenColumns(): void {\n const hiddenColumns = localStorage.getItem(this._hiddenCookieName ?? '') || '[]';\n this._hiddenColumns.next(JSON.parse(hiddenColumns));\n }\n\n sortAsc(sortEvent: SortEvent): void {\n if (sortEvent.column.sortable) {\n this.setState(StateUtil.sortAsc(sortEvent, this._state.value));\n }\n }\n\n sortDesc(sortEvent: SortEvent): void {\n if (sortEvent.column.sortable) {\n this.setState(StateUtil.sortDesc(sortEvent, this._state.value));\n }\n }\n\n clearSort(column: TableColumn): void {\n this.setState(StateUtil.clearSort(column, this._state.value));\n }\n\n clearAllSort(): void {\n this.setState(StateUtil.clearAllSort(this._state.value));\n }\n\n clearFilter(column: TableColumn) {\n const state = this._state.value;\n if (column !== null && column !== undefined && column.filterable) {\n switch (column.filterType) {\n case FilterType.date:\n state.addDateFilter(\n new DateFilter({\n name: column.name,\n field: column.filterField,\n value: new DateFilterValue(),\n }),\n );\n break;\n case FilterType.string:\n state.addStringFilter(\n new StringFilter({\n name: column.name,\n field: column.filterField,\n value: '',\n }),\n );\n break;\n case FilterType.number:\n state.addNumericFilter(\n new NumericFilter({\n name: column.name,\n field: column.filterField,\n value: new NumericFilterValue(),\n }),\n );\n break;\n case FilterType.list:\n state.addListFilter(\n new ListFilter({\n name: column.name,\n field: column.filterField,\n value: [],\n type: ListFilterType.None,\n }),\n );\n break;\n }\n this.setState(new FilterState(state));\n }\n }\n\n clearAllFilters() {\n const state = this._state.value;\n state.stringFilters = [];\n state.listFilters = [];\n state.numericFilters = [];\n state.dateFilters = [];\n this.setState(new FilterState(state));\n }\n\n pinColumn(column: TableColumn): void {\n this.displayColumns.forEach((col: TableColumn) => {\n if (col.name === column.name) {\n col.locked = !col.locked;\n }\n });\n this.updateColumns(this.displayColumns);\n }\n\n dragStart(column: TableColumn): void {\n this._dragSource = column;\n }\n\n lockPreviousColumns(column: TableColumn, element: HTMLElement) {\n const flat = ArrayUtil.flatten(this.displayColumns, 'columns', true).sort(\n (a, b) => Number(b.locked) - Number(a.locked),\n );\n const index = flat.indexOf(column);\n const previous = flat.slice(0, index).filter((_) => _.flex > 0);\n if (previous?.length > 0) {\n const tableElement = this.getTableElement(element);\n previous.forEach((item: TableColumn) => {\n const itemCol = tableElement?.querySelector(`teta-head-cell[data-column=\"${item.name}\"]`) as HTMLElement;\n if (itemCol) {\n item.flex = 0;\n item.width = itemCol.clientWidth;\n }\n });\n }\n }\n\n resizeColumn(event: ColumnResizeEvent) {\n if (event.column !== null && event.column !== undefined) {\n event.column.width = event.newWidth < 50 ? 50 : event.newWidth;\n event.column.flex = 0;\n }\n this._columns.next(this.displayColumns);\n this.saveColumnsState();\n }\n\n autosizeColumn(column: TableColumn, target: HTMLElement) {\n const tableElement = this.getTableElement(target);\n this.setColumnAutoWidth(column, tableElement as HTMLElement);\n this._columns.next(this.displayColumns);\n this.saveColumnsState();\n }\n\n autosizeAllColumns(target: HTMLElement) {\n const tableElement = this.getTableElement(target);\n const flat = ArrayUtil.flatten(this.displayColumns, 'columns', true);\n flat.forEach((col) => this.setColumnAutoWidth(col, tableElement as HTMLElement));\n this._columns.next(this.displayColumns);\n this.saveColumnsState();\n }\n\n reorderColumn(column: TableColumn, insertBefore: boolean): void {\n if (!this._dragSource) {\n return;\n }\n const event = new ColumnReorderEvent(this._dragSource, column);\n if (event.source !== event.target) {\n const sourceParent = this.findParent(event.source, this.displayColumns);\n const targetParent = this.findParent(event.target, this.displayColumns);\n\n if (sourceParent && targetParent) {\n const sourceIndex = sourceParent.indexOf(event.source);\n sourceParent.splice(sourceIndex, 1);\n let targetIndex = targetParent.indexOf(event.target);\n if (!insertBefore) {\n targetIndex = targetIndex + 1;\n }\n targetParent.splice(targetIndex, 0, event.source);\n event.source.locked = event.target.locked;\n\n this.updateColumns(this.displayColumns);\n }\n }\n }\n\n getColumnParent(column: TableColumn) {\n return this.findParentColumn(column, this.displayColumns);\n }\n\n startEditRow(cellEvent: ICellEvent): void {\n if (this._currentEditCell?.row !== cellEvent?.row) {\n if (this._currentEditCell != null) {\n this._editRowStop.next(this._currentEditCell);\n }\n if (cellEvent === null) {\n this._editRowStart.next(cellEvent);\n this._currentEditCell = cellEvent;\n } else {\n if (boolOrFuncCallback<T>(this.rowEditable)(this.getRowByIndex(cellEvent?.row)?.data)) {\n this._editRowStart.next(cellEvent);\n this._currentEditCell = cellEvent;\n }\n }\n }\n }\n\n startEditCell(cellEvent: ICellEvent): void {\n if (this._currentEditCell?.column !== cellEvent?.column || this._currentEditCell?.row !== cellEvent?.row) {\n if (this._currentEditCell != null) {\n this._editCellStop.next(this._currentEditCell);\n }\n const column = this.getColumnByName(cellEvent?.column);\n if (\n boolOrFuncCallback<T>(this.rowEditable)(this.getRowByIndex(cellEvent?.row)?.data) &&\n boolOrFuncCallback<IColumnRow<T>>(column?.editable)({\n row: this.getRowByIndex(cellEvent?.row)?.data,\n column: column,\n })\n ) {\n this._editCellStart.next(cellEvent);\n this._currentEditCell = cellEvent;\n const key = (cellEvent?.event as KeyboardEvent)?.key;\n if (key && (key.length === 1 || (key === 'Delete' && !column.required))) {\n this.clearValue(cellEvent);\n }\n }\n }\n }\n\n setActiveRow(row: T): void {\n this._activeRow.next(row);\n }\n\n selectRows(rows: T[]): void {\n this._selectedRows.next(rows);\n }\n\n selectOrDeselectRow(row: T): void {\n if (this._selectedRows.value.indexOf(row) >= 0) {\n this._selectedRows.next(this._selectedRows.value.filter((_) => _ !== row));\n } else {\n this._selectedRows.next([...this._selectedRows.value, row]);\n }\n }\n\n selectRange(row: T): void {\n const index = this._displayData.value.findIndex((_) => _.data === row);\n let minIndex = this._selectedRows.value.reduce((prev, curr) => {\n const newIndex = this._displayData.value.findIndex((_) => _.data === curr);\n if (newIndex < prev) {\n return newIndex;\n }\n return prev;\n }, this._displayData.value.length);\n let maxIndex = this._selectedRows.value.reduce((prev, curr) => {\n const newIndex = this._displayData.value.findIndex((_) => _.data === curr);\n if (newIndex > prev) {\n return newIndex;\n }\n return prev;\n }, 0);\n if (index > maxIndex) {\n maxIndex = index;\n }\n if (index < minIndex) {\n minIndex = index;\n }\n if (minIndex < index && index < maxIndex) {\n maxIndex = index;\n }\n this._selectedRows.next([...this._displayData.value.slice(minIndex, maxIndex + 1).map((_) => _.data)]);\n }\n\n selectRow(row: T): void {\n if (this.selectType === SelectType.none) {\n return;\n }\n this._selectedRows.next([...this._selectedRows.value, row]);\n }\n\n deselectRow(row: T): void {\n if (this.selectType === SelectType.none) {\n return;\n }\n this._selectedRows.next(this._selectedRows.value.filter((_) => _ !== row));\n }\n\n selectAll() {\n this._selectedRows.next(this._displayData.value.map((_) => _.data));\n }\n\n deselectAll() {\n this._selectedRows.next([]);\n }\n\n allRowsSelected(): boolean | null {\n if (\n this._displayData.value?.length &&\n this._selectedRows.value?.length &&\n this._displayData.value.every((_) => this._selectedRows.value.findIndex((selected) => selected === _.data) >= 0)\n ) {\n return true;\n } else if (this._selectedRows.value == null || this._selectedRows.value.length === 0) {\n return false;\n }\n return null;\n }\n\n setHiddenColumns(value: string[]) {\n this.saveHiddenColumns(value);\n this._hiddenColumns.next(value);\n }\n\n columnIsHidden(column: TableColumn) {\n return this._hiddenColumns.value.indexOf(column.name) >= 0;\n }\n\n changeValue(coordinates: ICellCoordinates): void {\n this._valueChanged.next(coordinates);\n }\n\n setValue(cellValue: ICellValue): void;\n setValue(cellValue: ICellInstanceValue<T>): void;\n setValue(cellValue: ICellValue | ICellInstanceValue<T>): void {\n let value: ICellValue;\n if (typeof cellValue.row === 'object' && typeof cellValue.column === 'object') {\n value = {\n row: this.getRowIndex(cellValue.row.data),\n column: cellValue.column.name,\n value: cellValue.value,\n };\n } else {\n value = cellValue as ICellValue;\n }\n this._valueSet.next(value);\n }\n\n getRowByIndex(rowIndex?: number): TableRow<T> | undefined {\n if (rowIndex !== null && rowIndex !== undefined) {\n return this._displayData?.value[rowIndex];\n }\n return undefined;\n }\n\n getRowIndex(row: T) {\n return this._displayData.value.findIndex((_) => _.data === row);\n }\n\n getEventCell(event: Event): HTMLElement | null {\n return event.composedPath().find((target: any) => {\n return target.tagName?.toLowerCase() === 'teta-cell';\n }) as HTMLElement;\n }\n\n getEventRow(event: Event): HTMLElement | null {\n return event.composedPath().find((target: any) => {\n return target?.getAttribute && target?.getAttribute('data-row');\n }) as HTMLElement;\n }\n\n getNextEditableCell(coords: ICellCoordinates): ICellCoordinates | null {\n const nextCell = this.getNextCell(coords);\n if (!nextCell) {\n return null;\n }\n const column = this.getColumnByName(nextCell?.column);\n if (\n boolOrFuncCallback<ICellInstance<T>>(column.editable)({\n row: this.getRowByIndex(nextCell.row),\n column,\n })\n ) {\n return nextCell;\n }\n return this.getNextEditableCell(nextCell);\n }\n\n getPreviousEditableCell(coords: ICellCoordinates): ICellCoordinates | null {\n const prevCell = this.getPreviousCell(coords);\n if (!prevCell) {\n return null;\n }\n const column = this.getColumnByName(prevCell?.column);\n if (\n boolOrFuncCallback<ICellInstance<T>>(column.editable)({\n row: this.getRowByIndex(prevCell.row),\n column,\n })\n ) {\n return prevCell;\n }\n return this.getPreviousEditableCell(prevCell);\n }\n\n getNextCell(coords: ICellCoordinates): ICellCoordinates | null {\n const columns = this.getFlatColumns();\n let colIndex = columns.findIndex((col: TableColumn) => col.name === coords?.column);\n let rowIndex = coords?.row;\n if (colIndex >= 0 && rowIndex >= 0) {\n if (colIndex === columns.length - 1) {\n colIndex = 0;\n rowIndex = rowIndex + 1;\n } else {\n colIndex = colIndex + 1;\n }\n return {\n column: columns[colIndex]?.name,\n row: rowIndex,\n };\n }\n return null;\n }\n\n getPreviousCell(coords: ICellCoordinates): ICellCoordinates | null {\n const columns = this.getFlatColumns();\n let colIndex = columns.findIndex((col: TableColumn) => col.name === coords?.column);\n let rowIndex = coords?.row;\n if (colIndex >= 0 && rowIndex >= 0) {\n if (colIndex === 0) {\n colIndex = columns.length - 1;\n rowIndex = rowIndex - 1;\n } else {\n colIndex = colIndex - 1;\n }\n return {\n column: columns[colIndex]?.name,\n row: rowIndex,\n };\n }\n return null;\n }\n\n getNextRowCell(coords: ICellCoordinates): ICellCoordinates | null {\n const columns = this.getFlatColumns();\n const colIndex = columns.findIndex((col: TableColumn) => col.name === coords?.column);\n const rowIndex = coords?.row;\n if (colIndex >= 0 && rowIndex >= 0 && rowIndex < this._displayData.value.length - 1) {\n return {\n column: columns[colIndex]?.name,\n row: rowIndex + 1,\n };\n }\n return null;\n }\n\n getPreviousRowCell(coords: ICellCoordinates) {\n const columns = this.getFlatColumns();\n const colIndex = columns.findIndex((col: TableColumn) => col.name === coords?.column);\n const rowIndex = coords?.row;\n if (colIndex >= 0 && rowIndex > 1) {\n return {\n column: columns[colIndex]?.name,\n row: rowIndex - 1,\n };\n }\n return null;\n }\n\n getColumnByName(columnName: string) {\n return ArrayUtil.findRecursive(this.displayColumns, (iterableNode) => columnName === iterableNode.name, 'columns');\n }\n\n scrollToIndex(index: number) {\n this._scrollIndex.next(null);\n this._scrollIndex.next(index);\n }\n\n getVisibleColumns() {\n const visible = ArrayUtil.flatten(this._columns.value, 'columns', true).filter(\n (_) => this._hiddenColumns.value.indexOf(_.name) < 0,\n );\n return visible.sort((a, b) => Number(b.locked) - Number(a.locked));\n }\n\n getCellInstance(coords: ICellCoordinates): ICellInstance<T> | null {\n return coords\n ? {\n row: this.getRowByIndex(coords.row),\n column: this.getColumnByName(coords.column),\n }\n : null;\n }\n\n private getFlatColumns() {\n return ArrayUtil.flatten(this.displayColumns, 'columns', true).sort((a, b) => Number(b.locked) - Number(a.locked));\n }\n\n private findParent(column: TableColumn, columns: TableColumn[]): TableColumn[] | null {\n const found = columns.find((x) => x.name === column.name);\n if (found !== null && found !== undefined) {\n return columns;\n }\n for (let i = 0, l = columns.length; i < l; i++) {\n const col = columns[i];\n if (col.columns && col.columns.length) {\n const result = this.findParent(column, col.columns);\n if (result !== null && result !== undefined) {\n return result;\n }\n }\n }\n return null;\n }\n\n private findParentColumn(column: TableColumn, columns: TableColumn[]): TableColumn | null {\n const found = columns.find((x) => x.columns.indexOf(column) >= 0);\n if (found !== null && found !== undefined) {\n return found;\n }\n for (let i = 0, l = columns.length; i < l; i++) {\n const col = columns[i];\n if (col.columns && col.columns.length) {\n const result = this.findParentColumn(column, col.columns);\n if (result !== null && result !== undefined) {\n return result;\n }\n }\n }\n return null;\n }\n\n getTableElement(element: HTMLElement) {\n return element.closest('teta-table');\n }\n\n private setColumnAutoWidth(column: TableColumn, table: HTMLElement) {\n const cells = table.querySelectorAll(`teta-cell[data-column=\"${column.name}\"] .cell-text`);\n let maxWidth = 0;\n cells.forEach((cell) => {\n if (cell.scrollWidth > maxWidth) {\n maxWidth = cell.scrollWidth;\n }\n });\n const aggCells = table.querySelectorAll(`.aggregate-cell[data-column=\"${column.name}\"] .cell-text`);\n aggCells?.forEach((cell) => {\n if (cell.scrollWidth > maxWidth) {\n maxWidth = cell.scrollWidth;\n }\n });\n column.flex = 0;\n column.width = maxWidth + 20;\n }\n\n private clearValue(event: ICellEvent) {\n this.setValue({\n ...event,\n value: null,\n });\n }\n}\n","export enum AggregationType {\n none,\n sum,\n avg,\n min,\n max,\n}\n","import { ChangeDetectorRef, Component, HostBinding, inject, OnDestroy, OnInit } from '@angular/core';\nimport { ControlContainer, FormControl, FormGroup, NgForm } from '@angular/forms';\nimport { takeWhile } from 'rxjs/operators';\n\nimport { IDictionary } from '../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { boolOrFuncCallback } from '../../../util/bool-or-func';\nimport { FormsUtil } from '../../../util/forms-util';\nimport { ICellCoordinates } from '../contract/i-cell-coordinates';\nimport { ICellValue } from '../contract/i-cell-value';\nimport { TableColumn } from '../contract/table-column';\nimport { TableRow } from '../contract/table-row';\nimport { TableService } from '../service/table.service';\n\n@Component({\n template: '',\n standalone: false,\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport abstract class CellComponentBase<T> implements OnInit, OnDestroy {\n @HostBinding('class.cell-component') private readonly cellClass = true;\n\n @HostBinding('class.cell-invalid') get cellInvalid() {\n const control = this.formGroup?.get(this.column?.name);\n if (control) {\n return control.invalid;\n }\n return false;\n }\n\n private _formGroup = inject(ControlContainer, {\n optional: true,\n });\n\n get control(): FormControl {\n return this.formGroup?.get(this.column?.name) as FormControl;\n }\n\n protected _column: TableColumn;\n\n set column(column: TableColumn) {\n this._column = column;\n this.setupControl();\n }\n\n get column() {\n return this._column;\n }\n\n protected _row: TableRow<T>;\n set row(row: TableRow<T>) {\n this._row = row;\n this.setupControl();\n }\n\n get row() {\n return this._row;\n }\n\n filterOptions: IIdName<any>[] = [];\n dict: IDictionary<IIdName<any>[]> = {};\n\n get formGroup(): FormGroup {\n if (this._formGroup instanceof FormGroup) {\n return this._formGroup;\n }\n if (this._formGroup instanceof NgForm) {\n return this._formGroup.form;\n }\n return null;\n }\n\n protected _edit: boolean;\n\n get edit() {\n return this._edit && this.editable;\n }\n\n get editable() {\n return boolOrFuncCallback(this.column.editable)({\n column: this.column,\n row: this.row.data,\n });\n }\n\n get index() {\n return this.svc.getRowIndex(this.row.data);\n }\n\n protected _alive = true;\n\n protected constructor(\n protected svc: TableService<T>,\n protected cdr: ChangeDetectorRef,\n ) {}\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n\n ngOnInit(): void {\n this.init();\n\n this.formGroup?.controls[this.column.name]?.valueChanges.pipe(takeWhile(() => this._alive)).subscribe((value) => {\n this.formGroup.updateValueAndValidity();\n this.row.valid = this.formGroup?.valid;\n this.row.data[this.column.name] = this.control.value;\n this.svc.changeValue({\n column: this.column.name,\n row: this.index,\n });\n });\n }\n\n private init(): void {\n this.svc.editRowStart.pipe(takeWhile((_) => this._alive)).subscribe((cell: ICellCoordinates) => {\n if (this.index === cell?.row && !this._edit) {\n this.start(cell, 'row');\n }\n if (this.index !== cell?.row && this._edit) {\n this.stop();\n }\n });\n\n this.svc.editCellStart.pipe(takeWhile((_) => this._alive)).subscribe((cell: ICellCoordinates) => {\n if (this.index === cell?.row && this.column.name === cell?.column && !this._edit) {\n this.start(cell, 'cell');\n }\n if ((this.index !== cell?.row || this.column.name !== cell?.column) && this._edit) {\n this.stop();\n }\n });\n\n this.svc.valueSet.pipe(takeWhile((_) => this._alive)).subscribe((cellValue: ICellValue) => {\n if (this.index === cellValue.row && this.column.name === cellValue.column) {\n this.row.data[this.column.name] = cellValue.value;\n this.setupControl();\n\n for (const controlsKey in this.formGroup.controls) {\n this.formGroup.controls[controlsKey].updateValueAndValidity({\n emitEvent: false,\n onlySelf: true,\n });\n }\n\n this.formGroup.updateValueAndValidity();\n this.row.valid = this.formGroup.valid;\n this.cdr.detectChanges();\n this.cdr.markForCheck();\n }\n });\n }\n\n abstract startEdit(initiator: ICellCoordinates, type: 'cell' | 'row'): void;\n\n abstract stopEdit(): void;\n\n private setupControl() {\n if (!this.column) {\n return;\n }\n if (!this.control) {\n this.formGroup.registerControl(this.column.name, FormsUtil.initControlFromColumn(this.column, this.row?.data));\n } else {\n this.control.patchValue(this.row?.data[this.column.name], {\n emitEvent: false,\n });\n }\n if (this.column && this.row) {\n if (this.editable) {\n this.control.enable({ emitEvent: false });\n } else {\n this.control.disable({ emitEvent: false });\n }\n }\n }\n\n private start(initiator: ICellCoordinates, type: 'cell' | 'row') {\n this._edit = true;\n this.cdr.detectChanges();\n this.startEdit(initiator, type);\n }\n\n private stop() {\n this._edit = false;\n this.formGroup.updateValueAndValidity();\n this.row.valid = this.formGroup?.valid;\n this.stopEdit();\n this.cdr.markForCheck();\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnInit, ViewChild } from '@angular/core';\n\nimport { FormsUtil } from '../../../../util/forms-util';\nimport { CellComponentBase } from '../../base/cell-component-base';\nimport { ICellCoordinates } from '../../contract/i-cell-coordinates';\nimport { TableService } from '../../service/table.service';\nimport { NumberPipe } from '../../../../pipe/number-pipe/number.pipe';\nimport { OnlyNumberDirective } from '../../../../directive/only-number/only-number.directive';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'teta-numeric-cell',\n templateUrl: './numeric-cell.component.html',\n styleUrls: ['./numeric-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [FormsUtil.formProvider],\n imports: [FormsModule, OnlyNumberDirective, ReactiveFormsModule, NumberPipe]\n})\nexport class NumericCellComponent<T> extends CellComponentBase<T> implements OnInit {\n @ViewChild('input', { static: false }) input: ElementRef;\n\n constructor(\n protected override svc: TableService<T>,\n protected override cdr: ChangeDetectorRef,\n ) {\n super(svc, cdr);\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n }\n\n startEdit(initiator: ICellCoordinates, type: 'cell' | 'row'): void {\n if (initiator?.column === this.column.name) {\n this.cdr.detectChanges();\n this.input.nativeElement?.focus();\n }\n }\n\n stopEdit(): void {\n this.cdr.markForCheck();\n }\n}\n","<span [style.display]=\"edit ? 'none' : 'block'\" class=\"cell-text\" [class.cell-text_disabled]=\"!editable\">\n {{ control?.value | tetaNumber: 2 }}\n</span>\n@if (edit) {\n <input\n #input\n [tetaOnlyNumber]=\"true\"\n type=\"text\"\n class=\"input row_auto border-radius-0\"\n (keydown.enter)=\"input.blur()\"\n [formControl]=\"control\"\n />\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';\n\nimport { DatePickerComponent } from '../../../date-picker/date-picker/date-picker.component';\nimport { CellComponentBase } from '../../base/cell-component-base';\nimport { ICellCoordinates } from '../../contract/i-cell-coordinates';\nimport { TableService } from '../../service/table.service';\nimport { DatePipe } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'teta-date-cell',\n templateUrl: './date-cell.component.html',\n styleUrls: ['./date-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DatePickerComponent, FormsModule, ReactiveFormsModule, DatePipe]\n})\nexport class DateCellComponent<T> extends CellComponentBase<T> implements OnInit {\n @ViewChild('input', { static: false }) input: DatePickerComponent;\n\n constructor(\n protected override svc: TableService<T>,\n protected override cdr: ChangeDetectorRef,\n ) {\n super(svc, cdr);\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n }\n\n startEdit(initiator: ICellCoordinates, type: 'cell' | 'row'): void {\n if (initiator?.column === this.column.name) {\n setTimeout(() => {\n this.input?.focus();\n this.cdr.markForCheck();\n }, 0);\n }\n }\n\n stopEdit(): void {\n this.cdr.markForCheck();\n }\n}\n","<span [style.display]=\"edit ? 'none' : 'block'\" class=\"cell-text\" [class.cell-text_disabled]=\"!editable\">\n {{ control?.value | date: 'dd.MM.yyyy' }}\n</span>\n@if (edit) {\n <teta-date-picker\n class=\"datepicker-table\"\n #input\n [allowNull]=\"!column.required\"\n [appendToBody]=\"true\"\n [showTime]=\"false\"\n [formControl]=\"control\"\n ></teta-date-picker>\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';\n\nimport { IIdName } from '../../../../common/contract/i-id-name';\nimport { VerticalAlign } from '../../../../common/enum/vertical-align.enum';\nimport { SelectComponent } from '../../../select/select/select.component';\nimport { CellComponentBase } from '../../base/cell-component-base';\nimport { ICellCoordinates } from '../../contract/i-cell-coordinates';\nimport { TableService } from '../../service/table.service';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { IconComponent } from '../../../icon/icon/icon.component';\n\n@Component({\n selector: 'teta-list-cell',\n templateUrl: './list-cell.component.html',\n styleUrls: ['./list-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SelectComponent, FormsModule, ReactiveFormsModule, IconComponent],\n})\nexport class ListCellComponent<T> extends CellComponentBase<T> implements OnInit {\n get displayFilterOptions(): IIdName<any>[] {\n if (this.column?.parentName?.length > 0) {\n const parentValue = this.row.data[this.column.parentName];\n if (parentValue) {\n return this.filterOptions.filter((_) => _.parentId === parentValue);\n }\n }\n return this.filterOptions;\n }\n\n @ViewChild('input', { static: false }) input: SelectComponent;\n\n verticalAlign = VerticalAlign;\n\n constructor(\n protected override svc: TableService<T>,\n protected override cdr: ChangeDetectorRef,\n ) {\n super(svc, cdr);\n }\n\n startEdit(initiator: ICellCoordinates, type: 'cell' | 'row'): void {\n if (initiator?.column === this.column.name) {\n setTimeout(() => {\n this.input?.focus();\n this.cdr.markForCheck();\n }, 0);\n }\n }\n\n stopEdit() {\n this.cdr.markForCheck();\n }\n\n override ngOnInit() {\n super.ngOnInit();\n }\n\n protected getValue(value) {\n if (this.filterOptions === null || this.filterOptions === undefined || !(this.filterOptions instanceof Array)) {\n return '';\n }\n const item = this.filterOptions.find((option) => option.id === value);\n if (item === null || item === undefined) {\n return '';\n }\n return item.name;\n }\n}\n","<span [style.display]=\"edit ? 'none' : 'flex'\" class=\"cell-text justify-content-between\"\n [class.cell-text_disabled]=\"!editable\">\n <span class=\"row_auto overflow-hidden text-overflow-ellipsis\">{{ getValue(control.value) }}</span>\n @if (column.editable) {\n <teta-icon [name]=\"'arrowDownSmall'\" [palette]=\"'text'\"></teta-icon>\n }\n</span>\n@if (edit) {\n <teta-select\n #input\n class=\"row_auto select-table\"\n [allowNull]=\"!column.required\"\n [verticalAlign]=\"verticalAlign.auto\"\n [appendToBody]=\"true\"\n [options]=\"displayFilterOptions\"\n [valueRef]=\"'id'\"\n [textRef]=\"'name'\"\n [searchRef]=\"displayFilterOptions?.length > 20 ? 'name' : ''\"\n [formControl]=\"control\"\n >\n </teta-select>\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnInit, ViewChild } from '@angular/core';\n\nimport { Align } from '../../../../common/enum/align.enum';\nimport { CellComponentBase } from '../../base/cell-component-base';\nimport { ICellCoordinates } from '../../contract/i-cell-coordinates';\nimport { TableService } from '../../service/table.service';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { HintDirective } from '../../../../directive/hint/hint.directive';\n\n@Component({\n selector: 'teta-string-cell',\n templateUrl: './string-cell.component.html',\n styleUrls: ['./string-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [HintDirective, FormsModule, ReactiveFormsModule]\n})\nexport class StringCellComponent<T> extends CellComponentBase<T> implements OnInit {\n align = Align;\n @ViewChild('input', { static: false }) input: ElementRef;\n\n constructor(\n public override svc: TableService<T>,\n public override cdr: ChangeDetectorRef,\n ) {\n super(svc, cdr);\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n }\n\n startEdit(initiator: ICellCoordinates, type: 'cell' | 'row'): void {\n if (initiator?.column === this.column.name) {\n this.cdr.detectChanges();\n this.input.nativeElement?.focus();\n this.input.nativeElement?.select();\n }\n }\n\n stopEdit(): void {\n this.cdr.detectChanges();\n }\n}\n","<span\n [style.display]=\"edit ? 'none' : 'block'\"\n class=\"cell-text\"\n [tetaHint]=\"row[column.name]\"\n [align]=\"align.auto\"\n [appendToBody]=\"true\"\n [overflownOnly]=\"true\"\n [class.cell-text_disabled]=\"!editable\"\n>\n {{ control.value }}\n</span>\n@if (edit) {\n <input\n #input\n type=\"text\"\n class=\"input row_auto border-radius-0\"\n (keydown.enter)=\"input.blur()\"\n [formControl]=\"control\"\n />\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnInit, ViewChild } from '@angular/core';\n\nimport { CellComponentBase } from '../../base/cell-component-base';\nimport { ICellCoordinates } from '../../contract/i-cell-coordinates';\nimport { TableService } from '../../service/table.service';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CheckboxComponent } from '../../../checkbox/checkbox/checkbox.component';\n\n@Component({\n selector: 'teta-boolean-cell',\n templateUrl: './boolean-cell.component.html',\n styleUrls: ['./boolean-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CheckboxComponent, FormsModule, ReactiveFormsModule]\n})\nexport class BooleanCellComponent<T> extends CellComponentBase<T> implements OnInit {\n @ViewChild('input', { static: false }) input: ElementRef;\n\n constructor(\n public override svc: TableService<T>,\n public override cdr: ChangeDetectorRef,\n ) {\n super(svc, cdr);\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n }\n\n startEdit(initiator: ICellCoordinates, type: 'cell' | 'row'): void {\n if (initiator?.column === this.column.name) {\n this.cdr.markForCheck();\n setTimeout(() => {\n this.input?.nativeElement.focus();\n }, 0);\n }\n }\n\n stopEdit(): void {\n this.cdr.markForCheck();\n }\n}\n","<span [style.display]=\"edit ? 'none' : 'block'\" class=\"cell-text\" [class.cell-text_disabled]=\"!editable\">\n {{ control?.value }}\n</span>\n@if (edit) {\n <teta-checkbox #input [binary]=\"true\" [formControl]=\"control\"></teta-checkbox>\n}\n","import { FilterType } from '../../filter/enum/filter-type.enum';\nimport { Type } from '@angular/core';\nimport { NumericCellComponent } from '../default/numeric-cell/numeric-cell.component';\nimport { DateCellComponent } from '../default/date-cell/date-cell.component';\nimport { ListCellComponent } from '../default/list-cell/list-cell.component';\nimport { StringCellComponent } from '../default/string-cell/string-cell.component';\nimport { TableColumn } from './table-column';\nimport { BooleanCellComponent } from '../default/boolean-cell/boolean-cell.component';\n\nconst cellComponentsMap: Map<FilterType, Type<any>> = new Map<FilterType, Type<any>>()\n .set(FilterType.number, NumericCellComponent)\n .set(FilterType.date, DateCellComponent)\n .set(FilterType.list, ListCellComponent)\n .set(FilterType.string, StringCellComponent)\n .set(FilterType.boolean, BooleanCellComponent)\n .set(FilterType.custom, StringCellComponent);\n\nexport const getCellComponent = (column: TableColumn): Type<any> =>\n cellComponentsMap.has(column.filterType) ? cellComponentsMap.get(column.filterType) : StringCellComponent;\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { IDictionary } from '../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { FormsUtil } from '../../../util/forms-util';\nimport { CellComponentBase } from '../base/cell-component-base';\nimport { getCellComponent } from '../contract/cell-components-map';\nimport { TableColumn } from '../contract/table-column';\nimport { TableRow } from '../contract/table-row';\n\n@Component({\n selector: 'teta-cell-host',\n template: '',\n styleUrls: ['./cell-host.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [FormsUtil.formProvider],\n standalone: true,\n})\nexport class CellHostComponent<T> implements OnInit, OnChanges {\n @Input() column: TableColumn;\n @Input() row: TableRow<T>;\n @Input() filterOptions: IIdName<any>[];\n @Input() dict: IDictionary<IIdName<any>[]>;\n private _init = false;\n private _componentRef: ComponentRef<CellComponentBase<T>>;\n\n constructor(private viewContainerRef: ViewContainerRef) {}\n\n ngOnInit(): void {\n if (!Object.prototype.isPrototypeOf.call(CellComponentBase, this.column.cellComponent)) {\n this.column.cellComponent = getCellComponent(this.column);\n }\n this._componentRef = this.viewContainerRef.createComponent(this.column.cellComponent);\n this._componentRef.instance.column = this.column;\n this._componentRef.instance.row = this.row;\n this._componentRef.instance.filterOptions = this.filterOptions;\n this._componentRef.instance.dict = this.dict;\n this._init = true;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this._init) {\n if (Object.prototype.hasOwnProperty.call(changes, 'row')) {\n this._componentRef.instance.row = this.row;\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'column')) {\n this._componentRef.instance.column = this.column;\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'filterOptions')) {\n this._componentRef.instance.filterOptions = this.filterOptions;\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'dict')) {\n this._componentRef.instance.dict = this.dict;\n }\n this._componentRef.injector.get(ChangeDetectorRef).markForCheck();\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\nimport { IDictionary } from '../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { TableColumn } from '../contract/table-column';\nimport { TableRow } from '../contract/table-row';\nimport { CellHostComponent } from '../cell-host/cell-host.component';\n\n@Component({\n selector: 'teta-cell',\n templateUrl: './cell.component.html',\n styleUrls: ['./cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CellHostComponent]\n})\nexport class CellComponent<T> {\n @Input() column: TableColumn;\n @Input() filterOptions: IIdName<any>[];\n @Input() dict: IDictionary<IIdName<any>[]>;\n @Input() row: TableRow<T>;\n @HostBinding('class.cell') private readonly tableCellClass = true;\n}\n","<teta-cell-host [row]=\"row\" [column]=\"column\" [filterOptions]=\"filterOptions\" [dict]=\"dict\"></teta-cell-host>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { TableService } from '../service/table.service';\nimport { takeWhile } from 'rxjs/operators';\nimport { FormsModule } from '@angular/forms';\nimport { CheckboxComponent } from '../../checkbox/checkbox/checkbox.component';\n\n@Component({\n selector: 'teta-selection-cell',\n templateUrl: './selection-cell.component.html',\n styleUrls: ['./selection-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CheckboxComponent, FormsModule]\n})\nexport class SelectionCellComponent<T> implements OnInit, OnDestroy {\n @Input() row: T;\n\n @HostBinding('class.cell') private readonly tableCellClass = true;\n selectedRows: T[] = [];\n\n private _alive = true;\n\n constructor(\n private _svc: TableService<T>,\n private _cdr: ChangeDetectorRef,\n ) {}\n\n selectRow(value: boolean) {\n if (value) {\n this._svc.selectRow(this.row);\n } else {\n this._svc.deselectRow(this.row);\n }\n }\n\n ngOnInit(): void {\n this._svc.selectedRows.pipe(takeWhile((_) => this._alive)).subscribe((_) => {\n this.selectedRows = _;\n this._cdr.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","<teta-checkbox\n [binary]=\"true\"\n [noLabel]=\"true\"\n [ngModel]=\"selectedRows?.indexOf(row) >= 0\"\n (ngModelChange)=\"selectRow($event)\"\n (click)=\"$event.stopPropagation()\"\n></teta-checkbox>\n","import { ChangeDetectionStrategy, Component, inject, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { ControlContainer, FormControl, FormGroup, NgForm, UntypedFormControl } from '@angular/forms';\nimport { TableRow } from '../contract/table-row';\n\n@Component({\n selector: 'teta-table-row',\n imports: [],\n templateUrl: './table-row.component.html',\n styleUrl: './table-row.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableRowComponent<T> implements OnChanges {\n @Input() row: TableRow<T>;\n\n private _formGroup = inject(ControlContainer, {\n optional: true,\n });\n\n get control(): FormControl {\n return this.formGroup?.get('id') as FormControl;\n }\n\n get formGroup(): FormGroup {\n if (this._formGroup instanceof FormGroup) {\n return this._formGroup;\n }\n if (this._formGroup instanceof NgForm) {\n return this._formGroup.form;\n }\n return null;\n }\n\n constructor() {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (!this.control) {\n this.formGroup.registerControl('id', new UntypedFormControl(this.row?.data['id']));\n } else {\n this.control.patchValue(this.row?.data['id'], {\n emitEvent: false,\n });\n }\n }\n}\n","<ng-content></ng-content>\n","import { CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll, CdkVirtualForOf } from '@angular/cdk/scrolling';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n input,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Type,\n ViewChild,\n} from '@angular/core';\nimport { combineLatest, Observable } from 'rxjs';\nimport { takeWhile } from 'rxjs/operators';\n\nimport { IDictionary } from '../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { ArrayUtil } from '../../../common/util/array-util';\nimport { TetaConfigService } from '../../../locale/teta-config.service';\nimport { TetaLocalisation } from '../../../locale/teta-localisation';\nimport { DetailComponentBase } from '../base/detail-component-base';\nimport { TableColumn } from '../contract/table-column';\nimport { TableRow } from '../contract/table-row';\nimport { AggregationType } from '../enum/aggregation-type.enum';\nimport { SelectType } from '../enum/select-type.enum';\nimport { TableService } from '../service/table.service';\nimport { NumberPipe } from '../../../pipe/number-pipe/number.pipe';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { CellComponent } from '../cell/cell.component';\nimport { SelectionCellComponent } from '../selection-cell/selection-cell.component';\nimport { FormsModule } from '@angular/forms';\nimport { NgTemplateOutlet, NgClass, AsyncPipe } from '@angular/common';\nimport { ScrollableDirective } from '../../../directive/scrollable/scrollable.directive';\nimport { ScrollableComponent } from '../../../directive/scrollable/scrollable/scrollable.component';\nimport { TableRowComponent } from '../table-row/table-row.component';\n\n@Component({\n selector: 'teta-table-body',\n templateUrl: './table-body.component.html',\n styleUrls: ['./table-body.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ScrollableComponent,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n ScrollableDirective,\n CdkVirtualForOf,\n NgTemplateOutlet,\n FormsModule,\n NgClass,\n SelectionCellComponent,\n CellComponent,\n IconComponent,\n AsyncPipe,\n NumberPipe,\n TableRowComponent,\n ]\n})\nexport class TableBodyComponent<T> implements OnInit, OnDestroy {\n @Input() virtual: boolean;\n @Input() activeRow: T;\n @Input() selectedRows: T[] = [];\n @Input() additionalComponent: Type<DetailComponentBase<T>>;\n @Input() aggregate: boolean;\n @Input() selectType: SelectType;\n @Input() rowClass: (row: T, index?: number) => string;\n @Input() trackRow: (index: number, row: T) => any;\n @Input() trackColumns: (index: number, column: TableColumn) => any;\n @ViewChild(CdkVirtualScrollViewport, { static: false })\n viewport: CdkVirtualScrollViewport;\n\n rowHeight = input<number>(28);\n\n @HostBinding('class.table-body') private readonly tableBodyClass = true;\n @Output() scrollChange = new EventEmitter<Event>();\n\n set data(data: TableRow<T>[]) {\n this._data = data;\n }\n\n get data() {\n return this._data;\n }\n\n dict: IDictionary<IIdName<any>[]>;\n locked: TableColumn[] = [];\n unlocked: TableColumn[] = [];\n selectTypeEnum = SelectType;\n aggregationType = AggregationType;\n lockedFlex: number;\n lockedWidth: number;\n totalFlex: number;\n totalWidth: number;\n\n private _columns: TableColumn[] = [];\n private _alive = true;\n private _data: TableRow<T>[];\n private _hiddenColumns: string[] = [];\n private _obs: ResizeObserver;\n\n set columns(columns: TableColumn[]) {\n this._columns = columns;\n this.locked = this._columns?.filter((_) => _.locked === true);\n this.unlocked = this._columns?.filter((_) => _.locked === false);\n const startWidth = this.selectType === SelectType.checkBox ? 28 : 0;\n this.lockedFlex = this.locked.reduce((prev: number, curr: TableColumn) => prev + curr.flex, 0);\n this.lockedWidth = this.locked.reduce((prev: number, curr: TableColumn) => prev + curr.width, startWidth);\n this.totalFlex = this._columns.reduce((prev: number, curr: TableColumn) => prev + curr.flex, 0);\n this.totalWidth = this._columns.reduce((prev: number, curr: TableColumn) => prev + curr.width, startWidth);\n }\n\n get columns(): TableColumn[] {\n return this._columns;\n }\n\n locale: Observable<TetaLocalisation>;\n\n constructor(\n private _svc: TableService<T>,\n private _elementRef: ElementRef,\n private _config: TetaConfigService,\n private _cdr: ChangeDetectorRef,\n ) {}\n\n setActiveRow(row: T, event: MouseEvent) {\n if (!event.shiftKey && !event.ctrlKey) {\n this._svc.setActiveRow(row);\n }\n }\n\n ngOnInit(): void {\n this.locale = this._config.locale;\n combineLatest([this._svc.columns, this._svc.hiddenColumns])\n .pipe(takeWhile((_) => this._alive))\n .subscribe((values: [TableColumn[], string[]]) => {\n const [columns, hiddenColumns] = values;\n this._hiddenColumns = hiddenColumns;\n this.columns = ArrayUtil.flatten(columns, 'columns', true).filter(\n (_) => this._hiddenColumns.indexOf(_.name) < 0,\n );\n this._cdr.markForCheck();\n });\n\n this._svc.displayData.pipe(takeWhile((_) => this._alive)).subscribe((_) => {\n this.data = _;\n this._cdr.markForCheck();\n this.viewport?.checkViewportSize();\n });\n\n this._svc.dict.pipe(takeWhile((_) => this._alive)).subscribe((_) => {\n this.dict = _;\n this._cdr.markForCheck();\n });\n\n this._svc.scrollIndex.pipe(takeWhile(() => this._alive)).subscribe(async (index) => {\n if (this.viewport) {\n this.viewport.scrollToIndex(index, 'auto');\n } else {\n const row = this._elementRef.nativeElement.querySelector(`.table-row[data-row=\"${index}\"]`) as HTMLElement;\n row?.scrollIntoView();\n }\n this._cdr.markForCheck();\n });\n\n this._svc.activeRow.pipe(takeWhile((_) => this._alive)).subscribe(async (_) => {\n this.activeRow = _;\n this._cdr.markForCheck();\n });\n this.addResizeObserver();\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n this.removeResizeObserver();\n }\n\n getAggregateValue(column: TableColumn): number {\n if (column.aggregate === AggregationType.sum) {\n return this.getSum(column.name);\n }\n if (column.aggregate === AggregationType.avg) {\n return this.getSum(column.name) / this.data.length;\n }\n if (column.aggregate === AggregationType.min) {\n return this.getMin(column.name);\n }\n if (column.aggregate === AggregationType.max) {\n return this.getMax(column.name);\n }\n return null;\n }\n\n getAggregateText(column: TableColumn): string {\n if (column.aggregate === AggregationType.sum) {\n return 'sum';\n }\n if (column.aggregate === AggregationType.avg) {\n return 'avg';\n }\n if (column.aggregate === AggregationType.min) {\n return 'min';\n }\n if (column.aggregate === AggregationType.max) {\n return 'max';\n }\n return '';\n }\n\n emitScroll(event) {\n this.scrollChange.emit(event);\n }\n\n trackTableRow = (index: number, row: TableRow<T>): any => {\n return this.trackRow ? this.trackRow(index, row.data) : row.data['id'];\n };\n\n private addResizeObserver() {\n this._obs = new ResizeObserver((_) => {\n this.viewport?.checkViewportSize();\n });\n\n this._obs.observe(this._elementRef.nativeElement);\n }\n\n private removeResizeObserver() {\n this._obs.unobserve(this._elementRef.nativeElement);\n this._obs.disconnect();\n }\n\n private getSum(columnName: string) {\n return this.data?.reduce((accum, current) => {\n const val = parseFloat(current.data[columnName]);\n return accum + (isNaN(val) ? 0 : val);\n }, 0);\n }\n\n private getMin(columnName: string): number {\n return (this.data as any)?.reduce(\n (accum, current: TableRow<T>) =>\n accum != null && accum <= current.data[columnName] ? accum : current.data[columnName],\n null,\n );\n }\n\n private getMax(columnName: string): number {\n return (this.data as any)?.reduce(\n (accum, current) => (accum != null && accum >= current.data[columnName] ? accum : current.data[columnName]),\n null,\n );\n }\n}\n","@if (virtual && data.length > 0) {\n <teta-scrollable class=\"table-body-container\" style=\"padding-bottom: 12px\" [showScrollbars]=\"true\">\n <cdk-virtual-scroll-viewport\n tetaScrollable\n class=\"table-body-container\"\n (scroll)=\"emitScroll($event)\"\n [itemSize]=\"rowHeight()\"\n >\n <ng-container\n *cdkVirtualFor=\"let row of data; templateCacheSize: 0; let rowIndex = index; trackBy: trackTableRow\"\n >\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: { row: row, rowIndex: rowIndex }\"></ng-container>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n </teta-scrollable>\n} @else {\n <teta-scrollable\n class=\"table-body-container\"\n style=\"padding-bottom: 12px\"\n direction=\"column\"\n [showScrollbars]=\"true\"\n (scroll)=\"emitScroll($event)\"\n >\n <div class=\"table-body-container\">\n @if (!data?.length) {\n <div class=\"column column_auto\" style=\"position: absolute; top: 0; bottom: 16px; left: 0; right: 0\">\n <ng-content></ng-content>\n </div>\n }\n @for (row of data; track trackTableRow(rowIndex, row); let rowIndex = $index) {\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: { row: row, rowIndex: rowIndex }\"></ng-container>\n }\n @if (aggregate) {\n <ng-container *ngTemplateOutlet=\"aggTemplate\"></ng-container>\n }\n <ng-container *ngTemplateOutlet=\"emptyRow\"></ng-container>\n </div>\n </teta-scrollable>\n}\n\n<ng-template #bodyTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <teta-table-row\n class=\"table-row\"\n ngForm\n [style.height.px]=\"rowHeight()\"\n [row]=\"row\"\n (click)=\"setActiveRow(row.data, $event)\"\n [attr.data-row]=\"rowIndex\"\n [class.table-row_odd]=\"rowIndex % 2 === 1\"\n [ngClass]=\"rowClass ? rowClass(row.data, rowIndex) : ''\"\n [class.table-row_selected]=\"selectedRows && selectedRows.indexOf(row.data) >= 0\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\"\n >\n @if (locked.length > 0) {\n <div\n class=\"table-row_locked\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\"\n [style.zIndex]=\"row.data === activeRow ? 2 : 1\"\n >\n @if (selectType === selectTypeEnum.checkBox && locked.length) {\n <teta-selection-cell [row]=\"row.data\" style=\"width: 28px\"></teta-selection-cell>\n }\n @for (column of locked; track trackColumns(colIndex, column); let colIndex = $index) {\n <teta-cell\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict ? dict[column.name] : []\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n }\n </div>\n }\n @if (selectType === selectTypeEnum.checkBox && locked.length < 1) {\n <teta-selection-cell [row]=\"row.data\" style=\"width: 28px\"></teta-selection-cell>\n }\n @for (column of unlocked; track trackColumns(colIndex, column); let colIndex = $index) {\n <teta-cell\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict ? dict[column.name] : []\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n }\n </teta-table-row>\n</ng-template>\n\n<ng-template #aggTemplate>\n @if (locale | async; as loc) {\n @if (aggregate) {\n <div\n class=\"table-row\"\n [style.height.px]=\"rowHeight()\"\n [class.table-row_virtual]=\"virtual\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\"\n >\n @if (locked.length > 0) {\n <div\n class=\"table-row_locked\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\"\n >\n @if (selectType === selectTypeEnum.checkBox && locked.length < 1) {\n <div class=\"cell align-center justify-content-center\" style=\"width: 28px\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n }\n @for (column of locked; track trackColumns(colIndex, column); let colIndex = $index) {\n <div\n class=\"cell cell-component aggregate-cell\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n >\n @if (column.aggregate !== aggregationType.none) {\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{ loc[getAggregateText(column)] }}:\n {{ getAggregateValue(column) | tetaNumber: 2 }}\n </span>\n }\n </div>\n }\n </div>\n }\n @if (selectType === selectTypeEnum.checkBox && locked.length < 1) {\n <div class=\"cell align-center justify-content-center\" style=\"width: 28px\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n }\n @for (column of unlocked; track trackColumns(colIndex, column); let colIndex = $index) {\n <div\n class=\"cell cell-component aggregate-cell\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n >\n @if (column.aggregate !== aggregationType.none) {\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{ loc[getAggregateText(column)] }}:\n {{ getAggregateValue(column) | tetaNumber: 2 }}\n </span>\n }\n </div>\n }\n </div>\n }\n }\n</ng-template>\n<ng-template #emptyRow>\n <div\n class=\"empty-table-row\"\n style=\"height: 0.1px\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\"\n ></div>\n</ng-template>\n","import { Inject, Injectable } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { fromEvent, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ClickService {\n click: Observable<MouseEvent>;\n contextMenu: Observable<MouseEvent>;\n\n constructor(@Inject(DOCUMENT) protected _document: any) {\n this.click = fromEvent(this._document, 'click');\n this.contextMenu = fromEvent(this._document, 'contextmenu');\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n HostListener,\n Inject,\n Injector,\n Input,\n NgZone,\n OnDestroy,\n TemplateRef,\n Type,\n} from '@angular/core';\n\nimport { AutoCloseIgnoreCase } from '../../common/contract/auto-close-ignore-case';\nimport { ClickService } from '../../common/service/click.service';\nimport { DynamicComponentService } from '../../common/service/dynamic-component.service';\nimport { ArrayUtil } from '../../common/util/array-util';\nimport { DomUtil } from '../../common/util/dom-util';\nimport { PositionUtil } from '../../common/util/position-util';\nimport { DynamicContentBaseDirective } from '../dynamic-content-base.directive';\n\n@Directive({\n selector: '[tetaContextMenu]',\n standalone: true,\n})\nexport class ContextMenuDirective extends DynamicContentBaseDirective implements OnDestroy {\n /**\n * Строка, шаблон или компонент для создания контекстного меню\n */\n @Input() tetaContextMenu: string | TemplateRef<any> | Type<any>;\n @Input() autoCloseIgnore: AutoCloseIgnoreCase[] = [];\n\n get _dynamicContent() {\n return this.tetaContextMenu;\n }\n\n private _eventPoint: {\n x: number;\n y: number;\n };\n\n constructor(\n @Inject(DOCUMENT)\n protected override _document: any,\n protected override _elementRef: ElementRef,\n protected override _service: DynamicComponentService,\n protected override _injector: Injector,\n protected override _zone: NgZone,\n protected override _cdr: ChangeDetectorRef,\n private _click: ClickService,\n ) {\n super(_document, _elementRef, _service, _injector, _zone, _cdr);\n this.addScrollListener();\n }\n\n @HostListener('contextmenu', ['$event'])\n showContent(event: MouseEvent): void {\n if (this.tetaContextMenu && !event.defaultPrevented) {\n event.preventDefault();\n setTimeout(() => {\n this.createMenu(event);\n });\n }\n }\n\n @HostListener('click', ['$event'])\n click(event: MouseEvent): void {\n if (this._componentRef && DomUtil.clickedInside(this._componentRef.location.nativeElement, event)) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n @HostListener('document:click', ['$event'])\n @HostListener('document:contextmenu', ['$event'])\n documentClick(event: MouseEvent): void {\n if (\n this._open &&\n this._componentRef &&\n (!DomUtil.clickedInside(this._componentRef.location.nativeElement, event) ||\n this.autoCloseIgnore.indexOf('inside') < 0)\n ) {\n this.destroyContentRef();\n this.openChange.emit(false);\n }\n }\n\n protected addScrollListener() {\n window.addEventListener('scroll', this.scrollListener, true);\n }\n\n protected removeScrollListener() {\n window.removeEventListener('scroll', this.scrollListener, true);\n }\n\n private scrollListener = (event) => {\n if (\n this._open &&\n this._componentRef &&\n !this._componentRef.location.nativeElement.contains(event.target) &&\n this._componentRef.location.nativeElement !== event.target\n ) {\n this.destroyContentRef();\n this.openChange.emit(false);\n }\n };\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.removeScrollListener();\n }\n\n protected setPosition() {\n if (this._componentRef && this._open) {\n const position = PositionUtil.getPosition(\n {\n top: this._eventPoint.y,\n bottom: this._eventPoint.y,\n left: this._eventPoint.x,\n right: this._eventPoint.x,\n },\n this._componentRef.location.nativeElement.getBoundingClientRect(),\n this.align,\n this.verticalAlign,\n );\n PositionUtil.setElementPosition(this._componentRef.location.nativeElement, position);\n }\n }\n\n private createMenu(event: MouseEvent): void {\n if (this.tetaContextMenu == null) {\n return;\n }\n this._eventPoint = event;\n this._componentRef = this.createContentRef();\n this._componentRef.instance.className = [...ArrayUtil.asArray(this.className), 'context-menu'];\n this.openChange.emit(true);\n }\n}\n","import { TableColumn } from '../contract/table-column';\nimport { ArrayUtil } from '../../../common/util/array-util';\nimport { SortParam } from '../../filter/contarct/sort-param';\nimport { ListFilterType } from '../../filter/enum/list-filter-type.enum';\nimport { ListFilter } from '../../filter/contarct/list-filter';\nimport { NumericFilter } from '../../filter/contarct/numeric-filter';\nimport { DateFilter } from '../../filter/contarct/date-filter';\nimport { StringFilterType } from '../../filter/enum/string-filter-type.enum';\nimport { StringFilter } from '../../filter/contarct/string-filter';\nimport { FilterState } from '../../filter/contarct/filter-state';\n\nexport class TableUtil {\n public static getColumnLeaves(column: TableColumn): TableColumn[] | null {\n if (column?.columns?.length > 0) {\n return ArrayUtil.flatten(column.columns, 'columns', true);\n }\n return null;\n }\n\n static getData<T>(data: T[], state: FilterState): T[] {\n let result: T[] = [...data];\n result = TableUtil.filterData(result, state);\n result = TableUtil.sortData(result, state);\n return result;\n }\n\n static sortData<T>(data: T[], state: FilterState): T[] {\n let result: T[] = [...data];\n const func = (sortParam: SortParam) => {\n result = TableUtil.sort(result, sortParam);\n };\n if (state?.sortParams?.length > 0) {\n state.sortParams.forEach(func);\n }\n return result;\n }\n\n static filterData<T>(data: T[], state: FilterState): T[] {\n let result: T[] = [...data];\n if (state?.stringFilters?.length) {\n const stringFilter = (filter: StringFilter) => {\n result = TableUtil.filterString(result, filter);\n };\n state.stringFilters.forEach(stringFilter);\n }\n if (state?.dateFilters?.length) {\n const dateFilter = (filter: DateFilter) => {\n result = TableUtil.filterDate(result, filter);\n };\n state.dateFilters.forEach(dateFilter);\n }\n if (state?.numericFilters?.length) {\n const numericFilter = (filter: NumericFilter) => {\n result = TableUtil.filterNumber(result, filter);\n };\n state.numericFilters.forEach(numericFilter);\n }\n if (state?.listFilters?.length) {\n const listFilter = (filter: ListFilter) => {\n result = TableUtil.filterList(result, filter);\n };\n state.listFilters.forEach(listFilter);\n }\n return result;\n }\n\n static filterString<T>(data: T[], filter: StringFilter): T[] {\n if (filter.value === null || filter.value === undefined) {\n return data;\n }\n const filterString = (row: T) => {\n const item = row as any;\n if (filter.type === StringFilterType.EndsWith) {\n return item[filter.field]?.toLowerCase().endsWith(filter.value?.toLowerCase());\n }\n if (filter.type === StringFilterType.Equals) {\n return item[filter.field]?.toLowerCase() === filter.value?.toLowerCase();\n }\n if (filter.type === StringFilterType.StartsWith) {\n return item[filter.field]?.toLowerCase().startsWith(filter.value?.toLowerCase());\n }\n return item[filter.field]?.toLowerCase().indexOf(filter.value?.toLowerCase()) >= 0;\n };\n return data.filter(filterString);\n }\n\n static filterDate<T>(data: T[], filter: DateFilter): T[] {\n const filterDate = (row: T) => {\n const item = row as any;\n return (\n (filter.value.lessThan === null || filter.value.lessThan === undefined\n ? true\n : filter.value.lessThan?.getTime() >= item[filter.field]?.getTime()) &&\n (filter.value.greaterThan === null || filter.value.greaterThan === undefined\n ? true\n : filter.value.greaterThan?.getTime() <= item[filter.field]?.getTime())\n );\n };\n return data.filter(filterDate);\n }\n\n static filterNumber<T>(data: T[], filter: NumericFilter): T[] {\n const filterNumber = (row: T) => {\n const item = row as any;\n return (\n (filter.value.lessThan === null ||\n filter.value.lessThan === undefined ||\n filter.value.lessThan?.toString() === ''\n ? true\n : filter.value.lessThan >= item[filter.field]) &&\n (filter.value.greaterThan === null ||\n filter.value.greaterThan === undefined ||\n filter.value.greaterThan?.toString() === ''\n ? true\n : filter.value.greaterThan <= item[filter.field]) &&\n (filter.value.equalsTo === null ||\n filter.value.equalsTo === undefined ||\n filter.value.equalsTo?.toString() === ''\n ? true\n : filter.value.equalsTo === item[filter.field])\n );\n };\n return data.filter(filterNumber);\n }\n\n static filterList<T>(data: T[], filter: ListFilter): T[] {\n if (filter.value === null || filter.value === undefined || filter.value.length < 1) {\n return data;\n }\n const filterList = (row: T) => {\n const item = row as any;\n if (filter.type === ListFilterType.Excluded) {\n return filter.value.indexOf(item[filter.field]) < 0;\n }\n return filter.value.indexOf(item[filter.field]) >= 0;\n };\n return data.filter(filterList);\n }\n\n static sort<T>(data: T[], sortParam: SortParam): T[] {\n const res = data.sort(sortParam.asc ? TableUtil.asc(sortParam.field) : TableUtil.desc(sortParam.field));\n return [...res];\n }\n\n static desc(field: string) {\n const res = (a: any, b: any) => (a[field] > b[field] ? -1 : 1);\n return res;\n }\n\n static asc(field: string) {\n const res = (a: any, b: any) => (a[field] < b[field] ? -1 : 1);\n return res;\n }\n}\n","import { TableColumn } from './table-column';\n\nexport class ColumnResizeEvent {\n column: TableColumn;\n newWidth: number;\n\n constructor(column: TableColumn, newWidth: number) {\n this.column = column;\n this.newWidth = newWidth;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ITreeData } from '../../common/contract/i-tree-data';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TreeService {\n openItems: Observable<ITreeData[]>;\n scrollToIndex: Observable<number>;\n\n private _openItems: BehaviorSubject<ITreeData[]> = new BehaviorSubject<ITreeData[]>([]);\n private _scrollToIndex = new BehaviorSubject<number>(0);\n\n constructor() {\n this.openItems = this._openItems.asObservable();\n this.scrollToIndex = this._scrollToIndex.asObservable();\n }\n\n compareItems: (item: ITreeData) => any = (item: ITreeData) => item;\n\n openItem(item: ITreeData) {\n const newValue = this.addOrRemove(item, this._openItems.value);\n this.setOpenItems(newValue);\n }\n\n setOpenItems(items: ITreeData[]) {\n this._openItems.next(items);\n }\n\n scrollTo(index: number) {\n this._scrollToIndex.next(index);\n }\n\n private addOrRemove<G>(needle: G, list: G[]): G[] {\n const found = list?.find((x) => this.compareItems(x) === this.compareItems(needle));\n if (found) {\n return list.filter((x) => this.compareItems(x) !== this.compareItems(needle));\n } else {\n return [...list, needle];\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, Signal } from '@angular/core';\nimport { TreeService } from '../tree.service';\nimport { ITreeData } from '../../../common/contract/i-tree-data';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'teta-tree-item-toggle',\n templateUrl: './tree-item-toggle.component.html',\n styleUrls: ['./tree-item-toggle.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [IconComponent],\n})\nexport class TreeItemToggleComponent {\n treeService = inject(TreeService);\n item = input<ITreeData>();\n open: Signal<boolean>;\n\n openItems: Signal<ITreeData[]>;\n\n constructor() {\n this.openItems = toSignal(this.treeService.openItems);\n this.open = computed(() => {\n const found = this.openItems()?.find(\n (x) => this.treeService.compareItems(x) === this.treeService.compareItems(this.item()),\n );\n return !!found;\n });\n }\n}\n","<teta-icon [name]=\"open() ? 'arrowDownKey' : 'arrowRightKey'\" class=\"tree__icon\"></teta-icon>\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaTemplate]',\n standalone: true,\n})\nexport class TetaTemplateDirective {\n @Input('tetaTemplate') id: string;\n\n constructor(public template: TemplateRef<any>) {}\n\n getId(): string {\n return this.id;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostBinding,\n inject,\n input,\n Signal,\n TemplateRef,\n} from '@angular/core';\nimport { ITreeData } from '../../../common/contract/i-tree-data';\nimport { TreeService } from '../tree.service';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n/**\n * TODO: Lazy загрузка дочерних элементов, Output onExpand, шаблон для иконки expand\n */\n@Component({\n selector: 'teta-tree-item',\n templateUrl: './tree-item.component.html',\n styleUrls: ['./tree-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('treeItemInstance', [\n transition('void => *', [style({ opacity: '0' }), animate(200, style({ opacity: '1' }))]),\n // transition('* => void', [animate(200, style({opacity: '0'}))]),\n ]),\n ],\n imports: [NgClass, NgTemplateOutlet],\n})\nexport class TreeItemComponent {\n treeService = inject(TreeService);\n\n item = input<ITreeData>();\n depth = input<number>(0);\n padding = input<number>(16);\n childNodeName = input<string>('children');\n template = input<TemplateRef<any>>();\n childPadding = input<boolean>();\n openItems: Signal<ITreeData[]>;\n @HostBinding('class.tree__item-container') private readonly treeItemClass = true;\n\n itemIsOpen: Signal<boolean>;\n\n @HostBinding('@treeItemInstance') private readonly treeItemInstance = true;\n\n computedDepth = computed(() => {\n return this.depth() + (this.item()[this.childNodeName()]?.length > 0 ? 0 : this.childPadding() ? 2 : 1);\n });\n\n constructor() {\n this.openItems = toSignal(this.treeService.openItems);\n this.itemIsOpen = computed(() => {\n const found = this.openItems()?.find(\n (x) => this.treeService.compareItems(x) === this.treeService.compareItems(this.item()),\n );\n return !!found;\n });\n }\n\n openItem() {\n this.treeService.openItem(this.item());\n }\n}\n","<div class=\"tree__item_content\" [ngClass]=\"'tree__item_content-' + computedDepth()\" (click)=\"openItem()\">\n <ng-container\n *ngTemplateOutlet=\"\n template();\n context: { $implicit: item(), item: item(), open: itemIsOpen(), service: treeService, depth: depth() }\n \"\n ></ng-container>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n input,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n AfterViewInit,\n computed,\n effect,\n model,\n inject,\n} from '@angular/core';\nimport { ITreeData } from '../../../common/contract/i-tree-data';\nimport { TreeService } from '../tree.service';\nimport { TetaTemplateDirective } from '../../../directive/teta-template/teta-template.directive';\nimport { filter, takeWhile } from 'rxjs/operators';\nimport { CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll, CdkVirtualForOf } from '@angular/cdk/scrolling';\nimport { TreeItemComponent } from '../tree-item/tree-item.component';\nimport { ScrollableDirective } from '../../../directive/scrollable/scrollable.directive';\nimport { ScrollableComponent } from '../../../directive/scrollable/scrollable/scrollable.component';\n\n@Component({\n selector: 'teta-tree',\n templateUrl: './tree.component.html',\n styleUrls: ['./tree.component.scss'],\n providers: [TreeService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ScrollableComponent,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n ScrollableDirective,\n CdkVirtualForOf,\n TreeItemComponent,\n ],\n})\nexport class TreeComponent implements OnInit, OnChanges, OnDestroy, AfterViewInit {\n private treeService = inject(TreeService);\n private elementRef = inject(ElementRef);\n private ngZone = inject(NgZone);\n\n data = input<ITreeData[]>([]);\n padding = input<number>(8);\n childNodeName = input<string>('children');\n virtual = input<boolean>(false);\n height = input<number>(28);\n\n openItems = model<ITreeData[]>([]);\n\n @Output() service: EventEmitter<TreeService> = new EventEmitter<TreeService>();\n\n @ViewChild(CdkVirtualScrollViewport, { static: false }) viewport: CdkVirtualScrollViewport;\n\n @ContentChild(TetaTemplateDirective, { static: true })\n template: TetaTemplateDirective;\n\n childPadding = computed(() => {\n return this.data()?.some((_) => _[this.childNodeName()]?.length > 0);\n });\n\n displayData = computed(() => {\n return this.getDisplayData(this.data(), 0);\n });\n\n private _alive = true;\n private _obs: ResizeObserver;\n\n constructor() {\n effect(() => {\n this.treeService.setOpenItems(this.openItems());\n });\n this.treeService.openItems\n .pipe(\n takeWhile((_) => this._alive),\n filter((_) => this.openItems() !== _),\n )\n .subscribe((_: ITreeData[]) => {\n this.openItems.set(_);\n this.viewport?.checkViewportSize();\n });\n }\n\n @Input()\n set compareItems(func: (item: ITreeData) => any) {\n this.treeService.compareItems = func;\n }\n\n get compareItems() {\n return this.treeService.compareItems;\n }\n\n @HostBinding('class.tree') private readonly treeClass = true;\n\n ngOnInit(): void {\n this.service.emit(this.treeService);\n this.addResizeObserver();\n }\n\n ngOnChanges(): void {\n this.viewport?.checkViewportSize();\n }\n\n ngOnDestroy() {\n this._alive = false;\n this.removeResizeObserver();\n }\n\n ngAfterViewInit() {\n this.treeService.scrollToIndex.pipe(takeWhile(() => this._alive)).subscribe((index) => {\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.viewport?.scrollToIndex(index, 'smooth');\n });\n });\n });\n }\n\n trackRow = (index: number, item: ITreeData): any => {\n if (this.compareItems) {\n return this.compareItems(item);\n }\n return index;\n };\n\n private getDisplayData(data: ITreeData[], level: number) {\n const result: ITreeData[] = [];\n data?.forEach((item: ITreeData) => {\n item['level'] = level;\n result.push(item);\n if (\n item[this.childNodeName()]?.length > 0 &&\n this.openItems()?.find((openItem) => this.compareItems(openItem) === this.compareItems(item))\n ) {\n result.push(...this.getDisplayData(item[this.childNodeName()], level + 1));\n }\n });\n return result;\n }\n\n private addResizeObserver() {\n this._obs = new ResizeObserver((_) => {\n this.viewport?.checkViewportSize();\n });\n\n this._obs.observe(this.elementRef.nativeElement);\n }\n\n private removeResizeObserver() {\n this._obs.unobserve(this.elementRef.nativeElement);\n this._obs.disconnect();\n }\n}\n","@if (virtual()) {\n <teta-scrollable class=\"column column_auto\">\n <cdk-virtual-scroll-viewport tetaScrollable class=\"table-body-container\" [itemSize]=\"height()\">\n <teta-tree-item\n *cdkVirtualFor=\"let item of displayData(); templateCacheSize: 0; trackBy: trackRow\"\n [item]=\"item\"\n [style.height.px]=\"height()\"\n [depth]=\"item['level']\"\n [padding]=\"padding()\"\n [childNodeName]=\"childNodeName()\"\n [childPadding]=\"childPadding()\"\n [template]=\"template?.template\"\n ></teta-tree-item>\n </cdk-virtual-scroll-viewport>\n </teta-scrollable>\n} @else {\n <teta-scrollable class=\"column column_auto\" direction=\"column\">\n @for (item of displayData(); track trackRow($index, item)) {\n <teta-tree-item\n [item]=\"item\"\n [style.height.px]=\"height()\"\n [depth]=\"item['level']\"\n [padding]=\"padding()\"\n [childNodeName]=\"childNodeName()\"\n [childPadding]=\"childPadding()\"\n [template]=\"template?.template\"\n ></teta-tree-item>\n }\n </teta-scrollable>\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, OnDestroy } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, takeWhile } from 'rxjs/operators';\n\nimport { ITreeData } from '../../../../common/contract/i-tree-data';\nimport { ArrayUtil } from '../../../../common/util/array-util';\nimport { TetaConfigService } from '../../../../locale/teta-config.service';\nimport { TetaLocalisation } from '../../../../locale/teta-localisation';\nimport { FilterState } from '../../../filter/contarct/filter-state';\nimport { TableColumn } from '../../contract/table-column';\nimport { TableService } from '../../service/table.service';\nimport { AsyncPipe } from '@angular/common';\nimport { ButtonComponent } from '../../../button/button/button.component';\nimport { ToolbarComponent } from '../../../toolbar/toolbar/toolbar.component';\nimport { TreeItemToggleComponent } from '../../../tree/tree-item-toggle/tree-item-toggle.component';\nimport { TetaTemplateDirective } from '../../../../directive/teta-template/teta-template.directive';\nimport { TreeComponent } from '../../../tree/tree/tree.component';\nimport { ScrollableComponent } from '../../../../directive/scrollable/scrollable/scrollable.component';\nimport { FormsModule } from '@angular/forms';\nimport { CheckboxComponent } from '../../../checkbox/checkbox/checkbox.component';\n\n@Component({\n selector: 'teta-visibility-dropdown-tab',\n templateUrl: './visibility-dropdown-tab.component.html',\n styleUrls: ['./visibility-dropdown-tab.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CheckboxComponent,\n FormsModule,\n ScrollableComponent,\n TreeComponent,\n TetaTemplateDirective,\n TreeItemToggleComponent,\n ToolbarComponent,\n ButtonComponent,\n AsyncPipe,\n ]\n})\nexport class VisibilityDropdownTabComponent<T> implements OnDestroy {\n @Input() columns: ITreeData[];\n @Input() column: TableColumn;\n @Input() state: FilterState;\n @Input() data: T[];\n @Input() close: () => void;\n\n locale: Observable<TetaLocalisation>;\n hiddenColumns: string[];\n\n get openItems() {\n if (this._openItems == null) {\n this._openItems = this.columns.map((_) => _);\n }\n return this._openItems;\n }\n\n set openItems(openItems: ITreeData[]) {\n this._openItems = openItems;\n }\n\n get childMode() {\n return this.columns.find((_: any) => _.columns?.length > 0);\n }\n\n private _openItems: ITreeData[];\n private _alive = true;\n\n constructor(\n private _svc: TableService<T>,\n private _config: TetaConfigService,\n private _elementRef: ElementRef,\n private _cdr: ChangeDetectorRef,\n ) {\n this.locale = this._config.locale;\n this._svc.hiddenColumns\n .pipe(\n takeWhile((_) => this._alive),\n map((_) => [..._]),\n )\n .subscribe((_) => {\n this.hiddenColumns = _;\n });\n }\n\n columnIsHidden(column: TableColumn) {\n return this.hiddenColumns.indexOf(column.name) >= 0;\n }\n\n allColumnsVisible() {\n if (this.hiddenColumns?.length <= 0) {\n return true;\n }\n const columns = ArrayUtil.flatten(this.columns, 'columns');\n const notHidden = columns.find((_) => this.hiddenColumns.indexOf(_.name) < 0);\n if (!notHidden) {\n return false;\n }\n return null;\n }\n\n setAllColumns(value: boolean) {\n if (value) {\n this.hiddenColumns = [];\n } else {\n this.hiddenColumns = ArrayUtil.flatten(this.columns, 'columns').map((_) => _.name);\n }\n }\n\n setColumnsVisibility() {\n this._svc.setHiddenColumns(this.hiddenColumns);\n }\n\n compareItems = (item: any) => item.name;\n\n setColumnVisibility(item: TableColumn, visible: boolean) {\n this.setChildrenVisibility(item, visible, this.hiddenColumns);\n this.setParentsVisibility(item, visible, this.hiddenColumns);\n }\n\n setChildrenVisibility = (column: TableColumn, visible: boolean, hiddenColumns: string[]) => {\n if (visible) {\n this.showColumn(column, hiddenColumns);\n } else {\n this.hideColumn(column, hiddenColumns);\n }\n if (column.columns) {\n column.columns.forEach((x) => {\n this.setChildrenVisibility(x, visible, hiddenColumns);\n });\n }\n };\n\n setParentsVisibility = (column: TableColumn, visible: boolean, hiddenColumns: string[]) => {\n if (!visible) {\n this.hideParents(column, hiddenColumns);\n } else {\n this.showParents(column, hiddenColumns);\n }\n };\n\n showParents(column: TableColumn, hiddenColumns: string[]) {\n const parent = this.findParentColumn(column, this.columns as TableColumn[]);\n if (parent && this.columnIsHidden(parent)) {\n this.showColumn(parent, hiddenColumns);\n this.showParents(parent, hiddenColumns);\n }\n }\n\n hideParents(column: TableColumn, hiddenColumns: string[]) {\n const parent = this.findParentColumn(column, this.columns as TableColumn[]);\n if (\n parent &&\n !this.columnIsHidden(parent) &&\n parent.columns &&\n parent.columns.every((_) => this.columnIsHidden(_))\n ) {\n this.hideColumn(parent, hiddenColumns);\n this.hideParents(parent, hiddenColumns);\n }\n }\n\n hideColumn(column: TableColumn, hiddenColumns: string[]) {\n hiddenColumns.push(column.name);\n }\n\n showColumn(column: TableColumn, hiddenColumns: string[]) {\n hiddenColumns.splice(hiddenColumns.indexOf(column.name), 1);\n }\n\n private findParentColumn(column: TableColumn, columns: TableColumn[]): TableColumn | null {\n return ArrayUtil.findRecursive(columns, (iterableNode) => iterableNode.columns?.indexOf(column) >= 0, 'columns');\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","@if (locale | async; as loc) {\n <div class=\"list-item padding-left-6 padding-top-2\" [class.padding-left-9]=\"childMode\">\n <teta-checkbox\n [binary]=\"true\"\n [allowNull]=\"true\"\n [ngModel]=\"allColumnsVisible()\"\n (ngModelChange)=\"setAllColumns($event)\"\n >\n {{ loc.all }}\n </teta-checkbox>\n </div>\n <div class=\"list-divider\"></div>\n <teta-scrollable class=\"padding-v-2 column column_auto\">\n <teta-tree\n [data]=\"columns\"\n [openItems]=\"openItems\"\n (openItemsChange)=\"openItems = $event\"\n [childNodeName]=\"'columns'\"\n [compareItems]=\"compareItems\"\n >\n <ng-template tetaTemplate let-item>\n <div class=\"tree__item\" style=\"align-items: unset\">\n @if (item.columns?.length > 0) {\n <teta-tree-item-toggle [item]=\"item\"></teta-tree-item-toggle>\n }\n <teta-checkbox\n style=\"flex-grow: 1\"\n [ngModel]=\"!columnIsHidden(item)\"\n (ngModelChange)=\"setColumnVisibility(item, $event)\"\n (click)=\"$event.stopPropagation()\"\n [binary]=\"true\"\n >\n {{ item.caption }}\n </teta-checkbox>\n </div>\n </ng-template>\n </teta-tree>\n </teta-scrollable>\n <teta-toolbar class=\"justify-content-end\">\n <button\n type=\"button\"\n teta-button\n [disabled]=\"allColumnsVisible() === false\"\n [palette]=\"'primary'\"\n (click)=\"setColumnsVisibility()\"\n >\n {{ loc.apply }}\n </button>\n </teta-toolbar>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n Input,\n OnInit,\n} from '@angular/core';\nimport { TableColumn } from '../../contract/table-column';\nimport { FilterState } from '../../../filter/contarct/filter-state';\nimport { Observable } from 'rxjs';\nimport { TetaLocalisation } from '../../../../locale/teta-localisation';\nimport { TableService } from '../../service/table.service';\nimport { TetaConfigService } from '../../../../locale/teta-config.service';\nimport { IDictionary } from '../../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../../common/contract/i-id-name';\nimport { ITreeData } from '../../../../common/contract/i-tree-data';\nimport { AsyncPipe } from '@angular/common';\nimport { IconComponent } from '../../../icon/icon/icon.component';\nimport { ButtonComponent } from '../../../button/button/button.component';\nimport { ToolbarComponent } from '../../../toolbar/toolbar/toolbar.component';\nimport { FilterHostComponent } from '../../../filter/filter-host/filter-host.component';\n\n@Component({\n selector: 'teta-filter-dropdown-tab',\n templateUrl: './filter-dropdown-tab.component.html',\n styleUrls: ['./filter-dropdown-tab.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FilterHostComponent, ToolbarComponent, ButtonComponent, IconComponent, AsyncPipe]\n})\nexport class FilterDropdownTabComponent<T> implements OnInit {\n @Input() columns: ITreeData[];\n @Input() column: TableColumn;\n @Input() state: FilterState;\n @Input() data: T[];\n @Input() close: () => void;\n\n locale: Observable<TetaLocalisation>;\n filterOptions: Observable<IDictionary<IIdName<any>[]>>;\n\n @HostListener('keydown.enter') enter() {\n this.applyFilter();\n }\n\n constructor(\n private _svc: TableService<T>,\n private _config: TetaConfigService,\n private _elementRef: ElementRef,\n private _cdr: ChangeDetectorRef,\n ) {\n this.locale = this._config.locale;\n this.filterOptions = this._svc.filterOptions;\n }\n\n clearFilter() {\n this._svc.clearFilter(this.column);\n this.close();\n this._cdr.markForCheck();\n }\n\n applyFilter() {\n this._svc.setState(new FilterState(this.state));\n this.close();\n this._cdr.markForCheck();\n }\n\n ngOnInit(): void {}\n}\n","@if (locale | async; as loc) {\n @if (filterOptions | async; as options) {\n <teta-filter-host\n [column]=\"column\"\n [data]=\"data\"\n [state]=\"state\"\n [filterOptions]=\"options[column.name]\"\n ></teta-filter-host>\n }\n <teta-toolbar class=\"justify-content-between\">\n <button type=\"button\" teta-button [palette]=\"'text'\" [view]=\"'ghost'\" (click)=\"clearFilter()\">\n {{ loc.clear }}\n </button>\n <button type=\"button\" teta-button [palette]=\"'primary'\" (click)=\"applyFilter()\">\n <teta-icon [name]=\"'tick'\" [palette]=\"'white'\"></teta-icon>\n {{ loc.apply }}\n </button>\n </teta-toolbar>\n}\n","import { TableColumn } from './table-column';\n\nexport class SortEvent {\n column: TableColumn;\n shiftKey: boolean;\n\n constructor(column: TableColumn, shiftKey: boolean) {\n this.column = column;\n this.shiftKey = shiftKey;\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, OnInit } from '@angular/core';\nimport { TableService } from '../../service/table.service';\nimport { TetaConfigService } from '../../../../locale/teta-config.service';\nimport { TableColumn } from '../../contract/table-column';\nimport { Observable } from 'rxjs';\nimport { TetaLocalisation } from '../../../../locale/teta-localisation';\nimport { SortParam } from '../../../filter/contarct/sort-param';\nimport { StateUtil } from '../../util/state-util';\nimport { FilterState } from '../../../filter/contarct/filter-state';\nimport { SortEvent } from '../../contract/sort-event';\nimport { ITreeData } from '../../../../common/contract/i-tree-data';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'teta-main-dropdown-tab',\n templateUrl: './main-dropdown-tab.component.html',\n styleUrls: ['./main-dropdown-tab.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe]\n})\nexport class MainDropdownTabComponent<T> implements OnInit {\n @Input() columns: ITreeData[];\n @Input() column: TableColumn;\n @Input() state: FilterState;\n @Input() data: T[];\n @Input() close: () => void;\n @Input() headCellElementRef: ElementRef;\n\n locale: Observable<TetaLocalisation>;\n\n constructor(\n private _svc: TableService<T>,\n private _config: TetaConfigService,\n private _elementRef: ElementRef,\n private _cdr: ChangeDetectorRef,\n ) {\n this.locale = this._config.locale;\n }\n\n get sortParam(): SortParam {\n return StateUtil.getSortState(this.state, this.column);\n }\n\n get filtered() {\n return StateUtil.isColumnFiltered(this.state, this.column);\n }\n\n get parent() {\n return this._svc.getColumnParent(this.column);\n }\n\n pinColumn() {\n this._svc.pinColumn(this.column);\n }\n\n sortAsc(event: MouseEvent) {\n this._svc.sortAsc(new SortEvent(this.column, event.shiftKey));\n }\n\n sortDesc(event: MouseEvent) {\n this._svc.sortDesc(new SortEvent(this.column, event.shiftKey));\n }\n\n clearSort(): void {\n this._svc.clearSort(this.column);\n }\n\n clearAllSort(): void {\n this._svc.clearAllSort();\n }\n\n hasFilteredColumns() {\n return StateUtil.hasFilteredColumns(this.state);\n }\n\n hasSortedColumns() {\n return StateUtil.hasSortedColumns(this.state);\n }\n\n restoreDefaultColumns() {\n this._svc.restoreDefaultColumns();\n }\n\n clearFilter() {\n this._svc.clearFilter(this.column);\n this.close();\n this._cdr.markForCheck();\n }\n\n clearAllFilters() {\n this._svc.clearAllFilters();\n this.close();\n this._cdr.markForCheck();\n }\n\n autosizeColumn() {\n this._svc.autosizeColumn(this.column, this.headCellElementRef.nativeElement);\n }\n\n autosizeAllColumns() {\n this._svc.autosizeAllColumns(this.headCellElementRef.nativeElement);\n }\n\n ngOnInit(): void {}\n}\n","@if (locale | async; as loc) {\n <div class=\"list column_auto\">\n @if (!parent) {\n <div class=\"list-item list-item_interactive\" (click)=\"pinColumn()\">\n {{ column.locked ? loc.unpin : loc.pin }}\n </div>\n <div class=\"list-divider\"></div>\n }\n @if (column.sortable) {\n <div class=\"list-item list-item_interactive\" (click)=\"sortAsc($event)\">\n {{ loc.sortAsc }}\n </div>\n <div class=\"list-item list-item_interactive\" (click)=\"sortDesc($event)\">\n {{ loc.sortDesc }}\n </div>\n @if (hasSortedColumns()) {\n @if (sortParam) {\n <div class=\"list-item list-item_interactive\" (click)=\"clearSort()\">\n {{ loc.clearSort }}\n </div>\n }\n <div class=\"list-item list-item_interactive\" (click)=\"clearAllSort()\">\n {{ loc.clearAllSort }}\n </div>\n <div class=\"list-divider\"></div>\n }\n }\n @if (hasFilteredColumns()) {\n @if (filtered) {\n <div class=\"list-item list-item_interactive\" (click)=\"clearFilter()\">\n {{ loc.clearFilter }}\n </div>\n }\n <div class=\"list-item list-item_interactive\" (click)=\"clearAllFilters()\">\n {{ loc.clearAllFilters }}\n </div>\n <div class=\"list-divider\"></div>\n }\n <div class=\"list-item list-item_interactive\" (click)=\"autosizeColumn()\">\n {{ loc.autosizeColumn }}\n </div>\n <div class=\"list-item list-item_interactive\" (click)=\"autosizeAllColumns()\">\n {{ loc.autosizeAll }}\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"list-item list-item_interactive\" (click)=\"restoreDefaultColumns()\">\n {{ loc.resetColumnsSize }}\n </div>\n </div>\n}\n","import { Directive, EventEmitter, HostBinding, HostListener, Inject, Input, Output } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n@Directive({\n selector: '[tetaResizeDrag]',\n standalone: true,\n})\nexport class ResizeDragDirective {\n @Input() tetaResizeDrag: 'horizontal' | 'vertical' = 'vertical';\n\n @Output() resizeStart = new EventEmitter<MouseEvent>();\n @Output() resizeProcess = new EventEmitter<MouseEvent>();\n @Output() resizeEnd = new EventEmitter<MouseEvent>();\n\n @HostBinding('class.resize-drag_active')\n private _active: boolean;\n\n @HostBinding('class.resize-drag_horizontal')\n private get horizontal() {\n return this.tetaResizeDrag === 'horizontal';\n }\n\n @HostBinding('class.resize-drag_vertical')\n private get vertical() {\n return this.tetaResizeDrag === 'vertical';\n }\n\n constructor(@Inject(DOCUMENT) private _document: any) {}\n\n @HostListener('mousedown', ['$event']) mouseDown(event: MouseEvent) {\n this.resizeStart.emit(event);\n this.addListeners();\n }\n\n private addListeners() {\n this._active = true;\n this._document.addEventListener('mouseup', this.handleMouseUp);\n this._document.addEventListener('mousemove', this.handleMouseMove);\n }\n\n private removeListeners() {\n this._active = false;\n this._document.removeEventListener('mouseup', this.handleMouseUp);\n this._document.removeEventListener('mousemove', this.handleMouseMove);\n }\n\n private handleMouseUp = (event: MouseEvent) => {\n this.resizeEnd.emit(event);\n this.removeListeners();\n };\n\n private handleMouseMove = (event: MouseEvent) => {\n this.resizeProcess.emit(event);\n };\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaTabContent]',\n standalone: true,\n})\nexport class TabContentDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaTabTitle]',\n standalone: true,\n})\nexport class TabTitleDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { AfterContentChecked, ChangeDetectionStrategy, Component, ContentChild, Input } from '@angular/core';\nimport { TabContentDirective } from '../tab-content.directive';\nimport { TabTitleDirective } from '../tab-title.directive';\n\nlet nextId = 0;\n\n@Component({\n selector: 'teta-tab',\n template: '',\n styleUrls: ['./tab.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class TabComponent implements AfterContentChecked {\n /**\n * Unique tab identifier. Must be unique for the entire document for proper accessibility support.\n */\n @Input() id = `teta-tab-${nextId++}`;\n /**\n * Simple (string only) title. Use the \"ItskTabTitleDirective\" directive for more complex use-cases.\n */\n @Input() title: string;\n /**\n * Allows toggling disabled state of a given state. Disabled tabs can't be selected.\n */\n @Input() disabled = false;\n\n @ContentChild(TabTitleDirective, { static: false })\n titleTpl: TabTitleDirective;\n @ContentChild(TabContentDirective, { static: false })\n contentTpl: TabContentDirective;\n // titleTpl: TabTitleDirective | null;\n // contentTpl: TabContentDirective | null;\n\n ngAfterContentChecked(): void {\n // this.titleTpl = this.titleTemplates.first;\n // this.contentTpl = this.contentTemplates.first;\n }\n}\n","import {\n AfterContentChecked,\n Component,\n ContentChildren,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n QueryList,\n} from '@angular/core';\nimport { TabComponent } from '../tab/tab.component';\nimport { NgTemplateOutlet } from '@angular/common';\n\nexport interface ITabChangeEvent {\n activeId: string | null;\n nextId: string;\n preventDefault: () => void;\n}\n\n@Component({\n selector: 'teta-tabs',\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n imports: [NgTemplateOutlet]\n})\nexport class TabsComponent implements AfterContentChecked {\n @HostBinding('class.tabs') classTabs = true;\n @HostBinding('class.tabs_vertical') get verticalClassTabs() {\n return this.direction === 'vertical';\n }\n /**\n * An identifier of an initially selected (active) tab. Use the \"select\" method to switch a tab programmatically.\n */\n @Input() activeId: string | null;\n\n /**\n * Tabs direction\n */\n @Input() direction: 'horizontal' | 'vertical' = 'horizontal';\n\n /**\n * Tabs size\n */\n @Input() size: 's' | 'm' = 'm';\n\n /**\n * Whether the closed tabs should be hidden without destroying them\n */\n @Input() destroyOnHide = true;\n\n /**\n * A tab change event fired right before the tab selection happens. See NgbTabChangeEvent for payload details\n */\n @Output() tabChange = new EventEmitter<ITabChangeEvent>();\n\n @ContentChildren(TabComponent) tabs: QueryList<TabComponent>;\n\n constructor() {}\n\n /**\n * Selects the tab with the given id and shows its associated pane.\n * Any other tab that was previously selected becomes unselected and its associated pane is hidden.\n */\n select(tabId: string): void {\n const selectedTab = this._getTabById(tabId);\n if (selectedTab && !selectedTab.disabled && this.activeId !== selectedTab.id) {\n let defaultPrevented = false;\n\n this.tabChange.emit({\n activeId: this.activeId,\n nextId: selectedTab.id,\n preventDefault: () => {\n defaultPrevented = true;\n },\n });\n\n if (!defaultPrevented) {\n this.activeId = selectedTab.id;\n }\n }\n }\n\n ngAfterContentChecked(): void {\n const activeTab = this._getTabById(this.activeId);\n this.activeId = activeTab ? activeTab.id : this.tabs.length ? this.tabs.first.id : null;\n }\n\n private _getTabById(id: string | null): TabComponent | null {\n const tabsWithId: TabComponent[] = this.tabs.filter((tab) => tab.id === id);\n return tabsWithId.length ? tabsWithId[0] : null;\n }\n}\n","<div role=\"tablist\" class=\"tabs-head\" [class.tabs-head_small]=\"size === 's'\">\n @for (tab of tabs; track tab) {\n <button\n type=\"button\"\n class=\"tabs-head-item\"\n (click)=\"select(tab.id)\"\n [class.tabs-head-item_active]=\"tab.id === activeId\"\n [disabled]=\"tab.disabled\"\n >\n <span\n [id]=\"tab.id\"\n class=\"tabs-title\"\n role=\"tab\"\n [attr.tabindex]=\"tab.disabled ? '-1' : undefined\"\n [attr.aria-controls]=\"!destroyOnHide || tab.id === activeId ? tab.id + '-panel' : null\"\n [attr.aria-expanded]=\"tab.id === activeId\"\n [attr.aria-disabled]=\"tab.disabled\"\n >\n {{ tab.title }}\n <ng-template [ngTemplateOutlet]=\"tab.titleTpl?.template\"></ng-template>\n </span>\n </button>\n }\n</div>\n<div class=\"tabs-content\">\n @for (tab of tabs; track tab) {\n @if (!destroyOnHide || tab.id === activeId) {\n <ng-template [ngTemplateOutlet]=\"tab.contentTpl?.template\"></ng-template>\n }\n }\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { ITreeData } from '../../../common/contract/i-tree-data';\nimport { TetaConfigService } from '../../../locale/teta-config.service';\nimport { FilterState } from '../../filter/contarct/filter-state';\nimport { HeadDropdownTab } from '../contract/head-dropdown-tab';\nimport { TableColumn } from '../contract/table-column';\nimport { TableService } from '../service/table.service';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TabContentDirective } from '../../tabs/tab-content.directive';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { TabTitleDirective } from '../../tabs/tab-title.directive';\nimport { TabComponent } from '../../tabs/tab/tab.component';\nimport { TabsComponent } from '../../tabs/tabs/tabs.component';\n\n@Component({\n selector: 'teta-head-cell-dropdown',\n templateUrl: './head-cell-dropdown.component.html',\n styleUrls: ['./head-cell-dropdown.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TabsComponent, TabComponent, TabTitleDirective, IconComponent, TabContentDirective, NgTemplateOutlet]\n})\nexport class HeadCellDropdownComponent<T> {\n @Input() columns: ITreeData[];\n @Input() column: TableColumn;\n @Input() state: FilterState;\n @Input() data: T[];\n @Input() tabTemplates: HeadDropdownTab[];\n @Input() dropDownOpen: boolean;\n @Output() dropDownOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor(\n private _svc: TableService<T>,\n private _config: TetaConfigService,\n private _cdr: ChangeDetectorRef,\n ) {}\n\n closeDropdown = () => {\n this.dropDownOpen = false;\n this.dropDownOpenChange.emit(false);\n };\n\n trackIndex(index) {\n return index;\n }\n}\n","@if (dropDownOpen) {\n <teta-tabs class=\"column_auto\">\n @for (tab of tabTemplates; track trackIndex($index)) {\n @if (tab.showTab(column)) {\n <teta-tab>\n <ng-template tetaTabTitle>\n @if (tab.icon) {\n <teta-icon [name]=\"tab.icon\" [palette]=\"'text'\"></teta-icon>\n }\n </ng-template>\n <ng-template tetaTabContent>\n <ng-container\n *ngTemplateOutlet=\"\n tab.template;\n context: {\n column: column,\n columns: columns,\n data: data,\n state: state,\n close: closeDropdown,\n }\n \"\n ></ng-container>\n </ng-template>\n </teta-tab>\n }\n }\n </teta-tabs>\n}\n","import { Component, HostBinding } from '@angular/core';\nimport { TableColumn } from '../contract/table-column';\n\n@Component({\n template: '',\n standalone: false\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport abstract class HeadCellComponentBase<T> {\n @HostBinding('class.table-head__cell__component')\n abstract column: TableColumn;\n abstract columns: TableColumn[];\n abstract data: T[];\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core';\nimport { HeadCellComponentBase } from '../../base/head-cell-component-base';\nimport { TableColumn } from '../../contract/table-column';\nimport { HintDirective } from '../../../../directive/hint/hint.directive';\n\n@Component({\n selector: 'teta-default-head-cell',\n templateUrl: './default-head-cell.component.html',\n styleUrls: ['./default-head-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [HintDirective]\n})\nexport class DefaultHeadCellComponent<T> extends HeadCellComponentBase<T>{\n private _column: TableColumn;\n private _columns: TableColumn[];\n private _data: T[];\n\n @Input()\n set column(val: TableColumn) {\n this._column = val;\n this._cdr.detectChanges();\n }\n\n get column(): TableColumn {\n return this._column;\n }\n\n @Input()\n set columns(val: TableColumn[]) {\n this._columns = val;\n this._cdr.detectChanges();\n }\n\n get columns(): TableColumn[] {\n return this._columns;\n }\n\n @Input()\n set data(data: T[]) {\n this._data = data;\n this._cdr.detectChanges();\n }\n\n get data(): T[] {\n return this._data;\n }\n\n constructor(private _cdr: ChangeDetectorRef) {\n super();\n }\n\n getHint(){\n const hintText = this.column.hint || this.column.caption;\n return `${hintText}${this.column.unit ? `, ${this.column.unit}` : ''}`;\n }\n}\n","<div class=\"column column_auto align-start justify-content-center\" [tetaHint]=\"getHint()\">\n <div class=\"table-head__cell__text\">\n {{ column.caption }}\n </div>\n @if (column.unit) {\n <div class=\"table-head__cell__text font-caption color-text-70\">[{{ column.unit }}]</div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, ComponentRef, Input, OnInit, ViewContainerRef } from '@angular/core';\nimport { HeadCellComponentBase } from '../base/head-cell-component-base';\nimport { TableColumn } from '../contract/table-column';\nimport { DefaultHeadCellComponent } from '../default/default-head-cell/default-head-cell.component';\n\n@Component({\n selector: 'teta-head-cell-host',\n template: '',\n styleUrls: ['./head-cell-host.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class HeadCellHostComponent<T> implements OnInit {\n private _column: TableColumn;\n private _columns: TableColumn[];\n private _data: T[];\n\n private componentRef: ComponentRef<HeadCellComponentBase<T>>;\n private init: boolean;\n\n @Input()\n set column(column: TableColumn) {\n this._column = column;\n if (this.init) {\n this.componentRef.instance.column = this._column;\n }\n }\n\n get column(): TableColumn {\n return this._column;\n }\n\n @Input()\n set columns(columns: TableColumn[]) {\n this._columns = columns;\n if (this.init) {\n this.componentRef.instance.columns = this._columns;\n }\n }\n\n get columns(): TableColumn[] {\n return this._columns;\n }\n\n @Input()\n set data(data: T[]) {\n this._data = data;\n if (this.init) {\n this.componentRef.instance.data = this._data;\n }\n }\n\n get data(): T[] {\n return this._data;\n }\n\n constructor(private viewContainerRef: ViewContainerRef) {}\n\n ngOnInit(): void {\n if (!HeadCellComponentBase.isPrototypeOf(this.column.headCellComponent)) {\n this.column.headCellComponent = DefaultHeadCellComponent;\n }\n this.componentRef = this.viewContainerRef.createComponent<HeadCellComponentBase<T>>(this.column.headCellComponent);\n this.componentRef.instance.column = this.column;\n this.componentRef.instance.columns = this.columns;\n this.componentRef.instance.data = this.data;\n this.init = true;\n }\n}\n","import {\n ApplicationRef,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { TableColumn } from '../contract/table-column';\nimport { ColumnResizeEvent } from '../contract/column-resize-event';\nimport { FilterState } from '../../filter/contarct/filter-state';\nimport { TableService } from '../service/table.service';\nimport { map } from 'rxjs/operators';\nimport { SortParam } from '../../filter/contarct/sort-param';\nimport { StateUtil } from '../util/state-util';\nimport { VerticalAlign } from '../../../common/enum/vertical-align.enum';\nimport { Align } from '../../../common/enum/align.enum';\nimport { combineLatest, Observable } from 'rxjs';\nimport { HeadDropdownTab } from '../contract/head-dropdown-tab';\nimport { VisibilityDropdownTabComponent } from '../table-head/visibility-dropdown-tab/visibility-dropdown-tab.component';\nimport { FilterDropdownTabComponent } from '../table-head/filter-dropdown-tab/filter-dropdown-tab.component';\nimport { MainDropdownTabComponent } from '../table-head/main-dropdown-tab/main-dropdown-tab.component';\nimport { ResizeDragDirective } from '../../../directive/resize-drag/resize-drag.directive';\nimport { DropdownContentDirective } from '../../dropdown/dropdown-content.directive';\nimport { HeadCellDropdownComponent } from '../head-cell-dropdown/head-cell-dropdown.component';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { HeadCellHostComponent } from '../head-cell-host/head-cell-host.component';\nimport { NgClass, AsyncPipe } from '@angular/common';\nimport { DropdownHeadDirective } from '../../dropdown/dropdown-head.directive';\nimport { DropdownComponent } from '../../dropdown/dropdown/dropdown.component';\n\n@Component({\n selector: 'teta-head-cell',\n templateUrl: './head-cell.component.html',\n styleUrls: ['./head-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n DropdownComponent,\n DropdownHeadDirective,\n NgClass,\n HeadCellHostComponent,\n IconComponent,\n HeadCellDropdownComponent,\n DropdownContentDirective,\n ResizeDragDirective,\n MainDropdownTabComponent,\n FilterDropdownTabComponent,\n VisibilityDropdownTabComponent,\n AsyncPipe,\n ]\n})\nexport class HeadCellComponent<T> implements OnInit, OnDestroy {\n @Input() column: TableColumn;\n @Input() showHeadCellMenu: boolean;\n @Input() data: T[];\n\n verticalAlign = VerticalAlign;\n align = Align;\n state: Observable<FilterState>;\n columns: Observable<TableColumn[]>;\n filtered: Observable<boolean>;\n sortParam: Observable<SortParam>;\n iconName: Observable<string>;\n @HostBinding('class.table-head__cell_active')\n dropDownOpen = false;\n showDrag: 'left' | 'right' | null = null;\n private rect: any;\n\n private _alive = true;\n private _startPosition: number;\n\n @ViewChild('mainTemplate', { static: true }) mainTemplate: TemplateRef<any>;\n @ViewChild('filterTemplate', { static: true }) filterTemplate: TemplateRef<any>;\n @ViewChild('columnsTemplate', { static: true }) columnsTemplate: TemplateRef<any>;\n\n get defaultTemplates(): HeadDropdownTab[] {\n return [\n {\n icon: 'menu',\n template: this.mainTemplate,\n order: 10,\n showTab: () => true,\n },\n {\n icon: 'filter',\n template: this.filterTemplate,\n order: 20,\n showTab: (column) => column.filterable,\n },\n {\n icon: 'eye',\n template: this.columnsTemplate,\n order: 30,\n showTab: () => true,\n },\n ];\n }\n\n get elementRef() {\n return this._elementRef;\n }\n\n get tabTemplates() {\n if (this.column?.headDropdownConfig && this.column.headDropdownConfig.tabs?.length > 0) {\n if (this.column.headDropdownConfig.strategy === 'replace') {\n return this.column.headDropdownConfig.tabs;\n }\n return [...this.defaultTemplates, ...this.column.headDropdownConfig.tabs].sort((a, b) => a.order - b.order);\n }\n\n return this.defaultTemplates;\n }\n\n private observer: IntersectionObserver;\n\n constructor(\n private _svc: TableService<T>,\n private _app: ApplicationRef,\n private _elementRef: ElementRef,\n private _cdr: ChangeDetectorRef,\n ) {}\n\n dragstart(event: DragEvent): void {\n if (event && event.dataTransfer) {\n event.dataTransfer.setData('text', 'move');\n }\n this._svc.dragStart(this.column);\n }\n\n @HostListener('dragenter', ['$event']) dragenter(): void {\n this.rect = this._elementRef.nativeElement.getBoundingClientRect();\n }\n\n @HostListener('dragover', ['$event']) allowDrop(event: DragEvent): void {\n event.preventDefault();\n if (this.rect && this._svc.dragSource) {\n this.showDrag = event.clientX >= this.rect.x + this.rect.width / 2 ? 'right' : 'left';\n }\n }\n\n @HostListener('dragleave', ['$event']) dragleave(event: DragEvent): void {\n event.preventDefault();\n this.showDrag = null;\n }\n\n @HostListener('dragend', ['$event']) dragend(): void {\n this.showDrag = null;\n }\n\n @HostListener('drop', ['$event']) drop(event: DragEvent): void {\n const move = event.dataTransfer && event.dataTransfer.getData('text');\n if (move === 'move') {\n this._svc.reorderColumn(this.column, this.showDrag === 'left');\n }\n this.showDrag = null;\n }\n\n ngOnInit(): void {\n this.columns = this._svc.columns;\n this.state = this._svc.state;\n this.sortParam = this.state.pipe(map((_) => StateUtil.getSortState(_, this.column)));\n this.filtered = this.state.pipe(map((_) => StateUtil.isColumnFiltered(_, this.column)));\n this.iconName = combineLatest([this.sortParam, this.filtered]).pipe(\n map((data: [SortParam, boolean]) => {\n const [sortParam, filtered] = data;\n if (sortParam && filtered) {\n return sortParam.asc ? 'filterSortUp' : 'filterSortDown';\n }\n if (sortParam) {\n return sortParam.asc ? 'arrowUp' : 'arrowDown';\n }\n if (filtered) {\n return 'filter';\n }\n return '';\n }),\n );\n\n this.observer = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]) => {\n entries.forEach((entry) => {\n if (!entry.isIntersecting && this.dropDownOpen) {\n this.dropDownOpen = false;\n this._cdr.detectChanges();\n }\n });\n },\n {\n root: this._svc.getTableElement(this._elementRef.nativeElement),\n threshold: [1],\n },\n );\n this.observer.observe(this._elementRef.nativeElement);\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n this.observer.unobserve(this._elementRef.nativeElement);\n this.observer.disconnect();\n }\n\n resizeStart(): void {\n const rect = this._elementRef.nativeElement.getBoundingClientRect();\n this._startPosition = rect.x;\n this._svc.lockPreviousColumns(this.column, this._elementRef.nativeElement);\n }\n\n resizeProcess(event: MouseEvent): void {\n if (this._startPosition && event.pageX > 0) {\n const position = this._startPosition;\n requestAnimationFrame(() => {\n this._svc.resizeColumn(new ColumnResizeEvent(this.column, event.pageX - position));\n this._app.tick();\n });\n }\n }\n\n resizeEnd() {\n this._startPosition = null;\n }\n}\n","<div class=\"row row_auto\">\n <teta-dropdown\n [autoCloseIgnore]=\"['enter', 'inside']\"\n [verticalAlign]=\"verticalAlign.auto\"\n [appendToBody]=\"true\"\n [(open)]=\"dropDownOpen\"\n [align]=\"align.auto\"\n (click)=\"$event.preventDefault()\"\n [class.table-head__cell__menu_open]=\"dropDownOpen\"\n class=\"column column_auto justify-content-center\"\n >\n <div\n tetaDropdownHead\n draggable=\"true\"\n class=\"table-head__cell__wrapper\"\n (dragstart)=\"dragstart($event)\"\n [ngClass]=\"column.headCellClass\"\n >\n <teta-head-cell-host [column]=\"column\" [columns]=\"columns | async\" [data]=\"data\"></teta-head-cell-host>\n @if (iconName | async; as icon) {\n <teta-icon [palette]=\"'text'\" [name]=\"icon\"></teta-icon>\n }\n </div>\n @if (showHeadCellMenu) {\n <teta-head-cell-dropdown\n tetaDropdownContent\n [tabTemplates]=\"tabTemplates\"\n [data]=\"data\"\n [column]=\"column\"\n [columns]=\"columns | async\"\n [state]=\"state | async\"\n [(dropDownOpen)]=\"dropDownOpen\"\n ></teta-head-cell-dropdown>\n }\n </teta-dropdown>\n @if (showDrag) {\n <div\n class=\"drop-area\"\n draggable=\"false\"\n [class.drop-area_left]=\"showDrag === 'left'\"\n [class.drop-area_right]=\"showDrag === 'right'\"\n ></div>\n }\n</div>\n<div\n class=\"table-head__cell__resize\"\n draggable=\"false\"\n (dragstart)=\"$event.preventDefault(); $event.stopPropagation()\"\n (drag)=\"$event.preventDefault(); $event.stopPropagation()\"\n [tetaResizeDrag]=\"'vertical'\"\n (resizeStart)=\"resizeStart()\"\n (resizeProcess)=\"resizeProcess($event)\"\n (resizeEnd)=\"resizeEnd()\"\n>\n <div class=\"table-head__cell__resize_drag\"></div>\n</div>\n<ng-template\n #mainTemplate\n let-column=\"column\"\n let-columns=\"columns\"\n let-data=\"data\"\n let-state=\"state\"\n let-close=\"close\"\n>\n <teta-main-dropdown-tab\n [column]=\"column\"\n [state]=\"state\"\n [close]=\"close\"\n [headCellElementRef]=\"elementRef\"\n ></teta-main-dropdown-tab>\n</ng-template>\n<ng-template\n #filterTemplate\n let-column=\"column\"\n let-columns=\"columns\"\n let-data=\"data\"\n let-state=\"state\"\n let-close=\"close\"\n>\n <teta-filter-dropdown-tab [column]=\"column\" [state]=\"state\" [close]=\"close\" [data]=\"data\"></teta-filter-dropdown-tab>\n</ng-template>\n<ng-template\n #columnsTemplate\n let-column=\"column\"\n let-columns=\"columns\"\n let-data=\"data\"\n let-state=\"state\"\n let-close=\"close\"\n>\n <teta-visibility-dropdown-tab\n [column]=\"column\"\n [columns]=\"columns\"\n [state]=\"state\"\n [close]=\"close\"\n [data]=\"data\"\n ></teta-visibility-dropdown-tab>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { TableColumn } from '../contract/table-column';\nimport { TableUtil } from '../util/table-util';\nimport { TableService } from '../service/table.service';\nimport { takeWhile } from 'rxjs/operators';\nimport { ArrayUtil } from '../../../common/util/array-util';\nimport { HeadCellComponent } from '../head-cell/head-cell.component';\n\n@Component({\n selector: 'teta-table-head-group',\n templateUrl: './table-head-group.component.html',\n styleUrls: ['./table-head-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [HeadCellComponent]\n})\nexport class TableHeadGroupComponent<T> implements OnInit, OnDestroy {\n @Input() showHeadCellMenu: boolean;\n @Input() data: T[];\n\n @Input()\n set column(column: TableColumn) {\n this._column = column;\n }\n\n get column(): TableColumn {\n return this._column;\n }\n\n @HostBinding('style.flex-grow') get flexGrow() {\n if (this.column?.columns?.length > 0) {\n const flat = ArrayUtil.flatten(this.column?.columns, 'columns', true).filter(\n (_) => this._hiddenColumns.indexOf(_.name) < 0,\n );\n return flat?.reduce((prev, curr) => prev + curr.flex, 0);\n }\n return this.column.flex;\n }\n\n @HostBinding('style.min-width.px')\n @HostBinding('style.flex-basis.px')\n get flexBasis() {\n if (this.column?.columns?.length > 0) {\n const flat = ArrayUtil.flatten(this.column?.columns, 'columns', true).filter(\n (_) => this._hiddenColumns.indexOf(_.name) < 0,\n );\n return flat?.reduce((prev, curr) => prev + curr.width, 0);\n }\n return this.column.width;\n }\n\n private _alive = true;\n private _column: TableColumn;\n private _hiddenColumns: string[];\n\n private get _leaves() {\n return TableUtil.getColumnLeaves(this._column)?.filter((_) => this._hiddenColumns.indexOf(_.name) < 0);\n }\n\n constructor(\n private _svc: TableService<T>,\n private _cdr: ChangeDetectorRef,\n ) {\n this._svc.hiddenColumns.pipe(takeWhile((_) => this._alive)).subscribe((_) => {\n this._hiddenColumns = _;\n this._cdr.markForCheck();\n });\n }\n\n columnIsHidden(column: TableColumn) {\n return this._svc.columnIsHidden(column);\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","@if (column.columns && column.columns.length > 0) {\n <div class=\"table-head__group__container\">\n <div class=\"table-head__group__caption\">\n {{ column.caption }}\n </div>\n <div class=\"table-head__group__children\">\n @for (col of column.columns; track col) {\n @if (!columnIsHidden(col)) {\n <teta-table-head-group\n class=\"table-head__group\"\n [data]=\"data\"\n [showHeadCellMenu]=\"showHeadCellMenu\"\n [column]=\"col\"\n ></teta-table-head-group>\n }\n }\n </div>\n </div>\n}\n@if (!column.columns || column.columns.length === 0) {\n @if (!columnIsHidden(column)) {\n <teta-head-cell\n class=\"table-head__cell\"\n [data]=\"data\"\n [showHeadCellMenu]=\"showHeadCellMenu\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n ></teta-head-cell>\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, OnDestroy, OnInit } from '@angular/core';\nimport { TableService } from '../service/table.service';\nimport { takeWhile } from 'rxjs/operators';\nimport { FormsModule } from '@angular/forms';\nimport { CheckboxComponent } from '../../checkbox/checkbox/checkbox.component';\n\n@Component({\n selector: 'teta-selection-head-cell',\n templateUrl: './selection-head-cell.component.html',\n styleUrls: ['./selection-head-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CheckboxComponent, FormsModule]\n})\nexport class SelectionHeadCellComponent<T> implements OnInit, OnDestroy {\n @HostBinding('class.table-head__group') private readonly tableCellClass = true;\n\n private _alive = true;\n\n constructor(\n private _svc: TableService<T>,\n private _cdr: ChangeDetectorRef,\n ) {}\n\n selectAll(value: boolean) {\n if (value) {\n this._svc.selectAll();\n } else {\n this._svc.deselectAll();\n }\n }\n\n allSelected() {\n return this._svc.allRowsSelected();\n }\n\n ngOnInit(): void {\n this._svc.selectedRows.pipe(takeWhile((_) => this._alive)).subscribe((_) => {\n this._cdr.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","<teta-checkbox\n [binary]=\"true\"\n [allowNull]=\"true\"\n [noLabel]=\"true\"\n [ngModel]=\"allSelected()\"\n (ngModelChange)=\"selectAll($event)\"\n></teta-checkbox>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { combineLatest } from 'rxjs';\nimport { takeWhile } from 'rxjs/operators';\n\nimport { ArrayUtil } from '../../../common/util/array-util';\nimport { FilterState } from '../../filter/contarct/filter-state';\nimport { TableColumn } from '../contract/table-column';\nimport { SelectType } from '../enum/select-type.enum';\nimport { TableService } from '../service/table.service';\nimport { TableHeadGroupComponent } from '../table-head-group/table-head-group.component';\nimport { SelectionHeadCellComponent } from '../selection-head-cell/selection-head-cell.component';\n\n@Component({\n selector: 'teta-table-head',\n templateUrl: './table-head.component.html',\n styleUrls: ['./table-head.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SelectionHeadCellComponent, TableHeadGroupComponent]\n})\nexport class TableHeadComponent<T> implements OnInit, OnDestroy {\n @Input() selectType: SelectType;\n @Input() showHeadCellMenu: boolean;\n @HostBinding('class.table-head') private readonly tableHeadClass = true;\n\n state: FilterState;\n selectTypeEnum = SelectType;\n lockedFlex: number;\n lockedWidth: number;\n\n private _alive = true;\n private _columns: TableColumn[] = [];\n private _hiddenColumns: string[] = [];\n\n set columns(columns: TableColumn[]) {\n this._columns = columns;\n this._cdr.markForCheck();\n }\n\n get columns(): TableColumn[] {\n return this._columns;\n }\n\n get locked(): TableColumn[] {\n return this._columns.filter((_) => _.locked === true && this._hiddenColumns.indexOf(_.name) < 0);\n }\n\n get unlocked(): TableColumn[] {\n return this._columns.filter((_) => _.locked === false && this._hiddenColumns.indexOf(_.name) < 0);\n }\n\n data: T[];\n\n constructor(\n private _svc: TableService<T>,\n private _cdr: ChangeDetectorRef,\n ) {}\n\n track(index: number, item: TableColumn): any {\n return item.name;\n }\n\n ngOnInit(): void {\n combineLatest([this._svc.columns, this._svc.hiddenColumns])\n .pipe(takeWhile((_) => this._alive))\n .subscribe((values: [TableColumn[], string[]]) => {\n const [columns, hiddenColumns] = values;\n this._hiddenColumns = hiddenColumns;\n this.columns = columns;\n const locked = ArrayUtil.flatten(columns, 'columns', true).filter(\n (_) => this._hiddenColumns.indexOf(_.name) < 0 && _.locked,\n );\n const startWidth = this.selectType === SelectType.checkBox ? 28 : 0;\n this.lockedFlex = locked.reduce((prev: number, curr: TableColumn) => prev + curr.flex, 0);\n this.lockedWidth = locked.reduce((prev: number, curr: TableColumn) => prev + curr.width, startWidth);\n this._cdr.markForCheck();\n });\n\n this._svc.state.pipe(takeWhile((_) => this._alive)).subscribe((_) => {\n this.state = _;\n this._cdr.markForCheck();\n });\n\n this._svc.displayData.pipe(takeWhile((_) => this._alive)).subscribe((_) => {\n this.data = _.map((_) => _.data);\n this._cdr.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","@if (locked?.length) {\n <div\n class=\"table-head_locked\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\"\n >\n @if (selectType === selectTypeEnum.checkBox) {\n <teta-selection-head-cell style=\"width: 28px\"></teta-selection-head-cell>\n }\n @for (column of locked; track track($index, column)) {\n <teta-table-head-group\n class=\"table-head__group\"\n [data]=\"data\"\n [showHeadCellMenu]=\"showHeadCellMenu\"\n [column]=\"column\"\n ></teta-table-head-group>\n }\n </div>\n}\n@if (unlocked?.length) {\n @if (selectType === selectTypeEnum.checkBox && locked?.length < 1) {\n <teta-selection-head-cell style=\"width: 28px\"></teta-selection-head-cell>\n }\n @for (column of unlocked; track track($index, column)) {\n <teta-table-head-group\n class=\"table-head__group\"\n [data]=\"data\"\n [showHeadCellMenu]=\"showHeadCellMenu\"\n [column]=\"column\"\n ></teta-table-head-group>\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n input,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n Type,\n ViewChild,\n} from '@angular/core';\nimport { filter, takeWhile } from 'rxjs/operators';\n\nimport { IDictionary } from '../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { Align } from '../../../common/enum/align.enum';\nimport { VerticalAlign } from '../../../common/enum/vertical-align.enum';\nimport { FilterState } from '../../filter/contarct/filter-state';\nimport { FilterType } from '../../filter/enum/filter-type.enum';\nimport { DetailComponentBase } from '../base/detail-component-base';\nimport { ICellCoordinates } from '../contract/i-cell-coordinates';\nimport { ICellEvent } from '../contract/i-cell-event';\nimport { ICellInstance, ICellInstanceEvent } from '../contract/i-cell-instance';\nimport { TableColumn } from '../contract/table-column';\nimport { TableRow } from '../contract/table-row';\nimport { EditEvent } from '../enum/edit-event.enum';\nimport { EditType } from '../enum/edit-type.enum';\nimport { SelectType } from '../enum/select-type.enum';\nimport { TableService } from '../service/table.service';\nimport { TableBodyComponent } from '../table-body/table-body.component';\nimport { ContextMenuDirective } from '../../../directive/context-menu/context-menu.directive';\nimport { TableHeadComponent } from '../table-head/table-head.component';\n\n@Component({\n selector: 'teta-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TableService],\n imports: [TableHeadComponent, ContextMenuDirective, TableBodyComponent]\n})\nexport class TableComponent<T> implements OnInit, OnDestroy, AfterViewInit, OnChanges {\n @Input() data: T[] = [];\n @Input() columns: TableColumn[] = [];\n @Input() dict: IDictionary<IIdName<any>[]>;\n @Input() filterOptions: IDictionary<IIdName<any>[]>;\n\n @Input()\n set state(state: FilterState) {\n this._state = state;\n }\n\n @Input() cookieName: string;\n @Input() virtual: boolean;\n @Input() detailComponent: Type<DetailComponentBase<T>>;\n @Input() activeRow: T;\n @Input() selectedRows: T[];\n @Input() selectType: SelectType = SelectType.mouse;\n @Input() aggregate: boolean;\n @Input() trackRow: (index: number, row: T) => any = (index: number, row: T) => {\n if (row['id']) {\n return row['id'];\n }\n return index;\n };\n @Input() trackColumns: (index: number, column: TableColumn) => any = (index: number, column: TableColumn) => {\n return column.name;\n };\n @Input() editType: EditType = EditType.cell;\n @Input() editEvent: EditEvent = EditEvent.doubleClick;\n @Input() rowEditable: boolean | ((row: T) => boolean);\n @Input() rowClass: (row: T, index?: number) => string;\n\n @Input() set scrollToIndex(index: number) {\n this._svc.scrollToIndex(index);\n }\n\n @Input() showHeadCellMenu = true;\n @Input() contextMenu: TemplateRef<any>;\n @Input() contextMenuOpen: boolean;\n @Output() contextMenuOpenChange = new EventEmitter<boolean>();\n\n @Output()\n stateChange: EventEmitter<FilterState> = new EventEmitter<FilterState>();\n @Output() bodyLeft = new EventEmitter<T>();\n @Output() activeRowChange: EventEmitter<T> = new EventEmitter();\n @Output() selectedRowsChange: EventEmitter<T[]> = new EventEmitter();\n @Output() cellClick = new EventEmitter<ICellInstanceEvent<T>>();\n @Output() cellDoubleClick = new EventEmitter<ICellInstanceEvent<T>>();\n @Output() cellFocus = new EventEmitter<ICellInstanceEvent<T>>();\n @Output() cellKeyDown = new EventEmitter<ICellInstanceEvent<T>>();\n @Output() rowLeft = new EventEmitter<T>();\n @Output() rowEditStart = new EventEmitter<ICellInstance<T>>();\n @Output() rowEditEnd = new EventEmitter<TableRow<T>>();\n @Output() cellEditStart = new EventEmitter<ICellInstance<T>>();\n @Output() cellEditEnd = new EventEmitter<ICellInstance<T>>();\n @Output() valueChange = new EventEmitter<ICellInstance<T>>();\n @Output() tableService = new EventEmitter<TableService<T>>();\n @ViewChild('contextMenu', { static: true }) menu: ElementRef;\n @HostBinding('class.table') private readonly tableClass = true;\n rowHeight = input<number>(28);\n\n selectedRowsList: T[];\n contextMenuRow: T;\n verticalAlign = VerticalAlign;\n align = Align;\n private _alive = true;\n private _headElement: HTMLElement;\n private _state: FilterState;\n\n constructor(\n private _svc: TableService<T>,\n private _elementRef: ElementRef,\n ) {\n this._svc.state\n .pipe(\n takeWhile(() => this._alive),\n filter((state) => state !== this._state),\n )\n .subscribe((state: FilterState) => this.stateChange.next(state));\n\n this._svc.editCellStart\n .pipe(takeWhile(() => this._alive))\n .subscribe((item: ICellEvent) => this.cellEditStart.emit(this._svc.getCellInstance(item)));\n\n this._svc.editCellStop\n .pipe(takeWhile(() => this._alive))\n .subscribe((item: ICellCoordinates) => this.cellEditEnd.emit(this._svc.getCellInstance(item)));\n\n this._svc.editRowStart\n .pipe(takeWhile(() => this._alive))\n .subscribe((item: ICellEvent) => this.rowEditStart.emit(this._svc.getCellInstance(item)));\n\n this._svc.editRowStop\n .pipe(takeWhile(() => this._alive))\n .subscribe((item: ICellCoordinates) => this.rowEditEnd.emit(this._svc.getRowByIndex(item?.row)));\n\n this._svc.selectedRows.pipe(takeWhile(() => this._alive)).subscribe((items: T[]) => {\n this.selectedRowsList = items;\n this.selectedRowsChange.emit(items);\n });\n\n this._svc.activeRow.pipe(takeWhile(() => this._alive)).subscribe((item: T) => {\n this.activeRow = item;\n this.activeRowChange.emit(item);\n });\n\n this._svc.valueChanged.pipe(takeWhile(() => this._alive)).subscribe((coordinates: ICellCoordinates) => {\n this.valueChange.emit(this._svc.getCellInstance(coordinates));\n });\n }\n\n @HostListener('document:click', ['$event']) handleClickOutsideAnyRow(event: MouseEvent) {\n const coordinates = this.getCoordinates(event);\n const row = this.getRow(event);\n const eventIsOnRow = this.eventIsOnRow(event);\n setTimeout(() => {\n if (coordinates) {\n this.cellClick.emit({\n ...this._svc.getCellInstance(coordinates),\n event,\n });\n if (this.editEvent === EditEvent.click) {\n this.startEditRowOrCell(coordinates);\n } else {\n if (\n this._svc.currentEditCell &&\n (coordinates.row !== this._svc.currentEditCell.row ||\n coordinates.column !== this._svc.currentEditCell.column)\n ) {\n this.startEditRowOrCell(null);\n }\n }\n }\n if (row) {\n if (event.ctrlKey) {\n this._svc.selectOrDeselectRow(row.data);\n } else if (event.shiftKey) {\n this._svc.selectRange(row.data);\n } else {\n this._svc.selectRows([row.data]);\n }\n }\n if (!eventIsOnRow && !event.defaultPrevented) {\n if (this.editType === EditType.row) {\n this._svc.startEditRow(null);\n } else {\n this._svc.startEditCell(null);\n }\n }\n });\n }\n\n @HostListener('focusin', ['$event']) focusIn(event: FocusEvent) {\n const coordinates = this.getCoordinates(event);\n if (coordinates) {\n this.cellFocus.emit({\n ...this._svc.getCellInstance(coordinates),\n event,\n });\n if (this.editEvent === EditEvent.focus) {\n this.startEditRowOrCell(coordinates);\n }\n }\n }\n\n @HostListener('dblclick', ['$event'])\n dblclick(event: MouseEvent) {\n const coordinates = this.getCoordinates(event);\n if (coordinates) {\n setTimeout(() => {\n this.cellDoubleClick.emit({\n ...this._svc.getCellInstance(coordinates),\n event,\n });\n if (this.editEvent === EditEvent.doubleClick) {\n this.startEditRowOrCell(coordinates);\n }\n });\n }\n }\n\n @HostListener('keydown', ['$event'])\n keydown(event: KeyboardEvent) {\n if (event.ctrlKey) {\n if (event.code === 'KeyA') {\n event.preventDefault();\n this._svc.selectAll();\n }\n return;\n }\n if (event.key === 'Escape') {\n this._svc.deselectAll();\n if (this.editType === EditType.row) {\n this._svc.startEditRow(null);\n } else {\n this._svc.startEditCell(null);\n }\n }\n const coordinates = this.getCoordinates(event);\n if (event.key === 'Enter') {\n if (this.editType === EditType.row) {\n this._svc.startEditRow(null);\n } else {\n if (this._svc.currentEditCell) {\n const target = this._svc.getNextRowCell(coordinates);\n if (target) {\n this.startEditRowOrCell({\n row: target.row,\n column: target.column,\n event: undefined,\n });\n } else {\n this._svc.startEditCell(null);\n }\n }\n }\n }\n if (coordinates) {\n this.cellKeyDown.emit({\n ...this._svc.getCellInstance(coordinates),\n event,\n });\n if (event.key && (event.key.length === 1 || event.key === 'Delete')) {\n const column = this._svc.getColumnByName(coordinates.column);\n if (column.filterType !== FilterType.number || isFinite(event.key as any)) {\n this.startEditRowOrCell({\n row: coordinates.row,\n column: coordinates.column,\n event: event,\n });\n }\n }\n if (event.key === 'Tab' && this._svc.currentEditCell) {\n event.preventDefault();\n let target = this._svc.getNextEditableCell(coordinates);\n if (event.shiftKey) {\n target = this._svc.getPreviousEditableCell(coordinates);\n }\n if (target) {\n this.startEditRowOrCell({\n row: target.row,\n column: target.column,\n event: undefined,\n });\n }\n }\n if (!this._svc.currentEditCell) {\n let target;\n if (event.key === 'ArrowRight') {\n target = this._svc.getNextCell(coordinates);\n }\n if (event.key === 'ArrowLeft') {\n target = this._svc.getPreviousCell(coordinates);\n }\n if (event.key === 'ArrowUp') {\n target = this._svc.getPreviousRowCell(coordinates);\n }\n if (event.key === 'ArrowDown') {\n target = this._svc.getNextRowCell(coordinates);\n }\n if (target) {\n event.preventDefault();\n const element = this.getCellElement(target);\n element?.focus();\n }\n }\n }\n }\n\n @HostListener('mousedown', ['$event']) mousedown(event: MouseEvent) {\n if (event.button === 2) {\n event.preventDefault();\n }\n }\n\n ngOnInit(): void {\n this._svc.restoreState();\n this._svc.restoreHiddenColumns();\n this.tableService.emit(this._svc);\n }\n\n ngAfterViewInit(): void {\n this._headElement = this._elementRef.nativeElement.querySelector('.table-head');\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (Object.prototype.hasOwnProperty.call(changes, 'editType')) {\n this._svc.editType = this.editType;\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'selectType')) {\n this._svc.selectType = this.selectType;\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'selectedRows')) {\n this._svc.selectRows(this.selectedRows);\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'rowEditable')) {\n this._svc.rowEditable = this.rowEditable;\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'cookieName')) {\n this._svc.setCookieName(this.cookieName);\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'columns')) {\n if (this.columns !== null && this.columns !== undefined) {\n this._svc.setColumns(this.columns);\n }\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'data')) {\n this._svc.setData(this.data);\n this._svc.selectRows(\n this.data?.filter((row) => {\n return this.selectedRows?.some(\n (selectedRow) =>\n this.trackRow(this._svc.getRowIndex(selectedRow), selectedRow) ===\n this.trackRow(this._svc.getRowIndex(row), row),\n );\n }),\n );\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'dict')) {\n this._svc.setDict(this.dict);\n this._svc.setFilterOptions(this.dict);\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'filterOptions')) {\n this._svc.setFilterOptions(this.filterOptions);\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'trackRow')) {\n this._svc.trackRow = this.trackRow;\n }\n }\n\n setContextMenuOpen(value: boolean) {\n this.contextMenuOpen = value;\n this.contextMenuOpenChange.emit(this.contextMenuOpen);\n }\n\n setContextMenuRow(event: MouseEvent) {\n this.contextMenuRow = null;\n const rowElement = this._svc.getEventRow(event);\n if (rowElement) {\n const rowIndex = parseInt(rowElement.getAttribute('data-row'), 10);\n if (rowIndex >= 0) {\n this.contextMenuRow = this._svc.getRowByIndex(rowIndex).data;\n }\n }\n }\n\n private startEditRowOrCell(coordinates: ICellEvent): void {\n if (this.editType === EditType.row) {\n this._svc.startEditRow(coordinates);\n }\n if (this.editType === EditType.cell) {\n this._svc.startEditCell(coordinates);\n }\n }\n\n private getCellElement(coordinates: ICellCoordinates): HTMLElement | null {\n return this._elementRef.nativeElement.querySelector(\n `teta-cell[data-row=\"${coordinates.row}\"][data-column=\"${coordinates.column}\"]`,\n );\n }\n\n private eventIsOnRow(event: Event): boolean {\n const row = event.composedPath().find((target) => {\n return (target as HTMLElement)?.getAttribute && (target as HTMLElement)?.getAttribute('data-row');\n });\n return row && this._elementRef.nativeElement.contains(row);\n }\n\n private getCoordinates(event: Event): ICellEvent | null {\n if (event.composedPath().indexOf(this._elementRef.nativeElement) < 0) {\n return null;\n }\n const cell = this._svc.getEventCell(event);\n if (cell) {\n const rowIndex = parseInt(cell.getAttribute('data-row'), 10);\n const columnName = cell.getAttribute('data-column');\n if (rowIndex >= 0 && columnName) {\n return {\n row: rowIndex,\n column: columnName,\n event,\n };\n }\n }\n return null;\n }\n\n private getRow(event: Event): TableRow<T> | null {\n if (event.composedPath().indexOf(this._elementRef.nativeElement) < 0) {\n return null;\n }\n const rowElement = this._svc.getEventRow(event);\n if (rowElement) {\n const rowIndex = parseInt(rowElement.getAttribute('data-row'), 10);\n if (rowIndex >= 0) {\n return this._svc.getRowByIndex(rowIndex);\n }\n }\n return null;\n }\n\n onScroll = (event) => {\n this._headElement.scrollLeft = event.target.scrollLeft;\n };\n\n // private getSelectedText() {\n // let text = '';\n // if (typeof window.getSelection != 'undefined') {\n // text = window.getSelection().toString();\n // }\n // return text;\n // }\n}\n","<div class=\"column column_auto\">\n <teta-table-head style=\"z-index: 1\" [selectType]=\"selectType\" [showHeadCellMenu]=\"showHeadCellMenu\"></teta-table-head>\n <div\n class=\"column column_auto position-relative\"\n style=\"z-index: 0\"\n [tetaContextMenu]=\"contextMenu\"\n [verticalAlign]=\"verticalAlign.auto\"\n [align]=\"align.auto\"\n [appendToBody]=\"true\"\n [data]=\"contextMenuRow\"\n [open]=\"contextMenuOpen\"\n (openChange)=\"setContextMenuOpen($event)\"\n >\n <teta-table-body\n (contextmenu)=\"setContextMenuRow($event)\"\n (scrollChange)=\"onScroll($event)\"\n [aggregate]=\"aggregate\"\n [virtual]=\"virtual\"\n [activeRow]=\"activeRow\"\n [trackRow]=\"trackRow\"\n [trackColumns]=\"trackColumns\"\n [selectedRows]=\"selectedRowsList\"\n [additionalComponent]=\"detailComponent\"\n [selectType]=\"selectType\"\n [rowClass]=\"rowClass\"\n [rowHeight]=\"rowHeight()\"\n >\n <ng-content></ng-content>\n </teta-table-body>\n </div>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';\n\nimport { DatePickerComponent } from '../../../date-picker/date-picker/date-picker.component';\nimport { CellComponentBase } from '../../base/cell-component-base';\nimport { ICellCoordinates } from '../../contract/i-cell-coordinates';\nimport { TableService } from '../../service/table.service';\nimport { DatePipe } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'teta-date-time-cell',\n templateUrl: './date-time-cell.component.html',\n styleUrls: ['./date-time-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DatePickerComponent, FormsModule, ReactiveFormsModule, DatePipe]\n})\nexport class DateTimeCellComponent<T> extends CellComponentBase<T> implements OnInit {\n @ViewChild('input', { static: false }) input: DatePickerComponent;\n\n constructor(\n protected override svc: TableService<T>,\n protected override cdr: ChangeDetectorRef,\n ) {\n super(svc, cdr);\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n }\n\n startEdit(initiator: ICellCoordinates, type: 'cell' | 'row'): void {\n if (initiator?.column === this.column.name) {\n setTimeout(() => {\n this.input?.openPicker(true);\n this.cdr.markForCheck();\n }, 0);\n }\n }\n\n stopEdit(): void {\n this.cdr.markForCheck();\n }\n}\n","<span [style.display]=\"edit ? 'none' : 'block'\" class=\"cell-text\" [class.cell-text_disabled]=\"!editable\">\n {{ control?.value | date: 'dd.MM.yyyy HH:mm:ss' }}\n</span>\n@if (edit) {\n <teta-date-picker\n class=\"datepicker-table\"\n #input\n [appendToBody]=\"true\"\n [showTime]=\"true\"\n [formControl]=\"control\"\n ></teta-date-picker>\n}\n","import { TableColumn } from '../contract/table-column';\n\nexport abstract class DetailComponentBase<T> {\n /**\n * The row details are displayed for\n */\n abstract row: T;\n /**\n * displayed columns\n */\n abstract columns: TableColumn[];\n}\n","/**\n * Components\n */\nexport * from './table/table.component';\nexport * from './table-head/table-head.component';\nexport * from './table-body/table-body.component';\nexport * from './table-row/table-row.component';\nexport * from './head-cell-host/head-cell-host.component';\nexport * from './cell/cell.component';\nexport * from './cell-host/cell-host.component';\n\n/**\n * default\n */\nexport * from './default/date-cell/date-cell.component';\nexport * from './default/boolean-cell/boolean-cell.component';\nexport * from './default/date-time-cell/date-time-cell.component';\nexport * from './default/list-cell/list-cell.component';\nexport * from './default/numeric-cell/numeric-cell.component';\nexport * from './default/string-cell/string-cell.component';\n\n/**\n * base\n */\nexport * from './base/detail-component-base';\nexport * from './base/cell-component-base';\nexport * from './base/head-cell-component-base';\n\n/**\n * Service\n */\nexport * from './service/table.service';\n\n/**\n * contract\n */\nexport * from './contract/public-api';\n\n/**\n * enum\n */\nexport * from './enum/public-api';\n/**\n * enum\n */\nexport * from './util/public-api';\n","/**\n * Components\n */\nexport * from './tab/tab.component';\nexport * from './tabs/tabs.component';\n\n/**\n * Directives\n */\nexport * from './tab-title.directive';\nexport * from './tab-content.directive';\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { ThemeSwitchService } from '../theme-switch.service';\nimport { Observable } from 'rxjs';\nimport { ButtonViewType, ButtonComponent } from '../../button/button/button.component';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'teta-theme-switch',\n templateUrl: './theme-switch.component.html',\n styleUrls: ['./theme-switch.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ButtonComponent, IconComponent, AsyncPipe]\n})\nexport class ThemeSwitchComponent implements OnInit {\n @Input() palette = 'text';\n @Input() view: ButtonViewType = 'ghost';\n theme: Observable<boolean>;\n\n constructor(private _svc: ThemeSwitchService) {\n this.theme = this._svc.theme;\n }\n\n ngOnInit(): void {}\n\n switchTheme() {\n this._svc.switchTheme();\n }\n}\n","<button type=\"button\" teta-button [palette]=\"palette\" [view]=\"view\" [square]=\"true\" (click)=\"switchTheme()\">\n <teta-icon [name]=\"(theme | async) ? 'lightMode' : 'darkMode'\" [palette]=\"'text'\"></teta-icon>\n</button>\n","/**\n * Components\n */\nexport * from './toolbar/toolbar.component';\n","import { Component, computed, input, Signal } from '@angular/core';\nimport { IIdName } from '../../../common/contract/i-id-name';\n\n@Component({\n selector: 'app-stepper',\n imports: [],\n templateUrl: './stepper.component.html',\n styleUrl: './stepper.component.scss'\n})\nexport class StepperComponent {\n steps = input.required<IIdName<number>[]>();\n currentStepId = input.required<number>();\n currentIndex: Signal<number> = computed(\n () => this.steps().findIndex((step) => step.id === this.currentStepId()) ?? 0,\n );\n}\n","@if (steps().length) {\n <ul\n class=\"stepper\"\n [style]=\"\n '--step-count: ' +\n (steps().length - 1) +\n '; --padding-left: ' +\n steps().at(0).name.length / 2 +\n 'ch; --padding-right: ' +\n steps().at(-1).name.length / 2 +\n 'ch;'\n \"\n >\n @for (step of steps(); track step.id; let index = $index) {\n <li class=\"font-title-3 stepperItem\" [class.stepperItemActive]=\"currentIndex() >= index\">\n <span class=\"point\">\n <span class=\"stepLabel\">{{ step.name }}</span>\n </span>\n </li>\n }\n </ul>\n} @else {\n <p class=\"font-title-1 text-align-center\">Шаги отсутствуют</p>\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'teta-divider',\n templateUrl: './divider.component.html',\n styleUrls: ['./divider.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet]\n})\nexport class DividerComponent implements OnInit {\n @Input() label;\n\n @Input() template: TemplateRef<any>;\n constructor() {}\n ngOnInit(): void {}\n}\n","<div class=\"divider\" style=\"width: 100%\">\n <div class=\"bg-text-20\" style=\"height: 1px\"></div>\n @if (!template) {\n <div class=\"divider-content padding-h-2\">{{ label }}</div>\n } @else {\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n }\n <div class=\"bg-text-20\" style=\"height: 1px\"></div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n} from '@angular/core';\nimport { DOCUMENT, NgClass } from '@angular/common';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { ResizeDragDirective } from '../../../directive/resize-drag/resize-drag.directive';\n\n@Component({\n selector: 'teta-resize-panel',\n templateUrl: './resize-panel.component.html',\n styleUrls: ['./resize-panel.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ResizeDragDirective, NgClass, IconComponent]\n})\nexport class ResizePanelComponent implements OnInit, OnDestroy {\n @Input() size = 8;\n\n @Input()\n set direction(val: 'vertical' | 'horizontal') {\n this._direction = val;\n }\n\n get direction() {\n return this._direction;\n }\n\n get icon() {\n return this.direction === 'horizontal' ? 'moreHorizontal' : 'moreVertical';\n }\n @Input()\n set grabPosition(val: 'top' | 'left' | 'bottom' | 'right') {\n this._grabPosition = val;\n }\n\n get grabPosition() {\n if (this.direction === 'vertical') {\n if (['left', 'right'].includes(this._grabPosition)) {\n return this._grabPosition;\n }\n return 'left';\n }\n if (['top', 'bottom'].includes(this._grabPosition)) {\n return this._grabPosition;\n }\n return 'bottom';\n }\n\n @Input() name: string;\n @Input() minSize: number;\n @Input() maxSize: number;\n @HostBinding('class.resize-panel') private readonly resizePanelClass = true;\n\n private _direction: 'vertical' | 'horizontal' = 'horizontal';\n private _grabPosition: 'top' | 'left' | 'bottom' | 'right' = 'left';\n private _startSize: number;\n private _startPosition: number;\n\n private _positionMap: Map<string, string> = new Map<string, string>()\n .set('left', 'resize-grab_left')\n .set('right', 'resize-grab_right')\n .set('top', 'resize-grab_top')\n .set('bottom', 'resize-grab_bottom');\n\n constructor(\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n @Inject(DOCUMENT) private _document: any,\n ) {}\n\n resizeStart(event: MouseEvent) {\n this.setStartPosition();\n if (this.direction === 'vertical') {\n this._startSize = this._elementRef.nativeElement.clientWidth;\n this._startPosition = event.clientX;\n } else {\n this._startSize = this._elementRef.nativeElement.clientHeight;\n this._startPosition = event.clientY;\n }\n }\n\n resizeProcess(event: MouseEvent) {\n event.preventDefault();\n if (this.direction === 'vertical') {\n this.manageVertical(event);\n } else {\n this.manageHorizontal(event);\n }\n }\n\n resizeEnd(event: MouseEvent) {\n window.dispatchEvent(new Event('resize'));\n }\n\n ngOnInit() {\n this.restorePosition();\n }\n\n ngOnDestroy(): void {}\n\n getClassName() {\n return this._positionMap.get(this.grabPosition) || '';\n }\n\n private setStartPosition() {\n if (this.direction === 'vertical') {\n this._renderer.setStyle(\n this._elementRef.nativeElement,\n 'width',\n `${this._elementRef.nativeElement.offsetWidth}px`,\n );\n } else {\n this._renderer.setStyle(\n this._elementRef.nativeElement,\n 'height',\n `${this._elementRef.nativeElement.offsetHeight}px`,\n );\n }\n this._renderer.setStyle(this._elementRef.nativeElement, 'flex-grow', `0`);\n this._renderer.setStyle(this._elementRef.nativeElement, 'flex-shrink', `0`);\n this._renderer.setStyle(this._elementRef.nativeElement, 'flex', `none`);\n }\n\n private manageHorizontal(event: MouseEvent) {\n let newSize =\n this.grabPosition === 'bottom'\n ? this._startSize + (event.clientY - this._startPosition)\n : this._startSize - (event.clientY - this._startPosition);\n if (this.maxSize && newSize > this.maxSize) {\n newSize = this.maxSize;\n }\n if (this.minSize && newSize < this.minSize) {\n newSize = this.minSize;\n }\n this._renderer.setStyle(this._elementRef.nativeElement, 'height', `${newSize}px`);\n this.save();\n }\n\n private manageVertical(event: MouseEvent) {\n let newSize =\n this.grabPosition === 'right'\n ? this._startSize + (event.clientX - this._startPosition)\n : this._startSize - (event.clientX - this._startPosition);\n if (this.maxSize && newSize > this.maxSize) {\n newSize = this.maxSize;\n }\n if (this.minSize && newSize < this.minSize) {\n newSize = this.minSize;\n }\n this._renderer.setStyle(this._elementRef.nativeElement, 'width', `${newSize}px`);\n this.save();\n }\n\n private restore() {\n if (this.name?.length > 0) {\n return JSON.parse(localStorage.getItem(`resize-panel${this.name}`));\n }\n }\n\n private restorePosition() {\n const savedSize = this.restore();\n if (savedSize) {\n if (this.direction === 'vertical') {\n this._renderer.setStyle(this._elementRef.nativeElement, 'width', `${savedSize}px`);\n } else {\n this._renderer.setStyle(this._elementRef.nativeElement, 'height', `${savedSize}px`);\n }\n this._renderer.setStyle(this._elementRef.nativeElement, 'flex-grow', `0`);\n this._renderer.setStyle(this._elementRef.nativeElement, 'flex-shrink', `0`);\n this._renderer.setStyle(this._elementRef.nativeElement, 'flex', `none`);\n }\n }\n\n private save() {\n if (this.name?.length > 0) {\n if (this.direction === 'vertical') {\n localStorage.setItem(`resize-panel${this.name}`, this._elementRef.nativeElement.clientWidth);\n } else {\n localStorage.setItem(`resize-panel${this.name}`, this._elementRef.nativeElement.clientHeight);\n }\n }\n }\n}\n","<ng-content></ng-content>\n<div\n #grab\n class=\"resize-grab\"\n [style.width.px]=\"direction === 'vertical' ? size : ''\"\n [style.height.px]=\"direction === 'horizontal' ? size : ''\"\n (resizeStart)=\"resizeStart($event)\"\n (resizeProcess)=\"resizeProcess($event)\"\n (resizeEnd)=\"resizeEnd($event)\"\n [tetaResizeDrag]=\"direction\"\n [ngClass]=\"getClassName()\"\n>\n <teta-icon [name]=\"icon\" [palette]=\"'text'\"></teta-icon>\n</div>\n","/* accordion */\nexport * from './accordion/public-api';\n\n/* avatar */\nexport * from './avatar/public-api';\n\n/* autocomplete */\nexport * from './autocomplete/public-api';\n\n/* button */\nexport * from './button/public-api';\n\n/* checkbox */\nexport * from './chart-3d/public-api';\n\n/* checkbox */\nexport * from './checkbox/public-api';\n\n/* datepicker */\nexport * from './date-picker/public-api';\n\n/* delimiter */\nexport * from './delimiter/public-api';\n\n/* dropdown */\nexport * from './dropdown/public-api';\n\n/* dynamic-component */\nexport * from './dynamic-component/public-api';\n\n/* expand-card */\nexport * from './expand-card/public-api';\n\n/* expand-panel */\nexport * from './expand-panel/public-api';\n\n/* file */\nexport * from './file-upload/public-api';\n\n/* filter */\nexport * from './filter/public-api';\n\n/* icon */\nexport * from './icon/public-api';\n\n/* input */\nexport * from './input/public-api';\n\n/* message */\nexport * from './message/public-api';\n\n/* modal */\nexport * from './modal/public-api';\n\n/* pager */\nexport * from './pager/public-api';\n\n/* panel */\nexport * from './panel/public-api';\n\n/* progress-bar */\nexport * from './progress-bar/public-api';\n\n/* property-grid */\nexport * from './property-grid/public-api';\n\n/* radio */\nexport * from './radio/public-api';\n\n/* select */\nexport * from './select/public-api';\n\n/* sidebar */\nexport * from './sidebar/public-api';\n\n/* switch */\nexport * from './switch/public-api';\n\n/* table */\nexport * from './table/public-api';\n\n/* tabs */\nexport * from './tabs/public-api';\n\n/* theme-switch */\nexport * from './theme-switch/public-api';\n\n/* toggle */\nexport * from './toggle/public-api';\n\n/* toolbar */\nexport * from './toolbar/public-api';\n\n/* tree */\nexport * from './tree/public-api';\n\n/* stepper */\nexport * from './stepper/public-api';\n\n/* 3d-chart */\nexport * from './chart-3d/public-api';\n\n/* Resize panel */\nexport * from './divider/public-api';\nexport * from './resize-panel/public-api';\n","import { AfterViewInit, Directive, ElementRef, HostBinding, Input, NgZone, OnDestroy } from '@angular/core';\nimport { Align } from '../../common/enum/align.enum';\nimport { VerticalAlign } from '../../common/enum/vertical-align.enum';\nimport { IRect } from '../../common/contract/i-rect';\nimport { DomUtil } from '../../common/util/dom-util';\nimport { PositionUtil } from '../../common/util/position-util';\nimport { takeWhile } from 'rxjs/operators';\n\n@Directive({\n selector: '[tetaAutoPosition]',\n standalone: true,\n})\nexport class AutoPositionDirective implements AfterViewInit, OnDestroy {\n @Input() align: Align;\n @Input() verticalAlign: VerticalAlign = VerticalAlign.auto;\n\n @HostBinding('style.position') fixed = 'fixed';\n\n private _alive = true;\n\n constructor(\n private _elementRef: ElementRef,\n private _zone: NgZone,\n ) {}\n\n ngAfterViewInit() {\n this.setPosition();\n this._zone.onStable.pipe(takeWhile(() => this._alive)).subscribe(() => {\n this.setPosition();\n });\n }\n\n ngOnDestroy() {\n this._alive = false;\n }\n\n private setPosition(): void {\n const target = this._elementRef.nativeElement;\n const containerPosition = this._elementRef.nativeElement.parentElement.getBoundingClientRect();\n const targetPosition = target.getBoundingClientRect();\n\n const rect: IRect = {\n bottom: containerPosition.bottom,\n top: containerPosition.top,\n left: containerPosition.left,\n right: containerPosition.right,\n };\n\n const targetRect: IRect = {\n bottom: targetPosition.bottom,\n top: targetPosition.top,\n left: targetPosition.left,\n right: targetPosition.right,\n };\n\n const targetTransformedParent = DomUtil.findTransformedParent(target);\n let parentPosition = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n };\n if (targetTransformedParent) {\n parentPosition = targetTransformedParent.getBoundingClientRect();\n }\n\n const position = PositionUtil.getPosition(rect, targetRect, this.align, this.verticalAlign, 0, 0, parentPosition);\n\n PositionUtil.setElementPosition(target, position);\n }\n}\n","import { Directive, ElementRef, EventEmitter, Input, NgZone, OnDestroy, Output } from '@angular/core';\nimport { DomUtil } from '../../common/util/dom-util';\n\n@Directive({\n selector: '[tetaClickOutside]',\n standalone: true,\n})\nexport class ClickOutsideDirective implements OnDestroy {\n @Output() clickOutside = new EventEmitter<MouseEvent>();\n @Input() rightClick = false;\n\n private _handleEvents = false;\n\n @Input()\n set tetaClickOutside(val: boolean) {\n this._handleEvents = val;\n if (this._handleEvents) {\n this._ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.addListener(this.rightClick);\n });\n });\n } else {\n this.removeListener();\n }\n }\n\n get tetaClickOutside(): boolean {\n return this._handleEvents;\n }\n\n constructor(\n private _elementRef: ElementRef,\n private _ngZone: NgZone,\n ) {}\n\n ngOnDestroy(): void {\n this.removeListener();\n }\n\n private addListener(handleRightClick: boolean): void {\n window.addEventListener('click', this.listener);\n if (handleRightClick) {\n window.addEventListener('contextmenu', this.listener);\n }\n }\n\n private removeListener(): void {\n window.removeEventListener('click', this.listener);\n window.removeEventListener('contextmenu', this.listener);\n }\n\n private listener = (click: MouseEvent) => {\n if (!this._handleEvents) {\n return;\n }\n const clickedInside = DomUtil.clickedInside(this._elementRef.nativeElement, click);\n if (!clickedInside) {\n this.clickOutside.emit(click);\n }\n };\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaDragPreview]',\n standalone: true,\n})\nexport class DragPreviewDirective {\n constructor(public templateRef: TemplateRef<any>) {}\n}\n","import { TemplateRef, ViewContainerRef } from '@angular/core';\n\nexport class DragContainerInstance<T> {\n data: T[];\n previewTemplate: TemplateRef<any>;\n viewContainer: ViewContainerRef;\n\n constructor(options: { data: T[]; previewTemplate: TemplateRef<any>; viewContainer: ViewContainerRef }) {\n this.data = options.data;\n this.previewTemplate = options.previewTemplate;\n this.viewContainer = options.viewContainer;\n }\n}\n","import { EmbeddedViewRef, Inject, Injectable, Renderer2, RendererFactory2 } from '@angular/core';\nimport { DragInstance } from './model/drag-instance';\nimport { DragSelection } from './model/drag-selection';\nimport { DragContainerInstance } from './model/drag-container-instance';\nimport { Point } from './model/point';\nimport { DOCUMENT } from '@angular/common';\nimport { BehaviorSubject, fromEvent, merge, Observable, Subject, tap } from 'rxjs';\nimport { filter, withLatestFrom } from 'rxjs/operators';\nimport { DragProcess } from './model/drag-process';\nimport { DropTarget } from './model/drop-target';\nimport { DropEvent } from './model/drop-event';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DragDropService<T> {\n selection: DragSelection<T>;\n startPosition: Point;\n dragProcess: DragProcess<T>;\n dropTarget: Observable<DropTarget<T>>;\n dropped: Observable<DropEvent<T>>;\n private dropTarget$ = new BehaviorSubject<DropTarget<T>>(null);\n private _delta = 10;\n private _renderer: Renderer2;\n private _preview: HTMLElement;\n private _previewRef: EmbeddedViewRef<any>;\n private dropped$ = new Subject<DropEvent<T>>();\n\n constructor(\n @Inject(DOCUMENT) private _document: Document,\n private _rendererFactory: RendererFactory2,\n ) {\n this._renderer = this._rendererFactory.createRenderer(null, null);\n this.dropTarget = this.dropTarget$.asObservable();\n this.dropped = this.dropped$.asObservable();\n merge(fromEvent<MouseEvent>(this._document, 'mousemove'), fromEvent<MouseEvent>(this._document, 'touchmove'))\n .pipe(\n filter(() => {\n return this.startPosition != null;\n }),\n )\n .subscribe((event: MouseEvent) => {\n if (!this.dragProcess && this.getDelta(event) > this._delta) {\n this.startProcess();\n }\n if (this.dragProcess && this._preview) {\n this.movePreview(event);\n }\n });\n\n merge(fromEvent<MouseEvent>(this._document, 'mouseup'), fromEvent<MouseEvent>(this._document, 'touchend'))\n .pipe(withLatestFrom(this.dropTarget))\n .subscribe((data: [MouseEvent, DropTarget<T>]) => {\n const [event, target] = data;\n if (target) {\n this.dropped$.next({\n target,\n container: this.dragProcess.selection.container,\n data: [...this.dragProcess.selection.items],\n });\n this.cancelDrag();\n }\n this.stopProcess();\n });\n\n merge(fromEvent(this._document, 'visibilitychange'), fromEvent(window, 'blur')).subscribe(() => {\n this.cancelDrag();\n });\n }\n\n setDropTarget(target: DropTarget<T>) {\n if (this.dragProcess) {\n this.dropTarget$.next(target);\n }\n }\n\n setStartPosition(point: Point) {\n this.startPosition = point;\n }\n\n setSelection(instance: DragInstance<T>, container: DragContainerInstance<T>) {\n if (this.selection?.container === container && this.selection?.items?.indexOf(instance) >= 0) {\n return;\n }\n this.selection = {\n container,\n items: [instance],\n };\n }\n\n addSelection(instance: DragInstance<T>, container: DragContainerInstance<T>) {\n if (!this.selection) {\n this.setSelection(instance, container);\n return;\n }\n if (this.selection && this.selection.container !== container) {\n return;\n }\n\n const index = this.selection.items.indexOf(instance);\n if (index < 0) {\n this.selection.items.push(instance);\n } else {\n this.selection.items.splice(index, 1);\n }\n }\n\n clearSelection() {\n this.selection = null;\n }\n\n cancelDrag() {\n this.setDropTarget(null);\n this.clearSelection();\n this.stopProcess();\n }\n\n startProcess() {\n this.dragProcess = {\n selection: this.selection,\n };\n this._document.body.style.cursor = 'copy';\n this._preview = this.createPreview();\n }\n\n stopProcess() {\n this.destroyPreview();\n this._document.body.style.cursor = 'default';\n this.dragProcess = null;\n this.startPosition = null;\n }\n\n private getDelta(event: MouseEvent) {\n return Math.max(Math.abs(this.startPosition.x - event.x), Math.abs(this.startPosition.y - event.y));\n }\n\n private createPreview() {\n if (this.dragProcess.selection.container.previewTemplate) {\n this._previewRef = this.dragProcess.selection.container.viewContainer.createEmbeddedView(\n this.dragProcess.selection.container.previewTemplate,\n {\n $implicit: this.dragProcess.selection.items,\n data: this.dragProcess.selection.items,\n },\n );\n const preview = this._renderer.createElement('div');\n this._renderer.setStyle(preview, 'position', 'fixed');\n this._renderer.setStyle(preview, 'pointer-events', 'none');\n this._renderer.setStyle(preview, 'top', '0');\n this._renderer.setStyle(preview, 'left', '0');\n this._renderer.appendChild(preview, this._previewRef.rootNodes[0]);\n this._renderer.appendChild(document.body, preview);\n return preview;\n }\n return null;\n }\n\n private movePreview(event: MouseEvent) {\n if (this._preview) {\n this._renderer.setStyle(this._preview, 'transform', `translate(${event.x}px, ${event.y}px)`);\n }\n }\n\n private destroyPreview() {\n if (this._preview) {\n this.dragProcess?.selection?.container?.viewContainer?.clear();\n this._preview?.remove();\n this._previewRef?.destroy();\n this._preview = this._previewRef = null;\n }\n }\n}\n","import {\n ChangeDetectorRef,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n ViewContainerRef,\n} from '@angular/core';\nimport { DragPreviewDirective } from './drag-preview.directive';\nimport { DragContainerInstance } from './model/drag-container-instance';\nimport { DragDropService } from './drag-drop.service';\nimport { takeWhile } from 'rxjs/operators';\nimport { DropTarget } from './model/drop-target';\nimport { DropEvent } from './model/drop-event';\nimport { DragInstance } from './model/drag-instance';\n\n@Directive({\n selector: '[tetaDragContainer]',\n exportAs: 'dragContainer',\n host: {\n '[class.teta-drag-container]': '\"true\"',\n '[class.teta-drop-target]': 'isDropTarget',\n },\n standalone: true,\n})\nexport class DragContainerDirective<T> implements OnInit, OnDestroy {\n @Input('tetaDragContainer') data: T[];\n @Input() multiple = false;\n @Input() allowDrop = true;\n\n @Output() tetaDrop = new EventEmitter<DropEvent<T>>();\n @Output() tetaDragEnter = new EventEmitter<DragInstance<T>>();\n\n @ContentChild(DragPreviewDirective, {\n static: true,\n })\n private _previewTemplate: DragPreviewDirective;\n\n instance: DragContainerInstance<T>;\n dropTarget: DropTarget<T>;\n private _alive = true;\n\n get isDropTarget() {\n return this.dropTarget === this.instance;\n }\n\n @HostListener('mouseleave', ['$event']) mouseleave(event) {\n this._dragService.setDropTarget(null);\n }\n\n @HostListener('mouseover', ['$event']) mouseover(event) {\n if (this.allowDrop) {\n this._dragService.setDropTarget(this.instance);\n }\n }\n\n @HostListener('window:keydown.escape', ['$event']) escape(event) {\n this._dragService.cancelDrag();\n }\n\n constructor(\n private _dragService: DragDropService<T>,\n private _elementRef: ElementRef,\n private _viewContainerRef: ViewContainerRef,\n private _zone: NgZone,\n private _cdr: ChangeDetectorRef,\n ) {}\n\n ngOnInit() {\n this.instance = new DragContainerInstance<T>({\n data: this.data,\n previewTemplate: this._previewTemplate?.templateRef,\n viewContainer: this._viewContainerRef,\n });\n this._dragService.dropTarget.pipe(takeWhile(() => this._alive)).subscribe((target) => {\n this.dropTarget = target;\n this._cdr.detectChanges();\n });\n\n this._dragService.dropped.pipe(takeWhile(() => this._alive)).subscribe((event) => {\n this.tetaDrop.emit(event);\n });\n }\n\n ngOnDestroy() {\n this._alive = false;\n }\n}\n","import { DragContainerInstance } from './drag-container-instance';\n\nexport class DragInstance<T> {\n container: DragContainerInstance<T>;\n data: T;\n\n constructor(options?: { container: DragContainerInstance<T>; data: T }) {\n this.container = options.container;\n this.data = options.data;\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n SkipSelf,\n} from '@angular/core';\nimport { filter, takeWhile } from 'rxjs/operators';\n\nimport { DragContainerDirective } from './drag-container.directive';\nimport { DragDropService } from './drag-drop.service';\nimport { DragInstance } from './model/drag-instance';\nimport { DragSelection } from './model/drag-selection';\nimport { DropEvent } from './model/drop-event';\nimport { DropTarget } from './model/drop-target';\n\n@Directive({\n selector: '[tetaDrag]',\n exportAs: 'drag',\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[style.userSelect]': '\"none\"',\n '[class.teta-drag-item]': '\"true\"',\n },\n standalone: true,\n})\nexport class DragDirective<T> implements OnInit, OnDestroy {\n @Input('tetaDrag') data: T;\n\n @HostBinding('class.teta_draggable_item')\n @Input()\n allowDrag = true;\n\n @HostBinding('class.teta_droppable_item')\n @Input()\n allowDrop = true;\n\n @Input() allowDropPredicate: (data: DragSelection<T>, target: T) => boolean;\n\n @Output() tetaDragEnter = new EventEmitter<DragInstance<T>>();\n @Output() tetaDrop = new EventEmitter<DropEvent<T>>();\n\n dropTarget: DropTarget<T>;\n instance: DragInstance<T>;\n\n @HostBinding('class.teta-drag-selection')\n get selection() {\n return this._dragService?.selection?.items?.indexOf(this.instance) >= 0;\n }\n\n @HostBinding('class.teta-drop-target')\n get isDropTarget() {\n return this.dropTarget === this.instance && this.allowDrop;\n }\n\n private _alive = true;\n\n @HostListener('mousedown', ['$event'])\n @HostListener('touchstart', ['$event'])\n mousedown(event: MouseEvent) {\n if (!this.allowDrag) {\n return;\n }\n if (event.ctrlKey && this._container?.multiple) {\n this._dragService.addSelection(this.instance, this._container?.instance);\n } else {\n this._dragService.setSelection(this.instance, this._container?.instance);\n }\n this._dragService.setStartPosition({\n x: event.x,\n y: event.y,\n });\n }\n\n @HostListener('mouseenter', ['$event'])\n mouseenter(event: MouseEvent) {\n if (this.allowDrop) {\n event.stopPropagation();\n if (this.allowDropPredicate === undefined || this.allowDropPredicate(this._dragService.selection, this.data)) {\n this._dragService.setDropTarget(this.instance);\n }\n }\n }\n\n @HostListener('mouseleave', ['$event']) mouseleave(event) {\n this._dragService.setDropTarget(null);\n }\n\n constructor(\n @Inject(DragContainerDirective)\n @Optional()\n @SkipSelf()\n private _container: DragContainerDirective<T>,\n private _dragService: DragDropService<T>,\n private _zone: NgZone,\n private _cdr: ChangeDetectorRef,\n ) {}\n\n ngOnInit() {\n this.instance = new DragInstance({\n container: this._container?.instance,\n data: this.data,\n });\n this._dragService.dropTarget.pipe(takeWhile(() => this._alive)).subscribe((target) => {\n this.dropTarget = target;\n if (target === this.instance) {\n this.tetaDragEnter.emit(this.instance);\n }\n this._cdr.detectChanges();\n this._cdr.markForCheck();\n });\n this._dragService.dropped\n .pipe(takeWhile(() => this._alive))\n .pipe(\n filter((event: DropEvent<T>) => {\n return event.target === this.instance;\n }),\n )\n .subscribe((event) => {\n this.tetaDrop.emit(event);\n });\n }\n\n ngOnDestroy() {\n this._alive = false;\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[tetaDragPlaceholder]',\n standalone: true,\n})\nexport class DragPlaceholderDirective {\n constructor() {}\n}\n","import {\n // ContentChildren,\n Directive,\n EventEmitter,\n HostListener,\n Input,\n Output,\n // QueryList,\n} from '@angular/core';\n\nimport { DragSortEvent } from './drag-sort-event';\n\n// import {DragSortItemDirective} from './drag-sort-item.directive';\n\n@Directive({\n selector: '[tetaDragSortContainer]',\n standalone: true,\n})\nexport class DragSortContainerDirective<T> {\n @Input() dragSortList: T[] = [];\n @Output() dragSorted: EventEmitter<DragSortEvent<T>> = new EventEmitter<DragSortEvent<T>>();\n\n private _dragItem!: T | null;\n\n @HostListener('drop', ['$event']) drop(event: DragEvent): void {\n event.stopPropagation();\n event.preventDefault();\n }\n\n setDragItem(item: T | null) {\n this._dragItem = item;\n }\n\n getDragItem(): T | null {\n return this._dragItem;\n }\n\n getList(): T[] {\n return this.dragSortList;\n }\n\n setList(list: T[]) {\n this.dragSortList = list;\n }\n\n updateSortOrder(source: T, target: T, insertBefore: boolean) {\n if (source === target) {\n return;\n }\n const list = this.getList();\n const sourceIndex = list.indexOf(source);\n const targetIndex = list.indexOf(target);\n if ((insertBefore && sourceIndex + 1 === targetIndex) || (!insertBefore && sourceIndex === targetIndex + 1)) {\n return;\n }\n const newIndex = list.indexOf(target) + (insertBefore ? 0 : 1);\n\n this.dragSorted.emit({\n list,\n source,\n target,\n newIndex,\n previousIndex: sourceIndex,\n });\n }\n}\n","import {\n Directive,\n ElementRef,\n Host,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n} from '@angular/core';\n\nimport { DragSortContainerDirective } from './drag-sort-container.directive';\n\n@Directive({\n selector: '[tetaDragSortItem]',\n standalone: true,\n})\nexport class DragSortItemDirective<T> implements OnInit, OnDestroy {\n @Input() tetaDragSortItem!: T;\n @Input() dragSortDirection: 'horizontal' | 'vertical' = 'horizontal';\n\n @HostBinding('attr.draggable') private readonly draggable = true;\n @HostBinding('class.position-relative') private readonly relative = true;\n\n private _dragElement!: HTMLElement;\n\n private rect: any;\n\n constructor(\n @Host() private _container: DragSortContainerDirective<T>,\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n ) {}\n\n @HostListener('dragstart', ['$event']) dragstart(event: DragEvent): void {\n this._container.setDragItem(this.tetaDragSortItem);\n }\n\n @HostListener('dragenter', ['$event']) dragenter(event: DragEvent): void {\n this.rect = this._elementRef.nativeElement.getBoundingClientRect();\n }\n\n @HostListener('dragover', ['$event']) dragover(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n if (this.rect && this._container.getDragItem()) {\n this.showDrag(this.getDropPosition(event));\n }\n }\n\n @HostListener('dragleave', ['$event']) dragleave(event: DragEvent): void {\n event.preventDefault();\n this.hideDrag();\n }\n\n @HostListener('dragend', ['$event']) dragend(event: DragEvent): void {\n this._container.setDragItem(null);\n this.hideDrag();\n }\n\n @HostListener('drop', ['$event']) drop(event: DragEvent): void {\n event.stopPropagation();\n this._container.updateSortOrder(\n this._container.getDragItem(),\n this.tetaDragSortItem,\n this.getDropPosition(event) === 'start',\n );\n this.hideDrag();\n }\n\n ngOnInit() {\n this.createDrag();\n }\n\n ngOnDestroy() {\n this.destroyDrag();\n }\n\n private showDrag(position: 'start' | 'end') {\n this.hideDrag();\n this._renderer.addClass(this._dragElement, `drop-direction-${position}`);\n }\n\n private hideDrag() {\n this._renderer.removeClass(this._dragElement, 'drop-direction-start');\n this._renderer.removeClass(this._dragElement, 'drop-direction-end');\n }\n\n private createDrag() {\n this._dragElement = this._renderer.createElement('div');\n this._renderer.appendChild(this._elementRef.nativeElement, this._dragElement);\n this._renderer.addClass(this._dragElement, 'drop-direction');\n this._renderer.addClass(\n this._dragElement,\n this.dragSortDirection === 'horizontal' ? 'drop-direction-horizontal' : 'drop-direction-vertical',\n );\n }\n\n private destroyDrag() {\n this._renderer.removeChild(this._renderer, this._dragElement);\n }\n\n private getDropPosition(event: DragEvent) {\n if (this.dragSortDirection === 'horizontal') {\n return event.clientX >= this.rect.x + this.rect.width / 2 ? 'end' : 'start';\n } else {\n return event.clientY >= this.rect.y + this.rect.height / 2 ? 'end' : 'start';\n }\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Directive, ElementRef, Inject, Input, NgZone, OnDestroy, Renderer2 } from '@angular/core';\nimport { takeWhile } from 'rxjs/operators';\n\n@Directive({\n selector: '[tetaLoader]',\n standalone: true,\n})\nexport class LoaderDirective implements OnDestroy {\n @Input() appendToBody = false;\n @Input() mask = false;\n\n @Input()\n set tetaLoader(value: boolean) {\n this._loading = value;\n if (this._loading) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n get tetaLoader() {\n return this._loading;\n }\n\n private _element: HTMLElement;\n private _loader: any;\n private _mask: any;\n private _alive = true;\n private _loading = false;\n\n constructor(\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n @Inject(DOCUMENT) private _document: any,\n protected _zone: NgZone,\n ) {\n this._element = this._elementRef.nativeElement;\n this._zone.onStable.pipe(takeWhile((_) => this._alive)).subscribe((_) => {\n if (this._loading && this._loader) {\n this.setPosition();\n }\n });\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n this.hide();\n }\n\n private show() {\n if (this._loader === null || this._loader === undefined) {\n this._loader = this._renderer.createElement('div');\n this._loader.setAttribute('class', 'loader');\n }\n\n if ((this._mask === null || this._mask === undefined) && this.mask) {\n this._mask = this._renderer.createElement('div');\n this._mask.setAttribute('class', 'loader-mask');\n }\n\n if (this.mask) {\n this._renderer.appendChild(this.appendToBody ? this._document.body : this._element, this._mask);\n }\n\n this._renderer.appendChild(this.appendToBody ? this._document.body : this._element, this._loader);\n this.setPosition();\n }\n\n private hide() {\n if (this._loader && this._loader.parentElement) {\n this._renderer.removeChild(this._loader.parentElement, this._loader);\n }\n if (this._mask && this._mask.parentElement) {\n this._renderer.removeChild(this._loader.parentElement, this._mask);\n }\n }\n\n private setPosition() {\n const position = this._element.getBoundingClientRect();\n this._renderer.setStyle(this._loader, 'top', `${position.y + position.height / 2}px`);\n this._renderer.setStyle(this._loader, 'left', `${position.x + +position.width / 2}px`);\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n HostListener,\n Inject,\n Injector,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n TemplateRef,\n Type,\n} from '@angular/core';\nimport { merge } from 'rxjs';\nimport { filter, takeWhile, tap } from 'rxjs/operators';\n\nimport { Align } from '../../common/enum/align.enum';\nimport { VerticalAlign } from '../../common/enum/vertical-align.enum';\nimport { ClickService } from '../../common/service/click.service';\nimport { DynamicComponentService } from '../../common/service/dynamic-component.service';\nimport { DomUtil } from '../../common/util/dom-util';\nimport { PositionUtil } from '../../common/util/position-util';\nimport { DynamicContentBaseDirective } from '../dynamic-content-base.directive';\n\n@Directive({\n selector: '[tetaTooltip]',\n standalone: true,\n})\nexport class TooltipDirective extends DynamicContentBaseDirective implements OnDestroy, OnInit {\n /**\n * Строка, шаблон или компонент для создания контекстного меню\n */\n @Input() tetaTooltip?: string | TemplateRef<any> | Type<any> | null | undefined = null;\n @Input() override align: Align = Align.center;\n @Input() override verticalAlign: VerticalAlign = VerticalAlign.top;\n private _componentRect: any;\n\n get _dynamicContent() {\n return this.tetaTooltip;\n }\n\n constructor(\n @Inject(DOCUMENT)\n protected override _document: any,\n protected override _elementRef: ElementRef,\n protected override _service: DynamicComponentService,\n protected override _injector: Injector,\n protected override _zone: NgZone,\n protected override _cdr: ChangeDetectorRef,\n private _click: ClickService,\n ) {\n super(_document, _elementRef, _service, _injector, _zone, _cdr);\n }\n\n @HostListener('click', ['$event'])\n showContent(event: MouseEvent): void {\n event.preventDefault();\n this.createTooltip();\n }\n\n ngOnInit() {\n merge(this._click.click, this._click.contextMenu)\n .pipe(\n takeWhile(() => this._alive),\n filter(() => this._open),\n filter(() => this._componentRef != null),\n filter((event: MouseEvent) => !DomUtil.clickedInside(this._elementRef.nativeElement, event)),\n filter((event: MouseEvent) => !DomUtil.clickedInside(this._componentRef?.location.nativeElement, event)),\n tap((_) => this.destroyContentRef()),\n )\n .subscribe();\n }\n\n protected setPosition() {\n if (this._componentRef && this._open) {\n if (!this._componentRect) {\n this._componentRect = this._componentRef.location.nativeElement.getBoundingClientRect();\n }\n const containerPosition = this._elementRef.nativeElement.getBoundingClientRect();\n const position = PositionUtil.getPosition(\n containerPosition,\n this._componentRect,\n this.align,\n this.verticalAlign,\n 0,\n 12,\n );\n PositionUtil.setElementPosition(this._componentRef.location.nativeElement, position);\n const verticalClass = containerPosition.top < position.top ? 'tooltip_bottom' : 'tooltip_top';\n this._componentRef.instance.addClass(verticalClass);\n }\n }\n\n private createTooltip(): void {\n this._componentRef = this.createContentRef('tooltip');\n }\n}\n","import { Directive, ElementRef, OnInit, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[tetaNoAutofill]',\n standalone: true,\n})\n\n/**\n * Disable autofill inputs in Chrome. Append hidden inputs with text/password type, to element.\n */\nexport class NoAutofillDirective implements OnInit {\n constructor(\n private _renderer: Renderer2,\n private _elementRef: ElementRef,\n ) {}\n\n ngOnInit() {\n const inputsTypes = ['text', 'password'];\n\n inputsTypes.forEach((_) => {\n const inputElement = this._renderer.createElement('input');\n this._renderer.setAttribute(inputElement, 'type', _);\n this._renderer.setAttribute(inputElement, 'class', 'position-absolute');\n this._renderer.setStyle(inputElement, 'left', '-9999px');\n this._renderer.insertBefore(\n this._elementRef.nativeElement,\n inputElement,\n this._elementRef.nativeElement.firstChild,\n );\n });\n }\n}\n","import { Directive, ElementRef, Inject, Input, OnChanges, PLATFORM_ID, SimpleChanges } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n@Directive({\n selector: '[tetaScrollIntoView]',\n standalone: true,\n})\nexport class ScrollIntoViewDirective implements OnChanges {\n @Input() tetaScrollIntoView: boolean | undefined;\n @Input() behavior: ScrollBehavior = 'smooth';\n @Input() block: ScrollLogicalPosition = 'end';\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: any,\n private elementRef: ElementRef,\n ) {}\n\n ngOnChanges(simpleChange: SimpleChanges) {\n if (isPlatformBrowser(this.platformId)) {\n if (coerceBooleanProperty(this.tetaScrollIntoView)) {\n (this.elementRef.nativeElement as HTMLInputElement).scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n });\n }\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { prependZero } from '../util/number-helper';\n\n@Pipe({\n name: 'tetaPrependZero',\n standalone: true,\n})\nexport class PrependZeroPipe implements PipeTransform {\n transform(value: number, length: number): string {\n if (value === null || value === undefined) {\n return '';\n }\n value /= 1;\n return prependZero(value, length);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslocoService } from '@jsverse/transloco';\nimport dayjs from 'dayjs';\nimport isLeapYear from 'dayjs/plugin/isLeapYear';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\n\n@Pipe({\n name: 'tetaDate',\n standalone: true,\n})\nexport class TetaDatePipe implements PipeTransform {\n dateFormatMap: Map<string, string> = new Map().set('ru', 'D MMM, YYYY h:mm').set('en', 'MMM D, YYYY h:mm A');\n constructor(private _transloco: TranslocoService) {}\n\n transform(value: Date, format?: string, timez?: string, locale?: string): string {\n if (value == null) {\n return '';\n }\n dayjs.extend(isLeapYear);\n dayjs.extend(utc);\n dayjs.extend(timezone);\n const activeLang = this._transloco?.getActiveLang();\n let date = dayjs(value);\n\n if (timez) {\n date = date.tz(timez);\n }\n\n const params = {\n locale: locale || activeLang,\n };\n return typeof format === 'string'\n ? date.locale(params.locale).format(format).toString()\n : date.locale(params.locale).format(this.dateFormatMap.get(params.locale)).toString();\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable, OnDestroy } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class OverlayContainerService implements OnDestroy {\n private _containerClass = 'overlay-container';\n private _container?: HTMLElement;\n\n constructor(@Inject(DOCUMENT) private document$: any) {}\n\n getContainer(): HTMLElement | undefined {\n if (!this._container) {\n this.createContainer();\n }\n return this._container;\n }\n\n private createContainer(): void {\n const container = this.document$.createElement('div');\n container.classList.add(this._containerClass);\n this.document$.body.appendChild(container);\n this._container = container;\n }\n\n private removeContainer(): void {\n if (this._container && this._container.parentNode) {\n this._container.parentNode.removeChild(this._container);\n }\n }\n\n ngOnDestroy(): void {\n this.removeContainer();\n }\n}\n","import { toPng, toBlob, toCanvas, toJpeg, toSvg, toPixelData } from 'html-to-image';\n\nexport enum ExportType {\n png,\n svg,\n jpeg,\n blob,\n canvas,\n pixelData,\n}\n\nexport type ExportOptions = {\n filter: (node: HTMLElement) => boolean;\n};\n\nconst renderMapping = new Map<ExportType, any>()\n .set(ExportType.blob, toBlob)\n .set(ExportType.png, toPng)\n .set(ExportType.canvas, toCanvas)\n .set(ExportType.jpeg, toJpeg)\n .set(ExportType.svg, toSvg)\n .set(ExportType.pixelData, toPixelData);\n\nexport const exportDomToImage = (node: HTMLElement, type = ExportType.png, options?: ExportOptions) => {\n const render = renderMapping.get(type) ?? toPng;\n return render(node, { filter: options?.filter ?? null });\n};\n","import { TetaLocalisation } from './teta-localisation';\n\nexport const ruLocale: TetaLocalisation = {\n apply: 'Применить',\n cancel: 'Отменить',\n clear: 'Очистить',\n dateRangeMask: 'дд.мм.гггг - дд.мм.гггг',\n dateMask: 'дд.мм.гггг',\n dateTimeMask: 'дд.мм.гггг, чч:мм',\n pin: 'Закрепить',\n unpin: 'Открепить',\n sortAsc: 'Сортировать по возрастанию',\n sortDesc: 'Сортировать по убыванию',\n clearSort: 'Сбросить сортировку',\n clearAllSort: 'Сбросить все сортировки',\n clearFilter: 'Очистить фильтр',\n clearAllFilters: 'Очистить все фильтры',\n autosizeColumn: 'Авторазмер колонки',\n autosizeAll: 'Авторазмер всех колонок',\n resetColumnsSize: 'Сбросить настройки колонок',\n from: 'От',\n to: 'До',\n all: 'Все',\n min: 'Мин',\n max: 'Макс',\n sum: 'Сумма',\n avg: 'Средн',\n search: 'Поиск',\n notFound: 'Не найдено',\n selected: 'Выбрано',\n selectYear: 'Выберите год',\n notSelected: 'Не выбрано',\n yes: 'Да',\n no: 'Нет',\n months: [\n 'Январь',\n 'Февраль',\n 'Март',\n 'Апрель',\n 'Май',\n 'Июнь',\n 'Июль',\n 'Август',\n 'Сентябрь',\n 'Октябрь',\n 'Ноябрь',\n 'Декабрь',\n ],\n days: ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятниуа', 'Суббота'],\n daysShort: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],\n};\n","import { inject, InjectionToken } from '@angular/core';\nimport { Observable, share } from 'rxjs';\nimport { DOCUMENT } from '@angular/common';\n\nexport const ANIMATION_FRAME = new InjectionToken<Observable<DOMHighResTimeStamp>>(\n 'Shared Observable based on `window.requestAnimationFrame`',\n {\n factory: () => {\n const { requestAnimationFrame, cancelAnimationFrame } = inject(WINDOW);\n const animationFrame$ = new Observable<DOMHighResTimeStamp>((subscriber) => {\n let id = NaN;\n const callback = (timestamp: DOMHighResTimeStamp) => {\n subscriber.next(timestamp);\n id = requestAnimationFrame(callback);\n };\n\n id = requestAnimationFrame(callback);\n\n return () => {\n cancelAnimationFrame(id);\n };\n });\n\n return animationFrame$.pipe(share());\n },\n },\n);\n\nexport const WINDOW = new InjectionToken<Window>('An abstraction over global window object', {\n factory: () => {\n const { defaultView } = inject(DOCUMENT);\n\n if (!defaultView) {\n throw new Error('Window is not available');\n }\n\n return defaultView;\n },\n});\n","import { NgZone } from '@angular/core';\nimport { MonoTypeOperatorFunction, Observable, pipe } from 'rxjs';\n\nexport function tetaZoneFull<T>(ngZone: NgZone): MonoTypeOperatorFunction<T> {\n return (source) =>\n new Observable((subscriber) =>\n source.subscribe({\n next: (value) => ngZone.run(() => subscriber.next(value)),\n error: (error: unknown) => ngZone.run(() => subscriber.error(error)),\n complete: () => ngZone.run(() => subscriber.complete()),\n }),\n );\n}\n\nexport function tetaZoneFree<T>(ngZone: NgZone): MonoTypeOperatorFunction<T> {\n return (source) => new Observable((subscriber) => ngZone.runOutsideAngular(() => source.subscribe(subscriber)));\n}\n\nexport function tetaZoneOptimized<T>(ngZone: NgZone): MonoTypeOperatorFunction<T> {\n return pipe(tetaZoneFree(ngZone), tetaZoneFull(ngZone));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.IconService","i1.ThemeSwitchService","takeWhile","map","filter","i1.DynamicComponentService","i1","i2.TetaConfigService","i3","i1.TetaConfigService","tap","i1.RadioComponent","i1.MessageService","i1.CurrentModal","i2","i1.ModalService","i1.SwitchService","i1.TableService","i2.ClickService","i1.DragDropService","i1.DragSortContainerDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tetacom-ng-components.mjs","sources":["../../src/component/accordion/accordion/accordion.component.ts","../../src/component/accordion/accordion/accordion.component.html","../../src/component/accordion/accordion-content.directive.ts","../../src/component/accordion/accordion-item/accordion-item.component.ts","../../src/component/accordion/accordion-item/accordion-item.component.html","../../src/common/enum/teta-size.enum.ts","../../src/component/icon/icon.service.ts","../../src/component/icon/icon-sprite.directive.ts","../../src/component/icon/icon/icon.component.ts","../../src/component/icon/icon/icon.component.html","../../src/component/accordion/accordion-head/accordion-head.component.ts","../../src/component/accordion/accordion-head/accordion-head.component.html","../../src/component/avatar/model/avatar-color.enum.ts","../../src/component/avatar/avatar/avatar.component.ts","../../src/component/avatar/avatar/avatar.component.html","../../src/component/autocomplete/autocomplete/autocomplete.component.ts","../../src/component/autocomplete/autocomplete/autocomplete.component.html","../../src/component/button/button/button.component.ts","../../src/component/button/button/button.component.html","../../src/component/chart-3d/model/chart-3d-options.ts","../../src/component/theme-switch/theme-switch.service.ts","../../src/component/chart-3d/chart3d/chart3d.component.ts","../../src/component/chart-3d/chart3d/chart3d.component.html","../../src/component/checkbox/checkbox/checkbox.component.ts","../../src/component/checkbox/checkbox/checkbox.component.html","../../src/common/enum/align.enum.ts","../../src/common/enum/vertical-align.enum.ts","../../src/component/date-picker/base-picker.ts","../../src/locale/en.ts","../../src/locale/teta-config.service.ts","../../src/component/date-picker/model/day-model.ts","../../src/component/date-picker/base-calendar.ts","../../src/component/date-picker/year-picker/scroll-to-selected-year.directive.ts","../../src/component/date-picker/year-picker/year-picker.component.ts","../../src/component/date-picker/year-picker/year-picker.component.html","../../src/component/date-picker/month-picker/month-picker.component.ts","../../src/component/date-picker/month-picker/month-picker.component.html","../../src/component/date-picker/day-picker/day-item/day-item.component.ts","../../src/component/date-picker/day-picker/day-item/day-item.component.html","../../src/component/date-picker/day-picker/day-picker.component.ts","../../src/component/date-picker/day-picker/day-picker.component.html","../../src/component/date-picker/date-picker/date-calendar/date-calendar.component.ts","../../src/component/date-picker/date-picker/date-calendar/date-calendar.component.html","../../src/component/dropdown/dropdown-content.directive.ts","../../src/common/contract/dynamic-data.ts","../../src/common/contract/teta-content-ref.ts","../../src/common/service/dynamic-component.service.ts","../../src/common/util/array-util.ts","../../src/common/util/dom-util.ts","../../src/common/util/position-util.ts","../../src/component/dynamic-component/popup-content/popup-content.component.ts","../../src/component/dynamic-component/popup-content/popup-content.component.html","../../src/directive/dynamic-content-base.directive.ts","../../src/directive/hint/hint.directive.ts","../../src/component/input/input/input.component.ts","../../src/component/input/input/input.component.html","../../src/component/dropdown/dropdown-head.directive.ts","../../src/component/dropdown/dropdown-base.ts","../../src/component/dropdown/dropdown/dropdown.component.ts","../../src/component/dropdown/dropdown/dropdown.component.html","../../src/component/date-picker/date-picker/date-picker.component.ts","../../src/component/date-picker/date-picker/date-picker.component.html","../../src/component/date-picker/date-range/range-calendar/range-calendar.component.ts","../../src/component/date-picker/date-range/range-calendar/range-calendar.component.html","../../src/component/date-picker/date-range/date-range.component.ts","../../src/component/date-picker/date-range/date-range.component.html","../../src/component/date-picker/model/date-period.ts","../../src/component/date-picker/model/date-picker-mode.enum.ts","../../src/component/delimiter/delimiter/delimiter.component.ts","../../src/component/delimiter/delimiter/delimiter.component.html","../../src/component/dropdown/dropdown.directive.ts","../../src/component/toolbar/toolbar/toolbar.component.ts","../../src/component/toolbar/toolbar/toolbar.component.html","../../src/component/expand-card/expand-card/expand-card.component.ts","../../src/component/expand-card/expand-card/expand-card.component.html","../../src/component/expand-card/expand-item/expand-item.component.ts","../../src/component/expand-card/expand-item/expand-item.component.html","../../src/component/expand-panel/expand-panel-content.directive.ts","../../src/component/expand-panel/expand-panel-head.directive.ts","../../src/component/expand-panel/expand-panel/expand-panel.component.ts","../../src/component/expand-panel/expand-panel/expand-panel.component.html","../../src/component/file-upload/file-upload-area/file-upload-area.component.ts","../../src/component/file-upload/file-upload-area/file-upload-area.component.html","../../src/component/file-upload/file-item/file-item.component.ts","../../src/component/file-upload/file-item/file-item.component.html","../../src/component/filter/contarct/date-filter-value.ts","../../src/util/string-util.ts","../../src/component/filter/base/filter-base.ts","../../src/component/filter/contarct/date-filter.ts","../../src/component/filter/enum/string-filter-type.enum.ts","../../src/component/filter/contarct/string-filter.ts","../../src/component/filter/contarct/numeric-filter.ts","../../src/component/filter/enum/list-filter-type.enum.ts","../../src/component/filter/contarct/list-filter.ts","../../src/component/filter/contarct/sort-param.ts","../../src/component/filter/contarct/numeric-filter-value.ts","../../src/component/filter/contarct/boolean-filter.ts","../../src/component/filter/contarct/filter-state.ts","../../src/component/filter/base/filter-component-base.ts","../../src/component/filter/contarct/filter-item.ts","../../src/component/filter/date-filter/date-filter.component.ts","../../src/component/filter/date-filter/date-filter.component.html","../../src/directive/scrollable/scrollable.directive.ts","../../src/directive/let/let.directive.ts","../../src/directive/scrollable/scrollable/scrollable.component.ts","../../src/directive/scrollable/scrollable/scrollable.component.html","../../src/pipe/util/number-helper.ts","../../src/pipe/number-pipe/number.pipe.ts","../../src/directive/only-number/only-number.directive.ts","../../src/component/input/text-field/text-field.component.ts","../../src/component/input/text-field/text-field.component.html","../../src/component/filter/list-filter/list-filter.component.ts","../../src/component/filter/list-filter/list-filter.component.html","../../src/component/filter/numeric-filter/numeric-filter.component.ts","../../src/component/filter/numeric-filter/numeric-filter.component.html","../../src/component/filter/string-filter/string-filter.component.ts","../../src/component/filter/string-filter/string-filter.component.html","../../src/component/radio/radio/radio.component.ts","../../src/component/radio/radio/radio.component.html","../../src/component/radio/radio-button/radio-button.component.ts","../../src/component/radio/radio-button/radio-button.component.html","../../src/component/filter/boolean-filter/boolean-filter.component.ts","../../src/component/filter/boolean-filter/boolean-filter.component.html","../../src/component/filter/enum/filter-type.enum.ts","../../src/component/filter/contarct/filter-component-map.ts","../../src/component/filter/filter-host/filter-host.component.ts","../../src/component/icon/icon-file/icon-file.component.ts","../../src/component/icon/icon-file/icon-file.component.html","../../src/component/input/color-input/color-input.component.ts","../../src/component/input/color-input/color-input.component.html","../../src/component/input/form-group-title/form-group-title.component.ts","../../src/component/input/form-group-title/form-group-title.component.html","../../src/component/message/message.service.ts","../../src/component/message/model/message.ts","../../src/component/message/message/message.component.ts","../../src/component/message/message/message.component.html","../../src/component/message/message-host/message-host.component.ts","../../src/component/message/message-host/message-host.component.html","../../src/component/modal/model/modal-close-reason.enum.ts","../../src/component/modal/modal-container/modal-container.component.ts","../../src/component/modal/modal-container/modal-container.component.html","../../src/component/modal/model/current-modal.ts","../../src/component/modal/dialog/dialog.component.ts","../../src/component/modal/dialog/dialog.component.html","../../src/component/modal/modal.module.ts","../../src/component/modal/model/modal-instance.ts","../../src/component/modal/modal.service.ts","../../src/component/modal/dialog.service.ts","../../src/component/pager/pager/pager.component.ts","../../src/component/pager/pager/pager.component.html","../../src/component/pager/model/pager-state.ts","../../src/component/pager/util/pager-util.ts","../../src/component/panel/panel/panel.component.ts","../../src/component/panel/panel/panel.component.html","../../src/component/progress-bar/progress-bar/progress-bar.component.ts","../../src/component/progress-bar/progress-bar/progress-bar.component.html","../../src/util/is-function.ts","../../src/util/bool-or-func.ts","../../src/util/forms-util.ts","../../src/component/property-grid/property-grid/property-grid-item-description.directive.ts","../../src/component/toggle/toggle/toggle.component.ts","../../src/component/toggle/toggle/toggle.component.html","../../src/component/select/select-option.directive.ts","../../src/component/select/select-value.directive.ts","../../src/directive/highlight/highlight.directive.ts","../../src/component/select/select/select.component.ts","../../src/component/select/select/select.component.html","../../src/directive/disable-control/disable-control.directive.ts","../../src/component/property-grid/property-grid/property-grid-item/property-grid-item.component.ts","../../src/component/property-grid/property-grid/property-grid-item/property-grid-item.component.html","../../src/component/property-grid/property-grid/property-grid-group/property-grid-group.component.ts","../../src/component/property-grid/property-grid/property-grid-group/property-grid-group.component.html","../../src/component/property-grid/property-grid/property-grid.component.ts","../../src/component/property-grid/property-grid/property-grid.component.html","../../src/component/sidebar/sidebar-position.enum.ts","../../src/component/sidebar/sidebar/sidebar.component.ts","../../src/component/sidebar/sidebar/sidebar.component.html","../../src/component/switch/switch.service.ts","../../src/component/switch/switch/switch.component.ts","../../src/component/switch/switch/switch.component.html","../../src/component/switch/switch-button/switch-button.component.ts","../../src/component/switch/switch-button/switch-button.component.html","../../src/component/table/enum/edit-event.enum.ts","../../src/component/table/enum/edit-type.enum.ts","../../src/component/table/enum/select-type.enum.ts","../../src/util/date-util.ts","../../src/component/table/contract/column-reorder-event.ts","../../src/component/table/contract/table-column.ts","../../src/component/table/contract/table-column-store.ts","../../src/component/table/contract/table-row.ts","../../src/component/table/util/state-util.ts","../../src/component/table/service/table.service.ts","../../src/component/table/enum/aggregation-type.enum.ts","../../src/component/table/base/cell-component-base.ts","../../src/component/table/default/numeric-cell/numeric-cell.component.ts","../../src/component/table/default/numeric-cell/numeric-cell.component.html","../../src/component/table/default/date-cell/date-cell.component.ts","../../src/component/table/default/date-cell/date-cell.component.html","../../src/component/table/default/list-cell/list-cell.component.ts","../../src/component/table/default/list-cell/list-cell.component.html","../../src/component/table/default/string-cell/string-cell.component.ts","../../src/component/table/default/string-cell/string-cell.component.html","../../src/component/table/default/boolean-cell/boolean-cell.component.ts","../../src/component/table/default/boolean-cell/boolean-cell.component.html","../../src/component/table/contract/cell-components-map.ts","../../src/component/table/cell-host/cell-host.component.ts","../../src/component/table/cell/cell.component.ts","../../src/component/table/cell/cell.component.html","../../src/component/table/selection-cell/selection-cell.component.ts","../../src/component/table/selection-cell/selection-cell.component.html","../../src/component/table/table-row/table-row.component.ts","../../src/component/table/table-row/table-row.component.html","../../src/component/table/table-body/table-body.component.ts","../../src/component/table/table-body/table-body.component.html","../../src/common/service/click.service.ts","../../src/directive/context-menu/context-menu.directive.ts","../../src/component/table/util/table-util.ts","../../src/component/table/contract/column-resize-event.ts","../../src/component/tree/tree.service.ts","../../src/component/tree/tree-item-toggle/tree-item-toggle.component.ts","../../src/component/tree/tree-item-toggle/tree-item-toggle.component.html","../../src/directive/teta-template/teta-template.directive.ts","../../src/component/tree/tree-item/tree-item.component.ts","../../src/component/tree/tree-item/tree-item.component.html","../../src/component/tree/tree/tree.component.ts","../../src/component/tree/tree/tree.component.html","../../src/component/table/table-head/visibility-dropdown-tab/visibility-dropdown-tab.component.ts","../../src/component/table/table-head/visibility-dropdown-tab/visibility-dropdown-tab.component.html","../../src/component/table/table-head/filter-dropdown-tab/filter-dropdown-tab.component.ts","../../src/component/table/table-head/filter-dropdown-tab/filter-dropdown-tab.component.html","../../src/component/table/contract/sort-event.ts","../../src/component/table/table-head/main-dropdown-tab/main-dropdown-tab.component.ts","../../src/component/table/table-head/main-dropdown-tab/main-dropdown-tab.component.html","../../src/directive/resize-drag/resize-drag.directive.ts","../../src/component/tabs/tab-content.directive.ts","../../src/component/tabs/tab-title.directive.ts","../../src/component/tabs/tab/tab.component.ts","../../src/component/tabs/tabs/tabs.component.ts","../../src/component/tabs/tabs/tabs.component.html","../../src/component/table/head-cell-dropdown/head-cell-dropdown.component.ts","../../src/component/table/head-cell-dropdown/head-cell-dropdown.component.html","../../src/component/table/base/head-cell-component-base.ts","../../src/component/table/default/default-head-cell/default-head-cell.component.ts","../../src/component/table/default/default-head-cell/default-head-cell.component.html","../../src/component/table/head-cell-host/head-cell-host.component.ts","../../src/component/table/head-cell/head-cell.component.ts","../../src/component/table/head-cell/head-cell.component.html","../../src/component/table/table-head-group/table-head-group.component.ts","../../src/component/table/table-head-group/table-head-group.component.html","../../src/component/table/selection-head-cell/selection-head-cell.component.ts","../../src/component/table/selection-head-cell/selection-head-cell.component.html","../../src/component/table/table-head/table-head.component.ts","../../src/component/table/table-head/table-head.component.html","../../src/component/table/table/table.component.ts","../../src/component/table/table/table.component.html","../../src/component/table/default/date-time-cell/date-time-cell.component.ts","../../src/component/table/default/date-time-cell/date-time-cell.component.html","../../src/component/table/base/detail-component-base.ts","../../src/component/table/public-api.ts","../../src/component/tabs/public-api.ts","../../src/component/theme-switch/theme-switch/theme-switch.component.ts","../../src/component/theme-switch/theme-switch/theme-switch.component.html","../../src/component/toolbar/public-api.ts","../../src/component/stepper/stepper/stepper.component.ts","../../src/component/stepper/stepper/stepper.component.html","../../src/component/divider/divider/divider.component.ts","../../src/component/divider/divider/divider.component.html","../../src/component/resize-panel/resize-panel/resize-panel.component.ts","../../src/component/resize-panel/resize-panel/resize-panel.component.html","../../src/component/public-api.ts","../../src/directive/auto-position/auto-position.directive.ts","../../src/directive/click-outside/click-outside.directive.ts","../../src/directive/drag-drop/drag-preview.directive.ts","../../src/directive/drag-drop/model/drag-container-instance.ts","../../src/directive/drag-drop/drag-drop.service.ts","../../src/directive/drag-drop/drag-container.directive.ts","../../src/directive/drag-drop/model/drag-instance.ts","../../src/directive/drag-drop/drag.directive.ts","../../src/directive/drag-drop/drag-placeholder.directive.ts","../../src/directive/drag-sort/drag-sort-container.directive.ts","../../src/directive/drag-sort/drag-sort-item.directive.ts","../../src/directive/loader/loader.directive.ts","../../src/directive/tooltip/tooltip.directive.ts","../../src/directive/no-autofill/no-autofill.directive.ts","../../src/directive/scroll-into-view/scroll-into-view.directive.ts","../../src/pipe/prepend-zero/prepend-zero.pipe.ts","../../src/pipe/date-pipe/teta-date.pipe.ts","../../src/common/service/overlay-container.service.ts","../../src/util/export-dom-image.ts","../../src/locale/ru.ts","../../src/observable/animation-frame.ts","../../src/observable/zone-observable.ts","../../src/tetacom-ng-components.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'teta-accordion',\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class AccordionComponent {\n @HostBinding('class.accordion') private readonly accordionClassName = true;\n}\n","<ng-content></ng-content>\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaAccordionContent]',\n standalone: true,\n})\nexport class AccordionContentDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n HostBinding,\n Inject,\n Input,\n Optional,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\nimport { AccordionComponent } from '../accordion/accordion.component';\nimport { AccordionContentDirective } from '../accordion-content.directive';\nimport { viewType } from '../../../common/model/view-type.model';\n\n@Component({\n selector: 'teta-accordion-item',\n templateUrl: './accordion-item.component.html',\n styleUrls: ['./accordion-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet]\n})\nexport class AccordionItemComponent {\n @ContentChild(AccordionContentDirective, { static: false })\n content?: AccordionContentDirective;\n\n @HostBinding('class.accordion-item_active')\n @Input()\n open = false;\n @Input()\n disabled = false;\n @HostBinding('class.accordion-item') private readonly accordionItemClass = true;\n\n @Input()\n divider: boolean = false;\n @HostBinding('class.accordion-item_divider') get dividerClass() {\n return this.divider;\n }\n\n @Input()\n viewType: viewType = 'rounded';\n @HostBinding(`class`)\n get class() {\n return `accordion-item_${this.viewType}`;\n }\n\n private readonly accordion$: AccordionComponent;\n\n constructor(\n @Optional() @Inject(AccordionComponent) accordion: AccordionComponent,\n private cdr$: ChangeDetectorRef,\n ) {\n this.accordion$ = accordion;\n }\n\n toggle() {\n this.open = !this.open;\n this.cdr$.detectChanges();\n }\n}\n","<ng-content select=\"teta-accordion-head\"></ng-content>\n@if (open) {\n <div class=\"accordion-content\">\n <ng-container *ngTemplateOutlet=\"content!.template\"></ng-container>\n </div>\n}\n","export enum TetaSize {\n XS,\n S,\n M,\n L,\n XL,\n}\n","import { Inject, Injectable, Renderer2, RendererFactory2 } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { HttpBackend, HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IconService {\n private static _loaded: string[] = [];\n private static _pending: string[] = [];\n private _renderer: Renderer2;\n\n constructor(\n @Inject(DOCUMENT) protected _document: any,\n private _rendererFactory: RendererFactory2,\n private _httpBackend: HttpBackend,\n private _http: HttpClient,\n ) {\n this._renderer = this._rendererFactory.createRenderer(null, null);\n }\n\n addSprite(url: string, bypassInterceptors: boolean = true) {\n if (IconService._loaded.indexOf(url) < 0 && IconService._pending.indexOf(url) < 0) {\n IconService._pending.push(url);\n this.getSVG(url, bypassInterceptors).subscribe((svg) => {\n IconService._pending = IconService._pending.filter((_) => _ !== url);\n IconService._loaded.push(url);\n this._renderer.insertBefore(this._document.body, svg, this._document.body.firstChild);\n });\n }\n }\n\n private getSVG(url: string, bypassInterceptors: boolean = true): Observable<SVGElement> {\n const http = bypassInterceptors ? new HttpClient(this._httpBackend) : this._http;\n return http.get(url, { responseType: 'text' }).pipe(\n map((svgText: string) => {\n const svgEl = this.svgElementFromString(svgText);\n return this.cloneSVG(svgEl);\n }),\n );\n }\n\n private svgElementFromString(str: string): SVGElement | never {\n const div = this._renderer.createElement('DIV');\n div.innerHTML = str;\n const svg = div.querySelector('svg') as SVGElement;\n if (!svg) {\n throw new Error('No SVG found in loaded contents');\n }\n return svg;\n }\n\n private cloneSVG(svg: SVGElement): SVGElement {\n return svg.cloneNode(true) as SVGElement;\n }\n}\n","import { Directive, Input, OnInit } from '@angular/core';\nimport { IconService } from './icon.service';\n\n@Directive({\n selector: '[tetaIconSprite]',\n standalone: true,\n})\nexport class IconSpriteDirective implements OnInit {\n @Input() tetaIconSprite: string | string[];\n @Input() bypassInterceptors = true;\n\n constructor(private _iconService: IconService) {}\n\n ngOnInit(): void {\n if (typeof this.tetaIconSprite === 'string') {\n this._iconService.addSprite(this.tetaIconSprite, this.bypassInterceptors);\n }\n if (this.tetaIconSprite instanceof Array && this.tetaIconSprite?.length) {\n this.tetaIconSprite.forEach((sprite: string) => {\n this._iconService.addSprite(sprite, this.bypassInterceptors);\n });\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\nimport { TetaSize } from '../../../common/enum/teta-size.enum';\nimport { IconSpriteDirective } from '../icon-sprite.directive';\n\n@Component({\n selector: 'teta-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n imports: [IconSpriteDirective],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class IconComponent {\n @Input() name: string;\n @Input() size: TetaSize = TetaSize.M;\n @Input() palette: string;\n\n @Input() class;\n\n @HostBinding('class')\n private get getClass(): string {\n const result = [this.class, 'icon'];\n if (this.palette) {\n result.push(`icon-${this.palette}`);\n }\n switch (this.size) {\n case TetaSize.XL:\n result.push(`icon-xl`);\n break;\n case TetaSize.L:\n result.push(`icon-l`);\n break;\n case TetaSize.M:\n result.push(`icon-m`);\n break;\n case TetaSize.S:\n result.push(`icon-s`);\n break;\n case TetaSize.XS:\n result.push(`icon-xs`);\n break;\n }\n return result.join(' ');\n }\n\n getName(): string {\n return `#${this.name}`;\n }\n}\n","<svg class=\"icon__image\" style=\"width: 100%; height: 100%\">\n <use [attr.xlink:href]=\"getName()\"></use>\n</svg>\n","import {\n ChangeDetectionStrategy,\n Component,\n Host,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnInit,\n} from '@angular/core';\nimport { AccordionItemComponent } from '../accordion-item/accordion-item.component';\nimport { IconComponent } from '../../icon/icon/icon.component';\n\n@Component({\n selector: 'teta-accordion-head',\n templateUrl: './accordion-head.component.html',\n styleUrls: ['./accordion-head.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [IconComponent]\n})\nexport class AccordionHeadComponent implements OnInit {\n @HostBinding('class.accordion-head') private readonly accordionHeadClass = true;\n\n @Input() showToggle = true;\n\n private readonly accordionItem$: AccordionItemComponent;\n\n constructor(\n @Host()\n @Inject(AccordionItemComponent)\n accordionItem: AccordionItemComponent,\n ) {\n this.accordionItem$ = accordionItem;\n }\n\n @HostListener('click')\n toggle(): void {\n if (this.disabled) {\n return;\n }\n this.accordionItem$.toggle();\n }\n\n @HostBinding('class.accordion-head_open')\n get open(): boolean {\n return this.accordionItem$.open;\n }\n\n @HostBinding('class.accordion-head_disabled')\n get disabled(): boolean {\n return this.accordionItem$.disabled;\n }\n\n ngOnInit() {}\n}\n","<ng-content></ng-content>\n@if (showToggle) {\n <div class=\"accordion-toggle\" [class.accordion-toggle_opened]=\"open\">\n <teta-icon [name]=\"'arrowDownKey'\"></teta-icon>\n </div>\n}\n","export enum AvatarColorEnum {\n vibrant,\n nebula,\n gorgonzola,\n lagoon,\n lime,\n pumpkin,\n vanity,\n navy,\n turquoise,\n greyish,\n heart,\n gloomy,\n rockman,\n hair,\n cerise,\n iris,\n caribbean,\n poisonous,\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { AvatarColorEnum } from '../model/avatar-color.enum';\nimport { viewType } from '../../../common/model/view-type.model';\nimport { IconComponent } from '../../icon/icon/icon.component';\n\n@Component({\n selector: 'teta-avatar',\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [IconComponent]\n})\nexport class AvatarComponent implements OnInit {\n @Input() photo?: string | ArrayBuffer;\n @Input() name?: string;\n @Input() id?: number = 0;\n @Input() viewType?: viewType;\n @Input() size?: '24' | '28' | '32' | '44' | '64' | '128' | '200' = '28';\n\n @HostBinding('class') get avatar() {\n let avatar = 'avatar ';\n avatar += 'avatar-size-' + this.size;\n return avatar;\n }\n\n public colorMap: Map<AvatarColorEnum, string> = new Map<AvatarColorEnum, string>()\n .set(AvatarColorEnum.vibrant, '#FAB13C')\n .set(AvatarColorEnum.pumpkin, '#F67A1A')\n .set(AvatarColorEnum.heart, '#CC3E3E')\n .set(AvatarColorEnum.cerise, '#EB3673')\n .set(AvatarColorEnum.nebula, '#9121A3')\n .set(AvatarColorEnum.vanity, '#9C2AD6')\n .set(AvatarColorEnum.gloomy, '#855EE1')\n .set(AvatarColorEnum.iris, '#5350D1')\n .set(AvatarColorEnum.gorgonzola, '#3858DA')\n .set(AvatarColorEnum.navy, '#1F7CE0')\n .set(AvatarColorEnum.rockman, '#3AA2F4')\n .set(AvatarColorEnum.caribbean, '#1CC3D9')\n .set(AvatarColorEnum.lagoon, '#1D96AE')\n .set(AvatarColorEnum.turquoise, '#1F9D8C')\n .set(AvatarColorEnum.hair, '#1EAE66')\n .set(AvatarColorEnum.poisonous, '#33C333')\n .set(AvatarColorEnum.lime, '#80C026')\n .set(AvatarColorEnum.greyish, '#7F8697');\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<div [class]=\"avatar\">\n @if (photo) {\n <img [class]=\"'avatar_' + this.viewType\" [src]=\"photo\" alt=\"\" />\n } @else {\n <div\n [class]=\"'avatar_' + this.viewType\"\n [style.background-color]=\"colorMap.get(id % 17) || colorMap.get(0)\"\n class=\"column align-center justify-content-center position-relative\"\n >\n @if (name) {\n <p>{{ name }}</p>\n } @else {\n <teta-icon\n class=\"width-10 height-10\"\n style=\"fill: white;width:{{ size }}px; height:{{ size }}px\"\n name=\"photoCamera\"\n ></teta-icon>\n }\n <div\n [class]=\"'avatar_' + this.viewType\"\n class=\"position-absolute\"\n style=\"width: 100%;z-index:1;height: 100%; background: linear-gradient(180deg, rgba(255, 255, 255, 0.24) 0%, rgba(255, 255, 255, 0) 100%);'\"\n ></div>\n </div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'teta-autocomplete',\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class AutocompleteComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<p>autocomplete works!</p>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { viewType } from '../../../common/model/view-type.model';\nimport { TetaSize } from '../../../common/enum/teta-size.enum';\n\nexport type ButtonViewType = 'primary' | 'outline' | 'ghost';\n\n@Component({\n selector: 'button[teta-button], teta-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class ButtonComponent {\n @Input() palette: string;\n @Input() class;\n @Input() view: ButtonViewType = 'primary';\n @Input() square = false;\n @Input() viewType: viewType = 'rounded';\n @Input() size: TetaSize = TetaSize.M;\n\n @HostBinding('class')\n private get getClass(): string {\n const result = [this.class, 'button'];\n if (this.palette) {\n result.push(`button-${this.palette}`);\n }\n if (this.view) {\n result.push(`button_${this.view}`);\n }\n if (this.square) {\n result.push(`button-square`);\n }\n switch (this.size) {\n case TetaSize.XL:\n result.push(`button-xl`);\n break;\n case TetaSize.L:\n result.push(`button-l`);\n break;\n case TetaSize.M:\n result.push(`font-button-2`);\n result.push(`button-m`);\n break;\n case TetaSize.S:\n result.push(`font-button-3`);\n result.push(`button-s`);\n break;\n case TetaSize.XS:\n result.push(`font-button-3`);\n result.push(`button-xs`);\n break;\n }\n result.push(`button_${this.viewType}`);\n return result.join(' ');\n }\n}\n","<ng-content></ng-content>\n","import { Base3dPoint } from './base-3d-point';\nimport { Series3d } from './series-3d';\n\nexport class Chart3dOptions {\n axes?: {\n min?: number;\n max?: number;\n };\n\n series: Series3d<Base3dPoint>[];\n\n constructor(options?: Chart3dOptions) {\n this.axes = { ...options?.axes };\n this.series = options?.series || [];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThemeSwitchService {\n theme: Observable<boolean>;\n private theme$: BehaviorSubject<boolean>;\n\n constructor() {\n const value = this.restoreTheme();\n this.theme$ = new BehaviorSubject<boolean>(value);\n this.theme = this.theme$.asObservable();\n }\n\n switchTheme() {\n const value = !this.theme$.value;\n this.saveTheme(value);\n this.theme$.next(value);\n }\n\n saveTheme(value: boolean) {\n localStorage.setItem('theme', value.toString());\n }\n\n restoreTheme(): boolean {\n const theme = localStorage.getItem('theme');\n if (theme) {\n return JSON.parse(theme);\n }\n return true;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport * as THREE from 'three';\nimport * as d3 from 'd3';\nimport { Chart3dOptions } from '../model/chart-3d-options';\nimport { Base3dPoint } from '../model/base-3d-point';\nimport { Series3d } from '../model/series-3d';\nimport { ThemeSwitchService } from '../../theme-switch/theme-switch.service';\nimport { takeWhile, tap } from 'rxjs/operators';\nimport { OrbitControls } from 'three-stdlib';\n\n@Component({\n selector: 'teta-chart3d',\n templateUrl: './chart3d.component.html',\n styleUrls: ['./chart3d.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class Chart3dComponent implements OnInit, AfterViewInit, OnDestroy {\n @ViewChild('canvas') canvasRef: ElementRef;\n\n private _scene: THREE.Scene;\n private _camera: THREE.PerspectiveCamera;\n private _renderer: THREE.WebGLRenderer;\n private _controls: OrbitControls;\n private _obs: ResizeObserver;\n private _config: Chart3dOptions;\n\n private SIDE_SIZE = 100;\n private gridColor: any;\n private axesColor: any;\n\n private _alive = true;\n\n constructor(\n private _elementRef: ElementRef,\n private _themeService: ThemeSwitchService,\n ) {}\n\n @Input() set config(config: Chart3dOptions) {\n if (config) {\n this._config = config;\n this.init();\n }\n }\n\n get config() {\n return this._config;\n }\n\n private get canvas(): HTMLCanvasElement {\n return this.canvasRef.nativeElement;\n }\n\n ngOnInit(): void {\n this._themeService.theme\n .pipe(\n takeWhile((_) => this._alive),\n tap((_) => {\n this.gridColor = _ ? '#5d6a73' : '#bdbdc6';\n this.axesColor = _ ? '#8e8f9d' : '#7d8f9a';\n this.init();\n }),\n )\n .subscribe();\n }\n\n ngAfterViewInit() {\n this.addResizeObserver();\n this.createScene();\n this.startRenderingLoop();\n this.init();\n }\n\n ngOnDestroy() {\n this._alive = false;\n this.removeResizeObserver();\n }\n\n private init() {\n if (!this._scene) {\n return;\n }\n\n while (this._scene.children.length > 0) {\n this._scene.remove(this._scene.children[0]);\n }\n\n const { x, y, z } = this.getScales(this._config.series);\n\n this.config.series.forEach((data, idx) => {\n if (!data.points?.length) {\n return;\n }\n\n const points = data.points.map((_) => new THREE.Vector3(x(_.x), y(_.y), z(_.z)));\n\n const color = d3.scaleOrdinal(d3.schemeTableau10);\n\n const material = new THREE.LineBasicMaterial({\n color: data?.color ?? color(idx.toString()),\n });\n\n const tubeGeometry = new THREE.TubeGeometry(new THREE.CatmullRomCurve3(points), 1024, 0.5, 20, false);\n\n let tube = new THREE.Line(tubeGeometry, material);\n this._scene.add(tube);\n });\n\n const circles = x.ticks(this.SIDE_SIZE / 10);\n\n const material = new THREE.LineBasicMaterial({ color: this.axesColor });\n const pointsLines = [];\n pointsLines.push(new THREE.Vector3(0, 0, 0));\n pointsLines.push(new THREE.Vector3(0, 0, z(-z.domain()[1])));\n\n pointsLines.push(new THREE.Vector3(0, 0, 0));\n pointsLines.push(new THREE.Vector3(x(-x.domain()[1]), 0, 0));\n\n const geometryLines = new THREE.BufferGeometry().setFromPoints(pointsLines);\n const line = new THREE.Line(geometryLines, material);\n\n this._scene.add(line);\n\n circles.forEach((r) => {\n const material = new THREE.LineDashedMaterial({\n color: this.gridColor,\n dashSize: 1,\n gapSize: 3,\n });\n\n const circleGeometry = new THREE.BufferGeometry().setFromPoints(\n new THREE.Path().absarc(0, 0, x(r), 0, Math.PI * 2, false).getSpacedPoints(100),\n );\n\n const circle = new THREE.LineSegments(circleGeometry, material);\n\n circle.geometry.rotateX(-Math.PI / 2);\n\n this._scene.add(circle);\n });\n\n this.drawTicks(x, y, z);\n\n if (!this._controls) {\n this._controls = new OrbitControls(this._camera, this._renderer.domElement);\n\n this._controls.enableDamping = true;\n this._controls.enablePan = true;\n this._controls.dampingFactor = 0.25;\n this._controls.screenSpacePanning = true;\n this._controls.minDistance = 0;\n this._controls.maxDistance = 10000;\n this._controls.maxPolarAngle = Math.PI / 2;\n\n this._controls.enableZoom = true;\n }\n }\n\n private createScene() {\n this._scene = new THREE.Scene();\n\n const aspectRatio = this._elementRef.nativeElement.clientWidth / this._elementRef.nativeElement.clientHeight;\n\n const fieldOfView = 10;\n const nearClippingPane = 1;\n const farClippingPane = 10000;\n\n this._camera = new THREE.PerspectiveCamera(fieldOfView, aspectRatio, nearClippingPane, farClippingPane);\n\n this._camera.position.set(1300, 1300, 1300).setLength(1300);\n this._scene.add(this._camera);\n }\n\n private setSize(width: number, height: number) {\n this._camera.aspect = width / height;\n this._renderer.setSize(width, height);\n\n this._camera.updateProjectionMatrix();\n }\n\n private render() {\n this._renderer.render(this._scene, this._camera);\n }\n\n private startRenderingLoop() {\n this._renderer = new THREE.WebGLRenderer({\n antialias: true,\n canvas: this.canvas,\n alpha: true,\n preserveDrawingBuffer: true,\n });\n\n const animate = () => {\n requestAnimationFrame(animate);\n this._controls?.update();\n this.render();\n };\n\n animate();\n }\n\n private addResizeObserver() {\n this._obs = new ResizeObserver((_) => {\n this.setSize(_[0]?.contentRect.width, _[0]?.contentRect.height);\n });\n\n this._obs.observe(this._elementRef.nativeElement);\n }\n\n private removeResizeObserver() {\n this._obs.unobserve(this._elementRef.nativeElement);\n this._obs.disconnect();\n }\n\n private makeSprite(text: string, opts?: { fontSize?: number }): THREE.Sprite {\n const fontSize = 20;\n\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n const textWidth = text.length * 50;\n canvas.height = 50;\n canvas.width = 50;\n\n if (ctx) {\n ctx.font = `${fontSize}px Arial`;\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillStyle = '#A0A0A0';\n ctx.fillText(text, 25, 25);\n }\n\n const texture = new THREE.Texture(canvas);\n texture.minFilter = THREE.LinearFilter;\n texture.needsUpdate = true;\n const spriteMaterial = new THREE.SpriteMaterial({\n map: texture,\n });\n\n const sprite = new THREE.Sprite(spriteMaterial);\n sprite.scale.set(0.4 * fontSize, 0.4 * fontSize, 0.4 * fontSize);\n\n return sprite;\n }\n\n private drawTicks(x: any, y: any, z: any) {\n const ticks = new THREE.Object3D();\n const scalesExtrems: any[] = [];\n\n [x, y, z].forEach((scale, idx) => {\n const generatedTicks = scale.ticks(this.SIDE_SIZE / 10);\n\n scalesExtrems.push(d3.max(generatedTicks));\n\n generatedTicks.forEach((_: any) => {\n const sprite = this.makeSprite(_);\n\n if (idx === 0) {\n sprite.position.set(x(_), y(y.domain()[1]), 0);\n }\n\n if (idx === 1) {\n sprite.position.set(-10, y(_), 0);\n }\n\n if (idx === 2) {\n sprite.position.set(0, y(y.domain()[1]), z(_));\n }\n\n ticks.add(sprite);\n });\n });\n\n const northLabel = this.makeSprite('X', { fontSize: 28 });\n const westLabel = this.makeSprite('Y', { fontSize: 28 });\n const tvdLabel = this.makeSprite('TVD', { fontSize: 28 });\n\n northLabel.position.set(x(x.domain()[1]) + 5, 0, 0);\n westLabel.position.set(0, 0, y(y.domain()[0]) + 5);\n tvdLabel.position.set(0, z(z.domain()[1]) + 5, 0);\n\n ticks.add(northLabel, westLabel, tvdLabel);\n\n const axesHelper = new THREE.AxesHelper(this.SIDE_SIZE);\n axesHelper.setColors(this.axesColor, this.axesColor, this.axesColor);\n\n this._scene.add(axesHelper);\n\n this._scene.add(ticks);\n }\n\n private getScales(series: Series3d<Base3dPoint>[]) {\n const extrems = series.map((_) => ({\n x: d3.extent(_.points, (p: any) => p.x),\n y: d3.extent(_.points, (p: any) => p.y),\n z: d3.extent(_.points, (p: any) => p.z),\n }));\n\n const flattenExtrems = extrems.reduce(\n (acc: any, _): { x: [number]; y: [number]; z: [number] } => {\n acc.x = acc.x.concat(_.x);\n acc.y = acc.y.concat(_.y);\n acc.z = acc.z.concat(_.z);\n return acc as any;\n },\n { x: [], y: [], z: [] },\n );\n\n const x = d3\n .scaleLinear()\n .domain([0, this._config?.axes?.max == null ? parseInt(d3.max(flattenExtrems.x)) : this._config.axes.max])\n .range([0, this.SIDE_SIZE])\n .nice();\n\n const y = d3\n .scaleLinear()\n .domain([0, parseInt(d3.max(flattenExtrems.y), 10)])\n .range([this.SIDE_SIZE, 0]);\n\n const z = d3\n .scaleLinear()\n .domain([0, this._config?.axes?.max == null ? parseInt(d3.max(flattenExtrems.z)) : this._config.axes.max])\n .range([0, this.SIDE_SIZE])\n .nice();\n\n return { x, y, z };\n }\n}\n","<canvas #canvas></canvas>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n OnInit,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { IconComponent } from '../../icon/icon/icon.component';\n\nexport const CHECKBOX_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true,\n};\n\n@Component({\n selector: 'teta-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n providers: [CHECKBOX_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [IconComponent, NgTemplateOutlet]\n})\nexport class CheckboxComponent implements ControlValueAccessor, OnInit {\n @HostBinding('attr.tabindex') tabindex = 0;\n\n @Input() class;\n\n @HostBinding('class')\n private get getClass() {\n const result = [this.class, 'checkbox'];\n if (this.palette) {\n result.push(`checkbox-${this.palette}`);\n }\n return result.join(' ');\n }\n\n @Input() palette = 'primary';\n @Input() noLabel: boolean;\n\n /**\n * компонент неактивен\n */\n @HostBinding('class.checkbox_disabled')\n @Input()\n disabled: boolean;\n /**\n * true/false или list\n */\n @Input() value: any;\n /**\n * true/false или list\n */\n @Input() binary: boolean;\n @Input() labelPosition: 'left' | 'right' = 'right';\n @Input() allowNull: boolean;\n\n checked: boolean;\n\n /**\n * Значение\n */\n private model$: any = null;\n\n get model(): any {\n return this.model$;\n }\n\n set model(v: any) {\n if (v !== this.model$) {\n this.model$ = v;\n this.onChange(v);\n }\n }\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n @HostListener('click')\n changeValue() {\n if (this.disabled) {\n return;\n }\n if (this.binary) {\n this.model = !this.model;\n } else {\n if (!this.isChecked()) {\n this.addValue();\n } else {\n this.removeValue();\n }\n }\n this.checked = this.isChecked();\n }\n\n writeValue(model: any) {\n if (this.binary) {\n this.model$ = model;\n } else {\n if (model && model instanceof Array) {\n this.model$ = model;\n } else {\n this.model$ = [];\n }\n }\n this.checked = this.isChecked();\n this.cdr.detectChanges();\n }\n\n isChecked(): boolean {\n if (this.binary) {\n return this.allowNull ? this.model : !!this.model;\n } else {\n return this.model && this.model.indexOf(this.value) >= 0;\n }\n }\n\n removeValue() {\n this.model = this.model.filter((val: any) => val !== this.value);\n }\n\n addValue() {\n if (this.model) {\n this.model = [...this.model, this.value];\n } else {\n this.model = [this.value];\n }\n }\n\n ngOnInit() {}\n\n onChange(_: any) {}\n\n onTouched() {}\n\n registerOnChange(fn: (_: any) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.detectChanges();\n }\n}\n","@if (labelPosition === 'right') {\n <div class=\"checkbox__tick\" [class.checkbox__tick_active]=\"checked != false\">\n <teta-icon [name]=\"checked ? 'tick' : checked === false ? '' : 'dash'\"></teta-icon>\n </div>\n @if (!noLabel) {\n <span class=\"font-body-3\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </span>\n }\n}\n@if (labelPosition === 'left') {\n @if (!noLabel) {\n <span class=\"font-body-3\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </span>\n }\n <div class=\"checkbox__tick\" [class.checkbox__tick_active]=\"checked != false\">\n <teta-icon [name]=\"checked ? 'tick' : checked === false ? '' : 'dash'\"></teta-icon>\n </div>\n}\n<ng-template #content><ng-content></ng-content></ng-template>\n","export enum Align {\n left,\n right,\n center,\n auto,\n fitWidth,\n minWidth,\n outerLeft,\n outerRight,\n outerAuto,\n}\n","export enum VerticalAlign {\n top,\n bottom,\n center,\n auto,\n innerTop,\n innerBottom,\n innerAuto,\n}\n","import { DatePipe } from '@angular/common';\nimport { ChangeDetectorRef, ElementRef, EventEmitter } from '@angular/core';\nimport { MaskitoOptions } from '@maskito/core';\nimport dayjs from 'dayjs';\nimport { Observable, ReplaySubject } from 'rxjs';\n\nimport { Align } from '../../common/enum/align.enum';\nimport { VerticalAlign } from '../../common/enum/vertical-align.enum';\nimport { viewType } from '../../common/model/view-type.model';\nimport { DateFromToModel } from './model/from-to.model';\nimport { TetaLocalisation } from '../../locale/teta-localisation';\n\nexport abstract class BasePicker {\n abstract mask: string;\n abstract date;\n abstract locale: Observable<TetaLocalisation>;\n abstract showTime: boolean;\n abstract minDate: Date | string | number;\n abstract maxDate: Date | string | number;\n abstract invalid: boolean;\n abstract disabled: boolean;\n abstract align: Align;\n abstract verticalAlign: VerticalAlign;\n abstract viewType: viewType;\n abstract appendToBody: boolean;\n abstract backdrop: boolean;\n abstract allowNull: boolean;\n abstract input: ElementRef;\n abstract selectDate: EventEmitter<Date> | EventEmitter<DateFromToModel>;\n public open = false;\n abstract selectedDate: ReplaySubject<any>;\n public placeholder = '';\n public inputText: string;\n public maskitoOptions: MaskitoOptions;\n\n protected constructor(\n protected _elementRef: ElementRef,\n protected _cdr: ChangeDetectorRef,\n protected datePipe: DatePipe,\n ) {\n this.inputText = this.checkNull();\n }\n\n abstract onChange(date: Date);\n\n abstract prepareInput();\n\n abstract onBlur();\n\n abstract setDate(date);\n\n changeInput(v) {\n this.changePlaceholder(v);\n }\n\n changePlaceholder(value: string) {\n const val = this.mask.split('');\n for (let i = 0; value.length > i; i++) {\n val.splice(i, 1, value[i]);\n }\n\n this.placeholder = val.join('');\n }\n\n openChange(e: boolean) {\n if (!e) {\n this.onBlur();\n }\n this.open = e;\n }\n\n checkNull() {\n if (!this.date && this.allowNull) {\n return null;\n }\n return this.datePipe.transform(new Date(), 'dd.MM.yyyy, HH:mm');\n }\n\n openPicker = (show: boolean) => {\n if (this.disabled) {\n return;\n }\n this.open = show;\n this._cdr.markForCheck();\n };\n\n changeSelectedDate(date, selectedDate?) {\n this.setDate(date);\n this.emitValue(date);\n this.open = false;\n }\n\n emitValue(value) {\n if (this.isValueChange(value)) {\n this.date = value;\n this.selectDate.emit(value);\n this.onChange(value);\n }\n }\n\n isValueChange(value) {\n return new Date(value).getTime() !== new Date(this.date).getTime();\n }\n\n checkEnter(e) {\n if (e.key === 'Enter') {\n this.inputText = e.target.value;\n this.onBlur();\n }\n if (e.key === '-') {\n e.preventDefault();\n }\n this.open = true;\n }\n\n isAvailableLength(val: string, length: number) {\n if (val?.length) {\n return val.length === length;\n }\n return false;\n }\n\n getDateFromStr(str: string, separator = '.') {\n const date = str?.split(separator);\n const day = this.isAvailableLength(date?.[0], 2) ? Number(date[0]) : null;\n const month = this.isAvailableLength(date?.[1], 2) ? Number(date[1]) : null;\n const year = this.isAvailableLength(date?.[2], 4) ? Number(date[2]) : null;\n return { day, month, year };\n }\n\n getTimeFromStr(str: string, separator = ':') {\n const time = str?.trim().split(separator);\n const hours = this.isAvailableLength(time?.[0], 2) ? Number(time[0]) : null;\n const mins = this.isAvailableLength(time?.[1], 2) ? Number(time[1]) : null;\n return { hours, mins };\n }\n\n focus() {\n this._elementRef.nativeElement.focus();\n }\n\n getLocaleString(date: Date | number | string) {\n return new Date(date).toLocaleString(['ru'], {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour12: false,\n hour: this.showTime ? '2-digit' : undefined,\n minute: this.showTime ? '2-digit' : undefined,\n });\n }\n\n getAvailableDate(min: Date | number | string, max: Date | number | string, date: Date | number | string) {\n const minDate = this.showTime ? new Date(min) : dayjs(new Date(min)).startOf('day').toDate();\n const maxDate = this.showTime ? new Date(max) : dayjs(new Date(max)).endOf('day').toDate();\n if (min && minDate.getTime() >= new Date(date).getTime()) {\n return minDate || new Date();\n }\n if (max && maxDate.getTime() <= new Date(date).getTime()) {\n return maxDate;\n }\n return new Date(date);\n }\n}\n","import { TetaLocalisation } from './teta-localisation';\n\nexport const enLocale: TetaLocalisation = {\n apply: 'Apply',\n cancel: 'Cancel',\n clear: 'Clear',\n pin: 'Pin',\n unpin: 'Unpin',\n sortAsc: 'Sort asc',\n sortDesc: 'Sort desc',\n clearSort: 'Clear sort',\n clearAllSort: 'Clear all sort',\n clearFilter: 'Clear filter',\n clearAllFilters: 'Clear all filters',\n dateRangeMask: 'dd.mm.yyyy - dd.mm.yyyy',\n dateMask: 'dd.mm.yyyy',\n dateTimeMask: 'dd.mm.yyyy, hh:mm',\n autosizeColumn: 'Autosize column',\n autosizeAll: 'Autosize all columns',\n resetColumnsSize: 'Reset columns settings',\n from: 'From',\n to: 'To',\n all: 'All',\n min: 'Min',\n max: 'Max',\n sum: 'Sum',\n avg: 'Avg',\n search: 'Search',\n selectYear: 'Select year',\n selected: 'Selected',\n notSelected: 'Not selected',\n notFound: 'Not found',\n yes: 'Yes',\n no: 'No',\n months: [\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 days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n daysShort: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n};\n","import { Injectable } from '@angular/core';\nimport { TetaLocalisation } from './teta-localisation';\nimport { BehaviorSubject } from 'rxjs';\nimport { enLocale } from './en';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TetaConfigService {\n private defaultLocale: TetaLocalisation = enLocale;\n private locale$ = new BehaviorSubject<TetaLocalisation>(this.defaultLocale);\n locale = this.locale$.asObservable();\n\n constructor() {}\n\n setLocale(newLocale: TetaLocalisation) {\n if (newLocale) {\n this.locale$.next(newLocale);\n } else {\n this.locale$.next(this.defaultLocale);\n }\n }\n}\n","export class DayModel {\n disabled: boolean;\n isCurrentMonth: boolean;\n today: boolean;\n selected: boolean;\n date: Date;\n weekend: boolean;\n\n public constructor(options?: {\n disabled?: boolean;\n isCurrentMonth?: boolean;\n today?: boolean;\n selected?: boolean;\n date: Date;\n weekend?: boolean;\n }) {\n if (options) {\n this.disabled = options.disabled;\n this.isCurrentMonth = options.isCurrentMonth;\n this.today = options.today;\n this.selected = options.selected;\n this.date = options.date;\n this.weekend = options.weekend;\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n} from '@angular/core';\nimport dayjs, { Dayjs } from 'dayjs';\nimport { BehaviorSubject, ReplaySubject } from 'rxjs';\n\nimport { viewType } from '../../common/model/view-type.model';\nimport { DayModel } from './model/day-model';\nimport { MinMaxDateModel } from './model/min-max-date.model';\nimport { TetaLocalisation } from '../../locale/teta-localisation';\n\n@Component({\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport abstract class BaseCalendar implements OnChanges, OnDestroy {\n abstract selectedDate;\n abstract locale: TetaLocalisation;\n abstract open: boolean;\n abstract viewType: viewType;\n abstract min: Date | string | number;\n abstract isDateNull: boolean;\n abstract max: Date | string | number;\n abstract setDate: EventEmitter<Date>;\n public currentMonth: ReplaySubject<number> = new ReplaySubject<number>(1);\n public minMax: ReplaySubject<MinMaxDateModel> = new ReplaySubject<MinMaxDateModel>(1);\n public currentYear: ReplaySubject<number> = new ReplaySubject<number>(1);\n public selectedPicker: BehaviorSubject<'day' | 'month' | 'year'> = new BehaviorSubject<'day' | 'month' | 'year'>(\n 'day',\n );\n abstract calendar: DayModel[] | { currentMonth: DayModel[]; nextMonth: DayModel[] };\n\n public alive = true;\n\n protected constructor(protected _cdr: ChangeDetectorRef) {}\n\n generateCalendar(selectedDate: Dayjs, year: number, month: number, minMax: MinMaxDateModel): DayModel[] {\n const calendarStartDay = selectedDate.set('year', year).set('month', month).set('date', 1).startOf('week');\n const calendar = new Array(42).fill(1).map((v, i) => {\n return calendarStartDay.add(i, 'day');\n });\n return calendar.map((d) => {\n return new DayModel({\n date: new Date(d.toDate()),\n isCurrentMonth: month === d.month(),\n disabled: !this.isSuitableMinDate(d.toDate(), minMax.min) || !this.isSuitableMaxDate(d.toDate(), minMax.max),\n selected: this.isSelected(d.toDate(), selectedDate.toDate()),\n });\n });\n }\n\n isSuitableMinDate(d: Date, minDate: Date | string | number) {\n return dayjs(new Date(minDate)).startOf('date').toDate() <= new Date(d) || !minDate;\n }\n\n isSuitableMaxDate(d: Date, maxDate: Date | string | number) {\n return new Date(d) < dayjs(new Date(maxDate)).endOf('date').toDate() || !maxDate;\n }\n\n isSelected(date: Date, selectedDate: Date) {\n const isSelectedDate = date.getDate() === selectedDate?.getDate();\n const isSelectedYear = date.getFullYear() === selectedDate?.getFullYear();\n const isSelectedMonth = date.getMonth() === selectedDate?.getMonth();\n return isSelectedDate && isSelectedMonth && isSelectedYear && !this.isDateNull;\n }\n\n ngOnDestroy(): void {\n this.alive = false;\n }\n\n selectPicker(entity: 'day' | 'month' | 'year') {\n this.selectedPicker.next(entity);\n }\n\n selectMonth(month: number) {\n this.currentMonth.next(month);\n this.selectPicker('day');\n }\n\n selectYear(year: number) {\n this.setYear(year);\n this.selectPicker('day');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.changeCalendarData(this.selectedDate);\n if (changes['open']) {\n this.selectedPicker.next('day');\n }\n }\n\n changeCalendarData(selectedDate: Date | number | string) {\n let date: Date | string | number;\n if (!this.isSuitableMinDate(new Date(selectedDate), this.min)) {\n date = this.min;\n } else if (!this.isSuitableMaxDate(new Date(selectedDate), this.max)) {\n date = this.max;\n } else {\n date = selectedDate ? selectedDate : this.min ? this.min : this.max ? this.max : new Date();\n }\n this.currentMonth.next(new Date(date).getMonth());\n this.currentYear.next(new Date(date).getFullYear());\n this.minMax.next({ min: this.min, max: this.max });\n }\n\n setYear(year: number) {\n this.currentYear.next(year);\n }\n\n changeMonth(month: number, year: number) {\n const { availableYear, availableMonth } = this.getAvailableMonthYear(month, year);\n this.currentMonth.next(availableMonth);\n this.currentYear.next(availableYear);\n }\n\n getAvailableMonthYear(month: number, year: number) {\n if (month > 11) {\n return { availableMonth: month - 12, availableYear: year + 1 };\n }\n if (month < 0) {\n return { availableMonth: 12 + month, availableYear: year - 1 };\n }\n return { availableMonth: month, availableYear: year };\n }\n\n getMothName(month: number) {\n return this.locale.months[month];\n }\n\n selectDate(date: Date) {\n this.setDate.emit(date);\n }\n\n scrollMonth = (e: any, month: number, year: number) => {\n const delta = e?.deltaY ?? e;\n if (e instanceof WheelEvent) {\n e.preventDefault();\n }\n if (delta > 0) {\n this.changeMonth(month - 1, year);\n } else {\n this.changeMonth(month + 1, year);\n }\n };\n}\n","import { Directive, ElementRef, Inject, OnDestroy } from '@angular/core';\n\n@Directive({\n selector: '[tetaScrollToSelectedYear]',\n standalone: true,\n})\nexport class ScrollToSelectedYearDirective implements OnDestroy {\n public alive = true;\n\n constructor(@Inject(ElementRef) private readonly el: ElementRef<Element>) {}\n\n ngOnDestroy(): void {\n this.alive = false;\n }\n\n ngAfterViewInit(): void {\n this.el.nativeElement.scrollIntoView({ inline: 'center', block: 'center' });\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { viewType } from '../../../common/model/view-type.model';\nimport dayjs from 'dayjs';\nimport { MinMaxDateModel } from '../model/min-max-date.model';\nimport { TetaLocalisation } from '../../../locale/teta-localisation';\nimport { ScrollToSelectedYearDirective } from './scroll-to-selected-year.directive';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'teta-year-picker',\n templateUrl: './year-picker.component.html',\n styleUrls: ['./year-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, ScrollToSelectedYearDirective]\n})\nexport class YearPickerComponent implements OnInit {\n @Input() selectedYear: number;\n @Input() viewType: viewType;\n @Input() minMax?: MinMaxDateModel;\n @Input() locale: TetaLocalisation;\n @Output() selectYear: EventEmitter<number> = new EventEmitter<number>();\n public years: { id: number; isSelected: boolean; disabled: boolean }[];\n\n constructor() {}\n\n pickYear(year: number, disabled: boolean) {\n if (!disabled) {\n this.selectYear.emit(year);\n }\n }\n\n ngOnInit(): void {\n this.years = new Array(100).fill(1).map((v, i) => {\n const year = new Date().getFullYear() + (i - 50);\n return { id: year, isSelected: year === this.selectedYear, disabled: this.isDisabled(year) };\n });\n }\n\n isDisabled(year: number) {\n if (this.minMax) {\n const isSuitableMax =\n dayjs(new Date().setFullYear(year)).startOf('year').isAfter(new Date(this.minMax.max)) &&\n this.minMax.max !== null;\n const isSuitableMin =\n dayjs(new Date().setFullYear(year)).endOf('year').isBefore(new Date(this.minMax.min)) &&\n this.minMax.min !== null;\n return isSuitableMax || isSuitableMin;\n }\n return false;\n }\n}\n","<div class=\"column\">\n <div class=\"font-title-3 padding-v-4 padding-h-3\">\n <p>{{ locale.selectYear }}</p>\n </div>\n <div class=\"datepicker-year overflow-y-auto\">\n @for (y of years; track y) {\n <div class=\"font-button-2\" (click)=\"pickYear(y.id, y.disabled)\">\n <div\n [ngClass]=\"{ 'datepicker-year_item_active': y.isSelected, 'datepicker-year_item_disabled': y.disabled }\"\n [class]=\"'datepicker-year_item column align-center justify-content-center datepicker_' + viewType\"\n >\n @if (y.isSelected === true) {\n <div tetaScrollToSelectedYear>\n <span>{{ y.id }}</span>\n </div>\n }\n @if (!y.isSelected) {\n <div>\n <span>{{ y.id }} </span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { viewType } from '../../../common/model/view-type.model';\nimport { NgClass } from '@angular/common';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { ButtonComponent } from '../../button/button/button.component';\n\n@Component({\n selector: 'teta-month-picker',\n templateUrl: './month-picker.component.html',\n styleUrls: ['./month-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ButtonComponent, IconComponent, NgClass]\n})\nexport class MonthPickerComponent implements OnInit {\n @Input() selectedMonth: number = 1;\n @Input() viewType: viewType;\n @Input() currentYear: number;\n @Input() localeMoths: string[];\n @Output() selectMonth: EventEmitter<number> = new EventEmitter<number>();\n @Output() changeYear: EventEmitter<number> = new EventEmitter<number>();\n public months: IIdName<any>[] = [];\n\n constructor() {}\n\n pickMonth(monthId: number) {\n this.selectMonth.emit(monthId);\n }\n\n pickYear(year: number) {\n this.changeYear.emit(year);\n }\n\n ngOnInit(): void {\n this.months = this.localeMoths.map((m, i) => {\n return {\n id: i,\n name: m,\n isSelected: this.selectedMonth === i,\n };\n });\n }\n}\n","<div class=\"padding-h-3 padding-v-2 gap-8 column datepicker-month-wrapper\">\n <div class=\"row align-center justify-content-between font-button-2\">\n <teta-button\n [class]=\"'change-month-button datepicker_' + viewType\"\n [square]=\"true\"\n (click)=\"pickYear(currentYear - 1)\"\n palette=\"text\"\n view=\"ghost\"\n >\n <teta-icon name=\"arrowLeftKey\" [palette]=\"'text'\"></teta-icon>\n </teta-button>\n <p>{{ currentYear }}</p>\n <teta-button\n [square]=\"true\"\n [class]=\"'change-month-button datepicker_' + viewType\"\n (click)=\"pickYear(currentYear + 1)\"\n palette=\"text\"\n view=\"ghost\"\n >\n <teta-icon name=\"arrowRightKey\" [palette]=\"'text'\"></teta-icon>\n </teta-button>\n </div>\n <div class=\"datepicker-month font-body-3 color-text-90\" style=\"width: 100%\">\n @for (month of months; track month) {\n <div (click)=\"pickMonth(month.id)\">\n <div\n [ngClass]=\"{ 'datepicker-month_item_active': month['isSelected'] }\"\n [class]=\"'datepicker-month_item column align-center justify-content-center datepicker_' + viewType\"\n >\n <p>\n {{ month.name }}\n </p>\n </div>\n </div>\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { DayModel } from '../../model/day-model';\n\n@Component({\n selector: 'teta-day-item',\n templateUrl: './day-item.component.html',\n styleUrls: ['./day-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class DayItemComponent implements OnInit {\n @Input() day: DayModel;\n\n ngOnInit(): void {}\n}\n","<p>{{ day.date.getDate() }}</p>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { DayModel } from '../model/day-model';\nimport { DateFromToModel } from '../model/from-to.model';\nimport dayjs from 'dayjs';\nimport { viewType } from '../../../common/model/view-type.model';\nimport { TetaLocalisation } from '../../../locale/teta-localisation';\nimport { DayItemComponent } from './day-item/day-item.component';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'teta-day-picker',\n templateUrl: './day-picker.component.html',\n styleUrls: ['./day-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, DayItemComponent]\n})\nexport class DayPickerComponent implements OnChanges {\n @Input() date: Date | string | number = new Date();\n @Input() calendar: DayModel[];\n @Input() viewType: viewType;\n @Input() range?: DateFromToModel;\n @Input() min: Date | string | number;\n @Input() max: Date | string | number;\n @Input() locale: TetaLocalisation;\n @Input() hoveredDate?: Date;\n @Output() hoveredDateChange?: EventEmitter<Date> = new EventEmitter<Date>();\n @Output() selectDate: EventEmitter<Date> = new EventEmitter<Date>();\n public dayOrder: string[];\n constructor() {}\n\n isInRange(day: DayModel, from: Date | number | string, to: Date | number | string) {\n const matchesMinDate = dayjs(new Date(from)).startOf('date').toDate() <= day.date;\n const matchesMaxDate = day.date < dayjs(new Date(to)).endOf('date').toDate();\n return matchesMinDate && matchesMaxDate;\n }\n\n isHoveredRange(day: DayModel) {\n if (!this.range?.to && this.range?.from) {\n return (\n this.isInRange(day, this.range.from, this.hoveredDate) || this.isInRange(day, this.hoveredDate, this.range.from)\n );\n }\n return false;\n }\n\n isActiveRange(day: DayModel) {\n if (this.range?.from && this.range?.to) {\n return this.isInRange(day, this.range.from, this.range.to);\n }\n return false;\n }\n\n pickDate(day: DayModel) {\n if (!day.disabled) {\n this.selectDate.emit(day.date);\n }\n }\n\n getRangeActiveClass(d: DayModel) {\n if (this.range && new Date(this.range?.from).getTime() !== new Date(this.range?.to).getTime()) {\n if (this.range.to) {\n return this.getClassStaticItem(d);\n } else {\n if (this.hoveredDate.getTime() === d.date.getTime()) {\n return this.getClassHoveredItem();\n } else {\n return this.getClassSelectedItem(d);\n }\n }\n }\n return '';\n }\n\n hover(date: Date) {\n if (date?.getTime() !== this.hoveredDate?.getTime()) {\n this.hoveredDate = date;\n this.hoveredDateChange.emit(date);\n }\n }\n\n getClassStaticItem(d: DayModel) {\n const from = dayjs(new Date(this.range.from)).startOf('day').toDate();\n const to = dayjs(new Date(this.range.to)).startOf('day').toDate();\n const itemDate = dayjs(new Date(d.date)).startOf('day').toDate();\n if (from.getTime() === itemDate.getTime()) {\n return 'datepicker-date_active-first';\n }\n if (to.getTime() === itemDate.getTime()) {\n return 'datepicker-date_active-second';\n }\n return '';\n }\n\n getClassHoveredItem() {\n if (new Date(this.range.from) > this.hoveredDate) {\n return 'datepicker-date_active-first';\n }\n if (new Date(this.range.from) < this.hoveredDate) {\n return 'datepicker-date_active-second';\n }\n return '';\n }\n\n getClassSelectedItem(d: DayModel) {\n if (d.selected && d.date < this.hoveredDate) {\n return 'datepicker-date_active-first';\n }\n if (d.selected && d.date > this.hoveredDate) {\n return 'datepicker-date_active-second';\n }\n return '';\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const arr = [...this.locale.daysShort];\n arr.push(arr.shift());\n this.dayOrder = arr;\n }\n}\n","<div class=\"datepicker-week font-caption\">\n @for (day of dayOrder; track day) {\n <p class=\"datepicker-day\">\n {{ day }}\n </p>\n }\n</div>\n<div class=\"datepicker-picker color-text-90 font-body-3\">\n @for (day of calendar; track day.date.getTime()) {\n <div\n [class]=\"getRangeActiveClass(day) + ' datepicker-date font-body-3 datepicker_' + viewType\"\n (mouseenter)=\"hover(day.date)\"\n (click)=\"pickDate(day)\"\n [ngClass]=\"{\n 'datepicker-date_active': day.selected || (day.date === hoveredDate && range && !range.to),\n 'datepicker-date-range_hover': range && isHoveredRange(day),\n 'datepicker-date_disabled': day.disabled,\n 'color-text-30': day.disabled || (!range && !day.isCurrentMonth),\n 'datepicker-date-range_disabled': !day.isCurrentMonth && range,\n 'datepicker-date-range_active': isActiveRange(day),\n }\"\n >\n <teta-day-item [day]=\"day\"></teta-day-item>\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport dayjs from 'dayjs';\nimport { combineLatest, filter, map, takeWhile } from 'rxjs';\n\nimport { viewType } from '../../../../common/model/view-type.model';\nimport { BaseCalendar } from '../../base-calendar';\nimport { DayModel } from '../../model/day-model';\nimport { TetaLocalisation } from '../../../../locale/teta-localisation';\nimport { AsyncPipe } from '@angular/common';\nimport { YearPickerComponent } from '../../year-picker/year-picker.component';\nimport { MonthPickerComponent } from '../../month-picker/month-picker.component';\nimport { DayPickerComponent } from '../../day-picker/day-picker.component';\nimport { IconComponent } from '../../../icon/icon/icon.component';\nimport { ButtonComponent } from '../../../button/button/button.component';\n\n@Component({\n selector: 'teta-date-calendar',\n templateUrl: './date-calendar.component.html',\n styleUrls: ['./date-calendar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ButtonComponent, IconComponent, DayPickerComponent, MonthPickerComponent, YearPickerComponent, AsyncPipe]\n})\nexport class DateCalendarComponent extends BaseCalendar implements OnChanges, OnDestroy {\n @Input() selectedDate: Date | string | number = new Date();\n @Input() open: boolean;\n @Input() locale: TetaLocalisation;\n @Input() viewType: viewType;\n @Input() min: Date | string | number;\n @Input() isDateNull: boolean;\n @Input() max: Date | string | number;\n @Output() setDate: EventEmitter<Date> = new EventEmitter<Date>();\n public calendar: DayModel[] = [];\n\n constructor(override _cdr: ChangeDetectorRef) {\n super(_cdr);\n combineLatest([this.currentYear, this.currentMonth, this.minMax])\n .pipe(\n takeWhile(() => this.alive),\n filter(([currentYear, currentMonth]) => currentMonth !== null && currentYear !== null),\n map(([year, month, minMax]) => {\n return this.generateCalendar(\n dayjs(new Date(this.selectedDate)).locale('ru', { weekStart: 1 }),\n year,\n month,\n minMax,\n );\n }),\n )\n .subscribe((_) => {\n this.calendar = _;\n });\n }\n}\n","@if (\n { currentMonth: currentMonth | async, currentYear: currentYear | async, selectedPicker: selectedPicker | async };\n as data\n) {\n <div class=\"datepicker-content overflow-y-auto\">\n @if (data.selectedPicker === 'day') {\n <div class=\"padding-h-3 padding-v-2\" (wheel)=\"scrollMonth($event, data.currentMonth, data.currentYear)\">\n <div class=\"row align-center justify-content-between\">\n <teta-button\n [class]=\"'change-month-button datepicker_' + viewType\"\n [square]=\"true\"\n (click)=\"changeMonth(data.currentMonth - 1, data.currentYear)\"\n palette=\"text\"\n view=\"ghost\"\n >\n <teta-icon name=\"arrowLeftKey\" [palette]=\"'text'\"></teta-icon>\n </teta-button>\n <div class=\"row gap-4 font-button-2\">\n <button\n [class]=\"'datepicker_' + viewType\"\n teta-button\n view=\"ghost\"\n palette=\"text\"\n (click)=\"selectPicker('month')\"\n >\n {{ getMothName(data.currentMonth) }}\n </button>\n <button\n [class]=\"'datepicker_' + viewType\"\n teta-button\n view=\"ghost\"\n palette=\"text\"\n (click)=\"selectPicker('year')\"\n >\n {{ data.currentYear }}\n </button>\n </div>\n <teta-button\n [square]=\"true\"\n [class]=\"'change-month-button datepicker_' + viewType\"\n (click)=\"changeMonth(data.currentMonth + 1, data.currentYear)\"\n palette=\"text\"\n view=\"ghost\"\n >\n <teta-icon name=\"arrowRightKey\" [palette]=\"'text'\"></teta-icon>\n </teta-button>\n </div>\n <div>\n <teta-day-picker\n [viewType]=\"viewType\"\n (selectDate)=\"selectDate($event)\"\n [locale]=\"locale\"\n [calendar]=\"calendar\"\n ></teta-day-picker>\n </div>\n </div>\n }\n @if (data.selectedPicker === 'month') {\n <teta-month-picker\n [localeMoths]=\"locale.months\"\n [currentYear]=\"data.currentYear\"\n (changeYear)=\"setYear($event)\"\n [selectedMonth]=\"data.currentMonth\"\n [viewType]=\"viewType\"\n (selectMonth)=\"selectMonth($event)\"\n ></teta-month-picker>\n }\n @if (data.selectedPicker === 'year') {\n <teta-year-picker\n [locale]=\"locale\"\n [viewType]=\"viewType\"\n (selectYear)=\"selectYear($event)\"\n [selectedYear]=\"data.currentYear\"\n ></teta-year-picker>\n }\n </div>\n}\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaDropdownContent]',\n standalone: true,\n})\nexport class DropdownContentDirective {\n nativeElement: HTMLElement;\n\n constructor(private _elementRef: ElementRef<HTMLElement>) {\n this.nativeElement = _elementRef.nativeElement;\n }\n}\n","export class DynamicData {\n [key: string]: any;\n\n constructor(value: { [key: string]: any }) {\n for (const key in value) {\n if (value.hasOwnProperty(key)) {\n this[key] = value[key];\n }\n }\n }\n}\n","import { ComponentRef, ViewRef } from '@angular/core';\n\nexport class TetaContentRef {\n constructor(\n public nodes: any[],\n public viewRef?: ViewRef,\n public componentRef?: ComponentRef<any>,\n ) {}\n}\n","import {\n ApplicationRef,\n ComponentFactoryResolver,\n ComponentRef,\n Injectable,\n Injector,\n Renderer2,\n RendererFactory2,\n TemplateRef,\n Type,\n} from '@angular/core';\n\nimport { DynamicData } from '../contract/dynamic-data';\nimport { TetaContentRef } from '../contract/teta-content-ref';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DynamicComponentService {\n private _renderer: Renderer2;\n\n constructor(\n private _componentFactoryResolver: ComponentFactoryResolver,\n private _rendererFactory: RendererFactory2,\n private _appRef: ApplicationRef,\n ) {\n this._renderer = this._rendererFactory.createRenderer(null, null);\n }\n\n createComponent<T>(\n component: Type<T>,\n contentRef: TetaContentRef,\n injector: Injector,\n container: any,\n ): ComponentRef<T> {\n const componentRef = this._componentFactoryResolver\n .resolveComponentFactory(component)\n .create(injector, contentRef.nodes);\n this._appRef.attachView(componentRef.hostView);\n container.appendChild(componentRef.location.nativeElement);\n return componentRef;\n }\n\n createContent(\n content: string | TemplateRef<any> | Type<any> | null | undefined,\n injector: Injector,\n context?: any,\n ): TetaContentRef {\n if (content === null || content === undefined) {\n throw new Error('Content is undefined');\n }\n if (typeof content === 'string') {\n return this.fromString(content);\n } else if (content instanceof TemplateRef) {\n return this.fromTemplate(content, context);\n } else {\n return this.fromComponent(content, injector, context);\n }\n }\n\n destroy<T>(\n component: ComponentRef<T> | null | undefined,\n content: TetaContentRef | null,\n container: HTMLElement,\n ): void {\n if (component) {\n this._appRef.detachView(component.hostView);\n component.destroy();\n }\n if (content && content.viewRef) {\n content.viewRef.destroy();\n }\n content = null;\n }\n\n getContext(content: string | TemplateRef<any> | Type<any> | null | undefined, context: any): any {\n if (content instanceof TemplateRef) {\n return {\n $implicit: context,\n data: context,\n };\n }\n return context;\n }\n\n getInjector(data: DynamicData, parent: Injector): Injector {\n return Injector.create({\n providers: [\n {\n provide: DynamicData,\n useValue: data,\n },\n ],\n parent,\n });\n }\n\n private fromString(content: string): TetaContentRef {\n return new TetaContentRef([[this._renderer.createText(`${content}`)]]);\n }\n\n private fromTemplate(content: TemplateRef<any>, context: any): TetaContentRef {\n const viewRef = content.createEmbeddedView(context);\n this._appRef.attachView(viewRef);\n return new TetaContentRef([viewRef.rootNodes], viewRef);\n }\n\n private fromComponent(content: any, injector: Injector, context: any): TetaContentRef {\n const componentFactory = this._componentFactoryResolver.resolveComponentFactory<any>(content);\n const componentRef = componentFactory.create(injector);\n for (const key in context) {\n if (Object.prototype.hasOwnProperty.call(context, key)) {\n componentRef.instance[key] = context[key];\n }\n }\n const componentNativeEl = componentRef.location.nativeElement;\n this._appRef.attachView(componentRef.hostView);\n return new TetaContentRef([[componentNativeEl]], componentRef.hostView, componentRef);\n }\n}\n","export class ArrayUtil {\n public static asArray<T>(value: T | T[]): T[] {\n if (value === null || value === undefined) {\n return [];\n }\n if (value instanceof Array) {\n return value;\n }\n return [value];\n }\n\n public static flatten(data: any[], children?: string | ((item: any) => any[]), onlyLeafs?: boolean): any[] {\n const result: any[] = [];\n data.forEach((child) => {\n let childItems: any[] = [];\n if (children) {\n if (typeof children === 'string') {\n childItems = child[children];\n }\n if (typeof children === 'function') {\n childItems = children(child);\n }\n } else {\n childItems = child.children;\n }\n if (childItems !== null && childItems !== undefined && childItems.length > 0) {\n if (!onlyLeafs) {\n result.push(child);\n }\n result.push(...ArrayUtil.flatten(childItems, children, onlyLeafs));\n } else {\n result.push(child);\n }\n });\n return result;\n }\n\n static findRecursive(tree: any[], comparer: (iterableNode: any) => boolean, children = 'children'): any {\n const found = tree.find((x) => comparer(x));\n if (found !== null && found !== undefined) {\n return found;\n }\n for (let i = 0, l = tree.length; i < l; i++) {\n const item = tree[i];\n if (item[children] && item[children].length) {\n const res = ArrayUtil.findRecursive(item[children], comparer);\n if (res !== null && res !== undefined) {\n return res;\n }\n }\n }\n return null;\n }\n\n static filterRecursive(\n array: any[],\n filter: (item: any) => boolean,\n children = 'children',\n keepChildren = true,\n fullscanChildren = false,\n ): any {\n const result = [];\n if (array && array.length) {\n for (const item of array) {\n const resultItem = Object.assign({}, item);\n if (filter(resultItem)) {\n result.push(resultItem);\n if (!keepChildren) {\n resultItem[children] = [];\n if (fullscanChildren) {\n continue;\n }\n break;\n }\n } else if (item[children] && item[children].length > 0) {\n resultItem[children] = [];\n const found = ArrayUtil.filterRecursive(item[children], filter, children, keepChildren, fullscanChildren);\n if (found?.length > 0) {\n resultItem[children] = found;\n result.push(resultItem);\n }\n }\n }\n }\n return result;\n }\n\n static distinct<T>(array: T[], comparator: (item: T) => any): T[] {\n const result: T[] = [];\n if (array && array.length) {\n for (const item of array) {\n const found = result.find((_) => comparator(_) === comparator(item));\n if (!found) {\n result.push(item);\n }\n }\n }\n return result;\n }\n\n static findParents(tree: any[], item: any): any[] | null {\n if (tree?.indexOf(item) >= 0) {\n return tree;\n }\n if (Array.isArray(tree)) {\n for (const treeNode of tree) {\n const childResult = this.findParents(treeNode.children, item);\n if (Array.isArray(childResult)) {\n return [treeNode].concat(childResult);\n }\n }\n }\n return null;\n }\n\n static moveItem(list: any[], sourceIndex: number, targetIndex: number) {\n const res = [...list];\n const item = list[sourceIndex];\n if (targetIndex > sourceIndex) {\n res.splice(targetIndex, 0, item);\n res.splice(sourceIndex, 1);\n } else {\n res.splice(sourceIndex, 1);\n res.splice(targetIndex, 0, item);\n }\n return res;\n }\n}\n","export class DomUtil {\n public static clickedInside(target: HTMLElement | undefined | null, event: MouseEvent): boolean {\n return !!target && event.composedPath().indexOf(target) >= 0;\n }\n\n public static findTransformedParent(node: HTMLElement) {\n while (node !== null && node.tagName !== 'BODY') {\n const style = getComputedStyle(node);\n if (style.transform !== 'none') {\n return node;\n }\n node = node.parentNode as HTMLElement;\n }\n return null;\n }\n\n public static isOverflown(element: HTMLElement) {\n return element.scrollHeight > element.clientHeight || element.scrollWidth > element.clientWidth;\n }\n}\n","import { IRect } from '../contract/i-rect';\nimport { Align } from '../enum/align.enum';\nimport { VerticalAlign } from '../enum/vertical-align.enum';\n\nexport class PositionUtil {\n public static getPosition(\n containerPosition: IRect,\n elementPosition: IRect,\n align: Align,\n verticalAlign: VerticalAlign,\n margin = 0,\n verticalMargin = 0,\n transformedParentRect: IRect = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n },\n ): IRect {\n const rect: IRect = {};\n const elementWidth = elementPosition.right - elementPosition.left;\n const elementHeight = elementPosition.bottom - elementPosition.top;\n const containerWidth = containerPosition.right - containerPosition.left;\n const containerHeight = containerPosition.bottom - containerPosition.top;\n if (align === Align.auto) {\n align = Align.left;\n if (window.innerWidth < containerPosition.left + elementWidth) {\n align = Align.right;\n }\n }\n if (align === Align.left) {\n rect.left = containerPosition.left + margin;\n }\n if (align === Align.right) {\n rect.left = containerPosition.right - elementWidth - margin;\n }\n if (align === Align.center) {\n rect.left = (containerPosition.left + containerPosition.right) / 2 - elementWidth / 2;\n }\n if (align === Align.outerAuto) {\n align = Align.outerRight;\n if (window.innerWidth < containerPosition.right + elementWidth) {\n align = Align.outerLeft;\n }\n }\n if (align === Align.outerLeft) {\n rect.left = containerPosition.left - elementWidth + margin;\n }\n if (align === Align.outerRight) {\n rect.left = containerPosition.right - margin;\n }\n\n if (align === Align.fitWidth) {\n rect.left = containerPosition.left + margin;\n rect.right = window.innerWidth - containerPosition.right + margin;\n }\n\n if (align === Align.minWidth) {\n rect.left = containerPosition.left + margin;\n rect.minWidth = containerWidth;\n }\n\n if (verticalAlign === VerticalAlign.auto) {\n if (\n containerPosition.bottom + elementHeight > window.innerHeight &&\n containerPosition.bottom >= window.innerHeight / 2\n ) {\n verticalAlign = VerticalAlign.top;\n } else {\n verticalAlign = VerticalAlign.bottom;\n }\n }\n if (verticalAlign === VerticalAlign.innerAuto) {\n if (\n containerPosition.bottom + elementHeight > window.innerHeight &&\n containerPosition.bottom >= window.innerHeight / 2\n ) {\n verticalAlign = VerticalAlign.innerTop;\n } else {\n verticalAlign = VerticalAlign.innerBottom;\n }\n }\n if (verticalAlign === VerticalAlign.top) {\n rect.top = containerPosition.top - elementHeight - verticalMargin;\n }\n if (verticalAlign === VerticalAlign.bottom) {\n rect.top = containerPosition.bottom + verticalMargin;\n }\n if (verticalAlign === VerticalAlign.innerTop) {\n rect.top = containerPosition.bottom - elementHeight - verticalMargin;\n }\n if (verticalAlign === VerticalAlign.innerBottom) {\n rect.top = containerPosition.top + verticalMargin;\n }\n if (verticalAlign === VerticalAlign.center) {\n rect.top = (containerPosition.top + containerPosition.bottom) / 2 - elementHeight / 2;\n }\n\n if (rect.left + elementWidth > window.innerWidth) {\n rect.left = window.innerWidth - elementWidth;\n }\n if (rect.left < 0) {\n rect.left = 0;\n }\n if (rect.top + elementHeight > window.innerHeight || rect.bottom < 0) {\n rect.bottom = 0;\n }\n if (rect.top < 0) {\n rect.top = 0;\n }\n if (\n verticalAlign === VerticalAlign.bottom ||\n verticalAlign === VerticalAlign.center ||\n verticalAlign === VerticalAlign.innerBottom\n ) {\n rect.maxHeight = window.innerHeight - rect.top;\n }\n if (verticalAlign === VerticalAlign.top || verticalAlign === VerticalAlign.innerTop) {\n rect.maxHeight = containerPosition.top;\n }\n if (!isNaN(rect.left)) {\n rect.left = rect.left - transformedParentRect.left;\n }\n if (!isNaN(rect.right)) {\n rect.right = rect.right - transformedParentRect.left;\n }\n if (!isNaN(rect.top)) {\n rect.top = rect.top - transformedParentRect.top;\n }\n if (!isNaN(rect.bottom)) {\n rect.bottom = rect.bottom ? rect.bottom - transformedParentRect.bottom : rect.bottom;\n }\n return rect;\n }\n\n public static setElementPosition(element: HTMLElement, rect: IRect): void {\n element.style.left = rect.left != null ? `${rect.left}px` : '';\n element.style.right = rect.right != null ? `${rect.right}px` : '';\n element.style.top = rect.top != null ? `${rect.top}px` : '';\n element.style.bottom = rect.bottom != null ? `${rect.bottom}px` : '';\n element.style.maxHeight = rect.maxHeight != null ? `${rect.maxHeight}px` : '';\n element.style.minWidth = rect.minWidth != null ? `${rect.minWidth}px` : '';\n }\n\n public static getMaxHeight(position: IRect): number | null {\n let maxHeight = null;\n maxHeight = 1;\n return maxHeight;\n }\n\n public static getMaxWidth(position: IRect): number | null {\n let maxWidth = null;\n maxWidth = 1;\n return maxWidth;\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnDestroy, OnInit } from '@angular/core';\nimport { ArrayUtil } from '../../../common/util/array-util';\nimport { animate, style, transition, trigger } from '@angular/animations';\n\n@Component({\n selector: 'teta-popup-content',\n templateUrl: './popup-content.component.html',\n styleUrls: ['./popup-content.component.scss'],\n animations: [\n trigger('dialog', [\n transition('void => *', [style({ opacity: '0' }), animate(200, style({ opacity: '1' }))]),\n transition('* => void', [animate(200, style({ opacity: '0' }))]),\n ]),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class PopupContentComponent implements OnInit, OnDestroy {\n @HostBinding('@dialog') dialog = true;\n\n @Input() className: string | string[];\n\n @HostBinding('class')\n private get getClass(): string {\n const result = [...ArrayUtil.asArray(this.className), 'popup-content'];\n return result.join(' ');\n }\n\n constructor() {}\n\n addClass(className: string) {\n if (this.className) {\n if (typeof this.className === 'string') {\n this.className = className;\n }\n if (this.className instanceof Array) {\n this.className.push(className);\n }\n } else {\n this.className = [className];\n }\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {}\n}\n","<ng-content></ng-content>\n","import {\n ChangeDetectorRef,\n ComponentRef,\n Directive,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n Type,\n} from '@angular/core';\nimport { filter, takeWhile } from 'rxjs/operators';\n\nimport { TetaContentRef } from '../common/contract/teta-content-ref';\nimport { Align } from '../common/enum/align.enum';\nimport { VerticalAlign } from '../common/enum/vertical-align.enum';\nimport { DynamicComponentService } from '../common/service/dynamic-component.service';\nimport { PopupContentComponent } from '../component/dynamic-component/popup-content/popup-content.component';\n\n@Directive()\nexport abstract class DynamicContentBaseDirective implements OnDestroy {\n @Input() data: any;\n @Input() className?: string | string[];\n @Input() align: Align = Align.left;\n @Input() verticalAlign: VerticalAlign = VerticalAlign.auto;\n @Input() appendToBody = false;\n\n @Input() set open(open: boolean) {\n this._open = open;\n if (this._open) {\n this.createContentRef();\n } else {\n this.destroyContentRef();\n }\n }\n\n @Output() openChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n protected _alive = true;\n protected _componentRef?: ComponentRef<any> | null;\n protected _content?: TetaContentRef;\n protected _open = false;\n\n protected abstract get _dynamicContent(): string | TemplateRef<any> | Type<any> | null | undefined;\n\n protected constructor(\n protected _document: any,\n protected _elementRef: ElementRef,\n protected _service: DynamicComponentService,\n protected _injector: Injector,\n protected _zone: NgZone,\n protected _cdr: ChangeDetectorRef,\n ) {\n this._zone.onStable\n .pipe(\n takeWhile((_) => this._alive),\n filter((_) => this._open),\n )\n .subscribe((_) => {\n this.setPosition();\n });\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n this.destroyContentRef();\n }\n\n protected createContentRef<T>(className?: string | string[]): ComponentRef<T> {\n if (!this._componentRef) {\n this._open = true;\n const injector = this._service.getInjector(this.data, this._injector);\n const context = this._service.getContext(this._dynamicContent, this.data);\n this._content = this._service.createContent(this._dynamicContent, this._injector, context);\n this._componentRef = this._service.createComponent(\n PopupContentComponent,\n this._content,\n injector,\n this.appendToBody ? this._document.body : this._elementRef.nativeElement,\n );\n if (className) {\n this._componentRef.instance.addClass(className);\n }\n }\n return this._componentRef;\n }\n\n protected destroyContentRef(): void {\n this._open = false;\n this._service.destroy(\n this._componentRef,\n this._content,\n this.appendToBody ? this._document.body : this._elementRef.nativeElement,\n );\n this._componentRef = null;\n }\n\n protected abstract setPosition(): void;\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n HostListener,\n Inject,\n Injector,\n Input,\n NgZone,\n OnDestroy,\n TemplateRef,\n Type,\n} from '@angular/core';\n\nimport { Align } from '../../common/enum/align.enum';\nimport { VerticalAlign } from '../../common/enum/vertical-align.enum';\nimport { viewType } from '../../common/model/view-type.model';\nimport { DynamicComponentService } from '../../common/service/dynamic-component.service';\nimport { ArrayUtil } from '../../common/util/array-util';\nimport { DomUtil } from '../../common/util/dom-util';\nimport { PositionUtil } from '../../common/util/position-util';\nimport { DynamicContentBaseDirective } from '../dynamic-content-base.directive';\n\n@Directive({\n selector: '[tetaHint]',\n standalone: true,\n})\nexport class HintDirective extends DynamicContentBaseDirective implements OnDestroy {\n /**\n * Строка, шаблон или компонент для создания контекстного меню\n */\n @Input() tetaHint?: string | TemplateRef<any> | Type<any>;\n @Input() override align: Align = Align.center;\n @Input() override verticalAlign: VerticalAlign = VerticalAlign.top;\n @Input() delay = 300;\n @Input() viewType: viewType = 'rounded';\n @Input() overflownOnly = false;\n\n get _dynamicContent() {\n return this.tetaHint;\n }\n\n private _timeout?: any;\n private _componentRect: any;\n\n constructor(\n @Inject(DOCUMENT)\n protected override _document: any,\n protected override _elementRef: ElementRef,\n protected override _service: DynamicComponentService,\n protected override _injector: Injector,\n protected override _zone: NgZone,\n protected override _cdr: ChangeDetectorRef,\n ) {\n super(_document, _elementRef, _service, _injector, _zone, _cdr);\n }\n\n @HostListener('mouseenter', ['$event'])\n mouseenter(): void {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(() => {\n this.createHint();\n }, this.delay);\n }\n\n @HostListener('mouseleave', ['$event'])\n mouseleave(): void {\n clearTimeout(this._timeout);\n if (this._open && this._componentRef) {\n this._timeout = setTimeout(() => {\n this.destroyContentRef();\n }, this.delay);\n }\n }\n\n @HostListener('click', ['$event'])\n click(event: MouseEvent): void {\n if (this._open && this._componentRef && DomUtil.clickedInside(this._componentRef.location.nativeElement, event)) {\n event.stopPropagation();\n }\n }\n\n protected setPosition() {\n if (this._componentRef && this._open) {\n if (!this._componentRect) {\n this._componentRect = this._componentRef.location.nativeElement.getBoundingClientRect();\n }\n const position = PositionUtil.getPosition(\n this._elementRef.nativeElement.getBoundingClientRect(),\n this._componentRect,\n this.align,\n this.verticalAlign,\n 0,\n 4,\n );\n PositionUtil.setElementPosition(this._componentRef.location.nativeElement, position);\n }\n }\n\n private createHint(): void {\n if (!this._dynamicContent || (this.overflownOnly && !DomUtil.isOverflown(this._elementRef.nativeElement))) {\n return;\n }\n this._componentRef = this.createContentRef();\n this._componentRef.instance.className = [...ArrayUtil.asArray(this.className), 'hint ', 'hint_' + this.viewType];\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\nimport { Align } from '../../../common/enum/align.enum';\nimport { viewType } from '../../../common/model/view-type.model';\nimport { HintDirective } from '../../../directive/hint/hint.directive';\n\n@Component({\n selector: 'teta-input',\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [HintDirective]\n})\nexport class InputComponent {\n @Input() label?: string;\n @Input() hint?: string;\n @Input() viewType: viewType = 'rounded';\n\n @Input()\n @HostBinding('class.row')\n horizontal = false;\n\n @Input()\n required = false;\n\n @HostBinding('class.column')\n get column() {\n return !this.horizontal;\n }\n\n align = Align;\n}\n","@if (label?.length > 0) {\n <div\n class=\"font-caption color-text-70 align-center row nowrap overflow-hidden text-overflow-ellipsis\"\n [class.row_6]=\"horizontal\"\n [class.text-field_required]=\"required\"\n >\n <span\n class=\"overflow-hidden text-overflow-ellipsis\"\n [tetaHint]=\"hint ?? label\"\n [align]=\"align.left\"\n [overflownOnly]=\"!hint || hint === label\"\n >\n {{ label }}\n </span>\n </div>\n}\n<div [class]=\"'input-container input_' + viewType\" [class.row_6]=\"horizontal\">\n <ng-content></ng-content>\n <div class=\"input-message font-error-message font-caption\">\n <ng-content select=\"message\"></ng-content>\n </div>\n</div>\n","import { Directive, Optional, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaDropdownHead]',\n standalone: true,\n})\nexport class DropdownHeadDirective {\n constructor(@Optional() public template: TemplateRef<any>) {}\n}\n","import {\n ChangeDetectorRef,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n NgZone,\n Output,\n Renderer2,\n} from '@angular/core';\nimport { takeWhile, throttleTime } from 'rxjs/operators';\n\nimport { AutoCloseIgnoreCase } from '../../common/contract/auto-close-ignore-case';\nimport { IRect } from '../../common/contract/i-rect';\nimport { Align } from '../../common/enum/align.enum';\nimport { VerticalAlign } from '../../common/enum/vertical-align.enum';\nimport { viewType } from '../../common/model/view-type.model';\nimport { DomUtil } from '../../common/util/dom-util';\nimport { PositionUtil } from '../../common/util/position-util';\nimport { DropdownContentDirective } from './dropdown-content.directive';\nimport { DropdownHeadDirective } from './dropdown-head.directive';\n\n@Directive()\nexport class DropdownBase {\n @Input() align: Align = Align.left;\n @Input() verticalAlign: VerticalAlign = VerticalAlign.auto;\n @Input() appendToBody: boolean;\n @Input() disabled: boolean;\n @Input() backdrop = false;\n @Input() className: string | string[];\n @Input() viewType: viewType = 'rounded';\n\n @Input()\n set open(val: boolean) {\n if (val != null && val !== this._open && !this.disabled) {\n if (val) {\n this.openDropdown();\n } else {\n this.closeDropdown();\n }\n }\n }\n\n get open(): boolean {\n return this._open;\n }\n\n get container() {\n return this.appendToBody ? this._document.body : this._elementRef.nativeElement;\n }\n\n @Output() openChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Input() autoClose = true;\n @Input() autoCloseIgnore: Array<AutoCloseIgnoreCase> = ['inside'];\n\n @ContentChild(DropdownHeadDirective, {\n static: false,\n read: ElementRef,\n })\n protected _head: ElementRef;\n\n @ContentChild(DropdownContentDirective, { static: false })\n protected _content: DropdownContentDirective;\n\n protected _body: HTMLElement | null = null;\n protected _backdrop: HTMLElement | null = null;\n protected _open = false;\n protected _alive = true;\n\n constructor(\n protected _cdr: ChangeDetectorRef,\n protected _document: any,\n protected _elementRef: ElementRef<HTMLElement>,\n protected _zone: NgZone,\n protected _renderer: Renderer2,\n ) {\n this._zone.onStable\n .pipe(\n takeWhile((_) => this._alive),\n throttleTime(10, undefined, { trailing: true }),\n )\n .subscribe((_) => {\n if (this._head?.nativeElement && this._body) {\n setTimeout(() => {\n if (this._head?.nativeElement && this._body) {\n this.setPosition(this._head.nativeElement, this._body);\n }\n });\n }\n });\n this.addScrollListener();\n }\n\n @HostListener('click', ['$event']) click(event: MouseEvent): void {\n if (this.open) {\n if (!DomUtil.clickedInside(this._body, event) || this.autoCloseIgnore.indexOf('inside') < 0) {\n this.closeDropdown();\n }\n } else {\n if (DomUtil.clickedInside(this._head.nativeElement, event)) {\n this.openDropdown();\n }\n }\n }\n\n @HostListener('document:click', ['$event']) documentClick(event: MouseEvent): void {\n if (!this.open || !this.autoClose || event.detail === 0 || DomUtil.clickedInside(this._head.nativeElement, event)) {\n return;\n }\n if (DomUtil.clickedInside(this._body, event)) {\n if (this.autoCloseIgnore.indexOf('inside') < 0) {\n this.closeDropdown();\n }\n } else {\n if (this.autoCloseIgnore.indexOf('outside') < 0) {\n this.closeDropdown();\n }\n }\n }\n\n @HostListener('window:keyup', ['$event']) keyUp(event: KeyboardEvent): void {\n const key: AutoCloseIgnoreCase[] = ['esc', 'enter'];\n if (!this.open || !this.autoClose || key.every((_) => this.autoCloseIgnore.indexOf(_) >= 0)) {\n return;\n }\n if (\n (event.code === 'Escape' && this.autoCloseIgnore.indexOf('esc') < 0) ||\n (event.code === 'Enter' && this.autoCloseIgnore.indexOf('enter') < 0)\n ) {\n this.closeDropdown();\n }\n }\n\n protected addScrollListener() {\n window.addEventListener('scroll', this.scrollListener, true);\n }\n\n protected removeScrollListener() {\n window.removeEventListener('scroll', this.scrollListener, true);\n }\n\n private scrollListener = (event) => {\n if (this.open && !this._body.contains(event.target) && this._body !== event.target) {\n this.closeDropdown();\n }\n };\n\n protected closeDropdown(): void {\n if (this.open && this._body && this.container.contains(this._body)) {\n this._renderer.removeChild(this.container, this._body);\n this._open = false;\n this._body = null;\n if (this._backdrop) {\n this._renderer.removeChild(this._document.body, this._backdrop);\n }\n this.openChange.emit(this.open);\n this._cdr.detectChanges();\n }\n }\n\n private openDropdown(): void {\n if (this._open || !this._content || this.disabled) {\n return;\n }\n this._open = true;\n this.openChange.emit(this.open);\n const renderer = this._renderer;\n const content = this._content.nativeElement;\n const container = (this._body = this._body || renderer.createElement('div'));\n renderer.addClass(container, 'dropdown');\n renderer.addClass(container, 'dropdown_' + this.viewType);\n if (this.backdrop) {\n this._backdrop = renderer.createElement('div');\n renderer.addClass(this._backdrop, 'dropdown-backdrop');\n renderer.appendChild(this._document.body, this._backdrop);\n }\n if (this.className != null) {\n if (this.className instanceof Array && this.className.length > 0) {\n this.className.forEach((_) => {\n renderer.addClass(container, _);\n });\n }\n if (typeof this.className === 'string') {\n renderer.addClass(container, this.className);\n }\n }\n renderer.appendChild(container, content);\n renderer.appendChild(this.container, container);\n setTimeout(() => {\n this.setPosition(this._head.nativeElement, this._body);\n });\n }\n\n private setPosition(container: HTMLElement, target: HTMLElement): void {\n const containerPosition = container.getBoundingClientRect();\n // target.style.maxHeight = null;\n const targetPosition = target.getBoundingClientRect();\n\n const rect: IRect = {\n bottom: containerPosition.bottom,\n top: containerPosition.top,\n left: containerPosition.left,\n right: containerPosition.right,\n };\n\n const targetRect: IRect = {\n bottom: targetPosition.bottom,\n top: targetPosition.top,\n left: targetPosition.left,\n right: targetPosition.right,\n };\n\n const targetTransformedParent = DomUtil.findTransformedParent(target);\n let parentPosition = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n };\n if (targetTransformedParent) {\n parentPosition = targetTransformedParent.getBoundingClientRect();\n }\n\n const position = PositionUtil.getPosition(rect, targetRect, this.align, this.verticalAlign, 0, 0, parentPosition);\n\n PositionUtil.setElementPosition(target, position);\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n NgZone,\n OnDestroy,\n OnInit,\n Renderer2,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { DropdownBase } from '../dropdown-base';\n\n@Component({\n selector: 'teta-dropdown',\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'dropdown',\n standalone: true,\n})\nexport class DropdownComponent extends DropdownBase implements OnInit, OnDestroy {\n constructor(\n protected override _cdr: ChangeDetectorRef,\n @Inject(DOCUMENT) protected override _document: any,\n protected override _elementRef: ElementRef<HTMLElement>,\n protected override _zone: NgZone,\n protected override _renderer: Renderer2,\n ) {\n super(_cdr, _document, _elementRef, _zone, _renderer);\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this.closeDropdown();\n this.removeScrollListener();\n this._alive = false;\n }\n}\n","<ng-content select=\"[tetaDropdownHead]\"></ng-content>\n","import { DatePipe, NgClass, AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { maskitoDateOptionsGenerator, maskitoDateTimeOptionsGenerator } from '@maskito/kit';\nimport dayjs from 'dayjs';\nimport { lastValueFrom, Observable, ReplaySubject, take } from 'rxjs';\n\nimport { Align } from '../../../common/enum/align.enum';\nimport { VerticalAlign } from '../../../common/enum/vertical-align.enum';\nimport { viewType } from '../../../common/model/view-type.model';\nimport { BasePicker } from '../base-picker';\nimport { DatePeriod } from '../model/date-period';\nimport { TetaConfigService } from '../../../locale/teta-config.service';\nimport { TetaLocalisation } from '../../../locale/teta-localisation';\nimport { DateCalendarComponent } from './date-calendar/date-calendar.component';\nimport { DropdownContentDirective } from '../../dropdown/dropdown-content.directive';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { MaskitoModule } from '@maskito/angular';\nimport { InputComponent } from '../../input/input/input.component';\nimport { DropdownHeadDirective } from '../../dropdown/dropdown-head.directive';\nimport { DropdownComponent } from '../../dropdown/dropdown/dropdown.component';\n\nexport const DATE_PICKER_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true,\n};\n\n@Component({\n selector: 'teta-date-picker',\n templateUrl: './date-picker.component.html',\n styleUrls: ['./date-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [DATE_PICKER_CONTROL_VALUE_ACCESSOR, DatePipe],\n imports: [\n DropdownComponent,\n DropdownHeadDirective,\n NgClass,\n InputComponent,\n FormsModule,\n MaskitoModule,\n IconComponent,\n DropdownContentDirective,\n DateCalendarComponent,\n AsyncPipe,\n ]\n})\nexport class DatePickerComponent extends BasePicker implements OnInit, ControlValueAccessor, OnChanges {\n @Input() date: Date | string | number = null;\n public locale: Observable<TetaLocalisation>;\n @Input() showTime = false;\n @Input() minDate: Date | string | number = null;\n @Input() maxDate: Date | string | number = null;\n @Input() invalid = false;\n @Input() disabled = false;\n @Input() align: Align = Align.left;\n @Input() verticalAlign: VerticalAlign = VerticalAlign.auto;\n @Input() viewType: viewType = 'rounded';\n @Input() appendToBody: boolean;\n @Input() backdrop = false;\n @Input() allowNull = true;\n\n @Input() firstDayOfWeek = 1;\n @Input() disabledDates: Date[];\n @Input() disabledPeriods: DatePeriod[];\n @Input() disabledDays: number[];\n @Input() minYearDate: Date;\n @Input() maxYearDate: Date;\n\n @ViewChild('input') input: ElementRef;\n @Output() selectDate: EventEmitter<Date> = new EventEmitter<Date>();\n public selectedDate: ReplaySubject<Date | string | number> = new ReplaySubject<Date | string | number>(1);\n public mask = '';\n @HostBinding('class.datepicker') private readonly classDatepicker = true;\n @HostBinding('class.datepicker-time') get dateTimeClass() {\n return this.showTime;\n }\n @HostBinding('tabindex') private readonly tabindex = 0;\n\n constructor(\n override _elementRef: ElementRef,\n override _cdr: ChangeDetectorRef,\n override datePipe: DatePipe,\n private localeService: TetaConfigService,\n ) {\n super(_elementRef, _cdr, datePipe);\n this.locale = this.localeService.locale;\n }\n\n ngOnInit(): void {\n if (!this.date) {\n this.setDate(this.allowNull ? null : new Date());\n this.date = this.allowNull ? null : new Date();\n } else {\n this.setDate(new Date(this.date));\n }\n this.prepareInput(true);\n }\n\n async prepareInput(isFirstRender?: boolean) {\n const config = await lastValueFrom(this.localeService.locale.pipe(take(1)));\n const str = this.date ? this.getLocaleString(this.date) : '';\n let option;\n const setMinMax = () => {\n if (this.minDate && !isFirstRender) {\n option.min = dayjs(new Date(this.minDate)).startOf('day');\n }\n if (this.maxDate && !isFirstRender) {\n option.max = dayjs(new Date(this.maxDate)).endOf('day');\n }\n };\n if (this.showTime) {\n this.mask = config.dateTimeMask;\n option = {\n dateMode: 'dd/mm/yyyy',\n timeMode: 'HH:MM',\n dateSeparator: '.',\n };\n setMinMax();\n this.maskitoOptions = maskitoDateTimeOptionsGenerator(option);\n } else {\n this.mask = config.dateMask;\n option = {\n mode: 'dd/mm/yyyy',\n separator: '.',\n };\n setMinMax();\n this.maskitoOptions = maskitoDateOptionsGenerator(option);\n }\n this.changePlaceholder(str);\n }\n\n onBlur() {\n if (this.allowNull && this.inputText.trim() === '') {\n this.setDate(null);\n this.emitValue(null);\n } else {\n const val = this.inputText.split(',');\n const { day, year, month } = this.getDateFromStr(val[0]);\n const { mins, hours } = this.getTimeFromStr(val[1]);\n if (day && year && month) {\n let date = new Date(year, month - 1, day);\n if (this.showTime) {\n date = new Date(date.setHours(hours || 0, mins || 0));\n }\n this.changeSelectedDate(this.getAvailableDate(this.minDate, this.maxDate, date));\n } else {\n this.setDate(this.date);\n }\n }\n }\n\n setDate(date) {\n if (!date && this.allowNull) {\n this.inputText = '';\n this.changePlaceholder('');\n this.selectedDate.next(new Date(this.minDate || new Date()));\n } else {\n this.inputText = this.getLocaleString(date);\n this.changePlaceholder(this.getLocaleString(date));\n this.selectedDate.next(date);\n }\n }\n\n onChange(date: Date) {}\n\n registerOnChange(fn: (date: Date) => any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {}\n\n writeValue(obj: Date | string | number): void {\n if (obj) {\n this.date = new Date(obj);\n this.setDate(new Date(this.date));\n } else {\n if (this.allowNull) {\n this.date = null;\n this.selectedDate.next(null);\n } else {\n this.date = this.minDate || new Date();\n this.selectedDate.next(this.minDate || new Date());\n }\n }\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.prepareInput(false);\n }\n}\n","@if ({ selectedDate: selectedDate | async }; as data) {\n <teta-dropdown\n class=\"row row_auto\"\n [appendToBody]=\"appendToBody\"\n [backdrop]=\"backdrop\"\n [open]=\"open\"\n (openChange)=\"openChange($event)\"\n [viewType]=\"viewType\"\n [disabled]=\"disabled\"\n [verticalAlign]=\"verticalAlign\"\n [align]=\"align\"\n [autoCloseIgnore]=\"['esc', 'inside', 'enter']\"\n >\n <div\n tetaDropdownHead\n [class]=\"'datepicker-head font-body-3 gap-8 datepicker_' + viewType\"\n [ngClass]=\"{ 'datepicker-head_invalid': invalid, 'datepicker-head_disabled': disabled }\"\n >\n <teta-input class=\"row row_auto flex\">\n <div [class]=\"'row_auto row datepicker_' + viewType\">\n <div class=\"row row_auto position-relative font-body-3 align-center\">\n <input\n [ngClass]=\"{ 'color-text-90': !disabled }\"\n [disabled]=\"disabled\"\n #input\n style=\"z-index: 1\"\n class=\"row_auto border-0\"\n (keydown)=\"checkEnter($event)\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"changeInput($event)\"\n [maskito]=\"maskitoOptions\"\n />\n @if (data.selectedDate || allowNull) {\n <div\n (click)=\"input.focus()\"\n class=\"position-absolute color-text-10\"\n style=\"cursor: text; user-select: none\"\n >\n {{ placeholder }}\n </div>\n }\n </div>\n <teta-icon [name]=\"'calendar'\" [palette]=\"'text'\"></teta-icon>\n </div>\n </teta-input>\n </div>\n <div tetaDropdownContent (click)=\"$event.preventDefault()\">\n <teta-date-calendar\n [isDateNull]=\"date === null\"\n [open]=\"open\"\n [max]=\"maxDate\"\n [min]=\"minDate\"\n (setDate)=\"changeSelectedDate($event)\"\n [selectedDate]=\"data.selectedDate\"\n [viewType]=\"viewType\"\n [locale]=\"locale | async\"\n ></teta-date-calendar>\n </div>\n </teta-dropdown>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport dayjs from 'dayjs';\nimport { combineLatest, filter, map, shareReplay, takeWhile } from 'rxjs';\n\nimport { viewType } from '../../../../common/model/view-type.model';\nimport { BaseCalendar } from '../../base-calendar';\nimport { DayModel } from '../../model/day-model';\nimport { DateFromToModel } from '../../model/from-to.model';\nimport { TetaLocalisation } from '../../../../locale/teta-localisation';\nimport { YearPickerComponent } from '../../year-picker/year-picker.component';\nimport { MonthPickerComponent } from '../../month-picker/month-picker.component';\nimport { DayPickerComponent } from '../../day-picker/day-picker.component';\nimport { IconComponent } from '../../../icon/icon/icon.component';\nimport { NgClass, AsyncPipe } from '@angular/common';\nimport { ButtonComponent } from '../../../button/button/button.component';\n\n@Component({\n selector: 'teta-range-calendar',\n templateUrl: './range-calendar.component.html',\n styleUrls: ['./range-calendar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ButtonComponent,\n NgClass,\n IconComponent,\n DayPickerComponent,\n MonthPickerComponent,\n YearPickerComponent,\n AsyncPipe,\n ]\n})\nexport class RangeCalendarComponent extends BaseCalendar implements OnChanges, OnDestroy {\n @Input() locale: TetaLocalisation;\n @Input() open: boolean;\n @Input() date: DateFromToModel;\n @Input() viewType: viewType;\n @Input() allowNull = true;\n @Input() selectedDate: DateFromToModel;\n @Input() min: Date | string | number;\n @Input() isDateNull: boolean;\n @Input() max: Date | string | number;\n @Output() hoveredDateChange: EventEmitter<Date> = new EventEmitter<Date>();\n @Output() setDate: EventEmitter<Date> = new EventEmitter<Date>();\n public calendar: { currentMonth: DayModel[]; nextMonth: DayModel[] };\n public _hoveredDate: Date = null;\n get hoveredDate() {\n return this._hoveredDate;\n }\n\n set hoveredDate(e) {\n this._hoveredDate = e;\n this._cdr.detectChanges();\n }\n\n constructor(override _cdr: ChangeDetectorRef) {\n super(_cdr);\n combineLatest([this.currentYear, this.currentMonth, this.minMax])\n .pipe(\n takeWhile(() => this.alive),\n shareReplay({ bufferSize: 1, refCount: false }),\n filter(([currentYear, currentMonth]) => currentMonth !== null && currentYear !== null),\n map(([year, month, minMax]) => {\n const { availableYear, availableMonth } = this.getAvailableMonthYear(month + 1, year);\n return {\n currentMonth: this.generateCalendar(\n dayjs(new Date(this.selectedDate.from || new Date())).locale('ru', { weekStart: 1 }),\n year,\n month,\n minMax,\n ),\n nextMonth: this.generateCalendar(\n dayjs(new Date(this.selectedDate.from || new Date())).locale('ru', { weekStart: 1 }),\n availableYear,\n availableMonth,\n minMax,\n ),\n };\n }),\n )\n .subscribe((_) => {\n this.calendar = _;\n });\n }\n\n getFromTo() {\n let dateFrom;\n let dateTo;\n if (this.selectedDate?.from) {\n dateFrom = new Date(this.selectedDate.from);\n dateTo = null;\n } else {\n if (this.allowNull) {\n dateFrom = this.date?.from ? new Date(this.date.from) : null;\n dateTo = this.date?.to ? new Date(this.date.to) : null;\n } else {\n dateFrom = this.date?.from ? new Date(this.date.from) : new Date();\n dateTo = this.date?.to ? new Date(this.date.to) : new Date();\n }\n }\n\n return { from: dateFrom, to: dateTo };\n }\n\n override isSelected(d: Date, selectedDate: Date) {\n const { from, to } = this.getFromTo();\n return this.checkSelected(d, from) || this.checkSelected(d, to);\n }\n\n checkSelected(date: Date, selectedDate: Date) {\n const isSelectedDate = date.getDate() === selectedDate?.getDate();\n const isSelectedYear = date.getFullYear() === selectedDate?.getFullYear();\n const isSelectedMonth = date.getMonth() === selectedDate?.getMonth();\n return isSelectedDate && isSelectedMonth && isSelectedYear;\n }\n\n isFirstDaySuitable(m: number, y: number, max: string | number | Date) {\n const { availableYear, availableMonth } = this.getAvailableMonthYear(m, y);\n return this.isSuitableMaxDate(dayjs(new Date(availableYear, availableMonth)).startOf('month').toDate(), max);\n }\n\n isLastDaySuitable(m: number, y: number, min: string | number | Date) {\n const { availableYear, availableMonth } = this.getAvailableMonthYear(m, y);\n return this.isSuitableMinDate(dayjs(new Date(availableYear, availableMonth)).endOf('month').toDate(), min);\n }\n\n override ngOnChanges(changes: SimpleChanges): void {\n if (!changes?.['hoveredDate']) {\n this.changeCalendarData(this.selectedDate.from || this.date.from);\n }\n }\n}\n","@if (\n {\n currentMonth: currentMonth | async,\n currentYear: currentYear | async,\n selectedPicker: selectedPicker | async,\n minMax: minMax | async,\n };\n as data\n) {\n <div class=\"datepicker-content overflow-y-auto\">\n @if (data.selectedPicker === 'day') {\n <div class=\"row\" (wheel)=\"scrollMonth($event, data.currentMonth, data.currentYear)\">\n <div class=\"padding-h-3 padding-v-2\">\n <div class=\"row align-center justify-content-between\">\n <teta-button\n [ngClass]=\"{\n 'datepicker-arrow_hidden': !isLastDaySuitable(data.currentMonth - 1, data.currentYear, min),\n }\"\n [class]=\"'change-month-button datepicker_' + viewType\"\n [square]=\"true\"\n (click)=\"changeMonth(data.currentMonth - 1, data.currentYear)\"\n palette=\"text\"\n view=\"ghost\"\n >\n <teta-icon name=\"arrowLeftKey\" [palette]=\"'text'\"></teta-icon>\n </teta-button>\n <div class=\"row gap-4 font-button-2 align-center padding-left-1\">\n <p>{{ getMothName(data.currentMonth) }}</p>\n <button\n [class]=\"'datepicker_' + viewType\"\n teta-button\n view=\"ghost\"\n palette=\"text\"\n (click)=\"selectPicker('year')\"\n >\n {{ data.currentYear }}\n </button>\n </div>\n <teta-button\n [square]=\"true\"\n [class]=\"'change-month-button datepicker-arrow_hidden datepicker_' + viewType\"\n palette=\"text\"\n view=\"ghost\"\n >\n <teta-icon name=\"arrowRightKey\" [palette]=\"'text'\"></teta-icon>\n </teta-button>\n </div>\n <div>\n <teta-day-picker\n [(hoveredDate)]=\"hoveredDate\"\n [range]=\"getFromTo()\"\n [viewType]=\"viewType\"\n (selectDate)=\"selectDate($event)\"\n [locale]=\"locale\"\n [calendar]=\"calendar.currentMonth\"\n ></teta-day-picker>\n </div>\n </div>\n @if (getAvailableMonthYear(data.currentMonth + 1, data.currentYear); as availableMonthYear) {\n <div class=\"padding-h-3 padding-v-2\">\n <div class=\"row align-center justify-content-between\">\n <teta-button\n [square]=\"true\"\n [class]=\"'change-month-button datepicker-arrow_hidden datepicker_' + viewType\"\n palette=\"text\"\n view=\"ghost\"\n >\n <teta-icon name=\"arrowLeftKey\" [palette]=\"'text'\"></teta-icon>\n </teta-button>\n <div class=\"row gap-4 font-button-2 align-center padding-left-1\">\n <p>{{ getMothName(availableMonthYear.availableMonth) }}</p>\n <button\n [class]=\"'datepicker_' + viewType\"\n teta-button\n view=\"ghost\"\n palette=\"text\"\n (click)=\"selectPicker('year')\"\n >\n {{ availableMonthYear.availableYear }}\n </button>\n </div>\n <teta-button\n [square]=\"true\"\n [ngClass]=\"{\n 'datepicker-arrow_hidden': !isFirstDaySuitable(data.currentMonth + 2, data.currentYear, max),\n }\"\n [class]=\"'change-month-button datepicker_' + viewType\"\n (click)=\"changeMonth(data.currentMonth + 1, data.currentYear)\"\n palette=\"text\"\n view=\"ghost\"\n >\n <teta-icon name=\"arrowRightKey\" [palette]=\"'text'\"></teta-icon>\n </teta-button>\n </div>\n <div>\n <teta-day-picker\n [(hoveredDate)]=\"hoveredDate\"\n [range]=\"getFromTo()\"\n [viewType]=\"viewType\"\n (selectDate)=\"selectDate($event)\"\n [locale]=\"locale\"\n [calendar]=\"calendar.nextMonth\"\n ></teta-day-picker>\n </div>\n </div>\n }\n </div>\n }\n @if (data.selectedPicker === 'month') {\n <teta-month-picker\n [localeMoths]=\"locale.months\"\n [currentYear]=\"data.currentYear\"\n (changeYear)=\"setYear($event)\"\n [selectedMonth]=\"data.currentMonth\"\n [viewType]=\"viewType\"\n (selectMonth)=\"selectMonth($event)\"\n ></teta-month-picker>\n }\n @if (data.selectedPicker === 'year') {\n <teta-year-picker\n [minMax]=\"data.minMax\"\n [locale]=\"locale\"\n [viewType]=\"viewType\"\n (selectYear)=\"selectYear($event)\"\n [selectedYear]=\"data.currentYear\"\n ></teta-year-picker>\n }\n </div>\n}\n","import { DatePipe, NgClass, AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { maskitoDateRangeOptionsGenerator } from '@maskito/kit';\nimport dayjs from 'dayjs';\nimport { lastValueFrom, Observable, ReplaySubject, take } from 'rxjs';\n\nimport { Align } from '../../../common/enum/align.enum';\nimport { VerticalAlign } from '../../../common/enum/vertical-align.enum';\nimport { viewType } from '../../../common/model/view-type.model';\nimport { BasePicker } from '../base-picker';\nimport { DateFromToModel } from '../model/from-to.model';\nimport { TetaConfigService } from '../../../locale/teta-config.service';\nimport { TetaLocalisation } from '../../../locale/teta-localisation';\nimport { ruLocale } from '../../../locale/ru';\nimport { RangeCalendarComponent } from './range-calendar/range-calendar.component';\nimport { DropdownContentDirective } from '../../dropdown/dropdown-content.directive';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { MaskitoModule } from '@maskito/angular';\nimport { InputComponent } from '../../input/input/input.component';\nimport { DropdownHeadDirective } from '../../dropdown/dropdown-head.directive';\nimport { DropdownComponent } from '../../dropdown/dropdown/dropdown.component';\n\nexport const DATE_Range_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateRangeComponent),\n multi: true,\n};\n\n@Component({\n selector: 'teta-date-range',\n templateUrl: './date-range.component.html',\n styleUrls: ['./date-range.component.scss'],\n providers: [DATE_Range_CONTROL_VALUE_ACCESSOR, DatePipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n DropdownComponent,\n DropdownHeadDirective,\n NgClass,\n InputComponent,\n FormsModule,\n MaskitoModule,\n IconComponent,\n DropdownContentDirective,\n RangeCalendarComponent,\n AsyncPipe,\n ]\n})\nexport class DateRangeComponent extends BasePicker implements OnInit, ControlValueAccessor {\n @Input() date: DateFromToModel = { from: null, to: null };\n public locale: Observable<TetaLocalisation>;\n @Input() showTime = false;\n @Input() minDate: Date | string | number = null;\n @Input() maxDate: Date | string | number = null;\n @Input() invalid = false;\n @Input() disabled = false;\n @Input() align: Align = Align.left;\n @Input() verticalAlign: VerticalAlign = VerticalAlign.auto;\n @Input() viewType: viewType = 'rounded';\n @Input() appendToBody: boolean;\n @Input() backdrop: boolean;\n @Input() allowNull = true;\n @ViewChild('input') input: ElementRef;\n @Output() selectDate: EventEmitter<DateFromToModel> = new EventEmitter<DateFromToModel>();\n public mask = '';\n public selectedDate: ReplaySubject<DateFromToModel> = new ReplaySubject<DateFromToModel>(1);\n @HostBinding('class.daterange') private readonly classDaterange = true;\n constructor(\n override _cdr: ChangeDetectorRef,\n override _elementRef: ElementRef,\n override datePipe: DatePipe,\n private localeService: TetaConfigService,\n ) {\n super(_elementRef, _cdr, datePipe);\n this.locale = this.localeService.locale;\n }\n\n override changeSelectedDate(date: Date, selectedDate: DateFromToModel) {\n if (selectedDate.from) {\n const from = new Date(Math.min(new Date(selectedDate.from).getTime(), date.getTime()));\n const to = new Date(Math.max(new Date(selectedDate.from).getTime(), date.getTime()));\n this.setDate({ from, to });\n this.selectedDate.next({ from: null, to: null });\n this.open = false;\n this._cdr.detectChanges();\n } else {\n this.setDate({ from: date, to: null });\n this.selectedDate.next({ from: date, to: null });\n }\n }\n\n override checkNull() {\n if (this.allowNull) {\n return null;\n }\n return (\n this.datePipe.transform(new Date(), 'dd.MM.yyyy') + ' - ' + this.datePipe.transform(new Date(), 'dd.MM.yyyy')\n );\n }\n\n async prepareInput() {\n const config = await lastValueFrom(this.localeService.locale.pipe(take(1)));\n let str = this.getLocaleString(this.date.from) + ' - ' + this.getLocaleString(this.date.to);\n if (!this.date?.from) {\n str = this.allowNull ? '' : this.getLocaleString(new Date()) + ' - ' + this.getLocaleString(new Date());\n }\n const option: { mode; separator; min?; max?; minLength?; maxLength? } = {\n mode: 'dd/mm/yyyy',\n separator: '.',\n };\n this.mask = config.dateRangeMask;\n if (this.minDate) {\n option.min = dayjs(new Date(this.minDate)).startOf('day');\n }\n if (this.maxDate) {\n option.max = dayjs(new Date(this.maxDate)).endOf('day');\n }\n this.maskitoOptions = maskitoDateRangeOptionsGenerator(option);\n this.changePlaceholder(str);\n }\n\n onBlur() {\n if (this.allowNull && this.inputText.trim() === '') {\n this.setDate({ from: null, to: null });\n this.selectedDate.next({ from: null, to: null });\n this.emitValue({ from: null, to: null });\n } else {\n const val = this.inputText.replace('–', '-').split('-');\n const from = this.getDateFromStr(val[0].trim());\n const to = this.getDateFromStr(val[1]?.trim());\n if (to.day && to.year && to.month) {\n let fromDate = this.getAvailableDate(this.minDate, this.maxDate, new Date(from.year, from.month - 1, from.day));\n let toDate = this.getAvailableDate(this.minDate, this.maxDate, new Date(to.year, to.month - 1, to.day));\n if (fromDate.getTime() > toDate.getTime()) {\n [fromDate, toDate] = [toDate, fromDate];\n }\n\n this.setDate({ from: fromDate, to: toDate });\n this.emitValue({ from: fromDate, to: toDate });\n this.selectedDate.next({ from: null, to: null });\n if (toDate && fromDate) {\n this.open = false;\n }\n } else {\n this.setDate(this.date);\n this.selectedDate.next({ from: null, to: null });\n }\n }\n }\n\n setDate(range: DateFromToModel) {\n if (!range?.from && !range?.to && this.allowNull) {\n this.inputText = '';\n\n this.changePlaceholder('');\n this.selectedDate.next({\n from: range?.from || null,\n to: range?.to || null,\n });\n } else {\n const from = this.getLocaleString(range.from);\n const to = range.from && !range.to ? '' : this.getLocaleString(range.to);\n this.inputText = from + ' - ' + to;\n this.changePlaceholder(from + ' - ' + to);\n }\n }\n\n writeValue(obj: DateFromToModel): void {\n if (obj?.from) {\n this.date = {\n from: new Date(obj.from),\n to: new Date(obj.to),\n };\n this.setDate({\n from: new Date(obj.from),\n to: new Date(obj.to),\n });\n } else {\n this.date = { from: null, to: null };\n }\n this.selectedDate.next({\n from: null,\n to: null,\n });\n }\n\n override isValueChange(value) {\n return !(\n new Date(value.from).getTime() === new Date(this.date.from).getTime() &&\n new Date(value.to).getTime() === new Date(this.date.to).getTime()\n );\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {}\n\n ngOnInit(): void {\n if (this.date?.from) {\n this.setDate({\n from: this.allowNull ? null : new Date(this.date?.from),\n to: this.allowNull ? null : new Date(this.date?.to),\n });\n } else {\n this.setDate({\n from: this.allowNull ? null : new Date(),\n to: this.allowNull ? null : new Date(),\n });\n }\n\n this.selectedDate.next({\n from: null,\n to: null,\n });\n\n this.prepareInput();\n }\n\n onChange(date) {}\n}\n","@if ({ selectedDate: selectedDate | async }; as data) {\n <teta-dropdown\n [appendToBody]=\"appendToBody\"\n [backdrop]=\"backdrop\"\n class=\"row row_auto\"\n [(open)]=\"open\"\n (openChange)=\"openChange($event)\"\n [viewType]=\"viewType\"\n [disabled]=\"disabled\"\n [verticalAlign]=\"verticalAlign\"\n [align]=\"align\"\n [autoCloseIgnore]=\"['esc', 'inside', 'enter']\"\n >\n <div\n tetaDropdownHead\n [class]=\"'datepicker-head font-body-3 gap-8 datepicker_' + viewType\"\n [ngClass]=\"{ 'datepicker-head_invalid': invalid, 'datepicker-head_disabled': disabled }\"\n >\n <teta-input class=\"row row_auto flex\">\n <div [class]=\"'row_auto row datepicker_' + viewType\">\n <div class=\"row row_auto position-relative font-body-3 align-center\">\n <input\n [ngClass]=\"{ 'color-text-90': !disabled }\"\n [disabled]=\"disabled\"\n #input\n style=\"z-index: 1\"\n class=\"border-0 color-text-90\"\n (keydown)=\"checkEnter($event)\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"changeInput($event)\"\n [maskito]=\"maskitoOptions\"\n />\n @if (data.selectedDate || allowNull) {\n <div\n (click)=\"input.focus()\"\n class=\"position-absolute color-text-10\"\n style=\"cursor: text; user-select: none\"\n >\n {{ placeholder }}\n </div>\n }\n </div>\n <teta-icon [name]=\"'calendar'\" [palette]=\"'text'\"></teta-icon>\n </div>\n </teta-input>\n </div>\n <div tetaDropdownContent class=\"scrollable\" (click)=\"$event.preventDefault()\">\n @if (open) {\n <div class=\"row\">\n <teta-range-calendar\n [isDateNull]=\"date === null || (date?.from === null && date?.to === null)\"\n [open]=\"open\"\n [max]=\"maxDate\"\n [allowNull]=\"allowNull\"\n [min]=\"minDate\"\n (setDate)=\"changeSelectedDate($event, data.selectedDate)\"\n [selectedDate]=\"data.selectedDate\"\n [date]=\"date\"\n [viewType]=\"viewType\"\n [locale]=\"locale | async\"\n ></teta-range-calendar>\n </div>\n }\n </div>\n </teta-dropdown>\n}\n","export class DatePeriod {\n start: Date;\n end: Date;\n\n constructor(start: Date, end: Date) {\n this.start = start;\n this.end = end;\n }\n}\n","export enum DatePickerMode {\n date,\n month,\n year,\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'teta-delimiter',\n templateUrl: './delimiter.component.html',\n styleUrls: ['./delimiter.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class DelimiterComponent implements OnInit {\n @Input() direction: 'vertical' | 'horizontal' = 'vertical';\n @Input() palette = 'text';\n @Input() height = 32;\n @Input() verticalMargin = 4;\n @Input() horizontalMargin = 8;\n\n @Input() class;\n\n @HostBinding('class')\n private get getClass(): string {\n return [\n this.class,\n 'delimiter',\n this.getBgColor(),\n this.direction === 'horizontal' ? 'display-flex' : 'display-inline-flex',\n ].join(' ');\n }\n\n @HostBinding('style.height')\n private get getHeight(): string {\n return this.direction === 'vertical' ? '' : '1px';\n }\n\n @HostBinding('style.width')\n private get getWidth(): string {\n return this.direction === 'horizontal' ? '' : '1px';\n }\n\n @HostBinding('style.margin')\n private get getMargin(): string {\n return this.direction === 'horizontal' ? '8px' : '0';\n }\n\n constructor() {}\n\n getBgColor() {\n return this.palette ? `bg-${this.palette}-10` : '';\n }\n\n ngOnInit(): void {}\n}\n","","import {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n Inject,\n NgZone,\n OnDestroy,\n OnInit,\n Renderer2,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { DropdownBase } from './dropdown-base';\n\n@Directive({\n selector: '[tetaDropdown]',\n standalone: true,\n})\nexport class DropdownDirective extends DropdownBase implements OnInit, OnDestroy, AfterViewInit {\n constructor(\n protected override _cdr: ChangeDetectorRef,\n @Inject(DOCUMENT) protected override _document: any,\n protected override _elementRef: ElementRef<HTMLElement>,\n protected override _zone: NgZone,\n protected override _renderer: Renderer2,\n ) {\n super(_cdr, _document, _elementRef, _zone, _renderer);\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this.closeDropdown();\n this.removeScrollListener();\n this._alive = false;\n }\n\n ngAfterViewInit(): void {\n if (this._content) {\n this._renderer.removeChild(this._content.nativeElement.parentNode, this._content.nativeElement);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'teta-toolbar',\n templateUrl: './toolbar.component.html',\n styleUrls: ['./toolbar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class ToolbarComponent implements OnInit {\n @Input() palette: string;\n @Input() class;\n\n @HostBinding('class')\n private get getClass() {\n const result = [this.class, 'toolbar'];\n if (this.palette) {\n result.push(`toolbar-${this.palette}`);\n }\n return result.join(' ');\n }\n\n ngOnInit(): void {}\n}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { DelimiterComponent } from '../../delimiter/delimiter/delimiter.component';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { ButtonComponent } from '../../button/button/button.component';\nimport { ToolbarComponent } from '../../toolbar/toolbar/toolbar.component';\n\n@Component({\n selector: 'teta-expand-card',\n templateUrl: './expand-card.component.html',\n styleUrls: ['./expand-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'expand-card',\n imports: [ToolbarComponent, ButtonComponent, IconComponent, DelimiterComponent]\n})\nexport class ExpandCardComponent implements OnInit {\n @Input() open = true;\n @Output() openChange = new EventEmitter<boolean>();\n @Input() showCross: boolean = true;\n @Output() crossClick = new EventEmitter<MouseEvent>();\n constructor() {}\n\n ngOnInit(): void {}\n\n setOpen() {\n this.open = !this.open;\n this.openChange.emit(this.open);\n }\n}\n","<teta-toolbar class=\"justify-content-between align-center\">\n <ng-content select=\"head\"></ng-content>\n <div class=\"row gap align-center\">\n <button type=\"button\" teta-button (click)=\"setOpen()\" [palette]=\"'text'\" [view]=\"'ghost'\" [square]=\"true\">\n <teta-icon [name]=\"open ? 'arrowUpKey' : 'arrowDownKey'\" [palette]=\"'text'\"></teta-icon>\n </button>\n @if (showCross) {\n <teta-delimiter [palette]=\"'text'\" class=\"height-4\"></teta-delimiter>\n <button\n type=\"button\"\n teta-button\n (click)=\"crossClick.emit($event)\"\n [palette]=\"'text'\"\n [view]=\"'ghost'\"\n [square]=\"true\"\n >\n <teta-icon [name]=\"'closeBig'\" [palette]=\"'text'\"></teta-icon>\n </button>\n }\n </div>\n</teta-toolbar>\n@if (open) {\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { ButtonComponent } from '../../button/button/button.component';\n\n@Component({\n selector: 'teta-expand-item',\n templateUrl: './expand-item.component.html',\n styleUrls: ['./expand-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'expand-item',\n imports: [ButtonComponent, IconComponent]\n})\nexport class ExpandItemComponent {\n @Input() open = true;\n @Output() openChange = new EventEmitter<boolean>();\n\n setOpen() {\n this.open = !this.open;\n this.openChange.emit(this.open);\n }\n}\n","<div class=\"row align-center gap color-text-90 height-6\">\n <div class=\"row row_auto align-center font-title-2\">\n <ng-content select=\"head\"></ng-content>\n </div>\n <button type=\"button\" teta-button (click)=\"setOpen()\" [palette]=\"'text'\" [view]=\"'ghost'\" [square]=\"true\">\n <teta-icon [name]=\"open ? 'arrowUpKey' : 'arrowDownKey'\" [palette]=\"'text'\"></teta-icon>\n </button>\n</div>\n@if (open) {\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaExpandPanelContent]',\n standalone: true,\n})\nexport class ExpandPanelContentDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaExpandPanelHead]',\n standalone: true,\n})\nexport class ExpandPanelHeadDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\nimport { ExpandPanelContentDirective } from '../expand-panel-content.directive';\nimport { ExpandPanelHeadDirective } from '../expand-panel-head.directive';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { ButtonComponent } from '../../button/button/button.component';\nimport { ToolbarComponent } from '../../toolbar/toolbar/toolbar.component';\n\n@Component({\n selector: 'teta-expand-panel',\n templateUrl: './expand-panel.component.html',\n styleUrls: ['./expand-panel.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ToolbarComponent, ButtonComponent, IconComponent, NgTemplateOutlet]\n})\nexport class ExpandPanelComponent implements OnInit {\n @ContentChild(ExpandPanelContentDirective, { static: false })\n content: ExpandPanelContentDirective;\n\n @ContentChild(ExpandPanelHeadDirective, { static: false })\n head: ExpandPanelHeadDirective;\n\n @Input() placeholder: string;\n @Input() open = true;\n @Output() openChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Input() cookieName: string;\n @Input() direction: 'left' | 'right' = 'left';\n\n constructor() {}\n\n openPanel() {\n this.open = true;\n this.openChange.emit(true);\n this.saveCookie();\n }\n\n closePanel() {\n this.open = false;\n this.openChange.emit(false);\n this.saveCookie();\n }\n\n ngOnInit(): void {\n this.restoreCookie();\n }\n\n private saveCookie() {\n if (!this.cookieName?.length) {\n return;\n }\n localStorage.setItem(this.cookieName, JSON.stringify(this.open));\n }\n\n private restoreCookie() {\n if (!this.cookieName?.length) {\n return;\n }\n const cookie = localStorage.getItem(this.cookieName);\n this.open = cookie != null ? JSON.parse(cookie) : true;\n this.openChange.emit(this.open);\n }\n}\n","@if (open) {\n <teta-toolbar\n style=\"display: flex\"\n [style.justifyContent]=\"direction === 'right' ? 'space-between' : 'unset'\"\n [style.flexDirection]=\"direction === 'right' ? 'row-reverse' : 'row'\"\n >\n <button teta-button [square]=\"true\" [palette]=\"'text'\" [view]=\"'ghost'\" (click)=\"closePanel()\">\n <teta-icon [palette]=\"'text'\" [name]=\"direction === 'right' ? 'start' : 'end'\"></teta-icon>\n </button>\n <span class=\"font-title-2\" style=\"display: contents\">\n <ng-container *ngTemplateOutlet=\"head?.template\"></ng-container>\n </span>\n </teta-toolbar>\n <ng-container *ngTemplateOutlet=\"content?.template\"></ng-container>\n}\n@if (!open) {\n <div class=\"width-10 overflow-hidden\" style=\"height: 100%\">\n <button\n teta-button\n style=\"transform-origin: 0 0; transform: rotate(-90deg) translateX(-100%); margin: 6px\"\n [palette]=\"'text'\"\n [view]=\"'ghost'\"\n (click)=\"openPanel()\"\n >\n <div class=\"font-button-2 nowrap\">{{ placeholder }}</div>\n <teta-icon\n style=\"transform-origin: 0 0; transform: rotate(-90deg) translateX(-100%)\"\n [palette]=\"'text'\"\n [name]=\"direction === 'right' ? 'start' : 'end'\"\n ></teta-icon>\n </button>\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { TranslocoModule } from '@jsverse/transloco';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { ButtonComponent } from '../../button/button/button.component';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'teta-file-upload-area',\n templateUrl: './file-upload-area.component.html',\n styleUrls: ['./file-upload-area.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, ButtonComponent, IconComponent, TranslocoModule]\n})\nexport class FileUploadAreaComponent {\n @HostBinding('class.file-upload') fileUpload = true;\n\n @HostBinding('class.file-upload_active')\n get fileUploadActive() {\n return this._asActive;\n }\n\n @Input() multiple = true;\n @Input() disabled = false;\n @Input() accept: string[] = [];\n\n @Output() upload: EventEmitter<FileList> = new EventEmitter();\n\n @ViewChild('fileUpload', { static: false }) input?: ElementRef;\n @ContentChild('buttonTemplate') buttonTemplate?: TemplateRef<any>;\n files: any;\n\n private _asActive = false;\n\n @HostListener('dragenter', ['$event']) dragEnter(event: DragEvent) {\n this.preventDefaults(event);\n this._asActive = true;\n }\n\n @HostListener('dragover', ['$event']) dragOver(event: DragEvent) {\n this.preventDefaults(event);\n this._asActive = true;\n }\n\n @HostListener('dragleave', ['$event']) dragLeave(event: DragEvent) {\n this.preventDefaults(event);\n this._asActive = false;\n }\n\n @HostListener('drop', ['$event']) drop(event: DragEvent) {\n this.upload.emit(event.dataTransfer?.files);\n this.preventDefaults(event);\n }\n\n fileChanged(event: any) {\n if (event.target && event.target.files) {\n this.upload.emit(event.target.files);\n if (this.input) {\n this.input.nativeElement.value = null;\n }\n }\n }\n\n private preventDefaults(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n }\n}\n","<ng-content></ng-content>\n<label class=\"file-upload-label\">\n <input\n #fileUpload\n id=\"upload-input\"\n class=\"file-upload-input\"\n type=\"file\"\n name=\"fileUpload\"\n [attr.accept]=\"accept\"\n [attr.multiple]=\"multiple ? 'multiple' : null\"\n [disabled]=\"disabled\"\n (change)=\"fileChanged($event)\"\n />\n <ng-container [ngTemplateOutlet]=\"buttonTemplate || defaultTemplate\"></ng-container>\n</label>\n<ng-template #defaultTemplate>\n <teta-button [palette]=\"'primary'\" type=\"button\">\n <teta-icon [name]=\"'search'\" [palette]=\"'white'\"></teta-icon>\n {{ 'common.browse' | transloco }}\n </teta-button>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'teta-file-item',\n templateUrl: './file-item.component.html',\n styleUrls: ['./file-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class FileItemComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<p>file-item works!</p>\n","export class DateFilterValue {\n /**\n * Значение должно быть меньше чем\n */\n lessThan: Date | undefined | null;\n /**\n * Значение должно быть больше чем\n */\n greaterThan: Date | undefined | null;\n\n constructor(options?: { lessThan?: Date | undefined | null; greaterThan?: Date | undefined | null }) {\n if (options) {\n this.lessThan = typeof options.lessThan === 'string' ? new Date(options.lessThan) : options.lessThan;\n this.greaterThan = typeof options.greaterThan === 'string' ? new Date(options.greaterThan) : options.greaterThan;\n }\n }\n}\n","export class StringUtil {\n static firstLetterToLower(input: string) {\n return input.charAt(0).toLocaleLowerCase() + input.slice(1);\n }\n\n static firstLetterToUpper(input: string) {\n return input.charAt(0).toLocaleUpperCase() + input.slice(1);\n }\n}\n","import { IFilter } from '../contarct/i-filter';\nimport { StringUtil } from '../../../util/string-util';\n\nexport class FilterBase<T> implements IFilter<T> {\n field: string;\n name: string;\n value: T;\n\n constructor(options?: { field: string; name: string }) {\n if (options) {\n this.field = StringUtil.firstLetterToLower(options.field);\n this.name = StringUtil.firstLetterToLower(options.name);\n }\n }\n}\n","import { FilterBase } from '../base/filter-base';\nimport { DateFilterValue } from './date-filter-value';\n\nexport class DateFilter extends FilterBase<DateFilterValue> {\n constructor(options?: { value?: DateFilterValue; field: string; name: string }) {\n super(options);\n if (options) {\n this.value = new DateFilterValue(options.value);\n }\n }\n}\n","export enum StringFilterType {\n /**\n * Строгое совпадение\n */\n Equals = 1,\n /**\n * Начинается с указанной подстроки\n */\n StartsWith = 2,\n /**\n * Оканчивается указанной подстрокой\n */\n EndsWith = 3,\n /**\n * Содержит указанную подстроку\n */\n Contains = 4,\n}\n","import { FilterBase } from '../base/filter-base';\nimport { StringFilterType } from '../enum/string-filter-type.enum';\n\nexport class StringFilter extends FilterBase<string> {\n type: StringFilterType;\n\n constructor(options?: { value?: string; type?: StringFilterType; field: string; name: string }) {\n super(options);\n if (options) {\n this.value = options.value || this.value;\n this.type = options.type || StringFilterType.Contains;\n }\n }\n}\n","import { FilterBase } from '../base/filter-base';\nimport { NumericFilterValue } from './numeric-filter-value';\n\nexport class NumericFilter extends FilterBase<NumericFilterValue> {\n strict: boolean;\n\n constructor(options?: { value?: NumericFilterValue; strict?: boolean; field: string; name: string }) {\n super(options);\n this.value = options?.value || this.value;\n this.strict = options?.strict || false;\n }\n}\n","export enum ListFilterType {\n None,\n Excluded,\n}\n","import { FilterBase } from '../base/filter-base';\nimport { ListFilterType } from '../enum/list-filter-type.enum';\n\nexport class ListFilter extends FilterBase<any[]> {\n type: ListFilterType;\n\n constructor(options?: { value?: any[]; type?: ListFilterType; field: string; name: string }) {\n super(options);\n if (options) {\n this.value = options.value || this.value;\n this.type = options.type || ListFilterType.None;\n }\n }\n}\n","import { StringUtil } from '../../../util/string-util';\n\nexport class SortParam {\n /**\n * Поле сортировки\n */\n field: string;\n /**\n * Направление (true: Asc, false: Desc)\n */\n asc: boolean;\n /**\n * Порядок сортировки\n */\n order: number;\n\n /**\n * Инициализация из анонимного объекта\n */\n constructor(options?: { field?: string; asc?: boolean; order?: number }) {\n if (options) {\n this.field = StringUtil.firstLetterToLower(options.field || this.field);\n this.asc = options.asc || false;\n this.order = options.order || this.order;\n }\n }\n}\n","export class NumericFilterValue {\n /**\n * Значение должно быть меньше чем\n */\n lessThan: number | null | undefined;\n /**\n * Значение должно быть больше чем\n */\n greaterThan: number | null | undefined;\n /**\n * Значение должно быть равно\n */\n equalsTo: number | null | undefined;\n\n constructor(options?: {\n lessThan?: number | null | undefined;\n greaterThan?: number | null | undefined;\n equalsTo?: number | null | undefined;\n }) {\n if (options) {\n this.lessThan = options.lessThan;\n this.greaterThan = options.greaterThan;\n this.equalsTo = options.equalsTo;\n }\n }\n}\n","import { FilterBase } from '../base/filter-base';\n\nexport class BooleanFilter extends FilterBase<boolean> {\n constructor(options?: { value?: boolean; field: string; name: string }) {\n super(options);\n this.value = !!options?.value;\n }\n}\n","import { StringFilter } from './string-filter';\nimport { NumericFilter } from './numeric-filter';\nimport { DateFilter } from './date-filter';\nimport { ListFilter } from './list-filter';\nimport { SortParam } from './sort-param';\nimport { DateFilterValue } from './date-filter-value';\nimport { NumericFilterValue } from './numeric-filter-value';\nimport { ListFilterType } from '../enum/list-filter-type.enum';\nimport { BooleanFilter } from './boolean-filter';\n\nexport class FilterState {\n stringFilters: StringFilter[] = [];\n numericFilters: NumericFilter[] = [];\n dateFilters: DateFilter[] = [];\n listFilters: ListFilter[] = [];\n booleanFilters: BooleanFilter[] = [];\n sortParams: SortParam[] = [];\n\n constructor(options?: {\n stringFilters?: any[];\n booleanFilters?: any[];\n numericFilters?: any[];\n dateFilters?: any[];\n listFilters?: any[];\n sortParams?: any[];\n }) {\n if (options) {\n if (options.stringFilters && options.stringFilters.length) {\n this.stringFilters = options.stringFilters.map((x: any) => new StringFilter(x));\n }\n\n if (options.booleanFilters && options.booleanFilters.length) {\n this.booleanFilters = options.booleanFilters.map((x: any) => new BooleanFilter(x));\n }\n\n if (options.numericFilters && options.numericFilters.length) {\n this.numericFilters = options.numericFilters.map((x: any) => new NumericFilter(x));\n }\n\n if (options.dateFilters && options.dateFilters.length) {\n this.dateFilters = options.dateFilters.map((x: any) => new DateFilter(x));\n }\n\n if (options.listFilters && options.listFilters.length) {\n this.listFilters = options.listFilters.map((x: any) => new ListFilter(x));\n }\n\n if (options.sortParams && options.sortParams.length) {\n this.sortParams = options.sortParams.map((x: any) => new SortParam(x));\n }\n }\n }\n\n static restore(cookie: string): any {\n const state = localStorage.getItem(cookie) || 'null';\n return JSON.parse(state);\n }\n\n save(cookieName: string): void {\n if (cookieName) {\n localStorage.setItem(cookieName, JSON.stringify(this));\n }\n }\n\n addListFilter(value: ListFilter): ListFilter {\n if (this.listFilters === null || this.listFilters === undefined) {\n this.listFilters = [];\n }\n const filter = this.listFilters.find((f) => f.field === value.field);\n if (filter === null || filter === undefined) {\n this.listFilters.push(value);\n return value;\n } else {\n filter.value = value.value;\n return filter;\n }\n }\n\n addDateFilter(value: DateFilter): DateFilter {\n if (this.dateFilters === null || this.dateFilters === undefined) {\n this.dateFilters = [];\n }\n const filter = this.dateFilters.find((f) => f.field === value.field);\n if (filter === null || filter === undefined) {\n this.dateFilters.push(value);\n return value;\n } else {\n filter.value = value.value;\n return filter;\n }\n }\n\n addStringFilter(value: StringFilter): StringFilter {\n if (this.stringFilters === null || this.stringFilters === undefined) {\n this.stringFilters = [];\n }\n const filter = this.stringFilters.find((f) => f.field === value.field);\n if (filter === null || filter === undefined) {\n this.stringFilters.push(value);\n return value;\n } else {\n filter.value = value.value;\n return filter;\n }\n }\n\n addBooleanFilter(value: BooleanFilter): BooleanFilter {\n if (this.booleanFilters === null || this.booleanFilters === undefined) {\n this.booleanFilters = [];\n }\n const filter = this.booleanFilters.find((f) => f.field === value.field);\n if (filter === null || filter === undefined) {\n this.booleanFilters.push(value);\n return value;\n } else {\n filter.value = value.value;\n return filter;\n }\n }\n\n addNumericFilter(value: NumericFilter): NumericFilter {\n if (this.numericFilters === null || this.numericFilters === undefined) {\n this.numericFilters = [];\n }\n const filter = this.numericFilters.find((f) => f.field === value.field);\n if (filter === null || filter === undefined) {\n this.numericFilters.push(value);\n return value;\n } else {\n filter.value = value.value;\n return filter;\n }\n }\n\n clear(): void {\n this.sortParams.length = 0;\n\n this.stringFilters.map((f: StringFilter) => {\n f.value = '';\n });\n this.booleanFilters.map((f: BooleanFilter) => {\n f.value = null;\n });\n this.dateFilters.map((f: DateFilter) => {\n f.value = new DateFilterValue({\n lessThan: null,\n greaterThan: null,\n });\n });\n this.numericFilters.map((f: NumericFilter) => {\n f.value = new NumericFilterValue({\n lessThan: null,\n greaterThan: null,\n equalsTo: null,\n });\n });\n this.listFilters.map((f: ListFilter) => {\n f.value = [];\n f.type = ListFilterType.None;\n });\n }\n}\n","import { FilterState } from '../contarct/filter-state';\nimport { EventEmitter } from '@angular/core';\nimport { FilterItem } from '../contarct/filter-item';\nimport { IFilter } from '../contarct/i-filter';\nimport { IIdName } from '../../../common/contract/i-id-name';\n\nexport abstract class FilterComponentBase<T> {\n abstract column: FilterItem;\n abstract state: FilterState;\n abstract data: T[];\n abstract filterOptions: IIdName<any>[];\n abstract filterChanged: EventEmitter<IFilter<any>>;\n}\n","import { FilterType } from '../enum/filter-type.enum';\nimport { StringFilterType } from '../enum/string-filter-type.enum';\nimport { ListFilterType } from '../enum/list-filter-type.enum';\nimport { StringUtil } from '../../../util/string-util';\n\nexport interface IFilterItemOptions {\n sortOrder?: number;\n name?: string;\n caption?: string;\n hint?: string;\n sortable?: boolean;\n sortField?: string;\n filterable?: boolean;\n filterField?: string;\n filterType?: FilterType | null;\n stringFilterType?: StringFilterType;\n listFilterType?: ListFilterType;\n strict?: boolean;\n filterComponent?: any;\n columns?: FilterItem[];\n}\n\nexport class FilterItem {\n /**\n * Порядковый номер\n */\n sortOrder: number = Number.MAX_VALUE;\n /**\n * Название столбца для заголовка таблицы\n */\n caption: string;\n /**\n * Подсказка\n */\n hint: string;\n /**\n * Название столбца в строке результатов\n */\n name: string;\n /**\n * Возможность сортировать поле\n */\n sortable = true;\n /**\n * Возможность фильтровать поле\n */\n filterable = true;\n /**\n * Поле для сортировки\n */\n sortField: string;\n /**\n * Поле для фильтрации\n */\n filterField: string;\n /**\n * Тип фильтра\n */\n filterType: FilterType | null;\n /**\n * Тип сравнения строкового фильтра\n */\n stringFilterType: StringFilterType;\n /**\n * Тип сравнения строкового фильтра\n */\n listFilterType: ListFilterType;\n /**\n * Строгое сравнение\n */\n strict: boolean;\n /**\n * Компонент для рендера фильтра\n */\n filterComponent: any;\n\n /**\n * Дочерние элементы\n */\n columns: FilterItem[];\n\n constructor(options?: IFilterItemOptions) {\n this.sortOrder = options?.sortOrder ?? Number.MAX_VALUE;\n this.name = options?.name ?? '';\n this.caption = options?.caption ?? this.name;\n this.hint = options?.hint ?? '';\n this.sortable = options?.sortable ?? true;\n this.filterable = options?.filterable ?? true;\n this.sortField = StringUtil.firstLetterToLower(options?.sortField ?? this.name);\n this.filterField = StringUtil.firstLetterToLower(options?.filterField ?? this.name);\n this.filterType = options?.filterType;\n this.stringFilterType = options?.stringFilterType ?? StringFilterType.Contains;\n this.listFilterType = options?.listFilterType ?? ListFilterType.None;\n this.strict = options?.strict ?? false;\n this.filterComponent = options?.filterComponent;\n this.columns = options?.columns?.map((_) => new FilterItem(_)) ?? [];\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { DateFilterValue } from '../contarct/date-filter-value';\nimport { DateFilter } from '../contarct/date-filter';\nimport { FilterState } from '../contarct/filter-state';\nimport { FilterBase } from '../base/filter-base';\nimport { FilterComponentBase } from '../base/filter-component-base';\nimport { FilterItem } from '../contarct/filter-item';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { Observable } from 'rxjs';\nimport { TetaLocalisation } from '../../../locale/teta-localisation';\nimport { TetaConfigService } from '../../../locale/teta-config.service';\nimport { AsyncPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { DatePickerComponent } from '../../date-picker/date-picker/date-picker.component';\nimport { InputComponent } from '../../input/input/input.component';\n\n@Component({\n selector: 'teta-date-filter',\n templateUrl: './date-filter.component.html',\n styleUrls: ['./date-filter.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [InputComponent, DatePickerComponent, FormsModule, AsyncPipe]\n})\nexport class DateFilterComponent<T> extends FilterComponentBase<T> implements OnInit {\n @Input() column: FilterItem;\n @Input() data: T[];\n @Input() filterOptions: IIdName<any>[] = [];\n @Output() filterChanged: EventEmitter<FilterBase<DateFilterValue>> = new EventEmitter<FilterBase<DateFilterValue>>();\n\n filter: DateFilter;\n state$: FilterState;\n\n @Input()\n set state(val: FilterState) {\n this.state$ = val;\n this.filter = this.getFilter();\n this.changeDetector.detectChanges();\n this.changeDetector.markForCheck();\n }\n\n get state() {\n return this.state$;\n }\n locale: Observable<TetaLocalisation>;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private _config: TetaConfigService,\n ) {\n super();\n this.locale = this._config.locale;\n }\n\n ngOnInit() {\n this.filter = this.getFilter();\n }\n\n private getFilter(): DateFilter {\n let filter = this.state.dateFilters.find((f) => f.field === this.column.filterField);\n if (filter === null || filter === undefined) {\n filter = this.state.addDateFilter(\n new DateFilter({\n value: new DateFilterValue(),\n field: this.column.filterField,\n name: this.column.name,\n }),\n );\n }\n return filter;\n }\n}\n","@if (locale | async; as loc) {\n <div class=\"form-row padding-3\">\n <teta-input [label]=\"loc.from\">\n <teta-date-picker\n style=\"width: 110px\"\n [ngModel]=\"filter.value?.greaterThan\"\n [appendToBody]=\"false\"\n (ngModelChange)=\"filter.value.greaterThan = $event\"\n ></teta-date-picker>\n </teta-input>\n <teta-input [label]=\"loc.to\">\n <teta-date-picker\n style=\"width: 110px\"\n [ngModel]=\"filter.value?.lessThan\"\n [appendToBody]=\"false\"\n (ngModelChange)=\"filter.value.lessThan = $event\"\n ></teta-date-picker>\n </teta-input>\n </div>\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[tetaScrollable]',\n standalone: true,\n})\nexport class ScrollableDirective {\n @HostBinding('class.scrollable_hide_scroll') private readonly hideScrollClass = true;\n}\n","import { Directive, Inject, Input, TemplateRef, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaLet]',\n standalone: true,\n})\nexport class LetDirective<T> {\n @Input()\n tetaLet!: T;\n\n constructor(\n @Inject(ViewContainerRef) viewContainer: ViewContainerRef,\n @Inject(TemplateRef) templateRef: TemplateRef<LetContext<T>>,\n ) {\n viewContainer.createEmbeddedView(templateRef, new LetContext<T>(this));\n }\n\n static ngTemplateContextGuard<T>(\n _dir: LetDirective<T>,\n _ctx: any,\n ): _ctx is LetDirective<Exclude<T, null | undefined>> {\n return true;\n }\n}\n\nexport class LetContext<T> implements ContextWithImplicit<T> {\n constructor(private readonly internalDirectiveInstance: LetDirective<T>) {}\n\n get $implicit(): T {\n return this.internalDirectiveInstance.tetaLet;\n }\n\n get tetaLet(): T {\n return this.internalDirectiveInstance.tetaLet;\n }\n}\n\nexport interface ContextWithImplicit<T> {\n $implicit: T;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {\n animationFrameScheduler,\n debounceTime,\n distinctUntilChanged,\n fromEvent,\n Observable,\n shareReplay,\n Subject,\n tap,\n} from 'rxjs';\nimport { map, takeWhile } from 'rxjs/operators';\n\nimport { ScrollableDirective } from '../scrollable.directive';\nimport { NgClass, AsyncPipe } from '@angular/common';\nimport { LetDirective } from '../../let/let.directive';\n\ntype ScrollDimensions = {\n clientHeight: number;\n clientWidth: number;\n scrollHeight: number;\n scrollWidth: number;\n};\n\n@Component({\n selector: 'teta-scrollable',\n templateUrl: './scrollable.component.html',\n styleUrls: ['./scrollable.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [LetDirective, NgClass, AsyncPipe, ScrollableDirective],\n})\nexport class ScrollableComponent implements OnInit, OnDestroy {\n @ContentChild(ScrollableDirective, {\n static: true,\n read: ElementRef,\n })\n private _scrollDirective: ElementRef;\n\n @ViewChild('scrollableWrapper', {\n static: true,\n })\n private _scrollableWrapper: ElementRef;\n\n @ViewChild('scrollbarVertical', {\n static: true,\n })\n private _scrollbarVertical: ElementRef;\n\n @ViewChild('scrollbarHorizontal', {\n static: true,\n })\n private _scrollbarHorizontal: ElementRef;\n\n @Input() direction: 'row' | 'column' = 'row';\n @Input()\n @HostBinding('class.show-scrollbars')\n showScrollbars = false;\n\n @Input() contentClass: string | string[];\n\n @Output() scroll = new EventEmitter<Event>();\n\n private _scrollSize = new Subject<void>();\n scrollSize: Observable<ScrollDimensions>;\n\n private _container: ElementRef;\n private _alive = true;\n private resizeObserver: ResizeObserver;\n private mutationObserver: MutationObserver;\n\n constructor() {\n this.scrollSize = this._scrollSize.asObservable().pipe(\n debounceTime(100, animationFrameScheduler),\n map(() => {\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = this._container.nativeElement;\n return {\n scrollHeight,\n clientHeight,\n scrollWidth,\n clientWidth,\n };\n }),\n distinctUntilChanged((previous, current) => {\n return (\n previous.scrollHeight === current.scrollHeight &&\n previous.clientHeight === current.clientHeight &&\n previous.scrollWidth === current.scrollWidth &&\n previous.clientWidth === current.clientWidth\n );\n }),\n shareReplay({\n refCount: true,\n bufferSize: 1,\n }),\n );\n this.resizeObserver = new ResizeObserver(this._observe);\n this.mutationObserver = new MutationObserver(this._observe);\n }\n\n private _observe = () => {\n this._scrollSize.next();\n };\n\n scrollVertical(event) {\n this._container.nativeElement.scrollTop = event.target.scrollTop;\n }\n\n scrollHorizontal(event) {\n this._container.nativeElement.scrollLeft = event.target.scrollLeft;\n }\n\n ngOnInit(): void {\n this._container = this._scrollableWrapper;\n if (this._scrollDirective) {\n this._container = this._scrollDirective;\n }\n\n fromEvent(this._container.nativeElement, 'scroll')\n .pipe(\n takeWhile(() => this._alive),\n tap((event: any) => {\n this._scrollbarHorizontal.nativeElement.scrollLeft = event.target.scrollLeft;\n this._scrollbarVertical.nativeElement.scrollTop = event.target.scrollTop;\n this.scroll.emit(event);\n }),\n )\n .subscribe();\n\n this.resizeObserver.observe(this._container.nativeElement);\n this.mutationObserver.observe(this._container.nativeElement, {\n attributes: false,\n childList: true,\n subtree: true,\n });\n }\n\n ngOnDestroy() {\n this._alive = false;\n this.resizeObserver.unobserve(this._container.nativeElement);\n this.resizeObserver.disconnect();\n this.mutationObserver.disconnect();\n }\n}\n","<div class=\"scroll-controls\" *tetaLet=\"scrollSize | async as scrollSize\">\n <div\n #scrollbarVertical\n [class.display-none]=\"scrollSize?.scrollHeight <= scrollSize?.clientHeight\"\n class=\"scroll-scrollbar scroll-scrollbar-vertical\"\n (scroll)=\"scrollVertical($event)\"\n >\n <div [style.height.px]=\"scrollSize?.scrollHeight\" style=\"width: 1px\"></div>\n </div>\n <div\n #scrollbarHorizontal\n [class.display-none]=\"scrollSize?.scrollWidth <= scrollSize?.clientWidth\"\n class=\"scroll-scrollbar scroll-scrollbar-horizontal\"\n (scroll)=\"scrollHorizontal($event)\"\n >\n <div [style.width.px]=\"scrollSize?.scrollWidth\" style=\"height: 1px\"></div>\n </div>\n</div>\n\n<div #scrollableWrapper class=\"scroll-content-wrapper\" [ngClass]=\"contentClass\" [class.column]=\"direction === 'column'\">\n <ng-content></ng-content>\n</div>\n","export const getPrecision = (a: number) => {\n if (!isFinite(a)) {\n return 0;\n }\n let e = 1;\n let p = 0;\n while (Math.round(a * e) / e !== a) {\n e *= 10;\n p++;\n }\n return p;\n};\n\nexport const formatNumber = (\n value: any,\n decimalLength: number,\n chunkDelimiter: string,\n decimalDelimiter: string,\n chunkLength: number,\n) => {\n const abs = Math.abs(value);\n if (0 < abs && 1 > abs) {\n const firstDigitIndex = Math.floor(Math.abs(Math.log10(abs)));\n decimalLength += firstDigitIndex;\n }\n const precision = Math.min(getPrecision(value), Math.floor(decimalLength));\n const result = '\\\\d(?=(\\\\d{' + chunkLength + '})+' + (precision > 0 ? '\\\\D' : '$') + ')';\n const num = value.toFixed(precision);\n return (decimalDelimiter ? num.replace('.', decimalDelimiter) : num).replace(\n new RegExp(result, 'g'),\n '$&' + chunkDelimiter,\n );\n};\n\nexport const prependZero = (input: number, length: number) => ('0'.repeat(length) + input).slice(-length);\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { formatNumber } from '../util/number-helper';\n\n@Pipe({\n name: 'tetaNumber',\n standalone: true,\n})\nexport class NumberPipe implements PipeTransform {\n transform(\n value: number | string | null | undefined,\n decimalLength: number = 2,\n chunkDelimiter: string = '',\n decimalDelimiter: string = '.',\n chunkLength: number = 3,\n ): string {\n if (value === null || value === undefined || value === '') {\n return '';\n }\n if (typeof value === 'string' && isNaN(parseFloat(value))) {\n return value.toString();\n }\n if (decimalLength === null) {\n return value.toString();\n }\n value = Number(value);\n return formatNumber(value, decimalLength, chunkDelimiter, decimalDelimiter, chunkLength);\n }\n}\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n selector: '[tetaOnlyNumber]',\n standalone: true,\n})\nexport class OnlyNumberDirective {\n @Input() tetaOnlyNumber = true;\n @Input() allowDecimals = true;\n @Input() allowSign = true;\n @Input() decimalSeparator = '.';\n @Input() commaSeparator = ',';\n @Input() onlyPositive = false;\n\n private _previousValue = '';\n\n private _integerUnsigned = '^[0-9]*$';\n private _integerSigned = '^-?[0-9]+$';\n private _decimalUnsigned = '^[0-9]+(.[0-9]+)?$';\n private _decimalSigned = '^-?[0-9]+(.[0-9]+)?$';\n\n private readonly _minusSign: string = '-';\n\n constructor(\n private _elementRef: ElementRef<HTMLInputElement>,\n private _control: NgControl,\n ) {}\n\n @HostListener('input', ['$event']) onChange(e: any) {\n if (this.tetaOnlyNumber === false) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n // this.validateValue(this._elementRef.nativeElement.value);\n }\n\n @HostListener('blur', ['$event']) onBlur(e: any) {\n e.preventDefault();\n e.stopPropagation();\n const value = this._elementRef.nativeElement.value;\n if (value.endsWith('.')) {\n this._elementRef.nativeElement.value = value.replace('.', '');\n this._elementRef.nativeElement.dispatchEvent(new Event('input'));\n }\n }\n\n @HostListener('dblclick', ['$event']) dblclick(e: any) {\n if (this.tetaOnlyNumber === false) {\n return;\n }\n this._elementRef.nativeElement.select();\n }\n\n @HostListener('paste', ['$event']) onPaste(e: any) {\n if (this.tetaOnlyNumber === false) {\n return;\n }\n this.validateValue(e.clipboardData.getData('text/plain'));\n this._elementRef.nativeElement.dispatchEvent(new Event('input'));\n e.preventDefault();\n }\n\n @HostListener('keydown', ['$event']) onKeyDown(e: KeyboardEvent) {\n if (this.tetaOnlyNumber === false) {\n return;\n }\n const cursorPosition: number = (e.target as HTMLInputElement).selectionStart ?? 0;\n const originalValue: string = (e.target as HTMLInputElement).value;\n const controlOrCommand = e.ctrlKey === true || e.metaKey === true;\n const signExists = originalValue.includes('-');\n const separatorExists =\n originalValue.includes(this.decimalSeparator) || originalValue.includes(this.commaSeparator);\n\n const allowedKeys = ['Backspace', 'ArrowLeft', 'ArrowRight', 'Delete', 'Escape', 'Tab', 'Home', 'End'];\n\n const separatorIsCloseToSign = signExists && cursorPosition <= 1;\n if (this.allowDecimals && !separatorIsCloseToSign && !separatorExists) {\n allowedKeys.push('.');\n }\n\n const firstCharacterIsSeparator = originalValue.charAt(0) !== this.decimalSeparator;\n if (this.allowSign && !signExists && firstCharacterIsSeparator && cursorPosition === 0 && !this.onlyPositive) {\n allowedKeys.push('-');\n }\n\n if (\n allowedKeys.indexOf(e.key) !== -1 ||\n (e.code === 'KeyA' && controlOrCommand) ||\n (e.code === 'KeyC' && controlOrCommand) ||\n (e.code === 'KeyV' && controlOrCommand) ||\n (e.code === 'KeyZ' && controlOrCommand) ||\n (e.code === 'KeyX' && controlOrCommand)\n ) {\n return;\n }\n this._previousValue = originalValue;\n\n const isNumber = new RegExp(this._integerUnsigned).test(e.key);\n if (isNumber) {\n return;\n } else {\n if (e.key === ',' && originalValue.indexOf('.') < 0) {\n this._elementRef.nativeElement.value = `${originalValue.slice(0, cursorPosition)}.${originalValue.slice(cursorPosition)}`;\n this._elementRef.nativeElement.dispatchEvent(new Event('input'));\n if (this._elementRef.nativeElement.setSelectionRange) {\n this._elementRef.nativeElement.setSelectionRange(cursorPosition + 1, cursorPosition + 1);\n }\n }\n e.preventDefault();\n }\n }\n\n validateValue(value: string): void {\n if (this.tetaOnlyNumber === false) {\n return;\n }\n value = value.replace(',', '.').trim();\n let regex: string = this._integerUnsigned;\n if (!this.allowDecimals && !this.allowSign) {\n regex = this._integerUnsigned;\n }\n if (!this.allowDecimals && this.allowSign) {\n regex = this._integerSigned;\n }\n if (this.allowDecimals && !this.allowSign) {\n regex = this._decimalUnsigned;\n }\n if (this.allowDecimals && this.allowSign) {\n regex = this._decimalSigned;\n }\n\n let firstCharacter = value.charAt(0);\n if (firstCharacter === this.decimalSeparator) {\n value = 0 + value;\n }\n\n const lastCharacter = value.charAt(value.length - 1);\n if (lastCharacter === this.decimalSeparator) {\n value = value + 0;\n }\n\n let signedValue = false;\n if (firstCharacter === this._minusSign) {\n signedValue = true;\n value = value.substring(1);\n firstCharacter = value.charAt(0);\n }\n let secondChar = value.charAt(1);\n while (firstCharacter === '0' && secondChar !== '' && secondChar !== this.decimalSeparator) {\n value = value.substring(1);\n firstCharacter = value.charAt(0);\n secondChar = value.charAt(1);\n }\n if (signedValue === true) {\n value = this._minusSign + value;\n }\n\n const valueParts = value.split(this.decimalSeparator);\n const naturalPart = valueParts?.[0];\n let decimalPart = valueParts?.[1];\n\n if (decimalPart != null && /^0+$/.test(decimalPart)) {\n decimalPart = '0';\n value = naturalPart + '.' + decimalPart;\n }\n if (value === '-0') {\n value = '0';\n }\n if (value === '-0.0') {\n value = '0.0';\n }\n if (value === null || value === undefined || value === '') {\n return;\n }\n const valid: boolean = new RegExp(regex).test(value.toString());\n\n if (valid) {\n this._control.control.patchValue(parseFloat(value), {\n emitEvent: false,\n });\n } else {\n console.error('INVALID VALUE');\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { NumberPipe } from '../../../pipe/number-pipe/number.pipe';\nimport { NgClass } from '@angular/common';\nimport { OnlyNumberDirective } from '../../../directive/only-number/only-number.directive';\nimport { IconComponent } from '../../icon/icon/icon.component';\n\n@Component({\n selector: 'teta-text-field',\n templateUrl: './text-field.component.html',\n styleUrls: ['./text-field.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextFieldComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [IconComponent, FormsModule, OnlyNumberDirective, NgClass, NumberPipe]\n})\nexport class TextFieldComponent implements ControlValueAccessor {\n @Input() placeholder = '';\n @Input() leftIconName?: string;\n @HostBinding('class.text-field_disabled')\n @Input()\n disabled = false;\n @Input() onlyNumber = false;\n @Input() decimalPart: number;\n @HostBinding('class.text-field_invalid')\n @Input()\n invalid: boolean;\n @ViewChild('input', { static: false }) input: ElementRef;\n inputFocused: boolean;\n @HostBinding('class.text-field')\n private readonly textField = true;\n value = '';\n\n constructor(private _cdr: ChangeDetectorRef) {}\n\n @HostListener('click') onFocus() {\n if (this.disabled) {\n return;\n }\n this.input.nativeElement.focus();\n }\n\n keyPress(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.keyCode === 13) {\n this.emitBlur();\n }\n }\n\n emitBlur() {\n this.onTouched();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._cdr.markForCheck();\n }\n\n writeValue(input: string): void {\n this.value = input;\n this._cdr.detectChanges();\n }\n\n onChange(input: string): void {}\n\n onTouched(): void {}\n}\n","@if (leftIconName) {\n <teta-icon [name]=\"leftIconName\" [palette]=\"'text'\"></teta-icon>\n}\n<input\n #input\n [ngModel]=\"value | tetaNumber: (!onlyNumber ? null : inputFocused ? 1000 : decimalPart)\"\n [tetaOnlyNumber]=\"onlyNumber\"\n (ngModelChange)=\"value = $event; onChange($event)\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [ngClass]=\"{ 'color-text-40': disabled }\"\n (focus)=\"inputFocused = true\"\n (blur)=\"inputFocused = false; emitBlur()\"\n (keydown)=\"keyPress($event)\"\n type=\"text\"\n/>\n@if (value && !disabled) {\n <teta-icon\n class=\"close-icon\"\n [name]=\"'closeCircle'\"\n [palette]=\"'text'\"\n (click)=\"value = ''; onChange('')\"\n ></teta-icon>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { ListFilter } from '../contarct/list-filter';\nimport { ListFilterType } from '../enum/list-filter-type.enum';\nimport { FilterComponentBase } from '../base/filter-component-base';\nimport { FilterBase } from '../base/filter-base';\nimport { FilterState } from '../contarct/filter-state';\nimport { FilterItem } from '../contarct/filter-item';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { Observable } from 'rxjs';\nimport { TetaLocalisation } from '../../../locale/teta-localisation';\nimport { TetaConfigService } from '../../../locale/teta-config.service';\nimport { AsyncPipe } from '@angular/common';\nimport { CheckboxComponent } from '../../checkbox/checkbox/checkbox.component';\nimport { ScrollableComponent } from '../../../directive/scrollable/scrollable/scrollable.component';\nimport { FormsModule } from '@angular/forms';\nimport { TextFieldComponent } from '../../input/text-field/text-field.component';\n\n@Component({\n selector: 'teta-list-filter',\n templateUrl: './list-filter.component.html',\n styleUrls: ['./list-filter.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TextFieldComponent, FormsModule, ScrollableComponent, CheckboxComponent, AsyncPipe]\n})\nexport class ListFilterComponent<T> extends FilterComponentBase<T> implements OnInit {\n @Input() column: FilterItem;\n @Input() data: T[];\n @Input() filterOptions: IIdName<any>[] = [];\n @Output() filterChanged: EventEmitter<FilterBase<any[]>> = new EventEmitter<FilterBase<any[]>>();\n\n filter: ListFilter;\n state$: FilterState;\n search = '';\n locale: Observable<TetaLocalisation>;\n\n get visibleOptions() {\n return this.filterOptions?.filter((option: IIdName<any>) => {\n return option.name?.toLowerCase().toString().indexOf(this.search?.toLowerCase()) >= 0;\n });\n }\n\n @Input()\n set state(val: FilterState) {\n this.state$ = val;\n this.filter = this.getFilter();\n this.changeDetector.detectChanges();\n }\n\n get state() {\n return this.state$;\n }\n\n excluded: boolean;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private _config: TetaConfigService,\n ) {\n super();\n this.locale = this._config.locale;\n }\n\n ngOnInit() {}\n\n all() {\n if (!this.filter?.value || this.filter?.value?.length === 0) {\n return false;\n }\n const notSet = this.visibleOptions?.find((_) => this.filter?.value?.indexOf(_.id) < 0);\n if (!notSet) {\n return true;\n }\n return null;\n }\n\n setAll(value: boolean) {\n if (value) {\n this.setFilter(this.visibleOptions?.map((_) => _.id));\n } else {\n this.setFilter([]);\n }\n }\n\n setType() {\n this.excluded = !this.excluded;\n this.filter.type = this.excluded ? ListFilterType.Excluded : ListFilterType.None;\n }\n\n setFilter(value: any[]) {\n this.filter.value = value;\n this.filterChanged.emit(this.filter);\n }\n\n private getFilter(): ListFilter {\n let filter = this.state.listFilters?.find((f) => f.field === this.column.filterField);\n if (!filter) {\n filter = this.state.addListFilter(\n new ListFilter({\n field: this.column.filterField,\n value: [],\n type: this.column.listFilterType,\n name: this.column.name,\n }),\n );\n }\n this.excluded = filter.type === ListFilterType.Excluded;\n return filter;\n }\n}\n","<div class=\"padding-2\">\n <teta-text-field [(ngModel)]=\"search\"></teta-text-field>\n</div>\n<teta-scrollable class=\"column column_auto\" [contentClass]=\"['list', 'padding-v-2']\">\n <div class=\"list-item\">\n <teta-checkbox [binary]=\"true\" [allowNull]=\"true\" [ngModel]=\"all()\" (ngModelChange)=\"setAll($event)\">\n {{ (locale | async)?.all }}\n </teta-checkbox>\n </div>\n <div class=\"list-divider\"></div>\n @for (option of visibleOptions; track option) {\n <div class=\"list-item\">\n <teta-checkbox [ngModel]=\"filter.value\" (ngModelChange)=\"setFilter($event)\" [value]=\"option.id\" [binary]=\"false\">\n {{ option.name }}\n </teta-checkbox>\n </div>\n }\n</teta-scrollable>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { NumericFilter } from '../contarct/numeric-filter';\nimport { FilterComponentBase } from '../base/filter-component-base';\nimport { FilterBase } from '../base/filter-base';\nimport { FilterState } from '../contarct/filter-state';\nimport { FilterItem } from '../contarct/filter-item';\nimport { NumericFilterValue } from '../contarct/numeric-filter-value';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { TetaConfigService } from '../../../locale/teta-config.service';\nimport { Observable } from 'rxjs';\nimport { TetaLocalisation } from '../../../locale/teta-localisation';\nimport { AsyncPipe } from '@angular/common';\nimport { OnlyNumberDirective } from '../../../directive/only-number/only-number.directive';\nimport { FormsModule } from '@angular/forms';\nimport { InputComponent } from '../../input/input/input.component';\n\n@Component({\n selector: 'teta-numeric-filter',\n templateUrl: './numeric-filter.component.html',\n styleUrls: ['./numeric-filter.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [InputComponent, FormsModule, OnlyNumberDirective, AsyncPipe]\n})\nexport class NumericFilterComponent<T> extends FilterComponentBase<T> implements OnInit {\n @Input() column: FilterItem;\n @Input() data: T[];\n @Input() filterOptions: IIdName<any>[] = [];\n @Output() filterChanged: EventEmitter<FilterBase<NumericFilterValue>> = new EventEmitter<\n FilterBase<NumericFilterValue>\n >();\n\n filter: NumericFilter;\n\n private state$: FilterState;\n\n @Input()\n set state(val: FilterState) {\n this.state$ = val;\n this.filter = this.getFilter();\n this.changeDetector.detectChanges();\n }\n\n get state() {\n return this.state$;\n }\n locale: Observable<TetaLocalisation>;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private _config: TetaConfigService,\n ) {\n super();\n this.locale = this._config.locale;\n }\n\n ngOnInit() {\n this.filter = this.getFilter();\n }\n\n private getFilter(): NumericFilter {\n let filter = this.state.numericFilters?.find((f) => f.field === this.column.filterField);\n if (filter === null || filter === undefined) {\n filter = this.state.addNumericFilter(\n new NumericFilter({\n value: new NumericFilterValue(),\n field: this.column.filterField,\n name: this.column.name,\n strict: true,\n }),\n );\n }\n return filter;\n }\n}\n","@if (locale | async; as loc) {\n <div class=\"form-row padding-3\">\n <teta-input [label]=\"loc.from\">\n <input\n class=\"input\"\n type=\"text\"\n style=\"width: 110px\"\n [tetaOnlyNumber]=\"true\"\n [ngModel]=\"filter.value?.greaterThan\"\n (ngModelChange)=\"filter.value.greaterThan = $event\"\n />\n </teta-input>\n <teta-input [label]=\"loc.to\">\n <input\n class=\"input\"\n type=\"text\"\n style=\"width: 110px\"\n [tetaOnlyNumber]=\"true\"\n [ngModel]=\"filter.value?.lessThan\"\n (ngModelChange)=\"filter.value.lessThan = $event\"\n />\n </teta-input>\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { StringFilter } from '../contarct/string-filter';\nimport { FilterState } from '../contarct/filter-state';\nimport { FilterBase } from '../base/filter-base';\nimport { FilterComponentBase } from '../base/filter-component-base';\nimport { FilterItem } from '../contarct/filter-item';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { TetaConfigService } from '../../../locale/teta-config.service';\nimport { Observable } from 'rxjs';\nimport { TetaLocalisation } from '../../../locale/teta-localisation';\nimport { AsyncPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { InputComponent } from '../../input/input/input.component';\n\n@Component({\n selector: 'teta-string-filter',\n templateUrl: './string-filter.component.html',\n styleUrls: ['./string-filter.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [InputComponent, FormsModule, AsyncPipe]\n})\nexport class StringFilterComponent<T> extends FilterComponentBase<T> implements OnInit {\n @Input() column: FilterItem;\n @Input() data: T[];\n @Input() filterOptions: IIdName<any>[] = [];\n @Output() filterChanged: EventEmitter<FilterBase<string>> = new EventEmitter<FilterBase<string>>();\n\n filter: StringFilter;\n state$: FilterState;\n\n @Input()\n set state(val: FilterState) {\n this.state$ = val;\n this.filter = this.getFilter();\n this.changeDetector.detectChanges();\n }\n\n get state() {\n return this.state$;\n }\n locale: Observable<TetaLocalisation>;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private _config: TetaConfigService,\n ) {\n super();\n this.locale = this._config.locale;\n }\n\n ngOnInit() {}\n\n setFilter() {\n this.filterChanged.emit(this.filter);\n }\n\n private getFilter(): StringFilter {\n let filter = this.state.stringFilters.find((f) => f.field === this.column.filterField);\n if (!filter) {\n filter = this.state.addStringFilter(\n new StringFilter({\n value: '',\n field: this.column.filterField,\n type: this.column.stringFilterType,\n name: this.column.name,\n }),\n );\n }\n filter.type = this.column.stringFilterType;\n return filter;\n }\n}\n","<div class=\"padding-3\">\n <teta-input [label]=\"(locale | async)?.search\">\n <input type=\"text\" class=\"input\" [(ngModel)]=\"filter.value\" (blur)=\"setFilter()\" (keydown.enter)=\"setFilter()\" />\n </teta-input>\n</div>\n","import {\n Component,\n OnInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Input,\n forwardRef,\n HostBinding,\n HostListener,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { RadioButtonComponent } from '../radio-button/radio-button.component';\n\ntype ButtonOrNullOrUndefined = RadioButtonComponent | undefined | null;\n\n@Component({\n selector: 'teta-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class RadioComponent implements ControlValueAccessor {\n @HostBinding('tabindex') tabindex = 0;\n @HostBinding('class.radio') radioClass = true;\n\n /** Менять значение при изменении выбранного */\n @Input()\n @HostBinding('class.radio_inline')\n inline: boolean;\n\n @Input() checkChangeSelected = true;\n\n @Input() set disabled(val: boolean) {\n this.disabled$ = val;\n this.buttons$.forEach((b) => (b.disabled = this.disabled));\n }\n\n get disabled() {\n return this.disabled$;\n }\n\n @Input() get value(): any {\n if (this.checkedButton$) {\n return this.checkedButton$.value;\n }\n return null;\n }\n\n set value(val: any) {\n this.writeValue(val);\n }\n\n private buttons$: RadioButtonComponent[] = [];\n private checkedButton$: ButtonOrNullOrUndefined;\n private selectedButton$: ButtonOrNullOrUndefined;\n private disabled$ = false;\n\n constructor(private _cdr: ChangeDetectorRef) {}\n\n @HostListener('focus', ['$event'])\n focusHandler(event: FocusEvent) {\n this.selectFirst();\n }\n\n @HostListener('focusout', ['$event'])\n focusoutHandler(event: FocusEvent) {\n if (this.selectedButton$) {\n this.selectedButton$.selected = false;\n this.selectedButton$ = null;\n }\n }\n\n @HostListener('keydown', ['$event'])\n keyEvent(event: KeyboardEvent) {\n const key = event.code || event.key;\n switch (key) {\n case 'Space':\n case 'Enter':\n case 'Spacebar':\n this.checkSelected();\n break;\n\n case 'ArrowUp':\n case 'Up':\n case 'ArrowLeft':\n case 'Left':\n this.selectPrevious();\n break;\n\n case 'ArrowDown':\n case 'Down':\n case 'ArrowRight':\n case 'Right':\n this.selectNext();\n break;\n default:\n return false;\n }\n\n event.cancelBubble = true;\n if (event.stopPropagation) {\n event.stopPropagation();\n }\n return false;\n }\n\n selectFirst() {\n if (!this.selectedButton$) {\n if (this.checkedButton$) {\n this.selectedButton$ = this.checkedButton$;\n this.selectedButton$.selected = true;\n return true;\n }\n\n for (const btn of this.buttons$) {\n if (!btn.disabled) {\n this.selectedButton$ = btn;\n this.selectedButton$.selected = true;\n return true;\n }\n }\n }\n return false;\n }\n\n _setChecked(btn: RadioButtonComponent) {\n if (this.checkedButton$) {\n this.checkedButton$.checked = false;\n }\n this.checkedButton$ = btn;\n this.checkedButton$.checked = true;\n if (this.selectedButton$) {\n this.selectedButton$.selected = false;\n }\n this.selectedButton$ = btn;\n this.selectedButton$.selected = true;\n this._onChange(this.value);\n this._cdr.markForCheck();\n }\n\n _addButton(btn: RadioButtonComponent) {\n if (this.disabled) {\n btn.disabled = this.disabled;\n }\n return this.buttons$.push(btn) - 1;\n }\n\n _removeButton(btn: RadioButtonComponent) {\n const index = this.buttons$.indexOf(btn);\n if (index > -1) {\n this.buttons$.splice(index, 1);\n }\n }\n\n /** Writes a new value to the element. */\n writeValue(obj: any): void {\n if (this.checkedButton$) {\n this.checkedButton$.checked = false;\n }\n\n this.checkedButton$ = this.buttons$.find((b) => b.value === obj);\n if (this.checkedButton$) {\n this.checkedButton$.checked = true;\n }\n this._cdr.markForCheck();\n }\n\n /** model callback вызовется когда модель измениться из ui */\n _onChange: (value: any) => void = () => {};\n\n /** Registers a callback function that should be called when the control's value changes in the UI */\n registerOnChange(fn: (value: any) => void): void {\n this._onChange = fn;\n }\n\n _onTouched = () => {};\n\n /** Registers a callback function that should be called when the control receives a blur event. */\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n /** This function is called by the forms API when the control status changes to or from \"DISABLED\". */\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._cdr.markForCheck();\n }\n\n private selectBtn(btn: RadioButtonComponent) {\n if (this.selectedButton$) {\n this.selectedButton$.selected = false;\n }\n this.selectedButton$ = btn;\n this.selectedButton$.selected = true;\n if (this.checkChangeSelected) {\n this.checkSelected();\n }\n this._cdr.markForCheck();\n }\n\n private selectNext() {\n if (this.selectFirst()) {\n return;\n }\n\n const length = this.buttons$.length;\n let newIndex = this.selectedButton$ ? this.buttons$.indexOf(this.selectedButton$) : 0;\n let firstCycle = true;\n do {\n newIndex++;\n if (firstCycle && newIndex === length) {\n newIndex = 0;\n firstCycle = false;\n }\n const btn = this.buttons$[newIndex];\n if (btn && !btn.disabled) {\n this.selectBtn(btn);\n return;\n }\n } while (newIndex < length);\n }\n\n private selectPrevious() {\n if (this.selectFirst()) {\n return;\n }\n\n let newIndex = this.selectedButton$ ? this.buttons$.indexOf(this.selectedButton$) : 0;\n let firstCycle = true;\n do {\n newIndex--;\n if (firstCycle && newIndex === -1) {\n newIndex = this.buttons$.length - 1;\n firstCycle = false;\n }\n const btn = this.buttons$[newIndex];\n if (btn && !btn.disabled) {\n this.selectBtn(btn);\n return;\n }\n } while (newIndex >= 0);\n }\n\n private checkSelected() {\n if (this.selectFirst()) {\n return;\n }\n if (this.selectedButton$) {\n this._setChecked(this.selectedButton$);\n }\n }\n}\n","<ng-content></ng-content>\n","import {\n Component,\n OnInit,\n Host,\n OnDestroy,\n ViewContainerRef,\n Input,\n HostListener,\n HostBinding,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { RadioComponent } from '../radio/radio.component';\n\n@Component({\n selector: 'teta-radio-button',\n templateUrl: './radio-button.component.html',\n styleUrls: ['./radio-button.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n})\nexport class RadioButtonComponent implements OnInit, OnDestroy {\n @HostBinding('class.radio-button')\n radioButton = true;\n\n @HostBinding('class.radio-button-selected')\n selected: boolean;\n\n @Input()\n @HostBinding('class.radio-button-checked')\n checked: boolean;\n\n @Input()\n @HostBinding('class.radio-button_disabled')\n disabled: boolean;\n\n @Input() set value(val: any) {\n this._value = val;\n }\n\n get value() {\n if (this._value === undefined) {\n if (this.container.element.nativeElement instanceof HTMLElement) {\n return this.container.element.nativeElement.innerText;\n }\n }\n return this._value;\n }\n\n private _value: any;\n\n constructor(\n private container: ViewContainerRef,\n @Host() public radio: RadioComponent,\n ) {}\n\n @HostListener('click')\n hostClick() {\n if (!this.disabled) {\n this.radio._setChecked(this);\n }\n }\n\n ngOnInit() {\n this.radio._addButton(this);\n }\n\n ngOnDestroy(): void {\n this.radio._removeButton(this);\n }\n}\n","<div class=\"radio-button-icon\">\n @if (checked) {\n <div class=\"radio-button-small-icon\"></div>\n }\n</div>\n<ng-content></ng-content>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { FilterComponentBase } from '../base/filter-component-base';\nimport { FilterItem } from '../contarct/filter-item';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { FilterBase } from '../base/filter-base';\nimport { FilterState } from '../contarct/filter-state';\nimport { BooleanFilter } from '../contarct/boolean-filter';\nimport { TetaConfigService } from '../../../locale/teta-config.service';\nimport { Observable } from 'rxjs';\nimport { TetaLocalisation } from '../../../locale/teta-localisation';\nimport { AsyncPipe } from '@angular/common';\nimport { RadioButtonComponent } from '../../radio/radio-button/radio-button.component';\nimport { FormsModule } from '@angular/forms';\nimport { RadioComponent } from '../../radio/radio/radio.component';\n\n@Component({\n selector: 'teta-boolean-filter',\n templateUrl: './boolean-filter.component.html',\n styleUrls: ['./boolean-filter.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RadioComponent, FormsModule, RadioButtonComponent, AsyncPipe]\n})\nexport class BooleanFilterComponent<T> extends FilterComponentBase<T> implements OnInit {\n @Input() column: FilterItem;\n @Input() data: T[];\n @Input() filterOptions: IIdName<any>[] = [];\n @Output() filterChanged: EventEmitter<FilterBase<boolean>> = new EventEmitter<FilterBase<boolean>>();\n\n filter: BooleanFilter;\n state$: FilterState;\n\n @Input()\n set state(val: FilterState) {\n this.state$ = val;\n this.filter = this.getFilter();\n this.changeDetector.detectChanges();\n }\n\n get state() {\n return this.state$;\n }\n\n locale: Observable<TetaLocalisation>;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private _config: TetaConfigService,\n ) {\n super();\n this.locale = this._config.locale;\n }\n\n ngOnInit() {}\n\n setFilter() {\n this.filterChanged.emit(this.filter);\n }\n\n private getFilter(): BooleanFilter {\n let filter = this.state.booleanFilters.find((f) => f.field === this.column.filterField);\n if (!filter) {\n filter = this.state.addBooleanFilter(\n new BooleanFilter({\n value: null,\n field: this.column.filterField,\n name: this.column.name,\n }),\n );\n }\n return filter;\n }\n}\n","@if (locale | async; as loc) {\n <div class=\"padding-3\">\n <teta-radio [ngModel]=\"filter.value\" (ngModelChange)=\"setFilter()\">\n <teta-radio-button [value]=\"null\">{{ loc?.notSelected }}</teta-radio-button>\n <teta-radio-button [value]=\"true\">{{ loc?.yes }}</teta-radio-button>\n <teta-radio-button [value]=\"false\">{{ loc?.no }}</teta-radio-button>\n </teta-radio>\n </div>\n}\n","export enum FilterType {\n string,\n number,\n date,\n list,\n boolean,\n custom,\n}\n","import { FilterType } from '../enum/filter-type.enum';\nimport { Type } from '@angular/core';\nimport { NumericFilterComponent } from '../numeric-filter/numeric-filter.component';\nimport { DateFilterComponent } from '../date-filter/date-filter.component';\nimport { ListFilterComponent } from '../list-filter/list-filter.component';\nimport { StringFilterComponent } from '../string-filter/string-filter.component';\nimport { FilterItem } from './filter-item';\nimport { BooleanFilterComponent } from '../boolean-filter/boolean-filter.component';\n\nconst filterComponentsMap: Map<FilterType, Type<any>> = new Map<FilterType, Type<any>>()\n .set(FilterType.number, NumericFilterComponent)\n .set(FilterType.date, DateFilterComponent)\n .set(FilterType.list, ListFilterComponent)\n .set(FilterType.string, StringFilterComponent)\n .set(FilterType.boolean, BooleanFilterComponent)\n .set(FilterType.custom, StringFilterComponent);\n\nexport const getFilterComponent = (item: FilterItem): Type<any> =>\n filterComponentsMap.has(item.filterType) ? filterComponentsMap.get(item.filterType) : StringFilterComponent;\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewContainerRef,\n} from '@angular/core';\nimport { FilterState } from '../contarct/filter-state';\nimport { FilterItem } from '../contarct/filter-item';\nimport { FilterBase } from '../base/filter-base';\nimport { FilterComponentBase } from '../base/filter-component-base';\nimport { takeWhile } from 'rxjs/operators';\nimport { getFilterComponent } from '../contarct/filter-component-map';\nimport { IIdName } from '../../../common/contract/i-id-name';\n\n@Component({\n selector: 'teta-filter-host',\n template: '',\n styles: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class FilterHostComponent<T> implements OnInit, OnDestroy {\n @Input()\n set column(val: FilterItem) {\n this._column = val;\n if (this._init) {\n this._componentRef.instance.filterField = this._column;\n this._componentRef.injector.get(ChangeDetectorRef).detectChanges();\n }\n }\n\n @Input()\n set state(val: FilterState) {\n this._state = val;\n if (this._init) {\n this._componentRef.instance.state = this._state;\n this._componentRef.injector.get(ChangeDetectorRef).detectChanges();\n }\n }\n\n @Input()\n set data(data: T[]) {\n this._data = data;\n if (this._init) {\n this._componentRef.instance.data = this._data;\n this._componentRef.injector.get(ChangeDetectorRef).detectChanges();\n }\n }\n\n @Input()\n set filterOptions(val: IIdName<any>[]) {\n this._filterOptions = val;\n if (this._init) {\n this._componentRef.instance.filterOptions = this._filterOptions;\n this._componentRef.injector.get(ChangeDetectorRef).detectChanges();\n }\n }\n\n @Output() filterChanged: EventEmitter<FilterBase<any>> = new EventEmitter();\n\n private _alive = true;\n private _column: FilterItem;\n private _state: FilterState;\n private _data: T[];\n private _filterOptions: IIdName<any>[];\n private _componentRef: ComponentRef<any>;\n private _init: boolean;\n\n constructor(private viewContainerRef: ViewContainerRef) {}\n\n ngOnInit() {\n if (!FilterComponentBase.isPrototypeOf(this._column.filterComponent)) {\n this._column.filterComponent = getFilterComponent(this._column);\n }\n this._componentRef = this.viewContainerRef.createComponent<FilterComponentBase<T>>(this._column.filterComponent);\n this._componentRef.instance.column = this._column;\n this._componentRef.instance.state = this._state;\n this._componentRef.instance.data = this._data;\n this._componentRef.instance.filterOptions = this._filterOptions;\n this._componentRef.injector.get(ChangeDetectorRef).detectChanges();\n this._init = true;\n this._componentRef.instance.filterChanged\n .pipe(takeWhile((_) => this._alive))\n .subscribe((filter: FilterBase<any>) => {\n this.filterChanged.emit(filter);\n });\n }\n\n ngOnDestroy() {\n this._alive = false;\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'teta-icon-file',\n templateUrl: './icon-file.component.html',\n styleUrls: ['./icon-file.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class IconFileComponent implements OnInit {\n @Input() name: string;\n @Input() class;\n\n @HostBinding('class')\n private get getClass(): string {\n const result = [this.class, 'icon icon-file'];\n return result.join(' ');\n }\n\n constructor() {}\n\n ngOnInit(): void {}\n\n getName(): string {\n return `#${this.name}`;\n }\n}\n","<svg class=\"icon__image\">\n <use [attr.xlink:href]=\"getName()\"></use>\n</svg>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n HostListener,\n inject,\n Input,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'teta-color-input',\n templateUrl: './color-input.component.html',\n styleUrls: ['./color-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorInputComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule],\n})\nexport class ColorInputComponent implements ControlValueAccessor {\n private elementRef = inject(ElementRef);\n @Input() disabled = false;\n @ViewChild('input', { static: false }) input: ElementRef;\n value = '';\n\n constructor(private _cdr: ChangeDetectorRef) {}\n\n @HostListener('click') onFocus() {\n if (this.disabled) {\n return;\n }\n this.input.nativeElement.focus();\n }\n\n emitBlur() {\n this.onTouched();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._cdr.markForCheck();\n }\n\n writeValue(input: string): void {\n this.value = input;\n this._cdr.detectChanges();\n }\n\n onChange(input: string): void {}\n\n onTouched(): void {}\n\n getHexColor(color: string) {\n if (color && color.startsWith('var')) {\n const value = color.substring(color.indexOf('(') + 1, color.lastIndexOf(')'));\n const varColor = getComputedStyle(this.elementRef.nativeElement).getPropertyValue(value).trim();\n if (varColor) {\n color = varColor;\n }\n }\n if (color && color.startsWith('rgb')) {\n const value = color.substring(color.indexOf('(') + 1, color.lastIndexOf(')'));\n const colorArray = value.split(',');\n color = `#${('00' + parseInt(colorArray[0], 10).toString(16)).slice(-2)}${(\n '00' + parseInt(colorArray[1], 10).toString(16)\n ).slice(-2)}${('00' + parseInt(colorArray[2], 10).toString(16)).slice(-2)}`;\n }\n return color;\n }\n}\n","<input\n type=\"color\"\n #input\n [disabled]=\"disabled\"\n (blur)=\"emitBlur()\"\n [ngModel]=\"getHexColor(value)\"\n (ngModelChange)=\"value = $event; onChange($event)\"\n [ngModelOptions]=\"{ updateOn: 'blur' }\"\n/>\n","import { ChangeDetectionStrategy, Component, HostBinding, OnInit } from '@angular/core';\n\n@Component({\n selector: 'teta-form-group-title',\n templateUrl: './form-group-title.component.html',\n styleUrls: ['./form-group-title.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class FormGroupTitleComponent implements OnInit {\n @HostBinding('class.form-group-title') private readonly className = true;\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<div class=\"font-overline form-group-title-text\">\n <ng-content></ng-content>\n</div>\n<div class=\"form-group-title-line\"></div>\n","import { Injectable } from '@angular/core';\nimport { Observable, ReplaySubject, Subject } from 'rxjs';\nimport { Message } from './model/message';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MessageService {\n message: Observable<Message>;\n clear: Observable<string>;\n\n private _message = new ReplaySubject<Message>(1);\n private _clear = new Subject<string>();\n\n constructor() {\n this.message = this._message.asObservable();\n this.clear = this._clear.asObservable();\n }\n\n add(message: Message) {\n if (message) {\n this._message.next(message);\n }\n }\n\n addMultiple(messages: Message[]) {\n if (messages && messages.length) {\n messages.forEach((n) => {\n this._message.next(n);\n });\n }\n }\n\n clearMessages(name: string) {\n this._clear.next(name);\n }\n}\n","import { TemplateRef } from '@angular/core';\nimport { viewType } from '../../../common/model/view-type.model';\n\nexport class Message {\n name: string | null | undefined;\n title: string | null | undefined;\n text: string | null | undefined;\n infinite: boolean;\n viewType?: viewType = 'rounded';\n duration = 10000;\n className: string[] | null | undefined;\n palette = 'primary';\n template: TemplateRef<any>;\n\n constructor(options?: {\n name?: string;\n title: string;\n text?: string;\n infinite?: boolean;\n duration?: number;\n viewType?: viewType;\n palette?: string;\n className?: string[];\n template?: TemplateRef<any>;\n }) {\n if (options) {\n this.name = options.name;\n this.title = options.title;\n this.viewType = options.viewType || 'rounded';\n this.text = options.text;\n this.infinite = options.infinite || false;\n this.className = options.className;\n if (options.palette) {\n this.palette = options.palette;\n }\n this.template = options.template;\n if (options.duration && options.duration > 0) {\n this.duration = options.duration;\n }\n }\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport { Message } from '../model/message';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { ButtonComponent } from '../../button/button/button.component';\n\n@Component({\n selector: 'teta-message',\n templateUrl: './message.component.html',\n styleUrls: ['./message.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ButtonComponent, IconComponent, NgTemplateOutlet]\n})\nexport class MessageComponent implements AfterViewInit, OnDestroy {\n @Input() message: Message;\n @Input() index: number;\n @Output() closed: EventEmitter<any> = new EventEmitter();\n @Input() class;\n\n @HostBinding('class')\n private get getClass() {\n const result = ['message'];\n if (this.message.className?.length > 0) {\n result.push(...this.message.className);\n }\n if (this.message.palette) {\n result.push(`message-${this.message.palette}`);\n }\n result.push('message_' + this.message.viewType);\n return result.join(' ');\n }\n\n timeout: any;\n\n constructor() {}\n\n @HostListener('mouseleave')\n init() {\n if (!this.message.infinite) {\n this.timeout = setTimeout(() => {\n this.closed.emit({\n index: this.index,\n message: this.message,\n });\n }, this.message.duration);\n }\n }\n\n @HostListener('mouseenter')\n reset() {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n }\n\n closeMe(event: MouseEvent) {\n this.reset();\n\n this.closed.emit({\n index: this.index,\n message: this.message,\n });\n\n event.preventDefault();\n }\n\n ngAfterViewInit() {\n this.init();\n }\n\n ngOnDestroy() {\n this.reset();\n }\n}\n","<div class=\"row align-center justify-content-between\">\n <div class=\"font-title-2 padding-left-4\">\n {{ message.title }}\n </div>\n <button teta-button type=\"button\" [square]=\"true\" [view]=\"'ghost'\" (click)=\"closeMe($event)\">\n <teta-icon class=\"fill-text-90\" [name]=\"'closeBig'\"></teta-icon>\n </button>\n</div>\n@if (!message.template && message.text) {\n <div class=\"font-body-3 padding-v-2 padding-left-4\">\n {{ message.text }}\n </div>\n}\n@if (message.template) {\n <ng-container *ngTemplateOutlet=\"message.template; context: { $implicit: message }\"></ng-container>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { MessageService } from '../message.service';\nimport { Message } from '../model/message';\nimport { Align } from '../../../common/enum/align.enum';\nimport { VerticalAlign } from '../../../common/enum/vertical-align.enum';\nimport { takeWhile } from 'rxjs/operators';\nimport { MessageComponent } from '../message/message.component';\n\n@Component({\n selector: 'teta-message-host',\n templateUrl: './message-host.component.html',\n styleUrls: ['./message-host.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MessageComponent]\n})\nexport class MessageHostComponent implements OnInit, OnDestroy {\n @Input() class;\n @Input() align: Align = Align.right;\n @Input() verticalAlign: VerticalAlign = VerticalAlign.bottom;\n @Output() itemClose: EventEmitter<any> = new EventEmitter();\n\n messages: Message[] = [];\n private readonly _alignMap: Map<Align, string> = new Map<Align, string>()\n .set(Align.right, 'message-host_right')\n .set(Align.left, 'message-host_left')\n .set(Align.center, 'message-host_center');\n private readonly _valignMap: Map<VerticalAlign, string> = new Map<VerticalAlign, string>()\n .set(VerticalAlign.top, 'message-host_top')\n .set(VerticalAlign.center, 'message-host_vertical-center')\n .set(VerticalAlign.bottom, 'message-host_bottom');\n\n @HostBinding('class')\n private get getClass(): string {\n const result = [this.class, 'message-host'];\n if (this._alignMap.has(this.align)) {\n result.push(this._alignMap.get(this.align));\n }\n if (this._valignMap.has(this.verticalAlign)) {\n result.push(this._valignMap.get(this.verticalAlign));\n }\n return result.join(' ');\n }\n\n private _alive = true;\n\n constructor(\n private _svc: MessageService,\n private _cdr: ChangeDetectorRef,\n ) {}\n\n ngOnInit() {\n this._svc.message.pipe(takeWhile((_) => this._alive)).subscribe((messages) => {\n if (messages) {\n if (!this.messages) {\n this.messages = [];\n }\n this.messages.push(messages);\n }\n this._cdr.markForCheck();\n });\n\n this._svc.clear.pipe(takeWhile((_) => this._alive)).subscribe((x: string) => {\n if (!x) {\n this.messages = [];\n } else {\n this.messages = this.messages?.filter((_) => _.name !== x);\n }\n this._cdr.markForCheck();\n });\n }\n\n closedItem(event: any) {\n this.messages.splice(event.index, 1);\n this.itemClose.emit({\n message: event.message,\n });\n }\n\n ngOnDestroy() {\n this._alive = false;\n }\n}\n","@for (message of messages; track message; let i = $index) {\n <teta-message (closed)=\"closedItem($event)\" [message]=\"message\" [index]=\"i\"> </teta-message>\n}\n","export enum ModalCloseReason {\n resolve,\n exit,\n backdrop,\n esc,\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n Output,\n} from '@angular/core';\nimport { IModalConfig } from '../model/i-modal-config';\nimport { IModalResult } from '../model/i-modal-result';\nimport { ModalCloseReason } from '../model/modal-close-reason.enum';\nimport { animate, style, transition, trigger } from '@angular/animations';\n\n@Component({\n selector: 'teta-modal-container',\n templateUrl: './modal-container.component.html',\n styleUrls: ['./modal-container.component.scss'],\n animations: [\n trigger('dialog', [\n transition('void => *', [style({ top: '-100%' }), animate('150ms ease-in', style({ top: '0' }))]),\n transition('* => void', [animate('150ms ease-in', style({ top: '-100%' }))]),\n ]),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class ModalContainerComponent {\n @Input() config: IModalConfig;\n @Output() closeEvent = new EventEmitter<IModalResult>();\n\n @HostBinding('attr.tabindex') tabindex = -1;\n @HostBinding('@dialog') dialog = true;\n\n @HostBinding('class')\n get classList(): string {\n const classList = ['modal__window'];\n if (this.config) {\n if (this.config && this.config.class) {\n classList.push(...this.config.class);\n }\n if (this.config.backdrop) {\n classList.push('modal__backdrop');\n }\n }\n return classList.join(' ');\n }\n\n constructor(private elRef$: ElementRef) {}\n\n @HostListener('keyup', ['$event']) keyup(event: KeyboardEvent): void {\n if (this.config && this.config.esc && !event.defaultPrevented) {\n const key = event.key || event.keyCode;\n\n if (key === 'Escape' || key === 'Esc' || key === 27) {\n this.closeEvent.emit({\n reason: ModalCloseReason.esc,\n });\n }\n }\n }\n\n @HostListener('click', ['$event']) click(event: MouseEvent): void {\n if (this.config.closeOnBackdropClick === true && this.elRef$.nativeElement === event.target) {\n this.closeEvent.emit({\n reason: ModalCloseReason.backdrop,\n });\n }\n }\n}\n","<div class=\"modal__container\" [class.modal__container_resize]=\"config?.resizable\">\n <ng-content></ng-content>\n</div>\n","import { IModalResult } from './i-modal-result';\n\nexport class CurrentModal {\n close: (result?: IModalResult) => void;\n}\n","import { Component, Input } from '@angular/core';\nimport { CurrentModal } from '../model/current-modal';\nimport { ModalCloseReason } from '../model/modal-close-reason.enum';\nimport { TranslocoModule } from '@jsverse/transloco';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { ButtonComponent } from '../../button/button/button.component';\nimport { ToolbarComponent } from '../../toolbar/toolbar/toolbar.component';\nimport { DialogButtonType } from '../model/dialog-data';\n\n@Component({\n selector: 'teta-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss'],\n imports: [ToolbarComponent, ButtonComponent, IconComponent, TranslocoModule],\n})\nexport class DialogComponent {\n @Input({ required: true }) title: string;\n\n private _text: string;\n get text(): string {\n return this._text;\n }\n @Input() set text(value: string) {\n this._text = value || '';\n }\n\n private _confirm: DialogButtonType;\n get confirm(): DialogButtonType {\n return this._confirm;\n }\n @Input() set confirm(value: DialogButtonType) {\n this._confirm = value || { text: 'common.ok', palette: 'primary' };\n }\n\n private _decline: null | DialogButtonType;\n get decline(): null | DialogButtonType {\n return this._decline;\n }\n @Input() set decline(value: null | DialogButtonType) {\n this._decline = value !== undefined ? value : { text: 'common.cancel', palette: 'text' };\n }\n\n constructor(public modal: CurrentModal) {}\n\n cancel() {\n this.modal.close({\n reason: ModalCloseReason.exit,\n });\n }\n\n ok() {\n this.modal.close({\n reason: ModalCloseReason.resolve,\n });\n }\n}\n","<h3 class=\"padding-2 font-title-2\">\n {{ title | transloco }}\n</h3>\n\n@if (text) {\n <p class=\"padding-2 font-body-3\">\n {{ text | transloco }}\n </p>\n}\n\n<teta-toolbar class=\"justify-content-end\">\n @if (decline) {\n <button teta-button (click)=\"cancel()\" [palette]=\"decline?.palette || 'text'\" [view]=\"'ghost'\">\n @if (decline?.icon) {\n <teta-icon [name]=\"decline.icon\"></teta-icon>\n }\n @if (decline.text) {\n {{ decline.text | transloco }}\n }\n </button>\n }\n\n <button teta-button (click)=\"ok()\" [palette]=\"confirm?.palette || 'primary'\">\n @if (confirm?.icon) {\n <teta-icon [name]=\"confirm.icon\"></teta-icon>\n }\n @if (confirm.text) {\n {{ confirm.text | transloco }}\n }\n </button>\n</teta-toolbar>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ModalContainerComponent } from './modal-container/modal-container.component';\nimport { DialogComponent } from './dialog/dialog.component';\n\nimport { TRANSLOCO_SCOPE, TranslocoModule } from '@jsverse/transloco';\n\n@NgModule({\n exports: [ModalContainerComponent, DialogComponent],\n imports: [CommonModule, TranslocoModule, ModalContainerComponent, DialogComponent],\n providers: [\n {\n provide: TRANSLOCO_SCOPE,\n useValue: { scope: 'common', alias: 'common' },\n multi: true,\n },\n ],\n})\nexport class ModalModule {}\n","import { Observable, Subject } from 'rxjs';\nimport { IModalResult } from './i-modal-result';\nimport { ComponentRef } from '@angular/core';\nimport { TetaContentRef } from '../../../common/contract/teta-content-ref';\nimport { ModalContainerComponent } from '../modal-container/modal-container.component';\n\nexport class ModalInstance<T = any> {\n onClose: Observable<IModalResult<T>>;\n private _onClose: Subject<IModalResult<T>> = new Subject<IModalResult<T>>();\n\n constructor(\n private _window: ComponentRef<ModalContainerComponent>,\n private _content: TetaContentRef,\n ) {\n this.onClose = this._onClose.asObservable();\n if (this._window && this._window.instance) {\n this._window.instance.closeEvent.subscribe((event: IModalResult) => {\n this.close(event);\n });\n }\n }\n\n get window(): ComponentRef<ModalContainerComponent> {\n return this._window;\n }\n\n get component(): ComponentRef<any> | null {\n return this._content.componentRef ? this._content.componentRef : null;\n }\n\n close = (event?: IModalResult) => {\n this._onClose.next(event);\n this._onClose.complete();\n this.destroy();\n };\n\n private destroy(): void {\n this._window.destroy();\n\n if (this._content && this._content.viewRef) {\n setTimeout(() => {\n this._content.viewRef.destroy();\n }, 150);\n }\n }\n}\n","import { Inject, Injectable, Injector, TemplateRef, Type } from '@angular/core';\nimport { ModalInstance } from './model/modal-instance';\nimport { Subject } from 'rxjs';\nimport { DynamicComponentService } from '../../common/service/dynamic-component.service';\nimport { ModalCloseReason } from './model/modal-close-reason.enum';\nimport { IModalConfig } from './model/i-modal-config';\nimport { CurrentModal } from './model/current-modal';\nimport { DynamicData } from '../../common/contract/dynamic-data';\nimport { ModalContainerComponent } from './modal-container/modal-container.component';\nimport { IModalResult } from './model/i-modal-result';\nimport { DOCUMENT } from '@angular/common';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModalService {\n private _stack: ModalInstance[] = [];\n private _modalChanged = new Subject<void>();\n private readonly _container: any;\n\n constructor(\n @Inject(DOCUMENT)\n private _document: any,\n private _injector: Injector,\n private _factory: DynamicComponentService,\n ) {\n this._container = this._document.body;\n\n this._modalChanged.subscribe(() => {\n if (this._stack && this._stack.length > 0) {\n this.focus(this._stack[this._stack.length - 1]);\n }\n });\n }\n\n closeAll(): void {\n if (this._stack && this._stack.length > 0) {\n this._stack.forEach((instance: ModalInstance) => {\n instance.close({\n reason: ModalCloseReason.exit,\n });\n });\n }\n }\n\n create<T = any>(\n content: string | TemplateRef<any> | Type<any>,\n data?: any,\n config?: IModalConfig,\n injector?: Injector,\n ): ModalInstance<T> {\n if (content === null || content === undefined) {\n throw new Error('Specify template or component to render');\n }\n if (config === null || config === undefined) {\n config = Object.assign(\n {\n backdrop: true,\n class: [],\n esc: true,\n },\n config,\n );\n }\n if (injector === null || injector === undefined) {\n injector = this._injector;\n }\n const currentModal = new CurrentModal();\n const modalData = new DynamicData(data);\n\n injector = this.getInjector(currentModal, modalData, injector);\n const contentInstance = this._factory.createContent(\n content,\n injector,\n this.getContext(content, modalData, currentModal),\n );\n const window = this._factory.createComponent(ModalContainerComponent, contentInstance, injector, this._container);\n window.instance.config = config;\n\n const instance = new ModalInstance(window, contentInstance);\n currentModal.close = instance.close;\n this.register(instance);\n return instance;\n }\n\n private getContext(content: string | TemplateRef<any> | Type<any>, context: any, currentModal: CurrentModal): any {\n if (content instanceof TemplateRef) {\n return {\n $implicit: {\n modal: currentModal,\n data: context,\n },\n modal: currentModal,\n data: context,\n close: (result: IModalResult): void => {\n currentModal.close(result);\n },\n };\n }\n return context;\n }\n\n private getInjector(currentModal: CurrentModal, data: DynamicData, parent: Injector): Injector {\n return Injector.create({\n providers: [\n {\n provide: CurrentModal,\n useValue: currentModal,\n },\n {\n provide: DynamicData,\n useValue: data,\n },\n ],\n parent,\n });\n }\n\n private register(instance: ModalInstance): void {\n this._stack.push(instance);\n this._modalChanged.next();\n instance.onClose.subscribe(() => this.unregister(instance));\n }\n\n private unregister = (instance: ModalInstance) => {\n const index = this._stack.indexOf(instance);\n if (index > -1) {\n this._stack.splice(index, 1);\n this._modalChanged.next();\n }\n };\n\n private focus(instance: ModalInstance): void {\n if (instance && instance.window && instance.window.location.nativeElement) {\n setTimeout(() => {\n instance.window.location.nativeElement.focus();\n }, 0);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ModalService } from './modal.service';\nimport { Observable } from 'rxjs';\nimport { IModalResult } from './model/i-modal-result';\nimport { DialogComponent } from './dialog/dialog.component';\nimport { map } from 'rxjs/operators';\nimport { ModalCloseReason } from './model/modal-close-reason.enum';\nimport { DialogDataType } from './model/dialog-data';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DialogService {\n constructor(private _modal: ModalService) {}\n\n alert(title: string): void {\n this.createDialog({ title, decline: null });\n }\n\n confirm(confirmDialogData: DialogDataType): Observable<boolean> {\n return this.createDialog(confirmDialogData).pipe(\n map((result: IModalResult) => result.reason === ModalCloseReason.resolve),\n );\n }\n\n private createDialog(dialogData: DialogDataType): Observable<IModalResult> {\n const { title, text, confirm, decline } = dialogData;\n\n const dialog = this._modal.create(\n DialogComponent,\n {\n title,\n text,\n confirm,\n decline,\n },\n {\n esc: true,\n backdrop: true,\n },\n );\n return dialog.onClose;\n }\n}\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'teta-pager',\n templateUrl: './pager.component.html',\n styleUrls: ['./pager.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class PagerComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<p>pager works!</p>\n","export class PagerState {\n /**\n * Текущая страница\n */\n page = 0;\n\n /**\n * Количество записей на странице\n */\n pageSize = 30;\n /**\n * Количество страниц\n */\n count: number;\n /**\n * Количество записей\n */\n totalCount: number;\n /**\n * первая видимая страница\n */\n start: number;\n /**\n * Последняя видимая страница\n */\n end: number;\n /**\n * Список страниц\n */\n pages: number[];\n\n /**\n * Инициализация из анонимного объекта\n */\n constructor(options?: { page?: number; pageSize?: number; count?: number; totalCount?: number }) {\n if (options) {\n this.pageSize = options.pageSize || 30;\n this.count = options.count !== null && options.count !== undefined ? options.count : this.count;\n this.totalCount =\n options.totalCount !== null && options.totalCount !== undefined ? options.totalCount : this.totalCount;\n this.page = options.page !== null && options.page !== undefined ? options.page : 0;\n this.createPages();\n }\n }\n\n createPages() {\n if (this.page > this.count) {\n this.page = this.count > 0 ? this.count - 1 : 0;\n }\n\n let start = 0;\n let end = this.count - 1;\n if (this.count > 5) {\n start = this.page - 2;\n end = this.page + 2;\n if (start < 0) {\n start = 0;\n end = 4;\n }\n const rightShift = this.count - 1 - end;\n if (rightShift < 0) {\n start = this.count - 5;\n end = this.count - 1;\n }\n }\n\n const arr = [];\n for (let i = start; i <= end; i++) {\n arr.push(i);\n }\n\n this.start = start;\n this.end = end;\n this.pages = arr;\n }\n}\n","import { PagerState } from '../model/pager-state';\n\nexport class PagerUtil {\n static getPage<T>(data: T[], paging: PagerState): T[] {\n return data.slice(paging.page * paging.pageSize, (paging.page + 1) * paging.pageSize);\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { animate, style, transition, trigger } from '@angular/animations';\n\n@Component({\n selector: 'teta-panel',\n templateUrl: './panel.component.html',\n styleUrls: ['./panel.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('panel', [\n transition('void => *', [style({ opacity: '0' }), animate(300, style({ opacity: '1' }))]),\n transition('* => void', [animate(150, style({ opacity: '0' }))]),\n ]),\n ],\n standalone: true,\n})\nexport class PanelComponent implements OnInit {\n @Input() width = 500;\n\n @HostBinding('@panel')\n private get panel() {\n return {\n value: true,\n params: { width: this.width },\n };\n }\n\n @HostBinding('class.column') private readonly column = true;\n @HostBinding('class.column_fixed') private readonly auto = true;\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<ng-content></ng-content>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnInit,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport const SLIDER_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ProgressBarComponent),\n multi: true,\n};\n\n@Component({\n selector: 'teta-progress-bar',\n templateUrl: './progress-bar.component.html',\n styleUrls: ['./progress-bar.component.scss'],\n providers: [SLIDER_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class ProgressBarComponent implements OnInit, ControlValueAccessor {\n @Input() min = 0;\n @Input() max = 100;\n @Input() step = 0;\n\n @ViewChild('progressSlider', { static: true })\n private readonly slider: ElementRef;\n @HostBinding('class.progress') private readonly progressBar = true;\n\n percent: number;\n moving: boolean;\n\n set value(value: number) {\n this._value = value;\n this.percent = this.setPercentFromValue();\n this._cdr.detectChanges();\n }\n\n get value() {\n return this._value;\n }\n\n get containerPosition() {\n const rect = this._elementRef.nativeElement.getBoundingClientRect();\n return { min: rect.x, max: rect.x + rect.width };\n }\n\n private _value;\n\n constructor(\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n private _cdr: ChangeDetectorRef,\n @Inject(DOCUMENT) private _document: any,\n ) {}\n\n @HostListener('document:mouseup', ['$event']) mouseup() {\n this.moving = false;\n this.restoreGlobalMouseEvents();\n this.removeListener();\n }\n\n @HostListener('click', ['$event']) click = (event: MouseEvent) => {\n this.getMousePositionInPercents(event);\n };\n\n onChange(_: any) {}\n\n onTouched() {}\n\n registerOnChange(fn: (_: any) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {}\n\n writeValue(value: number): void {\n this.value = value;\n }\n\n mousedown = () => {\n this.moving = true;\n this.preventGlobalMouseEvents();\n this.addListener();\n };\n\n ngOnInit(): void {}\n\n private mousemove = (event: MouseEvent) => {\n event.preventDefault();\n this.getMousePositionInPercents(event);\n };\n\n private getMousePositionInPercents = (event: MouseEvent) => {\n const position = event.clientX - this.containerPosition.min;\n let percent = (100 / (this.containerPosition.max - this.containerPosition.min)) * position;\n percent = percent <= 0 ? 0 : percent > 100 ? 100 : percent;\n this.setValue(this.getValueFromPercent(percent));\n };\n\n private setValue(value: number) {\n this.value = value;\n this.onChange(this.value);\n }\n\n private getValueFromPercent(percent: number): number {\n if (percent === 0) {\n return this.min;\n }\n if (percent === 100) {\n return this.max;\n }\n const exactValue = this.min + (percent * (this.max - this.min)) / 100;\n if (!this.step || this.step <= 0 || isNaN(this.step)) {\n return exactValue;\n }\n return Math.round((exactValue - this.min) / this.step) * this.step + this.min;\n }\n\n private preventGlobalMouseEvents = () => {\n this._document.body.style['pointer-events'] = 'none';\n };\n\n private restoreGlobalMouseEvents = () => {\n this._document.body.style['pointer-events'] = 'auto';\n };\n\n private addListener() {\n this._document.addEventListener('mousemove', this.mousemove);\n }\n\n private removeListener() {\n this._document.removeEventListener('mousemove', this.mousemove);\n }\n\n private setPercentFromValue() {\n const range = this.max - this.min;\n return (100 / range) * (this.value - this.min);\n }\n}\n","<div class=\"progress-bar\" [style.width.%]=\"percent\"></div>\n<div\n class=\"progress-slider\"\n [class.progress-slider_visible]=\"moving\"\n #progressSlider\n (mousedown)=\"mousedown()\"\n (click)=\"click($event)\"\n [style.left.%]=\"percent\"\n></div>\n","export function isFunction(obj: any) {\n return !!(obj && obj?.constructor && obj?.call && obj?.apply);\n}\n","import { isFunction } from './is-function';\n\nexport function boolOrFuncCallback<M>(variable: boolean | ((row: M | undefined) => boolean)) {\n return (args: M) => {\n if (typeof variable === 'boolean') {\n return variable;\n } else if (isFunction(variable)) {\n return (variable as (row: M) => boolean)(args);\n }\n return true;\n };\n}\n","import { inject, Provider } from '@angular/core';\nimport {\n AbstractControl,\n ControlContainer,\n UntypedFormControl,\n UntypedFormGroup,\n ValidationErrors,\n Validators,\n} from '@angular/forms';\n\nimport { ArrayUtil } from '../common/util/array-util';\nimport { FilterType } from '../component/filter/enum/filter-type.enum';\nimport { TableColumn } from '../component/table/contract/table-column';\n\nexport class FormsUtil {\n static validateAllFormFields(formGroup: UntypedFormGroup) {\n formGroup.updateValueAndValidity();\n Object.keys(formGroup.controls).forEach((field) => {\n const control = formGroup.get(field);\n if (control instanceof UntypedFormControl) {\n control.markAsTouched({ onlySelf: true });\n control.markAsDirty({ onlySelf: true });\n } else if (control instanceof UntypedFormGroup) {\n this.validateAllFormFields(control);\n }\n });\n }\n\n static controlIsInvalid(formGroup: UntypedFormGroup, controlName: string) {\n return formGroup.controls[controlName]?.invalid && formGroup.controls[controlName]?.dirty;\n }\n\n static getControlErrors(formGroup: UntypedFormGroup, controlName: string): string[] {\n if (FormsUtil.controlIsInvalid(formGroup, controlName)) {\n return Object.keys(formGroup.controls[controlName]?.errors);\n }\n return [];\n }\n\n static matchValuesValidator(matchTo: string): (control: AbstractControl) => ValidationErrors | null {\n return (control: AbstractControl): ValidationErrors | null =>\n !!control.parent && !!control.parent.value && control.value === control.parent.controls[matchTo].value\n ? null\n : { isMatching: false };\n }\n\n static requiredIf(value: boolean): (control: AbstractControl) => ValidationErrors | null {\n return (control: AbstractControl): ValidationErrors | null =>\n !!control.parent && !!control.parent.value && control.value != null && value ? null : { isMatching: false };\n }\n\n static initFormFromColumns(columns: TableColumn[], dataItem: any) {\n const form = new UntypedFormGroup({});\n const flat = ArrayUtil.flatten(columns, 'columns');\n flat.forEach((column: TableColumn) => {\n const control = FormsUtil.initControlFromColumn(column, dataItem);\n form.registerControl(column.name, control);\n });\n return form;\n }\n\n static initControlFromColumn(column: TableColumn, dataItem: any) {\n return new UntypedFormControl(\n {\n value: dataItem ? dataItem[column.name] : undefined,\n disabled: !column.editable,\n },\n {\n validators: FormsUtil.getValidators(column),\n updateOn:\n column.filterType === FilterType.number || column.filterType === FilterType.string ? 'blur' : 'change',\n },\n );\n }\n\n static getValidators(column: TableColumn) {\n const validators = [];\n if (column.required) {\n validators.push(Validators.required);\n validators.push(FormsUtil.validatorNotEmpty);\n }\n if (column.minValue != null) {\n validators.push(Validators.min(column.minValue));\n }\n if (column.maxValue != null) {\n validators.push(Validators.max(column.maxValue));\n }\n if (column.maxLength != null) {\n validators.push(Validators.maxLength(column.maxLength));\n }\n if (column.validators?.length > 0) {\n validators.push(...column.validators);\n }\n return validators;\n }\n\n static validatorNotEmpty(control: AbstractControl): ValidationErrors | null {\n if (control?.value?.toString()?.trim()?.length <= 0) {\n return { required: true };\n }\n return null;\n }\n\n static formProvider: Provider = {\n provide: ControlContainer,\n useFactory: () => inject(ControlContainer, { skipSelf: true }),\n };\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaPropertyGridItemDescription]',\n standalone: true,\n})\nexport class PropertyGridItemDescriptionDirective {\n @Input('tetaPropertyGridItemDescription') name: string;\n\n constructor(public template: TemplateRef<any>) {}\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n OnInit,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgClass } from '@angular/common';\n\nexport const TOGGLE_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ToggleComponent),\n multi: true,\n};\n\n@Component({\n selector: 'teta-toggle',\n templateUrl: './toggle.component.html',\n styleUrls: ['./toggle.component.scss'],\n providers: [TOGGLE_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass]\n})\nexport class ToggleComponent implements ControlValueAccessor {\n @HostBinding('attr.tabindex') tabindex = 0;\n @HostBinding('class.toggle') toggleClass = true;\n\n get paletteClass() {\n if (this.palette) {\n return `toggle-button-${this.palette}`;\n }\n return '';\n }\n\n @Input() palette = 'primary';\n @Input() noLabel: boolean;\n\n /**\n * компонент неактивен\n */\n @HostBinding('class.toggle_disabled')\n @Input()\n disabled: boolean;\n\n /**\n * Значение\n */\n private model$: boolean;\n\n get model(): any {\n return this.model$;\n }\n\n set model(v: any) {\n if (v !== this.model$) {\n this.model$ = v;\n this.onChange(v);\n }\n }\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n @HostListener('click')\n changeValue() {\n if (this.disabled) {\n return;\n }\n this.model = !this.model;\n }\n\n writeValue(model: boolean) {\n this.model$ = model;\n this.cdr.markForCheck();\n }\n\n onChange(_: any) {}\n\n onTouched() {}\n\n registerOnChange(fn: (_: any) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n}\n","@if (!noLabel) {\n <span class=\"font-body-3 row_auto\">\n <ng-content></ng-content>\n </span>\n}\n<div class=\"toggle-button\" [class.toggle-button-on]=\"model\" [ngClass]=\"paletteClass\">\n <div class=\"toggle-button-circle\"></div>\n</div>\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaSelectOption]',\n standalone: true,\n})\nexport class SelectOptionDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaSelectValue]',\n standalone: true,\n})\nexport class SelectValueDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({\n selector: '[tetaHighlight]',\n standalone: true,\n})\nexport class HighlightDirective {\n @Input() set tetaHighlight(text: string) {\n setTimeout(() => {\n if (this._initialElement) {\n this.elementRef.nativeElement.innerHTML = this._initialElement;\n }\n if (!text) {\n return;\n }\n const pattern = /[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g;\n const searchWithOutRegExp = text\n .toLowerCase()\n .replace(pattern, '\\\\$&')\n .split(' ')\n .filter((t) => t.length > 0)\n .join('|');\n this._initialElement = this.elementRef.nativeElement.innerHTML;\n this.recursiveReplaceNode(this.elementRef.nativeElement.childNodes, searchWithOutRegExp);\n }, 10);\n }\n\n private _initialElement = null;\n\n constructor(private elementRef: ElementRef) {}\n\n private recursiveReplaceNode(nodes: NodeListOf<ChildNode>, searchWithOutRegExp: string): boolean {\n let match = false;\n const cacheNodes: ChildNode[] = [];\n nodes.forEach((node: ChildNode) => {\n cacheNodes.push(node);\n });\n cacheNodes.forEach((node) => {\n if (node.nodeType === 3) {\n if (node.nodeValue && node.nodeValue.search(new RegExp(searchWithOutRegExp, 'i')) > -1) {\n match = true;\n this.wrapNode(node, searchWithOutRegExp);\n }\n } else {\n match = this.recursiveReplaceNode(node.childNodes, searchWithOutRegExp) || match;\n }\n });\n\n return match;\n }\n\n private wrapNode(textNode: ChildNode, searchWithOutRegExp: string) {\n if (!textNode || !textNode.nodeValue) {\n return;\n }\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = textNode.nodeValue.replace(\n new RegExp(searchWithOutRegExp, 'gi'),\n (match) => `<mark>${match}</mark>`,\n );\n\n const parentNode = textNode.parentNode;\n if (parentNode) {\n while (tempDiv.firstChild) {\n parentNode.insertBefore(tempDiv.firstChild, textNode);\n }\n parentNode.removeChild(textNode);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n forwardRef,\n HostBinding,\n Input,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { Observable } from 'rxjs';\n\nimport { AutoCloseIgnoreCase } from '../../../common/contract/auto-close-ignore-case';\nimport { Align } from '../../../common/enum/align.enum';\nimport { VerticalAlign } from '../../../common/enum/vertical-align.enum';\nimport { viewType } from '../../../common/model/view-type.model';\nimport { TetaConfigService } from '../../../locale/teta-config.service';\nimport { TetaLocalisation } from '../../../locale/teta-localisation';\nimport { SelectOptionDirective } from '../select-option.directive';\nimport { SelectValueDirective } from '../select-value.directive';\nimport { HighlightDirective } from '../../../directive/highlight/highlight.directive';\nimport { ScrollableDirective } from '../../../directive/scrollable/scrollable.directive';\nimport { CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll, CdkVirtualForOf } from '@angular/cdk/scrolling';\nimport { ScrollableComponent } from '../../../directive/scrollable/scrollable/scrollable.component';\nimport { TextFieldComponent } from '../../input/text-field/text-field.component';\nimport { DropdownContentDirective } from '../../dropdown/dropdown-content.directive';\nimport { NgTemplateOutlet, AsyncPipe } from '@angular/common';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { DropdownHeadDirective } from '../../dropdown/dropdown-head.directive';\nimport { DropdownComponent } from '../../dropdown/dropdown/dropdown.component';\nimport { LetDirective } from '../../../directive/let/let.directive';\n\n@Component({\n selector: 'teta-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n LetDirective,\n DropdownComponent,\n DropdownHeadDirective,\n IconComponent,\n NgTemplateOutlet,\n DropdownContentDirective,\n TextFieldComponent,\n FormsModule,\n ScrollableComponent,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n ScrollableDirective,\n CdkVirtualForOf,\n HighlightDirective,\n AsyncPipe,\n ]\n})\nexport class SelectComponent implements ControlValueAccessor {\n @HostBinding('class.select_multiple')\n @Input()\n multiple: boolean;\n\n @Input() set options(options: any[]) {\n this._options = options;\n if (this._internalValue !== null && this._internalValue !== undefined && this.options) {\n this.getSelectedValue(this._internalValue);\n }\n }\n\n get options() {\n return this._options;\n }\n\n @Input() invalid: boolean;\n @Input() align: Align = Align.minWidth;\n @Input() verticalAlign: VerticalAlign = VerticalAlign.auto;\n @Input() autoClose = true;\n @Input() autoCloseIgnore: Array<AutoCloseIgnoreCase> = ['inside'];\n @Input() disabled: boolean;\n @Input() itemSize = 32;\n @Input() virtual: boolean;\n @Input() icon: string;\n @Input() placeholder: string;\n @Input() appendToBody: boolean;\n @Input() allowNull = true;\n @Input() viewType: viewType = 'rounded';\n @Input() notFoundText: string;\n @Input() valueRef: ((item: any) => any) | string;\n @Input() textRef: ((item: any) => string) | string;\n @Input() searchRef: string | ((item: any) => string);\n\n @ContentChild(SelectOptionDirective, { static: true })\n optionDirective: SelectOptionDirective;\n\n @ContentChild(SelectValueDirective, { static: true })\n valueDirective: SelectValueDirective;\n\n @HostBinding('class.select_open') open = false;\n\n @HostBinding('class.select') private readonly selectClass = true;\n\n @HostBinding('tabindex')\n private get tabindex() {\n return this.disabled ? null : 0;\n }\n\n @HostBinding('class.select_disabled')\n get isDisabled() {\n return this.disabled;\n }\n\n value: any | any[];\n searchText: string;\n locale: Observable<TetaLocalisation>;\n\n get visibleOptions(): any[] {\n if (!this.searchText) {\n return this.options;\n }\n return this.options?.filter(\n (option) => this.getSearchString(option).toLowerCase().indexOf(this.searchText.toLowerCase()) >= 0,\n );\n }\n\n private _options: any | any[];\n private _internalValue: any;\n\n constructor(\n private _cdr: ChangeDetectorRef,\n private _elementRef: ElementRef,\n private _config: TetaConfigService,\n ) {\n this.locale = this._config.locale;\n }\n\n clear() {\n let val: any;\n if (this.multiple === true) {\n val = [];\n } else {\n val = null;\n }\n this.value = val;\n this.onChange(this.value);\n this.open = false;\n this._cdr.markForCheck();\n this._cdr.detectChanges();\n }\n\n clickOption(option: any, event: MouseEvent): void {\n if (this.multiple === true) {\n if (!this.value?.length) {\n this.value = [];\n }\n if (this.value.indexOf(option) >= 0) {\n this.removeItem(option);\n } else {\n this.value = [...this.value, option];\n }\n this._internalValue = this.value.map((_) => this.getValue(_));\n this.onChange(this._internalValue);\n } else {\n this.value = option;\n this._internalValue = this.getValue(this.value);\n this.onChange(this._internalValue);\n this.open = false;\n }\n this._cdr.markForCheck();\n this._cdr.detectChanges();\n }\n\n itemSelected(option: any): boolean {\n if (this.multiple) {\n return this.value?.indexOf(option) >= 0;\n } else {\n return this.value === option;\n }\n }\n\n removeItemClick(option: any, event: MouseEvent): void {\n event.stopPropagation();\n this.removeItem(option);\n this._internalValue = this.value.map((_) => this.getValue(_));\n this.onChange(this._internalValue);\n }\n\n removeItem(option: any): void {\n this.value = this.value.filter((_) => _ !== option);\n }\n\n search(text: string): void {\n this.searchText = text;\n }\n\n getText(option: any): string {\n if (option == null) {\n return '';\n }\n switch (typeof this.textRef) {\n case 'string':\n return option[this.textRef];\n case 'function':\n return this.textRef(option);\n default:\n return option;\n }\n }\n\n getValue(option: any): any {\n switch (typeof this.valueRef) {\n case 'string':\n return option[this.valueRef];\n case 'function':\n return this.valueRef(option);\n default:\n return option;\n }\n }\n\n getSearchString(option: any): string {\n switch (typeof this.searchRef) {\n case 'string':\n return option[this.searchRef];\n case 'function':\n return this.searchRef(option);\n default:\n return '';\n }\n }\n\n focus() {\n this._elementRef.nativeElement.focus();\n }\n\n writeValue(value: any | any[]): void {\n this._internalValue = value;\n this.getSelectedValue(value);\n this._cdr.detectChanges();\n }\n\n onChange: (value: any) => void = () => {};\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = fn;\n }\n\n onTouched = () => {};\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._cdr.markForCheck();\n }\n\n private getSelectedValue(value: any | any[]) {\n if (this.multiple) {\n this.value =\n value && this.options ? this.options.filter((option) => value.indexOf(this.getValue(option)) > -1) : [];\n } else {\n this.value = this.options && this.options?.find((option) => this.getValue(option) === value);\n }\n }\n}\n","@if (locale | async; as loc) {\n <teta-dropdown\n [align]=\"align\"\n [verticalAlign]=\"verticalAlign\"\n [autoClose]=\"autoClose\"\n [autoCloseIgnore]=\"autoCloseIgnore\"\n [(open)]=\"open\"\n [appendToBody]=\"appendToBody\"\n [disabled]=\"disabled\"\n [viewType]=\"viewType\"\n class=\"row row_auto\"\n >\n <div tetaDropdownHead [class]=\"'row row_auto select-head select_' + viewType\" [class.select-head_invalid]=\"invalid\">\n <div class=\"row_auto flex align-center\">\n @if (icon) {\n <teta-icon [name]=\"icon\" [palette]=\"'text'\" class=\"margin-right-1\"></teta-icon>\n }\n @if ((value === null || value === undefined || value?.length === 0) && !multiple) {\n <span class=\"placeholder\">\n {{ placeholder || loc.notSelected }}\n </span>\n }\n <ng-container\n *ngTemplateOutlet=\"\n valueDirective ? valueDirective.template : valueDefault;\n context: { $implicit: value, value: value }\n \"\n ></ng-container>\n </div>\n <teta-icon [name]=\"'arrowDownSmall'\" [palette]=\"'text'\"></teta-icon>\n </div>\n @if (options?.length) {\n <div tetaDropdownContent class=\"select-body row_auto\" (click)=\"$event.preventDefault()\">\n @if (searchRef) {\n <div class=\"select-search padding-h-2 padding-top-2\">\n <teta-text-field\n [ngModel]=\"searchText\"\n [class]=\"'select_' + viewType\"\n (ngModelChange)=\"search($event)\"\n [placeholder]=\"loc.search\"\n [leftIconName]=\"'search'\"\n ></teta-text-field>\n </div>\n }\n @if (visibleOptions?.length) {\n @if (!multiple && allowNull) {\n <div [class]=\"'margin-h-2 list-item list-item_interactive select_' + viewType\" (click)=\"clear()\">\n {{ loc.notSelected }}\n </div>\n <div class=\"list-divider margin-bottom-0\"></div>\n }\n @if (virtual) {\n <teta-scrollable class=\"column column_auto\">\n <cdk-virtual-scroll-viewport tetaScrollable [itemSize]=\"40\" minBufferPx=\"200\" maxBufferPx=\"600\">\n <div\n [class]=\"'list-item list-item_interactive justify-content-between select_' + viewType\"\n *cdkVirtualFor=\"let option of visibleOptions; templateCacheSize: 0\"\n [class.list-item_active]=\"itemSelected(option)\"\n [tetaHighlight]=\"searchText\"\n (click)=\"clickOption(option, $event)\"\n >\n <div [tetaHighlight]=\"searchText\">\n <ng-container\n *ngTemplateOutlet=\"\n optionDirective ? optionDirective.template : optionDefault;\n context: { $implicit: option, option: option }\n \"\n >\n </ng-container>\n </div>\n @if (itemSelected(option)) {\n <teta-icon [name]=\"'tick'\" [palette]=\"'text'\" class=\"margin-left-2\"></teta-icon>\n }\n </div>\n </cdk-virtual-scroll-viewport>\n </teta-scrollable>\n } @else {\n <teta-scrollable class=\"column column_auto\" [contentClass]=\"['column', 'column_auto']\">\n <div class=\"list\">\n @for (option of visibleOptions; track option) {\n <div\n [class]=\"'list-item list-item_interactive justify-content-between select_' + viewType\"\n [class.list-item_active]=\"itemSelected(option)\"\n (click)=\"clickOption(option, $event)\"\n >\n <span [tetaHighlight]=\"searchText\">\n <ng-container\n *ngTemplateOutlet=\"\n optionDirective ? optionDirective.template : optionDefault;\n context: { $implicit: option, option: option }\n \"\n >\n </ng-container>\n </span>\n @if (itemSelected(option) && multiple) {\n <teta-icon [name]=\"'tick'\" [palette]=\"'text'\"></teta-icon>\n }\n </div>\n }\n </div>\n </teta-scrollable>\n }\n } @else {\n <p class=\"padding-h-3 text-overflow-ellipsis overflow-hidden select-not-found-option\">\n {{ notFoundText || loc.notFound }}\n </p>\n }\n @if (multiple && value?.length) {\n <div class=\"row row_auto select-chip-field flex-wrap\">\n @for (item of value; track item) {\n <div class=\"tag\">\n <p>{{ getText(item) }}</p>\n <teta-icon\n class=\"cursor-pointer\"\n [palette]=\"'text'\"\n [name]=\"'closeCircle'\"\n (click)=\"removeItemClick(item, $event)\"\n ></teta-icon>\n </div>\n }\n </div>\n }\n </div>\n }\n </teta-dropdown>\n <ng-template #notFound>\n <p class=\"padding-h-3 text-overflow-ellipsis overflow-hidden select-not-found-option\">\n {{ notFoundText || loc.notFound }}\n </p>\n </ng-template>\n <ng-template #optionDefault let-option>\n {{ getText(option) }}\n </ng-template>\n <ng-template #valueDefault let-value>\n @if (multiple) {\n <div class=\"row_auto overflow-hidden text-overflow-ellipsis\">\n {{ loc.selected + ' ' + value?.length }}\n </div>\n }\n @if (!multiple) {\n <span class=\"row row_auto overflow-hidden text-overflow-ellipsis\">{{ getText(value) }}</span>\n }\n </ng-template>\n}\n","import { Directive, Input } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n selector: '[tetaDisableControl]',\n standalone: true,\n})\nexport class DisableControlDirective {\n @Input() set tetaDisableControl(val: boolean) {\n if (this.ngControl.control) {\n if (val) {\n this.ngControl.control.disable({\n emitEvent: false,\n });\n } else {\n this.ngControl.control.enable({\n emitEvent: false,\n });\n }\n }\n }\n\n constructor(private ngControl: NgControl) {}\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n OnChanges,\n OnDestroy,\n output,\n} from '@angular/core';\nimport { ControlContainer, FormGroup, FormsModule, NgForm, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { Subscription } from 'rxjs';\nimport { takeWhile } from 'rxjs/operators';\n\nimport { IDictionary } from '../../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../../common/contract/i-id-name';\nimport { Align } from '../../../../common/enum/align.enum';\nimport { boolOrFuncCallback } from '../../../../util/bool-or-func';\nimport { FormsUtil } from '../../../../util/forms-util';\nimport { FilterType } from '../../../filter/enum/filter-type.enum';\nimport { TableColumn } from '../../../table/contract/table-column';\nimport { PropertyGridItemDescriptionDirective } from '../property-grid-item-description.directive';\nimport { TextFieldComponent } from '../../../input/text-field/text-field.component';\nimport { ToggleComponent } from '../../../toggle/toggle/toggle.component';\nimport { DatePickerComponent } from '../../../date-picker/date-picker/date-picker.component';\nimport { SelectComponent } from '../../../select/select/select.component';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { InputComponent } from '../../../input/input/input.component';\nimport { DisableControlDirective } from '../../../../directive/disable-control/disable-control.directive';\nimport { HintDirective } from '../../../../directive/hint/hint.directive';\n\n@Component({\n selector: 'teta-property-grid-item',\n templateUrl: './property-grid-item.component.html',\n styleUrls: ['./property-grid-item.component.scss'],\n viewProviders: [FormsUtil.formProvider],\n imports: [\n InputComponent,\n FormsModule,\n ReactiveFormsModule,\n NgTemplateOutlet,\n SelectComponent,\n DatePickerComponent,\n ToggleComponent,\n TextFieldComponent,\n DisableControlDirective,\n HintDirective,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PropertyGridItemComponent<T> implements OnDestroy, OnChanges {\n private transloco = inject(TranslocoService);\n private _formGroup = inject(ControlContainer);\n\n column = input<TableColumn>();\n hideNonEditable = input<boolean>();\n dict = input<IDictionary<IIdName<any>[]>>();\n decimalPart = input<number>();\n item = input<T>();\n itemTemplates = input<readonly PropertyGridItemDescriptionDirective[]>();\n template = computed(() => {\n return this.itemTemplates().find((item) => item.name === this.column().name);\n });\n\n get formGroup(): FormGroup {\n if (this._formGroup instanceof FormGroup) {\n return this._formGroup;\n }\n if (this._formGroup instanceof NgForm) {\n return this._formGroup.form;\n }\n return null;\n }\n\n editable = computed(() => {\n return boolOrFuncCallback(this.column().editable)({\n column: this.column(),\n row: this.formGroup?.getRawValue(),\n });\n });\n\n horizontal = input<boolean>();\n controlValueChange = output<IIdName<any>>();\n align = Align;\n filterTypeEnum = FilterType;\n\n private _formSub: Subscription;\n\n caption = computed(() => {\n if (this.column().filterType === FilterType.boolean) {\n return '';\n }\n return `${this.column().caption}${this.column().unit ? `, ${this.column().unit}` : ''}`;\n });\n\n hint = computed(() => {\n return `${this.column().hint || this.column().caption}${this.column().unit ? `, ${this.column().unit}` : ''}`;\n });\n\n private _alive = true;\n\n getDict() {\n const dict = this.dict() ? this.dict()[this.column().name] : [];\n if (this.column().parentName?.length > 0) {\n return dict?.filter(\n (dictItem: IIdName<any>) => dictItem.parentId === this.formGroup?.getRawValue()[this.column().parentName],\n );\n }\n return dict;\n }\n\n controlIsInvalid(controlName: string) {\n return FormsUtil.controlIsInvalid(this.formGroup, controlName);\n }\n\n getError(column: TableColumn) {\n const control = this.formGroup?.get(column.name);\n if (control?.hasError('required')) {\n return this.transloco.translate('errors.field_is_required');\n }\n if (control?.hasError('min')) {\n return this.transloco.translate('errors.min_value', {\n value: column.minValue,\n });\n }\n if (control?.hasError('max')) {\n return this.transloco.translate('errors.max_value', {\n value: column.maxValue,\n });\n }\n if (control?.hasError('maxlength')) {\n return this.transloco.translate('errors.max_length', {\n value: column.maxLength,\n });\n }\n return null;\n }\n\n ngOnDestroy() {\n this._alive = false;\n this._formSub?.unsubscribe();\n }\n\n ngOnChanges() {\n if (this.column() && this.item()) {\n if (!this.formGroup.get(this.column().name)) {\n this.formGroup.setControl(this.column().name, FormsUtil.initControlFromColumn(this.column(), this.item()));\n }\n this._formSub?.unsubscribe();\n this._formSub = this.formGroup?.controls[this.column().name]?.valueChanges\n .pipe(takeWhile(() => this._alive))\n .subscribe((_) => {\n this.controlValueChange.emit({\n id: _,\n name: this.column().name,\n });\n });\n }\n }\n}\n","@if (editable() || !hideNonEditable()) {\n <teta-input\n [label]=\"caption()\"\n [hint]=\"hint()\"\n [formGroup]=\"formGroup\"\n [horizontal]=\"horizontal()\"\n [required]=\"column().required\"\n >\n @if (template()) {\n <ng-container\n *ngTemplateOutlet=\"template().template; context: { $implicit: formGroup?.get(column().name) }\"\n ></ng-container>\n } @else {\n @if (formGroup?.get(column().name)) {\n @switch (column().filterType) {\n @case (filterTypeEnum.list) {\n <teta-select\n class=\"row_auto\"\n [tetaDisableControl]=\"!editable()\"\n [searchRef]=\"getDict()?.length > 10 ? 'name' : ''\"\n [allowNull]=\"!column().required\"\n [appendToBody]=\"true\"\n [invalid]=\"controlIsInvalid(column().name)\"\n [formControlName]=\"column().name\"\n [options]=\"getDict()\"\n [valueRef]=\"'id'\"\n [textRef]=\"'name'\"\n [multiple]=\"false\"\n ></teta-select>\n }\n @case (filterTypeEnum.date) {\n <teta-date-picker\n class=\"row_auto\"\n [appendToBody]=\"true\"\n [tetaDisableControl]=\"!editable()\"\n [invalid]=\"controlIsInvalid(column().name)\"\n [formControlName]=\"column().name\"\n ></teta-date-picker>\n }\n @case (filterTypeEnum.boolean) {\n <teta-toggle\n [tetaDisableControl]=\"!editable()\"\n [formControlName]=\"column().name\"\n [tetaHint]=\"hint()\"\n [align]=\"align.left\"\n >\n {{ column().caption }}\n </teta-toggle>\n }\n @default {\n <teta-text-field\n class=\"row_auto\"\n [tetaDisableControl]=\"!editable()\"\n [decimalPart]=\"column().filterType === filterTypeEnum.number ? decimalPart() : null\"\n [onlyNumber]=\"column().filterType === filterTypeEnum.number\"\n [placeholder]=\"column().caption\"\n [invalid]=\"controlIsInvalid(column().name)\"\n [formControlName]=\"column().name\"\n ></teta-text-field>\n }\n }\n }\n }\n @if (controlIsInvalid(column().name)) {\n <div ngProjectAs=\"message\" class=\"color-red-50\">\n {{ getError(column()) }}\n </div>\n }\n </teta-input>\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { IDictionary } from '../../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../../common/contract/i-id-name';\nimport { FormsUtil } from '../../../../util/forms-util';\nimport { TableColumn } from '../../../table/contract/table-column';\nimport { PropertyGridItemDescriptionDirective } from '../property-grid-item-description.directive';\nimport { PropertyGridItemComponent } from '../property-grid-item/property-grid-item.component';\nimport { ExpandItemComponent } from '../../../expand-card/expand-item/expand-item.component';\n\n@Component({\n selector: 'teta-property-grid-group',\n templateUrl: './property-grid-group.component.html',\n styleUrls: ['./property-grid-group.component.scss'],\n viewProviders: [FormsUtil.formProvider],\n imports: [ExpandItemComponent, PropertyGridItemComponent],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PropertyGridGroupComponent<T> {\n column = input<TableColumn>();\n hideNonEditable = input<boolean>();\n dict = input<IDictionary<IIdName<any>[]>>();\n item = input<T>();\n horizontal = input<boolean>();\n controlValueChange = output<IIdName<any>>();\n decimalPart = input<number>();\n itemTemplates = input<readonly PropertyGridItemDescriptionDirective[]>();\n}\n","<teta-expand-item>\n <span ngProjectAs=\"head\">\n {{ column().caption }}\n </span>\n <div class=\"form-container\">\n @for (col of column().columns; track col.name) {\n @if (col.columns?.length < 1) {\n @if (column().editable || !hideNonEditable) {\n <teta-property-grid-item\n [id]=\"col.name\"\n [dict]=\"dict()\"\n [column]=\"col\"\n [item]=\"item()\"\n [itemTemplates]=\"itemTemplates()\"\n [decimalPart]=\"decimalPart()\"\n [hideNonEditable]=\"hideNonEditable()\"\n (controlValueChange)=\"controlValueChange.emit($event)\"\n [horizontal]=\"horizontal()\"\n ></teta-property-grid-item>\n }\n } @else {\n <teta-property-grid-group\n [id]=\"col.name\"\n [dict]=\"dict()\"\n [column]=\"col\"\n [item]=\"item()\"\n [itemTemplates]=\"itemTemplates()\"\n [decimalPart]=\"decimalPart()\"\n [hideNonEditable]=\"hideNonEditable()\"\n [horizontal]=\"horizontal()\"\n (controlValueChange)=\"controlValueChange.emit($event)\"\n ></teta-property-grid-group>\n }\n }\n </div>\n</teta-expand-item>\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n effect,\n HostBinding,\n input,\n Optional,\n output,\n} from '@angular/core';\nimport {\n ControlContainer,\n FormGroup,\n FormsModule,\n NgForm,\n ReactiveFormsModule,\n UntypedFormControl,\n} from '@angular/forms';\n\nimport { IDictionary } from '../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { boolOrFuncCallback } from '../../../util/bool-or-func';\nimport { FormsUtil } from '../../../util/forms-util';\nimport { TableColumn } from '../../table/contract/table-column';\nimport { PropertyGridItemDescriptionDirective } from './property-grid-item-description.directive';\nimport { PropertyGridGroupComponent } from './property-grid-group/property-grid-group.component';\nimport { PropertyGridItemComponent } from './property-grid-item/property-grid-item.component';\nimport { ArrayUtil } from '../../../common/util/array-util';\n\n@Component({\n selector: 'teta-property-grid',\n templateUrl: './property-grid.component.html',\n styleUrls: ['./property-grid.component.scss'],\n viewProviders: [FormsUtil.formProvider],\n imports: [PropertyGridItemComponent, FormsModule, ReactiveFormsModule, PropertyGridGroupComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PropertyGridComponent<T> {\n @HostBinding('class.form-container') formClass = true;\n itemTemplates = contentChildren(PropertyGridItemDescriptionDirective);\n hideNonEditable = input<boolean>();\n columns = input<TableColumn[]>();\n dict = input<IDictionary<IIdName<any>[]>>();\n item = input<T>();\n\n horizontal = input<boolean>();\n decimalPart = input<number>();\n\n controlValueChange = output<IIdName<any>>();\n\n get formGroup(): FormGroup {\n if (this._formGroup instanceof FormGroup) {\n return this._formGroup;\n }\n if (this._formGroup instanceof NgForm) {\n return this._formGroup.form;\n }\n return null;\n }\n\n constructor(@Optional() private _formGroup: ControlContainer) {\n effect(() => {\n if (this.item() && this.columns()?.length && this.formGroup) {\n for (const key in this.item()) {\n if (Object.prototype.hasOwnProperty.call(this.item(), key)) {\n if (!this.formGroup.get(key)) {\n const currentColumn = ArrayUtil.findRecursive(this.columns(), (item) => item.name === key, 'columns');\n\n if (currentColumn) {\n this.formGroup.setControl(key, FormsUtil.initControlFromColumn(currentColumn, this.item()), {\n emitEvent: false,\n });\n } else {\n this.formGroup.setControl(key, new UntypedFormControl(this.item()[key]), {\n emitEvent: false,\n });\n }\n } else {\n this.formGroup.patchValue(this.item(), {\n emitEvent: false,\n });\n }\n }\n }\n }\n });\n }\n\n getEditable(column: TableColumn) {\n return boolOrFuncCallback(column.editable)({\n column: column,\n row: this.formGroup?.getRawValue(),\n });\n }\n\n onControlValueChange(event: IIdName<any>) {\n const affected = this.columns().filter((_) => _.parentName === event.name);\n if (affected?.length) {\n affected.forEach((item) => {\n const value = this.formGroup.getRawValue()[item.name];\n if (value) {\n const dictValue = this.getDictValue(value, item.name);\n if (dictValue && dictValue.parentId !== event.id) {\n const newObj = {};\n newObj[item.name] = null;\n this.formGroup.patchValue(newObj);\n }\n }\n });\n }\n this.controlValueChange.emit(event);\n }\n\n private getDictValue(value: any, name: string) {\n return this.dict()[name]?.find((_) => _.id === value);\n }\n}\n","@if (columns()?.length) {\n @for (column of columns(); track column.name) {\n @if (column.columns?.length < 1 && (getEditable(column) || !hideNonEditable())) {\n <teta-property-grid-item\n [dict]=\"dict()\"\n [column]=\"column\"\n [item]=\"item()\"\n [id]=\"column.name\"\n [itemTemplates]=\"itemTemplates()\"\n [decimalPart]=\"decimalPart()\"\n [formGroup]=\"formGroup\"\n [horizontal]=\"horizontal()\"\n (controlValueChange)=\"onControlValueChange($event)\"\n [hideNonEditable]=\"hideNonEditable()\"\n ></teta-property-grid-item>\n }\n @if (column.columns?.length > 0 && (getEditable(column) || !hideNonEditable())) {\n <teta-property-grid-group\n [id]=\"column.name\"\n [dict]=\"dict()\"\n [column]=\"column\"\n [item]=\"item()\"\n [itemTemplates]=\"itemTemplates()\"\n [decimalPart]=\"decimalPart()\"\n [formGroup]=\"formGroup\"\n [horizontal]=\"horizontal()\"\n (controlValueChange)=\"onControlValueChange($event)\"\n [hideNonEditable]=\"hideNonEditable()\"\n ></teta-property-grid-group>\n }\n }\n}\n","export enum SidebarPosition {\n left,\n right,\n bottom,\n top,\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, OnInit, Output } from '@angular/core';\nimport { SidebarPosition } from '../sidebar-position.enum';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'teta-sidebar',\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('sidebar', [\n transition('void => *', [style({ opacity: '0' }), animate(300, style({ opacity: '1' }))]),\n transition('* => void', [animate(300, style({ opacity: '0' }))]),\n ]),\n ],\n imports: [NgClass]\n})\nexport class SidebarComponent implements OnInit {\n @Input() position: SidebarPosition = SidebarPosition.left;\n @Input() backdrop: boolean;\n @Input() open: boolean;\n @Output() openChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Input() className: string | string[];\n\n @HostBinding('style.z-index') zIndex = 10;\n\n sidebarPosition = SidebarPosition;\n\n constructor() {}\n\n setOpen(value: boolean) {\n this.open = value;\n this.openChange.emit(this.open);\n }\n\n ngOnInit(): void {}\n}\n","@if (backdrop && open) {\n <div [@sidebar] (click)=\"setOpen(false)\" class=\"sidebar-backdrop\"></div>\n}\n@if (open) {\n <div\n class=\"sidebar\"\n [@sidebar]\n [ngClass]=\"className\"\n [class.sidebar-top]=\"position === sidebarPosition.top\"\n [class.sidebar-bottom]=\"position === sidebarPosition.bottom\"\n [class.sidebar-left]=\"position === sidebarPosition.left\"\n [class.sidebar-right]=\"position === sidebarPosition.right\"\n >\n <ng-content></ng-content>\n </div>\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SwitchService {\n readonly value: Observable<any>;\n private readonly value$: ReplaySubject<any> = new ReplaySubject<any>(1);\n\n constructor() {\n this.value = this.value$.asObservable();\n }\n\n setValue(value: any) {\n this.value$.next(value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SwitchService } from '../switch.service';\nimport { filter, takeWhile } from 'rxjs/operators';\nimport { viewType } from '../../../common/model/view-type.model';\n\nexport const SWITCH_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SwitchComponent),\n multi: true,\n};\n\n@Component({\n selector: 'teta-switch',\n templateUrl: './switch.component.html',\n styleUrls: ['./switch.component.scss'],\n providers: [SWITCH_CONTROL_VALUE_ACCESSOR, SwitchService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class SwitchComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() viewType: viewType = 'rounded';\n @HostBinding('class.switch') switchClass = true;\n\n @HostBinding('class')\n get class() {\n return `switch_` + this.viewType;\n }\n\n private _alive = true;\n private _value: any;\n\n constructor(\n private svc: SwitchService,\n private cdr: ChangeDetectorRef,\n ) {\n this.svc.value\n .pipe(\n takeWhile((_) => this._alive),\n filter((_) => _ !== this._value),\n )\n .subscribe((_) => {\n this.onChange(_);\n this._value = _;\n });\n }\n\n writeValue(model: any) {\n this._value = model;\n this.svc.setValue(model);\n this.cdr.markForCheck();\n }\n\n onChange(_: any) {}\n\n onTouched() {}\n\n registerOnChange(fn: (_: any) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","<ng-content></ng-content>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { SwitchService } from '../switch.service';\nimport { takeWhile } from 'rxjs/operators';\n\n@Component({\n selector: 'teta-switch-button',\n templateUrl: './switch-button.component.html',\n styleUrls: ['./switch-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class SwitchButtonComponent implements OnInit, OnDestroy {\n @Input() value: any;\n @Input() class: string;\n\n @HostBinding('class')\n private get getClass(): string {\n const result = [this.class, 'switch-button'];\n if (this.svcValue === this.value || (this.svcValue instanceof Array && this.svcValue.indexOf(this.value) >= 0)) {\n result.push('switch-button_active');\n }\n return result.join(' ');\n }\n\n private svcValue: any;\n private _alive = true;\n\n constructor(\n private svc: SwitchService,\n private cdr: ChangeDetectorRef,\n ) {\n this.svc.value.pipe(takeWhile((_) => this._alive)).subscribe((_) => {\n this.svcValue = _;\n this.cdr.markForCheck();\n });\n }\n\n @HostListener('click', ['$event']) click(event: MouseEvent): void {\n this.svc.setValue(this.value);\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","<ng-content></ng-content>\n","export enum EditEvent {\n click,\n focus,\n doubleClick,\n}\n","export enum EditType {\n none,\n cell,\n row,\n}\n","export enum SelectType {\n none,\n checkBox,\n mouse,\n}\n","import { prependZero } from '../pipe/util/number-helper';\n\nexport class DateUtil {\n /**\n * Вычесть n-дней\n */\n\n public static subtractDays(date: Date, days = 0): Date | null {\n if (date && date instanceof Date) {\n const dt = new Date(date.getTime());\n\n dt.setDate(dt.getDate() - days);\n return dt;\n }\n\n return null;\n }\n\n /**\n * Добавить n-дней\n */\n\n public static addDays(date: Date, days = 0): Date | null {\n if (date && date instanceof Date) {\n const dt = new Date(date.getTime());\n\n dt.setDate(dt.getDate() + days);\n return dt;\n }\n\n return null;\n }\n\n /**\n * Получить дату из строки\n */\n public static parseString(dat: string): Date | null {\n if (!dat || dat.length < 1) {\n return null;\n }\n\n const parts = dat.split(' ');\n const dtPart = parts[0].split('.');\n const tPart = parts[1]?.split(':') ?? ['0', '0', '0'];\n const parsedDate = new Date(\n parseInt(dtPart[2], 10),\n parseInt(dtPart[1], 10) - 1,\n parseInt(dtPart[0], 10),\n parseInt(tPart[0], 10),\n parseInt(tPart[1], 10),\n parseInt(tPart[2], 10),\n );\n if (isNaN(parsedDate.getTime())) {\n return null;\n }\n return parsedDate;\n }\n\n /**\n * Привести дату к строке\n */\n public static toString(dat: Date): string {\n if (!dat || !(dat instanceof Date)) {\n return '';\n }\n const month = dat.getMonth() + 1;\n return `${prependZero(dat.getDate(), 2)}.${prependZero(month, 2)}.${dat.getFullYear()} ${prependZero(\n dat.getHours(),\n 2,\n )}:${prependZero(dat.getMinutes(), 2)}:${prependZero(dat.getSeconds(), 2)}`;\n }\n\n /**\n * Подготовка даты к отправке на сервер, чтобы небыло смещения часов\n */\n public static convertUTC2DateLocal(date?: Date): Date | null {\n if (date && date instanceof Date) {\n const timezoneOffsetMs: number =\n new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTimezoneOffset() * 60000;\n return new Date(date.getTime() - timezoneOffsetMs);\n }\n return null;\n }\n\n /**\n * Подготовка даты к отправке на сервер, чтобы небыло смещения часов\n */\n public static convertDateLocal2UTC(date?: Date): Date | null {\n if (date && date instanceof Date) {\n const timezoneOffsetMs: number =\n new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTimezoneOffset() * 60000;\n return date == null ? null : new Date(date.getTime() + timezoneOffsetMs);\n }\n return null;\n }\n\n public static convertDateStringsToDates(input: any): any {\n const regexIso8601 = /^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(\\.\\d+)?(([+-]\\d\\d:\\d\\d)|Z)?$/i;\n if (typeof input === 'string' && regexIso8601.test(input)) {\n return DateUtil.convertStringToLocalDate(input);\n }\n if (typeof input !== 'object' || !input) {\n return input;\n }\n let res: any | any[];\n if (input instanceof Array) {\n res = [];\n } else {\n res = {};\n }\n return DateUtil.fillConvertDateStringsToDates(res, input);\n }\n\n public static convertDates(input: any | any[]): any | any[] {\n if (typeof input !== 'object' || !input) {\n return input;\n }\n if (input instanceof Date) {\n return DateUtil.convertUTC2DateLocal(input);\n }\n let res: any | any[];\n if (input instanceof Array) {\n res = [];\n } else {\n res = {};\n }\n return DateUtil.fillConvertDates(res, input);\n }\n\n public static getMonthDaysCount(date: Date): number {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n }\n\n // Возвращает список месяцев между двумя датами\n public static getRangeOfMonths(start: Date, end: Date): Date[] {\n if (start > end || !start || !end) {\n return null;\n }\n const resDates: Date[] = [];\n let i = 0;\n let dateTmp = new Date(start.getFullYear(), start.getMonth() + i, 1);\n while (end >= dateTmp) {\n resDates.push(dateTmp);\n i++;\n dateTmp = new Date(start.getFullYear(), start.getMonth() + i, 1);\n }\n return resDates;\n }\n\n public static truncateToMonth(date: Date): Date {\n const res = new Date(date.getFullYear(), date.getMonth(), 1, 0, 0, 0);\n return res;\n }\n\n public static truncateToDay(date: Date): Date {\n const res = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n return res;\n }\n\n public static truncateToHour(date: Date): Date {\n const res = new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), 0, 0);\n return res;\n }\n\n public static toISOString(date: number): string {\n return new Date(date - new Date().getTimezoneOffset() * 60000).toISOString().slice(0, -5) + 'Z';\n }\n\n public static isValidDate(date: any): boolean {\n return date instanceof Date && !isNaN(date.getTime());\n }\n\n public static millisecondToHumanFormat(milliSeconds: number, maxValue = 5000, showDays = false): string {\n const negative = milliSeconds < 0;\n if (negative) {\n milliSeconds = -milliSeconds;\n }\n let d;\n if (showDays) {\n d = Math.trunc(milliSeconds / (60000 * 60 * 24));\n milliSeconds = milliSeconds - 60000 * 60 * 24 * d;\n }\n const h = Math.trunc(milliSeconds / (60000 * 60));\n milliSeconds = milliSeconds - 60000 * 60 * h;\n const m = Math.trunc(milliSeconds / 60000);\n milliSeconds = milliSeconds - 60000 * m;\n const s = Math.trunc(milliSeconds / 1000);\n milliSeconds = milliSeconds - 1000 * s;\n const frac = milliSeconds;\n let result = m ? m + ' м ' : ''; // start with minutes\n if (maxValue < 60000 * 60) {\n if (s) {\n result = result + s + ' с '; // add seconds value\n }\n\n if (s === 0 && !m) {\n result = result + '0 c';\n }\n }\n if (maxValue < 5000) {\n result = frac ? result + frac + ' мс ' : result;\n }\n\n if (h) {\n result = h + ' ч ' + result;\n }\n if (d) {\n result = d + 'д ' + result;\n }\n if (negative) {\n result = '-' + result;\n }\n\n return result.trim();\n }\n\n private static fillConvertDates(result: any, input: any): any {\n for (const key in input) {\n if (!input.hasOwnProperty || !input.hasOwnProperty(key)) {\n continue;\n }\n if (input.hasOwnProperty(key)) {\n let value = input[key];\n if (value instanceof Date) {\n if (value !== null && value !== undefined) {\n value = DateUtil.convertUTC2DateLocal(value);\n }\n result[key] = value;\n } else if (typeof value === 'object') {\n result[key] = DateUtil.convertDates(value);\n } else {\n result[key] = value;\n }\n }\n }\n return result;\n }\n\n private static fillConvertDateStringsToDates(result: any, input: any): any {\n const regexIso8601 = /^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(\\.\\d+)?(([+-]\\d\\d:\\d\\d)|Z?)?$/i;\n for (const key in input) {\n if (!input.hasOwnProperty(key)) {\n continue;\n }\n const value = input[key];\n if (typeof value === 'string' && regexIso8601.test(value)) {\n result[key] = DateUtil.convertStringToLocalDate(value);\n } else if (typeof value === 'object') {\n result[key] = DateUtil.convertDateStringsToDates(value);\n } else {\n result[key] = value;\n }\n }\n return result;\n }\n\n private static convertStringToLocalDate(dateString: string): Date | null {\n const milliseconds = Date.parse(dateString);\n if (!isNaN(milliseconds)) {\n const dt = new Date(milliseconds);\n return DateUtil.convertDateLocal2UTC(dt);\n }\n return null;\n }\n}\n","import { TableColumn } from './table-column';\n\nexport class ColumnReorderEvent {\n source: TableColumn;\n target: TableColumn;\n\n constructor(source: TableColumn, target: TableColumn) {\n this.source = source;\n this.target = target;\n }\n}\n","import { Type } from '@angular/core';\nimport { ValidatorFn } from '@angular/forms';\n\nimport { FilterItem, IFilterItemOptions } from '../../filter/contarct/filter-item';\nimport { FilterType } from '../../filter/enum/filter-type.enum';\nimport { ListFilterType } from '../../filter/enum/list-filter-type.enum';\nimport { StringFilterType } from '../../filter/enum/string-filter-type.enum';\nimport { CellComponentBase } from '../base/cell-component-base';\nimport { AggregationType } from '../enum/aggregation-type.enum';\nimport { HeadDropdownTabConfig } from './head-dropdown-tab';\nimport { IColumnRow } from './i-cell-instance';\n\nexport interface ITableColumnOptions extends IFilterItemOptions {\n width?: number;\n flex?: number;\n sortOrder?: number;\n locked?: boolean;\n name?: string;\n parentName?: string;\n caption?: string;\n hint?: string;\n unit?: string;\n unitMeasureParameterId?: number;\n unitId?: number;\n sortable?: boolean;\n sortField?: string;\n filterable?: boolean;\n filterField?: string;\n filterType?: FilterType | null;\n stringFilterType?: StringFilterType;\n listFilterType?: ListFilterType;\n strict?: boolean;\n headCellClass?: string[];\n cellClass?: string[];\n data?: any;\n editable?: boolean | ((coordinates: IColumnRow<any>) => boolean);\n objectType?: boolean;\n cellComponent?: Type<CellComponentBase<any>>;\n headCellComponent?: any;\n headDropdownConfig?: HeadDropdownTabConfig;\n filterComponent?: any;\n columns?: any[];\n aggregate?: AggregationType;\n defaultValue?: any;\n maxValue?: number;\n minValue?: number;\n maxLength?: number;\n required?: boolean;\n validators?: ValidatorFn[];\n}\n\nexport class TableColumn extends FilterItem {\n /**\n * Ширина\n */\n width = 80;\n /**\n * Коэффициент растяжения ячейки\n */\n flex = 1;\n /**\n * Стобец закреплен\n */\n locked: boolean;\n /**\n * Название столбца родителя\n */\n parentName: string;\n /**\n * Единицы измерения\n */\n unit: string;\n unitMeasureParameterId: number;\n unitId: number;\n /**\n * список style классов для шапки таблицы\n */\n headCellClass: string[];\n /**\n * список style классов для ячейки таблицы\n */\n cellClass: string[];\n /**\n * Дополнительные данные, свободное описание, доступны внутри компонета ячейки, можно прокинуть callback например\n */\n data: any;\n /**\n * Колонка доступна для редактирования\n */\n editable: boolean | ((coordinates: IColumnRow<any>) => boolean);\n /**\n * Компонент для рендера ячейки\n */\n cellComponent: any;\n /**\n * Компонент для рендера заголовка столбца ячейки\n */\n headCellComponent: any;\n /**\n * Custom head dropdown for column\n */\n headDropdownConfig: HeadDropdownTabConfig;\n /**\n * Дочерние колонки\n */\n override columns: TableColumn[] = [];\n /**\n * Aggregate type\n */\n aggregate: AggregationType;\n /**\n * Значение по умолчанию при создании записи\n */\n defaultValue: any;\n /**\n * Значение по умолчанию при создании записи\n */\n maxValue: number;\n /**\n * Значение по умолчанию при создании записи\n */\n minValue: number;\n /**\n * Максимальная длина\n */\n maxLength: number;\n /**\n * Поле обязательно для заполнения\n */\n required: boolean;\n /**\n * Функции валидации\n */\n validators: ValidatorFn[];\n /**\n * Инициализация из анонимного объекта\n */\n constructor(options?: ITableColumnOptions) {\n super(options);\n this.width = options?.width ?? 80;\n this.flex = options?.flex ?? 1;\n this.headCellClass = options?.headCellClass ?? [];\n this.cellClass = options?.cellClass ?? [];\n this.locked = options?.locked ?? false;\n this.parentName = options?.parentName;\n this.unit = options?.unit ?? '';\n this.unitMeasureParameterId = options?.unitMeasureParameterId;\n this.unitId = options?.unitId;\n this.data = options?.data;\n this.editable = options?.editable ?? true;\n this.headCellComponent = options?.headCellComponent;\n this.headDropdownConfig = options?.headDropdownConfig;\n this.cellComponent = options?.cellComponent;\n this.aggregate = options?.aggregate;\n this.defaultValue = options?.defaultValue;\n this.maxValue = options?.maxValue;\n this.minValue = options?.minValue;\n this.maxLength = options?.maxLength;\n this.required = options?.required;\n this.columns = options?.columns?.map((x) => new TableColumn(x)) ?? [];\n this.validators = options?.validators;\n }\n}\n","export class TableColumnStore {\n width: number;\n flex: number;\n locked: boolean;\n name: string;\n columns: TableColumnStore[];\n\n constructor(options?: {\n width?: number;\n flex?: number;\n sortOrder?: number;\n locked?: boolean;\n name?: string;\n columns?: any[];\n }) {\n if (options) {\n this.width = options?.width;\n this.flex = options?.flex;\n this.locked = options?.locked;\n this.name = options?.name;\n this.columns = options?.columns?.map((x) => new TableColumnStore(x));\n }\n }\n}\n","export class TableRow<T> {\n valid: boolean;\n data: T;\n\n constructor(options?: { valid?: boolean; data: T }) {\n this.valid = options?.valid;\n this.data = options?.data;\n }\n}\n","import { FilterState } from '../../filter/contarct/filter-state';\nimport { TableColumn } from '../contract/table-column';\nimport { SortParam } from '../../filter/contarct/sort-param';\nimport { FilterType } from '../../filter/enum/filter-type.enum';\nimport { SortEvent } from '../contract/sort-event';\n\nexport class StateUtil {\n static hasSortedColumns(state: FilterState): boolean {\n return state.sortParams && state.sortParams.length > 0;\n }\n\n static hasFilteredColumns(state: FilterState): boolean {\n let hasFilters = false;\n if (state.stringFilters && state.stringFilters.some((filter) => filter.value && filter.value.length)) {\n hasFilters = true;\n }\n if (state.listFilters && state.listFilters.some((filter) => filter.value && filter.value.length)) {\n hasFilters = true;\n }\n if (\n state.numericFilters &&\n state.numericFilters.some(\n (filter) =>\n filter &&\n filter.value &&\n ((filter.value.lessThan !== null && filter.value.lessThan !== undefined) ||\n (filter.value.greaterThan !== null && filter.value.greaterThan !== undefined) ||\n (filter.value.equalsTo !== null && filter.value.equalsTo !== undefined)),\n )\n ) {\n hasFilters = true;\n }\n if (\n state.dateFilters &&\n state.dateFilters.some(\n (filter) =>\n filter &&\n filter.value &&\n ((filter.value.lessThan !== null && filter.value.lessThan !== undefined) ||\n (filter.value.greaterThan !== null && filter.value.greaterThan !== undefined)),\n )\n ) {\n hasFilters = true;\n }\n\n return hasFilters;\n }\n\n static getSortState(state: FilterState, column: TableColumn): SortParam | null {\n if (state?.sortParams && state.sortParams.length) {\n const param = state.sortParams.find((x) => x.field === column.sortField);\n if (param) {\n return param;\n }\n }\n return null;\n }\n\n static isColumnFiltered(state: FilterState, column: TableColumn): boolean {\n if (!column.filterable) {\n return false;\n }\n let filtered = false;\n switch (column.filterType) {\n case FilterType.string:\n if (state?.stringFilters) {\n const filter = state.stringFilters.find((x) => x.field === column.filterField);\n if (filter && filter.value && filter.value.length) {\n filtered = true;\n }\n }\n break;\n case FilterType.list:\n if (state?.listFilters) {\n const filter = state.listFilters.find((x) => x.field === column.filterField);\n if (filter && filter.value && filter.value.length) {\n filtered = true;\n }\n }\n break;\n case FilterType.number:\n if (state?.numericFilters) {\n const filter = state.numericFilters.find((x) => x.field === column.filterField);\n if (\n filter &&\n filter.value &&\n ((filter.value.lessThan !== null && filter.value.lessThan !== undefined) ||\n (filter.value.greaterThan !== null && filter.value.greaterThan !== undefined) ||\n (filter.value.equalsTo !== null && filter.value.equalsTo !== undefined))\n ) {\n filtered = true;\n }\n }\n break;\n case FilterType.date:\n if (state?.dateFilters) {\n const filter = state.dateFilters.find((x) => x.field === column.filterField);\n if (\n filter &&\n filter.value &&\n ((filter.value.lessThan !== null && filter.value.lessThan !== undefined) ||\n (filter.value.greaterThan !== null && filter.value.greaterThan !== undefined))\n ) {\n filtered = true;\n }\n }\n break;\n }\n return filtered;\n }\n\n static sortColumn(sortEvent: SortEvent, state: FilterState): FilterState {\n const column = sortEvent.column;\n const shiftKey = sortEvent.shiftKey;\n const sort = state.sortParams.find((sortParam: SortParam) => sortParam.field === column.sortField);\n if (sort === null || sort === undefined) {\n if (!shiftKey) {\n state.sortParams.length = 0;\n }\n state.sortParams.push(new SortParam({ field: column.sortField, asc: true, order: 0 }));\n } else {\n if (!sort.asc) {\n state.sortParams = StateUtil.clearSortParam(sort, state.sortParams);\n } else {\n sort.asc = !sort.asc;\n if (!shiftKey) {\n state.sortParams = [sort];\n }\n }\n }\n return new FilterState(state);\n }\n\n static sortAsc(sortEvent: SortEvent, state: FilterState): FilterState {\n return StateUtil.sort(sortEvent, state, true);\n }\n\n static sortDesc(sortEvent: SortEvent, state: FilterState): FilterState {\n return StateUtil.sort(sortEvent, state, false);\n }\n\n static sort(sortEvent: SortEvent, state: FilterState, asc: boolean) {\n const column = sortEvent.column;\n const shiftKey = sortEvent.shiftKey;\n const sort = state.sortParams.find((sortParam: SortParam) => sortParam.field === column.sortField);\n if (sort) {\n state.sortParams = StateUtil.clearSortParam(sort, state.sortParams);\n }\n if (!shiftKey) {\n state.sortParams.length = 0;\n }\n state.sortParams.push(new SortParam({ field: column.sortField, asc: asc, order: 0 }));\n return new FilterState(state);\n }\n\n static clearSortParam(sort: SortParam, sortParams: SortParam[]) {\n const index = sortParams.indexOf(sort);\n sortParams.splice(index, 1);\n return sortParams;\n }\n\n static clearSort(column: TableColumn, state: FilterState): FilterState {\n state.sortParams = state.sortParams.filter((_) => _.field !== column.sortField);\n return new FilterState(state);\n }\n\n static clearAllSort(state: FilterState): FilterState {\n state.sortParams = [];\n return new FilterState(state);\n }\n}\n","import { Injectable } from '@angular/core';\nimport objectHash from 'object-hash';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\n\nimport { IDictionary } from '../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { ArrayUtil } from '../../../common/util/array-util';\nimport { boolOrFuncCallback } from '../../../util/bool-or-func';\nimport { DateUtil } from '../../../util/date-util';\nimport { DateFilter } from '../../filter/contarct/date-filter';\nimport { DateFilterValue } from '../../filter/contarct/date-filter-value';\nimport { FilterState } from '../../filter/contarct/filter-state';\nimport { ListFilter } from '../../filter/contarct/list-filter';\nimport { NumericFilter } from '../../filter/contarct/numeric-filter';\nimport { NumericFilterValue } from '../../filter/contarct/numeric-filter-value';\nimport { StringFilter } from '../../filter/contarct/string-filter';\nimport { FilterType } from '../../filter/enum/filter-type.enum';\nimport { ListFilterType } from '../../filter/enum/list-filter-type.enum';\nimport { ColumnReorderEvent } from '../contract/column-reorder-event';\nimport { ColumnResizeEvent } from '../contract/column-resize-event';\nimport { ICellCoordinates } from '../contract/i-cell-coordinates';\nimport { ICellEvent } from '../contract/i-cell-event';\nimport { ICellInstance, ICellInstanceValue, IColumnRow } from '../contract/i-cell-instance';\nimport { ICellValue } from '../contract/i-cell-value';\nimport { SortEvent } from '../contract/sort-event';\nimport { TableColumn } from '../contract/table-column';\nimport { TableColumnStore } from '../contract/table-column-store';\nimport { TableRow } from '../contract/table-row';\nimport { EditEvent } from '../enum/edit-event.enum';\nimport { EditType } from '../enum/edit-type.enum';\nimport { SelectType } from '../enum/select-type.enum';\nimport { StateUtil } from '../util/state-util';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TableService<T> {\n columns: Observable<TableColumn[]>;\n displayData: Observable<TableRow<T>[]>;\n dict: Observable<IDictionary<IIdName<any>[]>>;\n filterOptions: Observable<IDictionary<IIdName<any>[]>>;\n state: Observable<FilterState>;\n selectType: SelectType = SelectType.mouse;\n editRowStart: Observable<ICellEvent | null>;\n editRowStop: Observable<ICellCoordinates | null>;\n editCellStart: Observable<ICellEvent | null>;\n editCellStop: Observable<ICellCoordinates | null>;\n valueChanged: Observable<ICellCoordinates | null>;\n valueSet: Observable<ICellValue>;\n stateChanged: Observable<FilterState>;\n filterClear: Observable<TableColumn>;\n selectedRows: Observable<T[]>;\n activeRow: Observable<T | null>;\n hiddenColumns: Observable<string[]>;\n scrollIndex: Observable<number>;\n\n editType: EditType = EditType.cell;\n editEvent: EditEvent = EditEvent.doubleClick;\n rowEditable?: boolean | ((row: T) => boolean);\n trackRow: (index: number, row: T) => any = (index: number, row: T) => {\n const rowId = (row as any)['id'];\n if (rowId) {\n return rowId;\n }\n return index;\n };\n\n get dragSource() {\n return this._dragSource;\n }\n\n private initialColumnsHash = '';\n private initialColumns: TableColumn[] = [];\n private displayColumns: TableColumn[] = [];\n private _columns: BehaviorSubject<TableColumn[]> = new BehaviorSubject<TableColumn[]>([]);\n private _hiddenColumns = new BehaviorSubject<string[]>([]);\n private _displayData: BehaviorSubject<TableRow<T>[]> = new BehaviorSubject<TableRow<T>[]>([]);\n private _dict: BehaviorSubject<IDictionary<IIdName<any>[]>> = new BehaviorSubject<IDictionary<IIdName<any>[]>>({});\n private _filterOptions: BehaviorSubject<IDictionary<IIdName<any>[]>> = new BehaviorSubject<\n IDictionary<IIdName<any>[]>\n >({});\n private _state: BehaviorSubject<FilterState> = new BehaviorSubject<FilterState>(new FilterState());\n private _cookieName?: string;\n private _hiddenCookieName?: string;\n private _columnsCookieName?: string;\n private _editRowStart = new Subject<ICellEvent | null>();\n private _editRowStop = new Subject<ICellCoordinates | null>();\n private _editCellStart = new Subject<ICellEvent | null>();\n private _editCellStop = new Subject<ICellCoordinates | null>();\n private _valueChanged = new Subject<ICellCoordinates | null>();\n private _valueSet = new Subject<ICellValue>();\n private _stateChanged = new Subject<FilterState>();\n private _filterClear = new Subject<TableColumn>();\n private _dragSource?: TableColumn;\n private _selectedRows = new BehaviorSubject<T[]>([]);\n private _activeRow = new BehaviorSubject<T | null>(null);\n private _scrollIndex = new Subject<number | null>();\n\n private _currentEditCell?: ICellCoordinates;\n\n get currentEditCell() {\n return this._currentEditCell;\n }\n\n constructor() {\n this.columns = this._columns.asObservable();\n this.displayData = this._displayData.asObservable();\n this.dict = this._dict.asObservable();\n this.filterOptions = this._filterOptions.asObservable();\n this.state = this._state.asObservable();\n this.editRowStart = this._editRowStart.asObservable();\n this.editRowStop = this._editRowStop.asObservable();\n this.editCellStart = this._editCellStart.asObservable();\n this.editCellStop = this._editCellStop.asObservable();\n this.valueChanged = this._valueChanged.asObservable();\n this.valueSet = this._valueSet.asObservable();\n this.stateChanged = this._stateChanged.asObservable();\n this.filterClear = this._filterClear.asObservable();\n this.selectedRows = this._selectedRows.asObservable();\n this.activeRow = this._activeRow.asObservable();\n this.hiddenColumns = this._hiddenColumns.asObservable();\n this.scrollIndex = this._scrollIndex.asObservable();\n }\n\n setData(data: T[]): void {\n this._displayData.next(\n data?.map(\n (item) =>\n new TableRow<T>({\n data: item,\n }),\n ) ?? [],\n );\n }\n\n setDict(dict: IDictionary<IIdName<any>[]>): void {\n this._dict.next(dict);\n }\n\n setFilterOptions(filterOptions: IDictionary<IIdName<any>[]>): void {\n this._filterOptions.next(filterOptions);\n }\n\n setColumns(columns: TableColumn[]): void {\n this.initialColumns = columns ? columns.map((_) => new TableColumn(_)) : [];\n const excludeKeys = ['editable', 'cellComponent', 'headCellComponent', 'headDropdownConfig'];\n this.initialColumnsHash = objectHash(this.initialColumns, {\n algorithm: 'sha1',\n ignoreUnknown: true,\n excludeKeys: (key: string) => {\n return excludeKeys.indexOf(key) >= 0;\n },\n });\n const restored = this.restoreColumns();\n\n if (restored) {\n this.setDisplayColumns(restored);\n } else {\n this.setDisplayColumns(this.initialColumns);\n }\n }\n\n restoreDefaultColumns() {\n this.setDisplayColumns(this.initialColumns);\n this.clearColumnsState();\n }\n\n updateColumns(columns: TableColumn[]): void {\n this.setDisplayColumns(columns);\n this.saveColumnsState();\n }\n\n saveColumnsState() {\n if (this._columnsCookieName) {\n localStorage.setItem(\n this._columnsCookieName,\n JSON.stringify({\n hash: this.initialColumnsHash,\n columns: this.displayColumns.map((_) => new TableColumnStore(_)),\n }),\n );\n }\n }\n\n clearColumnsState() {\n if (this._columnsCookieName) {\n localStorage.removeItem(this._columnsCookieName);\n }\n }\n\n setDisplayColumns(columns: TableColumn[]): void {\n this.displayColumns = columns ? columns.map((_) => new TableColumn(_)) : [];\n this._columns.next(this.displayColumns);\n }\n\n restoreColumns() {\n if (this._columnsCookieName) {\n const savedColumns = JSON.parse(localStorage.getItem(this._columnsCookieName));\n if (savedColumns && savedColumns.hash === this.initialColumnsHash) {\n return this.restoreColumnsState(savedColumns.columns);\n }\n }\n return null;\n }\n\n restoreColumnsState(columns: TableColumnStore[]) {\n return columns.map((column: TableColumnStore) => {\n const found = ArrayUtil.findRecursive(this.initialColumns, (item) => item.name === column.name, 'columns');\n const resultColumn = new TableColumn(found);\n resultColumn.width = column.width;\n resultColumn.flex = column.flex;\n resultColumn.locked = column.locked;\n if (column.columns?.length > 0) {\n resultColumn.columns = this.restoreColumnsState(column.columns);\n }\n return resultColumn;\n });\n }\n\n setState(state: FilterState): void {\n if (this._cookieName) {\n state.save(this._cookieName);\n }\n this._state.next(state);\n }\n\n setCookieName(name: string): void {\n this._cookieName = name;\n this._hiddenCookieName = `${this._cookieName}_hidden_columns`;\n this._columnsCookieName = `${this._cookieName}_columns`;\n }\n\n restoreState(): void {\n let state: FilterState;\n if (this._cookieName && this._cookieName?.length > 0 && FilterState.restore(this._cookieName)) {\n let newState = Object.assign(this._state.value, FilterState.restore(this._cookieName));\n newState = DateUtil.convertDateStringsToDates(newState);\n state = new FilterState(newState);\n } else {\n state = new FilterState();\n }\n this.setState(state);\n }\n\n saveHiddenColumns(hiddenColumns: string[]): void {\n if (this._hiddenCookieName) {\n localStorage.setItem(this._hiddenCookieName, JSON.stringify(hiddenColumns));\n }\n }\n\n restoreHiddenColumns(): void {\n const hiddenColumns = localStorage.getItem(this._hiddenCookieName ?? '') || '[]';\n this._hiddenColumns.next(JSON.parse(hiddenColumns));\n }\n\n sortAsc(sortEvent: SortEvent): void {\n if (sortEvent.column.sortable) {\n this.setState(StateUtil.sortAsc(sortEvent, this._state.value));\n }\n }\n\n sortDesc(sortEvent: SortEvent): void {\n if (sortEvent.column.sortable) {\n this.setState(StateUtil.sortDesc(sortEvent, this._state.value));\n }\n }\n\n clearSort(column: TableColumn): void {\n this.setState(StateUtil.clearSort(column, this._state.value));\n }\n\n clearAllSort(): void {\n this.setState(StateUtil.clearAllSort(this._state.value));\n }\n\n clearFilter(column: TableColumn) {\n const state = this._state.value;\n if (column !== null && column !== undefined && column.filterable) {\n switch (column.filterType) {\n case FilterType.date:\n state.addDateFilter(\n new DateFilter({\n name: column.name,\n field: column.filterField,\n value: new DateFilterValue(),\n }),\n );\n break;\n case FilterType.string:\n state.addStringFilter(\n new StringFilter({\n name: column.name,\n field: column.filterField,\n value: '',\n }),\n );\n break;\n case FilterType.number:\n state.addNumericFilter(\n new NumericFilter({\n name: column.name,\n field: column.filterField,\n value: new NumericFilterValue(),\n }),\n );\n break;\n case FilterType.list:\n state.addListFilter(\n new ListFilter({\n name: column.name,\n field: column.filterField,\n value: [],\n type: ListFilterType.None,\n }),\n );\n break;\n }\n this.setState(new FilterState(state));\n }\n }\n\n clearAllFilters() {\n const state = this._state.value;\n state.stringFilters = [];\n state.listFilters = [];\n state.numericFilters = [];\n state.dateFilters = [];\n this.setState(new FilterState(state));\n }\n\n pinColumn(column: TableColumn): void {\n this.displayColumns.forEach((col: TableColumn) => {\n if (col.name === column.name) {\n col.locked = !col.locked;\n }\n });\n this.updateColumns(this.displayColumns);\n }\n\n dragStart(column: TableColumn): void {\n this._dragSource = column;\n }\n\n lockPreviousColumns(column: TableColumn, element: HTMLElement) {\n const flat = ArrayUtil.flatten(this.displayColumns, 'columns', true).sort(\n (a, b) => Number(b.locked) - Number(a.locked),\n );\n const index = flat.indexOf(column);\n const previous = flat.slice(0, index).filter((_) => _.flex > 0);\n if (previous?.length > 0) {\n const tableElement = this.getTableElement(element);\n previous.forEach((item: TableColumn) => {\n const itemCol = tableElement?.querySelector(`teta-head-cell[data-column=\"${item.name}\"]`) as HTMLElement;\n if (itemCol) {\n item.flex = 0;\n item.width = itemCol.clientWidth;\n }\n });\n }\n }\n\n resizeColumn(event: ColumnResizeEvent) {\n if (event.column !== null && event.column !== undefined) {\n event.column.width = event.newWidth < 50 ? 50 : event.newWidth;\n event.column.flex = 0;\n }\n this._columns.next(this.displayColumns);\n this.saveColumnsState();\n }\n\n autosizeColumn(column: TableColumn, target: HTMLElement) {\n const tableElement = this.getTableElement(target);\n this.setColumnAutoWidth(column, tableElement as HTMLElement);\n this._columns.next(this.displayColumns);\n this.saveColumnsState();\n }\n\n autosizeAllColumns(target: HTMLElement) {\n const tableElement = this.getTableElement(target);\n const flat = ArrayUtil.flatten(this.displayColumns, 'columns', true);\n flat.forEach((col) => this.setColumnAutoWidth(col, tableElement as HTMLElement));\n this._columns.next(this.displayColumns);\n this.saveColumnsState();\n }\n\n reorderColumn(column: TableColumn, insertBefore: boolean): void {\n if (!this._dragSource) {\n return;\n }\n const event = new ColumnReorderEvent(this._dragSource, column);\n if (event.source !== event.target) {\n const sourceParent = this.findParent(event.source, this.displayColumns);\n const targetParent = this.findParent(event.target, this.displayColumns);\n\n if (sourceParent && targetParent) {\n const sourceIndex = sourceParent.indexOf(event.source);\n sourceParent.splice(sourceIndex, 1);\n let targetIndex = targetParent.indexOf(event.target);\n if (!insertBefore) {\n targetIndex = targetIndex + 1;\n }\n targetParent.splice(targetIndex, 0, event.source);\n event.source.locked = event.target.locked;\n\n this.updateColumns(this.displayColumns);\n }\n }\n }\n\n getColumnParent(column: TableColumn) {\n return this.findParentColumn(column, this.displayColumns);\n }\n\n startEditRow(cellEvent: ICellEvent): void {\n if (this._currentEditCell?.row !== cellEvent?.row) {\n if (this._currentEditCell != null) {\n this._editRowStop.next(this._currentEditCell);\n }\n if (cellEvent === null) {\n this._editRowStart.next(cellEvent);\n this._currentEditCell = cellEvent;\n } else {\n if (boolOrFuncCallback<T>(this.rowEditable)(this.getRowByIndex(cellEvent?.row)?.data)) {\n this._editRowStart.next(cellEvent);\n this._currentEditCell = cellEvent;\n }\n }\n }\n }\n\n startEditCell(cellEvent: ICellEvent): void {\n if (this._currentEditCell?.column !== cellEvent?.column || this._currentEditCell?.row !== cellEvent?.row) {\n if (this._currentEditCell != null) {\n this._editCellStop.next(this._currentEditCell);\n }\n const column = this.getColumnByName(cellEvent?.column);\n if (\n boolOrFuncCallback<T>(this.rowEditable)(this.getRowByIndex(cellEvent?.row)?.data) &&\n boolOrFuncCallback<IColumnRow<T>>(column?.editable)({\n row: this.getRowByIndex(cellEvent?.row)?.data,\n column: column,\n })\n ) {\n this._editCellStart.next(cellEvent);\n this._currentEditCell = cellEvent;\n const key = (cellEvent?.event as KeyboardEvent)?.key;\n if (key && (key.length === 1 || (key === 'Delete' && !column.required))) {\n this.clearValue(cellEvent);\n }\n }\n }\n }\n\n setActiveRow(row: T): void {\n this._activeRow.next(row);\n }\n\n selectRows(rows: T[]): void {\n this._selectedRows.next(rows);\n }\n\n selectOrDeselectRow(row: T): void {\n if (this._selectedRows.value.indexOf(row) >= 0) {\n this._selectedRows.next(this._selectedRows.value.filter((_) => _ !== row));\n } else {\n this._selectedRows.next([...this._selectedRows.value, row]);\n }\n }\n\n selectRange(row: T): void {\n const index = this._displayData.value.findIndex((_) => _.data === row);\n let minIndex = this._selectedRows.value.reduce((prev, curr) => {\n const newIndex = this._displayData.value.findIndex((_) => _.data === curr);\n if (newIndex < prev) {\n return newIndex;\n }\n return prev;\n }, this._displayData.value.length);\n let maxIndex = this._selectedRows.value.reduce((prev, curr) => {\n const newIndex = this._displayData.value.findIndex((_) => _.data === curr);\n if (newIndex > prev) {\n return newIndex;\n }\n return prev;\n }, 0);\n if (index > maxIndex) {\n maxIndex = index;\n }\n if (index < minIndex) {\n minIndex = index;\n }\n if (minIndex < index && index < maxIndex) {\n maxIndex = index;\n }\n this._selectedRows.next([...this._displayData.value.slice(minIndex, maxIndex + 1).map((_) => _.data)]);\n }\n\n selectRow(row: T): void {\n if (this.selectType === SelectType.none) {\n return;\n }\n this._selectedRows.next([...this._selectedRows.value, row]);\n }\n\n deselectRow(row: T): void {\n if (this.selectType === SelectType.none) {\n return;\n }\n this._selectedRows.next(this._selectedRows.value.filter((_) => _ !== row));\n }\n\n selectAll() {\n this._selectedRows.next(this._displayData.value.map((_) => _.data));\n }\n\n deselectAll() {\n this._selectedRows.next([]);\n }\n\n allRowsSelected(): boolean | null {\n if (\n this._displayData.value?.length &&\n this._selectedRows.value?.length &&\n this._displayData.value.every((_) => this._selectedRows.value.findIndex((selected) => selected === _.data) >= 0)\n ) {\n return true;\n } else if (this._selectedRows.value == null || this._selectedRows.value.length === 0) {\n return false;\n }\n return null;\n }\n\n setHiddenColumns(value: string[]) {\n this.saveHiddenColumns(value);\n this._hiddenColumns.next(value);\n }\n\n columnIsHidden(column: TableColumn) {\n return this._hiddenColumns.value.indexOf(column.name) >= 0;\n }\n\n changeValue(coordinates: ICellCoordinates): void {\n this._valueChanged.next(coordinates);\n }\n\n setValue(cellValue: ICellValue): void;\n setValue(cellValue: ICellInstanceValue<T>): void;\n setValue(cellValue: ICellValue | ICellInstanceValue<T>): void {\n let value: ICellValue;\n if (typeof cellValue.row === 'object' && typeof cellValue.column === 'object') {\n value = {\n row: this.getRowIndex(cellValue.row.data),\n column: cellValue.column.name,\n value: cellValue.value,\n };\n } else {\n value = cellValue as ICellValue;\n }\n this._valueSet.next(value);\n }\n\n getRowByIndex(rowIndex?: number): TableRow<T> | undefined {\n if (rowIndex !== null && rowIndex !== undefined) {\n return this._displayData?.value[rowIndex];\n }\n return undefined;\n }\n\n getRowIndex(row: T) {\n return this._displayData.value.findIndex((_) => _.data === row);\n }\n\n getEventCell(event: Event): HTMLElement | null {\n return event.composedPath().find((target: any) => {\n return target.tagName?.toLowerCase() === 'teta-cell';\n }) as HTMLElement;\n }\n\n getEventRow(event: Event): HTMLElement | null {\n return event.composedPath().find((target: any) => {\n return target?.getAttribute && target?.getAttribute('data-row');\n }) as HTMLElement;\n }\n\n getNextEditableCell(coords: ICellCoordinates): ICellCoordinates | null {\n const nextCell = this.getNextCell(coords);\n if (!nextCell) {\n return null;\n }\n const column = this.getColumnByName(nextCell?.column);\n if (\n boolOrFuncCallback<ICellInstance<T>>(column.editable)({\n row: this.getRowByIndex(nextCell.row),\n column,\n })\n ) {\n return nextCell;\n }\n return this.getNextEditableCell(nextCell);\n }\n\n getPreviousEditableCell(coords: ICellCoordinates): ICellCoordinates | null {\n const prevCell = this.getPreviousCell(coords);\n if (!prevCell) {\n return null;\n }\n const column = this.getColumnByName(prevCell?.column);\n if (\n boolOrFuncCallback<ICellInstance<T>>(column.editable)({\n row: this.getRowByIndex(prevCell.row),\n column,\n })\n ) {\n return prevCell;\n }\n return this.getPreviousEditableCell(prevCell);\n }\n\n getNextCell(coords: ICellCoordinates): ICellCoordinates | null {\n const columns = this.getFlatColumns();\n let colIndex = columns.findIndex((col: TableColumn) => col.name === coords?.column);\n let rowIndex = coords?.row;\n if (colIndex >= 0 && rowIndex >= 0) {\n if (colIndex === columns.length - 1) {\n colIndex = 0;\n rowIndex = rowIndex + 1;\n } else {\n colIndex = colIndex + 1;\n }\n return {\n column: columns[colIndex]?.name,\n row: rowIndex,\n };\n }\n return null;\n }\n\n getPreviousCell(coords: ICellCoordinates): ICellCoordinates | null {\n const columns = this.getFlatColumns();\n let colIndex = columns.findIndex((col: TableColumn) => col.name === coords?.column);\n let rowIndex = coords?.row;\n if (colIndex >= 0 && rowIndex >= 0) {\n if (colIndex === 0) {\n colIndex = columns.length - 1;\n rowIndex = rowIndex - 1;\n } else {\n colIndex = colIndex - 1;\n }\n return {\n column: columns[colIndex]?.name,\n row: rowIndex,\n };\n }\n return null;\n }\n\n getNextRowCell(coords: ICellCoordinates): ICellCoordinates | null {\n const columns = this.getFlatColumns();\n const colIndex = columns.findIndex((col: TableColumn) => col.name === coords?.column);\n const rowIndex = coords?.row;\n if (colIndex >= 0 && rowIndex >= 0 && rowIndex < this._displayData.value.length - 1) {\n return {\n column: columns[colIndex]?.name,\n row: rowIndex + 1,\n };\n }\n return null;\n }\n\n getPreviousRowCell(coords: ICellCoordinates) {\n const columns = this.getFlatColumns();\n const colIndex = columns.findIndex((col: TableColumn) => col.name === coords?.column);\n const rowIndex = coords?.row;\n if (colIndex >= 0 && rowIndex > 1) {\n return {\n column: columns[colIndex]?.name,\n row: rowIndex - 1,\n };\n }\n return null;\n }\n\n getColumnByName(columnName: string) {\n return ArrayUtil.findRecursive(this.displayColumns, (iterableNode) => columnName === iterableNode.name, 'columns');\n }\n\n scrollToIndex(index: number) {\n this._scrollIndex.next(null);\n this._scrollIndex.next(index);\n }\n\n getVisibleColumns() {\n const visible = ArrayUtil.flatten(this._columns.value, 'columns', true).filter(\n (_) => this._hiddenColumns.value.indexOf(_.name) < 0,\n );\n return visible.sort((a, b) => Number(b.locked) - Number(a.locked));\n }\n\n getCellInstance(coords: ICellCoordinates): ICellInstance<T> | null {\n return coords\n ? {\n row: this.getRowByIndex(coords.row),\n column: this.getColumnByName(coords.column),\n }\n : null;\n }\n\n private getFlatColumns() {\n return ArrayUtil.flatten(this.displayColumns, 'columns', true).sort((a, b) => Number(b.locked) - Number(a.locked));\n }\n\n private findParent(column: TableColumn, columns: TableColumn[]): TableColumn[] | null {\n const found = columns.find((x) => x.name === column.name);\n if (found !== null && found !== undefined) {\n return columns;\n }\n for (let i = 0, l = columns.length; i < l; i++) {\n const col = columns[i];\n if (col.columns && col.columns.length) {\n const result = this.findParent(column, col.columns);\n if (result !== null && result !== undefined) {\n return result;\n }\n }\n }\n return null;\n }\n\n private findParentColumn(column: TableColumn, columns: TableColumn[]): TableColumn | null {\n const found = columns.find((x) => x.columns.indexOf(column) >= 0);\n if (found !== null && found !== undefined) {\n return found;\n }\n for (let i = 0, l = columns.length; i < l; i++) {\n const col = columns[i];\n if (col.columns && col.columns.length) {\n const result = this.findParentColumn(column, col.columns);\n if (result !== null && result !== undefined) {\n return result;\n }\n }\n }\n return null;\n }\n\n getTableElement(element: HTMLElement) {\n return element.closest('teta-table');\n }\n\n private setColumnAutoWidth(column: TableColumn, table: HTMLElement) {\n const cells = table.querySelectorAll(`teta-cell[data-column=\"${column.name}\"] .cell-text`);\n let maxWidth = 0;\n cells.forEach((cell) => {\n if (cell.scrollWidth > maxWidth) {\n maxWidth = cell.scrollWidth;\n }\n });\n const aggCells = table.querySelectorAll(`.aggregate-cell[data-column=\"${column.name}\"] .cell-text`);\n aggCells?.forEach((cell) => {\n if (cell.scrollWidth > maxWidth) {\n maxWidth = cell.scrollWidth;\n }\n });\n column.flex = 0;\n column.width = maxWidth + 20;\n }\n\n private clearValue(event: ICellEvent) {\n this.setValue({\n ...event,\n value: null,\n });\n }\n}\n","export enum AggregationType {\n none,\n sum,\n avg,\n min,\n max,\n}\n","import { ChangeDetectorRef, Component, HostBinding, inject, OnDestroy, OnInit } from '@angular/core';\nimport { ControlContainer, FormControl, FormGroup, NgForm } from '@angular/forms';\nimport { takeWhile } from 'rxjs/operators';\n\nimport { IDictionary } from '../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { boolOrFuncCallback } from '../../../util/bool-or-func';\nimport { FormsUtil } from '../../../util/forms-util';\nimport { ICellCoordinates } from '../contract/i-cell-coordinates';\nimport { ICellValue } from '../contract/i-cell-value';\nimport { TableColumn } from '../contract/table-column';\nimport { TableRow } from '../contract/table-row';\nimport { TableService } from '../service/table.service';\n\n@Component({\n template: '',\n standalone: false,\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport abstract class CellComponentBase<T> implements OnInit, OnDestroy {\n @HostBinding('class.cell-component') private readonly cellClass = true;\n\n @HostBinding('class.cell-invalid') get cellInvalid() {\n const control = this.formGroup?.get(this.column?.name);\n if (control) {\n return control.invalid;\n }\n return false;\n }\n\n private _formGroup = inject(ControlContainer, {\n optional: true,\n });\n\n get control(): FormControl {\n return this.formGroup?.get(this.column?.name) as FormControl;\n }\n\n protected _column: TableColumn;\n\n set column(column: TableColumn) {\n this._column = column;\n this.setupControl();\n }\n\n get column() {\n return this._column;\n }\n\n protected _row: TableRow<T>;\n set row(row: TableRow<T>) {\n this._row = row;\n this.setupControl();\n }\n\n get row() {\n return this._row;\n }\n\n filterOptions: IIdName<any>[] = [];\n dict: IDictionary<IIdName<any>[]> = {};\n\n get formGroup(): FormGroup {\n if (this._formGroup instanceof FormGroup) {\n return this._formGroup;\n }\n if (this._formGroup instanceof NgForm) {\n return this._formGroup.form;\n }\n return null;\n }\n\n protected _edit: boolean;\n\n get edit() {\n return this._edit && this.editable;\n }\n\n get editable() {\n return boolOrFuncCallback(this.column.editable)({\n column: this.column,\n row: this.row.data,\n });\n }\n\n get index() {\n return this.svc.getRowIndex(this.row.data);\n }\n\n protected _alive = true;\n\n protected constructor(\n protected svc: TableService<T>,\n protected cdr: ChangeDetectorRef,\n ) {}\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n\n ngOnInit(): void {\n this.init();\n\n this.formGroup?.controls[this.column.name]?.valueChanges.pipe(takeWhile(() => this._alive)).subscribe((value) => {\n this.formGroup.updateValueAndValidity();\n this.row.valid = this.formGroup?.valid;\n this.row.data[this.column.name] = this.control.value;\n this.svc.changeValue({\n column: this.column.name,\n row: this.index,\n });\n });\n }\n\n private init(): void {\n this.svc.editRowStart.pipe(takeWhile((_) => this._alive)).subscribe((cell: ICellCoordinates) => {\n if (this.index === cell?.row && !this._edit) {\n this.start(cell, 'row');\n }\n if (this.index !== cell?.row && this._edit) {\n this.stop();\n }\n });\n\n this.svc.editCellStart.pipe(takeWhile((_) => this._alive)).subscribe((cell: ICellCoordinates) => {\n if (this.index === cell?.row && this.column.name === cell?.column && !this._edit) {\n this.start(cell, 'cell');\n }\n if ((this.index !== cell?.row || this.column.name !== cell?.column) && this._edit) {\n this.stop();\n }\n });\n\n this.svc.valueSet.pipe(takeWhile((_) => this._alive)).subscribe((cellValue: ICellValue) => {\n if (this.index === cellValue.row && this.column.name === cellValue.column) {\n this.row.data[this.column.name] = cellValue.value;\n this.setupControl();\n\n for (const controlsKey in this.formGroup.controls) {\n this.formGroup.controls[controlsKey].updateValueAndValidity({\n emitEvent: false,\n onlySelf: true,\n });\n }\n\n this.formGroup.updateValueAndValidity();\n this.row.valid = this.formGroup.valid;\n this.cdr.detectChanges();\n this.cdr.markForCheck();\n }\n });\n }\n\n abstract startEdit(initiator: ICellCoordinates, type: 'cell' | 'row'): void;\n\n abstract stopEdit(): void;\n\n private setupControl() {\n if (!this.column) {\n return;\n }\n if (!this.control) {\n this.formGroup.registerControl(this.column.name, FormsUtil.initControlFromColumn(this.column, this.row?.data));\n } else {\n this.control.patchValue(this.row?.data[this.column.name], {\n emitEvent: false,\n });\n }\n if (this.column && this.row) {\n if (this.editable) {\n this.control.enable({ emitEvent: false });\n } else {\n this.control.disable({ emitEvent: false });\n }\n }\n }\n\n private start(initiator: ICellCoordinates, type: 'cell' | 'row') {\n this._edit = true;\n this.cdr.detectChanges();\n this.startEdit(initiator, type);\n }\n\n private stop() {\n this._edit = false;\n this.formGroup.updateValueAndValidity();\n this.row.valid = this.formGroup?.valid;\n this.stopEdit();\n this.cdr.markForCheck();\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnInit, ViewChild } from '@angular/core';\n\nimport { FormsUtil } from '../../../../util/forms-util';\nimport { CellComponentBase } from '../../base/cell-component-base';\nimport { ICellCoordinates } from '../../contract/i-cell-coordinates';\nimport { TableService } from '../../service/table.service';\nimport { NumberPipe } from '../../../../pipe/number-pipe/number.pipe';\nimport { OnlyNumberDirective } from '../../../../directive/only-number/only-number.directive';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'teta-numeric-cell',\n templateUrl: './numeric-cell.component.html',\n styleUrls: ['./numeric-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [FormsUtil.formProvider],\n imports: [FormsModule, OnlyNumberDirective, ReactiveFormsModule, NumberPipe]\n})\nexport class NumericCellComponent<T> extends CellComponentBase<T> implements OnInit {\n @ViewChild('input', { static: false }) input: ElementRef;\n\n constructor(\n protected override svc: TableService<T>,\n protected override cdr: ChangeDetectorRef,\n ) {\n super(svc, cdr);\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n }\n\n startEdit(initiator: ICellCoordinates, type: 'cell' | 'row'): void {\n if (initiator?.column === this.column.name) {\n this.cdr.detectChanges();\n this.input.nativeElement?.focus();\n }\n }\n\n stopEdit(): void {\n this.cdr.markForCheck();\n }\n}\n","<span [style.display]=\"edit ? 'none' : 'block'\" class=\"cell-text\" [class.cell-text_disabled]=\"!editable\">\n {{ control?.value | tetaNumber: 2 }}\n</span>\n@if (edit) {\n <input\n #input\n [tetaOnlyNumber]=\"true\"\n type=\"text\"\n class=\"input row_auto border-radius-0\"\n (keydown.enter)=\"input.blur()\"\n [formControl]=\"control\"\n />\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';\n\nimport { DatePickerComponent } from '../../../date-picker/date-picker/date-picker.component';\nimport { CellComponentBase } from '../../base/cell-component-base';\nimport { ICellCoordinates } from '../../contract/i-cell-coordinates';\nimport { TableService } from '../../service/table.service';\nimport { DatePipe } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'teta-date-cell',\n templateUrl: './date-cell.component.html',\n styleUrls: ['./date-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DatePickerComponent, FormsModule, ReactiveFormsModule, DatePipe]\n})\nexport class DateCellComponent<T> extends CellComponentBase<T> implements OnInit {\n @ViewChild('input', { static: false }) input: DatePickerComponent;\n\n constructor(\n protected override svc: TableService<T>,\n protected override cdr: ChangeDetectorRef,\n ) {\n super(svc, cdr);\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n }\n\n startEdit(initiator: ICellCoordinates, type: 'cell' | 'row'): void {\n if (initiator?.column === this.column.name) {\n setTimeout(() => {\n this.input?.focus();\n this.cdr.markForCheck();\n }, 0);\n }\n }\n\n stopEdit(): void {\n this.cdr.markForCheck();\n }\n}\n","<span [style.display]=\"edit ? 'none' : 'block'\" class=\"cell-text\" [class.cell-text_disabled]=\"!editable\">\n {{ control?.value | date: 'dd.MM.yyyy' }}\n</span>\n@if (edit) {\n <teta-date-picker\n class=\"datepicker-table\"\n #input\n [allowNull]=\"!column.required\"\n [appendToBody]=\"true\"\n [showTime]=\"false\"\n [formControl]=\"control\"\n ></teta-date-picker>\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';\n\nimport { IIdName } from '../../../../common/contract/i-id-name';\nimport { VerticalAlign } from '../../../../common/enum/vertical-align.enum';\nimport { SelectComponent } from '../../../select/select/select.component';\nimport { CellComponentBase } from '../../base/cell-component-base';\nimport { ICellCoordinates } from '../../contract/i-cell-coordinates';\nimport { TableService } from '../../service/table.service';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { IconComponent } from '../../../icon/icon/icon.component';\n\n@Component({\n selector: 'teta-list-cell',\n templateUrl: './list-cell.component.html',\n styleUrls: ['./list-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SelectComponent, FormsModule, ReactiveFormsModule, IconComponent],\n})\nexport class ListCellComponent<T> extends CellComponentBase<T> implements OnInit {\n get displayFilterOptions(): IIdName<any>[] {\n if (this.column?.parentName?.length > 0) {\n const parentValue = this.row.data[this.column.parentName];\n if (parentValue) {\n return this.filterOptions.filter((_) => _.parentId === parentValue);\n }\n }\n return this.filterOptions;\n }\n\n @ViewChild('input', { static: false }) input: SelectComponent;\n\n verticalAlign = VerticalAlign;\n\n constructor(\n protected override svc: TableService<T>,\n protected override cdr: ChangeDetectorRef,\n ) {\n super(svc, cdr);\n }\n\n startEdit(initiator: ICellCoordinates, type: 'cell' | 'row'): void {\n if (initiator?.column === this.column.name) {\n setTimeout(() => {\n this.input?.focus();\n this.cdr.markForCheck();\n }, 0);\n }\n }\n\n stopEdit() {\n this.cdr.markForCheck();\n }\n\n override ngOnInit() {\n super.ngOnInit();\n }\n\n protected getValue(value) {\n if (this.filterOptions === null || this.filterOptions === undefined || !(this.filterOptions instanceof Array)) {\n return '';\n }\n const item = this.filterOptions.find((option) => option.id === value);\n if (item === null || item === undefined) {\n return '';\n }\n return item.name;\n }\n}\n","<span [style.display]=\"edit ? 'none' : 'flex'\" class=\"cell-text justify-content-between\"\n [class.cell-text_disabled]=\"!editable\">\n <span class=\"row_auto overflow-hidden text-overflow-ellipsis\">{{ getValue(control.value) }}</span>\n @if (column.editable) {\n <teta-icon [name]=\"'arrowDownSmall'\" [palette]=\"'text'\"></teta-icon>\n }\n</span>\n@if (edit) {\n <teta-select\n #input\n class=\"row_auto select-table\"\n [allowNull]=\"!column.required\"\n [verticalAlign]=\"verticalAlign.auto\"\n [appendToBody]=\"true\"\n [options]=\"displayFilterOptions\"\n [valueRef]=\"'id'\"\n [textRef]=\"'name'\"\n [searchRef]=\"displayFilterOptions?.length > 20 ? 'name' : ''\"\n [formControl]=\"control\"\n >\n </teta-select>\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnInit, ViewChild } from '@angular/core';\n\nimport { Align } from '../../../../common/enum/align.enum';\nimport { CellComponentBase } from '../../base/cell-component-base';\nimport { ICellCoordinates } from '../../contract/i-cell-coordinates';\nimport { TableService } from '../../service/table.service';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { HintDirective } from '../../../../directive/hint/hint.directive';\n\n@Component({\n selector: 'teta-string-cell',\n templateUrl: './string-cell.component.html',\n styleUrls: ['./string-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [HintDirective, FormsModule, ReactiveFormsModule]\n})\nexport class StringCellComponent<T> extends CellComponentBase<T> implements OnInit {\n align = Align;\n @ViewChild('input', { static: false }) input: ElementRef;\n\n constructor(\n public override svc: TableService<T>,\n public override cdr: ChangeDetectorRef,\n ) {\n super(svc, cdr);\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n }\n\n startEdit(initiator: ICellCoordinates, type: 'cell' | 'row'): void {\n if (initiator?.column === this.column.name) {\n this.cdr.detectChanges();\n this.input.nativeElement?.focus();\n this.input.nativeElement?.select();\n }\n }\n\n stopEdit(): void {\n this.cdr.detectChanges();\n }\n}\n","<span\n [style.display]=\"edit ? 'none' : 'block'\"\n class=\"cell-text\"\n [tetaHint]=\"row[column.name]\"\n [align]=\"align.auto\"\n [appendToBody]=\"true\"\n [overflownOnly]=\"true\"\n [class.cell-text_disabled]=\"!editable\"\n>\n {{ control.value }}\n</span>\n@if (edit) {\n <input\n #input\n type=\"text\"\n class=\"input row_auto border-radius-0\"\n (keydown.enter)=\"input.blur()\"\n [formControl]=\"control\"\n />\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnInit, ViewChild } from '@angular/core';\n\nimport { CellComponentBase } from '../../base/cell-component-base';\nimport { ICellCoordinates } from '../../contract/i-cell-coordinates';\nimport { TableService } from '../../service/table.service';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CheckboxComponent } from '../../../checkbox/checkbox/checkbox.component';\n\n@Component({\n selector: 'teta-boolean-cell',\n templateUrl: './boolean-cell.component.html',\n styleUrls: ['./boolean-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CheckboxComponent, FormsModule, ReactiveFormsModule]\n})\nexport class BooleanCellComponent<T> extends CellComponentBase<T> implements OnInit {\n @ViewChild('input', { static: false }) input: ElementRef;\n\n constructor(\n public override svc: TableService<T>,\n public override cdr: ChangeDetectorRef,\n ) {\n super(svc, cdr);\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n }\n\n startEdit(initiator: ICellCoordinates, type: 'cell' | 'row'): void {\n if (initiator?.column === this.column.name) {\n this.cdr.markForCheck();\n setTimeout(() => {\n this.input?.nativeElement.focus();\n }, 0);\n }\n }\n\n stopEdit(): void {\n this.cdr.markForCheck();\n }\n}\n","<span [style.display]=\"edit ? 'none' : 'block'\" class=\"cell-text\" [class.cell-text_disabled]=\"!editable\">\n {{ control?.value }}\n</span>\n@if (edit) {\n <teta-checkbox #input [binary]=\"true\" [formControl]=\"control\"></teta-checkbox>\n}\n","import { FilterType } from '../../filter/enum/filter-type.enum';\nimport { Type } from '@angular/core';\nimport { NumericCellComponent } from '../default/numeric-cell/numeric-cell.component';\nimport { DateCellComponent } from '../default/date-cell/date-cell.component';\nimport { ListCellComponent } from '../default/list-cell/list-cell.component';\nimport { StringCellComponent } from '../default/string-cell/string-cell.component';\nimport { TableColumn } from './table-column';\nimport { BooleanCellComponent } from '../default/boolean-cell/boolean-cell.component';\n\nconst cellComponentsMap: Map<FilterType, Type<any>> = new Map<FilterType, Type<any>>()\n .set(FilterType.number, NumericCellComponent)\n .set(FilterType.date, DateCellComponent)\n .set(FilterType.list, ListCellComponent)\n .set(FilterType.string, StringCellComponent)\n .set(FilterType.boolean, BooleanCellComponent)\n .set(FilterType.custom, StringCellComponent);\n\nexport const getCellComponent = (column: TableColumn): Type<any> =>\n cellComponentsMap.has(column.filterType) ? cellComponentsMap.get(column.filterType) : StringCellComponent;\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { IDictionary } from '../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { FormsUtil } from '../../../util/forms-util';\nimport { CellComponentBase } from '../base/cell-component-base';\nimport { getCellComponent } from '../contract/cell-components-map';\nimport { TableColumn } from '../contract/table-column';\nimport { TableRow } from '../contract/table-row';\n\n@Component({\n selector: 'teta-cell-host',\n template: '',\n styleUrls: ['./cell-host.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [FormsUtil.formProvider],\n standalone: true,\n})\nexport class CellHostComponent<T> implements OnInit, OnChanges {\n @Input() column: TableColumn;\n @Input() row: TableRow<T>;\n @Input() filterOptions: IIdName<any>[];\n @Input() dict: IDictionary<IIdName<any>[]>;\n private _init = false;\n private _componentRef: ComponentRef<CellComponentBase<T>>;\n\n constructor(private viewContainerRef: ViewContainerRef) {}\n\n ngOnInit(): void {\n if (!Object.prototype.isPrototypeOf.call(CellComponentBase, this.column.cellComponent)) {\n this.column.cellComponent = getCellComponent(this.column);\n }\n this._componentRef = this.viewContainerRef.createComponent(this.column.cellComponent);\n this._componentRef.instance.column = this.column;\n this._componentRef.instance.row = this.row;\n this._componentRef.instance.filterOptions = this.filterOptions;\n this._componentRef.instance.dict = this.dict;\n this._init = true;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this._init) {\n if (Object.prototype.hasOwnProperty.call(changes, 'row')) {\n this._componentRef.instance.row = this.row;\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'column')) {\n this._componentRef.instance.column = this.column;\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'filterOptions')) {\n this._componentRef.instance.filterOptions = this.filterOptions;\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'dict')) {\n this._componentRef.instance.dict = this.dict;\n }\n this._componentRef.injector.get(ChangeDetectorRef).markForCheck();\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\nimport { IDictionary } from '../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { TableColumn } from '../contract/table-column';\nimport { TableRow } from '../contract/table-row';\nimport { CellHostComponent } from '../cell-host/cell-host.component';\n\n@Component({\n selector: 'teta-cell',\n templateUrl: './cell.component.html',\n styleUrls: ['./cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CellHostComponent]\n})\nexport class CellComponent<T> {\n @Input() column: TableColumn;\n @Input() filterOptions: IIdName<any>[];\n @Input() dict: IDictionary<IIdName<any>[]>;\n @Input() row: TableRow<T>;\n @HostBinding('class.cell') private readonly tableCellClass = true;\n}\n","<teta-cell-host [row]=\"row\" [column]=\"column\" [filterOptions]=\"filterOptions\" [dict]=\"dict\"></teta-cell-host>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { TableService } from '../service/table.service';\nimport { takeWhile } from 'rxjs/operators';\nimport { FormsModule } from '@angular/forms';\nimport { CheckboxComponent } from '../../checkbox/checkbox/checkbox.component';\n\n@Component({\n selector: 'teta-selection-cell',\n templateUrl: './selection-cell.component.html',\n styleUrls: ['./selection-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CheckboxComponent, FormsModule]\n})\nexport class SelectionCellComponent<T> implements OnInit, OnDestroy {\n @Input() row: T;\n\n @HostBinding('class.cell') private readonly tableCellClass = true;\n selectedRows: T[] = [];\n\n private _alive = true;\n\n constructor(\n private _svc: TableService<T>,\n private _cdr: ChangeDetectorRef,\n ) {}\n\n selectRow(value: boolean) {\n if (value) {\n this._svc.selectRow(this.row);\n } else {\n this._svc.deselectRow(this.row);\n }\n }\n\n ngOnInit(): void {\n this._svc.selectedRows.pipe(takeWhile((_) => this._alive)).subscribe((_) => {\n this.selectedRows = _;\n this._cdr.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","<teta-checkbox\n [binary]=\"true\"\n [noLabel]=\"true\"\n [ngModel]=\"selectedRows?.indexOf(row) >= 0\"\n (ngModelChange)=\"selectRow($event)\"\n (click)=\"$event.stopPropagation()\"\n></teta-checkbox>\n","import { ChangeDetectionStrategy, Component, inject, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { ControlContainer, FormControl, FormGroup, NgForm, UntypedFormControl } from '@angular/forms';\nimport { TableRow } from '../contract/table-row';\n\n@Component({\n selector: 'teta-table-row',\n imports: [],\n templateUrl: './table-row.component.html',\n styleUrl: './table-row.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableRowComponent<T> implements OnChanges {\n @Input() row: TableRow<T>;\n\n private _formGroup = inject(ControlContainer, {\n optional: true,\n });\n\n get control(): FormControl {\n return this.formGroup?.get('id') as FormControl;\n }\n\n get formGroup(): FormGroup {\n if (this._formGroup instanceof FormGroup) {\n return this._formGroup;\n }\n if (this._formGroup instanceof NgForm) {\n return this._formGroup.form;\n }\n return null;\n }\n\n constructor() {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (!this.control) {\n this.formGroup.registerControl('id', new UntypedFormControl(this.row?.data['id']));\n } else {\n this.control.patchValue(this.row?.data['id'], {\n emitEvent: false,\n });\n }\n }\n}\n","<ng-content></ng-content>\n","import { CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll, CdkVirtualForOf } from '@angular/cdk/scrolling';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n input,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Type,\n ViewChild,\n} from '@angular/core';\nimport { combineLatest, Observable } from 'rxjs';\nimport { takeWhile } from 'rxjs/operators';\n\nimport { IDictionary } from '../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { ArrayUtil } from '../../../common/util/array-util';\nimport { TetaConfigService } from '../../../locale/teta-config.service';\nimport { TetaLocalisation } from '../../../locale/teta-localisation';\nimport { DetailComponentBase } from '../base/detail-component-base';\nimport { TableColumn } from '../contract/table-column';\nimport { TableRow } from '../contract/table-row';\nimport { AggregationType } from '../enum/aggregation-type.enum';\nimport { SelectType } from '../enum/select-type.enum';\nimport { TableService } from '../service/table.service';\nimport { NumberPipe } from '../../../pipe/number-pipe/number.pipe';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { CellComponent } from '../cell/cell.component';\nimport { SelectionCellComponent } from '../selection-cell/selection-cell.component';\nimport { FormsModule } from '@angular/forms';\nimport { NgTemplateOutlet, NgClass, AsyncPipe } from '@angular/common';\nimport { ScrollableDirective } from '../../../directive/scrollable/scrollable.directive';\nimport { ScrollableComponent } from '../../../directive/scrollable/scrollable/scrollable.component';\nimport { TableRowComponent } from '../table-row/table-row.component';\n\n@Component({\n selector: 'teta-table-body',\n templateUrl: './table-body.component.html',\n styleUrls: ['./table-body.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ScrollableComponent,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n ScrollableDirective,\n CdkVirtualForOf,\n NgTemplateOutlet,\n FormsModule,\n NgClass,\n SelectionCellComponent,\n CellComponent,\n IconComponent,\n AsyncPipe,\n NumberPipe,\n TableRowComponent,\n ]\n})\nexport class TableBodyComponent<T> implements OnInit, OnDestroy {\n @Input() virtual: boolean;\n @Input() activeRow: T;\n @Input() selectedRows: T[] = [];\n @Input() additionalComponent: Type<DetailComponentBase<T>>;\n @Input() aggregate: boolean;\n @Input() selectType: SelectType;\n @Input() rowClass: (row: T, index?: number) => string;\n @Input() trackRow: (index: number, row: T) => any;\n @Input() trackColumns: (index: number, column: TableColumn) => any;\n @ViewChild(CdkVirtualScrollViewport, { static: false })\n viewport: CdkVirtualScrollViewport;\n\n rowHeight = input<number>(28);\n\n @HostBinding('class.table-body') private readonly tableBodyClass = true;\n @Output() scrollChange = new EventEmitter<Event>();\n\n set data(data: TableRow<T>[]) {\n this._data = data;\n }\n\n get data() {\n return this._data;\n }\n\n dict: IDictionary<IIdName<any>[]>;\n locked: TableColumn[] = [];\n unlocked: TableColumn[] = [];\n selectTypeEnum = SelectType;\n aggregationType = AggregationType;\n lockedFlex: number;\n lockedWidth: number;\n totalFlex: number;\n totalWidth: number;\n\n private _columns: TableColumn[] = [];\n private _alive = true;\n private _data: TableRow<T>[];\n private _hiddenColumns: string[] = [];\n private _obs: ResizeObserver;\n\n set columns(columns: TableColumn[]) {\n this._columns = columns;\n this.locked = this._columns?.filter((_) => _.locked === true);\n this.unlocked = this._columns?.filter((_) => _.locked === false);\n const startWidth = this.selectType === SelectType.checkBox ? 28 : 0;\n this.lockedFlex = this.locked.reduce((prev: number, curr: TableColumn) => prev + curr.flex, 0);\n this.lockedWidth = this.locked.reduce((prev: number, curr: TableColumn) => prev + curr.width, startWidth);\n this.totalFlex = this._columns.reduce((prev: number, curr: TableColumn) => prev + curr.flex, 0);\n this.totalWidth = this._columns.reduce((prev: number, curr: TableColumn) => prev + curr.width, startWidth);\n }\n\n get columns(): TableColumn[] {\n return this._columns;\n }\n\n locale: Observable<TetaLocalisation>;\n\n constructor(\n private _svc: TableService<T>,\n private _elementRef: ElementRef,\n private _config: TetaConfigService,\n private _cdr: ChangeDetectorRef,\n ) {}\n\n setActiveRow(row: T, event: MouseEvent) {\n if (!event.shiftKey && !event.ctrlKey) {\n this._svc.setActiveRow(row);\n }\n }\n\n ngOnInit(): void {\n this.locale = this._config.locale;\n combineLatest([this._svc.columns, this._svc.hiddenColumns])\n .pipe(takeWhile((_) => this._alive))\n .subscribe((values: [TableColumn[], string[]]) => {\n const [columns, hiddenColumns] = values;\n this._hiddenColumns = hiddenColumns;\n this.columns = ArrayUtil.flatten(columns, 'columns', true).filter(\n (_) => this._hiddenColumns.indexOf(_.name) < 0,\n );\n this._cdr.markForCheck();\n });\n\n this._svc.displayData.pipe(takeWhile((_) => this._alive)).subscribe((_) => {\n this.data = _;\n this._cdr.markForCheck();\n this.viewport?.checkViewportSize();\n });\n\n this._svc.dict.pipe(takeWhile((_) => this._alive)).subscribe((_) => {\n this.dict = _;\n this._cdr.markForCheck();\n });\n\n this._svc.scrollIndex.pipe(takeWhile(() => this._alive)).subscribe(async (index) => {\n if (this.viewport) {\n this.viewport.scrollToIndex(index, 'auto');\n } else {\n const row = this._elementRef.nativeElement.querySelector(`.table-row[data-row=\"${index}\"]`) as HTMLElement;\n row?.scrollIntoView();\n }\n this._cdr.markForCheck();\n });\n\n this._svc.activeRow.pipe(takeWhile((_) => this._alive)).subscribe(async (_) => {\n this.activeRow = _;\n this._cdr.markForCheck();\n });\n this.addResizeObserver();\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n this.removeResizeObserver();\n }\n\n getAggregateValue(column: TableColumn): number {\n if (column.aggregate === AggregationType.sum) {\n return this.getSum(column.name);\n }\n if (column.aggregate === AggregationType.avg) {\n return this.getSum(column.name) / this.data.length;\n }\n if (column.aggregate === AggregationType.min) {\n return this.getMin(column.name);\n }\n if (column.aggregate === AggregationType.max) {\n return this.getMax(column.name);\n }\n return null;\n }\n\n getAggregateText(column: TableColumn): string {\n if (column.aggregate === AggregationType.sum) {\n return 'sum';\n }\n if (column.aggregate === AggregationType.avg) {\n return 'avg';\n }\n if (column.aggregate === AggregationType.min) {\n return 'min';\n }\n if (column.aggregate === AggregationType.max) {\n return 'max';\n }\n return '';\n }\n\n emitScroll(event) {\n this.scrollChange.emit(event);\n }\n\n trackTableRow = (index: number, row: TableRow<T>): any => {\n return this.trackRow ? this.trackRow(index, row.data) : row.data['id'];\n };\n\n private addResizeObserver() {\n this._obs = new ResizeObserver((_) => {\n this.viewport?.checkViewportSize();\n });\n\n this._obs.observe(this._elementRef.nativeElement);\n }\n\n private removeResizeObserver() {\n this._obs.unobserve(this._elementRef.nativeElement);\n this._obs.disconnect();\n }\n\n private getSum(columnName: string) {\n return this.data?.reduce((accum, current) => {\n const val = parseFloat(current.data[columnName]);\n return accum + (isNaN(val) ? 0 : val);\n }, 0);\n }\n\n private getMin(columnName: string): number {\n return (this.data as any)?.reduce(\n (accum, current: TableRow<T>) =>\n accum != null && accum <= current.data[columnName] ? accum : current.data[columnName],\n null,\n );\n }\n\n private getMax(columnName: string): number {\n return (this.data as any)?.reduce(\n (accum, current) => (accum != null && accum >= current.data[columnName] ? accum : current.data[columnName]),\n null,\n );\n }\n}\n","@if (virtual && data.length > 0) {\n <teta-scrollable class=\"table-body-container\" style=\"padding-bottom: 12px\" [showScrollbars]=\"true\">\n <cdk-virtual-scroll-viewport\n tetaScrollable\n class=\"table-body-container\"\n (scroll)=\"emitScroll($event)\"\n [itemSize]=\"rowHeight()\"\n >\n <ng-container\n *cdkVirtualFor=\"let row of data; templateCacheSize: 0; let rowIndex = index; trackBy: trackTableRow\"\n >\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: { row: row, rowIndex: rowIndex }\"></ng-container>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n </teta-scrollable>\n} @else {\n <teta-scrollable\n class=\"table-body-container\"\n style=\"padding-bottom: 12px\"\n direction=\"column\"\n [showScrollbars]=\"true\"\n (scroll)=\"emitScroll($event)\"\n >\n <div class=\"table-body-container\">\n @if (!data?.length) {\n <div class=\"column column_auto\" style=\"position: absolute; top: 0; bottom: 16px; left: 0; right: 0\">\n <ng-content></ng-content>\n </div>\n }\n @for (row of data; track trackTableRow(rowIndex, row); let rowIndex = $index) {\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: { row: row, rowIndex: rowIndex }\"></ng-container>\n }\n @if (aggregate) {\n <ng-container *ngTemplateOutlet=\"aggTemplate\"></ng-container>\n }\n <ng-container *ngTemplateOutlet=\"emptyRow\"></ng-container>\n </div>\n </teta-scrollable>\n}\n\n<ng-template #bodyTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <teta-table-row\n class=\"table-row\"\n ngForm\n [style.height.px]=\"rowHeight()\"\n [row]=\"row\"\n (click)=\"setActiveRow(row.data, $event)\"\n [attr.data-row]=\"rowIndex\"\n [class.table-row_odd]=\"rowIndex % 2 === 1\"\n [ngClass]=\"rowClass ? rowClass(row.data, rowIndex) : ''\"\n [class.table-row_selected]=\"selectedRows && selectedRows.indexOf(row.data) >= 0\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\"\n >\n @if (locked.length > 0) {\n <div\n class=\"table-row_locked\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\"\n [style.zIndex]=\"row.data === activeRow ? 2 : 1\"\n >\n @if (selectType === selectTypeEnum.checkBox && locked.length) {\n <teta-selection-cell [row]=\"row.data\" style=\"width: 28px\"></teta-selection-cell>\n }\n @for (column of locked; track trackColumns(colIndex, column); let colIndex = $index) {\n <teta-cell\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict ? dict[column.name] : []\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n }\n </div>\n }\n @if (selectType === selectTypeEnum.checkBox && locked.length < 1) {\n <teta-selection-cell [row]=\"row.data\" style=\"width: 28px\"></teta-selection-cell>\n }\n @for (column of unlocked; track trackColumns(colIndex, column); let colIndex = $index) {\n <teta-cell\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict ? dict[column.name] : []\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n ></teta-cell>\n }\n </teta-table-row>\n</ng-template>\n\n<ng-template #aggTemplate>\n @if (locale | async; as loc) {\n @if (aggregate) {\n <div\n class=\"table-row\"\n [style.height.px]=\"rowHeight()\"\n [class.table-row_virtual]=\"virtual\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\"\n >\n @if (locked.length > 0) {\n <div\n class=\"table-row_locked\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\"\n >\n @if (selectType === selectTypeEnum.checkBox && locked.length < 1) {\n <div class=\"cell align-center justify-content-center\" style=\"width: 28px\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n }\n @for (column of locked; track trackColumns(colIndex, column); let colIndex = $index) {\n <div\n class=\"cell cell-component aggregate-cell\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n >\n @if (column.aggregate !== aggregationType.none) {\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{ loc[getAggregateText(column)] }}:\n {{ getAggregateValue(column) | tetaNumber: 2 }}\n </span>\n }\n </div>\n }\n </div>\n }\n @if (selectType === selectTypeEnum.checkBox && locked.length < 1) {\n <div class=\"cell align-center justify-content-center\" style=\"width: 28px\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n }\n @for (column of unlocked; track trackColumns(colIndex, column); let colIndex = $index) {\n <div\n class=\"cell cell-component aggregate-cell\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n [style.flex-grow]=\"column.flex\"\n [style.flex-basis.px]=\"column.width\"\n >\n @if (column.aggregate !== aggregationType.none) {\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{ loc[getAggregateText(column)] }}:\n {{ getAggregateValue(column) | tetaNumber: 2 }}\n </span>\n }\n </div>\n }\n </div>\n }\n }\n</ng-template>\n<ng-template #emptyRow>\n <div\n class=\"empty-table-row\"\n style=\"height: 0.1px\"\n [style.flex-grow]=\"totalFlex\"\n [style.flex-basis.px]=\"totalWidth\"\n [style.min-width.px]=\"totalWidth\"\n ></div>\n</ng-template>\n","import { Inject, Injectable } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { fromEvent, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ClickService {\n click: Observable<MouseEvent>;\n contextMenu: Observable<MouseEvent>;\n\n constructor(@Inject(DOCUMENT) protected _document: any) {\n this.click = fromEvent(this._document, 'click');\n this.contextMenu = fromEvent(this._document, 'contextmenu');\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n HostListener,\n Inject,\n Injector,\n Input,\n NgZone,\n OnDestroy,\n TemplateRef,\n Type,\n} from '@angular/core';\n\nimport { AutoCloseIgnoreCase } from '../../common/contract/auto-close-ignore-case';\nimport { ClickService } from '../../common/service/click.service';\nimport { DynamicComponentService } from '../../common/service/dynamic-component.service';\nimport { ArrayUtil } from '../../common/util/array-util';\nimport { DomUtil } from '../../common/util/dom-util';\nimport { PositionUtil } from '../../common/util/position-util';\nimport { DynamicContentBaseDirective } from '../dynamic-content-base.directive';\n\n@Directive({\n selector: '[tetaContextMenu]',\n standalone: true,\n})\nexport class ContextMenuDirective extends DynamicContentBaseDirective implements OnDestroy {\n /**\n * Строка, шаблон или компонент для создания контекстного меню\n */\n @Input() tetaContextMenu: string | TemplateRef<any> | Type<any>;\n @Input() autoCloseIgnore: AutoCloseIgnoreCase[] = [];\n\n get _dynamicContent() {\n return this.tetaContextMenu;\n }\n\n private _eventPoint: {\n x: number;\n y: number;\n };\n\n constructor(\n @Inject(DOCUMENT)\n protected override _document: any,\n protected override _elementRef: ElementRef,\n protected override _service: DynamicComponentService,\n protected override _injector: Injector,\n protected override _zone: NgZone,\n protected override _cdr: ChangeDetectorRef,\n private _click: ClickService,\n ) {\n super(_document, _elementRef, _service, _injector, _zone, _cdr);\n this.addScrollListener();\n }\n\n @HostListener('contextmenu', ['$event'])\n showContent(event: MouseEvent): void {\n if (this.tetaContextMenu && !event.defaultPrevented) {\n event.preventDefault();\n setTimeout(() => {\n this.createMenu(event);\n });\n }\n }\n\n @HostListener('click', ['$event'])\n click(event: MouseEvent): void {\n if (this._componentRef && DomUtil.clickedInside(this._componentRef.location.nativeElement, event)) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n @HostListener('document:click', ['$event'])\n @HostListener('document:contextmenu', ['$event'])\n documentClick(event: MouseEvent): void {\n if (\n this._open &&\n this._componentRef &&\n (!DomUtil.clickedInside(this._componentRef.location.nativeElement, event) ||\n this.autoCloseIgnore.indexOf('inside') < 0)\n ) {\n this.destroyContentRef();\n this.openChange.emit(false);\n }\n }\n\n protected addScrollListener() {\n window.addEventListener('scroll', this.scrollListener, true);\n }\n\n protected removeScrollListener() {\n window.removeEventListener('scroll', this.scrollListener, true);\n }\n\n private scrollListener = (event) => {\n if (\n this._open &&\n this._componentRef &&\n !this._componentRef.location.nativeElement.contains(event.target) &&\n this._componentRef.location.nativeElement !== event.target\n ) {\n this.destroyContentRef();\n this.openChange.emit(false);\n }\n };\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.removeScrollListener();\n }\n\n protected setPosition() {\n if (this._componentRef && this._open) {\n const position = PositionUtil.getPosition(\n {\n top: this._eventPoint.y,\n bottom: this._eventPoint.y,\n left: this._eventPoint.x,\n right: this._eventPoint.x,\n },\n this._componentRef.location.nativeElement.getBoundingClientRect(),\n this.align,\n this.verticalAlign,\n );\n PositionUtil.setElementPosition(this._componentRef.location.nativeElement, position);\n }\n }\n\n private createMenu(event: MouseEvent): void {\n if (this.tetaContextMenu == null) {\n return;\n }\n this._eventPoint = event;\n this._componentRef = this.createContentRef();\n this._componentRef.instance.className = [...ArrayUtil.asArray(this.className), 'context-menu'];\n this.openChange.emit(true);\n }\n}\n","import { TableColumn } from '../contract/table-column';\nimport { ArrayUtil } from '../../../common/util/array-util';\nimport { SortParam } from '../../filter/contarct/sort-param';\nimport { ListFilterType } from '../../filter/enum/list-filter-type.enum';\nimport { ListFilter } from '../../filter/contarct/list-filter';\nimport { NumericFilter } from '../../filter/contarct/numeric-filter';\nimport { DateFilter } from '../../filter/contarct/date-filter';\nimport { StringFilterType } from '../../filter/enum/string-filter-type.enum';\nimport { StringFilter } from '../../filter/contarct/string-filter';\nimport { FilterState } from '../../filter/contarct/filter-state';\n\nexport class TableUtil {\n public static getColumnLeaves(column: TableColumn): TableColumn[] | null {\n if (column?.columns?.length > 0) {\n return ArrayUtil.flatten(column.columns, 'columns', true);\n }\n return null;\n }\n\n static getData<T>(data: T[], state: FilterState): T[] {\n let result: T[] = [...data];\n result = TableUtil.filterData(result, state);\n result = TableUtil.sortData(result, state);\n return result;\n }\n\n static sortData<T>(data: T[], state: FilterState): T[] {\n let result: T[] = [...data];\n const func = (sortParam: SortParam) => {\n result = TableUtil.sort(result, sortParam);\n };\n if (state?.sortParams?.length > 0) {\n state.sortParams.forEach(func);\n }\n return result;\n }\n\n static filterData<T>(data: T[], state: FilterState): T[] {\n let result: T[] = [...data];\n if (state?.stringFilters?.length) {\n const stringFilter = (filter: StringFilter) => {\n result = TableUtil.filterString(result, filter);\n };\n state.stringFilters.forEach(stringFilter);\n }\n if (state?.dateFilters?.length) {\n const dateFilter = (filter: DateFilter) => {\n result = TableUtil.filterDate(result, filter);\n };\n state.dateFilters.forEach(dateFilter);\n }\n if (state?.numericFilters?.length) {\n const numericFilter = (filter: NumericFilter) => {\n result = TableUtil.filterNumber(result, filter);\n };\n state.numericFilters.forEach(numericFilter);\n }\n if (state?.listFilters?.length) {\n const listFilter = (filter: ListFilter) => {\n result = TableUtil.filterList(result, filter);\n };\n state.listFilters.forEach(listFilter);\n }\n return result;\n }\n\n static filterString<T>(data: T[], filter: StringFilter): T[] {\n if (filter.value === null || filter.value === undefined) {\n return data;\n }\n const filterString = (row: T) => {\n const item = row as any;\n if (filter.type === StringFilterType.EndsWith) {\n return item[filter.field]?.toLowerCase().endsWith(filter.value?.toLowerCase());\n }\n if (filter.type === StringFilterType.Equals) {\n return item[filter.field]?.toLowerCase() === filter.value?.toLowerCase();\n }\n if (filter.type === StringFilterType.StartsWith) {\n return item[filter.field]?.toLowerCase().startsWith(filter.value?.toLowerCase());\n }\n return item[filter.field]?.toLowerCase().indexOf(filter.value?.toLowerCase()) >= 0;\n };\n return data.filter(filterString);\n }\n\n static filterDate<T>(data: T[], filter: DateFilter): T[] {\n const filterDate = (row: T) => {\n const item = row as any;\n return (\n (filter.value.lessThan === null || filter.value.lessThan === undefined\n ? true\n : filter.value.lessThan?.getTime() >= item[filter.field]?.getTime()) &&\n (filter.value.greaterThan === null || filter.value.greaterThan === undefined\n ? true\n : filter.value.greaterThan?.getTime() <= item[filter.field]?.getTime())\n );\n };\n return data.filter(filterDate);\n }\n\n static filterNumber<T>(data: T[], filter: NumericFilter): T[] {\n const filterNumber = (row: T) => {\n const item = row as any;\n return (\n (filter.value.lessThan === null ||\n filter.value.lessThan === undefined ||\n filter.value.lessThan?.toString() === ''\n ? true\n : filter.value.lessThan >= item[filter.field]) &&\n (filter.value.greaterThan === null ||\n filter.value.greaterThan === undefined ||\n filter.value.greaterThan?.toString() === ''\n ? true\n : filter.value.greaterThan <= item[filter.field]) &&\n (filter.value.equalsTo === null ||\n filter.value.equalsTo === undefined ||\n filter.value.equalsTo?.toString() === ''\n ? true\n : filter.value.equalsTo === item[filter.field])\n );\n };\n return data.filter(filterNumber);\n }\n\n static filterList<T>(data: T[], filter: ListFilter): T[] {\n if (filter.value === null || filter.value === undefined || filter.value.length < 1) {\n return data;\n }\n const filterList = (row: T) => {\n const item = row as any;\n if (filter.type === ListFilterType.Excluded) {\n return filter.value.indexOf(item[filter.field]) < 0;\n }\n return filter.value.indexOf(item[filter.field]) >= 0;\n };\n return data.filter(filterList);\n }\n\n static sort<T>(data: T[], sortParam: SortParam): T[] {\n const res = data.sort(sortParam.asc ? TableUtil.asc(sortParam.field) : TableUtil.desc(sortParam.field));\n return [...res];\n }\n\n static desc(field: string) {\n const res = (a: any, b: any) => (a[field] > b[field] ? -1 : 1);\n return res;\n }\n\n static asc(field: string) {\n const res = (a: any, b: any) => (a[field] < b[field] ? -1 : 1);\n return res;\n }\n}\n","import { TableColumn } from './table-column';\n\nexport class ColumnResizeEvent {\n column: TableColumn;\n newWidth: number;\n\n constructor(column: TableColumn, newWidth: number) {\n this.column = column;\n this.newWidth = newWidth;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ITreeData } from '../../common/contract/i-tree-data';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TreeService {\n openItems: Observable<ITreeData[]>;\n scrollToIndex: Observable<number>;\n\n private _openItems: BehaviorSubject<ITreeData[]> = new BehaviorSubject<ITreeData[]>([]);\n private _scrollToIndex = new BehaviorSubject<number>(0);\n\n constructor() {\n this.openItems = this._openItems.asObservable();\n this.scrollToIndex = this._scrollToIndex.asObservable();\n }\n\n compareItems: (item: ITreeData) => any = (item: ITreeData) => item;\n\n openItem(item: ITreeData) {\n const newValue = this.addOrRemove(item, this._openItems.value);\n this.setOpenItems(newValue);\n }\n\n setOpenItems(items: ITreeData[]) {\n this._openItems.next(items);\n }\n\n scrollTo(index: number) {\n this._scrollToIndex.next(index);\n }\n\n private addOrRemove<G>(needle: G, list: G[]): G[] {\n const found = list?.find((x) => this.compareItems(x) === this.compareItems(needle));\n if (found) {\n return list.filter((x) => this.compareItems(x) !== this.compareItems(needle));\n } else {\n return [...list, needle];\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, Signal } from '@angular/core';\nimport { TreeService } from '../tree.service';\nimport { ITreeData } from '../../../common/contract/i-tree-data';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'teta-tree-item-toggle',\n templateUrl: './tree-item-toggle.component.html',\n styleUrls: ['./tree-item-toggle.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [IconComponent],\n})\nexport class TreeItemToggleComponent {\n treeService = inject(TreeService);\n item = input<ITreeData>();\n open: Signal<boolean>;\n\n openItems: Signal<ITreeData[]>;\n\n constructor() {\n this.openItems = toSignal(this.treeService.openItems);\n this.open = computed(() => {\n const found = this.openItems()?.find(\n (x) => this.treeService.compareItems(x) === this.treeService.compareItems(this.item()),\n );\n return !!found;\n });\n }\n}\n","<teta-icon [name]=\"open() ? 'arrowDownKey' : 'arrowRightKey'\" class=\"tree__icon\"></teta-icon>\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaTemplate]',\n standalone: true,\n})\nexport class TetaTemplateDirective {\n @Input('tetaTemplate') id: string;\n\n constructor(public template: TemplateRef<any>) {}\n\n getId(): string {\n return this.id;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostBinding,\n inject,\n input,\n Signal,\n TemplateRef,\n} from '@angular/core';\nimport { ITreeData } from '../../../common/contract/i-tree-data';\nimport { TreeService } from '../tree.service';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n/**\n * TODO: Lazy загрузка дочерних элементов, Output onExpand, шаблон для иконки expand\n */\n@Component({\n selector: 'teta-tree-item',\n templateUrl: './tree-item.component.html',\n styleUrls: ['./tree-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('treeItemInstance', [\n transition('void => *', [style({ opacity: '0' }), animate(200, style({ opacity: '1' }))]),\n // transition('* => void', [animate(200, style({opacity: '0'}))]),\n ]),\n ],\n imports: [NgClass, NgTemplateOutlet],\n})\nexport class TreeItemComponent {\n treeService = inject(TreeService);\n\n item = input<ITreeData>();\n depth = input<number>(0);\n padding = input<number>(16);\n childNodeName = input<string>('children');\n template = input<TemplateRef<any>>();\n childPadding = input<boolean>();\n openItems: Signal<ITreeData[]>;\n @HostBinding('class.tree__item-container') private readonly treeItemClass = true;\n\n itemIsOpen: Signal<boolean>;\n\n @HostBinding('@treeItemInstance') private readonly treeItemInstance = true;\n\n computedDepth = computed(() => {\n return this.depth() + (this.item()[this.childNodeName()]?.length > 0 ? 0 : this.childPadding() ? 2 : 1);\n });\n\n constructor() {\n this.openItems = toSignal(this.treeService.openItems);\n this.itemIsOpen = computed(() => {\n const found = this.openItems()?.find(\n (x) => this.treeService.compareItems(x) === this.treeService.compareItems(this.item()),\n );\n return !!found;\n });\n }\n\n openItem() {\n this.treeService.openItem(this.item());\n }\n}\n","<div class=\"tree__item_content\" [ngClass]=\"'tree__item_content-' + computedDepth()\" (click)=\"openItem()\">\n <ng-container\n *ngTemplateOutlet=\"\n template();\n context: { $implicit: item(), item: item(), open: itemIsOpen(), service: treeService, depth: depth() }\n \"\n ></ng-container>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n input,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n AfterViewInit,\n computed,\n effect,\n model,\n inject,\n} from '@angular/core';\nimport { ITreeData } from '../../../common/contract/i-tree-data';\nimport { TreeService } from '../tree.service';\nimport { TetaTemplateDirective } from '../../../directive/teta-template/teta-template.directive';\nimport { filter, takeWhile } from 'rxjs/operators';\nimport { CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll, CdkVirtualForOf } from '@angular/cdk/scrolling';\nimport { TreeItemComponent } from '../tree-item/tree-item.component';\nimport { ScrollableDirective } from '../../../directive/scrollable/scrollable.directive';\nimport { ScrollableComponent } from '../../../directive/scrollable/scrollable/scrollable.component';\n\n@Component({\n selector: 'teta-tree',\n templateUrl: './tree.component.html',\n styleUrls: ['./tree.component.scss'],\n providers: [TreeService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ScrollableComponent,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n ScrollableDirective,\n CdkVirtualForOf,\n TreeItemComponent,\n ],\n})\nexport class TreeComponent implements OnInit, OnChanges, OnDestroy, AfterViewInit {\n private treeService = inject(TreeService);\n private elementRef = inject(ElementRef);\n private ngZone = inject(NgZone);\n\n data = input<ITreeData[]>([]);\n padding = input<number>(8);\n childNodeName = input<string>('children');\n virtual = input<boolean>(false);\n height = input<number>(28);\n\n openItems = model<ITreeData[]>([]);\n\n @Output() service: EventEmitter<TreeService> = new EventEmitter<TreeService>();\n\n @ViewChild(CdkVirtualScrollViewport, { static: false }) viewport: CdkVirtualScrollViewport;\n\n @ContentChild(TetaTemplateDirective, { static: true })\n template: TetaTemplateDirective;\n\n childPadding = computed(() => {\n return this.data()?.some((_) => _[this.childNodeName()]?.length > 0);\n });\n\n displayData = computed(() => {\n return this.getDisplayData(this.data(), 0);\n });\n\n private _alive = true;\n private _obs: ResizeObserver;\n\n constructor() {\n effect(() => {\n this.treeService.setOpenItems(this.openItems());\n });\n this.treeService.openItems\n .pipe(\n takeWhile((_) => this._alive),\n filter((_) => this.openItems() !== _),\n )\n .subscribe((_: ITreeData[]) => {\n this.openItems.set(_);\n this.viewport?.checkViewportSize();\n });\n }\n\n @Input()\n set compareItems(func: (item: ITreeData) => any) {\n this.treeService.compareItems = func;\n }\n\n get compareItems() {\n return this.treeService.compareItems;\n }\n\n @HostBinding('class.tree') private readonly treeClass = true;\n\n ngOnInit(): void {\n this.service.emit(this.treeService);\n this.addResizeObserver();\n }\n\n ngOnChanges(): void {\n this.viewport?.checkViewportSize();\n }\n\n ngOnDestroy() {\n this._alive = false;\n this.removeResizeObserver();\n }\n\n ngAfterViewInit() {\n this.treeService.scrollToIndex.pipe(takeWhile(() => this._alive)).subscribe((index) => {\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.viewport?.scrollToIndex(index, 'smooth');\n });\n });\n });\n }\n\n trackRow = (index: number, item: ITreeData): any => {\n if (this.compareItems) {\n return this.compareItems(item);\n }\n return index;\n };\n\n private getDisplayData(data: ITreeData[], level: number) {\n const result: ITreeData[] = [];\n data?.forEach((item: ITreeData) => {\n item['level'] = level;\n result.push(item);\n if (\n item[this.childNodeName()]?.length > 0 &&\n this.openItems()?.find((openItem) => this.compareItems(openItem) === this.compareItems(item))\n ) {\n result.push(...this.getDisplayData(item[this.childNodeName()], level + 1));\n }\n });\n return result;\n }\n\n private addResizeObserver() {\n this._obs = new ResizeObserver((_) => {\n this.viewport?.checkViewportSize();\n });\n\n this._obs.observe(this.elementRef.nativeElement);\n }\n\n private removeResizeObserver() {\n this._obs.unobserve(this.elementRef.nativeElement);\n this._obs.disconnect();\n }\n}\n","@if (virtual()) {\n <teta-scrollable class=\"column column_auto\">\n <cdk-virtual-scroll-viewport tetaScrollable class=\"table-body-container\" [itemSize]=\"height()\">\n <teta-tree-item\n *cdkVirtualFor=\"let item of displayData(); templateCacheSize: 0; trackBy: trackRow\"\n [item]=\"item\"\n [style.height.px]=\"height()\"\n [depth]=\"item['level']\"\n [padding]=\"padding()\"\n [childNodeName]=\"childNodeName()\"\n [childPadding]=\"childPadding()\"\n [template]=\"template?.template\"\n ></teta-tree-item>\n </cdk-virtual-scroll-viewport>\n </teta-scrollable>\n} @else {\n <teta-scrollable class=\"column column_auto\" direction=\"column\">\n @for (item of displayData(); track trackRow($index, item)) {\n <teta-tree-item\n [item]=\"item\"\n [style.height.px]=\"height()\"\n [depth]=\"item['level']\"\n [padding]=\"padding()\"\n [childNodeName]=\"childNodeName()\"\n [childPadding]=\"childPadding()\"\n [template]=\"template?.template\"\n ></teta-tree-item>\n }\n </teta-scrollable>\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, OnDestroy } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, takeWhile } from 'rxjs/operators';\n\nimport { ITreeData } from '../../../../common/contract/i-tree-data';\nimport { ArrayUtil } from '../../../../common/util/array-util';\nimport { TetaConfigService } from '../../../../locale/teta-config.service';\nimport { TetaLocalisation } from '../../../../locale/teta-localisation';\nimport { FilterState } from '../../../filter/contarct/filter-state';\nimport { TableColumn } from '../../contract/table-column';\nimport { TableService } from '../../service/table.service';\nimport { AsyncPipe } from '@angular/common';\nimport { ButtonComponent } from '../../../button/button/button.component';\nimport { ToolbarComponent } from '../../../toolbar/toolbar/toolbar.component';\nimport { TreeItemToggleComponent } from '../../../tree/tree-item-toggle/tree-item-toggle.component';\nimport { TetaTemplateDirective } from '../../../../directive/teta-template/teta-template.directive';\nimport { TreeComponent } from '../../../tree/tree/tree.component';\nimport { ScrollableComponent } from '../../../../directive/scrollable/scrollable/scrollable.component';\nimport { FormsModule } from '@angular/forms';\nimport { CheckboxComponent } from '../../../checkbox/checkbox/checkbox.component';\n\n@Component({\n selector: 'teta-visibility-dropdown-tab',\n templateUrl: './visibility-dropdown-tab.component.html',\n styleUrls: ['./visibility-dropdown-tab.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CheckboxComponent,\n FormsModule,\n ScrollableComponent,\n TreeComponent,\n TetaTemplateDirective,\n TreeItemToggleComponent,\n ToolbarComponent,\n ButtonComponent,\n AsyncPipe,\n ]\n})\nexport class VisibilityDropdownTabComponent<T> implements OnDestroy {\n @Input() columns: ITreeData[];\n @Input() column: TableColumn;\n @Input() state: FilterState;\n @Input() data: T[];\n @Input() close: () => void;\n\n locale: Observable<TetaLocalisation>;\n hiddenColumns: string[];\n\n get openItems() {\n if (this._openItems == null) {\n this._openItems = this.columns.map((_) => _);\n }\n return this._openItems;\n }\n\n set openItems(openItems: ITreeData[]) {\n this._openItems = openItems;\n }\n\n get childMode() {\n return this.columns.find((_: any) => _.columns?.length > 0);\n }\n\n private _openItems: ITreeData[];\n private _alive = true;\n\n constructor(\n private _svc: TableService<T>,\n private _config: TetaConfigService,\n private _elementRef: ElementRef,\n private _cdr: ChangeDetectorRef,\n ) {\n this.locale = this._config.locale;\n this._svc.hiddenColumns\n .pipe(\n takeWhile((_) => this._alive),\n map((_) => [..._]),\n )\n .subscribe((_) => {\n this.hiddenColumns = _;\n });\n }\n\n columnIsHidden(column: TableColumn) {\n return this.hiddenColumns.indexOf(column.name) >= 0;\n }\n\n allColumnsVisible() {\n if (this.hiddenColumns?.length <= 0) {\n return true;\n }\n const columns = ArrayUtil.flatten(this.columns, 'columns');\n const notHidden = columns.find((_) => this.hiddenColumns.indexOf(_.name) < 0);\n if (!notHidden) {\n return false;\n }\n return null;\n }\n\n setAllColumns(value: boolean) {\n if (value) {\n this.hiddenColumns = [];\n } else {\n this.hiddenColumns = ArrayUtil.flatten(this.columns, 'columns').map((_) => _.name);\n }\n }\n\n setColumnsVisibility() {\n this._svc.setHiddenColumns(this.hiddenColumns);\n }\n\n compareItems = (item: any) => item.name;\n\n setColumnVisibility(item: TableColumn, visible: boolean) {\n this.setChildrenVisibility(item, visible, this.hiddenColumns);\n this.setParentsVisibility(item, visible, this.hiddenColumns);\n }\n\n setChildrenVisibility = (column: TableColumn, visible: boolean, hiddenColumns: string[]) => {\n if (visible) {\n this.showColumn(column, hiddenColumns);\n } else {\n this.hideColumn(column, hiddenColumns);\n }\n if (column.columns) {\n column.columns.forEach((x) => {\n this.setChildrenVisibility(x, visible, hiddenColumns);\n });\n }\n };\n\n setParentsVisibility = (column: TableColumn, visible: boolean, hiddenColumns: string[]) => {\n if (!visible) {\n this.hideParents(column, hiddenColumns);\n } else {\n this.showParents(column, hiddenColumns);\n }\n };\n\n showParents(column: TableColumn, hiddenColumns: string[]) {\n const parent = this.findParentColumn(column, this.columns as TableColumn[]);\n if (parent && this.columnIsHidden(parent)) {\n this.showColumn(parent, hiddenColumns);\n this.showParents(parent, hiddenColumns);\n }\n }\n\n hideParents(column: TableColumn, hiddenColumns: string[]) {\n const parent = this.findParentColumn(column, this.columns as TableColumn[]);\n if (\n parent &&\n !this.columnIsHidden(parent) &&\n parent.columns &&\n parent.columns.every((_) => this.columnIsHidden(_))\n ) {\n this.hideColumn(parent, hiddenColumns);\n this.hideParents(parent, hiddenColumns);\n }\n }\n\n hideColumn(column: TableColumn, hiddenColumns: string[]) {\n hiddenColumns.push(column.name);\n }\n\n showColumn(column: TableColumn, hiddenColumns: string[]) {\n hiddenColumns.splice(hiddenColumns.indexOf(column.name), 1);\n }\n\n private findParentColumn(column: TableColumn, columns: TableColumn[]): TableColumn | null {\n return ArrayUtil.findRecursive(columns, (iterableNode) => iterableNode.columns?.indexOf(column) >= 0, 'columns');\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","@if (locale | async; as loc) {\n <div class=\"list-item padding-left-6 padding-top-2\" [class.padding-left-9]=\"childMode\">\n <teta-checkbox\n [binary]=\"true\"\n [allowNull]=\"true\"\n [ngModel]=\"allColumnsVisible()\"\n (ngModelChange)=\"setAllColumns($event)\"\n >\n {{ loc.all }}\n </teta-checkbox>\n </div>\n <div class=\"list-divider\"></div>\n <teta-scrollable class=\"padding-v-2 column column_auto\">\n <teta-tree\n [data]=\"columns\"\n [openItems]=\"openItems\"\n (openItemsChange)=\"openItems = $event\"\n [childNodeName]=\"'columns'\"\n [compareItems]=\"compareItems\"\n >\n <ng-template tetaTemplate let-item>\n <div class=\"tree__item\" style=\"align-items: unset\">\n @if (item.columns?.length > 0) {\n <teta-tree-item-toggle [item]=\"item\"></teta-tree-item-toggle>\n }\n <teta-checkbox\n style=\"flex-grow: 1\"\n [ngModel]=\"!columnIsHidden(item)\"\n (ngModelChange)=\"setColumnVisibility(item, $event)\"\n (click)=\"$event.stopPropagation()\"\n [binary]=\"true\"\n >\n {{ item.caption }}\n </teta-checkbox>\n </div>\n </ng-template>\n </teta-tree>\n </teta-scrollable>\n <teta-toolbar class=\"justify-content-end\">\n <button\n type=\"button\"\n teta-button\n [disabled]=\"allColumnsVisible() === false\"\n [palette]=\"'primary'\"\n (click)=\"setColumnsVisibility()\"\n >\n {{ loc.apply }}\n </button>\n </teta-toolbar>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n Input,\n OnInit,\n} from '@angular/core';\nimport { TableColumn } from '../../contract/table-column';\nimport { FilterState } from '../../../filter/contarct/filter-state';\nimport { Observable } from 'rxjs';\nimport { TetaLocalisation } from '../../../../locale/teta-localisation';\nimport { TableService } from '../../service/table.service';\nimport { TetaConfigService } from '../../../../locale/teta-config.service';\nimport { IDictionary } from '../../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../../common/contract/i-id-name';\nimport { ITreeData } from '../../../../common/contract/i-tree-data';\nimport { AsyncPipe } from '@angular/common';\nimport { IconComponent } from '../../../icon/icon/icon.component';\nimport { ButtonComponent } from '../../../button/button/button.component';\nimport { ToolbarComponent } from '../../../toolbar/toolbar/toolbar.component';\nimport { FilterHostComponent } from '../../../filter/filter-host/filter-host.component';\n\n@Component({\n selector: 'teta-filter-dropdown-tab',\n templateUrl: './filter-dropdown-tab.component.html',\n styleUrls: ['./filter-dropdown-tab.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FilterHostComponent, ToolbarComponent, ButtonComponent, IconComponent, AsyncPipe]\n})\nexport class FilterDropdownTabComponent<T> implements OnInit {\n @Input() columns: ITreeData[];\n @Input() column: TableColumn;\n @Input() state: FilterState;\n @Input() data: T[];\n @Input() close: () => void;\n\n locale: Observable<TetaLocalisation>;\n filterOptions: Observable<IDictionary<IIdName<any>[]>>;\n\n @HostListener('keydown.enter') enter() {\n this.applyFilter();\n }\n\n constructor(\n private _svc: TableService<T>,\n private _config: TetaConfigService,\n private _elementRef: ElementRef,\n private _cdr: ChangeDetectorRef,\n ) {\n this.locale = this._config.locale;\n this.filterOptions = this._svc.filterOptions;\n }\n\n clearFilter() {\n this._svc.clearFilter(this.column);\n this.close();\n this._cdr.markForCheck();\n }\n\n applyFilter() {\n this._svc.setState(new FilterState(this.state));\n this.close();\n this._cdr.markForCheck();\n }\n\n ngOnInit(): void {}\n}\n","@if (locale | async; as loc) {\n @if (filterOptions | async; as options) {\n <teta-filter-host\n [column]=\"column\"\n [data]=\"data\"\n [state]=\"state\"\n [filterOptions]=\"options[column.name]\"\n ></teta-filter-host>\n }\n <teta-toolbar class=\"justify-content-between\">\n <button type=\"button\" teta-button [palette]=\"'text'\" [view]=\"'ghost'\" (click)=\"clearFilter()\">\n {{ loc.clear }}\n </button>\n <button type=\"button\" teta-button [palette]=\"'primary'\" (click)=\"applyFilter()\">\n <teta-icon [name]=\"'tick'\" [palette]=\"'white'\"></teta-icon>\n {{ loc.apply }}\n </button>\n </teta-toolbar>\n}\n","import { TableColumn } from './table-column';\n\nexport class SortEvent {\n column: TableColumn;\n shiftKey: boolean;\n\n constructor(column: TableColumn, shiftKey: boolean) {\n this.column = column;\n this.shiftKey = shiftKey;\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, OnInit } from '@angular/core';\nimport { TableService } from '../../service/table.service';\nimport { TetaConfigService } from '../../../../locale/teta-config.service';\nimport { TableColumn } from '../../contract/table-column';\nimport { Observable } from 'rxjs';\nimport { TetaLocalisation } from '../../../../locale/teta-localisation';\nimport { SortParam } from '../../../filter/contarct/sort-param';\nimport { StateUtil } from '../../util/state-util';\nimport { FilterState } from '../../../filter/contarct/filter-state';\nimport { SortEvent } from '../../contract/sort-event';\nimport { ITreeData } from '../../../../common/contract/i-tree-data';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'teta-main-dropdown-tab',\n templateUrl: './main-dropdown-tab.component.html',\n styleUrls: ['./main-dropdown-tab.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe]\n})\nexport class MainDropdownTabComponent<T> implements OnInit {\n @Input() columns: ITreeData[];\n @Input() column: TableColumn;\n @Input() state: FilterState;\n @Input() data: T[];\n @Input() close: () => void;\n @Input() headCellElementRef: ElementRef;\n\n locale: Observable<TetaLocalisation>;\n\n constructor(\n private _svc: TableService<T>,\n private _config: TetaConfigService,\n private _elementRef: ElementRef,\n private _cdr: ChangeDetectorRef,\n ) {\n this.locale = this._config.locale;\n }\n\n get sortParam(): SortParam {\n return StateUtil.getSortState(this.state, this.column);\n }\n\n get filtered() {\n return StateUtil.isColumnFiltered(this.state, this.column);\n }\n\n get parent() {\n return this._svc.getColumnParent(this.column);\n }\n\n pinColumn() {\n this._svc.pinColumn(this.column);\n }\n\n sortAsc(event: MouseEvent) {\n this._svc.sortAsc(new SortEvent(this.column, event.shiftKey));\n }\n\n sortDesc(event: MouseEvent) {\n this._svc.sortDesc(new SortEvent(this.column, event.shiftKey));\n }\n\n clearSort(): void {\n this._svc.clearSort(this.column);\n }\n\n clearAllSort(): void {\n this._svc.clearAllSort();\n }\n\n hasFilteredColumns() {\n return StateUtil.hasFilteredColumns(this.state);\n }\n\n hasSortedColumns() {\n return StateUtil.hasSortedColumns(this.state);\n }\n\n restoreDefaultColumns() {\n this._svc.restoreDefaultColumns();\n }\n\n clearFilter() {\n this._svc.clearFilter(this.column);\n this.close();\n this._cdr.markForCheck();\n }\n\n clearAllFilters() {\n this._svc.clearAllFilters();\n this.close();\n this._cdr.markForCheck();\n }\n\n autosizeColumn() {\n this._svc.autosizeColumn(this.column, this.headCellElementRef.nativeElement);\n }\n\n autosizeAllColumns() {\n this._svc.autosizeAllColumns(this.headCellElementRef.nativeElement);\n }\n\n ngOnInit(): void {}\n}\n","@if (locale | async; as loc) {\n <div class=\"list column_auto\">\n @if (!parent) {\n <div class=\"list-item list-item_interactive\" (click)=\"pinColumn()\">\n {{ column.locked ? loc.unpin : loc.pin }}\n </div>\n <div class=\"list-divider\"></div>\n }\n @if (column.sortable) {\n <div class=\"list-item list-item_interactive\" (click)=\"sortAsc($event)\">\n {{ loc.sortAsc }}\n </div>\n <div class=\"list-item list-item_interactive\" (click)=\"sortDesc($event)\">\n {{ loc.sortDesc }}\n </div>\n @if (hasSortedColumns()) {\n @if (sortParam) {\n <div class=\"list-item list-item_interactive\" (click)=\"clearSort()\">\n {{ loc.clearSort }}\n </div>\n }\n <div class=\"list-item list-item_interactive\" (click)=\"clearAllSort()\">\n {{ loc.clearAllSort }}\n </div>\n <div class=\"list-divider\"></div>\n }\n }\n @if (hasFilteredColumns()) {\n @if (filtered) {\n <div class=\"list-item list-item_interactive\" (click)=\"clearFilter()\">\n {{ loc.clearFilter }}\n </div>\n }\n <div class=\"list-item list-item_interactive\" (click)=\"clearAllFilters()\">\n {{ loc.clearAllFilters }}\n </div>\n <div class=\"list-divider\"></div>\n }\n <div class=\"list-item list-item_interactive\" (click)=\"autosizeColumn()\">\n {{ loc.autosizeColumn }}\n </div>\n <div class=\"list-item list-item_interactive\" (click)=\"autosizeAllColumns()\">\n {{ loc.autosizeAll }}\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"list-item list-item_interactive\" (click)=\"restoreDefaultColumns()\">\n {{ loc.resetColumnsSize }}\n </div>\n </div>\n}\n","import { Directive, EventEmitter, HostBinding, HostListener, Inject, Input, Output } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n@Directive({\n selector: '[tetaResizeDrag]',\n standalone: true,\n})\nexport class ResizeDragDirective {\n @Input() tetaResizeDrag: 'horizontal' | 'vertical' = 'vertical';\n\n @Output() resizeStart = new EventEmitter<MouseEvent>();\n @Output() resizeProcess = new EventEmitter<MouseEvent>();\n @Output() resizeEnd = new EventEmitter<MouseEvent>();\n\n @HostBinding('class.resize-drag_active')\n private _active: boolean;\n\n @HostBinding('class.resize-drag_horizontal')\n private get horizontal() {\n return this.tetaResizeDrag === 'horizontal';\n }\n\n @HostBinding('class.resize-drag_vertical')\n private get vertical() {\n return this.tetaResizeDrag === 'vertical';\n }\n\n constructor(@Inject(DOCUMENT) private _document: any) {}\n\n @HostListener('mousedown', ['$event']) mouseDown(event: MouseEvent) {\n this.resizeStart.emit(event);\n this.addListeners();\n }\n\n private addListeners() {\n this._active = true;\n this._document.addEventListener('mouseup', this.handleMouseUp);\n this._document.addEventListener('mousemove', this.handleMouseMove);\n }\n\n private removeListeners() {\n this._active = false;\n this._document.removeEventListener('mouseup', this.handleMouseUp);\n this._document.removeEventListener('mousemove', this.handleMouseMove);\n }\n\n private handleMouseUp = (event: MouseEvent) => {\n this.resizeEnd.emit(event);\n this.removeListeners();\n };\n\n private handleMouseMove = (event: MouseEvent) => {\n this.resizeProcess.emit(event);\n };\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaTabContent]',\n standalone: true,\n})\nexport class TabContentDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaTabTitle]',\n standalone: true,\n})\nexport class TabTitleDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import { AfterContentChecked, ChangeDetectionStrategy, Component, ContentChild, Input } from '@angular/core';\nimport { TabContentDirective } from '../tab-content.directive';\nimport { TabTitleDirective } from '../tab-title.directive';\n\nlet nextId = 0;\n\n@Component({\n selector: 'teta-tab',\n template: '',\n styleUrls: ['./tab.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class TabComponent implements AfterContentChecked {\n /**\n * Unique tab identifier. Must be unique for the entire document for proper accessibility support.\n */\n @Input() id = `teta-tab-${nextId++}`;\n /**\n * Simple (string only) title. Use the \"ItskTabTitleDirective\" directive for more complex use-cases.\n */\n @Input() title: string;\n /**\n * Allows toggling disabled state of a given state. Disabled tabs can't be selected.\n */\n @Input() disabled = false;\n\n @ContentChild(TabTitleDirective, { static: false })\n titleTpl: TabTitleDirective;\n @ContentChild(TabContentDirective, { static: false })\n contentTpl: TabContentDirective;\n // titleTpl: TabTitleDirective | null;\n // contentTpl: TabContentDirective | null;\n\n ngAfterContentChecked(): void {\n // this.titleTpl = this.titleTemplates.first;\n // this.contentTpl = this.contentTemplates.first;\n }\n}\n","import {\n AfterContentChecked,\n Component,\n ContentChildren,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n QueryList,\n} from '@angular/core';\nimport { TabComponent } from '../tab/tab.component';\nimport { NgTemplateOutlet } from '@angular/common';\n\nexport interface ITabChangeEvent {\n activeId: string | null;\n nextId: string;\n preventDefault: () => void;\n}\n\n@Component({\n selector: 'teta-tabs',\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n imports: [NgTemplateOutlet]\n})\nexport class TabsComponent implements AfterContentChecked {\n @HostBinding('class.tabs') classTabs = true;\n @HostBinding('class.tabs_vertical') get verticalClassTabs() {\n return this.direction === 'vertical';\n }\n /**\n * An identifier of an initially selected (active) tab. Use the \"select\" method to switch a tab programmatically.\n */\n @Input() activeId: string | null;\n\n /**\n * Tabs direction\n */\n @Input() direction: 'horizontal' | 'vertical' = 'horizontal';\n\n /**\n * Tabs size\n */\n @Input() size: 's' | 'm' = 'm';\n\n /**\n * Whether the closed tabs should be hidden without destroying them\n */\n @Input() destroyOnHide = true;\n\n /**\n * A tab change event fired right before the tab selection happens. See NgbTabChangeEvent for payload details\n */\n @Output() tabChange = new EventEmitter<ITabChangeEvent>();\n\n @ContentChildren(TabComponent) tabs: QueryList<TabComponent>;\n\n constructor() {}\n\n /**\n * Selects the tab with the given id and shows its associated pane.\n * Any other tab that was previously selected becomes unselected and its associated pane is hidden.\n */\n select(tabId: string): void {\n const selectedTab = this._getTabById(tabId);\n if (selectedTab && !selectedTab.disabled && this.activeId !== selectedTab.id) {\n let defaultPrevented = false;\n\n this.tabChange.emit({\n activeId: this.activeId,\n nextId: selectedTab.id,\n preventDefault: () => {\n defaultPrevented = true;\n },\n });\n\n if (!defaultPrevented) {\n this.activeId = selectedTab.id;\n }\n }\n }\n\n ngAfterContentChecked(): void {\n const activeTab = this._getTabById(this.activeId);\n this.activeId = activeTab ? activeTab.id : this.tabs.length ? this.tabs.first.id : null;\n }\n\n private _getTabById(id: string | null): TabComponent | null {\n const tabsWithId: TabComponent[] = this.tabs.filter((tab) => tab.id === id);\n return tabsWithId.length ? tabsWithId[0] : null;\n }\n}\n","<div role=\"tablist\" class=\"tabs-head\" [class.tabs-head_small]=\"size === 's'\">\n @for (tab of tabs; track tab) {\n <button\n type=\"button\"\n class=\"tabs-head-item\"\n (click)=\"select(tab.id)\"\n [class.tabs-head-item_active]=\"tab.id === activeId\"\n [disabled]=\"tab.disabled\"\n >\n <span\n [id]=\"tab.id\"\n class=\"tabs-title\"\n role=\"tab\"\n [attr.tabindex]=\"tab.disabled ? '-1' : undefined\"\n [attr.aria-controls]=\"!destroyOnHide || tab.id === activeId ? tab.id + '-panel' : null\"\n [attr.aria-expanded]=\"tab.id === activeId\"\n [attr.aria-disabled]=\"tab.disabled\"\n >\n {{ tab.title }}\n <ng-template [ngTemplateOutlet]=\"tab.titleTpl?.template\"></ng-template>\n </span>\n </button>\n }\n <ng-content></ng-content>\n</div>\n<div class=\"tabs-content\">\n @for (tab of tabs; track tab) {\n @if (!destroyOnHide || tab.id === activeId) {\n <ng-template [ngTemplateOutlet]=\"tab.contentTpl?.template\"></ng-template>\n }\n }\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { ITreeData } from '../../../common/contract/i-tree-data';\nimport { TetaConfigService } from '../../../locale/teta-config.service';\nimport { FilterState } from '../../filter/contarct/filter-state';\nimport { HeadDropdownTab } from '../contract/head-dropdown-tab';\nimport { TableColumn } from '../contract/table-column';\nimport { TableService } from '../service/table.service';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TabContentDirective } from '../../tabs/tab-content.directive';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { TabTitleDirective } from '../../tabs/tab-title.directive';\nimport { TabComponent } from '../../tabs/tab/tab.component';\nimport { TabsComponent } from '../../tabs/tabs/tabs.component';\n\n@Component({\n selector: 'teta-head-cell-dropdown',\n templateUrl: './head-cell-dropdown.component.html',\n styleUrls: ['./head-cell-dropdown.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TabsComponent, TabComponent, TabTitleDirective, IconComponent, TabContentDirective, NgTemplateOutlet]\n})\nexport class HeadCellDropdownComponent<T> {\n @Input() columns: ITreeData[];\n @Input() column: TableColumn;\n @Input() state: FilterState;\n @Input() data: T[];\n @Input() tabTemplates: HeadDropdownTab[];\n @Input() dropDownOpen: boolean;\n @Output() dropDownOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor(\n private _svc: TableService<T>,\n private _config: TetaConfigService,\n private _cdr: ChangeDetectorRef,\n ) {}\n\n closeDropdown = () => {\n this.dropDownOpen = false;\n this.dropDownOpenChange.emit(false);\n };\n\n trackIndex(index) {\n return index;\n }\n}\n","@if (dropDownOpen) {\n <teta-tabs class=\"column_auto\">\n @for (tab of tabTemplates; track trackIndex($index)) {\n @if (tab.showTab(column)) {\n <teta-tab>\n <ng-template tetaTabTitle>\n @if (tab.icon) {\n <teta-icon [name]=\"tab.icon\" [palette]=\"'text'\"></teta-icon>\n }\n </ng-template>\n <ng-template tetaTabContent>\n <ng-container\n *ngTemplateOutlet=\"\n tab.template;\n context: {\n column: column,\n columns: columns,\n data: data,\n state: state,\n close: closeDropdown,\n }\n \"\n ></ng-container>\n </ng-template>\n </teta-tab>\n }\n }\n </teta-tabs>\n}\n","import { Component, HostBinding } from '@angular/core';\nimport { TableColumn } from '../contract/table-column';\n\n@Component({\n template: '',\n standalone: false\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport abstract class HeadCellComponentBase<T> {\n @HostBinding('class.table-head__cell__component')\n abstract column: TableColumn;\n abstract columns: TableColumn[];\n abstract data: T[];\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core';\nimport { HeadCellComponentBase } from '../../base/head-cell-component-base';\nimport { TableColumn } from '../../contract/table-column';\nimport { HintDirective } from '../../../../directive/hint/hint.directive';\n\n@Component({\n selector: 'teta-default-head-cell',\n templateUrl: './default-head-cell.component.html',\n styleUrls: ['./default-head-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [HintDirective]\n})\nexport class DefaultHeadCellComponent<T> extends HeadCellComponentBase<T>{\n private _column: TableColumn;\n private _columns: TableColumn[];\n private _data: T[];\n\n @Input()\n set column(val: TableColumn) {\n this._column = val;\n this._cdr.detectChanges();\n }\n\n get column(): TableColumn {\n return this._column;\n }\n\n @Input()\n set columns(val: TableColumn[]) {\n this._columns = val;\n this._cdr.detectChanges();\n }\n\n get columns(): TableColumn[] {\n return this._columns;\n }\n\n @Input()\n set data(data: T[]) {\n this._data = data;\n this._cdr.detectChanges();\n }\n\n get data(): T[] {\n return this._data;\n }\n\n constructor(private _cdr: ChangeDetectorRef) {\n super();\n }\n\n getHint(){\n const hintText = this.column.hint || this.column.caption;\n return `${hintText}${this.column.unit ? `, ${this.column.unit}` : ''}`;\n }\n}\n","<div class=\"column column_auto align-start justify-content-center\" [tetaHint]=\"getHint()\">\n <div class=\"table-head__cell__text\">\n {{ column.caption }}\n </div>\n @if (column.unit) {\n <div class=\"table-head__cell__text font-caption color-text-70\">[{{ column.unit }}]</div>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, ComponentRef, Input, OnInit, ViewContainerRef } from '@angular/core';\nimport { HeadCellComponentBase } from '../base/head-cell-component-base';\nimport { TableColumn } from '../contract/table-column';\nimport { DefaultHeadCellComponent } from '../default/default-head-cell/default-head-cell.component';\n\n@Component({\n selector: 'teta-head-cell-host',\n template: '',\n styleUrls: ['./head-cell-host.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class HeadCellHostComponent<T> implements OnInit {\n private _column: TableColumn;\n private _columns: TableColumn[];\n private _data: T[];\n\n private componentRef: ComponentRef<HeadCellComponentBase<T>>;\n private init: boolean;\n\n @Input()\n set column(column: TableColumn) {\n this._column = column;\n if (this.init) {\n this.componentRef.instance.column = this._column;\n }\n }\n\n get column(): TableColumn {\n return this._column;\n }\n\n @Input()\n set columns(columns: TableColumn[]) {\n this._columns = columns;\n if (this.init) {\n this.componentRef.instance.columns = this._columns;\n }\n }\n\n get columns(): TableColumn[] {\n return this._columns;\n }\n\n @Input()\n set data(data: T[]) {\n this._data = data;\n if (this.init) {\n this.componentRef.instance.data = this._data;\n }\n }\n\n get data(): T[] {\n return this._data;\n }\n\n constructor(private viewContainerRef: ViewContainerRef) {}\n\n ngOnInit(): void {\n if (!HeadCellComponentBase.isPrototypeOf(this.column.headCellComponent)) {\n this.column.headCellComponent = DefaultHeadCellComponent;\n }\n this.componentRef = this.viewContainerRef.createComponent<HeadCellComponentBase<T>>(this.column.headCellComponent);\n this.componentRef.instance.column = this.column;\n this.componentRef.instance.columns = this.columns;\n this.componentRef.instance.data = this.data;\n this.init = true;\n }\n}\n","import {\n ApplicationRef,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { TableColumn } from '../contract/table-column';\nimport { ColumnResizeEvent } from '../contract/column-resize-event';\nimport { FilterState } from '../../filter/contarct/filter-state';\nimport { TableService } from '../service/table.service';\nimport { map } from 'rxjs/operators';\nimport { SortParam } from '../../filter/contarct/sort-param';\nimport { StateUtil } from '../util/state-util';\nimport { VerticalAlign } from '../../../common/enum/vertical-align.enum';\nimport { Align } from '../../../common/enum/align.enum';\nimport { combineLatest, Observable } from 'rxjs';\nimport { HeadDropdownTab } from '../contract/head-dropdown-tab';\nimport { VisibilityDropdownTabComponent } from '../table-head/visibility-dropdown-tab/visibility-dropdown-tab.component';\nimport { FilterDropdownTabComponent } from '../table-head/filter-dropdown-tab/filter-dropdown-tab.component';\nimport { MainDropdownTabComponent } from '../table-head/main-dropdown-tab/main-dropdown-tab.component';\nimport { ResizeDragDirective } from '../../../directive/resize-drag/resize-drag.directive';\nimport { DropdownContentDirective } from '../../dropdown/dropdown-content.directive';\nimport { HeadCellDropdownComponent } from '../head-cell-dropdown/head-cell-dropdown.component';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { HeadCellHostComponent } from '../head-cell-host/head-cell-host.component';\nimport { NgClass, AsyncPipe } from '@angular/common';\nimport { DropdownHeadDirective } from '../../dropdown/dropdown-head.directive';\nimport { DropdownComponent } from '../../dropdown/dropdown/dropdown.component';\n\n@Component({\n selector: 'teta-head-cell',\n templateUrl: './head-cell.component.html',\n styleUrls: ['./head-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n DropdownComponent,\n DropdownHeadDirective,\n NgClass,\n HeadCellHostComponent,\n IconComponent,\n HeadCellDropdownComponent,\n DropdownContentDirective,\n ResizeDragDirective,\n MainDropdownTabComponent,\n FilterDropdownTabComponent,\n VisibilityDropdownTabComponent,\n AsyncPipe,\n ]\n})\nexport class HeadCellComponent<T> implements OnInit, OnDestroy {\n @Input() column: TableColumn;\n @Input() showHeadCellMenu: boolean;\n @Input() data: T[];\n\n verticalAlign = VerticalAlign;\n align = Align;\n state: Observable<FilterState>;\n columns: Observable<TableColumn[]>;\n filtered: Observable<boolean>;\n sortParam: Observable<SortParam>;\n iconName: Observable<string>;\n @HostBinding('class.table-head__cell_active')\n dropDownOpen = false;\n showDrag: 'left' | 'right' | null = null;\n private rect: any;\n\n private _alive = true;\n private _startPosition: number;\n\n @ViewChild('mainTemplate', { static: true }) mainTemplate: TemplateRef<any>;\n @ViewChild('filterTemplate', { static: true }) filterTemplate: TemplateRef<any>;\n @ViewChild('columnsTemplate', { static: true }) columnsTemplate: TemplateRef<any>;\n\n get defaultTemplates(): HeadDropdownTab[] {\n return [\n {\n icon: 'menu',\n template: this.mainTemplate,\n order: 10,\n showTab: () => true,\n },\n {\n icon: 'filter',\n template: this.filterTemplate,\n order: 20,\n showTab: (column) => column.filterable,\n },\n {\n icon: 'eye',\n template: this.columnsTemplate,\n order: 30,\n showTab: () => true,\n },\n ];\n }\n\n get elementRef() {\n return this._elementRef;\n }\n\n get tabTemplates() {\n if (this.column?.headDropdownConfig && this.column.headDropdownConfig.tabs?.length > 0) {\n if (this.column.headDropdownConfig.strategy === 'replace') {\n return this.column.headDropdownConfig.tabs;\n }\n return [...this.defaultTemplates, ...this.column.headDropdownConfig.tabs].sort((a, b) => a.order - b.order);\n }\n\n return this.defaultTemplates;\n }\n\n private observer: IntersectionObserver;\n\n constructor(\n private _svc: TableService<T>,\n private _app: ApplicationRef,\n private _elementRef: ElementRef,\n private _cdr: ChangeDetectorRef,\n ) {}\n\n dragstart(event: DragEvent): void {\n if (event && event.dataTransfer) {\n event.dataTransfer.setData('text', 'move');\n }\n this._svc.dragStart(this.column);\n }\n\n @HostListener('dragenter', ['$event']) dragenter(): void {\n this.rect = this._elementRef.nativeElement.getBoundingClientRect();\n }\n\n @HostListener('dragover', ['$event']) allowDrop(event: DragEvent): void {\n event.preventDefault();\n if (this.rect && this._svc.dragSource) {\n this.showDrag = event.clientX >= this.rect.x + this.rect.width / 2 ? 'right' : 'left';\n }\n }\n\n @HostListener('dragleave', ['$event']) dragleave(event: DragEvent): void {\n event.preventDefault();\n this.showDrag = null;\n }\n\n @HostListener('dragend', ['$event']) dragend(): void {\n this.showDrag = null;\n }\n\n @HostListener('drop', ['$event']) drop(event: DragEvent): void {\n const move = event.dataTransfer && event.dataTransfer.getData('text');\n if (move === 'move') {\n this._svc.reorderColumn(this.column, this.showDrag === 'left');\n }\n this.showDrag = null;\n }\n\n ngOnInit(): void {\n this.columns = this._svc.columns;\n this.state = this._svc.state;\n this.sortParam = this.state.pipe(map((_) => StateUtil.getSortState(_, this.column)));\n this.filtered = this.state.pipe(map((_) => StateUtil.isColumnFiltered(_, this.column)));\n this.iconName = combineLatest([this.sortParam, this.filtered]).pipe(\n map((data: [SortParam, boolean]) => {\n const [sortParam, filtered] = data;\n if (sortParam && filtered) {\n return sortParam.asc ? 'filterSortUp' : 'filterSortDown';\n }\n if (sortParam) {\n return sortParam.asc ? 'arrowUp' : 'arrowDown';\n }\n if (filtered) {\n return 'filter';\n }\n return '';\n }),\n );\n\n this.observer = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]) => {\n entries.forEach((entry) => {\n if (!entry.isIntersecting && this.dropDownOpen) {\n this.dropDownOpen = false;\n this._cdr.detectChanges();\n }\n });\n },\n {\n root: this._svc.getTableElement(this._elementRef.nativeElement),\n threshold: [1],\n },\n );\n this.observer.observe(this._elementRef.nativeElement);\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n this.observer.unobserve(this._elementRef.nativeElement);\n this.observer.disconnect();\n }\n\n resizeStart(): void {\n const rect = this._elementRef.nativeElement.getBoundingClientRect();\n this._startPosition = rect.x;\n this._svc.lockPreviousColumns(this.column, this._elementRef.nativeElement);\n }\n\n resizeProcess(event: MouseEvent): void {\n if (this._startPosition && event.pageX > 0) {\n const position = this._startPosition;\n requestAnimationFrame(() => {\n this._svc.resizeColumn(new ColumnResizeEvent(this.column, event.pageX - position));\n this._app.tick();\n });\n }\n }\n\n resizeEnd() {\n this._startPosition = null;\n }\n}\n","<div class=\"row row_auto\">\n <teta-dropdown\n [autoCloseIgnore]=\"['enter', 'inside']\"\n [verticalAlign]=\"verticalAlign.auto\"\n [appendToBody]=\"true\"\n [(open)]=\"dropDownOpen\"\n [align]=\"align.auto\"\n (click)=\"$event.preventDefault()\"\n [class.table-head__cell__menu_open]=\"dropDownOpen\"\n class=\"column column_auto justify-content-center\"\n >\n <div\n tetaDropdownHead\n draggable=\"true\"\n class=\"table-head__cell__wrapper\"\n (dragstart)=\"dragstart($event)\"\n [ngClass]=\"column.headCellClass\"\n >\n <teta-head-cell-host [column]=\"column\" [columns]=\"columns | async\" [data]=\"data\"></teta-head-cell-host>\n @if (iconName | async; as icon) {\n <teta-icon [palette]=\"'text'\" [name]=\"icon\"></teta-icon>\n }\n </div>\n @if (showHeadCellMenu) {\n <teta-head-cell-dropdown\n tetaDropdownContent\n [tabTemplates]=\"tabTemplates\"\n [data]=\"data\"\n [column]=\"column\"\n [columns]=\"columns | async\"\n [state]=\"state | async\"\n [(dropDownOpen)]=\"dropDownOpen\"\n ></teta-head-cell-dropdown>\n }\n </teta-dropdown>\n @if (showDrag) {\n <div\n class=\"drop-area\"\n draggable=\"false\"\n [class.drop-area_left]=\"showDrag === 'left'\"\n [class.drop-area_right]=\"showDrag === 'right'\"\n ></div>\n }\n</div>\n<div\n class=\"table-head__cell__resize\"\n draggable=\"false\"\n (dragstart)=\"$event.preventDefault(); $event.stopPropagation()\"\n (drag)=\"$event.preventDefault(); $event.stopPropagation()\"\n [tetaResizeDrag]=\"'vertical'\"\n (resizeStart)=\"resizeStart()\"\n (resizeProcess)=\"resizeProcess($event)\"\n (resizeEnd)=\"resizeEnd()\"\n>\n <div class=\"table-head__cell__resize_drag\"></div>\n</div>\n<ng-template\n #mainTemplate\n let-column=\"column\"\n let-columns=\"columns\"\n let-data=\"data\"\n let-state=\"state\"\n let-close=\"close\"\n>\n <teta-main-dropdown-tab\n [column]=\"column\"\n [state]=\"state\"\n [close]=\"close\"\n [headCellElementRef]=\"elementRef\"\n ></teta-main-dropdown-tab>\n</ng-template>\n<ng-template\n #filterTemplate\n let-column=\"column\"\n let-columns=\"columns\"\n let-data=\"data\"\n let-state=\"state\"\n let-close=\"close\"\n>\n <teta-filter-dropdown-tab [column]=\"column\" [state]=\"state\" [close]=\"close\" [data]=\"data\"></teta-filter-dropdown-tab>\n</ng-template>\n<ng-template\n #columnsTemplate\n let-column=\"column\"\n let-columns=\"columns\"\n let-data=\"data\"\n let-state=\"state\"\n let-close=\"close\"\n>\n <teta-visibility-dropdown-tab\n [column]=\"column\"\n [columns]=\"columns\"\n [state]=\"state\"\n [close]=\"close\"\n [data]=\"data\"\n ></teta-visibility-dropdown-tab>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { TableColumn } from '../contract/table-column';\nimport { TableUtil } from '../util/table-util';\nimport { TableService } from '../service/table.service';\nimport { takeWhile } from 'rxjs/operators';\nimport { ArrayUtil } from '../../../common/util/array-util';\nimport { HeadCellComponent } from '../head-cell/head-cell.component';\n\n@Component({\n selector: 'teta-table-head-group',\n templateUrl: './table-head-group.component.html',\n styleUrls: ['./table-head-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [HeadCellComponent]\n})\nexport class TableHeadGroupComponent<T> implements OnInit, OnDestroy {\n @Input() showHeadCellMenu: boolean;\n @Input() data: T[];\n\n @Input()\n set column(column: TableColumn) {\n this._column = column;\n }\n\n get column(): TableColumn {\n return this._column;\n }\n\n @HostBinding('style.flex-grow') get flexGrow() {\n if (this.column?.columns?.length > 0) {\n const flat = ArrayUtil.flatten(this.column?.columns, 'columns', true).filter(\n (_) => this._hiddenColumns.indexOf(_.name) < 0,\n );\n return flat?.reduce((prev, curr) => prev + curr.flex, 0);\n }\n return this.column.flex;\n }\n\n @HostBinding('style.min-width.px')\n @HostBinding('style.flex-basis.px')\n get flexBasis() {\n if (this.column?.columns?.length > 0) {\n const flat = ArrayUtil.flatten(this.column?.columns, 'columns', true).filter(\n (_) => this._hiddenColumns.indexOf(_.name) < 0,\n );\n return flat?.reduce((prev, curr) => prev + curr.width, 0);\n }\n return this.column.width;\n }\n\n private _alive = true;\n private _column: TableColumn;\n private _hiddenColumns: string[];\n\n private get _leaves() {\n return TableUtil.getColumnLeaves(this._column)?.filter((_) => this._hiddenColumns.indexOf(_.name) < 0);\n }\n\n constructor(\n private _svc: TableService<T>,\n private _cdr: ChangeDetectorRef,\n ) {\n this._svc.hiddenColumns.pipe(takeWhile((_) => this._alive)).subscribe((_) => {\n this._hiddenColumns = _;\n this._cdr.markForCheck();\n });\n }\n\n columnIsHidden(column: TableColumn) {\n return this._svc.columnIsHidden(column);\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","@if (column.columns && column.columns.length > 0) {\n <div class=\"table-head__group__container\">\n <div class=\"table-head__group__caption\">\n {{ column.caption }}\n </div>\n <div class=\"table-head__group__children\">\n @for (col of column.columns; track col) {\n @if (!columnIsHidden(col)) {\n <teta-table-head-group\n class=\"table-head__group\"\n [data]=\"data\"\n [showHeadCellMenu]=\"showHeadCellMenu\"\n [column]=\"col\"\n ></teta-table-head-group>\n }\n }\n </div>\n </div>\n}\n@if (!column.columns || column.columns.length === 0) {\n @if (!columnIsHidden(column)) {\n <teta-head-cell\n class=\"table-head__cell\"\n [data]=\"data\"\n [showHeadCellMenu]=\"showHeadCellMenu\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n ></teta-head-cell>\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, OnDestroy, OnInit } from '@angular/core';\nimport { TableService } from '../service/table.service';\nimport { takeWhile } from 'rxjs/operators';\nimport { FormsModule } from '@angular/forms';\nimport { CheckboxComponent } from '../../checkbox/checkbox/checkbox.component';\n\n@Component({\n selector: 'teta-selection-head-cell',\n templateUrl: './selection-head-cell.component.html',\n styleUrls: ['./selection-head-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CheckboxComponent, FormsModule]\n})\nexport class SelectionHeadCellComponent<T> implements OnInit, OnDestroy {\n @HostBinding('class.table-head__group') private readonly tableCellClass = true;\n\n private _alive = true;\n\n constructor(\n private _svc: TableService<T>,\n private _cdr: ChangeDetectorRef,\n ) {}\n\n selectAll(value: boolean) {\n if (value) {\n this._svc.selectAll();\n } else {\n this._svc.deselectAll();\n }\n }\n\n allSelected() {\n return this._svc.allRowsSelected();\n }\n\n ngOnInit(): void {\n this._svc.selectedRows.pipe(takeWhile((_) => this._alive)).subscribe((_) => {\n this._cdr.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","<teta-checkbox\n [binary]=\"true\"\n [allowNull]=\"true\"\n [noLabel]=\"true\"\n [ngModel]=\"allSelected()\"\n (ngModelChange)=\"selectAll($event)\"\n></teta-checkbox>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { combineLatest } from 'rxjs';\nimport { takeWhile } from 'rxjs/operators';\n\nimport { ArrayUtil } from '../../../common/util/array-util';\nimport { FilterState } from '../../filter/contarct/filter-state';\nimport { TableColumn } from '../contract/table-column';\nimport { SelectType } from '../enum/select-type.enum';\nimport { TableService } from '../service/table.service';\nimport { TableHeadGroupComponent } from '../table-head-group/table-head-group.component';\nimport { SelectionHeadCellComponent } from '../selection-head-cell/selection-head-cell.component';\n\n@Component({\n selector: 'teta-table-head',\n templateUrl: './table-head.component.html',\n styleUrls: ['./table-head.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SelectionHeadCellComponent, TableHeadGroupComponent]\n})\nexport class TableHeadComponent<T> implements OnInit, OnDestroy {\n @Input() selectType: SelectType;\n @Input() showHeadCellMenu: boolean;\n @HostBinding('class.table-head') private readonly tableHeadClass = true;\n\n state: FilterState;\n selectTypeEnum = SelectType;\n lockedFlex: number;\n lockedWidth: number;\n\n private _alive = true;\n private _columns: TableColumn[] = [];\n private _hiddenColumns: string[] = [];\n\n set columns(columns: TableColumn[]) {\n this._columns = columns;\n this._cdr.markForCheck();\n }\n\n get columns(): TableColumn[] {\n return this._columns;\n }\n\n get locked(): TableColumn[] {\n return this._columns.filter((_) => _.locked === true && this._hiddenColumns.indexOf(_.name) < 0);\n }\n\n get unlocked(): TableColumn[] {\n return this._columns.filter((_) => _.locked === false && this._hiddenColumns.indexOf(_.name) < 0);\n }\n\n data: T[];\n\n constructor(\n private _svc: TableService<T>,\n private _cdr: ChangeDetectorRef,\n ) {}\n\n track(index: number, item: TableColumn): any {\n return item.name;\n }\n\n ngOnInit(): void {\n combineLatest([this._svc.columns, this._svc.hiddenColumns])\n .pipe(takeWhile((_) => this._alive))\n .subscribe((values: [TableColumn[], string[]]) => {\n const [columns, hiddenColumns] = values;\n this._hiddenColumns = hiddenColumns;\n this.columns = columns;\n const locked = ArrayUtil.flatten(columns, 'columns', true).filter(\n (_) => this._hiddenColumns.indexOf(_.name) < 0 && _.locked,\n );\n const startWidth = this.selectType === SelectType.checkBox ? 28 : 0;\n this.lockedFlex = locked.reduce((prev: number, curr: TableColumn) => prev + curr.flex, 0);\n this.lockedWidth = locked.reduce((prev: number, curr: TableColumn) => prev + curr.width, startWidth);\n this._cdr.markForCheck();\n });\n\n this._svc.state.pipe(takeWhile((_) => this._alive)).subscribe((_) => {\n this.state = _;\n this._cdr.markForCheck();\n });\n\n this._svc.displayData.pipe(takeWhile((_) => this._alive)).subscribe((_) => {\n this.data = _.map((_) => _.data);\n this._cdr.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","@if (locked?.length) {\n <div\n class=\"table-head_locked\"\n [style.flex-grow]=\"lockedFlex\"\n [style.flex-basis.px]=\"lockedWidth\"\n [style.min-width.px]=\"lockedWidth\"\n >\n @if (selectType === selectTypeEnum.checkBox) {\n <teta-selection-head-cell style=\"width: 28px\"></teta-selection-head-cell>\n }\n @for (column of locked; track track($index, column)) {\n <teta-table-head-group\n class=\"table-head__group\"\n [data]=\"data\"\n [showHeadCellMenu]=\"showHeadCellMenu\"\n [column]=\"column\"\n ></teta-table-head-group>\n }\n </div>\n}\n@if (unlocked?.length) {\n @if (selectType === selectTypeEnum.checkBox && locked?.length < 1) {\n <teta-selection-head-cell style=\"width: 28px\"></teta-selection-head-cell>\n }\n @for (column of unlocked; track track($index, column)) {\n <teta-table-head-group\n class=\"table-head__group\"\n [data]=\"data\"\n [showHeadCellMenu]=\"showHeadCellMenu\"\n [column]=\"column\"\n ></teta-table-head-group>\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n input,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n Type,\n ViewChild,\n} from '@angular/core';\nimport { filter, takeWhile } from 'rxjs/operators';\n\nimport { IDictionary } from '../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { Align } from '../../../common/enum/align.enum';\nimport { VerticalAlign } from '../../../common/enum/vertical-align.enum';\nimport { FilterState } from '../../filter/contarct/filter-state';\nimport { FilterType } from '../../filter/enum/filter-type.enum';\nimport { DetailComponentBase } from '../base/detail-component-base';\nimport { ICellCoordinates } from '../contract/i-cell-coordinates';\nimport { ICellEvent } from '../contract/i-cell-event';\nimport { ICellInstance, ICellInstanceEvent } from '../contract/i-cell-instance';\nimport { TableColumn } from '../contract/table-column';\nimport { TableRow } from '../contract/table-row';\nimport { EditEvent } from '../enum/edit-event.enum';\nimport { EditType } from '../enum/edit-type.enum';\nimport { SelectType } from '../enum/select-type.enum';\nimport { TableService } from '../service/table.service';\nimport { TableBodyComponent } from '../table-body/table-body.component';\nimport { ContextMenuDirective } from '../../../directive/context-menu/context-menu.directive';\nimport { TableHeadComponent } from '../table-head/table-head.component';\n\n@Component({\n selector: 'teta-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TableService],\n imports: [TableHeadComponent, ContextMenuDirective, TableBodyComponent]\n})\nexport class TableComponent<T> implements OnInit, OnDestroy, AfterViewInit, OnChanges {\n @Input() data: T[] = [];\n @Input() columns: TableColumn[] = [];\n @Input() dict: IDictionary<IIdName<any>[]>;\n @Input() filterOptions: IDictionary<IIdName<any>[]>;\n\n @Input()\n set state(state: FilterState) {\n this._state = state;\n }\n\n @Input() cookieName: string;\n @Input() virtual: boolean;\n @Input() detailComponent: Type<DetailComponentBase<T>>;\n @Input() activeRow: T;\n @Input() selectedRows: T[];\n @Input() selectType: SelectType = SelectType.mouse;\n @Input() aggregate: boolean;\n @Input() trackRow: (index: number, row: T) => any = (index: number, row: T) => {\n if (row['id']) {\n return row['id'];\n }\n return index;\n };\n @Input() trackColumns: (index: number, column: TableColumn) => any = (index: number, column: TableColumn) => {\n return column.name;\n };\n @Input() editType: EditType = EditType.cell;\n @Input() editEvent: EditEvent = EditEvent.doubleClick;\n @Input() rowEditable: boolean | ((row: T) => boolean);\n @Input() rowClass: (row: T, index?: number) => string;\n\n @Input() set scrollToIndex(index: number) {\n this._svc.scrollToIndex(index);\n }\n\n @Input() showHeadCellMenu = true;\n @Input() contextMenu: TemplateRef<any>;\n @Input() contextMenuOpen: boolean;\n @Output() contextMenuOpenChange = new EventEmitter<boolean>();\n\n @Output()\n stateChange: EventEmitter<FilterState> = new EventEmitter<FilterState>();\n @Output() bodyLeft = new EventEmitter<T>();\n @Output() activeRowChange: EventEmitter<T> = new EventEmitter();\n @Output() selectedRowsChange: EventEmitter<T[]> = new EventEmitter();\n @Output() cellClick = new EventEmitter<ICellInstanceEvent<T>>();\n @Output() cellDoubleClick = new EventEmitter<ICellInstanceEvent<T>>();\n @Output() cellFocus = new EventEmitter<ICellInstanceEvent<T>>();\n @Output() cellKeyDown = new EventEmitter<ICellInstanceEvent<T>>();\n @Output() rowLeft = new EventEmitter<T>();\n @Output() rowEditStart = new EventEmitter<ICellInstance<T>>();\n @Output() rowEditEnd = new EventEmitter<TableRow<T>>();\n @Output() cellEditStart = new EventEmitter<ICellInstance<T>>();\n @Output() cellEditEnd = new EventEmitter<ICellInstance<T>>();\n @Output() valueChange = new EventEmitter<ICellInstance<T>>();\n @Output() tableService = new EventEmitter<TableService<T>>();\n @ViewChild('contextMenu', { static: true }) menu: ElementRef;\n @HostBinding('class.table') private readonly tableClass = true;\n rowHeight = input<number>(28);\n\n selectedRowsList: T[];\n contextMenuRow: T;\n verticalAlign = VerticalAlign;\n align = Align;\n private _alive = true;\n private _headElement: HTMLElement;\n private _state: FilterState;\n\n constructor(\n private _svc: TableService<T>,\n private _elementRef: ElementRef,\n ) {\n this._svc.state\n .pipe(\n takeWhile(() => this._alive),\n filter((state) => state !== this._state),\n )\n .subscribe((state: FilterState) => this.stateChange.next(state));\n\n this._svc.editCellStart\n .pipe(takeWhile(() => this._alive))\n .subscribe((item: ICellEvent) => this.cellEditStart.emit(this._svc.getCellInstance(item)));\n\n this._svc.editCellStop\n .pipe(takeWhile(() => this._alive))\n .subscribe((item: ICellCoordinates) => this.cellEditEnd.emit(this._svc.getCellInstance(item)));\n\n this._svc.editRowStart\n .pipe(takeWhile(() => this._alive))\n .subscribe((item: ICellEvent) => this.rowEditStart.emit(this._svc.getCellInstance(item)));\n\n this._svc.editRowStop\n .pipe(takeWhile(() => this._alive))\n .subscribe((item: ICellCoordinates) => this.rowEditEnd.emit(this._svc.getRowByIndex(item?.row)));\n\n this._svc.selectedRows.pipe(takeWhile(() => this._alive)).subscribe((items: T[]) => {\n this.selectedRowsList = items;\n this.selectedRowsChange.emit(items);\n });\n\n this._svc.activeRow.pipe(takeWhile(() => this._alive)).subscribe((item: T) => {\n this.activeRow = item;\n this.activeRowChange.emit(item);\n });\n\n this._svc.valueChanged.pipe(takeWhile(() => this._alive)).subscribe((coordinates: ICellCoordinates) => {\n this.valueChange.emit(this._svc.getCellInstance(coordinates));\n });\n }\n\n @HostListener('document:click', ['$event']) handleClickOutsideAnyRow(event: MouseEvent) {\n const coordinates = this.getCoordinates(event);\n const row = this.getRow(event);\n const eventIsOnRow = this.eventIsOnRow(event);\n setTimeout(() => {\n if (coordinates) {\n this.cellClick.emit({\n ...this._svc.getCellInstance(coordinates),\n event,\n });\n if (this.editEvent === EditEvent.click) {\n this.startEditRowOrCell(coordinates);\n } else {\n if (\n this._svc.currentEditCell &&\n (coordinates.row !== this._svc.currentEditCell.row ||\n coordinates.column !== this._svc.currentEditCell.column)\n ) {\n this.startEditRowOrCell(null);\n }\n }\n }\n if (row) {\n if (event.ctrlKey) {\n this._svc.selectOrDeselectRow(row.data);\n } else if (event.shiftKey) {\n this._svc.selectRange(row.data);\n } else {\n this._svc.selectRows([row.data]);\n }\n }\n if (!eventIsOnRow && !event.defaultPrevented) {\n if (this.editType === EditType.row) {\n this._svc.startEditRow(null);\n } else {\n this._svc.startEditCell(null);\n }\n }\n });\n }\n\n @HostListener('focusin', ['$event']) focusIn(event: FocusEvent) {\n const coordinates = this.getCoordinates(event);\n if (coordinates) {\n this.cellFocus.emit({\n ...this._svc.getCellInstance(coordinates),\n event,\n });\n if (this.editEvent === EditEvent.focus) {\n this.startEditRowOrCell(coordinates);\n }\n }\n }\n\n @HostListener('dblclick', ['$event'])\n dblclick(event: MouseEvent) {\n const coordinates = this.getCoordinates(event);\n if (coordinates) {\n setTimeout(() => {\n this.cellDoubleClick.emit({\n ...this._svc.getCellInstance(coordinates),\n event,\n });\n if (this.editEvent === EditEvent.doubleClick) {\n this.startEditRowOrCell(coordinates);\n }\n });\n }\n }\n\n @HostListener('keydown', ['$event'])\n keydown(event: KeyboardEvent) {\n if (event.ctrlKey) {\n if (event.code === 'KeyA') {\n event.preventDefault();\n this._svc.selectAll();\n }\n return;\n }\n if (event.key === 'Escape') {\n this._svc.deselectAll();\n if (this.editType === EditType.row) {\n this._svc.startEditRow(null);\n } else {\n this._svc.startEditCell(null);\n }\n }\n const coordinates = this.getCoordinates(event);\n if (event.key === 'Enter') {\n if (this.editType === EditType.row) {\n this._svc.startEditRow(null);\n } else {\n if (this._svc.currentEditCell) {\n const target = this._svc.getNextRowCell(coordinates);\n if (target) {\n this.startEditRowOrCell({\n row: target.row,\n column: target.column,\n event: undefined,\n });\n } else {\n this._svc.startEditCell(null);\n }\n }\n }\n }\n if (coordinates) {\n this.cellKeyDown.emit({\n ...this._svc.getCellInstance(coordinates),\n event,\n });\n if (event.key && (event.key.length === 1 || event.key === 'Delete')) {\n const column = this._svc.getColumnByName(coordinates.column);\n if (column.filterType !== FilterType.number || isFinite(event.key as any)) {\n this.startEditRowOrCell({\n row: coordinates.row,\n column: coordinates.column,\n event: event,\n });\n }\n }\n if (event.key === 'Tab' && this._svc.currentEditCell) {\n event.preventDefault();\n let target = this._svc.getNextEditableCell(coordinates);\n if (event.shiftKey) {\n target = this._svc.getPreviousEditableCell(coordinates);\n }\n if (target) {\n this.startEditRowOrCell({\n row: target.row,\n column: target.column,\n event: undefined,\n });\n }\n }\n if (!this._svc.currentEditCell) {\n let target;\n if (event.key === 'ArrowRight') {\n target = this._svc.getNextCell(coordinates);\n }\n if (event.key === 'ArrowLeft') {\n target = this._svc.getPreviousCell(coordinates);\n }\n if (event.key === 'ArrowUp') {\n target = this._svc.getPreviousRowCell(coordinates);\n }\n if (event.key === 'ArrowDown') {\n target = this._svc.getNextRowCell(coordinates);\n }\n if (target) {\n event.preventDefault();\n const element = this.getCellElement(target);\n element?.focus();\n }\n }\n }\n }\n\n @HostListener('mousedown', ['$event']) mousedown(event: MouseEvent) {\n if (event.button === 2) {\n event.preventDefault();\n }\n }\n\n ngOnInit(): void {\n this._svc.restoreState();\n this._svc.restoreHiddenColumns();\n this.tableService.emit(this._svc);\n }\n\n ngAfterViewInit(): void {\n this._headElement = this._elementRef.nativeElement.querySelector('.table-head');\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (Object.prototype.hasOwnProperty.call(changes, 'editType')) {\n this._svc.editType = this.editType;\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'selectType')) {\n this._svc.selectType = this.selectType;\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'selectedRows')) {\n this._svc.selectRows(this.selectedRows);\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'rowEditable')) {\n this._svc.rowEditable = this.rowEditable;\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'cookieName')) {\n this._svc.setCookieName(this.cookieName);\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'columns')) {\n if (this.columns !== null && this.columns !== undefined) {\n this._svc.setColumns(this.columns);\n }\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'data')) {\n this._svc.setData(this.data);\n this._svc.selectRows(\n this.data?.filter((row) => {\n return this.selectedRows?.some(\n (selectedRow) =>\n this.trackRow(this._svc.getRowIndex(selectedRow), selectedRow) ===\n this.trackRow(this._svc.getRowIndex(row), row),\n );\n }),\n );\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'dict')) {\n this._svc.setDict(this.dict);\n this._svc.setFilterOptions(this.dict);\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'filterOptions')) {\n this._svc.setFilterOptions(this.filterOptions);\n }\n if (Object.prototype.hasOwnProperty.call(changes, 'trackRow')) {\n this._svc.trackRow = this.trackRow;\n }\n }\n\n setContextMenuOpen(value: boolean) {\n this.contextMenuOpen = value;\n this.contextMenuOpenChange.emit(this.contextMenuOpen);\n }\n\n setContextMenuRow(event: MouseEvent) {\n this.contextMenuRow = null;\n const rowElement = this._svc.getEventRow(event);\n if (rowElement) {\n const rowIndex = parseInt(rowElement.getAttribute('data-row'), 10);\n if (rowIndex >= 0) {\n this.contextMenuRow = this._svc.getRowByIndex(rowIndex).data;\n }\n }\n }\n\n private startEditRowOrCell(coordinates: ICellEvent): void {\n if (this.editType === EditType.row) {\n this._svc.startEditRow(coordinates);\n }\n if (this.editType === EditType.cell) {\n this._svc.startEditCell(coordinates);\n }\n }\n\n private getCellElement(coordinates: ICellCoordinates): HTMLElement | null {\n return this._elementRef.nativeElement.querySelector(\n `teta-cell[data-row=\"${coordinates.row}\"][data-column=\"${coordinates.column}\"]`,\n );\n }\n\n private eventIsOnRow(event: Event): boolean {\n const row = event.composedPath().find((target) => {\n return (target as HTMLElement)?.getAttribute && (target as HTMLElement)?.getAttribute('data-row');\n });\n return row && this._elementRef.nativeElement.contains(row);\n }\n\n private getCoordinates(event: Event): ICellEvent | null {\n if (event.composedPath().indexOf(this._elementRef.nativeElement) < 0) {\n return null;\n }\n const cell = this._svc.getEventCell(event);\n if (cell) {\n const rowIndex = parseInt(cell.getAttribute('data-row'), 10);\n const columnName = cell.getAttribute('data-column');\n if (rowIndex >= 0 && columnName) {\n return {\n row: rowIndex,\n column: columnName,\n event,\n };\n }\n }\n return null;\n }\n\n private getRow(event: Event): TableRow<T> | null {\n if (event.composedPath().indexOf(this._elementRef.nativeElement) < 0) {\n return null;\n }\n const rowElement = this._svc.getEventRow(event);\n if (rowElement) {\n const rowIndex = parseInt(rowElement.getAttribute('data-row'), 10);\n if (rowIndex >= 0) {\n return this._svc.getRowByIndex(rowIndex);\n }\n }\n return null;\n }\n\n onScroll = (event) => {\n this._headElement.scrollLeft = event.target.scrollLeft;\n };\n\n // private getSelectedText() {\n // let text = '';\n // if (typeof window.getSelection != 'undefined') {\n // text = window.getSelection().toString();\n // }\n // return text;\n // }\n}\n","<div class=\"column column_auto\">\n <teta-table-head style=\"z-index: 1\" [selectType]=\"selectType\" [showHeadCellMenu]=\"showHeadCellMenu\"></teta-table-head>\n <div\n class=\"column column_auto position-relative\"\n style=\"z-index: 0\"\n [tetaContextMenu]=\"contextMenu\"\n [verticalAlign]=\"verticalAlign.auto\"\n [align]=\"align.auto\"\n [appendToBody]=\"true\"\n [data]=\"contextMenuRow\"\n [open]=\"contextMenuOpen\"\n (openChange)=\"setContextMenuOpen($event)\"\n >\n <teta-table-body\n (contextmenu)=\"setContextMenuRow($event)\"\n (scrollChange)=\"onScroll($event)\"\n [aggregate]=\"aggregate\"\n [virtual]=\"virtual\"\n [activeRow]=\"activeRow\"\n [trackRow]=\"trackRow\"\n [trackColumns]=\"trackColumns\"\n [selectedRows]=\"selectedRowsList\"\n [additionalComponent]=\"detailComponent\"\n [selectType]=\"selectType\"\n [rowClass]=\"rowClass\"\n [rowHeight]=\"rowHeight()\"\n >\n <ng-content></ng-content>\n </teta-table-body>\n </div>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';\n\nimport { DatePickerComponent } from '../../../date-picker/date-picker/date-picker.component';\nimport { CellComponentBase } from '../../base/cell-component-base';\nimport { ICellCoordinates } from '../../contract/i-cell-coordinates';\nimport { TableService } from '../../service/table.service';\nimport { DatePipe } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n selector: 'teta-date-time-cell',\n templateUrl: './date-time-cell.component.html',\n styleUrls: ['./date-time-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DatePickerComponent, FormsModule, ReactiveFormsModule, DatePipe]\n})\nexport class DateTimeCellComponent<T> extends CellComponentBase<T> implements OnInit {\n @ViewChild('input', { static: false }) input: DatePickerComponent;\n\n constructor(\n protected override svc: TableService<T>,\n protected override cdr: ChangeDetectorRef,\n ) {\n super(svc, cdr);\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n }\n\n startEdit(initiator: ICellCoordinates, type: 'cell' | 'row'): void {\n if (initiator?.column === this.column.name) {\n setTimeout(() => {\n this.input?.openPicker(true);\n this.cdr.markForCheck();\n }, 0);\n }\n }\n\n stopEdit(): void {\n this.cdr.markForCheck();\n }\n}\n","<span [style.display]=\"edit ? 'none' : 'block'\" class=\"cell-text\" [class.cell-text_disabled]=\"!editable\">\n {{ control?.value | date: 'dd.MM.yyyy HH:mm:ss' }}\n</span>\n@if (edit) {\n <teta-date-picker\n class=\"datepicker-table\"\n #input\n [appendToBody]=\"true\"\n [showTime]=\"true\"\n [formControl]=\"control\"\n ></teta-date-picker>\n}\n","import { TableColumn } from '../contract/table-column';\n\nexport abstract class DetailComponentBase<T> {\n /**\n * The row details are displayed for\n */\n abstract row: T;\n /**\n * displayed columns\n */\n abstract columns: TableColumn[];\n}\n","/**\n * Components\n */\nexport * from './table/table.component';\nexport * from './table-head/table-head.component';\nexport * from './table-body/table-body.component';\nexport * from './table-row/table-row.component';\nexport * from './head-cell-host/head-cell-host.component';\nexport * from './cell/cell.component';\nexport * from './cell-host/cell-host.component';\n\n/**\n * default\n */\nexport * from './default/date-cell/date-cell.component';\nexport * from './default/boolean-cell/boolean-cell.component';\nexport * from './default/date-time-cell/date-time-cell.component';\nexport * from './default/list-cell/list-cell.component';\nexport * from './default/numeric-cell/numeric-cell.component';\nexport * from './default/string-cell/string-cell.component';\n\n/**\n * base\n */\nexport * from './base/detail-component-base';\nexport * from './base/cell-component-base';\nexport * from './base/head-cell-component-base';\n\n/**\n * Service\n */\nexport * from './service/table.service';\n\n/**\n * contract\n */\nexport * from './contract/public-api';\n\n/**\n * enum\n */\nexport * from './enum/public-api';\n/**\n * enum\n */\nexport * from './util/public-api';\n","/**\n * Components\n */\nexport * from './tab/tab.component';\nexport * from './tabs/tabs.component';\n\n/**\n * Directives\n */\nexport * from './tab-title.directive';\nexport * from './tab-content.directive';\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { ThemeSwitchService } from '../theme-switch.service';\nimport { Observable } from 'rxjs';\nimport { ButtonViewType, ButtonComponent } from '../../button/button/button.component';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'teta-theme-switch',\n templateUrl: './theme-switch.component.html',\n styleUrls: ['./theme-switch.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ButtonComponent, IconComponent, AsyncPipe]\n})\nexport class ThemeSwitchComponent implements OnInit {\n @Input() palette = 'text';\n @Input() view: ButtonViewType = 'ghost';\n theme: Observable<boolean>;\n\n constructor(private _svc: ThemeSwitchService) {\n this.theme = this._svc.theme;\n }\n\n ngOnInit(): void {}\n\n switchTheme() {\n this._svc.switchTheme();\n }\n}\n","<button type=\"button\" teta-button [palette]=\"palette\" [view]=\"view\" [square]=\"true\" (click)=\"switchTheme()\">\n <teta-icon [name]=\"(theme | async) ? 'lightMode' : 'darkMode'\" [palette]=\"'text'\"></teta-icon>\n</button>\n","/**\n * Components\n */\nexport * from './toolbar/toolbar.component';\n","import { Component, computed, input, Signal } from '@angular/core';\nimport { IIdName } from '../../../common/contract/i-id-name';\n\n@Component({\n selector: 'app-stepper',\n imports: [],\n templateUrl: './stepper.component.html',\n styleUrl: './stepper.component.scss'\n})\nexport class StepperComponent {\n steps = input.required<IIdName<number>[]>();\n currentStepId = input.required<number>();\n currentIndex: Signal<number> = computed(\n () => this.steps().findIndex((step) => step.id === this.currentStepId()) ?? 0,\n );\n}\n","@if (steps().length) {\n <ul\n class=\"stepper\"\n [style]=\"\n '--step-count: ' +\n (steps().length - 1) +\n '; --padding-left: ' +\n steps().at(0).name.length / 2 +\n 'ch; --padding-right: ' +\n steps().at(-1).name.length / 2 +\n 'ch;'\n \"\n >\n @for (step of steps(); track step.id; let index = $index) {\n <li class=\"font-title-3 stepperItem\" [class.stepperItemActive]=\"currentIndex() >= index\">\n <span class=\"point\">\n <span class=\"stepLabel\">{{ step.name }}</span>\n </span>\n </li>\n }\n </ul>\n} @else {\n <p class=\"font-title-1 text-align-center\">Шаги отсутствуют</p>\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit, TemplateRef } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'teta-divider',\n templateUrl: './divider.component.html',\n styleUrls: ['./divider.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet]\n})\nexport class DividerComponent implements OnInit {\n @Input() label;\n\n @Input() template: TemplateRef<any>;\n constructor() {}\n ngOnInit(): void {}\n}\n","<div class=\"divider\" style=\"width: 100%\">\n <div class=\"bg-text-20\" style=\"height: 1px\"></div>\n @if (!template) {\n <div class=\"divider-content padding-h-2\">{{ label }}</div>\n } @else {\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n }\n <div class=\"bg-text-20\" style=\"height: 1px\"></div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n} from '@angular/core';\nimport { DOCUMENT, NgClass } from '@angular/common';\nimport { IconComponent } from '../../icon/icon/icon.component';\nimport { ResizeDragDirective } from '../../../directive/resize-drag/resize-drag.directive';\n\n@Component({\n selector: 'teta-resize-panel',\n templateUrl: './resize-panel.component.html',\n styleUrls: ['./resize-panel.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ResizeDragDirective, NgClass, IconComponent]\n})\nexport class ResizePanelComponent implements OnInit, OnDestroy {\n @Input() size = 8;\n\n @Input()\n set direction(val: 'vertical' | 'horizontal') {\n this._direction = val;\n }\n\n get direction() {\n return this._direction;\n }\n\n get icon() {\n return this.direction === 'horizontal' ? 'moreHorizontal' : 'moreVertical';\n }\n @Input()\n set grabPosition(val: 'top' | 'left' | 'bottom' | 'right') {\n this._grabPosition = val;\n }\n\n get grabPosition() {\n if (this.direction === 'vertical') {\n if (['left', 'right'].includes(this._grabPosition)) {\n return this._grabPosition;\n }\n return 'left';\n }\n if (['top', 'bottom'].includes(this._grabPosition)) {\n return this._grabPosition;\n }\n return 'bottom';\n }\n\n @Input() name: string;\n @Input() minSize: number;\n @Input() maxSize: number;\n @HostBinding('class.resize-panel') private readonly resizePanelClass = true;\n\n private _direction: 'vertical' | 'horizontal' = 'horizontal';\n private _grabPosition: 'top' | 'left' | 'bottom' | 'right' = 'left';\n private _startSize: number;\n private _startPosition: number;\n\n private _positionMap: Map<string, string> = new Map<string, string>()\n .set('left', 'resize-grab_left')\n .set('right', 'resize-grab_right')\n .set('top', 'resize-grab_top')\n .set('bottom', 'resize-grab_bottom');\n\n constructor(\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n @Inject(DOCUMENT) private _document: any,\n ) {}\n\n resizeStart(event: MouseEvent) {\n this.setStartPosition();\n if (this.direction === 'vertical') {\n this._startSize = this._elementRef.nativeElement.clientWidth;\n this._startPosition = event.clientX;\n } else {\n this._startSize = this._elementRef.nativeElement.clientHeight;\n this._startPosition = event.clientY;\n }\n }\n\n resizeProcess(event: MouseEvent) {\n event.preventDefault();\n if (this.direction === 'vertical') {\n this.manageVertical(event);\n } else {\n this.manageHorizontal(event);\n }\n }\n\n resizeEnd(event: MouseEvent) {\n window.dispatchEvent(new Event('resize'));\n }\n\n ngOnInit() {\n this.restorePosition();\n }\n\n ngOnDestroy(): void {}\n\n getClassName() {\n return this._positionMap.get(this.grabPosition) || '';\n }\n\n private setStartPosition() {\n if (this.direction === 'vertical') {\n this._renderer.setStyle(\n this._elementRef.nativeElement,\n 'width',\n `${this._elementRef.nativeElement.offsetWidth}px`,\n );\n } else {\n this._renderer.setStyle(\n this._elementRef.nativeElement,\n 'height',\n `${this._elementRef.nativeElement.offsetHeight}px`,\n );\n }\n this._renderer.setStyle(this._elementRef.nativeElement, 'flex-grow', `0`);\n this._renderer.setStyle(this._elementRef.nativeElement, 'flex-shrink', `0`);\n this._renderer.setStyle(this._elementRef.nativeElement, 'flex', `none`);\n }\n\n private manageHorizontal(event: MouseEvent) {\n let newSize =\n this.grabPosition === 'bottom'\n ? this._startSize + (event.clientY - this._startPosition)\n : this._startSize - (event.clientY - this._startPosition);\n if (this.maxSize && newSize > this.maxSize) {\n newSize = this.maxSize;\n }\n if (this.minSize && newSize < this.minSize) {\n newSize = this.minSize;\n }\n this._renderer.setStyle(this._elementRef.nativeElement, 'height', `${newSize}px`);\n this.save();\n }\n\n private manageVertical(event: MouseEvent) {\n let newSize =\n this.grabPosition === 'right'\n ? this._startSize + (event.clientX - this._startPosition)\n : this._startSize - (event.clientX - this._startPosition);\n if (this.maxSize && newSize > this.maxSize) {\n newSize = this.maxSize;\n }\n if (this.minSize && newSize < this.minSize) {\n newSize = this.minSize;\n }\n this._renderer.setStyle(this._elementRef.nativeElement, 'width', `${newSize}px`);\n this.save();\n }\n\n private restore() {\n if (this.name?.length > 0) {\n return JSON.parse(localStorage.getItem(`resize-panel${this.name}`));\n }\n }\n\n private restorePosition() {\n const savedSize = this.restore();\n if (savedSize) {\n if (this.direction === 'vertical') {\n this._renderer.setStyle(this._elementRef.nativeElement, 'width', `${savedSize}px`);\n } else {\n this._renderer.setStyle(this._elementRef.nativeElement, 'height', `${savedSize}px`);\n }\n this._renderer.setStyle(this._elementRef.nativeElement, 'flex-grow', `0`);\n this._renderer.setStyle(this._elementRef.nativeElement, 'flex-shrink', `0`);\n this._renderer.setStyle(this._elementRef.nativeElement, 'flex', `none`);\n }\n }\n\n private save() {\n if (this.name?.length > 0) {\n if (this.direction === 'vertical') {\n localStorage.setItem(`resize-panel${this.name}`, this._elementRef.nativeElement.clientWidth);\n } else {\n localStorage.setItem(`resize-panel${this.name}`, this._elementRef.nativeElement.clientHeight);\n }\n }\n }\n}\n","<ng-content></ng-content>\n<div\n #grab\n class=\"resize-grab\"\n [style.width.px]=\"direction === 'vertical' ? size : ''\"\n [style.height.px]=\"direction === 'horizontal' ? size : ''\"\n (resizeStart)=\"resizeStart($event)\"\n (resizeProcess)=\"resizeProcess($event)\"\n (resizeEnd)=\"resizeEnd($event)\"\n [tetaResizeDrag]=\"direction\"\n [ngClass]=\"getClassName()\"\n>\n <teta-icon [name]=\"icon\" [palette]=\"'text'\"></teta-icon>\n</div>\n","/* accordion */\nexport * from './accordion/public-api';\n\n/* avatar */\nexport * from './avatar/public-api';\n\n/* autocomplete */\nexport * from './autocomplete/public-api';\n\n/* button */\nexport * from './button/public-api';\n\n/* checkbox */\nexport * from './chart-3d/public-api';\n\n/* checkbox */\nexport * from './checkbox/public-api';\n\n/* datepicker */\nexport * from './date-picker/public-api';\n\n/* delimiter */\nexport * from './delimiter/public-api';\n\n/* dropdown */\nexport * from './dropdown/public-api';\n\n/* dynamic-component */\nexport * from './dynamic-component/public-api';\n\n/* expand-card */\nexport * from './expand-card/public-api';\n\n/* expand-panel */\nexport * from './expand-panel/public-api';\n\n/* file */\nexport * from './file-upload/public-api';\n\n/* filter */\nexport * from './filter/public-api';\n\n/* icon */\nexport * from './icon/public-api';\n\n/* input */\nexport * from './input/public-api';\n\n/* message */\nexport * from './message/public-api';\n\n/* modal */\nexport * from './modal/public-api';\n\n/* pager */\nexport * from './pager/public-api';\n\n/* panel */\nexport * from './panel/public-api';\n\n/* progress-bar */\nexport * from './progress-bar/public-api';\n\n/* property-grid */\nexport * from './property-grid/public-api';\n\n/* radio */\nexport * from './radio/public-api';\n\n/* select */\nexport * from './select/public-api';\n\n/* sidebar */\nexport * from './sidebar/public-api';\n\n/* switch */\nexport * from './switch/public-api';\n\n/* table */\nexport * from './table/public-api';\n\n/* tabs */\nexport * from './tabs/public-api';\n\n/* theme-switch */\nexport * from './theme-switch/public-api';\n\n/* toggle */\nexport * from './toggle/public-api';\n\n/* toolbar */\nexport * from './toolbar/public-api';\n\n/* tree */\nexport * from './tree/public-api';\n\n/* stepper */\nexport * from './stepper/public-api';\n\n/* 3d-chart */\nexport * from './chart-3d/public-api';\n\n/* Resize panel */\nexport * from './divider/public-api';\nexport * from './resize-panel/public-api';\n","import { AfterViewInit, Directive, ElementRef, HostBinding, Input, NgZone, OnDestroy } from '@angular/core';\nimport { Align } from '../../common/enum/align.enum';\nimport { VerticalAlign } from '../../common/enum/vertical-align.enum';\nimport { IRect } from '../../common/contract/i-rect';\nimport { DomUtil } from '../../common/util/dom-util';\nimport { PositionUtil } from '../../common/util/position-util';\nimport { takeWhile } from 'rxjs/operators';\n\n@Directive({\n selector: '[tetaAutoPosition]',\n standalone: true,\n})\nexport class AutoPositionDirective implements AfterViewInit, OnDestroy {\n @Input() align: Align;\n @Input() verticalAlign: VerticalAlign = VerticalAlign.auto;\n\n @HostBinding('style.position') fixed = 'fixed';\n\n private _alive = true;\n\n constructor(\n private _elementRef: ElementRef,\n private _zone: NgZone,\n ) {}\n\n ngAfterViewInit() {\n this.setPosition();\n this._zone.onStable.pipe(takeWhile(() => this._alive)).subscribe(() => {\n this.setPosition();\n });\n }\n\n ngOnDestroy() {\n this._alive = false;\n }\n\n private setPosition(): void {\n const target = this._elementRef.nativeElement;\n const containerPosition = this._elementRef.nativeElement.parentElement.getBoundingClientRect();\n const targetPosition = target.getBoundingClientRect();\n\n const rect: IRect = {\n bottom: containerPosition.bottom,\n top: containerPosition.top,\n left: containerPosition.left,\n right: containerPosition.right,\n };\n\n const targetRect: IRect = {\n bottom: targetPosition.bottom,\n top: targetPosition.top,\n left: targetPosition.left,\n right: targetPosition.right,\n };\n\n const targetTransformedParent = DomUtil.findTransformedParent(target);\n let parentPosition = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n };\n if (targetTransformedParent) {\n parentPosition = targetTransformedParent.getBoundingClientRect();\n }\n\n const position = PositionUtil.getPosition(rect, targetRect, this.align, this.verticalAlign, 0, 0, parentPosition);\n\n PositionUtil.setElementPosition(target, position);\n }\n}\n","import { Directive, ElementRef, EventEmitter, Input, NgZone, OnDestroy, Output } from '@angular/core';\nimport { DomUtil } from '../../common/util/dom-util';\n\n@Directive({\n selector: '[tetaClickOutside]',\n standalone: true,\n})\nexport class ClickOutsideDirective implements OnDestroy {\n @Output() clickOutside = new EventEmitter<MouseEvent>();\n @Input() rightClick = false;\n\n private _handleEvents = false;\n\n @Input()\n set tetaClickOutside(val: boolean) {\n this._handleEvents = val;\n if (this._handleEvents) {\n this._ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.addListener(this.rightClick);\n });\n });\n } else {\n this.removeListener();\n }\n }\n\n get tetaClickOutside(): boolean {\n return this._handleEvents;\n }\n\n constructor(\n private _elementRef: ElementRef,\n private _ngZone: NgZone,\n ) {}\n\n ngOnDestroy(): void {\n this.removeListener();\n }\n\n private addListener(handleRightClick: boolean): void {\n window.addEventListener('click', this.listener);\n if (handleRightClick) {\n window.addEventListener('contextmenu', this.listener);\n }\n }\n\n private removeListener(): void {\n window.removeEventListener('click', this.listener);\n window.removeEventListener('contextmenu', this.listener);\n }\n\n private listener = (click: MouseEvent) => {\n if (!this._handleEvents) {\n return;\n }\n const clickedInside = DomUtil.clickedInside(this._elementRef.nativeElement, click);\n if (!clickedInside) {\n this.clickOutside.emit(click);\n }\n };\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaDragPreview]',\n standalone: true,\n})\nexport class DragPreviewDirective {\n constructor(public templateRef: TemplateRef<any>) {}\n}\n","import { TemplateRef, ViewContainerRef } from '@angular/core';\n\nexport class DragContainerInstance<T> {\n data: T[];\n previewTemplate: TemplateRef<any>;\n viewContainer: ViewContainerRef;\n\n constructor(options: { data: T[]; previewTemplate: TemplateRef<any>; viewContainer: ViewContainerRef }) {\n this.data = options.data;\n this.previewTemplate = options.previewTemplate;\n this.viewContainer = options.viewContainer;\n }\n}\n","import { EmbeddedViewRef, Inject, Injectable, Renderer2, RendererFactory2 } from '@angular/core';\nimport { DragInstance } from './model/drag-instance';\nimport { DragSelection } from './model/drag-selection';\nimport { DragContainerInstance } from './model/drag-container-instance';\nimport { Point } from './model/point';\nimport { DOCUMENT } from '@angular/common';\nimport { BehaviorSubject, fromEvent, merge, Observable, Subject, tap } from 'rxjs';\nimport { filter, withLatestFrom } from 'rxjs/operators';\nimport { DragProcess } from './model/drag-process';\nimport { DropTarget } from './model/drop-target';\nimport { DropEvent } from './model/drop-event';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DragDropService<T> {\n selection: DragSelection<T>;\n startPosition: Point;\n dragProcess: DragProcess<T>;\n dropTarget: Observable<DropTarget<T>>;\n dropped: Observable<DropEvent<T>>;\n private dropTarget$ = new BehaviorSubject<DropTarget<T>>(null);\n private _delta = 10;\n private _renderer: Renderer2;\n private _preview: HTMLElement;\n private _previewRef: EmbeddedViewRef<any>;\n private dropped$ = new Subject<DropEvent<T>>();\n\n constructor(\n @Inject(DOCUMENT) private _document: Document,\n private _rendererFactory: RendererFactory2,\n ) {\n this._renderer = this._rendererFactory.createRenderer(null, null);\n this.dropTarget = this.dropTarget$.asObservable();\n this.dropped = this.dropped$.asObservable();\n merge(fromEvent<MouseEvent>(this._document, 'mousemove'), fromEvent<MouseEvent>(this._document, 'touchmove'))\n .pipe(\n filter(() => {\n return this.startPosition != null;\n }),\n )\n .subscribe((event: MouseEvent) => {\n if (!this.dragProcess && this.getDelta(event) > this._delta) {\n this.startProcess();\n }\n if (this.dragProcess && this._preview) {\n this.movePreview(event);\n }\n });\n\n merge(fromEvent<MouseEvent>(this._document, 'mouseup'), fromEvent<MouseEvent>(this._document, 'touchend'))\n .pipe(withLatestFrom(this.dropTarget))\n .subscribe((data: [MouseEvent, DropTarget<T>]) => {\n const [event, target] = data;\n if (target) {\n this.dropped$.next({\n target,\n container: this.dragProcess.selection.container,\n data: [...this.dragProcess.selection.items],\n });\n this.cancelDrag();\n }\n this.stopProcess();\n });\n\n merge(fromEvent(this._document, 'visibilitychange'), fromEvent(window, 'blur')).subscribe(() => {\n this.cancelDrag();\n });\n }\n\n setDropTarget(target: DropTarget<T>) {\n if (this.dragProcess) {\n this.dropTarget$.next(target);\n }\n }\n\n setStartPosition(point: Point) {\n this.startPosition = point;\n }\n\n setSelection(instance: DragInstance<T>, container: DragContainerInstance<T>) {\n if (this.selection?.container === container && this.selection?.items?.indexOf(instance) >= 0) {\n return;\n }\n this.selection = {\n container,\n items: [instance],\n };\n }\n\n addSelection(instance: DragInstance<T>, container: DragContainerInstance<T>) {\n if (!this.selection) {\n this.setSelection(instance, container);\n return;\n }\n if (this.selection && this.selection.container !== container) {\n return;\n }\n\n const index = this.selection.items.indexOf(instance);\n if (index < 0) {\n this.selection.items.push(instance);\n } else {\n this.selection.items.splice(index, 1);\n }\n }\n\n clearSelection() {\n this.selection = null;\n }\n\n cancelDrag() {\n this.setDropTarget(null);\n this.clearSelection();\n this.stopProcess();\n }\n\n startProcess() {\n this.dragProcess = {\n selection: this.selection,\n };\n this._document.body.style.cursor = 'copy';\n this._preview = this.createPreview();\n }\n\n stopProcess() {\n this.destroyPreview();\n this._document.body.style.cursor = 'default';\n this.dragProcess = null;\n this.startPosition = null;\n }\n\n private getDelta(event: MouseEvent) {\n return Math.max(Math.abs(this.startPosition.x - event.x), Math.abs(this.startPosition.y - event.y));\n }\n\n private createPreview() {\n if (this.dragProcess.selection.container.previewTemplate) {\n this._previewRef = this.dragProcess.selection.container.viewContainer.createEmbeddedView(\n this.dragProcess.selection.container.previewTemplate,\n {\n $implicit: this.dragProcess.selection.items,\n data: this.dragProcess.selection.items,\n },\n );\n const preview = this._renderer.createElement('div');\n this._renderer.setStyle(preview, 'position', 'fixed');\n this._renderer.setStyle(preview, 'pointer-events', 'none');\n this._renderer.setStyle(preview, 'top', '0');\n this._renderer.setStyle(preview, 'left', '0');\n this._renderer.appendChild(preview, this._previewRef.rootNodes[0]);\n this._renderer.appendChild(document.body, preview);\n return preview;\n }\n return null;\n }\n\n private movePreview(event: MouseEvent) {\n if (this._preview) {\n this._renderer.setStyle(this._preview, 'transform', `translate(${event.x}px, ${event.y}px)`);\n }\n }\n\n private destroyPreview() {\n if (this._preview) {\n this.dragProcess?.selection?.container?.viewContainer?.clear();\n this._preview?.remove();\n this._previewRef?.destroy();\n this._preview = this._previewRef = null;\n }\n }\n}\n","import {\n ChangeDetectorRef,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n ViewContainerRef,\n} from '@angular/core';\nimport { DragPreviewDirective } from './drag-preview.directive';\nimport { DragContainerInstance } from './model/drag-container-instance';\nimport { DragDropService } from './drag-drop.service';\nimport { takeWhile } from 'rxjs/operators';\nimport { DropTarget } from './model/drop-target';\nimport { DropEvent } from './model/drop-event';\nimport { DragInstance } from './model/drag-instance';\n\n@Directive({\n selector: '[tetaDragContainer]',\n exportAs: 'dragContainer',\n host: {\n '[class.teta-drag-container]': '\"true\"',\n '[class.teta-drop-target]': 'isDropTarget',\n },\n standalone: true,\n})\nexport class DragContainerDirective<T> implements OnInit, OnDestroy {\n @Input('tetaDragContainer') data: T[];\n @Input() multiple = false;\n @Input() allowDrop = true;\n\n @Output() tetaDrop = new EventEmitter<DropEvent<T>>();\n @Output() tetaDragEnter = new EventEmitter<DragInstance<T>>();\n\n @ContentChild(DragPreviewDirective, {\n static: true,\n })\n private _previewTemplate: DragPreviewDirective;\n\n instance: DragContainerInstance<T>;\n dropTarget: DropTarget<T>;\n private _alive = true;\n\n get isDropTarget() {\n return this.dropTarget === this.instance;\n }\n\n @HostListener('mouseleave', ['$event']) mouseleave(event) {\n this._dragService.setDropTarget(null);\n }\n\n @HostListener('mouseover', ['$event']) mouseover(event) {\n if (this.allowDrop) {\n this._dragService.setDropTarget(this.instance);\n }\n }\n\n @HostListener('window:keydown.escape', ['$event']) escape(event) {\n this._dragService.cancelDrag();\n }\n\n constructor(\n private _dragService: DragDropService<T>,\n private _elementRef: ElementRef,\n private _viewContainerRef: ViewContainerRef,\n private _zone: NgZone,\n private _cdr: ChangeDetectorRef,\n ) {}\n\n ngOnInit() {\n this.instance = new DragContainerInstance<T>({\n data: this.data,\n previewTemplate: this._previewTemplate?.templateRef,\n viewContainer: this._viewContainerRef,\n });\n this._dragService.dropTarget.pipe(takeWhile(() => this._alive)).subscribe((target) => {\n this.dropTarget = target;\n this._cdr.detectChanges();\n });\n\n this._dragService.dropped.pipe(takeWhile(() => this._alive)).subscribe((event) => {\n this.tetaDrop.emit(event);\n });\n }\n\n ngOnDestroy() {\n this._alive = false;\n }\n}\n","import { DragContainerInstance } from './drag-container-instance';\n\nexport class DragInstance<T> {\n container: DragContainerInstance<T>;\n data: T;\n\n constructor(options?: { container: DragContainerInstance<T>; data: T }) {\n this.container = options.container;\n this.data = options.data;\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n SkipSelf,\n} from '@angular/core';\nimport { filter, takeWhile } from 'rxjs/operators';\n\nimport { DragContainerDirective } from './drag-container.directive';\nimport { DragDropService } from './drag-drop.service';\nimport { DragInstance } from './model/drag-instance';\nimport { DragSelection } from './model/drag-selection';\nimport { DropEvent } from './model/drop-event';\nimport { DropTarget } from './model/drop-target';\n\n@Directive({\n selector: '[tetaDrag]',\n exportAs: 'drag',\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[style.userSelect]': '\"none\"',\n '[class.teta-drag-item]': '\"true\"',\n },\n standalone: true,\n})\nexport class DragDirective<T> implements OnInit, OnDestroy {\n @Input('tetaDrag') data: T;\n\n @HostBinding('class.teta_draggable_item')\n @Input()\n allowDrag = true;\n\n @HostBinding('class.teta_droppable_item')\n @Input()\n allowDrop = true;\n\n @Input() allowDropPredicate: (data: DragSelection<T>, target: T) => boolean;\n\n @Output() tetaDragEnter = new EventEmitter<DragInstance<T>>();\n @Output() tetaDrop = new EventEmitter<DropEvent<T>>();\n\n dropTarget: DropTarget<T>;\n instance: DragInstance<T>;\n\n @HostBinding('class.teta-drag-selection')\n get selection() {\n return this._dragService?.selection?.items?.indexOf(this.instance) >= 0;\n }\n\n @HostBinding('class.teta-drop-target')\n get isDropTarget() {\n return this.dropTarget === this.instance && this.allowDrop;\n }\n\n private _alive = true;\n\n @HostListener('mousedown', ['$event'])\n @HostListener('touchstart', ['$event'])\n mousedown(event: MouseEvent) {\n if (!this.allowDrag) {\n return;\n }\n if (event.ctrlKey && this._container?.multiple) {\n this._dragService.addSelection(this.instance, this._container?.instance);\n } else {\n this._dragService.setSelection(this.instance, this._container?.instance);\n }\n this._dragService.setStartPosition({\n x: event.x,\n y: event.y,\n });\n }\n\n @HostListener('mouseenter', ['$event'])\n mouseenter(event: MouseEvent) {\n if (this.allowDrop) {\n event.stopPropagation();\n if (this.allowDropPredicate === undefined || this.allowDropPredicate(this._dragService.selection, this.data)) {\n this._dragService.setDropTarget(this.instance);\n }\n }\n }\n\n @HostListener('mouseleave', ['$event']) mouseleave(event) {\n this._dragService.setDropTarget(null);\n }\n\n constructor(\n @Inject(DragContainerDirective)\n @Optional()\n @SkipSelf()\n private _container: DragContainerDirective<T>,\n private _dragService: DragDropService<T>,\n private _zone: NgZone,\n private _cdr: ChangeDetectorRef,\n ) {}\n\n ngOnInit() {\n this.instance = new DragInstance({\n container: this._container?.instance,\n data: this.data,\n });\n this._dragService.dropTarget.pipe(takeWhile(() => this._alive)).subscribe((target) => {\n this.dropTarget = target;\n if (target === this.instance) {\n this.tetaDragEnter.emit(this.instance);\n }\n this._cdr.detectChanges();\n this._cdr.markForCheck();\n });\n this._dragService.dropped\n .pipe(takeWhile(() => this._alive))\n .pipe(\n filter((event: DropEvent<T>) => {\n return event.target === this.instance;\n }),\n )\n .subscribe((event) => {\n this.tetaDrop.emit(event);\n });\n }\n\n ngOnDestroy() {\n this._alive = false;\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[tetaDragPlaceholder]',\n standalone: true,\n})\nexport class DragPlaceholderDirective {\n constructor() {}\n}\n","import {\n // ContentChildren,\n Directive,\n EventEmitter,\n HostListener,\n Input,\n Output,\n // QueryList,\n} from '@angular/core';\n\nimport { DragSortEvent } from './drag-sort-event';\n\n// import {DragSortItemDirective} from './drag-sort-item.directive';\n\n@Directive({\n selector: '[tetaDragSortContainer]',\n standalone: true,\n})\nexport class DragSortContainerDirective<T> {\n @Input() dragSortList: T[] = [];\n @Output() dragSorted: EventEmitter<DragSortEvent<T>> = new EventEmitter<DragSortEvent<T>>();\n\n private _dragItem!: T | null;\n\n @HostListener('drop', ['$event']) drop(event: DragEvent): void {\n event.stopPropagation();\n event.preventDefault();\n }\n\n setDragItem(item: T | null) {\n this._dragItem = item;\n }\n\n getDragItem(): T | null {\n return this._dragItem;\n }\n\n getList(): T[] {\n return this.dragSortList;\n }\n\n setList(list: T[]) {\n this.dragSortList = list;\n }\n\n updateSortOrder(source: T, target: T, insertBefore: boolean) {\n if (source === target) {\n return;\n }\n const list = this.getList();\n const sourceIndex = list.indexOf(source);\n const targetIndex = list.indexOf(target);\n if ((insertBefore && sourceIndex + 1 === targetIndex) || (!insertBefore && sourceIndex === targetIndex + 1)) {\n return;\n }\n const newIndex = list.indexOf(target) + (insertBefore ? 0 : 1);\n\n this.dragSorted.emit({\n list,\n source,\n target,\n newIndex,\n previousIndex: sourceIndex,\n });\n }\n}\n","import {\n Directive,\n ElementRef,\n Host,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n} from '@angular/core';\n\nimport { DragSortContainerDirective } from './drag-sort-container.directive';\n\n@Directive({\n selector: '[tetaDragSortItem]',\n standalone: true,\n})\nexport class DragSortItemDirective<T> implements OnInit, OnDestroy {\n @Input() tetaDragSortItem!: T;\n @Input() dragSortDirection: 'horizontal' | 'vertical' = 'horizontal';\n\n @HostBinding('attr.draggable') private readonly draggable = true;\n @HostBinding('class.position-relative') private readonly relative = true;\n\n private _dragElement!: HTMLElement;\n\n private rect: any;\n\n constructor(\n @Host() private _container: DragSortContainerDirective<T>,\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n ) {}\n\n @HostListener('dragstart', ['$event']) dragstart(event: DragEvent): void {\n this._container.setDragItem(this.tetaDragSortItem);\n }\n\n @HostListener('dragenter', ['$event']) dragenter(event: DragEvent): void {\n this.rect = this._elementRef.nativeElement.getBoundingClientRect();\n }\n\n @HostListener('dragover', ['$event']) dragover(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n if (this.rect && this._container.getDragItem()) {\n this.showDrag(this.getDropPosition(event));\n }\n }\n\n @HostListener('dragleave', ['$event']) dragleave(event: DragEvent): void {\n event.preventDefault();\n this.hideDrag();\n }\n\n @HostListener('dragend', ['$event']) dragend(event: DragEvent): void {\n this._container.setDragItem(null);\n this.hideDrag();\n }\n\n @HostListener('drop', ['$event']) drop(event: DragEvent): void {\n event.stopPropagation();\n this._container.updateSortOrder(\n this._container.getDragItem(),\n this.tetaDragSortItem,\n this.getDropPosition(event) === 'start',\n );\n this.hideDrag();\n }\n\n ngOnInit() {\n this.createDrag();\n }\n\n ngOnDestroy() {\n this.destroyDrag();\n }\n\n private showDrag(position: 'start' | 'end') {\n this.hideDrag();\n this._renderer.addClass(this._dragElement, `drop-direction-${position}`);\n }\n\n private hideDrag() {\n this._renderer.removeClass(this._dragElement, 'drop-direction-start');\n this._renderer.removeClass(this._dragElement, 'drop-direction-end');\n }\n\n private createDrag() {\n this._dragElement = this._renderer.createElement('div');\n this._renderer.appendChild(this._elementRef.nativeElement, this._dragElement);\n this._renderer.addClass(this._dragElement, 'drop-direction');\n this._renderer.addClass(\n this._dragElement,\n this.dragSortDirection === 'horizontal' ? 'drop-direction-horizontal' : 'drop-direction-vertical',\n );\n }\n\n private destroyDrag() {\n this._renderer.removeChild(this._renderer, this._dragElement);\n }\n\n private getDropPosition(event: DragEvent) {\n if (this.dragSortDirection === 'horizontal') {\n return event.clientX >= this.rect.x + this.rect.width / 2 ? 'end' : 'start';\n } else {\n return event.clientY >= this.rect.y + this.rect.height / 2 ? 'end' : 'start';\n }\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Directive, ElementRef, Inject, Input, NgZone, OnDestroy, Renderer2 } from '@angular/core';\nimport { takeWhile } from 'rxjs/operators';\n\n@Directive({\n selector: '[tetaLoader]',\n standalone: true,\n})\nexport class LoaderDirective implements OnDestroy {\n @Input() appendToBody = false;\n @Input() mask = false;\n\n @Input()\n set tetaLoader(value: boolean) {\n this._loading = value;\n if (this._loading) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n get tetaLoader() {\n return this._loading;\n }\n\n private _element: HTMLElement;\n private _loader: any;\n private _mask: any;\n private _alive = true;\n private _loading = false;\n\n constructor(\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n @Inject(DOCUMENT) private _document: any,\n protected _zone: NgZone,\n ) {\n this._element = this._elementRef.nativeElement;\n this._zone.onStable.pipe(takeWhile((_) => this._alive)).subscribe((_) => {\n if (this._loading && this._loader) {\n this.setPosition();\n }\n });\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n this.hide();\n }\n\n private show() {\n if (this._loader === null || this._loader === undefined) {\n this._loader = this._renderer.createElement('div');\n this._loader.setAttribute('class', 'loader');\n }\n\n if ((this._mask === null || this._mask === undefined) && this.mask) {\n this._mask = this._renderer.createElement('div');\n this._mask.setAttribute('class', 'loader-mask');\n }\n\n if (this.mask) {\n this._renderer.appendChild(this.appendToBody ? this._document.body : this._element, this._mask);\n }\n\n this._renderer.appendChild(this.appendToBody ? this._document.body : this._element, this._loader);\n this.setPosition();\n }\n\n private hide() {\n if (this._loader && this._loader.parentElement) {\n this._renderer.removeChild(this._loader.parentElement, this._loader);\n }\n if (this._mask && this._mask.parentElement) {\n this._renderer.removeChild(this._loader.parentElement, this._mask);\n }\n }\n\n private setPosition() {\n const position = this._element.getBoundingClientRect();\n this._renderer.setStyle(this._loader, 'top', `${position.y + position.height / 2}px`);\n this._renderer.setStyle(this._loader, 'left', `${position.x + +position.width / 2}px`);\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n HostListener,\n Inject,\n Injector,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n TemplateRef,\n Type,\n} from '@angular/core';\nimport { merge } from 'rxjs';\nimport { filter, takeWhile, tap } from 'rxjs/operators';\n\nimport { Align } from '../../common/enum/align.enum';\nimport { VerticalAlign } from '../../common/enum/vertical-align.enum';\nimport { ClickService } from '../../common/service/click.service';\nimport { DynamicComponentService } from '../../common/service/dynamic-component.service';\nimport { DomUtil } from '../../common/util/dom-util';\nimport { PositionUtil } from '../../common/util/position-util';\nimport { DynamicContentBaseDirective } from '../dynamic-content-base.directive';\n\n@Directive({\n selector: '[tetaTooltip]',\n standalone: true,\n})\nexport class TooltipDirective extends DynamicContentBaseDirective implements OnDestroy, OnInit {\n /**\n * Строка, шаблон или компонент для создания контекстного меню\n */\n @Input() tetaTooltip?: string | TemplateRef<any> | Type<any> | null | undefined = null;\n @Input() override align: Align = Align.center;\n @Input() override verticalAlign: VerticalAlign = VerticalAlign.top;\n private _componentRect: any;\n\n get _dynamicContent() {\n return this.tetaTooltip;\n }\n\n constructor(\n @Inject(DOCUMENT)\n protected override _document: any,\n protected override _elementRef: ElementRef,\n protected override _service: DynamicComponentService,\n protected override _injector: Injector,\n protected override _zone: NgZone,\n protected override _cdr: ChangeDetectorRef,\n private _click: ClickService,\n ) {\n super(_document, _elementRef, _service, _injector, _zone, _cdr);\n }\n\n @HostListener('click', ['$event'])\n showContent(event: MouseEvent): void {\n event.preventDefault();\n this.createTooltip();\n }\n\n ngOnInit() {\n merge(this._click.click, this._click.contextMenu)\n .pipe(\n takeWhile(() => this._alive),\n filter(() => this._open),\n filter(() => this._componentRef != null),\n filter((event: MouseEvent) => !DomUtil.clickedInside(this._elementRef.nativeElement, event)),\n filter((event: MouseEvent) => !DomUtil.clickedInside(this._componentRef?.location.nativeElement, event)),\n tap((_) => this.destroyContentRef()),\n )\n .subscribe();\n }\n\n protected setPosition() {\n if (this._componentRef && this._open) {\n if (!this._componentRect) {\n this._componentRect = this._componentRef.location.nativeElement.getBoundingClientRect();\n }\n const containerPosition = this._elementRef.nativeElement.getBoundingClientRect();\n const position = PositionUtil.getPosition(\n containerPosition,\n this._componentRect,\n this.align,\n this.verticalAlign,\n 0,\n 12,\n );\n PositionUtil.setElementPosition(this._componentRef.location.nativeElement, position);\n const verticalClass = containerPosition.top < position.top ? 'tooltip_bottom' : 'tooltip_top';\n this._componentRef.instance.addClass(verticalClass);\n }\n }\n\n private createTooltip(): void {\n this._componentRef = this.createContentRef('tooltip');\n }\n}\n","import { Directive, ElementRef, OnInit, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[tetaNoAutofill]',\n standalone: true,\n})\n\n/**\n * Disable autofill inputs in Chrome. Append hidden inputs with text/password type, to element.\n */\nexport class NoAutofillDirective implements OnInit {\n constructor(\n private _renderer: Renderer2,\n private _elementRef: ElementRef,\n ) {}\n\n ngOnInit() {\n const inputsTypes = ['text', 'password'];\n\n inputsTypes.forEach((_) => {\n const inputElement = this._renderer.createElement('input');\n this._renderer.setAttribute(inputElement, 'type', _);\n this._renderer.setAttribute(inputElement, 'class', 'position-absolute');\n this._renderer.setStyle(inputElement, 'left', '-9999px');\n this._renderer.insertBefore(\n this._elementRef.nativeElement,\n inputElement,\n this._elementRef.nativeElement.firstChild,\n );\n });\n }\n}\n","import { Directive, ElementRef, Inject, Input, OnChanges, PLATFORM_ID, SimpleChanges } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n@Directive({\n selector: '[tetaScrollIntoView]',\n standalone: true,\n})\nexport class ScrollIntoViewDirective implements OnChanges {\n @Input() tetaScrollIntoView: boolean | undefined;\n @Input() behavior: ScrollBehavior = 'smooth';\n @Input() block: ScrollLogicalPosition = 'end';\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: any,\n private elementRef: ElementRef,\n ) {}\n\n ngOnChanges(simpleChange: SimpleChanges) {\n if (isPlatformBrowser(this.platformId)) {\n if (coerceBooleanProperty(this.tetaScrollIntoView)) {\n (this.elementRef.nativeElement as HTMLInputElement).scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n });\n }\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { prependZero } from '../util/number-helper';\n\n@Pipe({\n name: 'tetaPrependZero',\n standalone: true,\n})\nexport class PrependZeroPipe implements PipeTransform {\n transform(value: number, length: number): string {\n if (value === null || value === undefined) {\n return '';\n }\n value /= 1;\n return prependZero(value, length);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslocoService } from '@jsverse/transloco';\nimport dayjs from 'dayjs';\nimport isLeapYear from 'dayjs/plugin/isLeapYear';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\n\n@Pipe({\n name: 'tetaDate',\n standalone: true,\n})\nexport class TetaDatePipe implements PipeTransform {\n dateFormatMap: Map<string, string> = new Map().set('ru', 'D MMM, YYYY h:mm').set('en', 'MMM D, YYYY h:mm A');\n constructor(private _transloco: TranslocoService) {}\n\n transform(value: Date, format?: string, timez?: string, locale?: string): string {\n if (value == null) {\n return '';\n }\n dayjs.extend(isLeapYear);\n dayjs.extend(utc);\n dayjs.extend(timezone);\n const activeLang = this._transloco?.getActiveLang();\n let date = dayjs(value);\n\n if (timez) {\n date = date.tz(timez);\n }\n\n const params = {\n locale: locale || activeLang,\n };\n return typeof format === 'string'\n ? date.locale(params.locale).format(format).toString()\n : date.locale(params.locale).format(this.dateFormatMap.get(params.locale)).toString();\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable, OnDestroy } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class OverlayContainerService implements OnDestroy {\n private _containerClass = 'overlay-container';\n private _container?: HTMLElement;\n\n constructor(@Inject(DOCUMENT) private document$: any) {}\n\n getContainer(): HTMLElement | undefined {\n if (!this._container) {\n this.createContainer();\n }\n return this._container;\n }\n\n private createContainer(): void {\n const container = this.document$.createElement('div');\n container.classList.add(this._containerClass);\n this.document$.body.appendChild(container);\n this._container = container;\n }\n\n private removeContainer(): void {\n if (this._container && this._container.parentNode) {\n this._container.parentNode.removeChild(this._container);\n }\n }\n\n ngOnDestroy(): void {\n this.removeContainer();\n }\n}\n","import { toPng, toBlob, toCanvas, toJpeg, toSvg, toPixelData } from 'html-to-image';\n\nexport enum ExportType {\n png,\n svg,\n jpeg,\n blob,\n canvas,\n pixelData,\n}\n\nexport type ExportOptions = {\n filter: (node: HTMLElement) => boolean;\n};\n\nconst renderMapping = new Map<ExportType, any>()\n .set(ExportType.blob, toBlob)\n .set(ExportType.png, toPng)\n .set(ExportType.canvas, toCanvas)\n .set(ExportType.jpeg, toJpeg)\n .set(ExportType.svg, toSvg)\n .set(ExportType.pixelData, toPixelData);\n\nexport const exportDomToImage = (node: HTMLElement, type = ExportType.png, options?: ExportOptions) => {\n const render = renderMapping.get(type) ?? toPng;\n return render(node, { filter: options?.filter ?? null });\n};\n","import { TetaLocalisation } from './teta-localisation';\n\nexport const ruLocale: TetaLocalisation = {\n apply: 'Применить',\n cancel: 'Отменить',\n clear: 'Очистить',\n dateRangeMask: 'дд.мм.гггг - дд.мм.гггг',\n dateMask: 'дд.мм.гггг',\n dateTimeMask: 'дд.мм.гггг, чч:мм',\n pin: 'Закрепить',\n unpin: 'Открепить',\n sortAsc: 'Сортировать по возрастанию',\n sortDesc: 'Сортировать по убыванию',\n clearSort: 'Сбросить сортировку',\n clearAllSort: 'Сбросить все сортировки',\n clearFilter: 'Очистить фильтр',\n clearAllFilters: 'Очистить все фильтры',\n autosizeColumn: 'Авторазмер колонки',\n autosizeAll: 'Авторазмер всех колонок',\n resetColumnsSize: 'Сбросить настройки колонок',\n from: 'От',\n to: 'До',\n all: 'Все',\n min: 'Мин',\n max: 'Макс',\n sum: 'Сумма',\n avg: 'Средн',\n search: 'Поиск',\n notFound: 'Не найдено',\n selected: 'Выбрано',\n selectYear: 'Выберите год',\n notSelected: 'Не выбрано',\n yes: 'Да',\n no: 'Нет',\n months: [\n 'Январь',\n 'Февраль',\n 'Март',\n 'Апрель',\n 'Май',\n 'Июнь',\n 'Июль',\n 'Август',\n 'Сентябрь',\n 'Октябрь',\n 'Ноябрь',\n 'Декабрь',\n ],\n days: ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятниуа', 'Суббота'],\n daysShort: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],\n};\n","import { inject, InjectionToken } from '@angular/core';\nimport { Observable, share } from 'rxjs';\nimport { DOCUMENT } from '@angular/common';\n\nexport const ANIMATION_FRAME = new InjectionToken<Observable<DOMHighResTimeStamp>>(\n 'Shared Observable based on `window.requestAnimationFrame`',\n {\n factory: () => {\n const { requestAnimationFrame, cancelAnimationFrame } = inject(WINDOW);\n const animationFrame$ = new Observable<DOMHighResTimeStamp>((subscriber) => {\n let id = NaN;\n const callback = (timestamp: DOMHighResTimeStamp) => {\n subscriber.next(timestamp);\n id = requestAnimationFrame(callback);\n };\n\n id = requestAnimationFrame(callback);\n\n return () => {\n cancelAnimationFrame(id);\n };\n });\n\n return animationFrame$.pipe(share());\n },\n },\n);\n\nexport const WINDOW = new InjectionToken<Window>('An abstraction over global window object', {\n factory: () => {\n const { defaultView } = inject(DOCUMENT);\n\n if (!defaultView) {\n throw new Error('Window is not available');\n }\n\n return defaultView;\n },\n});\n","import { NgZone } from '@angular/core';\nimport { MonoTypeOperatorFunction, Observable, pipe } from 'rxjs';\n\nexport function tetaZoneFull<T>(ngZone: NgZone): MonoTypeOperatorFunction<T> {\n return (source) =>\n new Observable((subscriber) =>\n source.subscribe({\n next: (value) => ngZone.run(() => subscriber.next(value)),\n error: (error: unknown) => ngZone.run(() => subscriber.error(error)),\n complete: () => ngZone.run(() => subscriber.complete()),\n }),\n );\n}\n\nexport function tetaZoneFree<T>(ngZone: NgZone): MonoTypeOperatorFunction<T> {\n return (source) => new Observable((subscriber) => ngZone.runOutsideAngular(() => source.subscribe(subscriber)));\n}\n\nexport function tetaZoneOptimized<T>(ngZone: NgZone): MonoTypeOperatorFunction<T> {\n return pipe(tetaZoneFree(ngZone), tetaZoneFull(ngZone));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.IconService","i1.ThemeSwitchService","takeWhile","map","filter","i1.DynamicComponentService","i1","i2.TetaConfigService","i3","i1.TetaConfigService","tap","i1.RadioComponent","i1.MessageService","i1.CurrentModal","i2","i1.ModalService","i1.SwitchService","i1.TableService","i2.ClickService","i1.DragDropService","i1.DragSortContainerDirective"],"mappings":"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"}
|