@tetacom/ng-components 1.0.30 → 1.0.31

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/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/icon/icon.service.ts","../../src/component/icon/icon-sprite.directive.ts","../../src/component/icon/icon.module.ts","../../src/component/accordion/accordion.module.ts","../../src/component/button/button/button.component.ts","../../src/component/button/button/button.component.html","../../src/component/button/button.module.ts","../../src/component/checkbox/checkbox/checkbox.component.ts","../../src/component/checkbox/checkbox/checkbox.component.html","../../src/component/checkbox/checkbox.module.ts","../../src/component/date-picker/model/date-picker-mode.enum.ts","../../src/pipe/util/number-helper.ts","../../src/util/date-util.ts","../../src/component/date-picker/model/day-model.ts","../../src/component/date-picker/util/date-picker-util.ts","../../src/common/enum/align.enum.ts","../../src/common/enum/vertical-align.enum.ts","../../src/component/date-picker/model/picker-locale-model.ts","../../src/component/date-picker/service/picker-locale.service.ts","../../src/common/util/dom-util.ts","../../src/common/util/position-util.ts","../../src/component/dropdown/dropdown-head.directive.ts","../../src/component/dropdown/dropdown-content.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/service/picker-touch.service.ts","../../src/component/date-picker/year-select/year-select.component.ts","../../src/component/date-picker/year-select/year-select.component.html","../../src/pipe/prepend-zero/prepend-zero.pipe.ts","../../src/component/date-picker/month-select/month-select.component.ts","../../src/component/date-picker/month-select/month-select.component.html","../../src/component/date-picker/day-select/day-select.component.ts","../../src/component/date-picker/day-select/day-select.component.html","../../src/component/date-picker/time-part-control/time-part-control.component.ts","../../src/component/date-picker/time-part-control/time-part-control.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/month-picker/month-picker.component.ts","../../src/component/date-picker/month-picker/month-picker.component.html","../../src/component/dropdown/dropdown.directive.ts","../../src/component/dropdown/dropdown.module.ts","../../src/directive/click-outside/click-outside.directive.ts","../../src/directive/click-outside/click-outside.module.ts","../../src/pipe/prepend-zero/prepend-zero.module.ts","../../src/directive/only-number/only-number.directive.ts","../../src/directive/only-number/only-number.module.ts","../../src/component/date-picker/date-picker.module.ts","../../src/component/date-picker/model/date-period.ts","../../src/component/delimiter/delimiter/delimiter.component.ts","../../src/component/delimiter/delimiter/delimiter.component.html","../../src/component/delimiter/delimiter.module.ts","../../src/common/util/array-util.ts","../../src/component/dynamic-component/popup-content/popup-content.component.ts","../../src/component/dynamic-component/popup-content/popup-content.component.html","../../src/component/dynamic-component/dynamic-component.module.ts","../../src/component/expand-panel/expand-panel-content.directive.ts","../../src/component/expand-panel/expand-panel-head.directive.ts","../../src/component/toolbar/toolbar/toolbar.component.ts","../../src/component/toolbar/toolbar/toolbar.component.html","../../src/component/expand-panel/expand-panel/expand-panel.component.ts","../../src/component/expand-panel/expand-panel/expand-panel.component.html","../../src/component/toolbar/toolbar.module.ts","../../src/component/expand-panel/expand-panel.module.ts","../../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/file-upload/file-upload.module.ts","../../src/component/filter/filter-panel/filter-panel.component.ts","../../src/component/filter/filter-panel/filter-panel.component.html","../../src/component/filter/base/filter-base.ts","../../src/component/filter/contarct/numeric-filter.ts","../../src/component/filter/base/filter-component-base.ts","../../src/component/filter/contarct/numeric-filter-value.ts","../../src/component/input/input/input.component.ts","../../src/component/input/input/input.component.html","../../src/component/filter/numeric-filter/numeric-filter.component.ts","../../src/component/filter/numeric-filter/numeric-filter.component.html","../../src/component/filter/enum/string-filter-type.enum.ts","../../src/component/filter/contarct/string-filter.ts","../../src/component/filter/string-filter/string-filter.component.ts","../../src/component/filter/string-filter/string-filter.component.html","../../src/component/filter/enum/list-filter-type.enum.ts","../../src/component/filter/contarct/list-filter.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/contarct/date-filter-value.ts","../../src/component/filter/contarct/date-filter.ts","../../src/component/filter/date-filter/date-filter.component.ts","../../src/component/filter/date-filter/date-filter.component.html","../../src/component/filter/enum/filter-type.enum.ts","../../src/component/filter/contarct/boolean-filter.ts","../../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/contarct/filter-component-map.ts","../../src/component/filter/filter-host/filter-host.component.ts","../../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/highlight/highlight.module.ts","../../src/component/input/form-group-title/form-group-title.component.ts","../../src/component/input/form-group-title/form-group-title.component.html","../../src/component/input/input.module.ts","../../src/component/select/select.module.ts","../../src/component/radio/radio.module.ts","../../src/component/filter/filter.module.ts","../../src/component/filter/contarct/filter-item.ts","../../src/component/filter/contarct/sort-param.ts","../../src/component/filter/contarct/filter-state.ts","../../src/component/message/message.service.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/message/message.module.ts","../../src/component/message/model/message.ts","../../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/common/contract/dynamic-data.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/common/contract/teta-content-ref.ts","../../src/common/service/dynamic-component.service.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/pager.module.ts","../../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/panel/panel.module.ts","../../src/component/progress-bar/progress-bar/progress-bar.component.ts","../../src/component/progress-bar/progress-bar/progress-bar.component.html","../../src/component/progress-bar/progress-bar.module.ts","../../src/util/forms-util.ts","../../src/component/toggle/toggle/toggle.component.ts","../../src/component/toggle/toggle/toggle.component.html","../../src/directive/dynamic-content-base.directive.ts","../../src/directive/hint/hint.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/property-grid/default/numeric-item-default/numeric-item-default.component.ts","../../src/component/property-grid/default/numeric-item-default/numeric-item-default.component.html","../../src/component/property-grid/default/date-item-default/date-item-default.component.ts","../../src/component/property-grid/default/date-item-default/date-item-default.component.html","../../src/component/property-grid/default/list-item-default/list-item-default.component.ts","../../src/component/property-grid/default/list-item-default/list-item-default.component.html","../../src/component/property-grid/default/string-item-default/string-item-default.component.ts","../../src/component/property-grid/default/string-item-default/string-item-default.component.html","../../src/pipe/number-pipe/number.pipe.ts","../../src/pipe/number-pipe/number-pipe.module.ts","../../src/component/toggle/toggle.module.ts","../../src/directive/hint/hint.module.ts","../../src/component/property-grid/property-grid.module.ts","../../src/component/sidebar/sidebar-position.enum.ts","../../src/component/sidebar/sidebar/sidebar.component.ts","../../src/component/sidebar/sidebar/sidebar.component.html","../../src/component/sidebar/sidebar.module.ts","../../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/switch/switch.module.ts","../../src/component/table/contract/table-row.ts","../../src/component/table/contract/table-column.ts","../../src/component/table/contract/column-reorder-event.ts","../../src/component/table/util/state-util.ts","../../src/component/table/enum/select-type.enum.ts","../../src/component/table/contract/table-column-store.ts","../../src/component/table/service/table.service.ts","../../src/component/table/base/group-row-component-base.ts","../../src/component/table/default/group-row/group-row.component.ts","../../src/component/table/default/group-row/group-row.component.html","../../src/component/table/enum/edit-type.enum.ts","../../src/component/table/enum/edit-event.enum.ts","../../src/component/table/contract/table-context-menu-config.ts","../../src/component/table/util/table-util.ts","../../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/contract/column-resize-event.ts","../../src/component/table/contract/sort-event.ts","../../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/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/tree/tree.service.ts","../../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/tree/tree-item-toggle/tree-item-toggle.component.ts","../../src/component/tree/tree-item-toggle/tree-item-toggle.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/directive/resize-drag/resize-drag.directive.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/table-head/table-head.component.ts","../../src/component/table/table-head/table-head.component.html","../../src/component/table/enum/aggregation-type.enum.ts","../../src/component/table/selection-cell/selection-cell.component.ts","../../src/component/table/selection-cell/selection-cell.component.html","../../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/table-body/table-body.component.ts","../../src/component/table/table-body/table-body.component.html","../../src/component/table/table/table.component.ts","../../src/component/table/table/table.component.html","../../src/component/tabs/tabs.module.ts","../../src/directive/teta-template/teta-template.module.ts","../../src/component/tree/tree.module.ts","../../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/directive/resize-drag/resize-drag.module.ts","../../src/component/table/table.module.ts","../../src/component/table/base/detail-component-base.ts","../../src/component/theme-switch/theme-switch.service.ts","../../src/component/theme-switch/theme-switch/theme-switch.component.ts","../../src/component/theme-switch/theme-switch/theme-switch.component.html","../../src/component/theme-switch/theme-switch.module.ts","../../src/component/chart-3d/chart3d/chart3d.component.ts","../../src/component/chart-3d/chart3d/chart3d.component.html","../../src/component/chart-3d/chart-3d.module.ts","../../src/component/chart-3d/model/chart-3d-options.ts","../../src/component/public-api.ts","../../src/common/service/click.service.ts","../../src/directive/context-menu/context-menu.directive.ts","../../src/directive/context-menu/context-menu.module.ts","../../src/directive/disable-control/disable-control.directive.ts","../../src/directive/disable-control/disable-control.module.ts","../../src/directive/drag-sort/drag-sort-container.directive.ts","../../src/directive/drag-sort/drag-sort-item.directive.ts","../../src/directive/drag-sort/drag-sort.module.ts","../../src/directive/loader/loader.directive.ts","../../src/directive/loader/loader.module.ts","../../src/component/resize-panel/resize-panel/resize-panel.component.ts","../../src/component/resize-panel/resize-panel/resize-panel.component.html","../../src/component/resize-panel/resize-panel.module.ts","../../src/directive/tooltip/tooltip.directive.ts","../../src/directive/tooltip/tooltip.module.ts","../../src/directive/no-autofill/no-autofill.directive.ts","../../src/directive/no-autofill/no-autofill.module.ts","../../src/common/service/overlay-container.service.ts","../../src/util/string-util.ts","../../src/public-api.ts","../../src/tetacom-ng-components.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n OnInit,\n} 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})\nexport class AccordionComponent implements OnInit {\n @HostBinding('class.accordion') private readonly accordionClassName = true;\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<ng-content></ng-content>\n","import {Directive, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: '[tetaAccordionContent]'\n})\nexport class AccordionContentDirective {\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n HostBinding,\n Inject,\n Input,\n OnInit,\n Optional,\n} from '@angular/core';\nimport { AccordionContentDirective } from '../accordion-content.directive';\nimport { AccordionComponent } from '../accordion/accordion.component';\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})\nexport class AccordionItemComponent implements OnInit {\n @ContentChild(AccordionContentDirective, { static: false })\n content: AccordionContentDirective;\n\n @HostBinding('class.accordion-item_active')\n @Input()\n open: boolean;\n @Input() disabled: boolean;\n\n @HostBinding('class.accordion-item') private readonly accordionItemClass =\n true;\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 ngOnInit() {}\n}\n","<ng-content select=\"teta-accordion-head\"></ng-content>\n<div class=\"accordion-content\" *ngIf=\"open\">\n <ng-container *ngTemplateOutlet=\"content.template\"></ng-container>\n</div>\n","export enum TetaSize {\n XS,\n S,\n M,\n L,\n XL\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n OnInit,\n} from '@angular/core';\nimport { TetaSize } from '../../../common/enum/teta-size.enum';\n\n@Component({\n selector: 'teta-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconComponent implements OnInit {\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 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 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';\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})\nexport class AccordionHeadComponent implements OnInit {\n @HostBinding('class.accordion-head') private readonly accordionHeadClass =\n 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<div *ngIf=\"showToggle\" class=\"accordion-toggle\">\n <teta-icon [name]=\"open ? 'arrowUpKey' : 'arrowDownKey'\"\n [palette]=\"'text'\"></teta-icon>\n</div>\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(@Inject(DOCUMENT) protected _document: any,\n private _rendererFactory: RendererFactory2,\n private _httpBackend: HttpBackend,\n private _http: HttpClient) {\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'})\n .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})\nexport class IconSpriteDirective implements OnInit {\n @Input() tetaIconSprite: string | string[];\n @Input() bypassInterceptors = true;\n\n constructor(private _iconService: IconService) {\n }\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 {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {IconComponent} from './icon/icon.component';\nimport {IconSpriteDirective} from './icon-sprite.directive';\nimport {HttpClientModule} from '@angular/common/http';\n\n\n@NgModule({\n declarations: [\n IconComponent,\n IconSpriteDirective\n ],\n exports: [\n IconComponent,\n IconSpriteDirective\n ],\n imports: [\n CommonModule,\n HttpClientModule\n ]\n})\nexport class IconModule {\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {AccordionComponent} from './accordion/accordion.component';\nimport {AccordionHeadComponent} from './accordion-head/accordion-head.component';\nimport {AccordionContentDirective} from './accordion-content.directive';\nimport {IconModule} from '../icon/icon.module';\nimport {AccordionItemComponent} from './accordion-item/accordion-item.component';\n\n@NgModule({\n declarations: [AccordionComponent, AccordionHeadComponent, AccordionContentDirective, AccordionItemComponent],\n exports: [AccordionComponent, AccordionHeadComponent, AccordionContentDirective, AccordionItemComponent],\n imports: [\n CommonModule,\n IconModule\n ]\n})\nexport class AccordionModule {\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n OnInit,\n} from '@angular/core';\n\nexport type ButtonViewType = 'primary' | 'outline' | 'ghost';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[teta-button], teta-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonComponent implements OnInit {\n @Input() palette: string;\n @Input() class;\n @Input() view: ButtonViewType = 'primary';\n @Input() square = false;\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 return result.join(' ');\n }\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<ng-content></ng-content>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ButtonComponent} from './button/button.component';\n\n\n@NgModule({\n declarations: [ButtonComponent],\n imports: [\n CommonModule\n ],\n exports: [\n ButtonComponent\n ]\n})\nexport class ButtonModule {\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';\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})\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\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","<div class=\"checkbox__tick\">\n <teta-icon [name]=\"checked ? 'tick' : checked === false ? '' : 'minus'\"></teta-icon>\n</div>\n<span class=\"font-body-3 margin-left-1\" *ngIf=\"!noLabel\">\n <ng-content></ng-content>\n</span>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {CheckboxComponent} from './checkbox/checkbox.component';\nimport {IconModule} from '../icon/icon.module';\n\n@NgModule({\n declarations: [CheckboxComponent],\n imports: [\n CommonModule,\n IconModule\n ],\n exports: [\n CheckboxComponent\n ]\n})\nexport class CheckboxModule {\n}\n","export enum DatePickerMode {\n date,\n month,\n year\n}\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 =\n '\\\\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) =>\n ('0'.repeat(length) + input).slice(-length);\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)}.\n ${prependZero(month, 2)}.\n ${dat.getFullYear()}\n ${prependZero(dat.getHours(), 2)}:\n ${prependZero(dat.getMinutes(), 2)}:\n ${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(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n ).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(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n ).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 =\n /^\\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(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n 0,\n 0,\n 0\n );\n return res;\n }\n\n public static truncateToHour(date: Date): Date {\n const res = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n 0,\n 0\n );\n return res;\n }\n\n public static toISOString(date: number): string {\n return (\n new Date(date - new Date().getTimezoneOffset() * 60000)\n .toISOString()\n .slice(0, -5) + 'Z'\n );\n }\n\n public static isValidDate(date: any): boolean {\n return date instanceof Date && !isNaN(date.getTime());\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 =\n /^\\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","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 { DatePeriod } from '../model/date-period';\nimport { DayModel } from '../model/day-model';\n\nexport class DatePickerUtil {\n static getFirstDay(\n month: number,\n year: number,\n firstDayOfWeek: number\n ): Date {\n const lastDay = new Date(year, month, 0);\n const lastDayIndex =\n lastDay.getDay() >= firstDayOfWeek\n ? lastDay.getDay() - firstDayOfWeek\n : lastDay.getDay() + 7 - firstDayOfWeek;\n return new Date(year, month - 1, lastDay.getDate() - lastDayIndex);\n }\n\n static getPickerDays(\n date: Date,\n firstDayOfWeek: number,\n minDate: Date,\n maxDate: Date,\n disabledDates: Date[],\n disabledDays: number[],\n disabledPeriods: DatePeriod[]\n ): DayModel[] {\n const days = [];\n const firstDay = DatePickerUtil.getFirstDay(\n date.getMonth(),\n date.getFullYear(),\n firstDayOfWeek\n );\n for (let i = 0; i < 6 * 7; i++) {\n const dat = new Date(firstDay);\n dat.setDate(dat.getDate() + i);\n days.push(\n new DayModel({\n date: dat,\n disabled: DatePickerUtil.isDateInvalid(\n dat,\n minDate,\n maxDate,\n disabledDates,\n disabledDays,\n disabledPeriods\n ),\n today: DatePickerUtil.isToday(dat),\n isCurrentMonth: dat.getMonth() === date.getMonth(),\n selected:\n dat.getFullYear() === date.getFullYear() &&\n dat.getMonth() === date.getMonth() &&\n dat.getDate() === date.getDate(),\n weekend: dat.getDay() === 0 || dat.getDay() === 6,\n })\n );\n }\n return days;\n }\n\n static isDateInvalid(\n dat: Date,\n minDate: Date,\n maxDate: Date,\n disabledDates: Date[],\n disabledDays: number[],\n disabledPeriods: DatePeriod[]\n ): boolean {\n return (\n DatePickerUtil.isDayDisabled(dat, disabledDays) ||\n DatePickerUtil.isDateDisabled(dat, disabledDates) ||\n DatePickerUtil.isDateInDisabledPeriod(dat, disabledPeriods) ||\n DatePickerUtil.isMaxInvalid(dat, maxDate) ||\n DatePickerUtil.isMinInvalid(dat, minDate)\n );\n }\n\n static isDayDisabled(dat: Date, disabledDays: number[]): boolean {\n if (\n dat === null ||\n dat === undefined ||\n disabledDays === null ||\n disabledDays === undefined ||\n disabledDays.length < 1\n ) {\n return false;\n }\n return disabledDays.indexOf(dat.getDay()) >= 0;\n }\n\n static isMinInvalid(dat: Date, minDate: Date): boolean {\n if (\n dat === null ||\n dat === undefined ||\n minDate === null ||\n minDate === undefined\n ) {\n return false;\n }\n return minDate.getTime() > dat.getTime();\n }\n\n static isMaxInvalid(dat: Date, maxDate: Date): boolean {\n if (\n dat === null ||\n dat === undefined ||\n maxDate === null ||\n maxDate === undefined\n ) {\n return false;\n }\n return maxDate.getTime() < dat.getTime();\n }\n\n static isDateInDisabledPeriod(\n dat: Date,\n disabledPeriods: DatePeriod[]\n ): boolean {\n if (\n dat === null ||\n dat === undefined ||\n disabledPeriods === null ||\n disabledPeriods === undefined ||\n disabledPeriods.length < 1\n ) {\n return false;\n }\n return disabledPeriods.some(\n (d: DatePeriod) =>\n d !== null &&\n d !== undefined &&\n d.start !== null &&\n d.start !== undefined &&\n d.end !== null &&\n d.end !== undefined &&\n d.start.getTime() <= dat.getTime() &&\n d.end.getTime() >= dat.getTime()\n );\n }\n\n static isDateDisabled(dat: Date, disabledDates: Date[]): boolean {\n if (\n disabledDates === null ||\n disabledDates === undefined ||\n disabledDates.length < 1 ||\n dat === null ||\n dat === undefined\n ) {\n return false;\n }\n return disabledDates.some(\n (d: Date) =>\n d !== null &&\n d !== undefined &&\n d.getFullYear() === dat.getFullYear() &&\n d.getMonth() === dat.getMonth() &&\n d.getDate() === dat.getDate()\n );\n }\n\n static isToday(dat: Date): boolean {\n if (dat === null || dat === undefined) {\n return false;\n }\n const today = new Date();\n return (\n dat.getFullYear() === today.getFullYear() &&\n dat.getMonth() === today.getMonth() &&\n dat.getDate() === today.getDate()\n );\n }\n\n static scrollMonth(delta: number, date: Date) {\n const res = new Date(date);\n let month = date.getMonth();\n let year = date.getFullYear();\n if (delta > 0) {\n if (month === 11) {\n month = 0;\n year++;\n } else {\n month++;\n }\n } else {\n if (month === 0) {\n month = 11;\n year--;\n } else {\n month--;\n }\n }\n res.setFullYear(year, month);\n return res;\n }\n\n static scrollYear(delta: number, date: Date) {\n const res = new Date(date);\n let year = date.getFullYear();\n if (delta > 0) {\n year++;\n } else {\n year--;\n }\n res.setFullYear(year);\n return res;\n }\n\n // static isSelected(date: Date, selectedDate: Date): boolean {\n // if (date === null || date === undefined || selectedDate === null || selectedDate === undefined) {\n // return false;\n // }\n // return date.getFullYear() === selectedDate.getFullYear()\n // && date.getMonth() === selectedDate.getMonth()\n // && date.getDate() === selectedDate.getDate();\n // }\n\n // static nextMonth(date: Date): Date {\n // const dt = new Date(date);\n // dt.setMonth(dt.getMonth() + 1);\n // return dt;\n // }\n\n // static prevMonth(date: Date): Date {\n // const dt = new Date(date);\n // dt.setMonth(dt.getMonth() - 1);\n // return dt;\n // }\n}\n","export enum Align {\n left,\n right,\n center,\n auto,\n fitWidth,\n minWidth,\n}\n","export enum VerticalAlign {\n top,\n bottom,\n center,\n auto\n}\n","export class PickerLocaleModel {\n dayNames: string[];\n dayNamesShort: string[];\n dayNamesMin: string[];\n monthNames: string[];\n monthNamesShort: string[];\n today: string;\n\n public constructor(options?: {\n dayNames: string[];\n dayNamesShort: string[];\n dayNamesMin: string[];\n monthNames: string[];\n monthNamesShort: string[];\n today: string;\n }) {\n if (options) {\n this.dayNames = options.dayNames;\n this.dayNamesShort = options.dayNamesShort;\n this.dayNamesMin = options.dayNamesMin;\n this.monthNames = options.monthNames;\n this.monthNamesShort = options.monthNamesShort;\n this.today = options.today;\n }\n }\n}\n","import {Injectable} from '@angular/core';\nimport {PickerLocaleModel} from '../model/picker-locale-model';\nimport {BehaviorSubject} from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PickerLocaleService {\n private _defaults = new PickerLocaleModel({\n dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n monthNames: ['January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December'],\n monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n today: 'Today'\n });\n\n public locale: BehaviorSubject<PickerLocaleModel> = new BehaviorSubject<PickerLocaleModel>(this._defaults);\n\n public setLocale(locale: PickerLocaleModel) {\n this.locale.next(locale);\n }\n\n constructor() {\n }\n}\n","export class DomUtil {\n public static clickedInside(target: HTMLElement, event: MouseEvent): boolean {\n return 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","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: number = 0,\n verticalMargin: number = 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.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 =\n (containerPosition.left + containerPosition.right) / 2 -\n elementWidth / 2;\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 +\n (elementPosition.bottom - elementPosition.top) <=\n window.innerHeight\n ) {\n verticalAlign = VerticalAlign.bottom;\n } else {\n verticalAlign = VerticalAlign.top;\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.center) {\n rect.top =\n (containerPosition.top + containerPosition.bottom) / 2 -\n elementHeight / 2;\n }\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 (verticalAlign === VerticalAlign.bottom || verticalAlign === VerticalAlign.center) {\n rect.maxHeight = window.innerHeight - rect.top;\n }\n if (verticalAlign === VerticalAlign.top) {\n rect.maxHeight = containerPosition.top;\n }\n rect.left = rect.left - transformedParentRect.left;\n rect.right = rect.right - transformedParentRect.left;\n rect.top = rect.top - transformedParentRect.top;\n rect.bottom = rect.bottom ? rect.bottom - transformedParentRect.bottom : rect.bottom;\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 =\n 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 {Directive, Optional, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: '[tetaDropdownHead]'\n})\nexport class DropdownHeadDirective {\n constructor(@Optional() public template: TemplateRef<any>) {\n }\n}\n","import {Directive, ElementRef} from '@angular/core';\n\n@Directive({\n selector: '[tetaDropdownContent]'\n})\nexport class DropdownContentDirective {\n nativeElement: HTMLElement;\n\n constructor(private _elementRef: ElementRef<HTMLElement>) {\n this.nativeElement = _elementRef.nativeElement;\n }\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 {DomUtil} from '../../common/util/dom-util';\nimport {PositionUtil} from '../../common/util/position-util';\nimport {Align} from '../../common/enum/align.enum';\nimport {VerticalAlign} from '../../common/enum/vertical-align.enum';\nimport {DropdownHeadDirective} from './dropdown-head.directive';\nimport {DropdownContentDirective} from './dropdown-content.directive';\nimport {AutoCloseIgnoreCase} from '../../common/contract/auto-close-ignore-case';\nimport {IRect} from '../../common/contract/i-rect';\nimport {takeWhile, throttleTime} from 'rxjs/operators';\n\n@Directive()\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class DropdownBase {\n @Input() align: Align = Align.left;\n @Input() verticalAlign: VerticalAlign = VerticalAlign.bottom;\n @Input() appendToBody: boolean;\n @Input() disabled: boolean;\n @Input() shadow = true;\n @Input() className: string | string[];\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\n ? this._document.body\n : 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 _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 }\n\n @HostListener('click', ['$event']) click(event: MouseEvent): void {\n if (this.open) {\n if (!DomUtil.clickedInside(this._body, event)) {\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(\n event: MouseEvent\n ): void {\n if (\n !this.open ||\n !this.autoClose ||\n event.detail === 0 ||\n DomUtil.clickedInside(this._head.nativeElement, event) ||\n DomUtil.clickedInside(this._body, event)\n ) {\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 if (\n !this.open ||\n !this.autoClose ||\n ['esc', 'enter'].every(\n (_: 'esc' | 'enter') => this.autoCloseIgnore.indexOf(_) >= 0\n )\n ) {\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 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 this.openChange.emit(this.open);\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 =\n this._body || renderer.createElement('div'));\n renderer.addClass(container, 'dropdown');\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\n renderer.appendChild(container, content);\n renderer.appendChild(this.container, container);\n\n this.setPosition(this._head.nativeElement, this._body);\n }\n\n private setPosition(container: HTMLElement, target: HTMLElement): void {\n const containerPosition = container.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(\n rect,\n targetRect,\n this.align,\n this.verticalAlign,\n 0,\n 0,\n parentPosition\n );\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})\nexport class DropdownComponent\n extends DropdownBase\n implements OnInit, OnDestroy\n{\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._alive = false;\n }\n}\n","<ng-content select=\"[tetaDropdownHead]\"></ng-content>\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { bufferCount, tap, throttleTime } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PickerTouchService {\n step: Observable<number>;\n\n private touchMove: Observable<TouchEvent>;\n private touchMove$: Subject<TouchEvent> = new Subject<TouchEvent>();\n private step$: Subject<number> = new Subject<number>();\n\n constructor() {\n this.touchMove = this.touchMove$.asObservable();\n this.step = this.step$.asObservable();\n\n this.touchMove\n .pipe(\n throttleTime(25),\n bufferCount(2),\n tap((touches: [TouchEvent, TouchEvent]) => {\n const [start, end] = touches.map((_) => _.changedTouches?.item(0));\n const deltaY = start?.clientY - end?.clientY;\n if (deltaY !== 0) {\n const step = deltaY > 0 ? 1 : -1;\n this.step$.next(step);\n }\n })\n )\n .subscribe();\n }\n\n onTouchMove(event: TouchEvent) {\n this.touchMove$.next(event);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { takeWhile, tap } from 'rxjs/operators';\nimport { PickerTouchService } from '../service/picker-touch.service';\n\n@Component({\n selector: 'teta-year-select',\n templateUrl: './year-select.component.html',\n styleUrls: ['./year-select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YearSelectComponent implements OnInit, OnDestroy, AfterViewInit {\n @Input() currentYear: number;\n @Input() today: Date;\n @Input() size = 8;\n @Input() minDate: Date;\n @Input() maxDate: Date;\n @Input() allowableRange: number[] = [1900, 2100];\n @Output() yearSelected = new EventEmitter<number>();\n @Output() yearApplied = new EventEmitter<number>();\n\n minYearDate: Date;\n maxYearDate: Date;\n years: number[];\n minYearList: number[];\n maxYearList: number[];\n decreaseInterval: number;\n increaseInterval: number;\n private _alive = true;\n\n constructor(\n private _cdr: ChangeDetectorRef,\n private _pickerTouchService: PickerTouchService,\n private _elementRef: ElementRef\n ) {}\n\n ngOnInit() {\n const [minRange, maxRange] = this.allowableRange;\n this.minYearDate = new Date(minRange, 0, 1);\n this.maxYearDate = new Date(maxRange, 11, 31);\n this.initMinYearList();\n this.initMaxYearList();\n this.initYearSelector(this.currentYear);\n }\n\n ngAfterViewInit() {\n const touchMove$ = fromEvent(\n this._elementRef.nativeElement.parentElement,\n 'touchmove'\n );\n\n touchMove$\n .pipe(\n takeWhile((_) => this._alive),\n tap((e: TouchEvent) => {\n this._pickerTouchService.onTouchMove(e);\n })\n )\n .subscribe();\n\n this._pickerTouchService.step\n .pipe(\n takeWhile((_) => this._alive),\n tap((_) => {\n this.shiftYearSelector(_);\n this._cdr.detectChanges();\n })\n )\n .subscribe();\n }\n\n ngOnDestroy() {\n window.clearInterval(this.decreaseInterval);\n window.clearInterval(this.increaseInterval);\n this._alive = false;\n }\n\n scrollYearSelector = (e: WheelEvent) => {\n e.preventDefault();\n e.stopPropagation();\n const step = e.deltaY > 0 ? 1 : -1;\n this.shiftYearSelector(step);\n };\n\n setYear = (e: any, year: number) => {\n e.preventDefault();\n e.stopPropagation();\n if (!this.isYearDisabled(year)) {\n this.yearSelected.emit(year);\n }\n };\n\n applyYear = (e: any, year: number) => {\n e.preventDefault();\n e.stopPropagation();\n if (!this.isYearDisabled(year)) {\n this.yearApplied.emit(year);\n }\n };\n\n initYearSelector = (year: number) => {\n if (!year) {\n year = this.today.getFullYear();\n }\n this.years = [year];\n let direction = false;\n for (let i = 1; i < this.size; i++) {\n if (direction) {\n this.years.unshift(this.years[0] - 1);\n } else {\n this.years.push(this.years[this.years.length - 1] + 1);\n }\n direction = !direction;\n }\n this.checkRanges();\n };\n\n initMinYearList = () => {\n this.minYearList = [this.minYearDate.getFullYear()];\n for (let i = 1; i < this.size; i++) {\n this.minYearList.push(this.minYearList[this.minYearList.length - 1] + 1);\n }\n };\n\n initMaxYearList = () => {\n this.maxYearList = [this.maxYearDate.getFullYear()];\n for (let i = 1; i < this.size; i++) {\n this.maxYearList.unshift(this.maxYearList[0] - 1);\n }\n };\n\n checkRanges = () => {\n if (\n this.years.some((year) => {\n const dat = new Date(year, 0, 1);\n return this.isMinYear(dat);\n })\n ) {\n this.years = this.minYearList;\n }\n if (\n this.years.some((year) => {\n const dat = new Date(year, 0, 1);\n return this.isMaxYear(dat);\n })\n ) {\n this.years = this.maxYearList;\n }\n };\n\n shiftYearSelector = (step: number = 0) => {\n this.years = this.years.map((year) => year + step);\n this.checkRanges();\n };\n\n decreaseYearSelector = (step: number = 3) => {\n const dat = new Date(this.years[0] - step, 0, 1);\n if (this.isMinYear(dat)) {\n this.years = this.minYearList;\n return;\n }\n\n this.years = this.years.map((year) => year - step);\n };\n\n increaseYearSelector = (step: number = 3) => {\n const dat = new Date(this.years[this.years.length - 1] + step, 0, 1);\n if (this.isMaxYear(dat)) {\n this.years = this.maxYearList;\n return;\n }\n this.years = this.years.map((year) => year + step);\n };\n\n // stopLongDecrease = () => {\n // window.clearInterval(this.decreaseInterval);\n // };\n //\n // stopLongIncrease = () => {\n // window.clearInterval(this.increaseInterval);\n // };\n\n isMinYear = (dat: Date): boolean => {\n if (!this.minYearDate || !(this.minYearDate instanceof Date) || !dat) {\n return false;\n }\n return this.minYearDate.getFullYear() > dat.getFullYear();\n };\n\n isMaxYear = (dat: Date): boolean => {\n if (!this.maxYearDate || !(this.maxYearDate instanceof Date) || !dat) {\n return false;\n }\n return this.maxYearDate.getFullYear() < dat.getFullYear();\n };\n\n isYearDisabled = (year: number) => {\n if (year) {\n const dat = new Date(year, 0, 1);\n return this.isMaxInvalid(dat) || this.isMinInvalid(dat);\n }\n return false;\n };\n\n isMinInvalid = (dat: Date): boolean => {\n if (!this.minDate || !(this.minDate instanceof Date) || !dat) {\n return false;\n }\n return this.minDate.getFullYear() > dat.getFullYear();\n };\n\n isMaxInvalid = (dat: Date): boolean => {\n if (!this.maxDate || !(this.maxDate instanceof Date) || !dat) {\n return false;\n }\n return this.maxDate.getFullYear() < dat.getFullYear();\n };\n}\n","<div class=\"list row_auto margin-top-2\"\n (wheel)=\"scrollYearSelector($event);\">\n <div class=\"list-item list-item_interactive\"\n [class.list-item_active]=\"year === currentYear\"\n [class.list-item_disabled]=\"isYearDisabled(year)\"\n (click)=\"setYear($event, year)\"\n (dblclick)=\"applyYear($event, year)\"\n *ngFor=\"let year of years\">\n {{year}}\n </div>\n</div>\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {prependZero} from '../util/number-helper';\n\n@Pipe({\n name: 'tetaPrependZero'\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 {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { PickerLocaleModel } from '../model/picker-locale-model';\nimport { fromEvent, merge } from 'rxjs';\nimport { takeWhile, tap } from 'rxjs/operators';\nimport { PickerTouchService } from '../service/picker-touch.service';\n\n@Component({\n selector: 'teta-month-select',\n templateUrl: './month-select.component.html',\n styleUrls: ['./month-select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MonthSelectComponent implements OnInit, AfterViewInit, OnDestroy {\n @Input() locale: PickerLocaleModel;\n @Input() minDate: Date;\n @Input() maxDate: Date;\n @Input() size = 8;\n @Output() monthSelected = new EventEmitter<number>();\n @Output() monthApplied = new EventEmitter<number>();\n\n _currentMonth: number;\n\n @Input()\n set currentMonth(val: number) {\n this._currentMonth = val;\n this.makeMonths();\n }\n\n get currentMonth(): number {\n return this._currentMonth;\n }\n\n _currentYear: number;\n\n @Input()\n set currentYear(val: number) {\n this._currentYear = val;\n }\n\n get currentYear(): number {\n return this._currentYear;\n }\n\n today: Date;\n months: number[] = [];\n shift = 0;\n\n private _alive = true;\n\n private get _displayDate(): Date {\n let month = 0;\n let year = 0;\n if (\n this.currentMonth !== null &&\n this.currentMonth !== undefined &&\n this.currentMonth >= 0 &&\n this.currentMonth <= 11\n ) {\n month = this.currentMonth;\n }\n if (this.currentYear !== null && this.currentYear !== undefined) {\n year = this.currentYear;\n }\n return new Date(year, month, 1);\n }\n\n constructor(\n private _elementRef: ElementRef,\n private _cdr: ChangeDetectorRef,\n private _pickerTouchService: PickerTouchService\n ) {\n this.today = new Date();\n this.today.setHours(0, 0, 0, 0);\n }\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this._alive = false;\n }\n\n ngAfterViewInit() {\n const touchMove$ = fromEvent(\n this._elementRef.nativeElement.parentElement,\n 'touchmove'\n );\n\n touchMove$\n .pipe(\n takeWhile((_) => this._alive),\n tap((e: TouchEvent) => {\n if (e.type === 'touchmove') {\n this._pickerTouchService.onTouchMove(e);\n }\n })\n )\n .subscribe();\n\n this._pickerTouchService.step\n .pipe(\n takeWhile((_) => this._alive),\n tap((_) => {\n this.shiftMonthSelector(_);\n this._cdr.detectChanges();\n })\n )\n .subscribe();\n }\n\n scrollMonthSelector = (e: WheelEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n const step = e.deltaY > 0 ? 1 : -1;\n this.shiftMonthSelector(step);\n };\n\n shiftMonthSelector = (step: number = 0) => {\n this.shift += step;\n this.makeMonths();\n };\n\n setMonth = (e: any, month: number) => {\n e.preventDefault();\n e.stopPropagation();\n if (!this.isMonthDisabled(month)) {\n this.shift = 0;\n this.monthSelected.emit(month);\n }\n };\n\n applyMonth = (e: any, month: number) => {\n e.preventDefault();\n e.stopPropagation();\n if (!this.isMonthDisabled(month)) {\n this.monthApplied.emit(month);\n }\n };\n\n isMonthDisabled = (month: number) => {\n if (!month && !this.currentYear) {\n const dat = new Date(this.currentYear, month, 1);\n return this.isMaxInvalid(dat) || this.isMinInvalid(dat);\n }\n return false;\n };\n\n isMinInvalid = (dat: Date): boolean => {\n if (!this.minDate || !(this.minDate instanceof Date) || !dat) {\n return false;\n }\n const min = new Date(\n this.minDate.getFullYear(),\n this.minDate.getMonth(),\n 1\n );\n return min.getTime() > dat.getTime();\n };\n\n isMaxInvalid = (dat: Date): boolean => {\n if (!this.maxDate || !(this.maxDate instanceof Date) || !dat) {\n return false;\n }\n const max = new Date(\n this.maxDate.getFullYear(),\n this.maxDate.getMonth(),\n 1\n );\n return max.getTime() < dat.getTime();\n };\n\n private makeMonths() {\n const start = this._displayDate;\n this.months = [];\n start.setMonth(start.getMonth() - 3);\n for (let i = this.shift; i < this.size + this.shift; i++) {\n const dt = new Date(start.getFullYear(), start.getMonth() + i, 1);\n this.months.push(dt.getMonth());\n }\n }\n}\n","<div class=\"list row_auto margin-top-2\"\n (wheel)=\"scrollMonthSelector($event);\">\n <div *ngFor=\"let month of months\"\n class=\"list-item list-item_interactive\"\n [class.list-item_active]=\"month === _currentMonth\"\n [class.list-item_disabled]=\"isMonthDisabled(month)\"\n [class.datepicker__month__item_current]=\"month === today?.getMonth() && currentYear === today?.getFullYear()\"\n (click)=\"setMonth($event, month)\"\n (dblclick)=\"applyMonth($event, month)\">\n <span class=\"color-text-20 margin-right-2\">\n {{month + 1 | tetaPrependZero: 2}}\n </span>\n {{locale.monthNames[month]}}\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { DayModel } from '../model/day-model';\nimport { DatePeriod } from '../model/date-period';\nimport { PickerLocaleService } from '../service/picker-locale.service';\nimport { takeWhile, tap, withLatestFrom } from 'rxjs/operators';\nimport { PickerLocaleModel } from '../model/picker-locale-model';\nimport { DatePickerUtil } from '../util/date-picker-util';\nimport { fromEvent } from 'rxjs';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DateUtil } from '../../../util/date-util';\n\nexport const DAY_SELECT_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DaySelectComponent),\n multi: true,\n};\n\n@Component({\n selector: 'teta-day-select',\n templateUrl: './day-select.component.html',\n styleUrls: ['./day-select.component.scss'],\n providers: [DAY_SELECT_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DaySelectComponent\n implements OnInit, OnDestroy, ControlValueAccessor\n{\n @Input() firstDayOfWeek = 1;\n @Input() disabledDates: Date[];\n @Input() disabledPeriods: DatePeriod[];\n @Input() disabledDays: number[];\n @Input() minDate: Date;\n @Input() maxDate: Date;\n @Input() disabled: boolean;\n\n @Output() dateSelected = new EventEmitter<Date>();\n @Output() monthSelected = new EventEmitter<number>();\n @Output() yearSelected = new EventEmitter<number>();\n\n locale: PickerLocaleModel;\n\n value: Date;\n\n _currentValue: Date;\n\n set currentValue(val: Date) {\n if (\n !this._currentValue ||\n DateUtil.truncateToDay(val)?.getTime() !==\n DateUtil.truncateToDay(this._currentValue)?.getTime()\n ) {\n this._currentValue = val;\n this.createDays();\n this.checkDays();\n } else {\n this._currentValue = val;\n }\n this._cdr.markForCheck();\n }\n\n get currentValue(): Date {\n return this._currentValue;\n }\n\n days: Array<DayModel>;\n weekDays: number[] = [];\n\n private _alive = true;\n\n constructor(\n public localeService: PickerLocaleService,\n private _cdr: ChangeDetectorRef,\n private _elementRef: ElementRef\n ) {\n localeService.locale\n .pipe(takeWhile((_) => this._alive))\n .subscribe((locale: PickerLocaleModel) => {\n this.locale = locale;\n });\n }\n\n ngOnInit() {\n this.weekDays = this.createWeekDays();\n\n const touchStart$ = fromEvent(this._elementRef.nativeElement, 'touchstart');\n const touchEnd$ = fromEvent(this._elementRef.nativeElement, 'touchend');\n\n touchEnd$\n .pipe(\n takeWhile((_) => this._alive),\n withLatestFrom(touchStart$),\n tap((touches: [TouchEvent, TouchEvent]) => {\n const [start, end] = touches.map((_) => _.changedTouches?.item(0));\n const deltaY = end?.clientY - start?.clientY;\n if (deltaY !== 0) {\n this.scrollMonth(deltaY);\n }\n })\n )\n .subscribe();\n }\n\n ngOnDestroy() {\n this._alive = false;\n }\n\n writeValue(model: Date) {\n this.value = model;\n this.currentValue = model ? model : new Date();\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 applyValue(day: DayModel, event: MouseEvent) {\n this.preventEvent(event);\n if (day === null || day === undefined || day.disabled) {\n return;\n }\n this.value = day.date;\n this.currentValue = day.date;\n this.onChange(day.date);\n }\n\n setDate(day: DayModel, event: MouseEvent) {\n if (day === null || day === undefined || day.disabled) {\n return;\n }\n if (\n day.date !== null &&\n day.date !== undefined &&\n day.date instanceof Date\n ) {\n this.currentValue = day.date;\n this.dateSelected.emit(day.date);\n }\n }\n\n scrollMonth(event: WheelEvent | number) {\n const deltaY = event instanceof WheelEvent ? event.deltaY : event;\n\n if (event instanceof WheelEvent) {\n this.preventEvent(event);\n }\n this.currentValue = DatePickerUtil.scrollMonth(deltaY, this.currentValue);\n this.monthSelected.emit(this.currentValue.getMonth());\n this.yearSelected.emit(this.currentValue.getFullYear());\n this._cdr.detectChanges();\n }\n\n private createWeekDays(): number[] {\n const result = [];\n let dayIndex = this.firstDayOfWeek;\n for (let i = 0; i < 7; i++) {\n result.push(dayIndex);\n dayIndex = dayIndex === 6 ? 0 : ++dayIndex;\n }\n return result;\n }\n\n private createDays() {\n this.days = DatePickerUtil.getPickerDays(\n this.currentValue,\n this.firstDayOfWeek,\n this.minDate,\n this.maxDate,\n this.disabledDates,\n this.disabledDays,\n this.disabledPeriods\n );\n }\n\n private checkDays() {\n if (this.days) {\n this.days = this.days.map((dat: DayModel) => ({\n ...dat,\n selected:\n dat.date.getFullYear() === this.currentValue.getFullYear() &&\n dat.date.getMonth() === this.currentValue.getMonth() &&\n dat.date.getDate() === this.currentValue.getDate(),\n }));\n }\n }\n\n private preventEvent(event: any) {\n event.stopPropagation();\n event.preventDefault();\n return false;\n }\n}\n","<div class=\"datepicker-week font-caption color-text-80\">\n <div class=\"datepicker-day\"\n [class.font-caption-bold]=\"day === 0 || day === 6\"\n *ngFor=\"let day of weekDays\">\n {{locale.dayNamesMin[day]}}\n </div>\n</div>\n<div class=\"datepicker-picker color-text-90 font-body-3\"\n (wheel)=\"scrollMonth($event)\"\n>\n <div *ngFor=\"let day of days\"\n class=\"datepicker-date\"\n (click)=\"setDate(day, $event);\"\n (dblclick)=\"applyValue(day, $event);\"\n [class.datepicker-date_active]=\"day.selected\"\n [class.datepicker-date_disabled]=\"day.disabled || !day.isCurrentMonth\"\n [class.datepicker-date_weekend]=\"day.weekend\"\n [class.datepicker-date_today]=\"day.today\">\n <ng-container *ngIf=\"day !== null && day !== undefined\">\n {{day.date.getDate()}}\n </ng-container>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n Input,\n OnInit,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport const TIME_PART_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimePartControlComponent),\n multi: true,\n};\n\n@Component({\n selector: 'teta-time-part-control',\n templateUrl: './time-part-control.component.html',\n styleUrls: ['./time-part-control.component.scss'],\n providers: [TIME_PART_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimePartControlComponent implements OnInit, ControlValueAccessor {\n @Input() min = 0;\n @Input() max = 59;\n @Input() disabled: boolean;\n\n private _value: number;\n\n set value(value: number) {\n this._value = value;\n this.onChange(this._value);\n }\n\n get value() {\n return this._value;\n }\n\n constructor(private _cdr: ChangeDetectorRef) {}\n\n up() {\n this.value = this.value < this.max ? this.value + 1 : this.min;\n }\n\n down() {\n this.value = this.value > this.min ? this.value - 1 : this.max;\n }\n\n scroll = (e: any) => {\n const delta = e?.deltaY ?? e;\n\n if (e instanceof WheelEvent) {\n e.preventDefault();\n }\n if (delta > 0) {\n this.down();\n } else {\n this.up();\n }\n };\n\n ngOnInit() {}\n\n writeValue(model: number) {\n this._value = 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","<button teta-button [square]=\"true\" (click)=\"up()\" [palette]=\"'text'\" [view]=\"'ghost'\">\n <teta-icon [name]=\"'arrowUpKey'\"></teta-icon>\n</button>\n<div (wheel)=\"scroll($event);\" class=\"row row_auto font-body-3 height-6 width-6 align-center justify-content-center\">\n {{value | tetaPrependZero: 2}}\n</div>\n<button teta-button [square]=\"true\" (click)=\"down()\" [palette]=\"'text'\" [view]=\"'ghost'\">\n <teta-icon [name]=\"'arrowDownKey'\"></teta-icon>\n</button>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {PickerLocaleService} from '../service/picker-locale.service';\nimport {takeWhile} from 'rxjs/operators';\nimport {DatePeriod} from '../model/date-period';\nimport {PickerLocaleModel} from '../model/picker-locale-model';\nimport {DatePickerMode} from '../model/date-picker-mode.enum';\nimport {DateUtil} from '../../../util/date-util';\nimport {DatePickerUtil} from '../util/date-picker-util';\nimport {Align} from '../../../common/enum/align.enum';\nimport {VerticalAlign} from '../../../common/enum/vertical-align.enum';\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 providers: [DATE_PICKER_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatePickerComponent\n implements ControlValueAccessor, OnInit, OnDestroy {\n @Input() disabled: boolean;\n @Input() invalid: boolean;\n @Input() firstDayOfWeek = 1;\n @Input() disabledDates: Date[];\n @Input() disabledPeriods: DatePeriod[];\n @Input() disabledDays: number[];\n @Input() minDate: Date;\n @Input() maxDate: Date;\n @Input() minYearDate: Date;\n @Input() maxYearDate: Date;\n @Input() align: Align = Align.left;\n @Input() verticalAlign: VerticalAlign = VerticalAlign.auto;\n @Input() appendToBody: boolean;\n\n @HostBinding('class.datepicker-wide')\n @Input()\n showTime = false;\n\n @Input()\n set format(val: string) {\n this._format = val;\n }\n\n get format(): string {\n if (this._format) {\n return this._format;\n }\n return this.showTime ? 'dd.MM.yyyy HH:mm:ss' : 'dd.MM.yyyy';\n }\n\n @HostBinding('class.datepicker_open') open: boolean;\n @HostBinding('class.datepicker') private readonly classDatepicker = true;\n @HostBinding('tabindex') private readonly tabindex = 0;\n\n locale: PickerLocaleModel;\n today: Date = new Date();\n\n datePickerModeEnum = DatePickerMode;\n displayMode: DatePickerMode = DatePickerMode.date;\n _format: string;\n\n _value: Date | null = null;\n _currentValue: Date;\n\n private _alive = true;\n\n get value(): Date | null {\n return this._value;\n }\n\n set value(v: Date | null) {\n if (v?.getTime() !== this._value?.getTime()) {\n this._value = v;\n this.currentValue = this._value;\n }\n }\n\n get currentValue(): Date {\n return this._currentValue;\n }\n\n set currentValue(date: Date) {\n this._currentValue = date;\n this._cdr.markForCheck();\n }\n\n get internalValue() {\n return this.currentValue ?? this.emptyDate();\n }\n\n constructor(\n public localeService: PickerLocaleService,\n private _cdr: ChangeDetectorRef,\n private _elementRef: ElementRef\n ) {\n localeService.locale\n .pipe(takeWhile((_) => this._alive))\n .subscribe((locale: PickerLocaleModel) => {\n this.locale = locale;\n });\n }\n\n @HostListener('window:keyup', ['$event']) keyUp(event: KeyboardEvent): void {\n if (!this.open) {\n return;\n }\n if (event.code === 'Escape') {\n this.currentValue = this.value;\n this.open = false;\n }\n }\n\n writeValue(value: any) {\n this.value = value;\n this._cdr.markForCheck();\n }\n\n onChange = (_: any) => {\n };\n\n onTouched = () => {\n };\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() {\n }\n\n ngOnDestroy() {\n this._alive = false;\n }\n\n applyValue(date: Date) {\n this.setDate(date);\n this.value = this.currentValue;\n this.onChange(new Date(this.value));\n this.open = false;\n }\n\n setDate = (day: Date) => {\n if (day === null || day === undefined) {\n this.currentValue = null;\n return;\n }\n const dt = this.internalValue;\n dt.setFullYear(day.getFullYear(), day.getMonth(), day.getDate());\n this.currentValue = new Date(dt);\n this._cdr.markForCheck();\n };\n\n setYear = (year: number) => {\n const dt = this.internalValue;\n dt.setFullYear(year);\n this.currentValue = new Date(dt);\n this.setMode(DatePickerMode.date);\n this._cdr.markForCheck();\n };\n\n setMonth = (month: number) => {\n const dt = this.internalValue;\n dt.setMonth(month);\n this.currentValue = new Date(dt);\n this.setMode(DatePickerMode.date);\n this._cdr.markForCheck();\n };\n\n setHour = (hours: number) => {\n const dt = this.internalValue;\n dt.setHours(hours);\n this.currentValue = new Date(dt);\n this._cdr.markForCheck();\n };\n\n setMinute = (minute: number) => {\n const dt = this.internalValue;\n dt.setMinutes(minute);\n this.currentValue = new Date(dt);\n this._cdr.markForCheck();\n };\n\n setSecond = (seconds: number) => {\n const dt = this.internalValue;\n dt.setSeconds(seconds);\n this.currentValue = new Date(dt);\n this._cdr.markForCheck();\n };\n\n setToday = () => {\n this.currentValue = this.emptyDate();\n this._cdr.markForCheck();\n };\n\n clearPicker = (event: MouseEvent): void => {\n this.preventEvent(event);\n this.value = null;\n this.onChange(null);\n };\n\n isDateInDisabledPeriod = (dat: Date): boolean => {\n if (!this.disabledPeriods || this.disabledPeriods.length < 1 || !dat) {\n return false;\n }\n return this.disabledPeriods.some(\n (d: DatePeriod) =>\n d &&\n d.start &&\n d.end &&\n d.start.getTime() <= dat.getTime() &&\n d.end.getTime() >= dat.getTime()\n );\n };\n\n isScrollIgnored = (): boolean =>\n this.displayMode === DatePickerMode.month ||\n this.displayMode === DatePickerMode.year;\n\n scrollMonth = (e: any) => {\n const delta = e?.deltaY ?? e;\n\n if (e instanceof WheelEvent) {\n this.preventEvent(e);\n }\n\n if (this.isScrollIgnored()) {\n return false;\n }\n this.currentValue = DatePickerUtil.scrollMonth(delta, this.internalValue);\n };\n\n scrollYear = (e: any) => {\n this.preventEvent(e);\n if (this.isScrollIgnored()) {\n return false;\n }\n this.currentValue = DatePickerUtil.scrollMonth(\n e.deltaY,\n this.internalValue\n );\n };\n\n openPicker = (show: boolean) => {\n if (this.disabled) {\n return;\n }\n if (!show) {\n this.setMode(DatePickerMode.date);\n this.applyValue(this.currentValue);\n }\n this.open = show;\n this._cdr.markForCheck();\n };\n\n closePicker = () => {\n this.openPicker(false);\n this.onTouched();\n };\n\n preventEvent = (event: any) => {\n event.stopPropagation();\n event.preventDefault();\n return false;\n };\n\n focus() {\n this._elementRef.nativeElement.focus();\n }\n\n setMode(mode: DatePickerMode) {\n let result: DatePickerMode;\n if (mode === this.displayMode || mode === DatePickerMode.date) {\n result = DatePickerMode.date;\n } else {\n result = mode;\n }\n this.displayMode = result;\n }\n\n private emptyDate() {\n return DateUtil.truncateToDay(new Date());\n }\n}\n","<teta-dropdown\n class=\"row row_auto\"\n [disabled]=\"disabled\"\n [open]=\"open\"\n [autoCloseIgnore]=\"['esc']\"\n (openChange)=\"openPicker($event)\"\n [align]=\"align\"\n [verticalAlign]=\"verticalAlign\"\n [appendToBody]=\"appendToBody\">\n <div tetaDropdownHead\n class=\"datepicker-head font-body-3\"\n [class.datepicker-head_disabled]=\"disabled\"\n [class.datepicker-head_invalid]=\"invalid\">\n <teta-icon [name]=\"'calendar'\" class=\"margin-right-1\"></teta-icon>\n <div class=\"row_auto\">\n {{currentValue !== null && currentValue !== undefined ? (currentValue | date : format) : ''}}\n </div>\n <teta-icon [name]=\"'closeBig'\" (click)=\"clearPicker($event);\" class=\"margin-left-1\"></teta-icon>\n </div>\n <div tetaDropdownContent class=\"datepicker-body scrollable\" (click)=\"$event.preventDefault()\">\n <div class=\"padding-3\">\n <div class=\"row align-center justify-content-between\">\n <div>\n <button teta-button\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.month ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.month)\"\n (wheel)=\"scrollMonth($event);\">\n {{locale.monthNames[internalValue?.getMonth()]}}\n </button>\n <button teta-button\n class=\"margin-left-2\"\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.year ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.year)\"\n (wheel)=\"scrollYear($event);\">\n {{internalValue?.getFullYear()}}\n </button>\n </div>\n <button teta-button\n [palette]=\"'text'\"\n [view]=\"'ghost'\"\n (click)=\"setToday()\">\n <teta-icon [name]=\"'calendar'\"></teta-icon>\n </button>\n </div>\n <div class=\"datepicker-content\">\n <teta-year-select\n *ngIf=\"displayMode === datePickerModeEnum.year\"\n [currentYear]=\"internalValue?.getFullYear()\"\n [today]=\"today\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (yearSelected)=\"setYear($event)\">\n </teta-year-select>\n <teta-month-select\n *ngIf=\"displayMode === datePickerModeEnum.month\"\n [currentMonth]=\"internalValue?.getMonth()\"\n [currentYear]=\"internalValue?.getFullYear()\"\n [locale]=\"locale\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (monthSelected)=\"setMonth($event)\">\n </teta-month-select>\n <teta-day-select\n *ngIf=\"displayMode === datePickerModeEnum.date\"\n [ngModel]=\"currentValue\"\n (ngModelChange)=\"applyValue($event)\"\n (dateSelected)=\"setDate($event)\"\n (yearSelected)=\"setYear($event)\"\n (monthSelected)=\"setMonth($event)\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [disabledDays]=\"disabledDays\"\n [disabledDates]=\"disabledDates\"\n [disabledPeriods]=\"disabledPeriods\"></teta-day-select>\n </div>\n </div>\n <div *ngIf=\"showTime\" class=\"datepicker-time padding-v-1 border-top border-text-10 font-body-3 color-text-90\">\n <teta-time-part-control [max]=\"23\" [ngModel]=\"internalValue?.getHours()\"\n (ngModelChange)=\"setHour($event)\"></teta-time-part-control>\n :\n <teta-time-part-control [ngModel]=\"internalValue?.getMinutes()\"\n (ngModelChange)=\"setMinute($event)\"></teta-time-part-control>\n :\n <teta-time-part-control [ngModel]=\"internalValue?.getSeconds()\"\n (ngModelChange)=\"setSecond($event)\"></teta-time-part-control>\n </div>\n </div>\n</teta-dropdown>\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 { PickerLocaleModel } from '../model/picker-locale-model';\nimport { PickerLocaleService } from '../service/picker-locale.service';\nimport { takeWhile } from 'rxjs/operators';\nimport { DatePickerMode } from '../model/date-picker-mode.enum';\n\nexport const MONTH_PICKER_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MonthPickerComponent),\n multi: true,\n};\n\n@Component({\n selector: 'teta-month-picker',\n templateUrl: './month-picker.component.html',\n styleUrls: ['./month-picker.component.scss'],\n providers: [MONTH_PICKER_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MonthPickerComponent\n implements ControlValueAccessor, OnInit, OnDestroy\n{\n @Input() disabled: boolean;\n @Input() minDate: Date;\n @Input() maxDate: Date;\n @Input() showToday = true;\n @Input() appendToBody = true;\n\n @HostBinding('class.datepicker_open') showPicker: boolean;\n @HostBinding('class.datepicker') private readonly classDatepicker = true;\n @HostBinding('tabindex') private readonly tabindex = 0;\n\n datePickerModeEnum = DatePickerMode;\n\n locale: PickerLocaleModel;\n today: Date;\n\n displayMode: DatePickerMode = DatePickerMode.month;\n\n _value: Date | null = null;\n _currentMonth: number | null;\n _currentYear: number | null;\n\n get value(): any {\n return this._value;\n }\n\n set value(v: any) {\n if (v !== this._value) {\n this._value = v;\n this.onChange(v);\n }\n }\n\n get currentMonth(): number | null {\n return this._currentMonth;\n }\n\n set currentMonth(v: number | null) {\n if (v === null || v === undefined || v < 0 || v > 11) {\n return;\n }\n if (v !== this._currentMonth) {\n this._currentMonth = v;\n }\n }\n\n get currentYear(): number | null {\n return this._currentYear;\n }\n\n set currentYear(v: number | null) {\n if (v !== this._currentYear) {\n this._currentYear = v;\n }\n }\n\n private _alive = true;\n\n constructor(\n public localeService: PickerLocaleService,\n private _cdr: ChangeDetectorRef\n ) {\n localeService.locale\n .pipe(takeWhile((_) => this._alive))\n .subscribe((locale: PickerLocaleModel) => {\n this.locale = locale;\n });\n this.setDefaults();\n }\n\n writeValue(value: any) {\n this._value = value;\n this.initPicker(value);\n }\n\n initPicker(date: Date) {\n if (!date || !(date instanceof Date)) {\n this.setDefaults();\n } else {\n this.currentMonth = date.getMonth();\n this.currentYear = date.getFullYear();\n }\n this._cdr.markForCheck();\n }\n\n setDefaults() {\n this.today = new Date();\n this.currentMonth = null;\n this.currentYear = null;\n }\n\n clearPicker() {\n this.value = null;\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() {\n if (!this.minDate || !(this.minDate instanceof Date)) {\n this.minDate = new Date('1900-01-01T00:00:00Z');\n }\n if (!this.maxDate || !(this.maxDate instanceof Date)) {\n this.maxDate = new Date('2100-12-31T00:00:00Z');\n }\n this.initPicker(this.value);\n }\n\n ngOnDestroy() {\n this._alive = false;\n }\n\n isMinInvalid = (dat: Date): boolean => {\n if (!this.minDate || !(this.minDate instanceof Date) || !dat) {\n return false;\n }\n const min = new Date(\n this.minDate.getFullYear(),\n this.minDate.getMonth(),\n 1\n );\n return min.getTime() > dat.getTime();\n };\n\n isMaxInvalid = (dat: Date): boolean => {\n if (!this.maxDate || !(this.maxDate instanceof Date) || !dat) {\n return false;\n }\n const max = new Date(\n this.maxDate.getFullYear(),\n this.maxDate.getMonth(),\n 1\n );\n return max.getTime() < dat.getTime();\n };\n\n scrollMonth = (e: any) => {\n if (this.showPicker) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n if (!this._value) {\n return;\n }\n if (this.currentYear === null || this.currentYear === undefined) {\n this.currentYear = this.today.getFullYear();\n }\n if (this.currentMonth === null || this.currentMonth === undefined) {\n this.currentMonth = this.today.getMonth();\n }\n if (e.deltaY > 0) {\n if (this.currentMonth === 11) {\n this.currentMonth = 0;\n this.currentYear++;\n } else {\n this.currentMonth++;\n }\n } else {\n if (this.currentMonth === 0) {\n this.currentMonth = 11;\n this.currentYear--;\n } else {\n this.currentMonth--;\n }\n }\n const newDate = new Date(this.currentYear, this.currentMonth, 1, 0, 0, 0);\n if (!this.isMinInvalid(newDate) && !this.isMaxInvalid(newDate)) {\n this.value = newDate;\n }\n };\n\n scrollYear = (e: any) => {\n if (this.showPicker) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n if (!this._value) {\n return;\n }\n if (!this.currentYear) {\n this.currentYear = this.today.getFullYear();\n }\n if (!this.currentMonth) {\n this.currentMonth = this.today.getMonth();\n }\n if (e.deltaY > 0) {\n this.currentYear++;\n } else {\n this.currentYear--;\n }\n const newDate = new Date(this.currentYear, this.currentMonth, 1, 0, 0, 0);\n if (!this.isMinInvalid(newDate) && !this.isMaxInvalid(newDate)) {\n this.value = newDate;\n }\n };\n\n setMonth = (month: number) => {\n this.currentMonth = month;\n if (!this.currentYear) {\n this.currentYear = this.today.getFullYear();\n }\n const newDate = new Date(this.currentYear, this.currentMonth, 1, 0, 0, 0);\n if (!this.isMinInvalid(newDate) && !this.isMaxInvalid(newDate)) {\n this.value = newDate;\n }\n };\n\n setYear = (year: number) => {\n this.currentYear = year;\n if (!this.currentMonth) {\n this.currentMonth = this.today.getMonth();\n }\n const newDate = new Date(this.currentYear, this.currentMonth, 1, 0, 0, 0);\n if (!this.isMinInvalid(newDate) && !this.isMaxInvalid(newDate)) {\n this.value = newDate;\n }\n };\n\n setToday = () => {\n const today = new Date();\n this.currentYear = today.getFullYear();\n this.currentMonth = today.getMonth();\n this.value = new Date(this.currentYear, this.currentMonth, 1, 0, 0, 0);\n this.showPicker = false;\n };\n\n setMode(mode: DatePickerMode) {\n let result: DatePickerMode;\n if (mode === this.displayMode || mode === DatePickerMode.month) {\n result = DatePickerMode.month;\n } else {\n result = mode;\n }\n this.displayMode = result;\n }\n}\n","<teta-dropdown\n class=\"row row_auto\"\n [appendToBody]=\"appendToBody\"\n [(open)]=\"showPicker\"\n [disabled]=\"disabled\">\n <div tetaDropdownHead\n (wheel)=\"scrollMonth($event)\"\n class=\"datepicker-head font-body-3\">\n <teta-icon [name]=\"'calendar'\" class=\"margin-right-2\"></teta-icon>\n <div class=\"row_auto\">\n <ng-container *ngIf=\"_value !==null && _value!==undefined\">\n {{locale.monthNames[_value.getMonth()]}} {{_value.getFullYear()}}\n </ng-container>\n </div>\n <teta-icon [name]=\"'closeBig'\" (click)=\"clearPicker()\" class=\"margin-left-2\"></teta-icon>\n </div>\n <div tetaDropdownContent class=\"datepicker-body scrollable padding-3\">\n <div class=\"row align-center justify-content-between\">\n <div>\n <button teta-button\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.month ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.month)\"\n (wheel)=\"scrollMonth($event);\">\n {{locale.monthNames[_currentMonth || today.getMonth()]}}\n </button>\n <button teta-button\n class=\"margin-left-2\"\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.year ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.year)\"\n (wheel)=\"scrollYear($event);\">\n {{_currentYear || today.getFullYear()}}\n </button>\n </div>\n <button teta-button\n [palette]=\"'text'\"\n [view]=\"'ghost'\"\n (click)=\"setToday()\">\n <teta-icon [name]=\"'calendar'\"></teta-icon>\n </button>\n </div>\n <div class=\"datepicker-content\">\n <teta-year-select\n *ngIf=\"displayMode === datePickerModeEnum.year\"\n [currentYear]=\"_currentYear\"\n [today]=\"today\"\n [size]=\"8\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (yearSelected)=\"setYear($event)\">\n </teta-year-select>\n <teta-month-select\n *ngIf=\"displayMode === datePickerModeEnum.month\"\n [currentMonth]=\"_currentMonth\"\n [locale]=\"locale\"\n [currentYear]=\"_currentYear\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (monthSelected)=\"setMonth($event)\">\n </teta-month-select>\n </div>\n </div>\n</teta-dropdown>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n Inject,\n NgZone, 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})\nexport class DropdownDirective extends DropdownBase implements OnInit, OnDestroy, AfterViewInit {\n constructor(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 super(_cdr, _document, _elementRef, _zone, _renderer);\n }\n\n ngOnInit(): void {\n }\n\n ngOnDestroy(): void {\n this.closeDropdown();\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 {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DropdownComponent} from './dropdown/dropdown.component';\nimport {DropdownHeadDirective} from './dropdown-head.directive';\nimport {DropdownContentDirective} from './dropdown-content.directive';\nimport {DropdownDirective} from './dropdown.directive';\n\n@NgModule({\n declarations: [\n DropdownComponent,\n DropdownHeadDirective,\n DropdownContentDirective,\n DropdownDirective\n ],\n exports: [\n DropdownComponent,\n DropdownHeadDirective,\n DropdownContentDirective,\n DropdownDirective\n ],\n imports: [\n CommonModule\n ]\n})\nexport class DropdownModule {\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n Input, NgZone,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport {DomUtil} from '../../common/util/dom-util';\n\n@Directive({\n selector: '[tetaClickOutside]',\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(private _elementRef: ElementRef, 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(\n this._elementRef.nativeElement,\n click\n );\n if (!clickedInside) {\n this.clickOutside.emit(click);\n }\n };\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ClickOutsideDirective} from './click-outside.directive';\n\n@NgModule({\n declarations: [ClickOutsideDirective],\n exports: [ClickOutsideDirective],\n imports: [\n CommonModule\n ]\n})\nexport class ClickOutsideModule {\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PrependZeroPipe } from './prepend-zero.pipe';\n\n@NgModule({\n declarations: [PrependZeroPipe],\n exports: [PrependZeroPipe],\n imports: [CommonModule],\n})\nexport class PrependZeroModule {}\n","import {Directive, ElementRef, HostListener, Input} from '@angular/core';\nimport {NgControl} from '@angular/forms';\n\n@Directive({\n selector: '[tetaOnlyNumber]',\n})\nexport class OnlyNumberDirective {\n @Input() tetaOnlyNumber = true;\n @Input() allowDecimals = true;\n @Input() allowSign = true;\n @Input() decimalSeparator = '.';\n @Input() commaSeparator = ',';\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(private _elementRef: ElementRef, private _control: NgControl) {\n }\n\n @HostListener('change', ['$event']) onChange(e: any) {\n if (this.tetaOnlyNumber === false) {\n return;\n }\n this.validateValue(this._elementRef.nativeElement.value);\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 e.preventDefault();\n }\n\n @HostListener('keydown', ['$event']) onKeyDown(e: KeyboardEvent) {\n if (this.tetaOnlyNumber === false) {\n return;\n }\n const cursorPosition: number =\n (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) ||\n originalValue.includes(this.commaSeparator);\n\n const allowedKeys = [\n 'Backspace',\n 'ArrowLeft',\n 'ArrowRight',\n 'Delete',\n 'Escape',\n 'Tab',\n 'Home',\n 'End',\n ];\n\n const separatorIsCloseToSign = signExists && cursorPosition <= 1;\n if (this.allowDecimals && !separatorIsCloseToSign && !separatorExists) {\n // if (this.decimalSeparator === '.') {\n allowedKeys.push('.');\n // } else {\n // allowedKeys.push(',');\n // }\n }\n\n const firstCharacterIsSeparator =\n originalValue.charAt(0) !== this.decimalSeparator;\n if (\n this.allowSign &&\n !signExists &&\n firstCharacterIsSeparator &&\n cursorPosition === 0\n ) {\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 =\n `${originalValue.slice(0, cursorPosition)}.${originalValue.slice(cursorPosition)}`;\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 (\n firstCharacter === '0' &&\n secondChar !== '' &&\n secondChar !== this.decimalSeparator\n ) {\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 const valid: boolean = new RegExp(regex).test(value.toString());\n this._control.control.setValue(valid ? value : this._previousValue ?? 0);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OnlyNumberDirective } from './only-number.directive';\n\n@NgModule({\n declarations: [OnlyNumberDirective],\n exports: [OnlyNumberDirective],\n imports: [CommonModule],\n})\nexport class OnlyNumberModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DatePickerComponent } from './date-picker/date-picker.component';\nimport { MonthPickerComponent } from './month-picker/month-picker.component';\nimport { DropdownModule } from '../dropdown/dropdown.module';\nimport { ClickOutsideModule } from '../../directive/click-outside/click-outside.module';\nimport { IconModule } from '../icon/icon.module';\nimport { DaySelectComponent } from './day-select/day-select.component';\nimport { YearSelectComponent } from './year-select/year-select.component';\nimport { MonthSelectComponent } from './month-select/month-select.component';\nimport { PrependZeroModule } from '../../pipe/prepend-zero/prepend-zero.module';\nimport { ButtonModule } from '../button/button.module';\nimport { OnlyNumberModule } from '../../directive/only-number/only-number.module';\nimport { FormsModule } from '@angular/forms';\nimport { TimePartControlComponent } from './time-part-control/time-part-control.component';\n\n@NgModule({\n declarations: [\n DatePickerComponent,\n MonthPickerComponent,\n DaySelectComponent,\n YearSelectComponent,\n MonthSelectComponent,\n TimePartControlComponent,\n ],\n exports: [DatePickerComponent, MonthPickerComponent],\n imports: [\n CommonModule,\n DropdownModule,\n ClickOutsideModule,\n FormsModule,\n IconModule,\n PrependZeroModule,\n ButtonModule,\n OnlyNumberModule,\n ],\n})\nexport class DatePickerModule {}\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","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n OnInit,\n} 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})\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 {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DelimiterComponent} from './delimiter/delimiter.component';\n\n@NgModule({\n declarations: [DelimiterComponent],\n exports: [DelimiterComponent],\n imports: [\n CommonModule\n ]\n})\nexport class DelimiterModule {\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(\n data: any[],\n children?: string | ((item: any) => any[]),\n onlyLeafs?: boolean\n ): 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 (\n childItems !== null &&\n childItems !== undefined &&\n childItems.length > 0\n ) {\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(\n tree: any[],\n comparer: (iterableNode: any) => boolean,\n children: string = 'children'\n ): 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: string = 'children',\n keepChildren: boolean = true\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 break;\n }\n } else if (item[children] && item[children].length > 0) {\n resultItem[children] = [];\n const found = ArrayUtil.filterRecursive(\n item[children],\n filter,\n children,\n keepChildren\n );\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) {\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 }\n\n static moveItem(list: any[], sourceIndex, targetIndex) {\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","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n} 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 => *', [\n style({ opacity: '0' }),\n animate(200, style({ opacity: '1' })),\n ]),\n transition('* => void', [animate(200, style({ opacity: '0' }))]),\n ]),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\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 {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {PopupContentComponent} from './popup-content/popup-content.component';\n\n@NgModule({\n declarations: [PopupContentComponent],\n exports: [PopupContentComponent],\n imports: [\n CommonModule\n ]\n})\nexport class DynamicComponentModule {\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaExpandPanelContent]',\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})\nexport class ExpandPanelHeadDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n OnInit,\n} 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})\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', 'toolbar_panel'];\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 {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { ExpandPanelContentDirective } from '../expand-panel-content.directive';\nimport { ExpandPanelHeadDirective } from '../expand-panel-head.directive';\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})\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","<ng-container *ngIf=\"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 <button\n teta-button\n [square]=\"true\"\n [palette]=\"'text'\"\n [view]=\"'ghost'\"\n (click)=\"closePanel()\"\n >\n <teta-icon [name]=\"direction === 'right' ? 'arrowRight' : 'arrowLeft'\"></teta-icon>\n </button>\n <span class=\"font-title-2\" style=\"display: contents\"><ng-container *ngTemplateOutlet=\"head?.template\"></ng-container></span>\n </teta-toolbar>\n <ng-container *ngTemplateOutlet=\"content?.template\"></ng-container>\n</ng-container>\n<ng-container *ngIf=\"!open\">\n <div class=\"width-10 overflow-hidden\" style=\"height: 100%;\">\n <button\n teta-button\n style=\"\n transform-origin: 0 0;\n transform: rotate(-90deg) translateX(-100%);\n margin: 8px;\n \"\n [palette]=\"'text'\"\n [view]=\"'ghost'\"\n (click)=\"openPanel()\"\n >\n <div class=\"font-button-2 nowrap\">{{ placeholder }}</div>\n <teta-icon [name]=\"direction === 'right' ? 'arrowUp' : 'arrowDown'\"></teta-icon>\n </button>\n </div>\n</ng-container>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ToolbarComponent} from './toolbar/toolbar.component';\n\n@NgModule({\n declarations: [ToolbarComponent],\n exports: [ToolbarComponent],\n imports: [\n CommonModule\n ]\n})\nexport class ToolbarModule {\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ExpandPanelComponent } from './expand-panel/expand-panel.component';\nimport { DelimiterModule } from '../delimiter/delimiter.module';\nimport { ToolbarModule } from '../toolbar/toolbar.module';\nimport { ButtonModule } from '../button/button.module';\nimport { IconModule } from '../icon/icon.module';\nimport { ExpandPanelHeadDirective } from './expand-panel-head.directive';\nimport { ExpandPanelContentDirective } from './expand-panel-content.directive';\n\n@NgModule({\n declarations: [\n ExpandPanelComponent,\n ExpandPanelHeadDirective,\n ExpandPanelContentDirective,\n ],\n exports: [\n ExpandPanelComponent,\n ExpandPanelHeadDirective,\n ExpandPanelContentDirective,\n ],\n imports: [\n CommonModule,\n DelimiterModule,\n ToolbarModule,\n ButtonModule,\n IconModule,\n ],\n})\nexport class ExpandPanelModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\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})\nexport class FileUploadAreaComponent implements OnInit {\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: boolean;\n @Input() accept: string[];\n\n @Output() upload: EventEmitter<FileList> = new EventEmitter();\n\n @ViewChild('fileUpload', { static: false }) input: ElementRef;\n\n files: any;\n\n private _asActive: boolean;\n\n constructor() {}\n\n @HostListener('dragenter', ['$event']) dragEnter(event) {\n this.preventDefaults(event);\n this._asActive = true;\n }\n\n @HostListener('dragover', ['$event']) dragOver(event) {\n this.preventDefaults(event);\n this._asActive = true;\n }\n\n @HostListener('dragleave', ['$event']) dragLeave(event) {\n this.preventDefaults(event);\n this._asActive = false;\n }\n\n @HostListener('drop', ['$event']) drop(event) {\n this.upload.emit(event.dataTransfer.files);\n this.preventDefaults(event);\n }\n\n ngOnInit() {}\n\n fileChanged(event: any) {\n if (event.target && event.target.files) {\n this.upload.emit(event.target.files);\n this.input.nativeElement.value = null;\n }\n }\n\n private preventDefaults(event) {\n event.preventDefault();\n event.stopPropagation();\n }\n}\n","<ng-content></ng-content>\n<label class=\"file-upload-label\">\n <input #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 <teta-button [palette]=\"'primary'\" type=\"button\">\n <teta-icon [name]=\"'upload'\"></teta-icon>\n Загрузить\n </teta-button>\n</label>\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})\nexport class FileItemComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<p>file-item works!</p>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FileUploadAreaComponent } from './file-upload-area/file-upload-area.component';\nimport { FileItemComponent } from './file-item/file-item.component';\nimport { ButtonModule } from '../button/button.module';\nimport { IconModule } from '../icon/icon.module';\n\n@NgModule({\n declarations: [FileUploadAreaComponent, FileItemComponent],\n exports: [FileUploadAreaComponent, FileItemComponent],\n imports: [CommonModule, ButtonModule, IconModule],\n})\nexport class FileUploadModule {}\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'teta-filter-panel',\n templateUrl: './filter-panel.component.html',\n styleUrls: ['./filter-panel.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterPanelComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<p>filter-panel works!</p>\n","import {IFilter} from '../contarct/i-filter';\n\nexport class FilterBase implements IFilter {\n field: string;\n name: string;\n value: any;\n\n constructor(options?: {\n field: string;\n name: string;\n }) {\n if (options) {\n this.field = options.field;\n this.name = options.name;\n }\n }\n}\n","import {FilterBase} from '../base/filter-base';\nimport {NumericFilterValue} from './numeric-filter-value';\n\nexport class NumericFilter extends FilterBase {\n override value: NumericFilterValue;\n strict: boolean;\n\n constructor(options?: {\n value?: NumericFilterValue;\n strict?: boolean;\n field: string;\n name: string;\n }) {\n super(options);\n if (options) {\n this.value = options.value || this.value;\n this.strict = options.strict || false;\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 {\n abstract column: FilterItem;\n abstract state: FilterState;\n abstract filterOptions: IIdName<any>[];\n\n abstract filterChanged: EventEmitter<IFilter>;\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 {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n OnInit,\n} from '@angular/core';\n\n@Component({\n selector: 'teta-input',\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InputComponent implements OnInit {\n @Input() label: string;\n\n @Input()\n @HostBinding('class.row')\n horizontal: boolean;\n\n @Input()\n required = false;\n\n @HostBinding('class.column')\n get column() {\n return !this.horizontal;\n }\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<div class=\"font-caption color-text-90 align-center row nowrap overflow-hidden text-overflow-ellipsis\"\n [class.row_6]=\"horizontal\"\n [class.text-field_required]=\"required\"\n *ngIf=\"label?.length > 0\">\n {{label}}\n</div>\n<div class=\"input-container\" [class.row_6]=\"horizontal\">\n <ng-content></ng-content>\n <div class=\"input-message font-error-message\">\n <ng-content select=\"message\"></ng-content>\n </div>\n</div>\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';\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})\nexport class NumericFilterComponent\n extends FilterComponentBase\n implements OnInit\n{\n @Input() column: FilterItem;\n @Input() filterOptions: IIdName<any>[] = [];\n @Output() filterChanged: EventEmitter<FilterBase> =\n new EventEmitter<FilterBase>();\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\n constructor(private changeDetector: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit() {\n this.filter = this.getFilter();\n }\n\n private getFilter(): NumericFilter {\n let filter = this.state.numericFilters?.find(\n (f) => f.field === this.column.filterField\n );\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","<div class=\"form-row padding-3\">\n <teta-input [label]=\"'От'\">\n <input class=\"input\" type=\"text\"\n style=\"width: 110px\"\n [tetaOnlyNumber]=\"true\"\n [ngModel]=\"filter.value?.greaterThan\"\n (ngModelChange)=\"filter.value.greaterThan=$event\"/>\n </teta-input>\n <teta-input [label]=\"'До'\">\n <input class=\"input\" type=\"text\"\n style=\"width: 110px\"\n [tetaOnlyNumber]=\"true\"\n [ngModel]=\"filter.value?.lessThan\"\n (ngModelChange)=\"filter.value.lessThan=$event\"/>\n </teta-input>\n</div>\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 {\n override value: string;\n type: StringFilterType;\n\n\n constructor(options?: {\n value?: string;\n type?: StringFilterType;\n field: string;\n name: string;\n }) {\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 {\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';\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})\nexport class StringFilterComponent\n extends FilterComponentBase\n implements OnInit\n{\n @Input() column: FilterItem;\n @Input() filterOptions: IIdName<any>[] = [];\n @Output() filterChanged: EventEmitter<FilterBase> =\n new EventEmitter<FilterBase>();\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\n constructor(private changeDetector: ChangeDetectorRef) {\n super();\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(\n (f) => f.field === this.column.filterField\n );\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]=\"'Поиск'\">\n <input type=\"text\" class=\"input\" [(ngModel)]=\"filter.value\" (blur)=\"setFilter()\" />\n </teta-input>\n</div>\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 {\n override value: any[];\n type: ListFilterType;\n\n constructor(options?: {\n value?: any[];\n type?: ListFilterType;\n field: string;\n name: string;\n }) {\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 {\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} from '@angular/forms';\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})\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 @HostBinding('class.text-field_invalid')\n @Input()\n invalid: boolean;\n @ViewChild('input', {static: false}) input: ElementRef;\n @HostBinding('attr.tabindex')\n private readonly tabindex = 0;\n @HostBinding('class.text-field')\n private readonly textField = true;\n value = '';\n\n constructor(private _cdr: ChangeDetectorRef) {\n }\n\n @HostListener('click') onFocus() {\n this.input.nativeElement.focus();\n }\n\n keyPress(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.keyCode === 13) {\n this.input.nativeElement.blur();\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.detectChanges();\n }\n\n writeValue(input: string): void {\n this.value = input;\n this._cdr.detectChanges();\n }\n\n onChange(input: string): void {\n }\n\n onTouched(): void {\n }\n}\n","<teta-icon *ngIf=\"leftIconName\" [name]=\"leftIconName\"></teta-icon>\n<input\n #input\n [ngModel]=\"value\"\n [tetaOnlyNumber]=\"onlyNumber\"\n (ngModelChange)=\"value = $event; onChange($event);\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (blur)=\"emitBlur()\"\n (keydown)=\"keyPress($event)\"\n autocomplete=\"off\"\n type=\"text\"\n/>\n<teta-icon\n *ngIf=\"value && !disabled\"\n class=\"close-icon\"\n [name]=\"'closeCircle'\"\n (click)=\"value = ''; onChange('');\"\n></teta-icon>\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';\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})\nexport class ListFilterComponent extends FilterComponentBase implements OnInit {\n @Input() column: FilterItem;\n @Input() filterOptions: IIdName<any>[] = [];\n @Output() filterChanged: EventEmitter<FilterBase> =\n new EventEmitter<FilterBase>();\n\n filter: ListFilter;\n state$: FilterState;\n search = '';\n\n get visibleOptions() {\n return this.filterOptions?.filter(\n (_) => _.name?.toString().indexOf(this.search) >= 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(private changeDetector: ChangeDetectorRef) {\n super();\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(\n (_) => this.filter?.value?.indexOf(_.id) < 0\n );\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\n ? ListFilterType.Excluded\n : 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(\n (f) => f.field === this.column.filterField\n );\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<div class=\"list padding-v-2 scrollable\">\n <div class=\"list-item\">\n <teta-checkbox [binary]=\"true\"\n [allowNull]=\"true\"\n [ngModel]=\"all()\"\n (ngModelChange)=\"setAll($event)\">Все\n </teta-checkbox>\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"list-item\" *ngFor=\"let option of visibleOptions\">\n <teta-checkbox [ngModel]=\"filter.value\"\n (ngModelChange)=\"setFilter($event)\"\n [value]=\"option.id\"\n [binary]=\"false\">\n {{option.name}}\n </teta-checkbox>\n </div>\n</div>\n","export class DateFilterValue {\n /**\n * Значение должно быть меньше чем\n */\n lessThan: Date | undefined | null;\n /**\n * Значение должно быть больше чем\n */\n greaterThan: Date | undefined | null;\n\n constructor(options?: {\n lessThan?: Date | undefined | null;\n greaterThan?: Date | undefined | null;\n }) {\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","import {FilterBase} from '../base/filter-base';\nimport {DateFilterValue} from './date-filter-value';\n\nexport class DateFilter extends FilterBase {\n override value: DateFilterValue;\n\n constructor(options?: {\n value?: DateFilterValue;\n field: string;\n name: string;\n }) {\n super(options);\n if (options) {\n this.value = new DateFilterValue(options.value);\n }\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';\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})\nexport class DateFilterComponent extends FilterComponentBase implements OnInit {\n @Input() column: FilterItem;\n @Input() filterOptions: IIdName<any>[] = [];\n @Output() filterChanged: EventEmitter<FilterBase> =\n new EventEmitter<FilterBase>();\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\n constructor(private changeDetector: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit() {\n this.filter = this.getFilter();\n }\n\n private getFilter(): DateFilter {\n let filter = this.state.dateFilters.find(\n (f) => f.field === this.column.filterField\n );\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","<div class=\"form-row padding-3\">\n <teta-input [label]=\"'От'\">\n <teta-date-picker style=\"width: 110px\"\n [ngModel]=\"filter.value?.greaterThan\"\n [appendToBody]=\"true\"\n (ngModelChange)=\"filter.value.greaterThan=$event\"></teta-date-picker>\n </teta-input>\n <teta-input [label]=\"'До'\">\n <teta-date-picker style=\"width: 110px\"\n [ngModel]=\"filter.value?.lessThan\"\n [appendToBody]=\"true\"\n (ngModelChange)=\"filter.value.lessThan=$event\"></teta-date-picker>\n </teta-input>\n</div>\n","export enum FilterType {\n string,\n number,\n date,\n list,\n boolean,\n custom,\n}\n","import { FilterBase } from '../base/filter-base';\n\nexport class BooleanFilter extends FilterBase {\n override value: boolean;\n\n constructor(options?: { value?: boolean; field: string; name: string }) {\n super(options);\n if (options) {\n this.value = options.value;\n }\n }\n}\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})\nexport class RadioComponent implements OnInit, 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;\n }\n\n event.cancelBubble = true;\n if (event.stopPropagation) {\n event.stopPropagation();\n }\n return false;\n }\n\n ngOnInit() {}\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 _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$\n ? this.buttons$.indexOf(this.selectedButton$)\n : 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$\n ? this.buttons$.indexOf(this.selectedButton$)\n : 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>","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 // changeDetection: ChangeDetectionStrategy.OnPush,\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 <div *ngIf=\"checked\" class=\"radio-button-small-icon\"></div>\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';\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})\nexport class BooleanFilterComponent\n extends FilterComponentBase\n implements OnInit\n{\n @Input() column: FilterItem;\n @Input() filterOptions: IIdName<any>[] = [];\n @Output() filterChanged: EventEmitter<FilterBase> =\n new EventEmitter<FilterBase>();\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 constructor(private changeDetector: ChangeDetectorRef) {\n super();\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(\n (f) => f.field === this.column.filterField\n );\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","<div class=\"padding-3\">\n <teta-radio [ngModel]=\"filter.value\" (ngModelChange)=\"setFilter()\">\n <teta-radio-button [value]=\"null\">null</teta-radio-button>\n <teta-radio-button [value]=\"true\">true</teta-radio-button>\n <teta-radio-button [value]=\"false\">false</teta-radio-button>\n </teta-radio>\n</div>\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<\n FilterType,\n Type<any>\n>()\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)\n ? filterComponentsMap.get(item.filterType)\n : 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})\nexport class FilterHostComponent 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 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> = new EventEmitter();\n\n private _alive = true;\n private _column: FilterItem;\n private _state: FilterState;\n private _filterOptions: IIdName<any>[];\n private _componentRef: ComponentRef<any>;\n private _init: boolean;\n\n constructor(\n private viewContainerRef: ViewContainerRef\n ) {\n }\n\n ngOnInit() {\n if (!FilterComponentBase.isPrototypeOf(this._column.filterComponent)) {\n this._column.filterComponent = getFilterComponent(this._column);\n }\n this._componentRef =\n this.viewContainerRef.createComponent<FilterComponentBase>(this._column.filterComponent);\n this._componentRef.instance.column = this._column;\n this._componentRef.instance.state = this._state;\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) => {\n this.filterChanged.emit(filter);\n });\n }\n\n ngOnDestroy() {\n this._alive = false;\n }\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: '[tetaSelectOption]'\n})\nexport class SelectOptionDirective {\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: '[tetaSelectValue]'\n})\nexport class SelectValueDirective {\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import {Directive, ElementRef, Input} from '@angular/core';\n\n@Directive({\n selector: '[tetaHighlight]',\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\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\n .replace(new RegExp(searchWithOutRegExp, 'gi'), match => `<mark>${match}</mark>`);\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 OnInit,\n} from '@angular/core';\nimport { Align } from '../../../common/enum/align.enum';\nimport { VerticalAlign } from '../../../common/enum/vertical-align.enum';\nimport { AutoCloseIgnoreCase } from '../../../common/contract/auto-close-ignore-case';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SelectOptionDirective } from '../select-option.directive';\nimport { SelectValueDirective } from '../select-value.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})\nexport class SelectComponent implements ControlValueAccessor, OnInit {\n @HostBinding('class.select_multiple')\n @Input()\n multiple: boolean;\n @Input() options: any[];\n @Input() invalid: boolean;\n @Input() align: Align = Align.minWidth;\n @Input() verticalAlign: VerticalAlign = VerticalAlign.bottom;\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\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 @HostBinding('tabindex') private readonly tabindex = 0;\n\n @HostBinding('class.select_disabled')\n get isDisabled() {\n return this.disabled;\n }\n\n value: any | any[];\n searchText: string;\n\n get visibleOptions(): any[] {\n if (!this.searchText) {\n return this.options;\n }\n return this.options?.filter(\n (option) =>\n this.getSearchString(option)\n .toLowerCase()\n .indexOf(this.searchText.toLowerCase()) >= 0\n );\n }\n\n constructor(\n private _cdr: ChangeDetectorRef,\n private _elementRef: ElementRef\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.onChange(this.value.map((_) => this.getValue(_)));\n } else {\n this.value = option;\n this.onChange(this.getValue(this.value));\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.onChange(this.value.map((_) => this.getValue(_)));\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 ngOnInit(): void {}\n\n writeValue(value: any | any[]): void {\n if (this.multiple) {\n this.value =\n value && this.options\n ? this.options.filter(\n (option) => value.indexOf(this.getValue(option)) > -1\n )\n : [];\n } else {\n this.value =\n this.options &&\n this.options.find((option) => this.getValue(option) === value);\n }\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() {}\n}\n","<teta-dropdown [align]=\"align\"\n [verticalAlign]=\"verticalAlign\"\n [autoClose]=\"autoClose\"\n [autoCloseIgnore]=\"autoCloseIgnore\"\n [(open)]=\"open\"\n [appendToBody]=\"appendToBody\"\n [disabled]=\"disabled\"\n class=\"row row_auto\">\n <div tetaDropdownHead\n class=\"row row_auto select-head\"\n [class.select-head_invalid]=\"invalid\">\n <div class=\"row_auto flex align-center\">\n <teta-icon *ngIf=\"icon\" [name]=\"icon\" class=\"margin-right-1\"></teta-icon>\n <span class=\"placeholder\" *ngIf=\"(value == null || value?.length === 0) && placeholder\">\n {{placeholder}}\n </span>\n <ng-container\n *ngTemplateOutlet=\"valueDirective ? valueDirective.template : valueDefault; context: {$implicit: value, value: value}\"></ng-container>\n </div>\n <teta-icon [name]=\"'arrowDownSmall'\"></teta-icon>\n </div>\n <div *ngIf=\"options?.length\" tetaDropdownContent class=\"select-list scrollable row_auto\" (click)=\"$event.preventDefault()\">\n <ng-container *ngIf=\"searchRef\">\n <div class=\"select-search\">\n <teta-text-field [ngModel]=\"searchText\"\n (ngModelChange)=\"search($event)\"\n [placeholder]=\"'Поиск'\"\n [leftIconName]=\"'search'\"></teta-text-field>\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"!multiple && allowNull\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"clear()\"\n [class.list-item_active]=\"value==null\">\n Не выбрано\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"!virtual\">\n <div class=\"list-item list-item_interactive\"\n *ngFor=\"let option of visibleOptions\"\n [class.select-list-item_active]=\"itemSelected(option) && multiple\"\n [class.list-item_active]=\"itemSelected(option)\"\n [class.select-list-item]=\"multiple\"\n (click)=\"clickOption(option, $event)\">\n <teta-icon *ngIf=\"itemSelected(option) && multiple\" [name]=\"'tick'\" [palette]=\"'primary'\"></teta-icon>\n <span [tetaHighlight]=\"searchText\">\n <ng-container\n *ngTemplateOutlet=\"optionDirective ? optionDirective.template : optionDefault; context: {$implicit: option, option: option}\">\n </ng-container>\n </span>\n </div>\n </ng-container>\n <cdk-virtual-scroll-viewport *ngIf=\"virtual\"\n [itemSize]=\"40\"\n minBufferPx=\"200\"\n maxBufferPx=\"600\">\n <div class=\"select-list-item select-list-item_interactive\"\n *cdkVirtualFor=\"let option of visibleOptions; templateCacheSize: 0;\"\n [class.select-list-item_active]=\"itemSelected(option)\"\n [tetaHighlight]=\"searchText\"\n (click)=\"clickOption(option, $event)\">\n <teta-icon *ngIf=\"itemSelected(option)\" [name]=\"'tick'\" [palette]=\"'primary'\" class=\"margin-left-2\"></teta-icon>\n <div [tetaHighlight]=\"searchText\">\n <ng-container\n *ngTemplateOutlet=\"optionDirective ? optionDirective.template : optionDefault; context: {$implicit: option, option: option}\">\n </ng-container>\n </div>\n </div>\n </cdk-virtual-scroll-viewport>\n <div class=\"row row_auto select-chip-field flex-wrap\" *ngIf=\"multiple && value?.length\">\n <div *ngFor=\"let item of value\" class=\"chip\">\n <teta-icon [name]=\"'closeCircle'\" (click)=\"removeItemClick(item, $event)\"></teta-icon>\n {{getText(item)}}\n </div>\n </div>\n </div>\n</teta-dropdown>\n\n<ng-template #optionDefault let-option>\n {{getText(option)}}\n</ng-template>\n<ng-template #valueDefault let-value>\n <div class=\"row_auto overflow-hidden text-overflow-ellipsis\" *ngIf=\"multiple\">\n <ng-container\n *ngFor=\"let item of value; let i = index\">{{getText(item) + (value.length === i + 1 ? '' : ', ') }}</ng-container>\n </div>\n <ng-container *ngIf=\"!multiple\">\n <span class=\"row row_auto overflow-hidden text-overflow-ellipsis\">{{getText(value)}}</span>\n </ng-container>\n</ng-template>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {HighlightDirective} from './highlight.directive';\n\n@NgModule({\n declarations: [HighlightDirective],\n exports: [HighlightDirective],\n imports: [\n CommonModule\n ]\n})\nexport class HighlightModule {\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n OnInit,\n} 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})\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 { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InputComponent } from './input/input.component';\nimport { TextFieldComponent } from './text-field/text-field.component';\nimport { IconModule } from '../icon/icon.module';\nimport { FormsModule } from '@angular/forms';\nimport { OnlyNumberModule } from '../../directive/only-number/only-number.module';\nimport { FormGroupTitleComponent } from './form-group-title/form-group-title.component';\n\n@NgModule({\n declarations: [InputComponent, TextFieldComponent, FormGroupTitleComponent],\n exports: [InputComponent, TextFieldComponent, FormGroupTitleComponent],\n imports: [CommonModule, IconModule, FormsModule, OnlyNumberModule],\n})\nexport class InputModule {}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {SelectComponent} from './select/select.component';\nimport {DropdownModule} from '../dropdown/dropdown.module';\nimport {SelectOptionDirective} from './select-option.directive';\nimport {SelectValueDirective} from './select-value.directive';\nimport {ScrollingModule} from '@angular/cdk/scrolling';\nimport {FormsModule} from '@angular/forms';\nimport {IconModule} from '../icon/icon.module';\nimport {HighlightModule} from '../../directive/highlight/highlight.module';\nimport {InputModule} from '../input/input.module';\n\n@NgModule({\n declarations: [SelectComponent, SelectOptionDirective, SelectValueDirective],\n exports: [SelectComponent, SelectOptionDirective, SelectValueDirective],\n imports: [\n DropdownModule,\n CommonModule,\n ScrollingModule,\n FormsModule,\n IconModule,\n HighlightModule,\n InputModule,\n ],\n})\nexport class SelectModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RadioComponent } from './radio/radio.component';\nimport { RadioButtonComponent } from './radio-button/radio-button.component';\nimport { FormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [RadioComponent, RadioButtonComponent],\n exports: [RadioComponent, RadioButtonComponent],\n imports: [CommonModule, FormsModule],\n})\nexport class RadioModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FilterPanelComponent } from './filter-panel/filter-panel.component';\nimport { NumericFilterComponent } from './numeric-filter/numeric-filter.component';\nimport { StringFilterComponent } from './string-filter/string-filter.component';\nimport { ListFilterComponent } from './list-filter/list-filter.component';\nimport { DateFilterComponent } from './date-filter/date-filter.component';\nimport { FilterHostComponent } from './filter-host/filter-host.component';\nimport { SelectModule } from '../select/select.module';\nimport { FormsModule } from '@angular/forms';\nimport { DatePickerModule } from '../date-picker/date-picker.module';\nimport { BooleanFilterComponent } from './boolean-filter/boolean-filter.component';\nimport { RadioModule } from '../radio/radio.module';\nimport { InputModule } from '../input/input.module';\nimport { CheckboxModule } from '../checkbox/checkbox.module';\nimport {OnlyNumberModule} from '../../directive/only-number/only-number.module';\n\n@NgModule({\n declarations: [\n FilterPanelComponent,\n NumericFilterComponent,\n StringFilterComponent,\n ListFilterComponent,\n DateFilterComponent,\n FilterHostComponent,\n BooleanFilterComponent,\n ],\n exports: [\n FilterPanelComponent,\n NumericFilterComponent,\n StringFilterComponent,\n ListFilterComponent,\n DateFilterComponent,\n FilterHostComponent,\n BooleanFilterComponent,\n ],\n imports: [\n CommonModule,\n SelectModule,\n FormsModule,\n DatePickerModule,\n RadioModule,\n InputModule,\n CheckboxModule,\n OnlyNumberModule,\n ],\n})\nexport class FilterModule {}\n","import {FilterType} from '../enum/filter-type.enum';\nimport {StringFilterType} from '../enum/string-filter-type.enum';\nimport {ListFilterType} from '../enum/list-filter-type.enum';\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?: {\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 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 = options?.sortField ?? this.name;\n this.filterField = 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","export 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?: {\n field?: string;\n asc?: boolean;\n order?: number;\n }) {\n if (options) {\n this.field = options.field || this.field;\n this.asc = options.asc || false;\n this.order = options.order || this.order;\n }\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(\n (x: any) => new StringFilter(x)\n );\n }\n\n if (options.booleanFilters && options.booleanFilters.length) {\n this.booleanFilters = options.booleanFilters.map(\n (x: any) => new BooleanFilter(x)\n );\n }\n\n if (options.numericFilters && options.numericFilters.length) {\n this.numericFilters = options.numericFilters.map(\n (x: any) => new NumericFilter(x)\n );\n }\n\n if (options.dateFilters && options.dateFilters.length) {\n this.dateFilters = options.dateFilters.map(\n (x: any) => new DateFilter(x)\n );\n }\n\n if (options.listFilters && options.listFilters.length) {\n this.listFilters = options.listFilters.map(\n (x: any) => new ListFilter(x)\n );\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 {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\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 {\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';\n\n@Component({\n selector: 'teta-message',\n templateUrl: './message.component.html',\n styleUrls: ['./message.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\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 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-3 padding-left-1\">\n {{message.title}}\n </div>\n <button teta-button\n [square]=\"true\"\n [palette]=\"message.palette\"\n [view]=\"'primary'\"\n (click)=\"closeMe($event)\">\n <teta-icon [name]=\"'closeBig'\"></teta-icon>\n </button>\n</div>\n<div class=\"font-body-3 padding-v-1\" *ngIf=\"!message.template && message.text\">\n {{message.text}}\n</div>\n<ng-container *ngIf=\"message.template\">\n <ng-container *ngTemplateOutlet=\"message.template; context: {$implicit: message}\"></ng-container>\n</ng-container>\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';\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})\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<\n VerticalAlign,\n string\n >()\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(private _svc: MessageService, private _cdr: ChangeDetectorRef) {}\n\n ngOnInit() {\n this._svc.message\n .pipe(takeWhile((_) => this._alive))\n .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\n .pipe(takeWhile((_) => this._alive))\n .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","<teta-message\n *ngFor=\"let message of messages; let i=index\"\n (closed)=\"closedItem($event)\"\n [message]=\"message\"\n [index]=\"i\">\n</teta-message>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MessageHostComponent} from './message-host/message-host.component';\nimport {MessageComponent} from './message/message.component';\nimport {IconModule} from '../icon/icon.module';\nimport {ButtonModule} from '../button/button.module';\n\n@NgModule({\n declarations: [MessageHostComponent, MessageComponent],\n exports: [MessageHostComponent, MessageComponent],\n imports: [\n CommonModule,\n IconModule,\n ButtonModule\n ]\n})\nexport class MessageModule {\n}\n","import { TemplateRef } from '@angular/core';\n\nexport class Message {\n name: string | null | undefined;\n title: string | null | undefined;\n text: string | null | undefined;\n infinite: boolean;\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 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.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","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 => *', [\n style({ opacity: '0' }),\n animate(150, style({ opacity: '1' })),\n ]),\n transition('* => void', [animate(150, style({ opacity: '0' }))]),\n ]),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\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 (\n this.config.closeOnBackdropClick === true &&\n this.elRef$.nativeElement === event.target\n ) {\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","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 { Component, Input, OnInit } from '@angular/core';\nimport { CurrentModal } from '../model/current-modal';\nimport { DynamicData } from '../../../common/contract/dynamic-data';\nimport { ModalCloseReason } from '../model/modal-close-reason.enum';\n\n@Component({\n selector: 'teta-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss'],\n})\nexport class DialogComponent implements OnInit {\n @Input() message: string;\n @Input() buttonText: string;\n @Input() buttonIcon: string;\n @Input() buttonPalette: string;\n @Input() showCancelButton: boolean;\n\n constructor(public modal: CurrentModal, private data: DynamicData) {}\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 ngOnInit(): void {}\n}\n","<div class=\"padding-2 font-body-2\">\n {{message | transloco}}\n</div>\n<teta-toolbar class=\"justify-content-end\">\n <button teta-button\n *ngIf=\"showCancelButton\"\n (click)=\"cancel()\"\n [palette]=\"'text'\"\n [view]=\"'ghost'\">\n {{'common.cancel' | transloco}}\n </button>\n\n <button teta-button\n (click)=\"ok()\"\n [square]=\"!buttonText?.length\"\n [palette]=\"buttonPalette\">\n <teta-icon *ngIf=\"buttonIcon\" [name]=\"buttonIcon\"></teta-icon>\n <ng-container *ngIf=\"buttonText?.length > 0\">{{buttonText | transloco}}</ng-container>\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';\nimport { ToolbarModule } from '../toolbar/toolbar.module';\nimport { ButtonModule } from '../button/button.module';\nimport { TRANSLOCO_SCOPE, TranslocoModule } from '@ngneat/transloco';\nimport { IconModule } from '../icon/icon.module';\n\n@NgModule({\n declarations: [ModalContainerComponent, DialogComponent],\n exports: [ModalContainerComponent, DialogComponent],\n imports: [\n CommonModule,\n ToolbarModule,\n ButtonModule,\n TranslocoModule,\n IconModule,\n ],\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 {\n onClose: Observable<IModalResult>;\n private _onClose: Subject<IModalResult> = new Subject<IModalResult>();\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 this._content.viewRef.destroy();\n }\n }\n}\n","import {ComponentRef, ViewRef} from '@angular/core';\n\nexport class TetaContentRef {\n constructor(public nodes: any[], public viewRef?: ViewRef, 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';\nimport { TetaContentRef } from '../contract/teta-content-ref';\nimport { DynamicData } from '../contract/dynamic-data';\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>,\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>,\n content: TetaContentRef,\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(\n content: string | TemplateRef<any> | Type<any>,\n context: any\n ): 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(\n content: TemplateRef<any>,\n context: any\n ): TetaContentRef {\n const viewRef = content.createEmbeddedView(context);\n this._appRef.attachView(viewRef);\n return new TetaContentRef([viewRef.rootNodes], viewRef);\n }\n\n private fromComponent(\n content: any,\n injector: Injector,\n context: any\n ): TetaContentRef {\n const componentFactory =\n this._componentFactoryResolver.resolveComponentFactory<any>(content);\n const componentRef = componentFactory.create(injector);\n for (const key in context) {\n if (context.hasOwnProperty(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(\n [[componentNativeEl]],\n componentRef.hostView,\n componentRef\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(\n content: string | TemplateRef<any> | Type<any>,\n data?: any,\n config?: IModalConfig,\n injector?: Injector\n ): ModalInstance {\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(\n ModalContainerComponent,\n contentInstance,\n injector,\n this._container\n );\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(\n content: string | TemplateRef<any> | Type<any>,\n context: any,\n currentModal: CurrentModal\n ): 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(\n currentModal: CurrentModal,\n data: DynamicData,\n parent: Injector\n ): 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';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DialogService {\n constructor(private _modal: ModalService) {}\n\n alert(message: string): void {\n this.createDialog(message, 'common.ok', null, 'primary', false);\n }\n\n confirm(\n message: string,\n buttonText: string = 'common.ok',\n buttonIcon: string = null,\n buttonPalette: string = 'primary'\n ): Observable<boolean> {\n return this.createDialog(\n message,\n buttonText,\n buttonIcon,\n buttonPalette,\n true\n ).pipe(\n map((result: IModalResult) => result.reason === ModalCloseReason.resolve)\n );\n }\n\n private createDialog(\n message: string,\n buttonText: string = 'common.ok',\n buttonIcon: string = null,\n buttonPalette: string = 'primary',\n showCancelButton: boolean = true\n ): Observable<IModalResult> {\n const dialog = this._modal.create(\n DialogComponent,\n {\n message,\n buttonText,\n buttonIcon,\n buttonPalette,\n showCancelButton,\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})\nexport class PagerComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<p>pager works!</p>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {PagerComponent} from './pager/pager.component';\nimport {IconModule} from '../icon/icon.module';\n\n@NgModule({\n declarations: [PagerComponent],\n exports: [PagerComponent],\n imports: [\n CommonModule,\n IconModule\n ]\n})\nexport class PagerModule {\n}\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?: {\n page?: number;\n pageSize?: number;\n count?: number;\n totalCount?: number;\n }) {\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 = 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 {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n OnInit,\n} 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 => *', [\n style({ opacity: '0' }),\n animate(300, style({ opacity: '1' })),\n ]),\n transition('* => void', [animate(150, style({ opacity: '0' }))]),\n ]),\n ],\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 {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {PanelComponent} from './panel/panel.component';\n\n@NgModule({\n declarations: [PanelComponent],\n exports: [PanelComponent],\n imports: [\n CommonModule\n ]\n})\nexport class PanelModule {\n}\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})\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 =\n (100 / (this.containerPosition.max - this.containerPosition.min)) *\n 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 (\n Math.round((exactValue - this.min) / this.step) * this.step + this.min\n );\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 class=\"progress-slider\"\n [class.progress-slider_visible]=\"moving\"\n #progressSlider\n (mousedown)=\"mousedown()\"\n (click)=\"click($event)\"\n [style.left.%]=\"percent\"></div>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ProgressBarComponent} from './progress-bar/progress-bar.component';\n\n@NgModule({\n declarations: [ProgressBarComponent],\n exports: [ProgressBarComponent],\n imports: [\n CommonModule\n ]\n})\nexport class ProgressBarModule {\n}\n","import {\n AbstractControl,\n FormControl,\n FormGroup,\n ValidationErrors,\n Validators,\n} from '@angular/forms';\nimport { TableColumn } from '../component/table/contract/table-column';\nimport { ArrayUtil } from '../common/util/array-util';\n\nexport class FormsUtil {\n static validateAllFormFields(formGroup: FormGroup) {\n Object.keys(formGroup.controls).forEach((field) => {\n const control = formGroup.get(field);\n if (control instanceof FormControl) {\n control.markAsTouched({ onlySelf: true });\n control.markAsDirty({ onlySelf: true });\n } else if (control instanceof FormGroup) {\n this.validateAllFormFields(control);\n }\n });\n }\n\n static controlIsInvalid(formGroup: FormGroup, controlName: string) {\n return (\n formGroup.controls[controlName]?.invalid &&\n formGroup.controls[controlName]?.dirty\n );\n }\n\n static matchValuesValidator(\n matchTo: string\n ): (control: AbstractControl) => ValidationErrors | null {\n return (control: AbstractControl): ValidationErrors | null =>\n !!control.parent &&\n !!control.parent.value &&\n control.value === control.parent.controls[matchTo].value\n ? null\n : { isMatching: false };\n }\n\n static requiredIf(\n value: boolean\n ): (control: AbstractControl) => ValidationErrors | null {\n return (control: AbstractControl): ValidationErrors | null =>\n !!control.parent &&\n !!control.parent.value &&\n control.value != null &&\n value\n ? null\n : { isMatching: false };\n }\n\n static initFormFromColumns(columns: TableColumn[], dataItem: any) {\n const form = new FormGroup({});\n const flat = ArrayUtil.flatten(columns, 'columns');\n flat.forEach((column: TableColumn) => {\n const control = new FormControl(\n {\n value: dataItem ? dataItem[column.name] : undefined,\n disabled: !column.editable,\n },\n FormsUtil.getValidators(column)\n );\n form.registerControl(column.name, control);\n });\n return form;\n }\n\n static getValidators(column: TableColumn) {\n const validators = [];\n if (column.required) {\n validators.push(Validators.required);\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 return validators;\n }\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';\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})\nexport class ToggleComponent implements ControlValueAccessor, OnInit {\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 }\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 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.markForCheck();\n }\n}\n","<span class=\"font-body-3 row_auto\" *ngIf=\"!noLabel\">\n <ng-content></ng-content>\n</span>\n<div class=\"toggle-button\" [class.toggle-button-on]=\"model\" [ngClass]=\"paletteClass\">\n <div class=\"toggle-button-circle\"></div>\n</div>\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 { DynamicComponentService } from '../common/service/dynamic-component.service';\nimport { Align } from '../common/enum/align.enum';\nimport { VerticalAlign } from '../common/enum/vertical-align.enum';\nimport { filter, takeWhile } from 'rxjs/operators';\nimport { TetaContentRef } from '../common/contract/teta-content-ref';\nimport { PopupContentComponent } from '../component/dynamic-component/popup-content/popup-content.component';\n\n@Directive()\nexport abstract class DynamicContentBaseDirective implements OnInit, OnDestroy {\n @Input() data: any;\n @Input() className: string | string[];\n @Input() align: Align = Align.left;\n @Input() verticalAlign: VerticalAlign = VerticalAlign.bottom;\n @Input() appendToBody: boolean;\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 @Output() openChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n protected _alive = true;\n protected _componentRef: ComponentRef<any>;\n protected _content: TetaContentRef;\n protected _open = false;\n\n protected abstract get _dynamicContent():\n | string\n | TemplateRef<any>\n | Type<any>;\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 ngOnInit(): void {}\n\n protected createContentRef<T>(\n className?: string | string[]\n ): 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(\n this._dynamicContent,\n this._injector,\n context\n );\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 if (this._open) {\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\n protected abstract setPosition(): void;\n}\n","import {\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';\nimport {DynamicContentBaseDirective} from '../dynamic-content-base.directive';\nimport {DOCUMENT} from '@angular/common';\nimport {DynamicComponentService} from '../../common/service/dynamic-component.service';\nimport {PositionUtil} from '../../common/util/position-util';\nimport {ArrayUtil} from '../../common/util/array-util';\nimport {Align} from '../../common/enum/align.enum';\nimport {VerticalAlign} from '../../common/enum/vertical-align.enum';\nimport {DomUtil} from '../../common/util/dom-util';\nimport Timeout = NodeJS.Timeout;\n\n@Directive({\n selector: '[tetaHint]',\n})\nexport class HintDirective\n extends DynamicContentBaseDirective\n 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\n get _dynamicContent() {\n return this.tetaHint;\n }\n\n private _timeout: Timeout;\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 (\n this._open &&\n this._componentRef &&\n DomUtil.clickedInside(this._componentRef.location.nativeElement, event)\n ) {\n event.stopPropagation();\n }\n }\n\n protected setPosition() {\n if (this._componentRef && this._open) {\n if (!this._componentRect) {\n this._componentRect =\n 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(\n this._componentRef.location.nativeElement,\n position\n );\n }\n }\n\n private createHint(): void {\n if (!this._dynamicContent) {\n return;\n }\n this._componentRef = this.createContentRef();\n this._componentRef.instance.className = [\n ...ArrayUtil.asArray(this.className),\n 'hint',\n ];\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { TableColumn } from '../../../table/contract/table-column';\nimport { IDictionary } from '../../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../../common/contract/i-id-name';\nimport { FilterType } from '../../../filter/enum/filter-type.enum';\nimport { FormGroup } from '@angular/forms';\nimport { FormsUtil } from '../../../../util/forms-util';\nimport { TranslocoService } from '@ngneat/transloco';\nimport { filter, takeWhile } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\nimport {Align} from '../../../../common/enum/align.enum';\n\n@Component({\n selector: 'teta-property-grid-item',\n templateUrl: './property-grid-item.component.html',\n styleUrls: ['./property-grid-item.component.scss'],\n})\nexport class PropertyGridItemComponent<T> implements OnInit, OnDestroy {\n @Input() column: TableColumn;\n @Input() hideNonEditable: boolean;\n @Input() dict: IDictionary<IIdName<any>[]>;\n\n @Input()\n set formGroup(form: FormGroup) {\n this._formGroup = form;\n this._formSub?.unsubscribe();\n this._formSub = this._formGroup.controls[this.column.name].valueChanges\n .pipe(\n takeWhile(() => this._alive),\n filter(\n (_) =>\n this.column.filterType !== FilterType.string &&\n this.column.filterType !== FilterType.number\n )\n )\n .subscribe((_) => {\n this.controlValueChange.emit({\n id: _,\n name: this.column.name,\n });\n });\n }\n\n get formGroup() {\n return this._formGroup;\n }\n\n @Input() horizontal: boolean;\n @Output() controlValueChange = new EventEmitter<IIdName<any>>();\n align = Align;\n filterTypeEnum = FilterType;\n\n private _formGroup: FormGroup;\n private _formSub: Subscription;\n\n get caption(): string {\n if (this.column.filterType === FilterType.boolean) {\n return '';\n }\n return `${this.column.caption}${\n this.column.unit ? `, ${this.column.unit}` : ''\n }`;\n }\n\n private _alive = true;\n\n constructor(private _transloco: TranslocoService) {}\n\n getDict() {\n const dict = this.dict[this.column.name];\n if (this.column.parentName?.length > 0) {\n return dict?.filter(\n (dictItem: IIdName<any>) =>\n dictItem.parentId ===\n 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): string {\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 }\n\n valueChange() {\n this.controlValueChange.emit({\n id: this.formGroup.controls[this.column.name].value,\n name: this.column.name,\n });\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy() {\n this._alive = false;\n this._formSub?.unsubscribe();\n }\n}\n","<teta-input [label]=\"caption\"\n [tetaHint]=\"column.hint\"\n [align]=\"align.left\"\n [formGroup]=\"formGroup\"\n [horizontal]=\"horizontal\"\n *ngIf=\"column.editable || !hideNonEditable\">\n <ng-container [ngSwitch]=\"column.filterType\">\n <teta-select class=\"row_auto\"\n *ngSwitchCase=\"filterTypeEnum.list\"\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\"></teta-select>\n <teta-date-picker *ngSwitchCase=\"filterTypeEnum.date\"\n class=\"row_auto\"\n [appendToBody]=\"true\"\n [invalid]=\"controlIsInvalid(column.name)\"\n [formControlName]=\"column.name\"></teta-date-picker>\n <teta-toggle *ngSwitchCase=\"filterTypeEnum.boolean\"\n [formControlName]=\"column.name\">{{column.caption}}</teta-toggle>\n <teta-text-field class=\"row_auto\"\n *ngSwitchDefault\n (focusout)=\"valueChange()\"\n [onlyNumber]=\"column.filterType === filterTypeEnum.number\"\n [placeholder]=\"column.caption\"\n [invalid]=\"controlIsInvalid(column.name)\"\n [formControlName]=\"column.name\"></teta-text-field>\n </ng-container>\n <div *ngIf=\"controlIsInvalid(column.name)\"\n ngProjectAs=\"message\"\n class=\"color-red-50\">\n {{getError(column)}}\n </div>\n</teta-input>\n","import {\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { TableColumn } from '../../../table/contract/table-column';\nimport { IDictionary } from '../../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../../common/contract/i-id-name';\nimport { FormGroup } from '@angular/forms';\n\n@Component({\n selector: 'teta-property-grid-group',\n templateUrl: './property-grid-group.component.html',\n styleUrls: ['./property-grid-group.component.scss'],\n})\nexport class PropertyGridGroupComponent<T> implements OnInit {\n @HostBinding('class.form-container') formClass = true;\n @Input() column: TableColumn;\n @Input() hideNonEditable: boolean;\n @Input() dict: IDictionary<IIdName<any>[]>;\n @Input() formGroup: FormGroup;\n @Input() horizontal: boolean;\n @Output() controlValueChange = new EventEmitter<IIdName<any>>();\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<div class=\"font-title-3\">{{column.caption}}</div>\n<ng-container *ngFor=\"let col of column.columns\">\n <ng-container *ngIf=\"col.columns?.length < 1\">\n <teta-property-grid-item *ngIf=\"column.editable || !hideNonEditable\"\n [dict]=\"dict\"\n [column]=\"col\"\n [hideNonEditable]=\"hideNonEditable\"\n (controlValueChange)=\"controlValueChange.emit($event)\"\n [horizontal]=\"horizontal\"\n [formGroup]=\"formGroup\"></teta-property-grid-item>\n </ng-container>\n <ng-container *ngIf=\"col.columns?.length > 0\">\n <teta-property-grid-group [dict]=\"dict\"\n [column]=\"col\"\n [hideNonEditable]=\"hideNonEditable\"\n [horizontal]=\"horizontal\"\n (controlValueChange)=\"controlValueChange.emit($event)\"\n [formGroup]=\"formGroup\"></teta-property-grid-group>\n </ng-container>\n</ng-container>\n","import {\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { TableColumn } from '../../table/contract/table-column';\nimport { IDictionary } from '../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { FormGroup } from '@angular/forms';\n\n@Component({\n selector: 'teta-property-grid',\n templateUrl: './property-grid.component.html',\n styleUrls: ['./property-grid.component.scss'],\n})\nexport class PropertyGridComponent<T> implements OnInit, OnDestroy {\n @HostBinding('class.form-container') formClass = true;\n\n @Input() hideNonEditable: boolean;\n @Input() columns: TableColumn[];\n @Input() dict: IDictionary<IIdName<any>[]>;\n @Input() formGroup: FormGroup;\n @Input() horizontal: boolean;\n\n @Output() controlValueChange = new EventEmitter<IIdName<any>>();\n\n private _alive = true;\n\n constructor() {}\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 ngOnInit(): void {}\n\n ngOnDestroy() {\n this._alive = false;\n }\n\n private getDictValue(value: any, name: string) {\n return this.dict[name]?.find((_) => _.id === value);\n }\n}\n","<ng-container *ngIf=\"columns?.length\">\n <ng-container *ngFor=\"let column of columns\">\n <teta-property-grid-item *ngIf=\"column.columns?.length < 1 && (column.editable || !hideNonEditable)\"\n [dict]=\"dict\"\n [column]=\"column\"\n [formGroup]=\"formGroup\"\n [horizontal]=\"horizontal\"\n (controlValueChange)=\"onControlValueChange($event)\"\n [hideNonEditable]=\"hideNonEditable\"></teta-property-grid-item>\n <teta-property-grid-group *ngIf=\"column.columns?.length > 0\"\n [dict]=\"dict\"\n [column]=\"column\"\n [formGroup]=\"formGroup\"\n [horizontal]=\"horizontal\"\n (controlValueChange)=\"onControlValueChange($event)\"\n [hideNonEditable]=\"hideNonEditable\"></teta-property-grid-group>\n </ng-container>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'teta-numeric-item-default',\n templateUrl: './numeric-item-default.component.html',\n styleUrls: ['./numeric-item-default.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NumericItemDefaultComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<p>numeric-item-default works!</p>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'teta-date-item-default',\n templateUrl: './date-item-default.component.html',\n styleUrls: ['./date-item-default.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DateItemDefaultComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<p>date-item-default works!</p>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'teta-list-item-default',\n templateUrl: './list-item-default.component.html',\n styleUrls: ['./list-item-default.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListItemDefaultComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<p>list-item-default works!</p>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'teta-string-item-default',\n templateUrl: './string-item-default.component.html',\n styleUrls: ['./string-item-default.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StringItemDefaultComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<p>string-item-default works!</p>\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {formatNumber} from '../util/number-helper';\n\n@Pipe({\n name: 'tetaNumber'\n})\nexport class NumberPipe implements PipeTransform {\n transform(value: number,\n decimalLength: number = 2,\n chunkDelimiter: string = '',\n decimalDelimiter: string = '.',\n chunkLength: number = 3): string {\n if (value === null || value === undefined) {\n return '';\n }\n if (value !== value / 1) {\n return value.toString();\n }\n value /= 1;\n return formatNumber(value,\n decimalLength,\n chunkDelimiter,\n decimalDelimiter,\n chunkLength);\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {NumberPipe} from './number.pipe';\n\n@NgModule({\n declarations: [NumberPipe],\n exports: [\n NumberPipe\n ],\n imports: [\n CommonModule\n ]\n})\nexport class NumberPipeModule {\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ToggleComponent } from './toggle/toggle.component';\nimport { IconModule } from '../icon/icon.module';\n\n@NgModule({\n declarations: [ToggleComponent],\n exports: [ToggleComponent],\n imports: [CommonModule, IconModule],\n})\nexport class ToggleModule {}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {HintDirective} from './hint.directive';\nimport {DynamicComponentModule} from '../../component/dynamic-component/dynamic-component.module';\n\n@NgModule({\n declarations: [HintDirective],\n exports: [HintDirective],\n imports: [\n CommonModule,\n DynamicComponentModule\n ]\n})\nexport class HintModule {\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {PropertyGridComponent} from './property-grid/property-grid.component';\nimport {NumericItemDefaultComponent} from './default/numeric-item-default/numeric-item-default.component';\nimport {DateItemDefaultComponent} from './default/date-item-default/date-item-default.component';\nimport {ListItemDefaultComponent} from './default/list-item-default/list-item-default.component';\nimport {StringItemDefaultComponent} from './default/string-item-default/string-item-default.component';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {NumberPipeModule} from '../../pipe/number-pipe/number-pipe.module';\nimport {DatePickerModule} from '../date-picker/date-picker.module';\nimport {SelectModule} from '../select/select.module';\nimport {PropertyGridGroupComponent} from './property-grid/property-grid-group/property-grid-group.component';\nimport {PropertyGridItemComponent} from './property-grid/property-grid-item/property-grid-item.component';\nimport {OnlyNumberModule} from '../../directive/only-number/only-number.module';\nimport {InputModule} from '../input/input.module';\nimport {ToggleModule} from '../toggle/toggle.module';\nimport {TRANSLOCO_SCOPE, TranslocoModule} from '@ngneat/transloco';\nimport {HintModule} from '../../directive/hint/hint.module';\n\n@NgModule({\n declarations: [\n PropertyGridComponent,\n NumericItemDefaultComponent,\n DateItemDefaultComponent,\n ListItemDefaultComponent,\n StringItemDefaultComponent,\n PropertyGridGroupComponent,\n PropertyGridItemComponent,\n ],\n exports: [PropertyGridComponent],\n imports: [\n CommonModule,\n FormsModule,\n NumberPipeModule,\n DatePickerModule,\n SelectModule,\n OnlyNumberModule,\n InputModule,\n ToggleModule,\n ReactiveFormsModule,\n TranslocoModule,\n HintModule,\n ],\n providers: [\n {\n provide: TRANSLOCO_SCOPE,\n useValue: {scope: 'errors', alias: 'errors'},\n multi: true,\n },\n ],\n})\nexport class PropertyGridModule {\n}\n","export enum SidebarPosition {\n left,\n right,\n bottom,\n top\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { SidebarPosition } from '../sidebar-position.enum';\nimport { animate, style, transition, trigger } from '@angular/animations';\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 => *', [\n style({ opacity: '0' }),\n animate(300, style({ opacity: '1' })),\n ]),\n transition('* => void', [animate(300, style({ opacity: '0' }))]),\n ]),\n ],\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","<div *ngIf=\"backdrop && open\"\n [@sidebar]\n (click)=\"setOpen(false)\"\n class=\"sidebar-backdrop\"></div>\n<div 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 *ngIf=\"open\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SidebarComponent } from './sidebar/sidebar.component';\nimport {ButtonModule} from '../button/button.module';\nimport {IconModule} from '../icon/icon.module';\n\n@NgModule({\n declarations: [SidebarComponent],\n exports: [SidebarComponent],\n imports: [\n CommonModule,\n ButtonModule,\n IconModule\n ]\n})\nexport class SidebarModule { }\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 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';\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})\nexport class SwitchComponent\n implements OnInit, OnDestroy, ControlValueAccessor\n{\n @HostBinding('class.switch') switchClass = true;\n\n private _alive = true;\n private _value: any;\n\n constructor(private svc: SwitchService, private cdr: ChangeDetectorRef) {\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})\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 (\n this.svcValue === this.value ||\n (this.svcValue instanceof Array && this.svcValue.indexOf(this.value) >= 0)\n ) {\n result.push('switch-button_active');\n }\n return result.join(' ');\n }\n\n private svcValue: any;\n private _alive = true;\n\n constructor(private svc: SwitchService, private cdr: ChangeDetectorRef) {\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","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {SwitchComponent} from './switch/switch.component';\nimport {SwitchButtonComponent} from './switch-button/switch-button.component';\n\n\n@NgModule({\n declarations: [SwitchComponent, SwitchButtonComponent],\n exports: [SwitchComponent, SwitchButtonComponent],\n imports: [\n CommonModule\n ]\n})\nexport class SwitchModule {\n}\n","import * as hash from 'object-hash';\n\nexport class TableRow<T> {\n set edit(value: boolean) {\n if (value !== this._edit) {\n this._edit = value;\n this._hash = null;\n }\n }\n\n get edit(): boolean {\n return this._edit;\n }\n\n expanded = false;\n showDetails = false;\n data: T;\n isGroup: boolean;\n level: number;\n path: any[] = [];\n groupColumn: string;\n groupValue: any[] = [];\n\n // children: GridRow<T>[] = [];\n // parents: GridRow<T>[];\n // private backup: any = {};\n private _edit = false;\n private _hash: string | null;\n\n constructor(data?: any) {\n if (data) {\n this.data = data;\n }\n }\n\n public get hash(): string {\n if (!this._hash) {\n const hashObj: any = { ...this.data };\n if (hashObj.children) {\n delete hashObj.children;\n }\n this._hash = hash.sha1(hashObj);\n }\n return this._hash;\n }\n\n public editData(items?: any): void {\n this.data = items;\n this._hash = null;\n }\n}\n","import {FilterItem} from '../../filter/contarct/filter-item';\nimport {FilterType} from '../../filter/enum/filter-type.enum';\nimport {StringFilterType} from '../../filter/enum/string-filter-type.enum';\nimport {ListFilterType} from '../../filter/enum/list-filter-type.enum';\nimport {TableRow} from './table-row';\nimport {AggregationType} from '../enum/aggregation-type.enum';\nimport {TemplateRef} from '@angular/core';\nimport {ICellCoordinates} from './i-cell-coordinates';\n\nexport class TableColumn extends FilterItem {\n /**\n * Ширина\n */\n width = 150;\n /**\n * Коэффициент растяжения ячейки\n */\n flex = 0;\n /**\n * Стобец закреплен\n */\n locked: boolean;\n /**\n * Название столбца в строке результатов\n */\n override name: string;\n /**\n * Название столбца родителя\n */\n parentName: string;\n /**\n * Название столбца для заголовка таблицы\n */\n override caption: string;\n /**\n * Единицы измерения\n */\n unit: string;\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: ICellCoordinates<any>) => boolean);\n /**\n * Компонент для рендера ячейки\n */\n cellComponent: any;\n /**\n * Компонент для рендера заголовка столбца ячейки\n */\n headCellComponent: any;\n /**\n * Custom head dropdown for column\n */\n headDropdownTemplate: TemplateRef<any>;\n /**\n * Группировать по этому столбцу\n */\n groupBy: boolean;\n /**\n * Порядок группировки\n */\n groupingOrder = 0;\n /**\n *\n */\n groupByFn: ((row: TableRow<any>) => string) | undefined;\n /**\n * Дочерние колонки\n */\n override columns: TableColumn[];\n\n /**\n * Aggregate type\n */\n aggregate: AggregationType;\n\n /**\n * Значение по умолчанию при создании записи\n */\n defaultValue: any;\n\n /**\n * Значение по умолчанию при создании записи\n */\n maxValue: number;\n\n /**\n * Значение по умолчанию при создании записи\n */\n minValue: number;\n\n /**\n * Поле обязательно для заполнения\n */\n required: boolean;\n\n /**\n * Инициализация из анонимного объекта\n */\n constructor(options?: {\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 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: ICellCoordinates<any>) => boolean);\n objectType?: boolean;\n cellComponent?: any;\n headCellComponent?: any;\n headDropdownTemplate?: TemplateRef<any>;\n filterComponent?: any;\n groupBy?: boolean;\n groupingOrder?: number;\n groupByFn?: (row: TableRow<any>) => string;\n columns?: any[];\n aggregate?: AggregationType;\n defaultValue?: any;\n maxValue?: number;\n minValue?: number;\n required?: boolean;\n }) {\n super(options);\n this.width = options?.width ?? 150;\n this.flex = options?.flex ?? 0;\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.data = options?.data;\n this.editable = options?.editable ?? true;\n this.groupBy = options?.groupBy ?? false;\n this.groupingOrder = options?.groupingOrder ?? 0;\n this.groupByFn = options?.groupByFn;\n this.headCellComponent = options?.headCellComponent;\n this.headDropdownTemplate = options?.headDropdownTemplate;\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.required = options?.required;\n this.columns = options?.columns?.map((x) => new TableColumn(x)) ?? [];\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 { 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 (\n state.stringFilters &&\n state.stringFilters.some((filter) => filter.value && filter.value.length)\n ) {\n hasFilters = true;\n }\n if (\n state.listFilters &&\n state.listFilters.some((filter) => filter.value && filter.value.length)\n ) {\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 &&\n filter.value.lessThan !== undefined) ||\n (filter.value.greaterThan !== null &&\n filter.value.greaterThan !== undefined) ||\n (filter.value.equalsTo !== null &&\n 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 &&\n filter.value.lessThan !== undefined) ||\n (filter.value.greaterThan !== null &&\n filter.value.greaterThan !== undefined))\n )\n ) {\n hasFilters = true;\n }\n\n return hasFilters;\n }\n\n static getSortState(\n state: FilterState,\n column: TableColumn\n ): 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;\n }\n let filtered = false;\n switch (column.filterType) {\n case FilterType.string:\n if (state?.stringFilters) {\n const filter = state.stringFilters.find(\n (x) => x.field === column.filterField\n );\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(\n (x) => x.field === column.filterField\n );\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(\n (x) => x.field === column.filterField\n );\n if (\n filter &&\n filter.value &&\n ((filter.value.lessThan !== null &&\n filter.value.lessThan !== undefined) ||\n (filter.value.greaterThan !== null &&\n filter.value.greaterThan !== undefined) ||\n (filter.value.equalsTo !== null &&\n 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(\n (x) => x.field === column.filterField\n );\n if (\n filter &&\n filter.value &&\n ((filter.value.lessThan !== null &&\n filter.value.lessThan !== undefined) ||\n (filter.value.greaterThan !== null &&\n 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(\n (sortParam: SortParam) => sortParam.field === column.sortField\n );\n if (sort === null || sort === undefined) {\n if (!shiftKey) {\n state.sortParams.length = 0;\n }\n state.sortParams.push(\n new SortParam({ field: column.sortField, asc: true, order: 0 })\n );\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 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(\n (_) => _.field !== column.sortField\n );\n return new FilterState(state);\n }\n\n static clearAllSort(state: FilterState): FilterState {\n state.sortParams = [];\n return new FilterState(state);\n }\n}\n","export enum SelectType {\n none,\n multiple,\n single\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","import {Injectable} from '@angular/core';\nimport {TableRow} from '../contract/table-row';\nimport {ICellCoordinates} from '../contract/i-cell-coordinates';\nimport {TableColumn} from '../contract/table-column';\nimport {FilterState} from '../../filter/contarct/filter-state';\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\nimport {ColumnResizeEvent} from '../contract/column-resize-event';\nimport {ColumnReorderEvent} from '../contract/column-reorder-event';\nimport {SortEvent} from '../contract/sort-event';\nimport {ArrayUtil} from '../../../common/util/array-util';\nimport {StateUtil} from '../util/state-util';\nimport {SelectType} from '../enum/select-type.enum';\nimport {EditType} from '../enum/edit-type.enum';\nimport {EditEvent} from '../enum/edit-event.enum';\nimport {ListFilterType} from '../../filter/enum/list-filter-type.enum';\nimport {ListFilter} from '../../filter/contarct/list-filter';\nimport {FilterType} from '../../filter/enum/filter-type.enum';\nimport {NumericFilterValue} from '../../filter/contarct/numeric-filter-value';\nimport {NumericFilter} from '../../filter/contarct/numeric-filter';\nimport {StringFilter} from '../../filter/contarct/string-filter';\nimport {DateFilterValue} from '../../filter/contarct/date-filter-value';\nimport {DateFilter} from '../../filter/contarct/date-filter';\nimport {IDictionary} from '../../../common/contract/i-dictionary';\nimport {IIdName} from '../../../common/contract/i-id-name';\nimport {DateUtil} from '../../../util/date-util';\nimport objectHash from 'object-hash';\nimport {TableColumnStore} from '../contract/table-column-store';\nimport {ICellValue} from '../contract/i-cell-value';\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 state: Observable<FilterState>;\n selectType: SelectType;\n editRowStart: Observable<ICellCoordinates<T>>;\n editRowStop: Observable<ICellCoordinates<T>>;\n\n editCellStart: Observable<ICellCoordinates<T>>;\n editCellStop: Observable<ICellCoordinates<T>>;\n valueChanged: Observable<ICellCoordinates<T>>;\n valueSet: Observable<ICellValue<T>>;\n stateChanged: Observable<FilterState>;\n filterClear: Observable<TableColumn>;\n groupToggle: Observable<TableRow<T>>;\n selectedRows: Observable<TableRow<T>[]>;\n activeRow: Observable<TableRow<T>>;\n hiddenColumns: Observable<string[]>;\n scrollIndex: Observable<number>;\n\n editType: EditType;\n editEvent: EditEvent;\n rowEditable: boolean | ((row: TableRow<T>) => boolean);\n // cellEditable: boolean | ((row: ICellCoordinates<T>) => boolean);\n\n get dragSource() {\n return this._dragSource;\n }\n\n private initialColumnsHash: string;\n private initialColumns: TableColumn[] = [];\n private displayColumns: TableColumn[] = [];\n private _columns: BehaviorSubject<TableColumn[]> = new BehaviorSubject<TableColumn[]>([]);\n private initialData: TableRow<T>[] = [];\n private _displayData: BehaviorSubject<TableRow<T>[]> = new BehaviorSubject<TableRow<T>[]>([]);\n private _dict: BehaviorSubject<IDictionary<IIdName<any>[]>> =\n new BehaviorSubject<IDictionary<IIdName<any>[]>>({});\n private _state: BehaviorSubject<FilterState> =\n new BehaviorSubject<FilterState>(new FilterState());\n private _cookieName: string;\n private _hiddenCookieName: string;\n private _columnsCookieName: string;\n private _editRowStart = new Subject<ICellCoordinates<T> | null>();\n private _editRowStop = new Subject<ICellCoordinates<T> | null>();\n private _editCellStart = new Subject<ICellCoordinates<T> | null>();\n private _editCellStop = new Subject<ICellCoordinates<T> | null>();\n private _valueChanged = new Subject<ICellCoordinates<T> | null>();\n private _valueSet = new Subject<ICellValue<T>>();\n private _stateChanged = new Subject<FilterState>();\n private _filterClear = new Subject<TableColumn>();\n private _dragSource: TableColumn;\n private _groupToggle = new Subject<TableRow<T>>();\n private _selectedRows = new BehaviorSubject<TableRow<T>[]>([]);\n private _activeRow = new BehaviorSubject<TableRow<T>>(null);\n private _hiddenColumns = new BehaviorSubject<string[]>([]);\n private _scrollIndex = new Subject<number>();\n\n private _currentEditRow: ICellCoordinates<T>;\n private _currentEditCell: ICellCoordinates<T>;\n\n constructor() {\n this.columns = this._columns.asObservable();\n this.displayData = this._displayData.asObservable();\n this.dict = this._dict.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.groupToggle = this._groupToggle.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.initialData = data?.map((_) => new TableRow<T>(_));\n this._displayData.next(this.initialData);\n }\n\n setDict(dict: IDictionary<IIdName<any>[]>): void {\n this._dict.next(dict);\n }\n\n setColumns(columns: TableColumn[]): void {\n this.initialColumns = columns ? columns.map((_) => new TableColumn(_)) : [];\n this.initialColumnsHash = objectHash(this.initialColumns, {\n algorithm: 'sha1',\n ignoreUnknown: true,\n excludeKeys: key => key === 'headDropdownTemplate',\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._cookieName) {\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 localStorage.removeItem(this._columnsCookieName);\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 const savedColumns = JSON.parse(\n localStorage.getItem(this._columnsCookieName)\n );\n if (savedColumns && savedColumns.hash === this.initialColumnsHash) {\n return this.restoreColumnsState(savedColumns.columns);\n }\n return null;\n }\n\n restoreColumnsState(columns: TableColumnStore[]) {\n return columns.map((column: TableColumnStore) => {\n const found = ArrayUtil.findRecursive(\n this.initialColumns,\n (item) => item.name === column.name,\n 'columns'\n );\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 state.save(this._cookieName);\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?.length > 0 && FilterState.restore(this._cookieName)) {\n let newState = Object.assign(\n this._state.value,\n FilterState.restore(this._cookieName)\n );\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 localStorage.setItem(this._hiddenCookieName, JSON.stringify(hiddenColumns));\n }\n\n restoreHiddenColumns(): void {\n const hiddenColumns = localStorage.getItem(this._hiddenCookieName) || '[]';\n this._hiddenColumns.next(JSON.parse(hiddenColumns));\n }\n\n sort(sortEvent: SortEvent): void {\n if (sortEvent.column.sortable) {\n this.setState(StateUtil.sortColumn(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(\n `teta-head-cell[data-column=${item.name}]`\n ) 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) =>\n this.setColumnAutoWidth(col, tableElement as HTMLElement)\n );\n this._columns.next(this.displayColumns);\n this.saveColumnsState();\n }\n\n reorderColumn(column: TableColumn, insertBefore: boolean): void {\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 startEditRow(cellCoordinates: ICellCoordinates<T>): void {\n if (this._currentEditRow?.row !== cellCoordinates?.row) {\n if (this._currentEditRow != null) {\n this._editRowStop.next(this._currentEditRow);\n }\n if (cellCoordinates === null) {\n this._editRowStart.next(cellCoordinates);\n this._currentEditRow = cellCoordinates;\n } else {\n if (\n this.boolOrFuncCallback<TableRow<T>>(this.rowEditable)(\n cellCoordinates.row\n )\n ) {\n this._editRowStart.next(cellCoordinates);\n this._currentEditRow = cellCoordinates;\n }\n }\n }\n }\n\n startEditCell(cellCoordinates: ICellCoordinates<T>): void {\n if (\n this._currentEditCell?.column.name !== cellCoordinates?.column.name ||\n this._currentEditCell?.row !== cellCoordinates?.row\n ) {\n if (this._currentEditCell != null) {\n this._editCellStop.next(this._currentEditCell);\n }\n if (\n this.boolOrFuncCallback<ICellCoordinates<T>>(cellCoordinates.column.editable)(\n cellCoordinates\n )\n ) {\n this._editCellStart.next(cellCoordinates);\n this._currentEditCell = cellCoordinates;\n }\n }\n }\n\n setActiveRow(row: TableRow<T>): void {\n this._activeRow.next(row);\n }\n\n selectRows(rows: TableRow<T>[]): void {\n this._selectedRows.next(rows);\n }\n\n selectRow(row: TableRow<T>): void {\n if (this.selectType === SelectType.none) {\n return;\n }\n if (this.selectType === SelectType.single) {\n this._selectedRows.next([row]);\n } else {\n this._selectedRows.next([...this._selectedRows.value, row]);\n }\n }\n\n deselectRow(row: TableRow<T>): void {\n if (this.selectType === SelectType.none) {\n return;\n }\n if (this.selectType === SelectType.single) {\n this._selectedRows.next([]);\n } else {\n this._selectedRows.next(\n this._selectedRows.value.filter((_) => _ !== row)\n );\n }\n }\n\n selectAll() {\n this._selectedRows.next(this._displayData.value);\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(\n (_) => this._selectedRows.value.indexOf(_) >= 0\n )\n ) {\n return true;\n } else if (\n this._selectedRows.value == null ||\n this._selectedRows.value.length === 0\n ) {\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 toggleGroup(row: TableRow<T>): void {\n this._groupToggle.next(row);\n }\n\n changeValue(coordinates: ICellCoordinates<T>): void {\n this._valueChanged.next(coordinates);\n }\n\n setValue(cellValue: ICellValue<T>): void {\n this._valueSet.next(cellValue);\n }\n\n getRowByIndex(rowIndex: string) {\n return this._displayData.value[parseInt(rowIndex, 10)];\n }\n\n getColumnByName(columnName: string) {\n return ArrayUtil.findRecursive(\n this.displayColumns,\n (iterableNode) => columnName === iterableNode.name,\n 'columns'\n );\n }\n\n scrollToIndex(index: number) {\n this._scrollIndex.next(null);\n this._scrollIndex.next(index);\n }\n\n boolOrFuncCallback<M>(variable: boolean | ((row: M) => boolean)) {\n return (args: M) => {\n if (typeof variable === 'boolean') {\n return variable;\n } else if (this.isFunction(variable)) {\n return (variable as (row: M) => boolean)(args);\n }\n return true;\n };\n }\n\n private findParent(\n column: TableColumn,\n columns: TableColumn[]\n ): 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 getTableElement(element: HTMLElement) {\n return element.closest('teta-table');\n }\n\n private isFunction(obj: any) {\n return !!(obj && obj?.constructor && obj?.call && obj?.apply);\n }\n\n private setColumnAutoWidth(column: TableColumn, table: HTMLElement) {\n const cells = table.querySelectorAll(\n `teta-cell[data-column=${column.name}] .cell-text`\n );\n let maxWidth = 0;\n cells.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","import {TableRow} from '../contract/table-row';\nimport {TableColumn} from '../contract/table-column';\n\nexport abstract class GroupRowComponentBase<T> {\n /**\n * The row details are displayed for\n */\n abstract row: TableRow<T>;\n /**\n * displayed columns\n */\n abstract columns: TableColumn[];\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { GroupRowComponentBase } from '../../base/group-row-component-base';\nimport { TableRow } from '../../contract/table-row';\nimport { TableColumn } from '../../contract/table-column';\n\n@Component({\n selector: 'teta-group-row',\n templateUrl: './group-row.component.html',\n styleUrls: ['./group-row.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GroupRowComponent<T>\n extends GroupRowComponentBase<T>\n implements OnInit\n{\n @Input() row: TableRow<T>;\n @Input() columns: TableColumn[];\n\n constructor() {\n super();\n }\n\n ngOnInit(): void {}\n}\n","<span>{{row.groupValue[row.level]}} ()</span>\n<!--<span>{{row.groupValue[row.level]}} ({{row.children.length}})</span>-->\n","export enum EditType {\n cell,\n row\n}\n","export enum EditEvent {\n click,\n focus,\n doubleClick\n}\n","export class TableContextMenuConfig {\n contextMenu = true;\n copy = true;\n delete = true;\n add = true;\n paste = true;\n\n constructor(options?: {\n contextMenu?: boolean;\n copy?: boolean;\n delete?: boolean;\n add?: boolean;\n paste?: boolean;\n }) {\n if (options) {\n this.contextMenu = options?.contextMenu;\n this.copy = options?.copy;\n this.delete = options?.delete;\n this.add = options?.add;\n this.paste = options?.paste;\n }\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 public static getGridTemplateColumns(columns: TableColumn[]): string {\n const res = columns?.map((column: TableColumn) =>\n column.flex > 0 ? `minmax(${column.width}px, ${column.flex}fr)` : `${column.width}px`).join(' ');\n return res;\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].endsWith(filter.value);\n }\n if (filter.type === StringFilterType.Equals) {\n return item[filter.field] === filter.value;\n }\n if (filter.type === StringFilterType.StartsWith) {\n return item[filter.field].startsWith(filter.value);\n }\n return item[filter.field].indexOf(filter.value) >= 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 (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 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 (filter.value.lessThan === null || filter.value.lessThan === undefined\n ? true\n : filter.value.lessThan > item[filter.field]) &&\n (filter.value.greaterThan === null || filter.value.greaterThan === undefined\n ? true\n : filter.value.greaterThan < item[filter.field]) &&\n (filter.value.equalsTo === null || filter.value.equalsTo === undefined\n ? true\n : filter.value.equalsTo === item[filter.field]);\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 {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { TableService } from '../service/table.service';\nimport { takeWhile } from 'rxjs/operators';\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})\nexport class SelectionHeadCellComponent<T> implements OnInit, OnDestroy {\n @HostBinding('class.table-head__group') private readonly tableCellClass =\n true;\n\n private _alive = true;\n\n constructor(private _svc: TableService<T>, private _cdr: ChangeDetectorRef) {}\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\n .pipe(takeWhile((_) => this._alive))\n .subscribe((_) => {\n this._cdr.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","<teta-checkbox [binary]=\"true\"\n [allowNull]=\"true\"\n [noLabel]=\"true\"\n [ngModel]=\"allSelected()\"\n (ngModelChange)=\"selectAll($event)\"></teta-checkbox>\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 {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 {Component, HostBinding} from '@angular/core';\nimport {TableColumn} from '../contract/table-column';\n\n@Component({\n template: ''\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport abstract class HeadCellComponentBase {\n @HostBinding('class.table-head__cell__component')\n\n abstract column: TableColumn;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { HeadCellComponentBase } from '../../base/head-cell-component-base';\nimport { TableColumn } from '../../contract/table-column';\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})\nexport class DefaultHeadCellComponent\n extends HeadCellComponentBase\n implements OnInit\n{\n private _column: TableColumn;\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 constructor(private _cdr: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit(): void {}\n}\n","<div class=\"column column_auto align-center\" [tetaHint]=\"column.hint || column.caption\">\n <div class=\"table-head__cell__text align-center\">\n {{column.caption}}\n </div>\n <div *ngIf=\"column.unit\" class=\"table-head__cell__text align-center color-text-70\" style=\"overflow: visible;\">\n [{{column.unit}}]\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n Input,\n OnInit,\n ViewContainerRef,\n} 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})\nexport class HeadCellHostComponent implements OnInit {\n private _column: TableColumn;\n private componentRef: ComponentRef<HeadCellComponentBase>;\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 constructor(\n private viewContainerRef: ViewContainerRef\n ) {\n }\n\n ngOnInit(): void {\n if (!HeadCellComponentBase.isPrototypeOf(this.column.headCellComponent)) {\n this.column.headCellComponent = DefaultHeadCellComponent;\n }\n this.componentRef =\n this.viewContainerRef.createComponent<HeadCellComponentBase>(this.column.headCellComponent);\n this.componentRef.instance.column = this.column;\n this.init = true;\n }\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: '[tetaTabContent]'\n})\nexport class TabContentDirective {\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: '[tetaTabTitle]'\n})\nexport class TabTitleDirective {\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import {\n AfterContentChecked,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n Input,\n QueryList,\n} 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})\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';\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})\nexport class TabsComponent implements AfterContentChecked {\n @HostBinding('class.tabs') classTabs = true;\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 * 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 (\n selectedTab &&\n !selectedTab.disabled &&\n this.activeId !== selectedTab.id\n ) {\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\n ? activeTab.id\n : this.tabs.length\n ? this.tabs.first.id\n : 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 class=\"tabs-head\" role=\"tablist\">\n <div class=\"tabs-head-item\"\n *ngFor=\"let tab of tabs\"\n (click)=\"select(tab.id);\"\n [class.tabs-head-item_active]=\"tab.id === activeId\"\n [class.tabs-head-item_disabled]=\"tab.disabled\">\n <span [id]=\"tab.id\" 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 {{tab.title}}\n <ng-template [ngTemplateOutlet]=\"tab.titleTpl?.template\"></ng-template>\n </span>\n </div>\n</div>\n<div class=\"tabs-content\">\n <ng-template ngFor let-tab [ngForOf]=\"tabs\">\n <ng-container *ngIf=\"!destroyOnHide || tab.id === activeId\">\n <ng-template [ngTemplateOutlet]=\"tab.contentTpl?.template\"></ng-template>\n </ng-container>\n </ng-template>\n</div>\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 private _openItems: BehaviorSubject<ITreeData[]> = new BehaviorSubject<\n ITreeData[]\n >([]);\n\n constructor() {\n this.openItems = this._openItems.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 private addOrRemove<G>(needle: G, list: G[]): G[] {\n const found = list?.find(\n (x) => this.compareItems(x) === this.compareItems(needle)\n );\n if (found) {\n return list.filter(\n (x) => this.compareItems(x) !== this.compareItems(needle)\n );\n } else {\n return [...list, needle];\n }\n }\n}\n","import {Directive, Input, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: '[tetaTemplate]'\n})\nexport class TetaTemplateDirective {\n @Input('tetaTemplate') id: string;\n\n constructor(public template: TemplateRef<any>) {\n }\n\n getId(): string {\n return this.id;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n TemplateRef,\n} from '@angular/core';\nimport { ITreeData } from '../../../common/contract/i-tree-data';\nimport { TreeService } from '../tree.service';\nimport { takeWhile } from 'rxjs/operators';\nimport { animate, style, transition, trigger } from '@angular/animations';\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('children', [\n transition('void => *', [\n style({ opacity: '0' }),\n animate(200, style({ opacity: '1' })),\n ]),\n transition('* => void', [animate(200, style({ opacity: '0' }))]),\n ]),\n ],\n})\nexport class TreeItemComponent implements OnInit, OnChanges, OnDestroy {\n @Input() item: ITreeData;\n @Input() depth = 0;\n @Input() padding = 16;\n @Input() childNodeName = 'children';\n @Input() template: TemplateRef<any>;\n @Input() noChildMode: boolean;\n\n @HostBinding('class.tree__item-container') private readonly treeItemClass =\n true;\n\n itemIsOpen = false;\n\n private _alive = true;\n\n get computedDepth(): number {\n return (\n this.depth +\n (this.item[this.childNodeName]?.length > 0 ? 0 : this.noChildMode ? 1 : 2)\n );\n }\n\n constructor(public service: TreeService, private _cdr: ChangeDetectorRef) {}\n\n openItem() {\n this.service.openItem(this.item);\n }\n\n ngOnInit(): void {\n this.service.openItems\n .pipe(takeWhile((_) => this._alive))\n .subscribe((_) => {\n const found = _?.find(\n (x) =>\n this.service.compareItems(x) ===\n this.service.compareItems(this.item)\n );\n this.itemIsOpen = found != null;\n this._cdr.markForCheck();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {}\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","<div class=\"tree__item_content\" [ngClass]=\"'tree__item_content-' + computedDepth\" (click)=\"openItem()\">\n <ng-container\n *ngTemplateOutlet=\"template; context: {$implicit: item, item: item, open: itemIsOpen, service: service, depth: depth}\"></ng-container>\n</div>\n<div [@children] class=\"tree__children\" *ngIf=\"itemIsOpen && item[childNodeName]?.length > 0\">\n <teta-tree-item *ngFor=\"let child of item[childNodeName];\"\n [item]=\"child\"\n [template]=\"template\"\n [padding]=\"padding\"\n [childNodeName]=\"childNodeName\"\n [depth]=\"depth + 1\"></teta-tree-item>\n</div>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\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';\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})\nexport class TreeComponent\n implements OnInit, AfterContentInit, OnChanges, OnDestroy\n{\n @Input() data: ITreeData[];\n @Output() service: EventEmitter<TreeService> =\n new EventEmitter<TreeService>();\n @Input() class;\n @Input() padding = 8;\n @Input() childNodeName = 'children';\n\n @Input()\n set openItems(items: ITreeData[]) {\n this._openItems = items;\n this._service.setOpenItems(items);\n }\n\n get noChildMode(): boolean {\n const hasChildren = this.data.find(\n (_) => _[this.childNodeName]?.length > 0\n );\n return !hasChildren;\n }\n\n @Output() openItemsChange = new EventEmitter();\n\n @ContentChild(TetaTemplateDirective, { static: true })\n template: TetaTemplateDirective;\n\n private _openItems: ITreeData[];\n private _alive = true;\n\n constructor(private _service: TreeService, private _cdr: ChangeDetectorRef) {\n this._service.openItems\n .pipe(\n takeWhile((_) => this._alive),\n filter((_) => this._openItems !== _)\n )\n .subscribe((_) => this.openItemsChange.emit(_));\n }\n\n @Input()\n set compareItems(func: (item: ITreeData) => any) {\n this._service.compareItems = func;\n }\n\n @HostBinding('class')\n private get getClass(): string {\n const result = [this.class, 'tree'];\n return result.join(' ');\n }\n\n ngOnInit(): void {\n this.service.emit(this._service);\n }\n\n ngAfterContentInit(): void {}\n\n ngOnChanges(changes: SimpleChanges): void {\n this._cdr.detectChanges();\n }\n\n ngOnDestroy() {\n this._alive = false;\n }\n}\n","<ng-container *ngFor=\"let item of data\">\n <teta-tree-item [item]=\"item\"\n [depth]=\"0\"\n [padding]=\"padding\"\n [childNodeName]=\"childNodeName\"\n [noChildMode]=\"noChildMode\"\n [template]=\"template?.template\"></teta-tree-item>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { TreeService } from '../tree.service';\nimport { ITreeData } from '../../../common/contract/i-tree-data';\nimport { map } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\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})\nexport class TreeItemToggleComponent implements OnInit {\n @Input() item: ITreeData;\n open: Observable<boolean>;\n\n constructor(public service: TreeService, private _cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.open = this.service.openItems.pipe(\n map((_) => {\n const found = _?.find(\n (x) =>\n this.service.compareItems(x) ===\n this.service.compareItems(this.item)\n );\n return found != null;\n })\n );\n }\n}\n","<teta-icon [name]=\"(open | async) ? 'arrowDownKey' : 'arrowRightKey'\"\n class=\"tree__icon\"></teta-icon>\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 { TableService } from '../service/table.service';\nimport { TableColumn } from '../contract/table-column';\nimport { FilterState } from '../../filter/contarct/filter-state';\nimport { StateUtil } from '../util/state-util';\nimport { ITreeData } from '../../../common/contract/i-tree-data';\nimport { IDictionary } from '../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { Observable } from 'rxjs';\nimport { map, takeWhile } from 'rxjs/operators';\nimport { ArrayUtil } from '../../../common/util/array-util';\nimport {SortParam} from '../../filter/contarct/sort-param';\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})\nexport class HeadCellDropdownComponent<T> implements OnInit, OnDestroy {\n @Input() columns: ITreeData[];\n @Input() column: TableColumn;\n @Input() state: FilterState;\n @Input() dropDownOpen: boolean;\n @Output() dropDownOpenChange: EventEmitter<boolean> =\n new EventEmitter<boolean>();\n\n @Output() autosize: EventEmitter<void> = new EventEmitter<void>();\n @Output() autosizeAll: EventEmitter<void> = new EventEmitter<void>();\n\n @HostBinding('class.shadow-2') private readonly shadow = true;\n @HostBinding('class.bg-background-50') private readonly bg = true;\n\n dict: Observable<IDictionary<IIdName<any>[]>>;\n hiddenColumns: string[];\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 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(private _svc: TableService<T>, private _cdr: ChangeDetectorRef) {\n this.dict = this._svc.dict;\n this._svc.hiddenColumns\n .pipe(\n takeWhile((_) => this._alive),\n map((_) => [..._])\n )\n .subscribe((_) => {\n this.hiddenColumns = _;\n });\n }\n\n clearFilter() {\n this._svc.clearFilter(this.column);\n this.dropDownOpenChange.emit(false);\n this._cdr.markForCheck();\n }\n\n applyFilter() {\n this._svc.setState(new FilterState(this.state));\n this.dropDownOpenChange.emit(false);\n this._cdr.markForCheck();\n }\n\n pinColumn() {\n this._svc.pinColumn(this.column);\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 clearAllFilters() {\n this._svc.clearAllFilters();\n this.dropDownOpen = false;\n this._cdr.markForCheck();\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(\n (_) => this.hiddenColumns.indexOf(_.name) < 0\n );\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(\n (_) => _.name\n );\n }\n }\n\n setColumnsVisibility() {\n this._svc.setHiddenColumns(this.hiddenColumns);\n }\n\n compareItems = (item: TableColumn) => item.name;\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this._alive = false;\n }\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 = (\n column: TableColumn,\n visible: boolean,\n hiddenColumns: string[]\n ) => {\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 = (\n column: TableColumn,\n visible: boolean,\n hiddenColumns: string[]\n ) => {\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(\n column: TableColumn,\n columns: TableColumn[]\n ): TableColumn | null {\n return ArrayUtil.findRecursive(\n columns,\n (iterableNode) => iterableNode.columns?.indexOf(column) >= 0,\n 'columns'\n );\n }\n}\n","<teta-tabs class=\"column_auto\">\n <teta-tab *ngIf=\"column.filterable\">\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'filter'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <teta-filter-host [column]=\"column\" [state]=\"state\"\n *ngIf=\"dict | async as d\"\n [filterOptions]=\"d[column.name]\"></teta-filter-host>\n <teta-toolbar class=\"justify-content-between\">\n <button teta-button [palette]=\"'text'\" [view]=\"'ghost'\" (click)=\"clearFilter()\">\n Очистить\n </button>\n <button teta-button [palette]=\"'primary'\" (click)=\"applyFilter()\">\n <teta-icon [name]=\"'tick'\"></teta-icon>\n Применить\n </button>\n </teta-toolbar>\n </ng-template>\n </teta-tab>\n <teta-tab *ngIf=\"column.headDropdownTemplate\">\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'measurement'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <ng-container\n *ngTemplateOutlet=\"column.headDropdownTemplate; context: {$implicit: column, column: column}\"></ng-container>\n </ng-template>\n </teta-tab>\n <teta-tab>\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'menu'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <div class=\"list column_auto\">\n <div class=\"list-item list-item_interactive\" (click)=\"pinColumn()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"column.locked ? 'unpin' : 'pin'\"\n class=\"margin-right-2\"></teta-icon>\n {{column.locked ? 'Открепить' : 'Закрепить'}}\n </div>\n <div class=\"list-divider\"></div>\n <ng-container *ngIf=\"hasSortedColumns()\">\n <div class=\"list-item list-item_interactive\"\n *ngIf=\"sortParam\"\n (click)=\"clearSort()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\" class=\"margin-right-2\"></teta-icon>\n Сбросить сортировку\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"clearAllSort()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n Сбросить все сортировки\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"hasFilteredColumns()\">\n <div class=\"list-item list-item_interactive\"\n *ngIf=\"filtered\"\n (click)=\"clearFilter()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n Очистить фильтр\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"clearAllFilters()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n Очистить все фильтры\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <div class=\"list-item list-item_interactive\" (click)=\"autosize.emit()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'autoSize'\"\n class=\"margin-right-2\"></teta-icon>\n Авторазмер колонки\n </div>\n <div class=\"list-item list-item_interactive\" (click)=\"autosizeAll.emit()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'autoSizeAll'\"\n class=\"margin-right-2\"></teta-icon>\n Авторазмер всех колонок\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"list-item list-item_interactive\" (click)=\"restoreDefaultColumns()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'undo'\"\n class=\"margin-right-2\"></teta-icon>\n Отменить все изменения\n </div>\n </div>\n </ng-template>\n </teta-tab>\n <teta-tab>\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'eye'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <div class=\"list-item padding-left-6 padding-top-2\" [class.padding-left-9]=\"childMode\">\n <teta-checkbox [binary]=\"true\"\n [allowNull]=\"true\"\n [ngModel]=\"allColumnsVisible()\"\n (ngModelChange)=\"setAllColumns($event)\">\n Все\n </teta-checkbox>\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"padding-v-2 column column_auto scrollable\">\n <teta-tree [data]=\"columns\"\n [openItems]=\"openItems\"\n (openItemsChange)=\"openItems = $event\"\n [childNodeName]=\"'columns'\"\n [compareItems]=\"compareItems\">\n <ng-template tetaTemplate let-item>\n <div class=\"tree__item\">\n <teta-tree-item-toggle [item]=\"item\" *ngIf=\"item.columns?.length > 0\"></teta-tree-item-toggle>\n <teta-checkbox\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 </div>\n <teta-toolbar class=\"justify-content-end\">\n <button teta-button\n [disabled]=\"allColumnsVisible() === false\"\n [palette]=\"'primary'\"\n (click)=\"setColumnsVisibility()\">\n Применить\n </button>\n </teta-toolbar>\n </ng-template>\n </teta-tab>\n</teta-tabs>\n","import {\n Directive,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n Output,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n@Directive({\n selector: '[tetaResizeDrag]',\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 {\n ApplicationRef,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\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 { SortEvent } from '../contract/sort-event';\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';\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})\nexport class HeadCellComponent<T> implements OnInit, OnDestroy {\n @Input() column: TableColumn;\n @Input() showHeadCellMenu: boolean;\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 dropDownOpen: boolean;\n showDrag: 'left' | 'right' | null = null;\n private rect: any;\n\n private _alive = true;\n private _startPosition: number;\n\n constructor(\n private _svc: TableService<T>,\n private _app: ApplicationRef,\n private _elementRef: ElementRef\n ) {}\n\n @HostListener('dragstart', ['$event']) 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(event: DragEvent): 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 =\n 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(event: DragEvent): 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(\n map((_) => StateUtil.getSortState(_, this.column))\n );\n this.filtered = this.state.pipe(\n map((_) => StateUtil.isColumnFiltered(_, this.column))\n );\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 ? 'filterSortUpColor' : 'filterSortDownColor';\n }\n if (sortParam) {\n return sortParam.asc ? 'sortUpColor' : 'sortDownColor';\n }\n if (filtered) {\n return 'filterColor';\n }\n return '';\n })\n );\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n\n autosizeColumn() {\n this._svc.autosizeColumn(this.column, this._elementRef.nativeElement);\n }\n\n autosizeAllColumns() {\n this._svc.autosizeAllColumns(this._elementRef.nativeElement);\n }\n\n sortColumn(column: TableColumn, event: MouseEvent): void {\n if (!event.defaultPrevented) {\n this._svc.sort(new SortEvent(this.column, event.shiftKey));\n }\n }\n\n resizeStart(event: MouseEvent): 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 this._svc.resizeColumn(\n new ColumnResizeEvent(this.column, event.pageX - this._startPosition)\n );\n this._app.tick();\n }\n }\n\n resizeEnd() {\n this._startPosition = null;\n }\n}\n","<div draggable=\"true\" class=\"row row_auto\">\n <div class=\"table-head__cell__wrapper\"\n [ngClass]=\"column.headCellClass\"\n (click)=\"sortColumn(column, $event)\">\n <teta-icon *ngIf=\"iconName | async as icon\"\n [palette]=\"'text'\"\n [name]=\"icon\"></teta-icon>\n <teta-head-cell-host [column]=\"column\"></teta-head-cell-host>\n <teta-dropdown *ngIf=\"showHeadCellMenu\"\n [verticalAlign]=\"verticalAlign.bottom\"\n [appendToBody]=\"true\"\n [(open)]=\"dropDownOpen\"\n [align]=\"align.right\"\n (click)=\"$event.preventDefault()\"\n [class.table-head__cell__menu_open]=\"dropDownOpen\"\n class=\"table-head__cell__menu\">\n <button tetaDropdownHead teta-button\n [square]=\"true\"\n [palette]=\"'text'\"\n [view]=\"'ghost'\">\n <teta-icon [palette]=\"'text'\" [name]=\"'menu'\"></teta-icon>\n </button>\n <teta-head-cell-dropdown tetaDropdownContent\n (autosize)=\"autosizeColumn()\"\n (autosizeAll)=\"autosizeAllColumns()\"\n [column]=\"column\"\n [columns]=\"columns | async\"\n [state]=\"state | async\"\n [(dropDownOpen)]=\"dropDownOpen\"></teta-head-cell-dropdown>\n </teta-dropdown>\n </div>\n <div class=\"drop-area\"\n draggable=\"false\"\n [class.drop-area_left]=\"showDrag === 'left'\"\n [class.drop-area_right]=\"showDrag === 'right'\"\n *ngIf=\"showDrag\"></div>\n</div>\n<div 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($event)\"\n (resizeProcess)=\"resizeProcess($event)\"\n (resizeEnd)=\"resizeEnd()\"></div>\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';\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})\nexport class TableHeadGroupComponent<T> implements OnInit, OnDestroy {\n @Input() showHeadCellMenu: boolean;\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 private _alive = true;\n private _column: TableColumn;\n private _hiddenColumns: string[];\n\n private get _leaves() {\n return TableUtil.getColumnLeaves(this._column)?.filter(\n (_) => this._hiddenColumns.indexOf(_.name) < 0\n );\n }\n\n @HostBinding('style.grid-column-end')\n get gridColumnEnd(): string {\n if (this._leaves?.length > 0) {\n return `span ${this._leaves.length}`;\n }\n return null;\n }\n\n get gridTemplateColumns(): string {\n return TableUtil.getGridTemplateColumns(this._leaves);\n }\n\n constructor(private _svc: TableService<T>, private _cdr: ChangeDetectorRef) {\n this._svc.hiddenColumns\n .pipe(takeWhile((_) => this._alive))\n .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","<ng-container *ngIf=\"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\" [style.grid-template-columns]=\"gridTemplateColumns\">\n <ng-container *ngFor=\"let col of column.columns\">\n <teta-table-head-group\n class=\"table-head__group\"\n *ngIf=\"!columnIsHidden(col)\"\n [showHeadCellMenu]=\"showHeadCellMenu\"\n [column]=\"col\"></teta-table-head-group>\n </ng-container>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"!column.columns || column.columns.length === 0\">\n <teta-head-cell\n *ngIf=\"!columnIsHidden(column)\"\n class=\"table-head__cell\"\n [showHeadCellMenu]=\"showHeadCellMenu\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"></teta-head-cell>\n</ng-container>\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 { FilterState } from '../../filter/contarct/filter-state';\nimport { TableService } from '../service/table.service';\nimport { takeWhile } from 'rxjs/operators';\nimport { TableUtil } from '../util/table-util';\nimport { SelectType } from '../enum/select-type.enum';\nimport { combineLatest } from 'rxjs';\nimport { ArrayUtil } from '../../../common/util/array-util';\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})\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 gridTemplateColumns: string;\n\n @HostBinding('style.grid-template-columns')\n get getTemplateColumns() {\n let template = this.gridTemplateColumns;\n if (this.selectType !== SelectType.none) {\n template = `48px ${template}`;\n }\n return template;\n }\n\n state: FilterState;\n selectTypeEnum = SelectType;\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(\n (_) => _.locked === true && this._hiddenColumns.indexOf(_.name) < 0\n );\n }\n\n get unlocked(): TableColumn[] {\n return this._columns.filter(\n (_) => _.locked === false && this._hiddenColumns.indexOf(_.name) < 0\n );\n }\n\n constructor(private _svc: TableService<T>, private _cdr: ChangeDetectorRef) {\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\n this.gridTemplateColumns = TableUtil.getGridTemplateColumns(\n ArrayUtil.flatten(columns, 'columns', true)\n .filter((_) => this._hiddenColumns.indexOf(_.name) < 0)\n .sort((a, b) => Number(b.locked) - Number(a.locked))\n );\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\n getSpan(): string {\n if (this.locked?.length > 0) {\n let span = this.locked.length;\n if (this.selectType !== SelectType.none) {\n span += 1;\n }\n return `span ${span}`;\n }\n return null;\n }\n\n getLockedGridTemplateColumns(columns: TableColumn[]) {\n let template = TableUtil.getGridTemplateColumns(columns);\n if (this.selectType !== SelectType.none) {\n template = `48px ${template}`;\n }\n return template;\n }\n\n track(index: number, item: TableColumn): any {\n return item.name;\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","<div class=\"table-head_locked\"\n *ngIf=\"locked?.length\"\n [style.grid-template-columns]=\"getLockedGridTemplateColumns(locked)\"\n [style.grid-column-end]=\"getSpan()\">\n <teta-selection-head-cell *ngIf=\"selectType !== selectTypeEnum.none\"></teta-selection-head-cell>\n <ng-container *ngFor=\"let column of locked; trackBy: track\">\n <teta-table-head-group\n class=\"table-head__group\"\n [showHeadCellMenu]=\"showHeadCellMenu\"\n [column]=\"column\"></teta-table-head-group>\n </ng-container>\n</div>\n<ng-container *ngIf=\"unlocked?.length\">\n <teta-selection-head-cell *ngIf=\"selectType !== selectTypeEnum.none && locked?.length < 1\"></teta-selection-head-cell>\n <ng-container *ngFor=\"let column of unlocked; trackBy: track\">\n <teta-table-head-group\n class=\"table-head__group\"\n [showHeadCellMenu]=\"showHeadCellMenu\"\n [column]=\"column\"></teta-table-head-group>\n </ng-container>\n</ng-container>\n","export enum AggregationType {\n none,\n sum,\n avg,\n min,\n max,\n}\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 { TableRow } from '../contract/table-row';\nimport { takeWhile } from 'rxjs/operators';\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})\nexport class SelectionCellComponent<T> implements OnInit, OnDestroy {\n @Input() row: TableRow<T>;\n\n @HostBinding('class.cell') private readonly tableCellClass = true;\n selectedRows: TableRow<T>[] = [];\n\n private _alive = true;\n\n constructor(private _svc: TableService<T>, private _cdr: ChangeDetectorRef) {}\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\n .pipe(takeWhile((_) => this._alive))\n .subscribe((_) => {\n this.selectedRows = _;\n this._cdr.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","<teta-checkbox [binary]=\"true\"\n [noLabel]=\"true\"\n [ngModel]=\"selectedRows?.indexOf(row) >= 0\"\n (ngModelChange)=\"selectRow($event)\"></teta-checkbox>\n","import {\n ChangeDetectorRef,\n Component,\n HostBinding,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {TableService} from '../service/table.service';\nimport {TableRow} from '../contract/table-row';\nimport {takeWhile} from 'rxjs/operators';\nimport {ICellCoordinates} from '../contract/i-cell-coordinates';\nimport {TableColumn} from '../contract/table-column';\nimport {IIdName} from '../../../common/contract/i-id-name';\nimport {ICellValue} from '../contract/i-cell-value';\nimport {IDictionary} from '../../../common/contract/i-dictionary';\n\n@Component({\n template: '',\n})\nexport abstract class CellComponentBase<T> implements OnInit, OnDestroy {\n @HostBinding('class.cell-component')\n private readonly tableCellComponent = true;\n\n get edit() {\n return (\n this._edit &&\n this.svc.boolOrFuncCallback(this.column.editable)({\n column: this.column,\n row: this.row,\n })\n );\n }\n\n _edit: boolean;\n column: TableColumn;\n filterOptions: IIdName<any>[] = [];\n dict: IDictionary<IIdName<any>[]> = {};\n row: TableRow<T>;\n\n protected _alive = true;\n\n protected constructor(\n protected svc: TableService<T>,\n protected cdr: ChangeDetectorRef\n ) {\n }\n\n valueChanged(): void {\n this.svc.changeValue({\n column: this.column,\n row: this.row,\n });\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n\n ngOnInit(): void {\n this.init();\n }\n\n private init(): void {\n this.svc.editRowStart\n .pipe(\n takeWhile((_) => this._alive)\n )\n .subscribe((cell: ICellCoordinates<T>) => {\n if (\n this.row === cell?.row &&\n !this._edit\n // &&\n // this.svc.boolOrFuncCallback(this.svc.cellEditable)({\n // column: this.column,\n // row: this.row,\n // })\n ) {\n this.start(cell, 'row');\n }\n if (this.row !== cell?.row && this._edit) {\n this.stop();\n }\n });\n\n this.svc.editCellStart\n .pipe(\n takeWhile((_) => this._alive)\n )\n .subscribe((cell: ICellCoordinates<T>) => {\n if (\n this.row === cell.row &&\n this.column.name === cell.column.name &&\n !this._edit\n ) {\n this.start(cell, 'cell');\n }\n if (\n (this.row !== cell.row || this.column.name !== cell.column.name) &&\n this._edit\n ) {\n this.stop();\n }\n });\n\n this.svc.valueSet\n .pipe(takeWhile((_) => this._alive))\n .subscribe((cellValue: ICellValue<T>) => {\n if (\n this.row === cellValue.cell.row\n && this.column.name === cellValue.cell.column.name\n ) {\n this.row.data[this.column.name] = cellValue.value;\n this.cdr.detectChanges();\n }\n });\n\n this.svc.valueChanged\n .pipe(takeWhile((_) => this._alive))\n .subscribe((cellValue: ICellCoordinates<T>) => {\n if (\n this.row === cellValue.row\n ) {\n this.cdr.detectChanges();\n }\n });\n }\n\n private start(initiator: ICellCoordinates<T>, type: 'cell' | 'row') {\n this._edit = true;\n this.startEdit(initiator, type);\n this.cdr.markForCheck();\n }\n\n private stop() {\n this._edit = false;\n this.stopEdit();\n this.cdr.markForCheck();\n }\n\n abstract startEdit(\n initiator: ICellCoordinates<T>,\n type: 'cell' | 'row'\n ): void;\n\n abstract stopEdit(): void;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { CellComponentBase } from '../../base/cell-component-base';\nimport { TableService } from '../../service/table.service';\nimport { TableColumn } from '../../contract/table-column';\nimport { TableRow } from '../../contract/table-row';\nimport { ICellCoordinates } from '../../contract/i-cell-coordinates';\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})\nexport class NumericCellComponent<T>\n extends CellComponentBase<T>\n implements OnInit\n{\n @Input() override column: TableColumn;\n @Input() override row: TableRow<T>;\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 setValue(): void {\n this.valueChanged();\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n }\n\n startEdit(initiator: ICellCoordinates<T>, type: 'cell' | 'row'): void {\n if (initiator?.column.name === this.column.name) {\n setTimeout(() => {\n this.input?.nativeElement.focus();\n this.input?.nativeElement.select();\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 cell-text_numeric\">\n {{row.data[column.name] | tetaNumber : 2}}\n</span>\n<input #input\n *ngIf=\"edit\"\n tetaOnlyNumber\n type=\"text\"\n class=\"input row_auto border-radius-0\"\n (blur)=\"setValue()\"\n [ngModel]=\"row.data[column.name]\"\n (ngModelChange)=\"row.data[column.name]=$event;\"/>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport {CellComponentBase} from '../../base/cell-component-base';\nimport {TableColumn} from '../../contract/table-column';\nimport {TableRow} from '../../contract/table-row';\nimport {TableService} from '../../service/table.service';\nimport {ICellCoordinates} from '../../contract/i-cell-coordinates';\nimport {DatePickerComponent} from '../../../date-picker/date-picker/date-picker.component';\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})\nexport class DateCellComponent<T>\n extends CellComponentBase<T>\n implements OnInit {\n @Input() override column: TableColumn;\n @Input() override row: TableRow<T>;\n\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 setValue(value: Date): void {\n this.row.data[this.column.name] = value ? new Date(value) : value;\n this.valueChanged();\n this.cdr.detectChanges();\n }\n\n startEdit(initiator: ICellCoordinates<T>, type: 'cell' | 'row'): void {\n if (initiator?.column.name === 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\">\n {{row.data[column.name] | date : 'dd.MM.yyyy'}}\n</span>\n<teta-date-picker class=\"datepicker-table\"\n #input\n *ngIf=\"edit\"\n [appendToBody]=\"true\"\n [showTime]=\"false\"\n [ngModel]=\"row.data[column.name]\"\n (ngModelChange)=\"setValue($event)\"\n></teta-date-picker>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { TableColumn } from '../../contract/table-column';\nimport { TableRow } from '../../contract/table-row';\nimport { TableService } from '../../service/table.service';\nimport { CellComponentBase } from '../../base/cell-component-base';\nimport { SelectComponent } from '../../../select/select/select.component';\nimport { IIdName } from '../../../../common/contract/i-id-name';\nimport { ICellCoordinates } from '../../contract/i-cell-coordinates';\nimport { VerticalAlign } from '../../../../common/enum/vertical-align.enum';\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})\nexport class ListCellComponent<T>\n extends CellComponentBase<T>\n implements OnInit\n{\n @Input() override column: TableColumn;\n @Input() override row: TableRow<T>;\n @Input() override filterOptions: IIdName<any>[] = [];\n\n get value() {\n return this.getValue();\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 setValue(value: any): void {\n this.row.data[this.column.name] = value;\n this.valueChanged();\n }\n\n startEdit(initiator: ICellCoordinates<T>, type: 'cell' | 'row'): void {\n if (initiator?.column.name === 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 private getValue() {\n if (\n this.filterOptions === null ||\n this.filterOptions === undefined ||\n !(this.filterOptions instanceof Array)\n ) {\n return '';\n }\n const item = this.filterOptions.find(\n (option) => option.id === this.row.data[this.column.name]\n );\n if (item === null || item === undefined) {\n return '';\n }\n return item.name;\n }\n}\n","<span [style.display]=\"edit ? 'none' : 'block'\" class=\"cell-text\">\n {{value}}\n</span>\n<teta-select #input\n class=\"row_auto select-table\"\n *ngIf=\"edit\"\n [allowNull]=\"!column.required\"\n [verticalAlign]=\"verticalAlign.auto\"\n [appendToBody]=\"true\"\n [options]=\"filterOptions\"\n [valueRef]=\"'id'\"\n [textRef]=\"'name'\"\n [ngModel]=\"row.data[column.name]\"\n (ngModelChange)=\"setValue($event)\">\n</teta-select>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { CellComponentBase } from '../../base/cell-component-base';\nimport { TableColumn } from '../../contract/table-column';\nimport { TableRow } from '../../contract/table-row';\nimport { TableService } from '../../service/table.service';\nimport { ICellCoordinates } from '../../contract/i-cell-coordinates';\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})\nexport class StringCellComponent<T>\n extends CellComponentBase<T>\n implements OnInit\n{\n @Input() override column: TableColumn;\n @Input() override row: TableRow<T>;\n @ViewChild('input', { static: false }) input: ElementRef;\n\n constructor(public override svc: TableService<T>, public override cdr: ChangeDetectorRef) {\n super(svc, cdr);\n }\n\n setValue(): void {\n this.valueChanged();\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n }\n\n startEdit(initiator: ICellCoordinates<T>, type: 'cell' | 'row'): void {\n if (initiator?.column.name === this.column.name) {\n this.cdr.markForCheck();\n setTimeout(() => {\n this.input.nativeElement?.focus();\n this.input.nativeElement?.select();\n }, 0);\n }\n }\n\n stopEdit(): void {\n this.cdr.markForCheck();\n }\n}\n","<span [style.display]=\"edit ? 'none' : 'block'\" class=\"cell-text\">\n {{row.data[column.name]}}\n</span>\n<input #input\n *ngIf=\"edit\"\n type=\"text\"\n class=\"input row_auto border-radius-0\"\n (blur)=\"setValue()\"\n [ngModel]=\"row.data[column.name]\"\n (ngModelChange)=\"row.data[column.name]=$event\"/>\n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { CellComponentBase } from '../../base/cell-component-base';\nimport { TableColumn } from '../../contract/table-column';\nimport { TableRow } from '../../contract/table-row';\nimport { TableService } from '../../service/table.service';\nimport { ICellCoordinates } from '../../contract/i-cell-coordinates';\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})\nexport class BooleanCellComponent<T>\n extends CellComponentBase<T>\n implements OnInit\n{\n @Input() override column: TableColumn;\n @Input() override row: TableRow<T>;\n @ViewChild('input', { static: false }) input: ElementRef;\n\n constructor(public override svc: TableService<T>, public override cdr: ChangeDetectorRef) {\n super(svc, cdr);\n }\n\n setValue(): void {\n this.valueChanged();\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n }\n\n startEdit(initiator: ICellCoordinates<T>, type: 'cell' | 'row'): void {\n if (initiator?.column.name === 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\">\n {{ row.data[column.name] }}\n</span>\n<teta-checkbox\n #input\n *ngIf=\"edit\"\n [binary]=\"true\"\n [(ngModel)]=\"row.data[column.name]\"\n (blur)=\"setValue()\"\n></teta-checkbox>\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<\n FilterType,\n Type<any>\n>()\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)\n ? cellComponentsMap.get(column.filterType)\n : StringCellComponent;\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n ViewContainerRef,\n} from '@angular/core';\nimport { CellComponentBase } from '../base/cell-component-base';\nimport { TableColumn } from '../contract/table-column';\nimport { TableRow } from '../contract/table-row';\nimport { getCellComponent } from '../contract/cell-components-map';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { IDictionary } from '../../../common/contract/i-dictionary';\n\n@Component({\n selector: 'teta-cell-host',\n template: '',\n styleUrls: ['./cell-host.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CellHostComponent<T> implements OnInit, OnDestroy, 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<any>;\n\n constructor(private viewContainerRef: ViewContainerRef) {}\n\n ngOnInit(): void {\n if (!CellComponentBase.isPrototypeOf(this.column.cellComponent)) {\n this.column.cellComponent = getCellComponent(this.column);\n }\n this._componentRef = this.viewContainerRef.createComponent(\n this.column.cellComponent\n );\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 ngOnDestroy(): void {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n this._init &&\n (changes.hasOwnProperty('row') ||\n changes.hasOwnProperty('column') ||\n changes.hasOwnProperty('filterOptions') ||\n changes.hasOwnProperty('dict'))\n ) {\n this._componentRef.instance.row = this.row;\n this._componentRef.instance.column = this.column;\n this._componentRef.instance.filterOptions = this.filterOptions;\n this._componentRef.instance.dict = this.dict;\n this._componentRef.injector.get(ChangeDetectorRef).markForCheck();\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { TableColumn } from '../contract/table-column';\nimport { TableRow } from '../contract/table-row';\nimport { TableService } from '../service/table.service';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { IDictionary } from '../../../common/contract/i-dictionary';\n\n@Component({\n selector: 'teta-cell',\n templateUrl: './cell.component.html',\n styleUrls: ['./cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CellComponent<T> implements OnInit, OnDestroy {\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 private alive = true;\n\n constructor(protected _svc: TableService<T>) {}\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this.alive = false;\n }\n}\n","<teta-cell-host [row]=\"row\"\n [column]=\"column\"\n [filterOptions]=\"filterOptions\"\n [dict]=\"dict\"></teta-cell-host>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Type,\n ViewChild,\n} from '@angular/core';\nimport {TableRow} from '../contract/table-row';\nimport {TableColumn} from '../contract/table-column';\nimport {GroupRowComponentBase} from '../base/group-row-component-base';\nimport {TableService} from '../service/table.service';\nimport {DetailComponentBase} from '../base/detail-component-base';\nimport {takeWhile} from 'rxjs/operators';\nimport {TableUtil} from '../util/table-util';\nimport {SelectType} from '../enum/select-type.enum';\nimport {combineLatest} from 'rxjs';\nimport {ArrayUtil} from '../../../common/util/array-util';\nimport {IDictionary} from '../../../common/contract/i-dictionary';\nimport {IIdName} from '../../../common/contract/i-id-name';\nimport {AggregationType} from '../enum/aggregation-type.enum';\nimport {CdkVirtualScrollViewport} from '@angular/cdk/scrolling';\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})\nexport class TableBodyComponent<T> implements OnInit, OnDestroy {\n @Input() virtual: boolean;\n @Input() activeRow: TableRow<T>;\n @Input() rowHeight: number;\n @Input() additionalComponent: Type<DetailComponentBase<T>>;\n @Input() tree: boolean;\n @Input() aggregate: boolean;\n @Input() grouping: boolean;\n @Input() groupRowComponent: Type<GroupRowComponentBase<T>>;\n @Input() openLevels: number;\n @Input() selectType: SelectType;\n @Input() rowClass: (row: TableRow<T>, index?: number) => string;\n\n @ViewChild(CdkVirtualScrollViewport, {static: false}) viewport: CdkVirtualScrollViewport;\n\n @HostBinding('class.table-body') private readonly tableBodyClass = true;\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\n gridTemplateColumns: string;\n selectedRows: TableRow<T>[] = [];\n locked: TableColumn[] = [];\n unlocked: TableColumn[] = [];\n\n selectTypeEnum = SelectType;\n\n private _columns: TableColumn[] = [];\n private _alive = true;\n private _data: TableRow<T>[];\n private _hiddenColumns: string[] = [];\n private _index: number;\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 }\n\n get columns(): TableColumn[] {\n return this._columns;\n }\n\n constructor(private _svc: TableService<T>, private _cdr: ChangeDetectorRef) {\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.gridTemplateColumns = TableUtil.getGridTemplateColumns(\n this.columns.sort((a, b) => Number(b.locked) - Number(a.locked))\n );\n this._cdr.markForCheck();\n });\n\n this._svc.displayData.pipe(takeWhile((_) => this._alive)).subscribe((_) => {\n this.data = _;\n this._cdr.markForCheck();\n });\n\n this._svc.dict.pipe(takeWhile((_) => this._alive)).subscribe((_) => {\n this.dict = _;\n this._cdr.markForCheck();\n });\n\n this._svc.scrollIndex\n .pipe(takeWhile((_) => this._alive))\n .subscribe(async (_) => {\n // if (this.viewport && this.dataSource && _ !== null) {\n // await this.dataSource.adapter.relax();\n // await this.dataSource.adapter.fix({\n // scrollPosition: (_ + 1) * 24,\n // });\n // }\n if (this.viewport) {\n this.viewport.scrollToIndex(_, 'smooth');\n }\n this._cdr.markForCheck();\n });\n\n this._svc.activeRow\n .pipe(takeWhile((_) => this._alive))\n .subscribe(async (_) => {\n this.activeRow = _;\n this._cdr.markForCheck();\n });\n }\n\n setActiveRow(row: TableRow<T>) {\n this._svc.setActiveRow(row);\n }\n\n getData = (index, count, success) => {\n const data = [];\n if (this.data?.length > 0) {\n const start = Math.max(0, index);\n const end = Math.min(index + count - 1, this.data.length - 1);\n for (let i = start; i <= end; i++) {\n data.push(this.data[i]);\n }\n }\n return success(data);\n };\n\n ngOnInit(): void {\n }\n\n ngOnDestroy(): void {\n this._alive = false;\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 }\n\n getAggregateText(column: TableColumn): string {\n if (column.aggregate === AggregationType.sum) {\n return 'Сумма=';\n }\n if (column.aggregate === AggregationType.avg) {\n return 'Среднее=';\n }\n if (column.aggregate === AggregationType.min) {\n return 'Мин=';\n }\n if (column.aggregate === AggregationType.max) {\n return 'Макс=';\n }\n return '';\n }\n\n getSpan(): string {\n if (this.locked?.length > 0) {\n let span = this.locked.length;\n if (this.selectType !== SelectType.none) {\n span += 1;\n }\n return `span ${span}`;\n }\n return null;\n }\n\n getTemplateColumns() {\n let template = this.gridTemplateColumns;\n if (this.selectType !== SelectType.none) {\n template = `48px ${template}`;\n }\n return template;\n }\n\n getLockedGridTemplateColumns(columns: TableColumn[]) {\n let template = TableUtil.getGridTemplateColumns(columns);\n if (this.selectType !== SelectType.none) {\n template = `48px ${template}`;\n }\n return template;\n }\n\n trackRow(index: number, row: TableRow<T>): any {\n return index;\n }\n\n trackColumns(index: number, column: TableColumn): any {\n return column.name;\n }\n\n private getSum(columnName) {\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) {\n return this.data?.reduce(\n (accum, current) =>\n accum != null && accum <= current.data[columnName]\n ? accum\n : current.data[columnName],\n null\n );\n }\n\n private getMax(columnName) {\n return this.data?.reduce(\n (accum, current) =>\n accum != null && accum >= current.data[columnName]\n ? accum\n : current.data[columnName],\n null\n );\n }\n}\n","<!--<div #viewport class=\"table-body-container table-body-container-virtual\"-->\n<!-- *ngIf=\"virtual\"-->\n<!-- [style.grid-template-columns]=\"getTemplateColumns()\"-->\n<!-- style=\"height: 100%;\">-->\n<!-- <ng-container-->\n<!-- *uiScroll=\"let row of dataSource; let rowIndex = index; let last = last;\" style=\"display: flex;flex-grow: 1\">-->\n<!-- <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>-->\n<!-- </ng-container>-->\n<!-- <ng-container *ngIf=\"aggregate\">-->\n<!-- <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>-->\n<!-- </ng-container>-->\n<!--</div>-->\n\n<cdk-virtual-scroll-viewport *ngIf=\"virtual\"\n class=\"table-body-container\"\n [itemSize]=\"24\">\n <ng-container *cdkVirtualFor=\"let row of data;templateCacheSize: 0; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n</cdk-virtual-scroll-viewport>\n\n\n<div *ngIf=\"!virtual\"\n class=\"table-body-container\"\n [style.grid-template-rows]=\"rowHeight + 'px'\"\n [style.grid-auto-rows]=\"rowHeight + 'px'\"\n [style.grid-template-columns]=\"getTemplateColumns()\">\n <ng-container *ngFor=\"let row of data; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"aggregate\">\n <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #bodyTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"table-row\"\n (click)=\"setActiveRow(row)\"\n [attr.data-row]=\"rowIndex\"\n [ngClass]=\"rowClass ? rowClass(row, rowIndex) : ''\"\n [class.table-row_virtual]=\"virtual\"\n [style.grid-template-columns]=\"virtual ? getTemplateColumns() : ''\"\n [class.table-row_active]=\"row === activeRow || selectedRows.indexOf(row) >= 0\">\n <ng-container *ngIf=\"!grouping\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.grid-template-columns]=\"getLockedGridTemplateColumns(locked)\"\n [style.zIndex]=\"row === activeRow ? 1 : 'unset'\"\n [style.grid-column-end]=\"getSpan()\">\n <teta-selection-cell *ngIf=\"selectType !== selectTypeEnum.none && locked.length\"\n [row]=\"row\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict[column.name]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n ></teta-cell>\n </div>\n <teta-selection-cell *ngIf=\"selectType !== selectTypeEnum.none && locked.length < 1\"\n [row]=\"row\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict[column.name]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n ></teta-cell>\n </ng-container>\n <ng-container *ngIf=\"grouping\">\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #aggTemplate>\n <div class=\"table-row\"\n *ngIf=\"aggregate\"\n [class.table-row_virtual]=\"virtual\"\n [style.grid-template-columns]=\"virtual ? getTemplateColumns() : ''\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.grid-template-columns]=\"getLockedGridTemplateColumns(locked)\"\n [style.grid-column-end]=\"getSpan()\">\n <div class=\"cell align-center justify-content-center\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component justify-content-end\"\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{getAggregateText(column)}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n <div class=\"cell align-center justify-content-center\"\n *ngIf=\"selectType !== selectTypeEnum.none && locked.length < 1\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component justify-content-end\"\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{getAggregateText(column)}}\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n</ng-template>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n Type,\n ViewChild,\n} from '@angular/core';\nimport {TableRow} from '../contract/table-row';\nimport {TableService} from '../service/table.service';\nimport {TableColumn} from '../contract/table-column';\nimport {FilterState} from '../../filter/contarct/filter-state';\nimport {DetailComponentBase} from '../base/detail-component-base';\nimport {ICellEvent} from '../contract/i-cell-event';\nimport {ICellCoordinates} from '../contract/i-cell-coordinates';\nimport {GroupRowComponentBase} from '../base/group-row-component-base';\nimport {GroupRowComponent} from '../default/group-row/group-row.component';\nimport {filter, takeWhile, withLatestFrom} from 'rxjs/operators';\nimport {EditType} from '../enum/edit-type.enum';\nimport {EditEvent} from '../enum/edit-event.enum';\nimport {SelectType} from '../enum/select-type.enum';\nimport {IIdName} from '../../../common/contract/i-id-name';\nimport {IDictionary} from '../../../common/contract/i-dictionary';\nimport {of} from 'rxjs';\nimport {ArrayUtil} from '../../../common/util/array-util';\nimport {PositionUtil} from '../../../common/util/position-util';\nimport {Align} from '../../../common/enum/align.enum';\nimport {VerticalAlign} from '../../../common/enum/vertical-align.enum';\nimport {FilterType} from '../../filter/enum/filter-type.enum';\nimport {TableContextMenuConfig} from '../contract/table-context-menu-config';\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})\nexport class TableComponent<T>\n implements OnInit, OnDestroy, AfterViewInit, OnChanges {\n @Input() data: T[] = [];\n @Input() columns: TableColumn[] = [];\n @Input() dict: IDictionary<IIdName<any>[]>;\n\n @Input()\n set state(state: FilterState) {\n this._state = state;\n }\n\n @Input() rowHeight = 24;\n @Input() cookieName: string;\n @Input() virtual: boolean;\n @Input() detailComponent: Type<DetailComponentBase<T>>;\n @Input() activeRow: TableRow<T>;\n @Input() selectedRows: TableRow<T>[];\n @Input() selectType: SelectType = SelectType.none;\n @Input() aggregate: boolean;\n @Input() grouping: boolean;\n @Input() groupRowComponent: Type<GroupRowComponentBase<T>> =\n GroupRowComponent;\n @Input() openLevels: number;\n @Input() tree: boolean;\n @Input() trackBy: (row: TableRow<T>) => any;\n @Input() editType: EditType;\n @Input() editEvent: EditEvent;\n @Input() rowEditable: boolean | ((row: TableRow<T>) => boolean);\n @Input() rowClass: (row: TableRow<T>, index?: number) => string;\n\n @Input() set scrollToIndex(index: number) {\n this._svc.scrollToIndex(index);\n }\n\n @Input() contextMenuConfig: TableContextMenuConfig =\n new TableContextMenuConfig();\n\n @Input() showHeadCellMenu = true;\n\n @Output()\n stateChange: EventEmitter<FilterState> = new EventEmitter<FilterState>();\n @Output() bodyLeft = new EventEmitter<TableRow<T>>();\n @Output() activeRowChange: EventEmitter<TableRow<T>> = new EventEmitter();\n @Output() selectedRowsChange: EventEmitter<TableRow<T>[]> =\n new EventEmitter();\n @Output() rowLeft = new EventEmitter<TableRow<T>>();\n @Output() rowEditStart = new EventEmitter<TableRow<T>>();\n @Output() rowEditEnd = new EventEmitter<TableRow<T>>();\n @Output() cellClick = new EventEmitter<ICellEvent<T>>();\n @Output() cellDoubleClick = new EventEmitter<ICellEvent<T>>();\n @Output() cellFocus = new EventEmitter<ICellEvent<T>>();\n @Output() cellEditStart = new EventEmitter<ICellCoordinates<T>>();\n @Output() cellEditEnd = new EventEmitter<ICellCoordinates<T>>();\n @Output() valueChange = new EventEmitter<ICellCoordinates<T>>();\n @Output() cellKeyUp = new EventEmitter<ICellEvent<T>>();\n\n @Output() pasteRows = new EventEmitter<any[]>();\n @Output() addRow = new EventEmitter<void>();\n @Output() deleteRows = new EventEmitter<TableRow<T>[]>();\n @Output() tableService = new EventEmitter<TableService<T>>();\n\n @ViewChild('contextMenu', {static: true}) menu: ElementRef;\n @HostBinding('class.table') private readonly tableClass = true;\n\n showContextMenu: boolean;\n selectedRowsList: TableRow<T>[];\n contextMenuTarget: ICellCoordinates<T>;\n\n private _alive = true;\n private _bodyElement: HTMLElement;\n private _headElement: HTMLElement;\n\n private _state: FilterState;\n\n constructor(private _svc: TableService<T>, private _elementRef: ElementRef) {\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: ICellCoordinates<T>) => this.cellEditStart.emit(item));\n\n this._svc.editCellStop\n .pipe(takeWhile((_) => this._alive))\n .subscribe((item: ICellCoordinates<T>) => this.cellEditEnd.emit(item));\n\n this._svc.editRowStart\n .pipe(takeWhile((_) => this._alive))\n .subscribe((item: ICellCoordinates<T>) =>\n this.rowEditStart.emit(item?.row)\n );\n\n this._svc.editRowStop\n .pipe(takeWhile((_) => this._alive))\n .subscribe((item: ICellCoordinates<T>) =>\n this.rowEditEnd.emit(item?.row)\n );\n\n this._svc.selectedRows\n .pipe(takeWhile((_) => this._alive))\n .subscribe((items: TableRow<T>[]) => {\n this.selectedRowsList = items;\n this.selectedRowsChange.emit(items);\n });\n\n this._svc.activeRow\n .pipe(takeWhile((_) => this._alive))\n .subscribe((item: TableRow<T>) => this.activeRowChange.emit(item));\n\n this._svc.valueChanged\n .pipe(takeWhile((_) => this._alive))\n .subscribe((coordinates: ICellCoordinates<T>) => {\n this.valueChange.emit(coordinates);\n });\n }\n\n @HostListener('document:click', ['$event']) handleClickOutsideAnyRow(\n event: MouseEvent\n ) {\n const coordinates = this.getCoordinates(event);\n if (coordinates) {\n this.cellClick.emit(coordinates);\n if (this.editEvent === EditEvent.click) {\n this.startEditRowOrCell(coordinates);\n }\n }\n if (!this.eventIsOnRow(event) && !event.defaultPrevented) {\n this._svc.startEditRow(null);\n }\n }\n\n @HostListener('focusin', ['$event']) focusIn(event: any) {\n const coordinates = this.getCoordinates(event);\n if (coordinates) {\n this.cellFocus.emit(coordinates);\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 this.cellDoubleClick.emit(coordinates);\n if (this.editEvent === EditEvent.doubleClick) {\n this.startEditRowOrCell(coordinates);\n }\n }\n }\n\n @HostListener('window:keyup', ['$event'])\n keyup(event: KeyboardEvent) {\n const coordinates = this.getCoordinates(event);\n if (coordinates) {\n this.cellKeyUp.emit(coordinates);\n }\n switch (event.key) {\n case 'Enter':\n this._svc.startEditRow(null);\n break;\n case 'Escape':\n this._svc.startEditRow(null);\n break;\n default:\n break;\n }\n }\n\n @HostListener('mousedown', ['$event']) mousedown(event: MouseEvent) {\n if (event.button === 2) {\n event.preventDefault();\n }\n }\n\n @HostListener('contextmenu', ['$event']) contextMenu(event: MouseEvent) {\n if (\n this.getSelectedText() ||\n this.contextMenuConfig?.contextMenu === false\n ) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.contextMenuTarget = this.getCoordinates(event);\n this.showContextMenu = true;\n this.setPosition(event);\n }\n\n rowAdd() {\n this.addRow.emit();\n this.contextMenuTarget = null;\n this.showContextMenu = false;\n }\n\n copy(rows: TableRow<T>[]) {\n of(1)\n .pipe(withLatestFrom(this._svc.columns, this._svc.hiddenColumns))\n .subscribe((data: [number, TableColumn[], string[]]) => {\n const [, columns, hidden] = data;\n navigator.clipboard.writeText(\n this.toClipboardString(rows, this.getVisibleColumns(columns, hidden))\n );\n this.contextMenuTarget = null;\n this.showContextMenu = false;\n });\n }\n\n delete(rows: TableRow<T>[]) {\n this.deleteRows.emit(rows);\n this.contextMenuTarget = null;\n this.showContextMenu = false;\n }\n\n async pasteData() {\n const result = await navigator.clipboard.readText();\n of(1)\n .pipe(withLatestFrom(this._svc.columns, this._svc.hiddenColumns))\n .subscribe((data: [number, TableColumn[], string[]]) => {\n const [, columns, hidden] = data;\n this.pasteRows.emit(\n this.fromClipboard(result, this.getVisibleColumns(columns, hidden))\n );\n });\n this.contextMenuTarget = null;\n this.showContextMenu = false;\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 =\n this._elementRef.nativeElement.querySelector('.table-head');\n this._bodyElement = this._elementRef.nativeElement.querySelector(\n '.table-body-container'\n );\n this._bodyElement.addEventListener('scroll', this.onScroll);\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n this._bodyElement.removeEventListener('scroll', this.onScroll);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.hasOwnProperty('editType')) {\n this._svc.editType = this.editType;\n }\n if (changes.hasOwnProperty('selectType')) {\n this._svc.selectType = this.selectType;\n }\n if (changes.hasOwnProperty('selectedRows')) {\n this._svc.selectRows(this.selectedRows);\n }\n if (changes.hasOwnProperty('rowEditable')) {\n this._svc.rowEditable = this.rowEditable;\n }\n if (changes.hasOwnProperty('cookieName')) {\n this._svc.setCookieName(this.cookieName);\n }\n if (changes.hasOwnProperty('columns')) {\n if (this.columns !== null && this.columns !== undefined) {\n this._svc.setColumns(this.columns);\n }\n }\n if (changes.hasOwnProperty('data')) {\n this._svc.setData(this.data);\n this._svc.selectRows([]);\n }\n if (changes.hasOwnProperty('dict')) {\n this._svc.setDict(this.dict);\n }\n }\n\n private startEditRowOrCell(coordinates: ICellCoordinates<T>): 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 getEventCell(event: Event): HTMLElement | null {\n return event.composedPath().find((target: HTMLElement) => {\n return target.tagName?.toLowerCase() === 'teta-cell';\n }) as HTMLElement;\n }\n\n private eventIsOnRow(event: Event): boolean {\n const row = event.composedPath().find((target: HTMLElement) => {\n return target?.getAttribute && target?.getAttribute('data-row');\n });\n return row && this._elementRef.nativeElement.contains(row);\n }\n\n private getCoordinates(event: Event): ICellEvent<T> | null {\n const cell = this.getEventCell(event);\n if (cell) {\n const rowIndex = cell.getAttribute('data-row');\n const columnName = cell.getAttribute('data-column');\n if (rowIndex && columnName) {\n const row = this._svc.getRowByIndex(rowIndex);\n const column = this._svc.getColumnByName(columnName);\n return {\n row,\n column: column ? column : new TableColumn(),\n event,\n };\n }\n }\n return null;\n }\n\n private onScroll = () => {\n this._headElement.scrollLeft = this._bodyElement.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 private setPosition(event: MouseEvent) {\n const position = PositionUtil.getPosition(\n {\n top: event.y,\n bottom: event.y,\n left: event.x,\n right: event.x,\n },\n this.menu.nativeElement.getBoundingClientRect(),\n Align.left,\n VerticalAlign.auto\n );\n PositionUtil.setElementPosition(this.menu.nativeElement, position);\n }\n\n private toClipboardString(rows: TableRow<T>[], columns: TableColumn[]) {\n return rows.reduce(\n (res: string, currentRow: TableRow<T>, i: number) =>\n `${res}${i === 0 ? '' : '\\n'}${columns.reduce(\n (columnResult: string, column: TableColumn, j: number) =>\n `${columnResult}${j === 0 ? '' : '\\t'}${\n currentRow.data[column.name] ?? ''\n }`,\n ''\n )}`,\n ''\n );\n }\n\n private fromClipboard(data: string, columns: TableColumn[]) {\n const rows = data.split('\\n').filter((_) => _?.length > 0);\n const result = rows.map((_) =>\n _.replace('\\r', '').replace('\\n', '').split('\\t')\n );\n return result.map((row: string[]) =>\n row.reduce((res, item, index) => {\n let value: any = item;\n if (\n columns[index]?.filterType === FilterType.number ||\n columns[index]?.filterType === FilterType.list\n ) {\n value = parseFloat(item);\n }\n if (columns[index]?.filterType === FilterType.boolean) {\n value = Boolean(JSON.parse(item.toLowerCase()));\n }\n if (columns[index]) {\n res[columns[index].name] = value;\n }\n return res;\n }, {})\n );\n }\n\n private getVisibleColumns(columns: TableColumn[], hidden: string[]) {\n const visible = ArrayUtil.flatten(columns, 'columns', true).filter(\n (_) => hidden.indexOf(_.name) < 0\n );\n return visible.sort((a, b) => Number(b.locked) - Number(a.locked));\n }\n}\n","<div class=\"column column_auto\">\n <teta-table-head [selectType]=\"selectType\" [showHeadCellMenu]=\"showHeadCellMenu\"></teta-table-head>\n <teta-table-body\n [aggregate]=\"aggregate\"\n [virtual]=\"virtual\"\n [activeRow]=\"activeRow\"\n [additionalComponent]=\"detailComponent\"\n [grouping]=\"grouping\"\n [groupRowComponent]=\"groupRowComponent\"\n [openLevels]=\"openLevels\"\n [selectType]=\"selectType\"\n [rowHeight]=\"rowHeight\"\n [rowClass]=\"rowClass\"\n [tree]=\"tree\"></teta-table-body>\n</div>\n\n<div #contextMenu\n class=\"list shadow-1\"\n style=\"position: fixed; z-index: 2;\"\n [style.visibility]=\"showContextMenu ? 'visible ' : 'hidden'\"\n [tetaClickOutside]=\"showContextMenu\"\n (clickOutside)=\"showContextMenu = false\">\n <ng-container *ngIf=\"contextMenuConfig?.add\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"rowAdd()\">\n <teta-icon [name]=\"'add'\" [palette]=\"'text'\"></teta-icon>\n Добавить строку\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"contextMenuConfig?.copy\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"copy(selectedRowsList)\"\n *ngIf=\"selectedRowsList?.length > 0\">\n <teta-icon [name]=\"'copySelected'\" [palette]=\"'text'\"></teta-icon>\n Копировать выделенные строки\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"copy([contextMenuTarget.row])\"\n *ngIf=\"contextMenuTarget\">\n <teta-icon [name]=\"'copy'\" [palette]=\"'text'\"></teta-icon>\n Копировать строку\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"contextMenuConfig?.paste\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"pasteData()\">\n <teta-icon [name]=\"'paste'\" [palette]=\"'text'\"></teta-icon>\n Вставить\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"contextMenuConfig?.delete\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"delete(selectedRowsList)\"\n *ngIf=\"selectedRowsList?.length > 0\">\n <teta-icon [name]=\"'deleteSelected'\" [palette]=\"'text'\"></teta-icon>\n Удалить выделенные строки\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"delete([contextMenuTarget.row])\"\n *ngIf=\"contextMenuTarget\">\n <teta-icon [name]=\"'delete'\" [palette]=\"'text'\"></teta-icon>\n Удалить строку\n </div>\n </ng-container>\n</div>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TabContentDirective} from './tab-content.directive';\nimport {TabTitleDirective} from './tab-title.directive';\nimport {TabComponent} from './tab/tab.component';\nimport {TabsComponent} from './tabs/tabs.component';\n\n@NgModule({\n declarations: [\n TabContentDirective,\n TabTitleDirective,\n TabComponent,\n TabsComponent\n ],\n exports: [\n TabContentDirective,\n TabTitleDirective,\n TabComponent,\n TabsComponent\n ],\n imports: [\n CommonModule\n ]\n})\nexport class TabsModule {\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TetaTemplateDirective} from './teta-template.directive';\n\n\n@NgModule({\n declarations: [\n TetaTemplateDirective\n ],\n exports: [\n TetaTemplateDirective\n ],\n imports: [\n CommonModule\n ]\n})\nexport class TetaTemplateModule {\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TreeComponent } from './tree/tree.component';\nimport { TreeItemComponent } from './tree-item/tree-item.component';\nimport { TetaTemplateModule } from '../../directive/teta-template/teta-template.module';\nimport { IconModule } from '../icon/icon.module';\nimport { TreeItemToggleComponent } from './tree-item-toggle/tree-item-toggle.component';\n\n@NgModule({\n declarations: [TreeComponent, TreeItemComponent, TreeItemToggleComponent],\n exports: [TreeComponent, TetaTemplateModule, TreeItemToggleComponent],\n imports: [CommonModule, IconModule, TetaTemplateModule],\n})\nexport class TreeModule {}\n","import {\n ChangeDetectorRef,\n Component,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport {CellComponentBase} from '../../base/cell-component-base';\nimport {TableColumn} from '../../contract/table-column';\nimport {TableRow} from '../../contract/table-row';\nimport {TableService} from '../../service/table.service';\nimport {ICellCoordinates} from '../../contract/i-cell-coordinates';\nimport {DatePickerComponent} from '../../../date-picker/date-picker/date-picker.component';\n\n@Component({\n selector: 'teta-date-time-cell',\n templateUrl: './date-time-cell.component.html',\n styleUrls: ['./date-time-cell.component.scss'],\n})\nexport class DateTimeCellComponent<T>\n extends CellComponentBase<T>\n implements OnInit {\n @Input() override column: TableColumn;\n @Input() override row: TableRow<T>;\n\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 setValue(value: Date): void {\n this.row.data[this.column.name] = value;\n this.valueChanged();\n }\n\n startEdit(initiator: ICellCoordinates<T>, type: 'cell' | 'row'): void {\n if (initiator?.column.name === 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\">\n {{row.data[column.name] | date : 'dd.MM.yyyy HH:mm:ss'}}\n</span>\n<teta-date-picker class=\"datepicker-table\" #input\n *ngIf=\"edit\"\n [appendToBody]=\"true\"\n [showTime]=\"true\"\n [ngModel]=\"row.data[column.name]\"\n (ngModelChange)=\"setValue($event)\"\n></teta-date-picker>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ResizeDragDirective } from './resize-drag.directive';\n\n@NgModule({\n declarations: [ResizeDragDirective],\n exports: [ResizeDragDirective],\n imports: [CommonModule],\n})\nexport class ResizeDragModule {}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TableComponent} from './table/table.component';\nimport {FilterModule} from '../filter/filter.module';\nimport {NumericCellComponent} from './default/numeric-cell/numeric-cell.component';\nimport {ListCellComponent} from './default/list-cell/list-cell.component';\nimport {DateCellComponent} from './default/date-cell/date-cell.component';\nimport {StringCellComponent} from './default/string-cell/string-cell.component';\nimport {HeadCellHostComponent} from './head-cell-host/head-cell-host.component';\nimport {TableHeadComponent} from './table-head/table-head.component';\nimport {TableBodyComponent} from './table-body/table-body.component';\nimport {CellComponent} from './cell/cell.component';\nimport {FormsModule} from '@angular/forms';\nimport {CheckboxModule} from '../checkbox/checkbox.module';\nimport {CellHostComponent} from './cell-host/cell-host.component';\nimport {GroupRowComponent} from './default/group-row/group-row.component';\nimport {TableHeadGroupComponent} from './table-head-group/table-head-group.component';\nimport {HeadCellComponent} from './head-cell/head-cell.component';\nimport {DefaultHeadCellComponent} from './default/default-head-cell/default-head-cell.component';\nimport {IconModule} from '../icon/icon.module';\nimport {DropdownModule} from '../dropdown/dropdown.module';\nimport {TabsModule} from '../tabs/tabs.module';\nimport {SelectModule} from '../select/select.module';\nimport {NumberPipeModule} from '../../pipe/number-pipe/number-pipe.module';\nimport {DatePickerModule} from '../date-picker/date-picker.module';\nimport {ButtonModule} from '../button/button.module';\nimport {SelectionCellComponent} from './selection-cell/selection-cell.component';\nimport {SelectionHeadCellComponent} from './selection-head-cell/selection-head-cell.component';\nimport {HintModule} from '../../directive/hint/hint.module';\nimport {TreeModule} from '../tree/tree.module';\nimport {HeadCellDropdownComponent} from './head-cell-dropdown/head-cell-dropdown.component';\nimport {DateTimeCellComponent} from './default/date-time-cell/date-time-cell.component';\nimport {OnlyNumberModule} from '../../directive/only-number/only-number.module';\nimport {BooleanCellComponent} from './default/boolean-cell/boolean-cell.component';\nimport {ToolbarModule} from '../toolbar/toolbar.module';\nimport {ClickOutsideModule} from '../../directive/click-outside/click-outside.module';\nimport {ResizeDragModule} from '../../directive/resize-drag/resize-drag.module';\nimport {ScrollingModule} from '@angular/cdk/scrolling';\n\n@NgModule({\n declarations: [\n TableComponent,\n NumericCellComponent,\n ListCellComponent,\n DateCellComponent,\n StringCellComponent,\n HeadCellHostComponent,\n TableHeadComponent,\n TableBodyComponent,\n CellComponent,\n CellHostComponent,\n GroupRowComponent,\n TableHeadGroupComponent,\n HeadCellComponent,\n DefaultHeadCellComponent,\n SelectionCellComponent,\n SelectionHeadCellComponent,\n HeadCellDropdownComponent,\n DateTimeCellComponent,\n BooleanCellComponent,\n ],\n exports: [\n TableComponent,\n NumericCellComponent,\n ListCellComponent,\n DateCellComponent,\n StringCellComponent,\n HeadCellHostComponent,\n TableHeadComponent,\n TableBodyComponent,\n CellComponent,\n CellHostComponent,\n GroupRowComponent,\n DateTimeCellComponent,\n BooleanCellComponent,\n ],\n imports: [\n CommonModule,\n FilterModule,\n FormsModule,\n CheckboxModule,\n IconModule,\n DropdownModule,\n TabsModule,\n SelectModule,\n NumberPipeModule,\n DatePickerModule,\n ButtonModule,\n HintModule,\n TreeModule,\n OnlyNumberModule,\n ToolbarModule,\n ClickOutsideModule,\n ResizeDragModule,\n ScrollingModule,\n ],\n})\nexport class TableModule {\n}\n","import {TableRow} from '../contract/table-row';\nimport {TableColumn} from '../contract/table-column';\n\nexport abstract class DetailComponentBase<T> {\n /**\n * The row details are displayed for\n */\n abstract row: TableRow<T>;\n /**\n * displayed columns\n */\n abstract columns: TableColumn[];\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 ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { ThemeSwitchService } from '../theme-switch.service';\nimport { Observable } from 'rxjs';\nimport {ButtonViewType} from '../../button/button/button.component';\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})\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 teta-button [palette]=\"palette\" [view]=\"view\" [square]=\"true\" (click)=\"switchTheme()\">\n <teta-icon [name]=\"'lamp'\" [palette]=\"'text'\"></teta-icon>\n</button>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ThemeSwitchComponent} from './theme-switch/theme-switch.component';\nimport {ButtonModule} from '../button/button.module';\nimport {IconModule} from '../icon/icon.module';\n\n@NgModule({\n declarations: [ThemeSwitchComponent],\n exports: [ThemeSwitchComponent],\n imports: [\n CommonModule,\n ButtonModule,\n IconModule\n ]\n})\nexport class ThemeSwitchModule {\n}\n","import {\n AfterViewInit, ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport * as THREE from 'three';\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';\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';\n\n@Component({\n selector: 'teta-chart3d',\n templateUrl: './chart3d.component.html',\n styleUrls: ['./chart3d.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\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.Renderer;\n private _controls: OrbitControls;\n private _obs: ResizeObserver;\n private _config: Chart3dOptions;\n\n private SIDE_SIZE = 100;\n private gridColor: 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 = _ ? '#474751' : '#d7dee3';\n this.init();\n })\n )\n .subscribe();\n }\n\n ngAfterViewInit() {\n this.addResizeObserver();\n this.createScene();\n this.startRenderingLoop();\n }\n\n ngOnDestroy() {\n this._alive = false;\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 const geometry = new THREE.BufferGeometry().setFromPoints(\n data.points.map((_) => new THREE.Vector3(x(_.x), z(_.z), y(_.y)))\n );\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 line = new THREE.Line(geometry, material);\n\n line.computeLineDistances();\n line.scale.set(1, 1, 1);\n this._scene.add(line);\n });\n\n const plane = new THREE.GridHelper(\n this.SIDE_SIZE,\n this.SIDE_SIZE / 10,\n this.gridColor,\n this.gridColor\n );\n\n plane.position.set(this.SIDE_SIZE / 2, 0, this.SIDE_SIZE / 2);\n this._scene.add(plane);\n\n const gridX = new THREE.GridHelper(\n this.SIDE_SIZE,\n this.SIDE_SIZE / 10,\n this.gridColor,\n this.gridColor\n );\n gridX.geometry.rotateX(-Math.PI / 2);\n gridX.position.set(this.SIDE_SIZE / 2, this.SIDE_SIZE / 2, 0);\n this._scene.add(gridX);\n\n const gridY = new THREE.GridHelper(\n this.SIDE_SIZE,\n this.SIDE_SIZE / 10,\n this.gridColor,\n this.gridColor\n );\n gridY.geometry.rotateZ(Math.PI / 2);\n gridY.position.set(0, this.SIDE_SIZE / 2, this.SIDE_SIZE / 2);\n this._scene.add(gridY);\n\n this.drawTicks(x, y, z);\n\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 private createScene() {\n this._scene = new THREE.Scene();\n\n const aspectRatio =\n this._elementRef.nativeElement.clientWidth /\n this._elementRef.nativeElement.clientHeight;\n\n const fieldOfView = 10;\n const nearClippingPane = 1;\n const farClippingPane = 10000;\n\n this._camera = new THREE.PerspectiveCamera(\n fieldOfView,\n aspectRatio,\n nearClippingPane,\n farClippingPane\n );\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 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(5, 5, 5);\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(_), z(0), -5);\n }\n\n if (idx === 1) {\n sprite.position.set(-5, z(0), y(_));\n }\n\n if (idx === 2) {\n sprite.position.set(0, z(_), -5);\n }\n\n ticks.add(sprite);\n });\n });\n\n const northLabel = this.makeSprite('North', { fontSize: 28 });\n const westLabel = this.makeSprite('West', { fontSize: 28 });\n const tvdLabel = this.makeSprite('TVD', { fontSize: 28 });\n\n northLabel.position.set(x(scalesExtrems[0]) + 10, 0, 0);\n westLabel.position.set(0, 0, y(scalesExtrems[1]) + 10);\n tvdLabel.position.set(0, z(scalesExtrems[2]), 0);\n\n ticks.add(northLabel, westLabel, tvdLabel);\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([\n d3.min(flattenExtrems.x) as any,\n this._config?.axes?.max == null\n ? d3.max(flattenExtrems.x)\n : this._config.axes.max,\n ])\n .range([0, this.SIDE_SIZE])\n .nice();\n\n const y = d3\n .scaleLinear()\n .domain([\n d3.min(flattenExtrems.y) as any,\n this._config?.axes?.max == null\n ? d3.max(flattenExtrems.y)\n : this._config.axes.max,\n ])\n .range([0, this.SIDE_SIZE])\n .nice();\n\n const z = d3\n .scaleLinear()\n .domain([\n d3.min(flattenExtrems.z) as any,\n this._config?.axes?.max == null\n ? d3.max(flattenExtrems.z)\n : this._config.axes.max,\n ])\n .range([this.SIDE_SIZE, 0])\n .nice();\n\n return { x, y, z };\n }\n}\n","<canvas #canvas></canvas>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Chart3dComponent } from './chart3d/chart3d.component';\n\n@NgModule({\n declarations: [Chart3dComponent],\n exports: [Chart3dComponent],\n imports: [CommonModule],\n})\nexport class Chart3dModule {}\n","import { Base3dPoint } from './base-3d-point';\nimport { Series3d } from './series-3d';\n\nexport class Chart3dOptions {\n axes?: {\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","/* accordion */\nexport * from './accordion/public-api';\n\n/* button */\nexport * from './button/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-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/* 3d-chart */\nexport * from './chart-3d/public-api';\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 {\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 { DynamicComponentService } from '../../common/service/dynamic-component.service';\nimport { DOCUMENT } from '@angular/common';\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';\nimport { ClickService } from '../../common/service/click.service';\nimport { merge } from 'rxjs';\nimport { filter, takeWhile, tap } from 'rxjs/operators';\n\n@Directive({\n selector: '[tetaContextMenu]',\n})\nexport class ContextMenuDirective\n extends DynamicContentBaseDirective\n implements OnDestroy, OnInit\n{\n /**\n * Строка, шаблон или компонент для создания контекстного меню\n */\n @Input() tetaContextMenu: string | TemplateRef<any> | Type<any>;\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 }\n\n @HostListener('contextmenu', ['$event'])\n showContent(event: MouseEvent): void {\n event.preventDefault();\n setTimeout(() => {\n this.createMenu(event);\n });\n }\n\n @HostListener('click', ['$event'])\n click(event: MouseEvent): void {\n if (\n this._componentRef &&\n DomUtil.clickedInside(this._componentRef.location.nativeElement, event)\n ) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n override ngOnInit() {\n super.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(\n (event: MouseEvent) =>\n !DomUtil.clickedInside(\n this._componentRef.location.nativeElement,\n event\n )\n ),\n tap((_) => {\n this.destroyContentRef();\n this.openChange.emit(false);\n })\n )\n .subscribe();\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\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(\n this._componentRef.location.nativeElement,\n position\n );\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 = [\n ...ArrayUtil.asArray(this.className),\n 'context-menu',\n ];\n this.openChange.emit(true);\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ContextMenuDirective} from './context-menu.directive';\nimport {DynamicComponentModule} from '../../component/dynamic-component/dynamic-component.module';\n\n@NgModule({\n declarations: [ContextMenuDirective],\n exports: [ContextMenuDirective],\n imports: [\n CommonModule,\n DynamicComponentModule\n ]\n})\nexport class ContextMenuModule {\n}\n","import {Directive, Input} from '@angular/core';\nimport {NgControl} from '@angular/forms';\n\n@Directive({\n selector: '[tetaDisableControl]'\n})\nexport class DisableControlDirective {\n @Input() set tetaDisableControl(val: boolean) {\n if (this.ngControl.control) {\n if (val) {\n this.ngControl.control.disable();\n } else {\n this.ngControl.control.enable();\n }\n }\n }\n\n constructor(private ngControl: NgControl) {\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DisableControlDirective} from './disable-control.directive';\n\n\n@NgModule({\n declarations: [DisableControlDirective],\n imports: [\n CommonModule\n ],\n exports: [\n DisableControlDirective\n ]\n})\nexport class DisableControlModule {\n}\n","import {\n // ContentChildren,\n Directive,\n EventEmitter,\n HostListener,\n Input,\n Output,\n // QueryList,\n} from '@angular/core';\nimport {DragSortEvent} from './drag-sort-event';\n// import {DragSortItemDirective} from './drag-sort-item.directive';\n\n@Directive({\n selector: '[tetaDragSortContainer]',\n})\nexport class DragSortContainerDirective<T> {\n @Input() dragSortList: T[];\n @Output() dragSorted: EventEmitter<DragSortEvent<T>> = new EventEmitter<DragSortEvent<T>>();\n\n // @ContentChildren(DragSortItemDirective, {descendants: true})\n // private items: QueryList<DragSortItemDirective<T>>;\n private _dragItem: T;\n\n constructor() {\n }\n\n @HostListener('drop', ['$event']) drop(event: DragEvent): void {\n event.stopPropagation();\n event.preventDefault();\n }\n\n setDragItem(item: T) {\n this._dragItem = item;\n }\n\n getDragItem(): T {\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 (\n (insertBefore && sourceIndex + 1 === targetIndex) ||\n (!insertBefore && sourceIndex === targetIndex + 1)\n ) {\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';\nimport {DragSortContainerDirective} from './drag-sort-container.directive';\n\n@Directive({\n selector: '[tetaDragSortItem]',\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\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(\n this._elementRef.nativeElement,\n this._dragElement\n );\n this._renderer.addClass(this._dragElement, 'drop-direction');\n this._renderer.addClass(\n this._dragElement,\n this.dragSortDirection === 'horizontal'\n ? 'drop-direction-horizontal'\n : '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\n ? 'end'\n : 'start';\n } else {\n return event.clientY >= this.rect.y + this.rect.height / 2\n ? 'end'\n : 'start';\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DragSortContainerDirective } from './drag-sort-container.directive';\nimport { DragSortItemDirective } from './drag-sort-item.directive';\n\n@NgModule({\n declarations: [DragSortContainerDirective, DragSortItemDirective],\n exports: [DragSortContainerDirective, DragSortItemDirective],\n imports: [CommonModule],\n})\nexport class DragSortModule {}\n","import {\n Directive,\n ElementRef,\n Inject,\n Input,\n OnDestroy,\n Renderer2,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n@Directive({\n selector: '[tetaLoader]',\n})\nexport class LoaderDirective implements OnDestroy {\n @Input() appendToBody = 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 _alive = true;\n private _loading: boolean;\n\n constructor(\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n @Inject(DOCUMENT) private _document: any\n ) {\n this._element = this._elementRef.nativeElement;\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 this._renderer.appendChild(\n this.appendToBody ? this._document.body : this._element,\n this._loader\n );\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 }\n\n private setPosition() {\n const position = this._element.getBoundingClientRect();\n this._renderer.setStyle(\n this._loader,\n 'top',\n `${position.y + position.height / 2}px`\n );\n this._renderer.setStyle(\n this._loader,\n 'left',\n `${position.x + +position.width / 2}px`\n );\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {LoaderDirective} from './loader.directive';\n\n@NgModule({\n declarations: [LoaderDirective],\n exports: [LoaderDirective],\n imports: [\n CommonModule\n ]\n})\nexport class LoaderModule {\n}\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} from '@angular/common';\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})\nexport class ResizePanelComponent implements OnInit, OnDestroy {\n @Input()\n set direction(val: 'vertical' | 'horizontal') {\n this._direction = val;\n }\n\n get direction() {\n return this._direction;\n }\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\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\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(\n this._elementRef.nativeElement,\n 'height',\n `${newSize}px`\n );\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(\n this._elementRef.nativeElement,\n 'width',\n `${newSize}px`\n );\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(\n this._elementRef.nativeElement,\n 'width',\n `${savedSize}px`\n );\n } else {\n this._renderer.setStyle(\n this._elementRef.nativeElement,\n 'height',\n `${savedSize}px`\n );\n }\n this._renderer.setStyle(this._elementRef.nativeElement, 'flex-grow', `0`);\n this._renderer.setStyle(\n this._elementRef.nativeElement,\n 'flex-shrink',\n `0`\n );\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(\n `resize-panel${this.name}`,\n this._elementRef.nativeElement.clientWidth\n );\n } else {\n localStorage.setItem(\n `resize-panel${this.name}`,\n this._elementRef.nativeElement.clientHeight\n );\n }\n }\n }\n}\n","<ng-content></ng-content>\n<div #grab class=\"resize-grab\"\n (resizeStart)=\"resizeStart($event)\"\n (resizeProcess)=\"resizeProcess($event)\"\n (resizeEnd)=\"resizeEnd($event)\"\n [tetaResizeDrag]=\"direction\"\n [ngClass]=\"getClassName()\">\n <teta-icon [name]=\"direction\"></teta-icon>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ResizePanelComponent } from './resize-panel/resize-panel.component';\nimport { IconModule } from '../icon/icon.module';\nimport { ResizeDragModule } from '../../directive/resize-drag/resize-drag.module';\n\n@NgModule({\n declarations: [ResizePanelComponent],\n exports: [ResizePanelComponent],\n imports: [CommonModule, IconModule, ResizeDragModule],\n})\nexport class ResizePanelModule {}\n","import {\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 { DynamicContentBaseDirective } from '../dynamic-content-base.directive';\nimport { DOCUMENT } from '@angular/common';\nimport { DynamicComponentService } from '../../common/service/dynamic-component.service';\nimport { DomUtil } from '../../common/util/dom-util';\nimport { PositionUtil } from '../../common/util/position-util';\nimport { Align } from '../../common/enum/align.enum';\nimport { VerticalAlign } from '../../common/enum/vertical-align.enum';\nimport { merge } from 'rxjs';\nimport { filter, takeWhile, tap } from 'rxjs/operators';\nimport { ClickService } from '../../common/service/click.service';\n\n@Directive({\n selector: '[tetaTooltip]',\n})\nexport class TooltipDirective\n extends DynamicContentBaseDirective\n implements OnDestroy, OnInit\n{\n /**\n * Строка, шаблон или компонент для создания контекстного меню\n */\n @Input() tetaTooltip: string | TemplateRef<any> | Type<any>;\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 override ngOnInit() {\n super.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(\n (event: MouseEvent) =>\n !DomUtil.clickedInside(this._elementRef.nativeElement, event)\n ),\n filter(\n (event: MouseEvent) =>\n !DomUtil.clickedInside(\n this._componentRef.location.nativeElement,\n event\n )\n ),\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 =\n this._componentRef.location.nativeElement.getBoundingClientRect();\n }\n const containerPosition =\n 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(\n this._componentRef.location.nativeElement,\n position\n );\n const verticalClass =\n 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 { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TooltipDirective } from './tooltip.directive';\nimport { DynamicComponentModule } from '../../component/dynamic-component/dynamic-component.module';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n\n@NgModule({\n declarations: [TooltipDirective],\n exports: [TooltipDirective],\n imports: [CommonModule, DynamicComponentModule, BrowserAnimationsModule],\n})\nexport class TooltipModule {}\n","import { Directive, ElementRef, OnInit, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[tetaNoAutofill]',\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(private _renderer: Renderer2, private _elementRef: ElementRef) {}\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 { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NoAutofillDirective } from './no-autofill.directive';\n\n@NgModule({\n exports: [NoAutofillDirective],\n declarations: [NoAutofillDirective],\n imports: [CommonModule],\n})\nexport class NoAutofillModule {}\n","import {Inject, Injectable, OnDestroy} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\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\n getContainer(): HTMLElement {\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","export class StringUtil {\n static firstLetterToLower(input: string) {\n return input.charAt(0).toLocaleLowerCase() + input.slice(1);\n };\n}\n","/**\n * Components\n */\n\nexport * from './component/public-api';\n\n/**\n * Directives\n */\nexport * from './directive/public-api';\n\n/**\n * Pipes\n */\nexport * from './pipe/public-api';\n\n/**\n * Common\n */\nexport * from './common/public-api';\n\n/**\n * Util\n */\nexport * from './util/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["objectHash"],"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/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/icon/icon.service.ts","../../src/component/icon/icon-sprite.directive.ts","../../src/component/icon/icon.module.ts","../../src/component/accordion/accordion.module.ts","../../src/component/button/button/button.component.ts","../../src/component/button/button/button.component.html","../../src/component/button/button.module.ts","../../src/component/checkbox/checkbox/checkbox.component.ts","../../src/component/checkbox/checkbox/checkbox.component.html","../../src/component/checkbox/checkbox.module.ts","../../src/component/date-picker/model/date-picker-mode.enum.ts","../../src/pipe/util/number-helper.ts","../../src/util/date-util.ts","../../src/component/date-picker/model/day-model.ts","../../src/component/date-picker/util/date-picker-util.ts","../../src/common/enum/align.enum.ts","../../src/common/enum/vertical-align.enum.ts","../../src/component/date-picker/model/picker-locale-model.ts","../../src/component/date-picker/service/picker-locale.service.ts","../../src/common/util/dom-util.ts","../../src/common/util/position-util.ts","../../src/component/dropdown/dropdown-head.directive.ts","../../src/component/dropdown/dropdown-content.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/service/picker-touch.service.ts","../../src/component/date-picker/year-select/year-select.component.ts","../../src/component/date-picker/year-select/year-select.component.html","../../src/pipe/prepend-zero/prepend-zero.pipe.ts","../../src/component/date-picker/month-select/month-select.component.ts","../../src/component/date-picker/month-select/month-select.component.html","../../src/component/date-picker/day-select/day-select.component.ts","../../src/component/date-picker/day-select/day-select.component.html","../../src/component/date-picker/time-part-control/time-part-control.component.ts","../../src/component/date-picker/time-part-control/time-part-control.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/month-picker/month-picker.component.ts","../../src/component/date-picker/month-picker/month-picker.component.html","../../src/component/dropdown/dropdown.directive.ts","../../src/component/dropdown/dropdown.module.ts","../../src/directive/click-outside/click-outside.directive.ts","../../src/directive/click-outside/click-outside.module.ts","../../src/pipe/prepend-zero/prepend-zero.module.ts","../../src/directive/only-number/only-number.directive.ts","../../src/directive/only-number/only-number.module.ts","../../src/component/date-picker/date-picker.module.ts","../../src/component/date-picker/model/date-period.ts","../../src/component/delimiter/delimiter/delimiter.component.ts","../../src/component/delimiter/delimiter/delimiter.component.html","../../src/component/delimiter/delimiter.module.ts","../../src/common/util/array-util.ts","../../src/component/dynamic-component/popup-content/popup-content.component.ts","../../src/component/dynamic-component/popup-content/popup-content.component.html","../../src/component/dynamic-component/dynamic-component.module.ts","../../src/component/expand-panel/expand-panel-content.directive.ts","../../src/component/expand-panel/expand-panel-head.directive.ts","../../src/component/toolbar/toolbar/toolbar.component.ts","../../src/component/toolbar/toolbar/toolbar.component.html","../../src/component/expand-panel/expand-panel/expand-panel.component.ts","../../src/component/expand-panel/expand-panel/expand-panel.component.html","../../src/component/toolbar/toolbar.module.ts","../../src/component/expand-panel/expand-panel.module.ts","../../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/file-upload/file-upload.module.ts","../../src/component/filter/filter-panel/filter-panel.component.ts","../../src/component/filter/filter-panel/filter-panel.component.html","../../src/component/filter/base/filter-base.ts","../../src/component/filter/contarct/numeric-filter.ts","../../src/component/filter/base/filter-component-base.ts","../../src/component/filter/contarct/numeric-filter-value.ts","../../src/component/input/input/input.component.ts","../../src/component/input/input/input.component.html","../../src/component/filter/numeric-filter/numeric-filter.component.ts","../../src/component/filter/numeric-filter/numeric-filter.component.html","../../src/component/filter/enum/string-filter-type.enum.ts","../../src/component/filter/contarct/string-filter.ts","../../src/component/filter/string-filter/string-filter.component.ts","../../src/component/filter/string-filter/string-filter.component.html","../../src/component/filter/enum/list-filter-type.enum.ts","../../src/component/filter/contarct/list-filter.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/contarct/date-filter-value.ts","../../src/component/filter/contarct/date-filter.ts","../../src/component/filter/date-filter/date-filter.component.ts","../../src/component/filter/date-filter/date-filter.component.html","../../src/component/filter/enum/filter-type.enum.ts","../../src/component/filter/contarct/boolean-filter.ts","../../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/contarct/filter-component-map.ts","../../src/component/filter/filter-host/filter-host.component.ts","../../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/highlight/highlight.module.ts","../../src/component/input/form-group-title/form-group-title.component.ts","../../src/component/input/form-group-title/form-group-title.component.html","../../src/component/input/input.module.ts","../../src/component/select/select.module.ts","../../src/component/radio/radio.module.ts","../../src/component/filter/filter.module.ts","../../src/component/filter/contarct/filter-item.ts","../../src/component/filter/contarct/sort-param.ts","../../src/component/filter/contarct/filter-state.ts","../../src/component/message/message.service.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/message/message.module.ts","../../src/component/message/model/message.ts","../../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/common/contract/dynamic-data.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/common/contract/teta-content-ref.ts","../../src/common/service/dynamic-component.service.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/pager.module.ts","../../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/panel/panel.module.ts","../../src/component/progress-bar/progress-bar/progress-bar.component.ts","../../src/component/progress-bar/progress-bar/progress-bar.component.html","../../src/component/progress-bar/progress-bar.module.ts","../../src/util/forms-util.ts","../../src/component/toggle/toggle/toggle.component.ts","../../src/component/toggle/toggle/toggle.component.html","../../src/directive/dynamic-content-base.directive.ts","../../src/directive/hint/hint.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/property-grid/default/numeric-item-default/numeric-item-default.component.ts","../../src/component/property-grid/default/numeric-item-default/numeric-item-default.component.html","../../src/component/property-grid/default/date-item-default/date-item-default.component.ts","../../src/component/property-grid/default/date-item-default/date-item-default.component.html","../../src/component/property-grid/default/list-item-default/list-item-default.component.ts","../../src/component/property-grid/default/list-item-default/list-item-default.component.html","../../src/component/property-grid/default/string-item-default/string-item-default.component.ts","../../src/component/property-grid/default/string-item-default/string-item-default.component.html","../../src/pipe/number-pipe/number.pipe.ts","../../src/pipe/number-pipe/number-pipe.module.ts","../../src/component/toggle/toggle.module.ts","../../src/directive/hint/hint.module.ts","../../src/component/property-grid/property-grid.module.ts","../../src/component/sidebar/sidebar-position.enum.ts","../../src/component/sidebar/sidebar/sidebar.component.ts","../../src/component/sidebar/sidebar/sidebar.component.html","../../src/component/sidebar/sidebar.module.ts","../../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/switch/switch.module.ts","../../src/component/table/contract/table-row.ts","../../src/component/table/contract/table-column.ts","../../src/component/table/contract/column-reorder-event.ts","../../src/component/table/util/state-util.ts","../../src/component/table/enum/select-type.enum.ts","../../src/component/table/contract/table-column-store.ts","../../src/component/table/service/table.service.ts","../../src/component/table/base/group-row-component-base.ts","../../src/component/table/default/group-row/group-row.component.ts","../../src/component/table/default/group-row/group-row.component.html","../../src/component/table/enum/edit-type.enum.ts","../../src/component/table/enum/edit-event.enum.ts","../../src/component/table/contract/table-context-menu-config.ts","../../src/component/table/util/table-util.ts","../../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/contract/column-resize-event.ts","../../src/component/table/contract/sort-event.ts","../../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/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/tree/tree.service.ts","../../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/tree/tree-item-toggle/tree-item-toggle.component.ts","../../src/component/tree/tree-item-toggle/tree-item-toggle.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/directive/resize-drag/resize-drag.directive.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/table-head/table-head.component.ts","../../src/component/table/table-head/table-head.component.html","../../src/component/table/enum/aggregation-type.enum.ts","../../src/component/table/selection-cell/selection-cell.component.ts","../../src/component/table/selection-cell/selection-cell.component.html","../../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/table-body/table-body.component.ts","../../src/component/table/table-body/table-body.component.html","../../src/component/table/table/table.component.ts","../../src/component/table/table/table.component.html","../../src/component/tabs/tabs.module.ts","../../src/directive/teta-template/teta-template.module.ts","../../src/component/tree/tree.module.ts","../../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/directive/resize-drag/resize-drag.module.ts","../../src/component/table/table.module.ts","../../src/component/table/base/detail-component-base.ts","../../src/component/theme-switch/theme-switch.service.ts","../../src/component/theme-switch/theme-switch/theme-switch.component.ts","../../src/component/theme-switch/theme-switch/theme-switch.component.html","../../src/component/theme-switch/theme-switch.module.ts","../../src/component/chart-3d/chart3d/chart3d.component.ts","../../src/component/chart-3d/chart3d/chart3d.component.html","../../src/component/chart-3d/chart-3d.module.ts","../../src/component/chart-3d/model/chart-3d-options.ts","../../src/component/public-api.ts","../../src/common/service/click.service.ts","../../src/directive/context-menu/context-menu.directive.ts","../../src/directive/context-menu/context-menu.module.ts","../../src/directive/disable-control/disable-control.directive.ts","../../src/directive/disable-control/disable-control.module.ts","../../src/directive/drag-sort/drag-sort-container.directive.ts","../../src/directive/drag-sort/drag-sort-item.directive.ts","../../src/directive/drag-sort/drag-sort.module.ts","../../src/directive/loader/loader.directive.ts","../../src/directive/loader/loader.module.ts","../../src/component/resize-panel/resize-panel/resize-panel.component.ts","../../src/component/resize-panel/resize-panel/resize-panel.component.html","../../src/component/resize-panel/resize-panel.module.ts","../../src/directive/tooltip/tooltip.directive.ts","../../src/directive/tooltip/tooltip.module.ts","../../src/directive/no-autofill/no-autofill.directive.ts","../../src/directive/no-autofill/no-autofill.module.ts","../../src/common/service/overlay-container.service.ts","../../src/util/string-util.ts","../../src/public-api.ts","../../src/tetacom-ng-components.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n OnInit,\n} 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})\nexport class AccordionComponent implements OnInit {\n @HostBinding('class.accordion') private readonly accordionClassName = true;\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<ng-content></ng-content>\n","import {Directive, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: '[tetaAccordionContent]'\n})\nexport class AccordionContentDirective {\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n HostBinding,\n Inject,\n Input,\n OnInit,\n Optional,\n} from '@angular/core';\nimport { AccordionContentDirective } from '../accordion-content.directive';\nimport { AccordionComponent } from '../accordion/accordion.component';\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})\nexport class AccordionItemComponent implements OnInit {\n @ContentChild(AccordionContentDirective, { static: false })\n content: AccordionContentDirective;\n\n @HostBinding('class.accordion-item_active')\n @Input()\n open: boolean;\n @Input() disabled: boolean;\n\n @HostBinding('class.accordion-item') private readonly accordionItemClass =\n true;\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 ngOnInit() {}\n}\n","<ng-content select=\"teta-accordion-head\"></ng-content>\n<div class=\"accordion-content\" *ngIf=\"open\">\n <ng-container *ngTemplateOutlet=\"content.template\"></ng-container>\n</div>\n","export enum TetaSize {\n XS,\n S,\n M,\n L,\n XL\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n OnInit,\n} from '@angular/core';\nimport { TetaSize } from '../../../common/enum/teta-size.enum';\n\n@Component({\n selector: 'teta-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconComponent implements OnInit {\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 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 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';\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})\nexport class AccordionHeadComponent implements OnInit {\n @HostBinding('class.accordion-head') private readonly accordionHeadClass =\n 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<div *ngIf=\"showToggle\" class=\"accordion-toggle\">\n <teta-icon [name]=\"open ? 'arrowUpKey' : 'arrowDownKey'\"\n [palette]=\"'text'\"></teta-icon>\n</div>\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(@Inject(DOCUMENT) protected _document: any,\n private _rendererFactory: RendererFactory2,\n private _httpBackend: HttpBackend,\n private _http: HttpClient) {\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'})\n .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})\nexport class IconSpriteDirective implements OnInit {\n @Input() tetaIconSprite: string | string[];\n @Input() bypassInterceptors = true;\n\n constructor(private _iconService: IconService) {\n }\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 {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {IconComponent} from './icon/icon.component';\nimport {IconSpriteDirective} from './icon-sprite.directive';\nimport {HttpClientModule} from '@angular/common/http';\n\n\n@NgModule({\n declarations: [\n IconComponent,\n IconSpriteDirective\n ],\n exports: [\n IconComponent,\n IconSpriteDirective\n ],\n imports: [\n CommonModule,\n HttpClientModule\n ]\n})\nexport class IconModule {\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {AccordionComponent} from './accordion/accordion.component';\nimport {AccordionHeadComponent} from './accordion-head/accordion-head.component';\nimport {AccordionContentDirective} from './accordion-content.directive';\nimport {IconModule} from '../icon/icon.module';\nimport {AccordionItemComponent} from './accordion-item/accordion-item.component';\n\n@NgModule({\n declarations: [AccordionComponent, AccordionHeadComponent, AccordionContentDirective, AccordionItemComponent],\n exports: [AccordionComponent, AccordionHeadComponent, AccordionContentDirective, AccordionItemComponent],\n imports: [\n CommonModule,\n IconModule\n ]\n})\nexport class AccordionModule {\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n OnInit,\n} from '@angular/core';\n\nexport type ButtonViewType = 'primary' | 'outline' | 'ghost';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[teta-button], teta-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonComponent implements OnInit {\n @Input() palette: string;\n @Input() class;\n @Input() view: ButtonViewType = 'primary';\n @Input() square = false;\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 return result.join(' ');\n }\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<ng-content></ng-content>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ButtonComponent} from './button/button.component';\n\n\n@NgModule({\n declarations: [ButtonComponent],\n imports: [\n CommonModule\n ],\n exports: [\n ButtonComponent\n ]\n})\nexport class ButtonModule {\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';\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})\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\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","<div class=\"checkbox__tick\">\n <teta-icon [name]=\"checked ? 'tick' : checked === false ? '' : 'minus'\"></teta-icon>\n</div>\n<span class=\"font-body-3 margin-left-1\" *ngIf=\"!noLabel\">\n <ng-content></ng-content>\n</span>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {CheckboxComponent} from './checkbox/checkbox.component';\nimport {IconModule} from '../icon/icon.module';\n\n@NgModule({\n declarations: [CheckboxComponent],\n imports: [\n CommonModule,\n IconModule\n ],\n exports: [\n CheckboxComponent\n ]\n})\nexport class CheckboxModule {\n}\n","export enum DatePickerMode {\n date,\n month,\n year\n}\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 =\n '\\\\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) =>\n ('0'.repeat(length) + input).slice(-length);\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)}.\n ${prependZero(month, 2)}.\n ${dat.getFullYear()}\n ${prependZero(dat.getHours(), 2)}:\n ${prependZero(dat.getMinutes(), 2)}:\n ${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(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n ).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(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n ).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 =\n /^\\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(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n 0,\n 0,\n 0\n );\n return res;\n }\n\n public static truncateToHour(date: Date): Date {\n const res = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n 0,\n 0\n );\n return res;\n }\n\n public static toISOString(date: number): string {\n return (\n new Date(date - new Date().getTimezoneOffset() * 60000)\n .toISOString()\n .slice(0, -5) + 'Z'\n );\n }\n\n public static isValidDate(date: any): boolean {\n return date instanceof Date && !isNaN(date.getTime());\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 =\n /^\\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","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 { DatePeriod } from '../model/date-period';\nimport { DayModel } from '../model/day-model';\n\nexport class DatePickerUtil {\n static getFirstDay(\n month: number,\n year: number,\n firstDayOfWeek: number\n ): Date {\n const lastDay = new Date(year, month, 0);\n const lastDayIndex =\n lastDay.getDay() >= firstDayOfWeek\n ? lastDay.getDay() - firstDayOfWeek\n : lastDay.getDay() + 7 - firstDayOfWeek;\n return new Date(year, month - 1, lastDay.getDate() - lastDayIndex);\n }\n\n static getPickerDays(\n date: Date,\n firstDayOfWeek: number,\n minDate: Date,\n maxDate: Date,\n disabledDates: Date[],\n disabledDays: number[],\n disabledPeriods: DatePeriod[]\n ): DayModel[] {\n const days = [];\n const firstDay = DatePickerUtil.getFirstDay(\n date.getMonth(),\n date.getFullYear(),\n firstDayOfWeek\n );\n for (let i = 0; i < 6 * 7; i++) {\n const dat = new Date(firstDay);\n dat.setDate(dat.getDate() + i);\n days.push(\n new DayModel({\n date: dat,\n disabled: DatePickerUtil.isDateInvalid(\n dat,\n minDate,\n maxDate,\n disabledDates,\n disabledDays,\n disabledPeriods\n ),\n today: DatePickerUtil.isToday(dat),\n isCurrentMonth: dat.getMonth() === date.getMonth(),\n selected:\n dat.getFullYear() === date.getFullYear() &&\n dat.getMonth() === date.getMonth() &&\n dat.getDate() === date.getDate(),\n weekend: dat.getDay() === 0 || dat.getDay() === 6,\n })\n );\n }\n return days;\n }\n\n static isDateInvalid(\n dat: Date,\n minDate: Date,\n maxDate: Date,\n disabledDates: Date[],\n disabledDays: number[],\n disabledPeriods: DatePeriod[]\n ): boolean {\n return (\n DatePickerUtil.isDayDisabled(dat, disabledDays) ||\n DatePickerUtil.isDateDisabled(dat, disabledDates) ||\n DatePickerUtil.isDateInDisabledPeriod(dat, disabledPeriods) ||\n DatePickerUtil.isMaxInvalid(dat, maxDate) ||\n DatePickerUtil.isMinInvalid(dat, minDate)\n );\n }\n\n static isDayDisabled(dat: Date, disabledDays: number[]): boolean {\n if (\n dat === null ||\n dat === undefined ||\n disabledDays === null ||\n disabledDays === undefined ||\n disabledDays.length < 1\n ) {\n return false;\n }\n return disabledDays.indexOf(dat.getDay()) >= 0;\n }\n\n static isMinInvalid(dat: Date, minDate: Date): boolean {\n if (\n dat === null ||\n dat === undefined ||\n minDate === null ||\n minDate === undefined\n ) {\n return false;\n }\n return minDate.getTime() > dat.getTime();\n }\n\n static isMaxInvalid(dat: Date, maxDate: Date): boolean {\n if (\n dat === null ||\n dat === undefined ||\n maxDate === null ||\n maxDate === undefined\n ) {\n return false;\n }\n return maxDate.getTime() < dat.getTime();\n }\n\n static isDateInDisabledPeriod(\n dat: Date,\n disabledPeriods: DatePeriod[]\n ): boolean {\n if (\n dat === null ||\n dat === undefined ||\n disabledPeriods === null ||\n disabledPeriods === undefined ||\n disabledPeriods.length < 1\n ) {\n return false;\n }\n return disabledPeriods.some(\n (d: DatePeriod) =>\n d !== null &&\n d !== undefined &&\n d.start !== null &&\n d.start !== undefined &&\n d.end !== null &&\n d.end !== undefined &&\n d.start.getTime() <= dat.getTime() &&\n d.end.getTime() >= dat.getTime()\n );\n }\n\n static isDateDisabled(dat: Date, disabledDates: Date[]): boolean {\n if (\n disabledDates === null ||\n disabledDates === undefined ||\n disabledDates.length < 1 ||\n dat === null ||\n dat === undefined\n ) {\n return false;\n }\n return disabledDates.some(\n (d: Date) =>\n d !== null &&\n d !== undefined &&\n d.getFullYear() === dat.getFullYear() &&\n d.getMonth() === dat.getMonth() &&\n d.getDate() === dat.getDate()\n );\n }\n\n static isToday(dat: Date): boolean {\n if (dat === null || dat === undefined) {\n return false;\n }\n const today = new Date();\n return (\n dat.getFullYear() === today.getFullYear() &&\n dat.getMonth() === today.getMonth() &&\n dat.getDate() === today.getDate()\n );\n }\n\n static scrollMonth(delta: number, date: Date) {\n const res = new Date(date);\n let month = date.getMonth();\n let year = date.getFullYear();\n if (delta > 0) {\n if (month === 11) {\n month = 0;\n year++;\n } else {\n month++;\n }\n } else {\n if (month === 0) {\n month = 11;\n year--;\n } else {\n month--;\n }\n }\n res.setFullYear(year, month);\n return res;\n }\n\n static scrollYear(delta: number, date: Date) {\n const res = new Date(date);\n let year = date.getFullYear();\n if (delta > 0) {\n year++;\n } else {\n year--;\n }\n res.setFullYear(year);\n return res;\n }\n\n // static isSelected(date: Date, selectedDate: Date): boolean {\n // if (date === null || date === undefined || selectedDate === null || selectedDate === undefined) {\n // return false;\n // }\n // return date.getFullYear() === selectedDate.getFullYear()\n // && date.getMonth() === selectedDate.getMonth()\n // && date.getDate() === selectedDate.getDate();\n // }\n\n // static nextMonth(date: Date): Date {\n // const dt = new Date(date);\n // dt.setMonth(dt.getMonth() + 1);\n // return dt;\n // }\n\n // static prevMonth(date: Date): Date {\n // const dt = new Date(date);\n // dt.setMonth(dt.getMonth() - 1);\n // return dt;\n // }\n}\n","export enum Align {\n left,\n right,\n center,\n auto,\n fitWidth,\n minWidth,\n}\n","export enum VerticalAlign {\n top,\n bottom,\n center,\n auto\n}\n","export class PickerLocaleModel {\n dayNames: string[];\n dayNamesShort: string[];\n dayNamesMin: string[];\n monthNames: string[];\n monthNamesShort: string[];\n today: string;\n\n public constructor(options?: {\n dayNames: string[];\n dayNamesShort: string[];\n dayNamesMin: string[];\n monthNames: string[];\n monthNamesShort: string[];\n today: string;\n }) {\n if (options) {\n this.dayNames = options.dayNames;\n this.dayNamesShort = options.dayNamesShort;\n this.dayNamesMin = options.dayNamesMin;\n this.monthNames = options.monthNames;\n this.monthNamesShort = options.monthNamesShort;\n this.today = options.today;\n }\n }\n}\n","import {Injectable} from '@angular/core';\nimport {PickerLocaleModel} from '../model/picker-locale-model';\nimport {BehaviorSubject} from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PickerLocaleService {\n private _defaults = new PickerLocaleModel({\n dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n monthNames: ['January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December'],\n monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n today: 'Today'\n });\n\n public locale: BehaviorSubject<PickerLocaleModel> = new BehaviorSubject<PickerLocaleModel>(this._defaults);\n\n public setLocale(locale: PickerLocaleModel) {\n this.locale.next(locale);\n }\n\n constructor() {\n }\n}\n","export class DomUtil {\n public static clickedInside(target: HTMLElement, event: MouseEvent): boolean {\n return 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","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: number = 0,\n verticalMargin: number = 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.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 =\n (containerPosition.left + containerPosition.right) / 2 -\n elementWidth / 2;\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 +\n (elementPosition.bottom - elementPosition.top) <=\n window.innerHeight\n ) {\n verticalAlign = VerticalAlign.bottom;\n } else {\n verticalAlign = VerticalAlign.top;\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.center) {\n rect.top =\n (containerPosition.top + containerPosition.bottom) / 2 -\n elementHeight / 2;\n }\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 (verticalAlign === VerticalAlign.bottom || verticalAlign === VerticalAlign.center) {\n rect.maxHeight = window.innerHeight - rect.top;\n }\n if (verticalAlign === VerticalAlign.top) {\n rect.maxHeight = containerPosition.top;\n }\n rect.left = rect.left - transformedParentRect.left;\n rect.right = rect.right - transformedParentRect.left;\n rect.top = rect.top - transformedParentRect.top;\n rect.bottom = rect.bottom ? rect.bottom - transformedParentRect.bottom : rect.bottom;\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 =\n 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 {Directive, Optional, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: '[tetaDropdownHead]'\n})\nexport class DropdownHeadDirective {\n constructor(@Optional() public template: TemplateRef<any>) {\n }\n}\n","import {Directive, ElementRef} from '@angular/core';\n\n@Directive({\n selector: '[tetaDropdownContent]'\n})\nexport class DropdownContentDirective {\n nativeElement: HTMLElement;\n\n constructor(private _elementRef: ElementRef<HTMLElement>) {\n this.nativeElement = _elementRef.nativeElement;\n }\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 {DomUtil} from '../../common/util/dom-util';\nimport {PositionUtil} from '../../common/util/position-util';\nimport {Align} from '../../common/enum/align.enum';\nimport {VerticalAlign} from '../../common/enum/vertical-align.enum';\nimport {DropdownHeadDirective} from './dropdown-head.directive';\nimport {DropdownContentDirective} from './dropdown-content.directive';\nimport {AutoCloseIgnoreCase} from '../../common/contract/auto-close-ignore-case';\nimport {IRect} from '../../common/contract/i-rect';\nimport {takeWhile, throttleTime} from 'rxjs/operators';\n\n@Directive()\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class DropdownBase {\n @Input() align: Align = Align.left;\n @Input() verticalAlign: VerticalAlign = VerticalAlign.bottom;\n @Input() appendToBody: boolean;\n @Input() disabled: boolean;\n @Input() shadow = true;\n @Input() className: string | string[];\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\n ? this._document.body\n : 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 _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 }\n\n @HostListener('click', ['$event']) click(event: MouseEvent): void {\n if (this.open) {\n if (!DomUtil.clickedInside(this._body, event)) {\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(\n event: MouseEvent\n ): void {\n if (\n !this.open ||\n !this.autoClose ||\n event.detail === 0 ||\n DomUtil.clickedInside(this._head.nativeElement, event) ||\n DomUtil.clickedInside(this._body, event)\n ) {\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 if (\n !this.open ||\n !this.autoClose ||\n ['esc', 'enter'].every(\n (_: 'esc' | 'enter') => this.autoCloseIgnore.indexOf(_) >= 0\n )\n ) {\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 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 this.openChange.emit(this.open);\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 =\n this._body || renderer.createElement('div'));\n renderer.addClass(container, 'dropdown');\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\n renderer.appendChild(container, content);\n renderer.appendChild(this.container, container);\n\n this.setPosition(this._head.nativeElement, this._body);\n }\n\n private setPosition(container: HTMLElement, target: HTMLElement): void {\n const containerPosition = container.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(\n rect,\n targetRect,\n this.align,\n this.verticalAlign,\n 0,\n 0,\n parentPosition\n );\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})\nexport class DropdownComponent\n extends DropdownBase\n implements OnInit, OnDestroy\n{\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._alive = false;\n }\n}\n","<ng-content select=\"[tetaDropdownHead]\"></ng-content>\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { bufferCount, tap, throttleTime } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PickerTouchService {\n step: Observable<number>;\n\n private touchMove: Observable<TouchEvent>;\n private touchMove$: Subject<TouchEvent> = new Subject<TouchEvent>();\n private step$: Subject<number> = new Subject<number>();\n\n constructor() {\n this.touchMove = this.touchMove$.asObservable();\n this.step = this.step$.asObservable();\n\n this.touchMove\n .pipe(\n throttleTime(25),\n bufferCount(2),\n tap((touches: [TouchEvent, TouchEvent]) => {\n const [start, end] = touches.map((_) => _.changedTouches?.item(0));\n const deltaY = start?.clientY - end?.clientY;\n if (deltaY !== 0) {\n const step = deltaY > 0 ? 1 : -1;\n this.step$.next(step);\n }\n })\n )\n .subscribe();\n }\n\n onTouchMove(event: TouchEvent) {\n this.touchMove$.next(event);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { takeWhile, tap } from 'rxjs/operators';\nimport { PickerTouchService } from '../service/picker-touch.service';\n\n@Component({\n selector: 'teta-year-select',\n templateUrl: './year-select.component.html',\n styleUrls: ['./year-select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YearSelectComponent implements OnInit, OnDestroy, AfterViewInit {\n @Input() currentYear: number;\n @Input() today: Date;\n @Input() size = 8;\n @Input() minDate: Date;\n @Input() maxDate: Date;\n @Input() allowableRange: number[] = [1900, 2100];\n @Output() yearSelected = new EventEmitter<number>();\n @Output() yearApplied = new EventEmitter<number>();\n\n minYearDate: Date;\n maxYearDate: Date;\n years: number[];\n minYearList: number[];\n maxYearList: number[];\n decreaseInterval: number;\n increaseInterval: number;\n private _alive = true;\n\n constructor(\n private _cdr: ChangeDetectorRef,\n private _pickerTouchService: PickerTouchService,\n private _elementRef: ElementRef\n ) {}\n\n ngOnInit() {\n const [minRange, maxRange] = this.allowableRange;\n this.minYearDate = new Date(minRange, 0, 1);\n this.maxYearDate = new Date(maxRange, 11, 31);\n this.initMinYearList();\n this.initMaxYearList();\n this.initYearSelector(this.currentYear);\n }\n\n ngAfterViewInit() {\n const touchMove$ = fromEvent(\n this._elementRef.nativeElement.parentElement,\n 'touchmove'\n );\n\n touchMove$\n .pipe(\n takeWhile((_) => this._alive),\n tap((e: TouchEvent) => {\n this._pickerTouchService.onTouchMove(e);\n })\n )\n .subscribe();\n\n this._pickerTouchService.step\n .pipe(\n takeWhile((_) => this._alive),\n tap((_) => {\n this.shiftYearSelector(_);\n this._cdr.detectChanges();\n })\n )\n .subscribe();\n }\n\n ngOnDestroy() {\n window.clearInterval(this.decreaseInterval);\n window.clearInterval(this.increaseInterval);\n this._alive = false;\n }\n\n scrollYearSelector = (e: WheelEvent) => {\n e.preventDefault();\n e.stopPropagation();\n const step = e.deltaY > 0 ? 1 : -1;\n this.shiftYearSelector(step);\n };\n\n setYear = (e: any, year: number) => {\n e.preventDefault();\n e.stopPropagation();\n if (!this.isYearDisabled(year)) {\n this.yearSelected.emit(year);\n }\n };\n\n applyYear = (e: any, year: number) => {\n e.preventDefault();\n e.stopPropagation();\n if (!this.isYearDisabled(year)) {\n this.yearApplied.emit(year);\n }\n };\n\n initYearSelector = (year: number) => {\n if (!year) {\n year = this.today.getFullYear();\n }\n this.years = [year];\n let direction = false;\n for (let i = 1; i < this.size; i++) {\n if (direction) {\n this.years.unshift(this.years[0] - 1);\n } else {\n this.years.push(this.years[this.years.length - 1] + 1);\n }\n direction = !direction;\n }\n this.checkRanges();\n };\n\n initMinYearList = () => {\n this.minYearList = [this.minYearDate.getFullYear()];\n for (let i = 1; i < this.size; i++) {\n this.minYearList.push(this.minYearList[this.minYearList.length - 1] + 1);\n }\n };\n\n initMaxYearList = () => {\n this.maxYearList = [this.maxYearDate.getFullYear()];\n for (let i = 1; i < this.size; i++) {\n this.maxYearList.unshift(this.maxYearList[0] - 1);\n }\n };\n\n checkRanges = () => {\n if (\n this.years.some((year) => {\n const dat = new Date(year, 0, 1);\n return this.isMinYear(dat);\n })\n ) {\n this.years = this.minYearList;\n }\n if (\n this.years.some((year) => {\n const dat = new Date(year, 0, 1);\n return this.isMaxYear(dat);\n })\n ) {\n this.years = this.maxYearList;\n }\n };\n\n shiftYearSelector = (step: number = 0) => {\n this.years = this.years.map((year) => year + step);\n this.checkRanges();\n };\n\n decreaseYearSelector = (step: number = 3) => {\n const dat = new Date(this.years[0] - step, 0, 1);\n if (this.isMinYear(dat)) {\n this.years = this.minYearList;\n return;\n }\n\n this.years = this.years.map((year) => year - step);\n };\n\n increaseYearSelector = (step: number = 3) => {\n const dat = new Date(this.years[this.years.length - 1] + step, 0, 1);\n if (this.isMaxYear(dat)) {\n this.years = this.maxYearList;\n return;\n }\n this.years = this.years.map((year) => year + step);\n };\n\n // stopLongDecrease = () => {\n // window.clearInterval(this.decreaseInterval);\n // };\n //\n // stopLongIncrease = () => {\n // window.clearInterval(this.increaseInterval);\n // };\n\n isMinYear = (dat: Date): boolean => {\n if (!this.minYearDate || !(this.minYearDate instanceof Date) || !dat) {\n return false;\n }\n return this.minYearDate.getFullYear() > dat.getFullYear();\n };\n\n isMaxYear = (dat: Date): boolean => {\n if (!this.maxYearDate || !(this.maxYearDate instanceof Date) || !dat) {\n return false;\n }\n return this.maxYearDate.getFullYear() < dat.getFullYear();\n };\n\n isYearDisabled = (year: number) => {\n if (year) {\n const dat = new Date(year, 0, 1);\n return this.isMaxInvalid(dat) || this.isMinInvalid(dat);\n }\n return false;\n };\n\n isMinInvalid = (dat: Date): boolean => {\n if (!this.minDate || !(this.minDate instanceof Date) || !dat) {\n return false;\n }\n return this.minDate.getFullYear() > dat.getFullYear();\n };\n\n isMaxInvalid = (dat: Date): boolean => {\n if (!this.maxDate || !(this.maxDate instanceof Date) || !dat) {\n return false;\n }\n return this.maxDate.getFullYear() < dat.getFullYear();\n };\n}\n","<div class=\"list row_auto margin-top-2\"\n (wheel)=\"scrollYearSelector($event);\">\n <div class=\"list-item list-item_interactive\"\n [class.list-item_active]=\"year === currentYear\"\n [class.list-item_disabled]=\"isYearDisabled(year)\"\n (click)=\"setYear($event, year)\"\n (dblclick)=\"applyYear($event, year)\"\n *ngFor=\"let year of years\">\n {{year}}\n </div>\n</div>\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {prependZero} from '../util/number-helper';\n\n@Pipe({\n name: 'tetaPrependZero'\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 {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { PickerLocaleModel } from '../model/picker-locale-model';\nimport { fromEvent, merge } from 'rxjs';\nimport { takeWhile, tap } from 'rxjs/operators';\nimport { PickerTouchService } from '../service/picker-touch.service';\n\n@Component({\n selector: 'teta-month-select',\n templateUrl: './month-select.component.html',\n styleUrls: ['./month-select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MonthSelectComponent implements OnInit, AfterViewInit, OnDestroy {\n @Input() locale: PickerLocaleModel;\n @Input() minDate: Date;\n @Input() maxDate: Date;\n @Input() size = 8;\n @Output() monthSelected = new EventEmitter<number>();\n @Output() monthApplied = new EventEmitter<number>();\n\n _currentMonth: number;\n\n @Input()\n set currentMonth(val: number) {\n this._currentMonth = val;\n this.makeMonths();\n }\n\n get currentMonth(): number {\n return this._currentMonth;\n }\n\n _currentYear: number;\n\n @Input()\n set currentYear(val: number) {\n this._currentYear = val;\n }\n\n get currentYear(): number {\n return this._currentYear;\n }\n\n today: Date;\n months: number[] = [];\n shift = 0;\n\n private _alive = true;\n\n private get _displayDate(): Date {\n let month = 0;\n let year = 0;\n if (\n this.currentMonth !== null &&\n this.currentMonth !== undefined &&\n this.currentMonth >= 0 &&\n this.currentMonth <= 11\n ) {\n month = this.currentMonth;\n }\n if (this.currentYear !== null && this.currentYear !== undefined) {\n year = this.currentYear;\n }\n return new Date(year, month, 1);\n }\n\n constructor(\n private _elementRef: ElementRef,\n private _cdr: ChangeDetectorRef,\n private _pickerTouchService: PickerTouchService\n ) {\n this.today = new Date();\n this.today.setHours(0, 0, 0, 0);\n }\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this._alive = false;\n }\n\n ngAfterViewInit() {\n const touchMove$ = fromEvent(\n this._elementRef.nativeElement.parentElement,\n 'touchmove'\n );\n\n touchMove$\n .pipe(\n takeWhile((_) => this._alive),\n tap((e: TouchEvent) => {\n if (e.type === 'touchmove') {\n this._pickerTouchService.onTouchMove(e);\n }\n })\n )\n .subscribe();\n\n this._pickerTouchService.step\n .pipe(\n takeWhile((_) => this._alive),\n tap((_) => {\n this.shiftMonthSelector(_);\n this._cdr.detectChanges();\n })\n )\n .subscribe();\n }\n\n scrollMonthSelector = (e: WheelEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n const step = e.deltaY > 0 ? 1 : -1;\n this.shiftMonthSelector(step);\n };\n\n shiftMonthSelector = (step: number = 0) => {\n this.shift += step;\n this.makeMonths();\n };\n\n setMonth = (e: any, month: number) => {\n e.preventDefault();\n e.stopPropagation();\n if (!this.isMonthDisabled(month)) {\n this.shift = 0;\n this.monthSelected.emit(month);\n }\n };\n\n applyMonth = (e: any, month: number) => {\n e.preventDefault();\n e.stopPropagation();\n if (!this.isMonthDisabled(month)) {\n this.monthApplied.emit(month);\n }\n };\n\n isMonthDisabled = (month: number) => {\n if (!month && !this.currentYear) {\n const dat = new Date(this.currentYear, month, 1);\n return this.isMaxInvalid(dat) || this.isMinInvalid(dat);\n }\n return false;\n };\n\n isMinInvalid = (dat: Date): boolean => {\n if (!this.minDate || !(this.minDate instanceof Date) || !dat) {\n return false;\n }\n const min = new Date(\n this.minDate.getFullYear(),\n this.minDate.getMonth(),\n 1\n );\n return min.getTime() > dat.getTime();\n };\n\n isMaxInvalid = (dat: Date): boolean => {\n if (!this.maxDate || !(this.maxDate instanceof Date) || !dat) {\n return false;\n }\n const max = new Date(\n this.maxDate.getFullYear(),\n this.maxDate.getMonth(),\n 1\n );\n return max.getTime() < dat.getTime();\n };\n\n private makeMonths() {\n const start = this._displayDate;\n this.months = [];\n start.setMonth(start.getMonth() - 3);\n for (let i = this.shift; i < this.size + this.shift; i++) {\n const dt = new Date(start.getFullYear(), start.getMonth() + i, 1);\n this.months.push(dt.getMonth());\n }\n }\n}\n","<div class=\"list row_auto margin-top-2\"\n (wheel)=\"scrollMonthSelector($event);\">\n <div *ngFor=\"let month of months\"\n class=\"list-item list-item_interactive\"\n [class.list-item_active]=\"month === _currentMonth\"\n [class.list-item_disabled]=\"isMonthDisabled(month)\"\n [class.datepicker__month__item_current]=\"month === today?.getMonth() && currentYear === today?.getFullYear()\"\n (click)=\"setMonth($event, month)\"\n (dblclick)=\"applyMonth($event, month)\">\n <span class=\"color-text-20 margin-right-2\">\n {{month + 1 | tetaPrependZero: 2}}\n </span>\n {{locale.monthNames[month]}}\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { DayModel } from '../model/day-model';\nimport { DatePeriod } from '../model/date-period';\nimport { PickerLocaleService } from '../service/picker-locale.service';\nimport { takeWhile, tap, withLatestFrom } from 'rxjs/operators';\nimport { PickerLocaleModel } from '../model/picker-locale-model';\nimport { DatePickerUtil } from '../util/date-picker-util';\nimport { fromEvent } from 'rxjs';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DateUtil } from '../../../util/date-util';\n\nexport const DAY_SELECT_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DaySelectComponent),\n multi: true,\n};\n\n@Component({\n selector: 'teta-day-select',\n templateUrl: './day-select.component.html',\n styleUrls: ['./day-select.component.scss'],\n providers: [DAY_SELECT_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DaySelectComponent\n implements OnInit, OnDestroy, ControlValueAccessor\n{\n @Input() firstDayOfWeek = 1;\n @Input() disabledDates: Date[];\n @Input() disabledPeriods: DatePeriod[];\n @Input() disabledDays: number[];\n @Input() minDate: Date;\n @Input() maxDate: Date;\n @Input() disabled: boolean;\n\n @Output() dateSelected = new EventEmitter<Date>();\n @Output() monthSelected = new EventEmitter<number>();\n @Output() yearSelected = new EventEmitter<number>();\n\n locale: PickerLocaleModel;\n\n value: Date;\n\n _currentValue: Date;\n\n set currentValue(val: Date) {\n if (\n !this._currentValue ||\n DateUtil.truncateToDay(val)?.getTime() !==\n DateUtil.truncateToDay(this._currentValue)?.getTime()\n ) {\n this._currentValue = val;\n this.createDays();\n this.checkDays();\n } else {\n this._currentValue = val;\n }\n this._cdr.markForCheck();\n }\n\n get currentValue(): Date {\n return this._currentValue;\n }\n\n days: Array<DayModel>;\n weekDays: number[] = [];\n\n private _alive = true;\n\n constructor(\n public localeService: PickerLocaleService,\n private _cdr: ChangeDetectorRef,\n private _elementRef: ElementRef\n ) {\n localeService.locale\n .pipe(takeWhile((_) => this._alive))\n .subscribe((locale: PickerLocaleModel) => {\n this.locale = locale;\n });\n }\n\n ngOnInit() {\n this.weekDays = this.createWeekDays();\n\n const touchStart$ = fromEvent(this._elementRef.nativeElement, 'touchstart');\n const touchEnd$ = fromEvent(this._elementRef.nativeElement, 'touchend');\n\n touchEnd$\n .pipe(\n takeWhile((_) => this._alive),\n withLatestFrom(touchStart$),\n tap((touches: [TouchEvent, TouchEvent]) => {\n const [start, end] = touches.map((_) => _.changedTouches?.item(0));\n const deltaY = end?.clientY - start?.clientY;\n if (deltaY !== 0) {\n this.scrollMonth(deltaY);\n }\n })\n )\n .subscribe();\n }\n\n ngOnDestroy() {\n this._alive = false;\n }\n\n writeValue(model: Date) {\n this.value = model;\n this.currentValue = model ? model : new Date();\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 applyValue(day: DayModel, event: MouseEvent) {\n this.preventEvent(event);\n if (day === null || day === undefined || day.disabled) {\n return;\n }\n this.value = day.date;\n this.currentValue = day.date;\n this.onChange(day.date);\n }\n\n setDate(day: DayModel, event: MouseEvent) {\n if (day === null || day === undefined || day.disabled) {\n return;\n }\n if (\n day.date !== null &&\n day.date !== undefined &&\n day.date instanceof Date\n ) {\n this.currentValue = day.date;\n this.dateSelected.emit(day.date);\n }\n }\n\n scrollMonth(event: WheelEvent | number) {\n const deltaY = event instanceof WheelEvent ? event.deltaY : event;\n\n if (event instanceof WheelEvent) {\n this.preventEvent(event);\n }\n this.currentValue = DatePickerUtil.scrollMonth(deltaY, this.currentValue);\n this.monthSelected.emit(this.currentValue.getMonth());\n this.yearSelected.emit(this.currentValue.getFullYear());\n this._cdr.detectChanges();\n }\n\n private createWeekDays(): number[] {\n const result = [];\n let dayIndex = this.firstDayOfWeek;\n for (let i = 0; i < 7; i++) {\n result.push(dayIndex);\n dayIndex = dayIndex === 6 ? 0 : ++dayIndex;\n }\n return result;\n }\n\n private createDays() {\n this.days = DatePickerUtil.getPickerDays(\n this.currentValue,\n this.firstDayOfWeek,\n this.minDate,\n this.maxDate,\n this.disabledDates,\n this.disabledDays,\n this.disabledPeriods\n );\n }\n\n private checkDays() {\n if (this.days) {\n this.days = this.days.map((dat: DayModel) => ({\n ...dat,\n selected:\n dat.date.getFullYear() === this.currentValue.getFullYear() &&\n dat.date.getMonth() === this.currentValue.getMonth() &&\n dat.date.getDate() === this.currentValue.getDate(),\n }));\n }\n }\n\n private preventEvent(event: any) {\n event.stopPropagation();\n event.preventDefault();\n return false;\n }\n}\n","<div class=\"datepicker-week font-caption color-text-80\">\n <div class=\"datepicker-day\"\n [class.font-caption-bold]=\"day === 0 || day === 6\"\n *ngFor=\"let day of weekDays\">\n {{locale.dayNamesMin[day]}}\n </div>\n</div>\n<div class=\"datepicker-picker color-text-90 font-body-3\"\n (wheel)=\"scrollMonth($event)\"\n>\n <div *ngFor=\"let day of days\"\n class=\"datepicker-date\"\n (click)=\"setDate(day, $event);\"\n (dblclick)=\"applyValue(day, $event);\"\n [class.datepicker-date_active]=\"day.selected\"\n [class.datepicker-date_disabled]=\"day.disabled || !day.isCurrentMonth\"\n [class.datepicker-date_weekend]=\"day.weekend\"\n [class.datepicker-date_today]=\"day.today\">\n <ng-container *ngIf=\"day !== null && day !== undefined\">\n {{day.date.getDate()}}\n </ng-container>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n Input,\n OnInit,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport const TIME_PART_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimePartControlComponent),\n multi: true,\n};\n\n@Component({\n selector: 'teta-time-part-control',\n templateUrl: './time-part-control.component.html',\n styleUrls: ['./time-part-control.component.scss'],\n providers: [TIME_PART_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimePartControlComponent implements OnInit, ControlValueAccessor {\n @Input() min = 0;\n @Input() max = 59;\n @Input() disabled: boolean;\n\n private _value: number;\n\n set value(value: number) {\n this._value = value;\n this.onChange(this._value);\n }\n\n get value() {\n return this._value;\n }\n\n constructor(private _cdr: ChangeDetectorRef) {}\n\n up() {\n this.value = this.value < this.max ? this.value + 1 : this.min;\n }\n\n down() {\n this.value = this.value > this.min ? this.value - 1 : this.max;\n }\n\n scroll = (e: any) => {\n const delta = e?.deltaY ?? e;\n\n if (e instanceof WheelEvent) {\n e.preventDefault();\n }\n if (delta > 0) {\n this.down();\n } else {\n this.up();\n }\n };\n\n ngOnInit() {}\n\n writeValue(model: number) {\n this._value = 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","<button teta-button [square]=\"true\" (click)=\"up()\" [palette]=\"'text'\" [view]=\"'ghost'\">\n <teta-icon [name]=\"'arrowUpKey'\"></teta-icon>\n</button>\n<div (wheel)=\"scroll($event);\" class=\"row row_auto font-body-3 height-6 width-6 align-center justify-content-center\">\n {{value | tetaPrependZero: 2}}\n</div>\n<button teta-button [square]=\"true\" (click)=\"down()\" [palette]=\"'text'\" [view]=\"'ghost'\">\n <teta-icon [name]=\"'arrowDownKey'\"></teta-icon>\n</button>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {PickerLocaleService} from '../service/picker-locale.service';\nimport {takeWhile} from 'rxjs/operators';\nimport {DatePeriod} from '../model/date-period';\nimport {PickerLocaleModel} from '../model/picker-locale-model';\nimport {DatePickerMode} from '../model/date-picker-mode.enum';\nimport {DateUtil} from '../../../util/date-util';\nimport {DatePickerUtil} from '../util/date-picker-util';\nimport {Align} from '../../../common/enum/align.enum';\nimport {VerticalAlign} from '../../../common/enum/vertical-align.enum';\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 providers: [DATE_PICKER_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DatePickerComponent\n implements ControlValueAccessor, OnInit, OnDestroy {\n @Input() disabled: boolean;\n @Input() invalid: boolean;\n @Input() firstDayOfWeek = 1;\n @Input() disabledDates: Date[];\n @Input() disabledPeriods: DatePeriod[];\n @Input() disabledDays: number[];\n @Input() minDate: Date;\n @Input() maxDate: Date;\n @Input() minYearDate: Date;\n @Input() maxYearDate: Date;\n @Input() align: Align = Align.left;\n @Input() verticalAlign: VerticalAlign = VerticalAlign.auto;\n @Input() appendToBody: boolean;\n\n @HostBinding('class.datepicker-wide')\n @Input()\n showTime = false;\n\n @Input()\n set format(val: string) {\n this._format = val;\n }\n\n get format(): string {\n if (this._format) {\n return this._format;\n }\n return this.showTime ? 'dd.MM.yyyy HH:mm:ss' : 'dd.MM.yyyy';\n }\n\n @HostBinding('class.datepicker_open') open: boolean;\n @HostBinding('class.datepicker') private readonly classDatepicker = true;\n @HostBinding('tabindex') private readonly tabindex = 0;\n\n locale: PickerLocaleModel;\n today: Date = new Date();\n\n datePickerModeEnum = DatePickerMode;\n displayMode: DatePickerMode = DatePickerMode.date;\n _format: string;\n\n _value: Date | null = null;\n _currentValue: Date;\n\n private _alive = true;\n\n get value(): Date | null {\n return this._value;\n }\n\n set value(v: Date | null) {\n if (v?.getTime() !== this._value?.getTime()) {\n this._value = v;\n this.currentValue = this._value;\n }\n }\n\n get currentValue(): Date {\n return this._currentValue;\n }\n\n set currentValue(date: Date) {\n this._currentValue = date;\n this._cdr.markForCheck();\n }\n\n get internalValue() {\n return this.currentValue ?? this.emptyDate();\n }\n\n constructor(\n public localeService: PickerLocaleService,\n private _cdr: ChangeDetectorRef,\n private _elementRef: ElementRef\n ) {\n localeService.locale\n .pipe(takeWhile((_) => this._alive))\n .subscribe((locale: PickerLocaleModel) => {\n this.locale = locale;\n });\n }\n\n @HostListener('window:keyup', ['$event']) keyUp(event: KeyboardEvent): void {\n if (!this.open) {\n return;\n }\n if (event.code === 'Escape') {\n this.currentValue = this.value;\n this.open = false;\n }\n }\n\n writeValue(value: any) {\n this.value = value;\n this._cdr.markForCheck();\n }\n\n onChange = (_: any) => {\n };\n\n onTouched = () => {\n };\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() {\n }\n\n ngOnDestroy() {\n this._alive = false;\n }\n\n applyValue(date: Date) {\n this.setDate(date);\n this.value = this.currentValue;\n this.onChange(new Date(this.value));\n this.open = false;\n }\n\n setDate = (day: Date) => {\n if (day === null || day === undefined) {\n this.currentValue = null;\n return;\n }\n const dt = this.internalValue;\n dt.setFullYear(day.getFullYear(), day.getMonth(), day.getDate());\n this.currentValue = new Date(dt);\n this._cdr.markForCheck();\n };\n\n setYear = (year: number) => {\n const dt = this.internalValue;\n dt.setFullYear(year);\n this.currentValue = new Date(dt);\n this.setMode(DatePickerMode.date);\n this._cdr.markForCheck();\n };\n\n setMonth = (month: number) => {\n const dt = this.internalValue;\n dt.setMonth(month);\n this.currentValue = new Date(dt);\n this.setMode(DatePickerMode.date);\n this._cdr.markForCheck();\n };\n\n setHour = (hours: number) => {\n const dt = this.internalValue;\n dt.setHours(hours);\n this.currentValue = new Date(dt);\n this._cdr.markForCheck();\n };\n\n setMinute = (minute: number) => {\n const dt = this.internalValue;\n dt.setMinutes(minute);\n this.currentValue = new Date(dt);\n this._cdr.markForCheck();\n };\n\n setSecond = (seconds: number) => {\n const dt = this.internalValue;\n dt.setSeconds(seconds);\n this.currentValue = new Date(dt);\n this._cdr.markForCheck();\n };\n\n setToday = () => {\n this.currentValue = this.emptyDate();\n this._cdr.markForCheck();\n };\n\n clearPicker = (event: MouseEvent): void => {\n this.preventEvent(event);\n this.value = null;\n this.onChange(null);\n };\n\n isDateInDisabledPeriod = (dat: Date): boolean => {\n if (!this.disabledPeriods || this.disabledPeriods.length < 1 || !dat) {\n return false;\n }\n return this.disabledPeriods.some(\n (d: DatePeriod) =>\n d &&\n d.start &&\n d.end &&\n d.start.getTime() <= dat.getTime() &&\n d.end.getTime() >= dat.getTime()\n );\n };\n\n isScrollIgnored = (): boolean =>\n this.displayMode === DatePickerMode.month ||\n this.displayMode === DatePickerMode.year;\n\n scrollMonth = (e: any) => {\n const delta = e?.deltaY ?? e;\n\n if (e instanceof WheelEvent) {\n this.preventEvent(e);\n }\n\n if (this.isScrollIgnored()) {\n return false;\n }\n this.currentValue = DatePickerUtil.scrollMonth(delta, this.internalValue);\n };\n\n scrollYear = (e: any) => {\n this.preventEvent(e);\n if (this.isScrollIgnored()) {\n return false;\n }\n this.currentValue = DatePickerUtil.scrollMonth(\n e.deltaY,\n this.internalValue\n );\n };\n\n openPicker = (show: boolean) => {\n if (this.disabled) {\n return;\n }\n if (!show) {\n this.setMode(DatePickerMode.date);\n this.applyValue(this.currentValue);\n }\n this.open = show;\n this._cdr.markForCheck();\n };\n\n closePicker = () => {\n this.openPicker(false);\n this.onTouched();\n };\n\n preventEvent = (event: any) => {\n event.stopPropagation();\n event.preventDefault();\n return false;\n };\n\n focus() {\n this._elementRef.nativeElement.focus();\n }\n\n setMode(mode: DatePickerMode) {\n let result: DatePickerMode;\n if (mode === this.displayMode || mode === DatePickerMode.date) {\n result = DatePickerMode.date;\n } else {\n result = mode;\n }\n this.displayMode = result;\n }\n\n private emptyDate() {\n return DateUtil.truncateToDay(new Date());\n }\n}\n","<teta-dropdown\n class=\"row row_auto\"\n [disabled]=\"disabled\"\n [open]=\"open\"\n [autoCloseIgnore]=\"['esc']\"\n (openChange)=\"openPicker($event)\"\n [align]=\"align\"\n [verticalAlign]=\"verticalAlign\"\n [appendToBody]=\"appendToBody\">\n <div tetaDropdownHead\n class=\"datepicker-head font-body-3\"\n [class.datepicker-head_disabled]=\"disabled\"\n [class.datepicker-head_invalid]=\"invalid\">\n <teta-icon [name]=\"'calendar'\" class=\"margin-right-1\"></teta-icon>\n <div class=\"row_auto\">\n {{currentValue !== null && currentValue !== undefined ? (currentValue | date : format) : ''}}\n </div>\n <teta-icon [name]=\"'closeBig'\" (click)=\"clearPicker($event);\" class=\"margin-left-1\"></teta-icon>\n </div>\n <div tetaDropdownContent class=\"datepicker-body scrollable\" (click)=\"$event.preventDefault()\">\n <div class=\"padding-3\">\n <div class=\"row align-center justify-content-between\">\n <div>\n <button teta-button\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.month ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.month)\"\n (wheel)=\"scrollMonth($event);\">\n {{locale.monthNames[internalValue?.getMonth()]}}\n </button>\n <button teta-button\n class=\"margin-left-2\"\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.year ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.year)\"\n (wheel)=\"scrollYear($event);\">\n {{internalValue?.getFullYear()}}\n </button>\n </div>\n <button teta-button\n [palette]=\"'text'\"\n [view]=\"'ghost'\"\n (click)=\"setToday()\">\n <teta-icon [name]=\"'calendar'\"></teta-icon>\n </button>\n </div>\n <div class=\"datepicker-content\">\n <teta-year-select\n *ngIf=\"displayMode === datePickerModeEnum.year\"\n [currentYear]=\"internalValue?.getFullYear()\"\n [today]=\"today\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (yearSelected)=\"setYear($event)\">\n </teta-year-select>\n <teta-month-select\n *ngIf=\"displayMode === datePickerModeEnum.month\"\n [currentMonth]=\"internalValue?.getMonth()\"\n [currentYear]=\"internalValue?.getFullYear()\"\n [locale]=\"locale\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (monthSelected)=\"setMonth($event)\">\n </teta-month-select>\n <teta-day-select\n *ngIf=\"displayMode === datePickerModeEnum.date\"\n [ngModel]=\"currentValue\"\n (ngModelChange)=\"applyValue($event)\"\n (dateSelected)=\"setDate($event)\"\n (yearSelected)=\"setYear($event)\"\n (monthSelected)=\"setMonth($event)\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [disabledDays]=\"disabledDays\"\n [disabledDates]=\"disabledDates\"\n [disabledPeriods]=\"disabledPeriods\"></teta-day-select>\n </div>\n </div>\n <div *ngIf=\"showTime\" class=\"datepicker-time padding-v-1 border-top border-text-10 font-body-3 color-text-90\">\n <teta-time-part-control [max]=\"23\" [ngModel]=\"internalValue?.getHours()\"\n (ngModelChange)=\"setHour($event)\"></teta-time-part-control>\n :\n <teta-time-part-control [ngModel]=\"internalValue?.getMinutes()\"\n (ngModelChange)=\"setMinute($event)\"></teta-time-part-control>\n :\n <teta-time-part-control [ngModel]=\"internalValue?.getSeconds()\"\n (ngModelChange)=\"setSecond($event)\"></teta-time-part-control>\n </div>\n </div>\n</teta-dropdown>\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 { PickerLocaleModel } from '../model/picker-locale-model';\nimport { PickerLocaleService } from '../service/picker-locale.service';\nimport { takeWhile } from 'rxjs/operators';\nimport { DatePickerMode } from '../model/date-picker-mode.enum';\n\nexport const MONTH_PICKER_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MonthPickerComponent),\n multi: true,\n};\n\n@Component({\n selector: 'teta-month-picker',\n templateUrl: './month-picker.component.html',\n styleUrls: ['./month-picker.component.scss'],\n providers: [MONTH_PICKER_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MonthPickerComponent\n implements ControlValueAccessor, OnInit, OnDestroy\n{\n @Input() disabled: boolean;\n @Input() minDate: Date;\n @Input() maxDate: Date;\n @Input() showToday = true;\n @Input() appendToBody = true;\n\n @HostBinding('class.datepicker_open') showPicker: boolean;\n @HostBinding('class.datepicker') private readonly classDatepicker = true;\n @HostBinding('tabindex') private readonly tabindex = 0;\n\n datePickerModeEnum = DatePickerMode;\n\n locale: PickerLocaleModel;\n today: Date;\n\n displayMode: DatePickerMode = DatePickerMode.month;\n\n _value: Date | null = null;\n _currentMonth: number | null;\n _currentYear: number | null;\n\n get value(): any {\n return this._value;\n }\n\n set value(v: any) {\n if (v !== this._value) {\n this._value = v;\n this.onChange(v);\n }\n }\n\n get currentMonth(): number | null {\n return this._currentMonth;\n }\n\n set currentMonth(v: number | null) {\n if (v === null || v === undefined || v < 0 || v > 11) {\n return;\n }\n if (v !== this._currentMonth) {\n this._currentMonth = v;\n }\n }\n\n get currentYear(): number | null {\n return this._currentYear;\n }\n\n set currentYear(v: number | null) {\n if (v !== this._currentYear) {\n this._currentYear = v;\n }\n }\n\n private _alive = true;\n\n constructor(\n public localeService: PickerLocaleService,\n private _cdr: ChangeDetectorRef\n ) {\n localeService.locale\n .pipe(takeWhile((_) => this._alive))\n .subscribe((locale: PickerLocaleModel) => {\n this.locale = locale;\n });\n this.setDefaults();\n }\n\n writeValue(value: any) {\n this._value = value;\n this.initPicker(value);\n }\n\n initPicker(date: Date) {\n if (!date || !(date instanceof Date)) {\n this.setDefaults();\n } else {\n this.currentMonth = date.getMonth();\n this.currentYear = date.getFullYear();\n }\n this._cdr.markForCheck();\n }\n\n setDefaults() {\n this.today = new Date();\n this.currentMonth = null;\n this.currentYear = null;\n }\n\n clearPicker() {\n this.value = null;\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() {\n if (!this.minDate || !(this.minDate instanceof Date)) {\n this.minDate = new Date('1900-01-01T00:00:00Z');\n }\n if (!this.maxDate || !(this.maxDate instanceof Date)) {\n this.maxDate = new Date('2100-12-31T00:00:00Z');\n }\n this.initPicker(this.value);\n }\n\n ngOnDestroy() {\n this._alive = false;\n }\n\n isMinInvalid = (dat: Date): boolean => {\n if (!this.minDate || !(this.minDate instanceof Date) || !dat) {\n return false;\n }\n const min = new Date(\n this.minDate.getFullYear(),\n this.minDate.getMonth(),\n 1\n );\n return min.getTime() > dat.getTime();\n };\n\n isMaxInvalid = (dat: Date): boolean => {\n if (!this.maxDate || !(this.maxDate instanceof Date) || !dat) {\n return false;\n }\n const max = new Date(\n this.maxDate.getFullYear(),\n this.maxDate.getMonth(),\n 1\n );\n return max.getTime() < dat.getTime();\n };\n\n scrollMonth = (e: any) => {\n if (this.showPicker) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n if (!this._value) {\n return;\n }\n if (this.currentYear === null || this.currentYear === undefined) {\n this.currentYear = this.today.getFullYear();\n }\n if (this.currentMonth === null || this.currentMonth === undefined) {\n this.currentMonth = this.today.getMonth();\n }\n if (e.deltaY > 0) {\n if (this.currentMonth === 11) {\n this.currentMonth = 0;\n this.currentYear++;\n } else {\n this.currentMonth++;\n }\n } else {\n if (this.currentMonth === 0) {\n this.currentMonth = 11;\n this.currentYear--;\n } else {\n this.currentMonth--;\n }\n }\n const newDate = new Date(this.currentYear, this.currentMonth, 1, 0, 0, 0);\n if (!this.isMinInvalid(newDate) && !this.isMaxInvalid(newDate)) {\n this.value = newDate;\n }\n };\n\n scrollYear = (e: any) => {\n if (this.showPicker) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n if (!this._value) {\n return;\n }\n if (!this.currentYear) {\n this.currentYear = this.today.getFullYear();\n }\n if (!this.currentMonth) {\n this.currentMonth = this.today.getMonth();\n }\n if (e.deltaY > 0) {\n this.currentYear++;\n } else {\n this.currentYear--;\n }\n const newDate = new Date(this.currentYear, this.currentMonth, 1, 0, 0, 0);\n if (!this.isMinInvalid(newDate) && !this.isMaxInvalid(newDate)) {\n this.value = newDate;\n }\n };\n\n setMonth = (month: number) => {\n this.currentMonth = month;\n if (!this.currentYear) {\n this.currentYear = this.today.getFullYear();\n }\n const newDate = new Date(this.currentYear, this.currentMonth, 1, 0, 0, 0);\n if (!this.isMinInvalid(newDate) && !this.isMaxInvalid(newDate)) {\n this.value = newDate;\n }\n };\n\n setYear = (year: number) => {\n this.currentYear = year;\n if (!this.currentMonth) {\n this.currentMonth = this.today.getMonth();\n }\n const newDate = new Date(this.currentYear, this.currentMonth, 1, 0, 0, 0);\n if (!this.isMinInvalid(newDate) && !this.isMaxInvalid(newDate)) {\n this.value = newDate;\n }\n };\n\n setToday = () => {\n const today = new Date();\n this.currentYear = today.getFullYear();\n this.currentMonth = today.getMonth();\n this.value = new Date(this.currentYear, this.currentMonth, 1, 0, 0, 0);\n this.showPicker = false;\n };\n\n setMode(mode: DatePickerMode) {\n let result: DatePickerMode;\n if (mode === this.displayMode || mode === DatePickerMode.month) {\n result = DatePickerMode.month;\n } else {\n result = mode;\n }\n this.displayMode = result;\n }\n}\n","<teta-dropdown\n class=\"row row_auto\"\n [appendToBody]=\"appendToBody\"\n [(open)]=\"showPicker\"\n [disabled]=\"disabled\">\n <div tetaDropdownHead\n (wheel)=\"scrollMonth($event)\"\n class=\"datepicker-head font-body-3\">\n <teta-icon [name]=\"'calendar'\" class=\"margin-right-2\"></teta-icon>\n <div class=\"row_auto\">\n <ng-container *ngIf=\"_value !==null && _value!==undefined\">\n {{locale.monthNames[_value.getMonth()]}} {{_value.getFullYear()}}\n </ng-container>\n </div>\n <teta-icon [name]=\"'closeBig'\" (click)=\"clearPicker()\" class=\"margin-left-2\"></teta-icon>\n </div>\n <div tetaDropdownContent class=\"datepicker-body scrollable padding-3\">\n <div class=\"row align-center justify-content-between\">\n <div>\n <button teta-button\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.month ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.month)\"\n (wheel)=\"scrollMonth($event);\">\n {{locale.monthNames[_currentMonth || today.getMonth()]}}\n </button>\n <button teta-button\n class=\"margin-left-2\"\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.year ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.year)\"\n (wheel)=\"scrollYear($event);\">\n {{_currentYear || today.getFullYear()}}\n </button>\n </div>\n <button teta-button\n [palette]=\"'text'\"\n [view]=\"'ghost'\"\n (click)=\"setToday()\">\n <teta-icon [name]=\"'calendar'\"></teta-icon>\n </button>\n </div>\n <div class=\"datepicker-content\">\n <teta-year-select\n *ngIf=\"displayMode === datePickerModeEnum.year\"\n [currentYear]=\"_currentYear\"\n [today]=\"today\"\n [size]=\"8\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (yearSelected)=\"setYear($event)\">\n </teta-year-select>\n <teta-month-select\n *ngIf=\"displayMode === datePickerModeEnum.month\"\n [currentMonth]=\"_currentMonth\"\n [locale]=\"locale\"\n [currentYear]=\"_currentYear\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (monthSelected)=\"setMonth($event)\">\n </teta-month-select>\n </div>\n </div>\n</teta-dropdown>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n Inject,\n NgZone, 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})\nexport class DropdownDirective extends DropdownBase implements OnInit, OnDestroy, AfterViewInit {\n constructor(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 super(_cdr, _document, _elementRef, _zone, _renderer);\n }\n\n ngOnInit(): void {\n }\n\n ngOnDestroy(): void {\n this.closeDropdown();\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 {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DropdownComponent} from './dropdown/dropdown.component';\nimport {DropdownHeadDirective} from './dropdown-head.directive';\nimport {DropdownContentDirective} from './dropdown-content.directive';\nimport {DropdownDirective} from './dropdown.directive';\n\n@NgModule({\n declarations: [\n DropdownComponent,\n DropdownHeadDirective,\n DropdownContentDirective,\n DropdownDirective\n ],\n exports: [\n DropdownComponent,\n DropdownHeadDirective,\n DropdownContentDirective,\n DropdownDirective\n ],\n imports: [\n CommonModule\n ]\n})\nexport class DropdownModule {\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n Input, NgZone,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport {DomUtil} from '../../common/util/dom-util';\n\n@Directive({\n selector: '[tetaClickOutside]',\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(private _elementRef: ElementRef, 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(\n this._elementRef.nativeElement,\n click\n );\n if (!clickedInside) {\n this.clickOutside.emit(click);\n }\n };\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ClickOutsideDirective} from './click-outside.directive';\n\n@NgModule({\n declarations: [ClickOutsideDirective],\n exports: [ClickOutsideDirective],\n imports: [\n CommonModule\n ]\n})\nexport class ClickOutsideModule {\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PrependZeroPipe } from './prepend-zero.pipe';\n\n@NgModule({\n declarations: [PrependZeroPipe],\n exports: [PrependZeroPipe],\n imports: [CommonModule],\n})\nexport class PrependZeroModule {}\n","import {Directive, ElementRef, HostListener, Input} from '@angular/core';\nimport {NgControl} from '@angular/forms';\n\n@Directive({\n selector: '[tetaOnlyNumber]',\n})\nexport class OnlyNumberDirective {\n @Input() tetaOnlyNumber = true;\n @Input() allowDecimals = true;\n @Input() allowSign = true;\n @Input() decimalSeparator = '.';\n @Input() commaSeparator = ',';\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(private _elementRef: ElementRef, private _control: NgControl) {\n }\n\n @HostListener('change', ['$event']) onChange(e: any) {\n if (this.tetaOnlyNumber === false) {\n return;\n }\n this.validateValue(this._elementRef.nativeElement.value);\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 e.preventDefault();\n }\n\n @HostListener('keydown', ['$event']) onKeyDown(e: KeyboardEvent) {\n if (this.tetaOnlyNumber === false) {\n return;\n }\n const cursorPosition: number =\n (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) ||\n originalValue.includes(this.commaSeparator);\n\n const allowedKeys = [\n 'Backspace',\n 'ArrowLeft',\n 'ArrowRight',\n 'Delete',\n 'Escape',\n 'Tab',\n 'Home',\n 'End',\n ];\n\n const separatorIsCloseToSign = signExists && cursorPosition <= 1;\n if (this.allowDecimals && !separatorIsCloseToSign && !separatorExists) {\n // if (this.decimalSeparator === '.') {\n allowedKeys.push('.');\n // } else {\n // allowedKeys.push(',');\n // }\n }\n\n const firstCharacterIsSeparator =\n originalValue.charAt(0) !== this.decimalSeparator;\n if (\n this.allowSign &&\n !signExists &&\n firstCharacterIsSeparator &&\n cursorPosition === 0\n ) {\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 =\n `${originalValue.slice(0, cursorPosition)}.${originalValue.slice(cursorPosition)}`;\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 (\n firstCharacter === '0' &&\n secondChar !== '' &&\n secondChar !== this.decimalSeparator\n ) {\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 const valid: boolean = new RegExp(regex).test(value.toString());\n this._control.control.setValue(valid ? value : this._previousValue ?? 0);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OnlyNumberDirective } from './only-number.directive';\n\n@NgModule({\n declarations: [OnlyNumberDirective],\n exports: [OnlyNumberDirective],\n imports: [CommonModule],\n})\nexport class OnlyNumberModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DatePickerComponent } from './date-picker/date-picker.component';\nimport { MonthPickerComponent } from './month-picker/month-picker.component';\nimport { DropdownModule } from '../dropdown/dropdown.module';\nimport { ClickOutsideModule } from '../../directive/click-outside/click-outside.module';\nimport { IconModule } from '../icon/icon.module';\nimport { DaySelectComponent } from './day-select/day-select.component';\nimport { YearSelectComponent } from './year-select/year-select.component';\nimport { MonthSelectComponent } from './month-select/month-select.component';\nimport { PrependZeroModule } from '../../pipe/prepend-zero/prepend-zero.module';\nimport { ButtonModule } from '../button/button.module';\nimport { OnlyNumberModule } from '../../directive/only-number/only-number.module';\nimport { FormsModule } from '@angular/forms';\nimport { TimePartControlComponent } from './time-part-control/time-part-control.component';\n\n@NgModule({\n declarations: [\n DatePickerComponent,\n MonthPickerComponent,\n DaySelectComponent,\n YearSelectComponent,\n MonthSelectComponent,\n TimePartControlComponent,\n ],\n exports: [DatePickerComponent, MonthPickerComponent],\n imports: [\n CommonModule,\n DropdownModule,\n ClickOutsideModule,\n FormsModule,\n IconModule,\n PrependZeroModule,\n ButtonModule,\n OnlyNumberModule,\n ],\n})\nexport class DatePickerModule {}\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","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n OnInit,\n} 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})\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 {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DelimiterComponent} from './delimiter/delimiter.component';\n\n@NgModule({\n declarations: [DelimiterComponent],\n exports: [DelimiterComponent],\n imports: [\n CommonModule\n ]\n})\nexport class DelimiterModule {\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(\n data: any[],\n children?: string | ((item: any) => any[]),\n onlyLeafs?: boolean\n ): 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 (\n childItems !== null &&\n childItems !== undefined &&\n childItems.length > 0\n ) {\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(\n tree: any[],\n comparer: (iterableNode: any) => boolean,\n children: string = 'children'\n ): 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: string = 'children',\n keepChildren: boolean = true\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 break;\n }\n } else if (item[children] && item[children].length > 0) {\n resultItem[children] = [];\n const found = ArrayUtil.filterRecursive(\n item[children],\n filter,\n children,\n keepChildren\n );\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) {\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 }\n\n static moveItem(list: any[], sourceIndex, targetIndex) {\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","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n} 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 => *', [\n style({ opacity: '0' }),\n animate(200, style({ opacity: '1' })),\n ]),\n transition('* => void', [animate(200, style({ opacity: '0' }))]),\n ]),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\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 {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {PopupContentComponent} from './popup-content/popup-content.component';\n\n@NgModule({\n declarations: [PopupContentComponent],\n exports: [PopupContentComponent],\n imports: [\n CommonModule\n ]\n})\nexport class DynamicComponentModule {\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tetaExpandPanelContent]',\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})\nexport class ExpandPanelHeadDirective {\n constructor(public template: TemplateRef<any>) {}\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n OnInit,\n} 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})\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', 'toolbar_panel'];\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 {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { ExpandPanelContentDirective } from '../expand-panel-content.directive';\nimport { ExpandPanelHeadDirective } from '../expand-panel-head.directive';\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})\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","<ng-container *ngIf=\"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 <button\n teta-button\n [square]=\"true\"\n [palette]=\"'text'\"\n [view]=\"'ghost'\"\n (click)=\"closePanel()\"\n >\n <teta-icon [name]=\"direction === 'right' ? 'arrowRight' : 'arrowLeft'\"></teta-icon>\n </button>\n <span class=\"font-title-2\" style=\"display: contents\"><ng-container *ngTemplateOutlet=\"head?.template\"></ng-container></span>\n </teta-toolbar>\n <ng-container *ngTemplateOutlet=\"content?.template\"></ng-container>\n</ng-container>\n<ng-container *ngIf=\"!open\">\n <div class=\"width-10 overflow-hidden\" style=\"height: 100%;\">\n <button\n teta-button\n style=\"\n transform-origin: 0 0;\n transform: rotate(-90deg) translateX(-100%);\n margin: 8px;\n \"\n [palette]=\"'text'\"\n [view]=\"'ghost'\"\n (click)=\"openPanel()\"\n >\n <div class=\"font-button-2 nowrap\">{{ placeholder }}</div>\n <teta-icon [name]=\"direction === 'right' ? 'arrowUp' : 'arrowDown'\"></teta-icon>\n </button>\n </div>\n</ng-container>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ToolbarComponent} from './toolbar/toolbar.component';\n\n@NgModule({\n declarations: [ToolbarComponent],\n exports: [ToolbarComponent],\n imports: [\n CommonModule\n ]\n})\nexport class ToolbarModule {\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ExpandPanelComponent } from './expand-panel/expand-panel.component';\nimport { DelimiterModule } from '../delimiter/delimiter.module';\nimport { ToolbarModule } from '../toolbar/toolbar.module';\nimport { ButtonModule } from '../button/button.module';\nimport { IconModule } from '../icon/icon.module';\nimport { ExpandPanelHeadDirective } from './expand-panel-head.directive';\nimport { ExpandPanelContentDirective } from './expand-panel-content.directive';\n\n@NgModule({\n declarations: [\n ExpandPanelComponent,\n ExpandPanelHeadDirective,\n ExpandPanelContentDirective,\n ],\n exports: [\n ExpandPanelComponent,\n ExpandPanelHeadDirective,\n ExpandPanelContentDirective,\n ],\n imports: [\n CommonModule,\n DelimiterModule,\n ToolbarModule,\n ButtonModule,\n IconModule,\n ],\n})\nexport class ExpandPanelModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\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})\nexport class FileUploadAreaComponent implements OnInit {\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: boolean;\n @Input() accept: string[];\n\n @Output() upload: EventEmitter<FileList> = new EventEmitter();\n\n @ViewChild('fileUpload', { static: false }) input: ElementRef;\n\n files: any;\n\n private _asActive: boolean;\n\n constructor() {}\n\n @HostListener('dragenter', ['$event']) dragEnter(event) {\n this.preventDefaults(event);\n this._asActive = true;\n }\n\n @HostListener('dragover', ['$event']) dragOver(event) {\n this.preventDefaults(event);\n this._asActive = true;\n }\n\n @HostListener('dragleave', ['$event']) dragLeave(event) {\n this.preventDefaults(event);\n this._asActive = false;\n }\n\n @HostListener('drop', ['$event']) drop(event) {\n this.upload.emit(event.dataTransfer.files);\n this.preventDefaults(event);\n }\n\n ngOnInit() {}\n\n fileChanged(event: any) {\n if (event.target && event.target.files) {\n this.upload.emit(event.target.files);\n this.input.nativeElement.value = null;\n }\n }\n\n private preventDefaults(event) {\n event.preventDefault();\n event.stopPropagation();\n }\n}\n","<ng-content></ng-content>\n<label class=\"file-upload-label\">\n <input #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 <teta-button [palette]=\"'primary'\" type=\"button\">\n <teta-icon [name]=\"'upload'\"></teta-icon>\n Загрузить\n </teta-button>\n</label>\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})\nexport class FileItemComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<p>file-item works!</p>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FileUploadAreaComponent } from './file-upload-area/file-upload-area.component';\nimport { FileItemComponent } from './file-item/file-item.component';\nimport { ButtonModule } from '../button/button.module';\nimport { IconModule } from '../icon/icon.module';\n\n@NgModule({\n declarations: [FileUploadAreaComponent, FileItemComponent],\n exports: [FileUploadAreaComponent, FileItemComponent],\n imports: [CommonModule, ButtonModule, IconModule],\n})\nexport class FileUploadModule {}\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'teta-filter-panel',\n templateUrl: './filter-panel.component.html',\n styleUrls: ['./filter-panel.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterPanelComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<p>filter-panel works!</p>\n","import {IFilter} from '../contarct/i-filter';\n\nexport class FilterBase implements IFilter {\n field: string;\n name: string;\n value: any;\n\n constructor(options?: {\n field: string;\n name: string;\n }) {\n if (options) {\n this.field = options.field;\n this.name = options.name;\n }\n }\n}\n","import {FilterBase} from '../base/filter-base';\nimport {NumericFilterValue} from './numeric-filter-value';\n\nexport class NumericFilter extends FilterBase {\n override value: NumericFilterValue;\n strict: boolean;\n\n constructor(options?: {\n value?: NumericFilterValue;\n strict?: boolean;\n field: string;\n name: string;\n }) {\n super(options);\n if (options) {\n this.value = options.value || this.value;\n this.strict = options.strict || false;\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 {\n abstract column: FilterItem;\n abstract state: FilterState;\n abstract filterOptions: IIdName<any>[];\n\n abstract filterChanged: EventEmitter<IFilter>;\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 {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n OnInit,\n} from '@angular/core';\n\n@Component({\n selector: 'teta-input',\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InputComponent implements OnInit {\n @Input() label: string;\n\n @Input()\n @HostBinding('class.row')\n horizontal: boolean;\n\n @Input()\n required = false;\n\n @HostBinding('class.column')\n get column() {\n return !this.horizontal;\n }\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<div class=\"font-caption color-text-90 align-center row nowrap overflow-hidden text-overflow-ellipsis\"\n [class.row_6]=\"horizontal\"\n [class.text-field_required]=\"required\"\n *ngIf=\"label?.length > 0\">\n {{label}}\n</div>\n<div class=\"input-container\" [class.row_6]=\"horizontal\">\n <ng-content></ng-content>\n <div class=\"input-message font-error-message\">\n <ng-content select=\"message\"></ng-content>\n </div>\n</div>\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';\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})\nexport class NumericFilterComponent\n extends FilterComponentBase\n implements OnInit\n{\n @Input() column: FilterItem;\n @Input() filterOptions: IIdName<any>[] = [];\n @Output() filterChanged: EventEmitter<FilterBase> =\n new EventEmitter<FilterBase>();\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\n constructor(private changeDetector: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit() {\n this.filter = this.getFilter();\n }\n\n private getFilter(): NumericFilter {\n let filter = this.state.numericFilters?.find(\n (f) => f.field === this.column.filterField\n );\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","<div class=\"form-row padding-3\">\n <teta-input [label]=\"'От'\">\n <input class=\"input\" type=\"text\"\n style=\"width: 110px\"\n [tetaOnlyNumber]=\"true\"\n [ngModel]=\"filter.value?.greaterThan\"\n (ngModelChange)=\"filter.value.greaterThan=$event\"/>\n </teta-input>\n <teta-input [label]=\"'До'\">\n <input class=\"input\" type=\"text\"\n style=\"width: 110px\"\n [tetaOnlyNumber]=\"true\"\n [ngModel]=\"filter.value?.lessThan\"\n (ngModelChange)=\"filter.value.lessThan=$event\"/>\n </teta-input>\n</div>\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 {\n override value: string;\n type: StringFilterType;\n\n\n constructor(options?: {\n value?: string;\n type?: StringFilterType;\n field: string;\n name: string;\n }) {\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 {\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';\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})\nexport class StringFilterComponent\n extends FilterComponentBase\n implements OnInit\n{\n @Input() column: FilterItem;\n @Input() filterOptions: IIdName<any>[] = [];\n @Output() filterChanged: EventEmitter<FilterBase> =\n new EventEmitter<FilterBase>();\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\n constructor(private changeDetector: ChangeDetectorRef) {\n super();\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(\n (f) => f.field === this.column.filterField\n );\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]=\"'Поиск'\">\n <input type=\"text\" class=\"input\" [(ngModel)]=\"filter.value\" (blur)=\"setFilter()\" />\n </teta-input>\n</div>\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 {\n override value: any[];\n type: ListFilterType;\n\n constructor(options?: {\n value?: any[];\n type?: ListFilterType;\n field: string;\n name: string;\n }) {\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 {\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} from '@angular/forms';\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})\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 @HostBinding('class.text-field_invalid')\n @Input()\n invalid: boolean;\n @ViewChild('input', {static: false}) input: ElementRef;\n @HostBinding('attr.tabindex')\n private readonly tabindex = 0;\n @HostBinding('class.text-field')\n private readonly textField = true;\n value = '';\n\n constructor(private _cdr: ChangeDetectorRef) {\n }\n\n @HostListener('click') onFocus() {\n this.input.nativeElement.focus();\n }\n\n keyPress(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.keyCode === 13) {\n this.input.nativeElement.blur();\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.detectChanges();\n }\n\n writeValue(input: string): void {\n this.value = input;\n this._cdr.detectChanges();\n }\n\n onChange(input: string): void {\n }\n\n onTouched(): void {\n }\n}\n","<teta-icon *ngIf=\"leftIconName\" [name]=\"leftIconName\"></teta-icon>\n<input\n #input\n [ngModel]=\"value\"\n [tetaOnlyNumber]=\"onlyNumber\"\n (ngModelChange)=\"value = $event; onChange($event);\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (blur)=\"emitBlur()\"\n (keydown)=\"keyPress($event)\"\n autocomplete=\"off\"\n type=\"text\"\n/>\n<teta-icon\n *ngIf=\"value && !disabled\"\n class=\"close-icon\"\n [name]=\"'closeCircle'\"\n (click)=\"value = ''; onChange('');\"\n></teta-icon>\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';\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})\nexport class ListFilterComponent extends FilterComponentBase implements OnInit {\n @Input() column: FilterItem;\n @Input() filterOptions: IIdName<any>[] = [];\n @Output() filterChanged: EventEmitter<FilterBase> =\n new EventEmitter<FilterBase>();\n\n filter: ListFilter;\n state$: FilterState;\n search = '';\n\n get visibleOptions() {\n return this.filterOptions?.filter(\n (_) => _.name?.toString().indexOf(this.search) >= 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(private changeDetector: ChangeDetectorRef) {\n super();\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(\n (_) => this.filter?.value?.indexOf(_.id) < 0\n );\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\n ? ListFilterType.Excluded\n : 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(\n (f) => f.field === this.column.filterField\n );\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<div class=\"list padding-v-2 scrollable\">\n <div class=\"list-item\">\n <teta-checkbox [binary]=\"true\"\n [allowNull]=\"true\"\n [ngModel]=\"all()\"\n (ngModelChange)=\"setAll($event)\">Все\n </teta-checkbox>\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"list-item\" *ngFor=\"let option of visibleOptions\">\n <teta-checkbox [ngModel]=\"filter.value\"\n (ngModelChange)=\"setFilter($event)\"\n [value]=\"option.id\"\n [binary]=\"false\">\n {{option.name}}\n </teta-checkbox>\n </div>\n</div>\n","export class DateFilterValue {\n /**\n * Значение должно быть меньше чем\n */\n lessThan: Date | undefined | null;\n /**\n * Значение должно быть больше чем\n */\n greaterThan: Date | undefined | null;\n\n constructor(options?: {\n lessThan?: Date | undefined | null;\n greaterThan?: Date | undefined | null;\n }) {\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","import {FilterBase} from '../base/filter-base';\nimport {DateFilterValue} from './date-filter-value';\n\nexport class DateFilter extends FilterBase {\n override value: DateFilterValue;\n\n constructor(options?: {\n value?: DateFilterValue;\n field: string;\n name: string;\n }) {\n super(options);\n if (options) {\n this.value = new DateFilterValue(options.value);\n }\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';\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})\nexport class DateFilterComponent extends FilterComponentBase implements OnInit {\n @Input() column: FilterItem;\n @Input() filterOptions: IIdName<any>[] = [];\n @Output() filterChanged: EventEmitter<FilterBase> =\n new EventEmitter<FilterBase>();\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\n constructor(private changeDetector: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit() {\n this.filter = this.getFilter();\n }\n\n private getFilter(): DateFilter {\n let filter = this.state.dateFilters.find(\n (f) => f.field === this.column.filterField\n );\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","<div class=\"form-row padding-3\">\n <teta-input [label]=\"'От'\">\n <teta-date-picker style=\"width: 110px\"\n [ngModel]=\"filter.value?.greaterThan\"\n [appendToBody]=\"true\"\n (ngModelChange)=\"filter.value.greaterThan=$event\"></teta-date-picker>\n </teta-input>\n <teta-input [label]=\"'До'\">\n <teta-date-picker style=\"width: 110px\"\n [ngModel]=\"filter.value?.lessThan\"\n [appendToBody]=\"true\"\n (ngModelChange)=\"filter.value.lessThan=$event\"></teta-date-picker>\n </teta-input>\n</div>\n","export enum FilterType {\n string,\n number,\n date,\n list,\n boolean,\n custom,\n}\n","import { FilterBase } from '../base/filter-base';\n\nexport class BooleanFilter extends FilterBase {\n override value: boolean;\n\n constructor(options?: { value?: boolean; field: string; name: string }) {\n super(options);\n if (options) {\n this.value = options.value;\n }\n }\n}\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})\nexport class RadioComponent implements OnInit, 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;\n }\n\n event.cancelBubble = true;\n if (event.stopPropagation) {\n event.stopPropagation();\n }\n return false;\n }\n\n ngOnInit() {}\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 _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$\n ? this.buttons$.indexOf(this.selectedButton$)\n : 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$\n ? this.buttons$.indexOf(this.selectedButton$)\n : 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>","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 // changeDetection: ChangeDetectionStrategy.OnPush,\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 <div *ngIf=\"checked\" class=\"radio-button-small-icon\"></div>\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';\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})\nexport class BooleanFilterComponent\n extends FilterComponentBase\n implements OnInit\n{\n @Input() column: FilterItem;\n @Input() filterOptions: IIdName<any>[] = [];\n @Output() filterChanged: EventEmitter<FilterBase> =\n new EventEmitter<FilterBase>();\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 constructor(private changeDetector: ChangeDetectorRef) {\n super();\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(\n (f) => f.field === this.column.filterField\n );\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","<div class=\"padding-3\">\n <teta-radio [ngModel]=\"filter.value\" (ngModelChange)=\"setFilter()\">\n <teta-radio-button [value]=\"null\">null</teta-radio-button>\n <teta-radio-button [value]=\"true\">true</teta-radio-button>\n <teta-radio-button [value]=\"false\">false</teta-radio-button>\n </teta-radio>\n</div>\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<\n FilterType,\n Type<any>\n>()\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)\n ? filterComponentsMap.get(item.filterType)\n : 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})\nexport class FilterHostComponent 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 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> = new EventEmitter();\n\n private _alive = true;\n private _column: FilterItem;\n private _state: FilterState;\n private _filterOptions: IIdName<any>[];\n private _componentRef: ComponentRef<any>;\n private _init: boolean;\n\n constructor(\n private viewContainerRef: ViewContainerRef\n ) {\n }\n\n ngOnInit() {\n if (!FilterComponentBase.isPrototypeOf(this._column.filterComponent)) {\n this._column.filterComponent = getFilterComponent(this._column);\n }\n this._componentRef =\n this.viewContainerRef.createComponent<FilterComponentBase>(this._column.filterComponent);\n this._componentRef.instance.column = this._column;\n this._componentRef.instance.state = this._state;\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) => {\n this.filterChanged.emit(filter);\n });\n }\n\n ngOnDestroy() {\n this._alive = false;\n }\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: '[tetaSelectOption]'\n})\nexport class SelectOptionDirective {\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: '[tetaSelectValue]'\n})\nexport class SelectValueDirective {\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import {Directive, ElementRef, Input} from '@angular/core';\n\n@Directive({\n selector: '[tetaHighlight]',\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\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\n .replace(new RegExp(searchWithOutRegExp, 'gi'), match => `<mark>${match}</mark>`);\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 OnInit,\n} from '@angular/core';\nimport { Align } from '../../../common/enum/align.enum';\nimport { VerticalAlign } from '../../../common/enum/vertical-align.enum';\nimport { AutoCloseIgnoreCase } from '../../../common/contract/auto-close-ignore-case';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SelectOptionDirective } from '../select-option.directive';\nimport { SelectValueDirective } from '../select-value.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})\nexport class SelectComponent implements ControlValueAccessor, OnInit {\n @HostBinding('class.select_multiple')\n @Input()\n multiple: boolean;\n @Input() options: any[];\n @Input() invalid: boolean;\n @Input() align: Align = Align.minWidth;\n @Input() verticalAlign: VerticalAlign = VerticalAlign.bottom;\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\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 @HostBinding('tabindex') private readonly tabindex = 0;\n\n @HostBinding('class.select_disabled')\n get isDisabled() {\n return this.disabled;\n }\n\n value: any | any[];\n searchText: string;\n\n get visibleOptions(): any[] {\n if (!this.searchText) {\n return this.options;\n }\n return this.options?.filter(\n (option) =>\n this.getSearchString(option)\n .toLowerCase()\n .indexOf(this.searchText.toLowerCase()) >= 0\n );\n }\n\n constructor(\n private _cdr: ChangeDetectorRef,\n private _elementRef: ElementRef\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.onChange(this.value.map((_) => this.getValue(_)));\n } else {\n this.value = option;\n this.onChange(this.getValue(this.value));\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.onChange(this.value.map((_) => this.getValue(_)));\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 ngOnInit(): void {}\n\n writeValue(value: any | any[]): void {\n if (this.multiple) {\n this.value =\n value && this.options\n ? this.options.filter(\n (option) => value.indexOf(this.getValue(option)) > -1\n )\n : [];\n } else {\n this.value =\n this.options &&\n this.options.find((option) => this.getValue(option) === value);\n }\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() {}\n}\n","<teta-dropdown [align]=\"align\"\n [verticalAlign]=\"verticalAlign\"\n [autoClose]=\"autoClose\"\n [autoCloseIgnore]=\"autoCloseIgnore\"\n [(open)]=\"open\"\n [appendToBody]=\"appendToBody\"\n [disabled]=\"disabled\"\n class=\"row row_auto\">\n <div tetaDropdownHead\n class=\"row row_auto select-head\"\n [class.select-head_invalid]=\"invalid\">\n <div class=\"row_auto flex align-center\">\n <teta-icon *ngIf=\"icon\" [name]=\"icon\" class=\"margin-right-1\"></teta-icon>\n <span class=\"placeholder\" *ngIf=\"(value == null || value?.length === 0) && placeholder\">\n {{placeholder}}\n </span>\n <ng-container\n *ngTemplateOutlet=\"valueDirective ? valueDirective.template : valueDefault; context: {$implicit: value, value: value}\"></ng-container>\n </div>\n <teta-icon [name]=\"'arrowDownSmall'\"></teta-icon>\n </div>\n <div *ngIf=\"options?.length\" tetaDropdownContent class=\"select-list scrollable row_auto\" (click)=\"$event.preventDefault()\">\n <ng-container *ngIf=\"searchRef\">\n <div class=\"select-search\">\n <teta-text-field [ngModel]=\"searchText\"\n (ngModelChange)=\"search($event)\"\n [placeholder]=\"'Поиск'\"\n [leftIconName]=\"'search'\"></teta-text-field>\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"!multiple && allowNull\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"clear()\"\n [class.list-item_active]=\"value==null\">\n Не выбрано\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"!virtual\">\n <div class=\"list-item list-item_interactive\"\n *ngFor=\"let option of visibleOptions\"\n [class.select-list-item_active]=\"itemSelected(option) && multiple\"\n [class.list-item_active]=\"itemSelected(option)\"\n [class.select-list-item]=\"multiple\"\n (click)=\"clickOption(option, $event)\">\n <teta-icon *ngIf=\"itemSelected(option) && multiple\" [name]=\"'tick'\" [palette]=\"'primary'\"></teta-icon>\n <span [tetaHighlight]=\"searchText\">\n <ng-container\n *ngTemplateOutlet=\"optionDirective ? optionDirective.template : optionDefault; context: {$implicit: option, option: option}\">\n </ng-container>\n </span>\n </div>\n </ng-container>\n <cdk-virtual-scroll-viewport *ngIf=\"virtual\"\n [itemSize]=\"40\"\n minBufferPx=\"200\"\n maxBufferPx=\"600\">\n <div class=\"select-list-item select-list-item_interactive\"\n *cdkVirtualFor=\"let option of visibleOptions; templateCacheSize: 0;\"\n [class.select-list-item_active]=\"itemSelected(option)\"\n [tetaHighlight]=\"searchText\"\n (click)=\"clickOption(option, $event)\">\n <teta-icon *ngIf=\"itemSelected(option)\" [name]=\"'tick'\" [palette]=\"'primary'\" class=\"margin-left-2\"></teta-icon>\n <div [tetaHighlight]=\"searchText\">\n <ng-container\n *ngTemplateOutlet=\"optionDirective ? optionDirective.template : optionDefault; context: {$implicit: option, option: option}\">\n </ng-container>\n </div>\n </div>\n </cdk-virtual-scroll-viewport>\n <div class=\"row row_auto select-chip-field flex-wrap\" *ngIf=\"multiple && value?.length\">\n <div *ngFor=\"let item of value\" class=\"chip\">\n <teta-icon [name]=\"'closeCircle'\" (click)=\"removeItemClick(item, $event)\"></teta-icon>\n {{getText(item)}}\n </div>\n </div>\n </div>\n</teta-dropdown>\n\n<ng-template #optionDefault let-option>\n {{getText(option)}}\n</ng-template>\n<ng-template #valueDefault let-value>\n <div class=\"row_auto overflow-hidden text-overflow-ellipsis\" *ngIf=\"multiple\">\n <ng-container\n *ngFor=\"let item of value; let i = index\">{{getText(item) + (value.length === i + 1 ? '' : ', ') }}</ng-container>\n </div>\n <ng-container *ngIf=\"!multiple\">\n <span class=\"row row_auto overflow-hidden text-overflow-ellipsis\">{{getText(value)}}</span>\n </ng-container>\n</ng-template>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {HighlightDirective} from './highlight.directive';\n\n@NgModule({\n declarations: [HighlightDirective],\n exports: [HighlightDirective],\n imports: [\n CommonModule\n ]\n})\nexport class HighlightModule {\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n OnInit,\n} 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})\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 { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InputComponent } from './input/input.component';\nimport { TextFieldComponent } from './text-field/text-field.component';\nimport { IconModule } from '../icon/icon.module';\nimport { FormsModule } from '@angular/forms';\nimport { OnlyNumberModule } from '../../directive/only-number/only-number.module';\nimport { FormGroupTitleComponent } from './form-group-title/form-group-title.component';\n\n@NgModule({\n declarations: [InputComponent, TextFieldComponent, FormGroupTitleComponent],\n exports: [InputComponent, TextFieldComponent, FormGroupTitleComponent],\n imports: [CommonModule, IconModule, FormsModule, OnlyNumberModule],\n})\nexport class InputModule {}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {SelectComponent} from './select/select.component';\nimport {DropdownModule} from '../dropdown/dropdown.module';\nimport {SelectOptionDirective} from './select-option.directive';\nimport {SelectValueDirective} from './select-value.directive';\nimport {ScrollingModule} from '@angular/cdk/scrolling';\nimport {FormsModule} from '@angular/forms';\nimport {IconModule} from '../icon/icon.module';\nimport {HighlightModule} from '../../directive/highlight/highlight.module';\nimport {InputModule} from '../input/input.module';\n\n@NgModule({\n declarations: [SelectComponent, SelectOptionDirective, SelectValueDirective],\n exports: [SelectComponent, SelectOptionDirective, SelectValueDirective],\n imports: [\n DropdownModule,\n CommonModule,\n ScrollingModule,\n FormsModule,\n IconModule,\n HighlightModule,\n InputModule,\n ],\n})\nexport class SelectModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RadioComponent } from './radio/radio.component';\nimport { RadioButtonComponent } from './radio-button/radio-button.component';\nimport { FormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [RadioComponent, RadioButtonComponent],\n exports: [RadioComponent, RadioButtonComponent],\n imports: [CommonModule, FormsModule],\n})\nexport class RadioModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FilterPanelComponent } from './filter-panel/filter-panel.component';\nimport { NumericFilterComponent } from './numeric-filter/numeric-filter.component';\nimport { StringFilterComponent } from './string-filter/string-filter.component';\nimport { ListFilterComponent } from './list-filter/list-filter.component';\nimport { DateFilterComponent } from './date-filter/date-filter.component';\nimport { FilterHostComponent } from './filter-host/filter-host.component';\nimport { SelectModule } from '../select/select.module';\nimport { FormsModule } from '@angular/forms';\nimport { DatePickerModule } from '../date-picker/date-picker.module';\nimport { BooleanFilterComponent } from './boolean-filter/boolean-filter.component';\nimport { RadioModule } from '../radio/radio.module';\nimport { InputModule } from '../input/input.module';\nimport { CheckboxModule } from '../checkbox/checkbox.module';\nimport {OnlyNumberModule} from '../../directive/only-number/only-number.module';\n\n@NgModule({\n declarations: [\n FilterPanelComponent,\n NumericFilterComponent,\n StringFilterComponent,\n ListFilterComponent,\n DateFilterComponent,\n FilterHostComponent,\n BooleanFilterComponent,\n ],\n exports: [\n FilterPanelComponent,\n NumericFilterComponent,\n StringFilterComponent,\n ListFilterComponent,\n DateFilterComponent,\n FilterHostComponent,\n BooleanFilterComponent,\n ],\n imports: [\n CommonModule,\n SelectModule,\n FormsModule,\n DatePickerModule,\n RadioModule,\n InputModule,\n CheckboxModule,\n OnlyNumberModule,\n ],\n})\nexport class FilterModule {}\n","import {FilterType} from '../enum/filter-type.enum';\nimport {StringFilterType} from '../enum/string-filter-type.enum';\nimport {ListFilterType} from '../enum/list-filter-type.enum';\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?: {\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 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 = options?.sortField ?? this.name;\n this.filterField = 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","export 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?: {\n field?: string;\n asc?: boolean;\n order?: number;\n }) {\n if (options) {\n this.field = options.field || this.field;\n this.asc = options.asc || false;\n this.order = options.order || this.order;\n }\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(\n (x: any) => new StringFilter(x)\n );\n }\n\n if (options.booleanFilters && options.booleanFilters.length) {\n this.booleanFilters = options.booleanFilters.map(\n (x: any) => new BooleanFilter(x)\n );\n }\n\n if (options.numericFilters && options.numericFilters.length) {\n this.numericFilters = options.numericFilters.map(\n (x: any) => new NumericFilter(x)\n );\n }\n\n if (options.dateFilters && options.dateFilters.length) {\n this.dateFilters = options.dateFilters.map(\n (x: any) => new DateFilter(x)\n );\n }\n\n if (options.listFilters && options.listFilters.length) {\n this.listFilters = options.listFilters.map(\n (x: any) => new ListFilter(x)\n );\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 {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\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 {\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';\n\n@Component({\n selector: 'teta-message',\n templateUrl: './message.component.html',\n styleUrls: ['./message.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\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 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-3 padding-left-1\">\n {{message.title}}\n </div>\n <button teta-button\n [square]=\"true\"\n [palette]=\"message.palette\"\n [view]=\"'primary'\"\n (click)=\"closeMe($event)\">\n <teta-icon [name]=\"'closeBig'\"></teta-icon>\n </button>\n</div>\n<div class=\"font-body-3 padding-v-1\" *ngIf=\"!message.template && message.text\">\n {{message.text}}\n</div>\n<ng-container *ngIf=\"message.template\">\n <ng-container *ngTemplateOutlet=\"message.template; context: {$implicit: message}\"></ng-container>\n</ng-container>\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';\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})\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<\n VerticalAlign,\n string\n >()\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(private _svc: MessageService, private _cdr: ChangeDetectorRef) {}\n\n ngOnInit() {\n this._svc.message\n .pipe(takeWhile((_) => this._alive))\n .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\n .pipe(takeWhile((_) => this._alive))\n .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","<teta-message\n *ngFor=\"let message of messages; let i=index\"\n (closed)=\"closedItem($event)\"\n [message]=\"message\"\n [index]=\"i\">\n</teta-message>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MessageHostComponent} from './message-host/message-host.component';\nimport {MessageComponent} from './message/message.component';\nimport {IconModule} from '../icon/icon.module';\nimport {ButtonModule} from '../button/button.module';\n\n@NgModule({\n declarations: [MessageHostComponent, MessageComponent],\n exports: [MessageHostComponent, MessageComponent],\n imports: [\n CommonModule,\n IconModule,\n ButtonModule\n ]\n})\nexport class MessageModule {\n}\n","import { TemplateRef } from '@angular/core';\n\nexport class Message {\n name: string | null | undefined;\n title: string | null | undefined;\n text: string | null | undefined;\n infinite: boolean;\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 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.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","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 => *', [\n style({ opacity: '0' }),\n animate(150, style({ opacity: '1' })),\n ]),\n transition('* => void', [animate(150, style({ opacity: '0' }))]),\n ]),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\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 (\n this.config.closeOnBackdropClick === true &&\n this.elRef$.nativeElement === event.target\n ) {\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","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 { Component, Input, OnInit } from '@angular/core';\nimport { CurrentModal } from '../model/current-modal';\nimport { DynamicData } from '../../../common/contract/dynamic-data';\nimport { ModalCloseReason } from '../model/modal-close-reason.enum';\n\n@Component({\n selector: 'teta-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss'],\n})\nexport class DialogComponent implements OnInit {\n @Input() message: string;\n @Input() buttonText: string;\n @Input() buttonIcon: string;\n @Input() buttonPalette: string;\n @Input() showCancelButton: boolean;\n\n constructor(public modal: CurrentModal, private data: DynamicData) {}\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 ngOnInit(): void {}\n}\n","<div class=\"padding-2 font-body-2\">\n {{message | transloco}}\n</div>\n<teta-toolbar class=\"justify-content-end\">\n <button teta-button\n *ngIf=\"showCancelButton\"\n (click)=\"cancel()\"\n [palette]=\"'text'\"\n [view]=\"'ghost'\">\n {{'common.cancel' | transloco}}\n </button>\n\n <button teta-button\n (click)=\"ok()\"\n [square]=\"!buttonText?.length\"\n [palette]=\"buttonPalette\">\n <teta-icon *ngIf=\"buttonIcon\" [name]=\"buttonIcon\"></teta-icon>\n <ng-container *ngIf=\"buttonText?.length > 0\">{{buttonText | transloco}}</ng-container>\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';\nimport { ToolbarModule } from '../toolbar/toolbar.module';\nimport { ButtonModule } from '../button/button.module';\nimport { TRANSLOCO_SCOPE, TranslocoModule } from '@ngneat/transloco';\nimport { IconModule } from '../icon/icon.module';\n\n@NgModule({\n declarations: [ModalContainerComponent, DialogComponent],\n exports: [ModalContainerComponent, DialogComponent],\n imports: [\n CommonModule,\n ToolbarModule,\n ButtonModule,\n TranslocoModule,\n IconModule,\n ],\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 {\n onClose: Observable<IModalResult>;\n private _onClose: Subject<IModalResult> = new Subject<IModalResult>();\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 this._content.viewRef.destroy();\n }\n }\n}\n","import {ComponentRef, ViewRef} from '@angular/core';\n\nexport class TetaContentRef {\n constructor(public nodes: any[], public viewRef?: ViewRef, 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';\nimport { TetaContentRef } from '../contract/teta-content-ref';\nimport { DynamicData } from '../contract/dynamic-data';\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>,\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>,\n content: TetaContentRef,\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(\n content: string | TemplateRef<any> | Type<any>,\n context: any\n ): 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(\n content: TemplateRef<any>,\n context: any\n ): TetaContentRef {\n const viewRef = content.createEmbeddedView(context);\n this._appRef.attachView(viewRef);\n return new TetaContentRef([viewRef.rootNodes], viewRef);\n }\n\n private fromComponent(\n content: any,\n injector: Injector,\n context: any\n ): TetaContentRef {\n const componentFactory =\n this._componentFactoryResolver.resolveComponentFactory<any>(content);\n const componentRef = componentFactory.create(injector);\n for (const key in context) {\n if (context.hasOwnProperty(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(\n [[componentNativeEl]],\n componentRef.hostView,\n componentRef\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(\n content: string | TemplateRef<any> | Type<any>,\n data?: any,\n config?: IModalConfig,\n injector?: Injector\n ): ModalInstance {\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(\n ModalContainerComponent,\n contentInstance,\n injector,\n this._container\n );\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(\n content: string | TemplateRef<any> | Type<any>,\n context: any,\n currentModal: CurrentModal\n ): 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(\n currentModal: CurrentModal,\n data: DynamicData,\n parent: Injector\n ): 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';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DialogService {\n constructor(private _modal: ModalService) {}\n\n alert(message: string): void {\n this.createDialog(message, 'common.ok', null, 'primary', false);\n }\n\n confirm(\n message: string,\n buttonText: string = 'common.ok',\n buttonIcon: string = null,\n buttonPalette: string = 'primary'\n ): Observable<boolean> {\n return this.createDialog(\n message,\n buttonText,\n buttonIcon,\n buttonPalette,\n true\n ).pipe(\n map((result: IModalResult) => result.reason === ModalCloseReason.resolve)\n );\n }\n\n private createDialog(\n message: string,\n buttonText: string = 'common.ok',\n buttonIcon: string = null,\n buttonPalette: string = 'primary',\n showCancelButton: boolean = true\n ): Observable<IModalResult> {\n const dialog = this._modal.create(\n DialogComponent,\n {\n message,\n buttonText,\n buttonIcon,\n buttonPalette,\n showCancelButton,\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})\nexport class PagerComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<p>pager works!</p>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {PagerComponent} from './pager/pager.component';\nimport {IconModule} from '../icon/icon.module';\n\n@NgModule({\n declarations: [PagerComponent],\n exports: [PagerComponent],\n imports: [\n CommonModule,\n IconModule\n ]\n})\nexport class PagerModule {\n}\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?: {\n page?: number;\n pageSize?: number;\n count?: number;\n totalCount?: number;\n }) {\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 = 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 {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n OnInit,\n} 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 => *', [\n style({ opacity: '0' }),\n animate(300, style({ opacity: '1' })),\n ]),\n transition('* => void', [animate(150, style({ opacity: '0' }))]),\n ]),\n ],\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 {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {PanelComponent} from './panel/panel.component';\n\n@NgModule({\n declarations: [PanelComponent],\n exports: [PanelComponent],\n imports: [\n CommonModule\n ]\n})\nexport class PanelModule {\n}\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})\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 =\n (100 / (this.containerPosition.max - this.containerPosition.min)) *\n 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 (\n Math.round((exactValue - this.min) / this.step) * this.step + this.min\n );\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 class=\"progress-slider\"\n [class.progress-slider_visible]=\"moving\"\n #progressSlider\n (mousedown)=\"mousedown()\"\n (click)=\"click($event)\"\n [style.left.%]=\"percent\"></div>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ProgressBarComponent} from './progress-bar/progress-bar.component';\n\n@NgModule({\n declarations: [ProgressBarComponent],\n exports: [ProgressBarComponent],\n imports: [\n CommonModule\n ]\n})\nexport class ProgressBarModule {\n}\n","import {\n AbstractControl,\n FormControl,\n FormGroup,\n ValidationErrors,\n Validators,\n} from '@angular/forms';\nimport { TableColumn } from '../component/table/contract/table-column';\nimport { ArrayUtil } from '../common/util/array-util';\n\nexport class FormsUtil {\n static validateAllFormFields(formGroup: FormGroup) {\n Object.keys(formGroup.controls).forEach((field) => {\n const control = formGroup.get(field);\n if (control instanceof FormControl) {\n control.markAsTouched({ onlySelf: true });\n control.markAsDirty({ onlySelf: true });\n } else if (control instanceof FormGroup) {\n this.validateAllFormFields(control);\n }\n });\n }\n\n static controlIsInvalid(formGroup: FormGroup, controlName: string) {\n return (\n formGroup.controls[controlName]?.invalid &&\n formGroup.controls[controlName]?.dirty\n );\n }\n\n static matchValuesValidator(\n matchTo: string\n ): (control: AbstractControl) => ValidationErrors | null {\n return (control: AbstractControl): ValidationErrors | null =>\n !!control.parent &&\n !!control.parent.value &&\n control.value === control.parent.controls[matchTo].value\n ? null\n : { isMatching: false };\n }\n\n static requiredIf(\n value: boolean\n ): (control: AbstractControl) => ValidationErrors | null {\n return (control: AbstractControl): ValidationErrors | null =>\n !!control.parent &&\n !!control.parent.value &&\n control.value != null &&\n value\n ? null\n : { isMatching: false };\n }\n\n static initFormFromColumns(columns: TableColumn[], dataItem: any) {\n const form = new FormGroup({});\n const flat = ArrayUtil.flatten(columns, 'columns');\n flat.forEach((column: TableColumn) => {\n const control = new FormControl(\n {\n value: dataItem ? dataItem[column.name] : undefined,\n disabled: !column.editable,\n },\n FormsUtil.getValidators(column)\n );\n form.registerControl(column.name, control);\n });\n return form;\n }\n\n static getValidators(column: TableColumn) {\n const validators = [];\n if (column.required) {\n validators.push(Validators.required);\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 return validators;\n }\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';\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})\nexport class ToggleComponent implements ControlValueAccessor, OnInit {\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 }\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 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.markForCheck();\n }\n}\n","<span class=\"font-body-3 row_auto\" *ngIf=\"!noLabel\">\n <ng-content></ng-content>\n</span>\n<div class=\"toggle-button\" [class.toggle-button-on]=\"model\" [ngClass]=\"paletteClass\">\n <div class=\"toggle-button-circle\"></div>\n</div>\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 { DynamicComponentService } from '../common/service/dynamic-component.service';\nimport { Align } from '../common/enum/align.enum';\nimport { VerticalAlign } from '../common/enum/vertical-align.enum';\nimport { filter, takeWhile } from 'rxjs/operators';\nimport { TetaContentRef } from '../common/contract/teta-content-ref';\nimport { PopupContentComponent } from '../component/dynamic-component/popup-content/popup-content.component';\n\n@Directive()\nexport abstract class DynamicContentBaseDirective implements OnInit, OnDestroy {\n @Input() data: any;\n @Input() className: string | string[];\n @Input() align: Align = Align.left;\n @Input() verticalAlign: VerticalAlign = VerticalAlign.bottom;\n @Input() appendToBody: boolean;\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 @Output() openChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n protected _alive = true;\n protected _componentRef: ComponentRef<any>;\n protected _content: TetaContentRef;\n protected _open = false;\n\n protected abstract get _dynamicContent():\n | string\n | TemplateRef<any>\n | Type<any>;\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 ngOnInit(): void {}\n\n protected createContentRef<T>(\n className?: string | string[]\n ): 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(\n this._dynamicContent,\n this._injector,\n context\n );\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 if (this._open) {\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\n protected abstract setPosition(): void;\n}\n","import {\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';\nimport {DynamicContentBaseDirective} from '../dynamic-content-base.directive';\nimport {DOCUMENT} from '@angular/common';\nimport {DynamicComponentService} from '../../common/service/dynamic-component.service';\nimport {PositionUtil} from '../../common/util/position-util';\nimport {ArrayUtil} from '../../common/util/array-util';\nimport {Align} from '../../common/enum/align.enum';\nimport {VerticalAlign} from '../../common/enum/vertical-align.enum';\nimport {DomUtil} from '../../common/util/dom-util';\nimport Timeout = NodeJS.Timeout;\n\n@Directive({\n selector: '[tetaHint]',\n})\nexport class HintDirective\n extends DynamicContentBaseDirective\n 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\n get _dynamicContent() {\n return this.tetaHint;\n }\n\n private _timeout: Timeout;\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 (\n this._open &&\n this._componentRef &&\n DomUtil.clickedInside(this._componentRef.location.nativeElement, event)\n ) {\n event.stopPropagation();\n }\n }\n\n protected setPosition() {\n if (this._componentRef && this._open) {\n if (!this._componentRect) {\n this._componentRect =\n 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(\n this._componentRef.location.nativeElement,\n position\n );\n }\n }\n\n private createHint(): void {\n if (!this._dynamicContent) {\n return;\n }\n this._componentRef = this.createContentRef();\n this._componentRef.instance.className = [\n ...ArrayUtil.asArray(this.className),\n 'hint',\n ];\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { TableColumn } from '../../../table/contract/table-column';\nimport { IDictionary } from '../../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../../common/contract/i-id-name';\nimport { FilterType } from '../../../filter/enum/filter-type.enum';\nimport { FormGroup } from '@angular/forms';\nimport { FormsUtil } from '../../../../util/forms-util';\nimport { TranslocoService } from '@ngneat/transloco';\nimport { filter, takeWhile } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\nimport {Align} from '../../../../common/enum/align.enum';\n\n@Component({\n selector: 'teta-property-grid-item',\n templateUrl: './property-grid-item.component.html',\n styleUrls: ['./property-grid-item.component.scss'],\n})\nexport class PropertyGridItemComponent<T> implements OnInit, OnDestroy {\n @Input() column: TableColumn;\n @Input() hideNonEditable: boolean;\n @Input() dict: IDictionary<IIdName<any>[]>;\n\n @Input()\n set formGroup(form: FormGroup) {\n this._formGroup = form;\n this._formSub?.unsubscribe();\n this._formSub = this._formGroup.controls[this.column.name].valueChanges\n .pipe(\n takeWhile(() => this._alive),\n filter(\n (_) =>\n this.column.filterType !== FilterType.string &&\n this.column.filterType !== FilterType.number\n )\n )\n .subscribe((_) => {\n this.controlValueChange.emit({\n id: _,\n name: this.column.name,\n });\n });\n }\n\n get formGroup() {\n return this._formGroup;\n }\n\n @Input() horizontal: boolean;\n @Output() controlValueChange = new EventEmitter<IIdName<any>>();\n align = Align;\n filterTypeEnum = FilterType;\n\n private _formGroup: FormGroup;\n private _formSub: Subscription;\n\n get caption(): string {\n if (this.column.filterType === FilterType.boolean) {\n return '';\n }\n return `${this.column.caption}${\n this.column.unit ? `, ${this.column.unit}` : ''\n }`;\n }\n\n private _alive = true;\n\n constructor(private _transloco: TranslocoService) {}\n\n getDict() {\n const dict = this.dict[this.column.name];\n if (this.column.parentName?.length > 0) {\n return dict?.filter(\n (dictItem: IIdName<any>) =>\n dictItem.parentId ===\n 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): string {\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 }\n\n valueChange() {\n this.controlValueChange.emit({\n id: this.formGroup.controls[this.column.name].value,\n name: this.column.name,\n });\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy() {\n this._alive = false;\n this._formSub?.unsubscribe();\n }\n}\n","<teta-input [label]=\"caption\"\n [tetaHint]=\"column.hint\"\n [align]=\"align.left\"\n [formGroup]=\"formGroup\"\n [horizontal]=\"horizontal\"\n *ngIf=\"column.editable || !hideNonEditable\">\n <ng-container [ngSwitch]=\"column.filterType\">\n <teta-select class=\"row_auto\"\n *ngSwitchCase=\"filterTypeEnum.list\"\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\"></teta-select>\n <teta-date-picker *ngSwitchCase=\"filterTypeEnum.date\"\n class=\"row_auto\"\n [appendToBody]=\"true\"\n [invalid]=\"controlIsInvalid(column.name)\"\n [formControlName]=\"column.name\"></teta-date-picker>\n <teta-toggle *ngSwitchCase=\"filterTypeEnum.boolean\"\n [formControlName]=\"column.name\">{{column.caption}}</teta-toggle>\n <teta-text-field class=\"row_auto\"\n *ngSwitchDefault\n (focusout)=\"valueChange()\"\n [onlyNumber]=\"column.filterType === filterTypeEnum.number\"\n [placeholder]=\"column.caption\"\n [invalid]=\"controlIsInvalid(column.name)\"\n [formControlName]=\"column.name\"></teta-text-field>\n </ng-container>\n <div *ngIf=\"controlIsInvalid(column.name)\"\n ngProjectAs=\"message\"\n class=\"color-red-50\">\n {{getError(column)}}\n </div>\n</teta-input>\n","import {\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { TableColumn } from '../../../table/contract/table-column';\nimport { IDictionary } from '../../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../../common/contract/i-id-name';\nimport { FormGroup } from '@angular/forms';\n\n@Component({\n selector: 'teta-property-grid-group',\n templateUrl: './property-grid-group.component.html',\n styleUrls: ['./property-grid-group.component.scss'],\n})\nexport class PropertyGridGroupComponent<T> implements OnInit {\n @HostBinding('class.form-container') formClass = true;\n @Input() column: TableColumn;\n @Input() hideNonEditable: boolean;\n @Input() dict: IDictionary<IIdName<any>[]>;\n @Input() formGroup: FormGroup;\n @Input() horizontal: boolean;\n @Output() controlValueChange = new EventEmitter<IIdName<any>>();\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<div class=\"font-title-3\">{{column.caption}}</div>\n<ng-container *ngFor=\"let col of column.columns\">\n <ng-container *ngIf=\"col.columns?.length < 1\">\n <teta-property-grid-item *ngIf=\"column.editable || !hideNonEditable\"\n [dict]=\"dict\"\n [column]=\"col\"\n [hideNonEditable]=\"hideNonEditable\"\n (controlValueChange)=\"controlValueChange.emit($event)\"\n [horizontal]=\"horizontal\"\n [formGroup]=\"formGroup\"></teta-property-grid-item>\n </ng-container>\n <ng-container *ngIf=\"col.columns?.length > 0\">\n <teta-property-grid-group [dict]=\"dict\"\n [column]=\"col\"\n [hideNonEditable]=\"hideNonEditable\"\n [horizontal]=\"horizontal\"\n (controlValueChange)=\"controlValueChange.emit($event)\"\n [formGroup]=\"formGroup\"></teta-property-grid-group>\n </ng-container>\n</ng-container>\n","import {\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { TableColumn } from '../../table/contract/table-column';\nimport { IDictionary } from '../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { FormGroup } from '@angular/forms';\n\n@Component({\n selector: 'teta-property-grid',\n templateUrl: './property-grid.component.html',\n styleUrls: ['./property-grid.component.scss'],\n})\nexport class PropertyGridComponent<T> implements OnInit, OnDestroy {\n @HostBinding('class.form-container') formClass = true;\n\n @Input() hideNonEditable: boolean;\n @Input() columns: TableColumn[];\n @Input() dict: IDictionary<IIdName<any>[]>;\n @Input() formGroup: FormGroup;\n @Input() horizontal: boolean;\n\n @Output() controlValueChange = new EventEmitter<IIdName<any>>();\n\n private _alive = true;\n\n constructor() {}\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 ngOnInit(): void {}\n\n ngOnDestroy() {\n this._alive = false;\n }\n\n private getDictValue(value: any, name: string) {\n return this.dict[name]?.find((_) => _.id === value);\n }\n}\n","<ng-container *ngIf=\"columns?.length\">\n <ng-container *ngFor=\"let column of columns\">\n <teta-property-grid-item *ngIf=\"column.columns?.length < 1 && (column.editable || !hideNonEditable)\"\n [dict]=\"dict\"\n [column]=\"column\"\n [formGroup]=\"formGroup\"\n [horizontal]=\"horizontal\"\n (controlValueChange)=\"onControlValueChange($event)\"\n [hideNonEditable]=\"hideNonEditable\"></teta-property-grid-item>\n <teta-property-grid-group *ngIf=\"column.columns?.length > 0\"\n [dict]=\"dict\"\n [column]=\"column\"\n [formGroup]=\"formGroup\"\n [horizontal]=\"horizontal\"\n (controlValueChange)=\"onControlValueChange($event)\"\n [hideNonEditable]=\"hideNonEditable\"></teta-property-grid-group>\n </ng-container>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'teta-numeric-item-default',\n templateUrl: './numeric-item-default.component.html',\n styleUrls: ['./numeric-item-default.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NumericItemDefaultComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<p>numeric-item-default works!</p>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'teta-date-item-default',\n templateUrl: './date-item-default.component.html',\n styleUrls: ['./date-item-default.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DateItemDefaultComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<p>date-item-default works!</p>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'teta-list-item-default',\n templateUrl: './list-item-default.component.html',\n styleUrls: ['./list-item-default.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ListItemDefaultComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<p>list-item-default works!</p>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'teta-string-item-default',\n templateUrl: './string-item-default.component.html',\n styleUrls: ['./string-item-default.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StringItemDefaultComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<p>string-item-default works!</p>\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {formatNumber} from '../util/number-helper';\n\n@Pipe({\n name: 'tetaNumber'\n})\nexport class NumberPipe implements PipeTransform {\n transform(value: number,\n decimalLength: number = 2,\n chunkDelimiter: string = '',\n decimalDelimiter: string = '.',\n chunkLength: number = 3): string {\n if (value === null || value === undefined) {\n return '';\n }\n if (value !== value / 1) {\n return value.toString();\n }\n value /= 1;\n return formatNumber(value,\n decimalLength,\n chunkDelimiter,\n decimalDelimiter,\n chunkLength);\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {NumberPipe} from './number.pipe';\n\n@NgModule({\n declarations: [NumberPipe],\n exports: [\n NumberPipe\n ],\n imports: [\n CommonModule\n ]\n})\nexport class NumberPipeModule {\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ToggleComponent } from './toggle/toggle.component';\nimport { IconModule } from '../icon/icon.module';\n\n@NgModule({\n declarations: [ToggleComponent],\n exports: [ToggleComponent],\n imports: [CommonModule, IconModule],\n})\nexport class ToggleModule {}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {HintDirective} from './hint.directive';\nimport {DynamicComponentModule} from '../../component/dynamic-component/dynamic-component.module';\n\n@NgModule({\n declarations: [HintDirective],\n exports: [HintDirective],\n imports: [\n CommonModule,\n DynamicComponentModule\n ]\n})\nexport class HintModule {\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {PropertyGridComponent} from './property-grid/property-grid.component';\nimport {NumericItemDefaultComponent} from './default/numeric-item-default/numeric-item-default.component';\nimport {DateItemDefaultComponent} from './default/date-item-default/date-item-default.component';\nimport {ListItemDefaultComponent} from './default/list-item-default/list-item-default.component';\nimport {StringItemDefaultComponent} from './default/string-item-default/string-item-default.component';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {NumberPipeModule} from '../../pipe/number-pipe/number-pipe.module';\nimport {DatePickerModule} from '../date-picker/date-picker.module';\nimport {SelectModule} from '../select/select.module';\nimport {PropertyGridGroupComponent} from './property-grid/property-grid-group/property-grid-group.component';\nimport {PropertyGridItemComponent} from './property-grid/property-grid-item/property-grid-item.component';\nimport {OnlyNumberModule} from '../../directive/only-number/only-number.module';\nimport {InputModule} from '../input/input.module';\nimport {ToggleModule} from '../toggle/toggle.module';\nimport {TRANSLOCO_SCOPE, TranslocoModule} from '@ngneat/transloco';\nimport {HintModule} from '../../directive/hint/hint.module';\n\n@NgModule({\n declarations: [\n PropertyGridComponent,\n NumericItemDefaultComponent,\n DateItemDefaultComponent,\n ListItemDefaultComponent,\n StringItemDefaultComponent,\n PropertyGridGroupComponent,\n PropertyGridItemComponent,\n ],\n exports: [PropertyGridComponent],\n imports: [\n CommonModule,\n FormsModule,\n NumberPipeModule,\n DatePickerModule,\n SelectModule,\n OnlyNumberModule,\n InputModule,\n ToggleModule,\n ReactiveFormsModule,\n TranslocoModule,\n HintModule,\n ],\n providers: [\n {\n provide: TRANSLOCO_SCOPE,\n useValue: {scope: 'errors', alias: 'errors'},\n multi: true,\n },\n ],\n})\nexport class PropertyGridModule {\n}\n","export enum SidebarPosition {\n left,\n right,\n bottom,\n top\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { SidebarPosition } from '../sidebar-position.enum';\nimport { animate, style, transition, trigger } from '@angular/animations';\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 => *', [\n style({ opacity: '0' }),\n animate(300, style({ opacity: '1' })),\n ]),\n transition('* => void', [animate(300, style({ opacity: '0' }))]),\n ]),\n ],\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","<div *ngIf=\"backdrop && open\"\n [@sidebar]\n (click)=\"setOpen(false)\"\n class=\"sidebar-backdrop\"></div>\n<div 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 *ngIf=\"open\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SidebarComponent } from './sidebar/sidebar.component';\nimport {ButtonModule} from '../button/button.module';\nimport {IconModule} from '../icon/icon.module';\n\n@NgModule({\n declarations: [SidebarComponent],\n exports: [SidebarComponent],\n imports: [\n CommonModule,\n ButtonModule,\n IconModule\n ]\n})\nexport class SidebarModule { }\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 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';\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})\nexport class SwitchComponent\n implements OnInit, OnDestroy, ControlValueAccessor\n{\n @HostBinding('class.switch') switchClass = true;\n\n private _alive = true;\n private _value: any;\n\n constructor(private svc: SwitchService, private cdr: ChangeDetectorRef) {\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})\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 (\n this.svcValue === this.value ||\n (this.svcValue instanceof Array && this.svcValue.indexOf(this.value) >= 0)\n ) {\n result.push('switch-button_active');\n }\n return result.join(' ');\n }\n\n private svcValue: any;\n private _alive = true;\n\n constructor(private svc: SwitchService, private cdr: ChangeDetectorRef) {\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","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {SwitchComponent} from './switch/switch.component';\nimport {SwitchButtonComponent} from './switch-button/switch-button.component';\n\n\n@NgModule({\n declarations: [SwitchComponent, SwitchButtonComponent],\n exports: [SwitchComponent, SwitchButtonComponent],\n imports: [\n CommonModule\n ]\n})\nexport class SwitchModule {\n}\n","import * as hash from 'object-hash';\n\nexport class TableRow<T> {\n set edit(value: boolean) {\n if (value !== this._edit) {\n this._edit = value;\n this._hash = null;\n }\n }\n\n get edit(): boolean {\n return this._edit;\n }\n\n expanded = false;\n showDetails = false;\n data: T;\n isGroup: boolean;\n level: number;\n path: any[] = [];\n groupColumn: string;\n groupValue: any[] = [];\n\n // children: GridRow<T>[] = [];\n // parents: GridRow<T>[];\n // private backup: any = {};\n private _edit = false;\n private _hash: string | null;\n\n constructor(data?: any) {\n if (data) {\n this.data = data;\n }\n }\n\n public get hash(): string {\n if (!this._hash) {\n const hashObj: any = { ...this.data };\n if (hashObj.children) {\n delete hashObj.children;\n }\n this._hash = hash.sha1(hashObj);\n }\n return this._hash;\n }\n\n public editData(items?: any): void {\n this.data = items;\n this._hash = null;\n }\n}\n","import {FilterItem} from '../../filter/contarct/filter-item';\nimport {FilterType} from '../../filter/enum/filter-type.enum';\nimport {StringFilterType} from '../../filter/enum/string-filter-type.enum';\nimport {ListFilterType} from '../../filter/enum/list-filter-type.enum';\nimport {TableRow} from './table-row';\nimport {AggregationType} from '../enum/aggregation-type.enum';\nimport {TemplateRef} from '@angular/core';\nimport {ICellCoordinates} from './i-cell-coordinates';\n\nexport class TableColumn extends FilterItem {\n /**\n * Ширина\n */\n width = 150;\n /**\n * Коэффициент растяжения ячейки\n */\n flex = 0;\n /**\n * Стобец закреплен\n */\n locked: boolean;\n /**\n * Название столбца в строке результатов\n */\n override name: string;\n /**\n * Название столбца родителя\n */\n parentName: string;\n /**\n * Название столбца для заголовка таблицы\n */\n override caption: string;\n /**\n * Единицы измерения\n */\n unit: string;\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: ICellCoordinates<any>) => boolean);\n /**\n * Компонент для рендера ячейки\n */\n cellComponent: any;\n /**\n * Компонент для рендера заголовка столбца ячейки\n */\n headCellComponent: any;\n /**\n * Custom head dropdown for column\n */\n headDropdownTemplate: TemplateRef<any>;\n /**\n * Группировать по этому столбцу\n */\n groupBy: boolean;\n /**\n * Порядок группировки\n */\n groupingOrder = 0;\n /**\n *\n */\n groupByFn: ((row: TableRow<any>) => string) | undefined;\n /**\n * Дочерние колонки\n */\n override columns: TableColumn[];\n\n /**\n * Aggregate type\n */\n aggregate: AggregationType;\n\n /**\n * Значение по умолчанию при создании записи\n */\n defaultValue: any;\n\n /**\n * Значение по умолчанию при создании записи\n */\n maxValue: number;\n\n /**\n * Значение по умолчанию при создании записи\n */\n minValue: number;\n\n /**\n * Поле обязательно для заполнения\n */\n required: boolean;\n\n /**\n * Инициализация из анонимного объекта\n */\n constructor(options?: {\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 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: ICellCoordinates<any>) => boolean);\n objectType?: boolean;\n cellComponent?: any;\n headCellComponent?: any;\n headDropdownTemplate?: TemplateRef<any>;\n filterComponent?: any;\n groupBy?: boolean;\n groupingOrder?: number;\n groupByFn?: (row: TableRow<any>) => string;\n columns?: any[];\n aggregate?: AggregationType;\n defaultValue?: any;\n maxValue?: number;\n minValue?: number;\n required?: boolean;\n }) {\n super(options);\n this.width = options?.width ?? 150;\n this.flex = options?.flex ?? 0;\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.data = options?.data;\n this.editable = options?.editable ?? true;\n this.groupBy = options?.groupBy ?? false;\n this.groupingOrder = options?.groupingOrder ?? 0;\n this.groupByFn = options?.groupByFn;\n this.headCellComponent = options?.headCellComponent;\n this.headDropdownTemplate = options?.headDropdownTemplate;\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.required = options?.required;\n this.columns = options?.columns?.map((x) => new TableColumn(x)) ?? [];\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 { 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 (\n state.stringFilters &&\n state.stringFilters.some((filter) => filter.value && filter.value.length)\n ) {\n hasFilters = true;\n }\n if (\n state.listFilters &&\n state.listFilters.some((filter) => filter.value && filter.value.length)\n ) {\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 &&\n filter.value.lessThan !== undefined) ||\n (filter.value.greaterThan !== null &&\n filter.value.greaterThan !== undefined) ||\n (filter.value.equalsTo !== null &&\n 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 &&\n filter.value.lessThan !== undefined) ||\n (filter.value.greaterThan !== null &&\n filter.value.greaterThan !== undefined))\n )\n ) {\n hasFilters = true;\n }\n\n return hasFilters;\n }\n\n static getSortState(\n state: FilterState,\n column: TableColumn\n ): 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;\n }\n let filtered = false;\n switch (column.filterType) {\n case FilterType.string:\n if (state?.stringFilters) {\n const filter = state.stringFilters.find(\n (x) => x.field === column.filterField\n );\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(\n (x) => x.field === column.filterField\n );\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(\n (x) => x.field === column.filterField\n );\n if (\n filter &&\n filter.value &&\n ((filter.value.lessThan !== null &&\n filter.value.lessThan !== undefined) ||\n (filter.value.greaterThan !== null &&\n filter.value.greaterThan !== undefined) ||\n (filter.value.equalsTo !== null &&\n 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(\n (x) => x.field === column.filterField\n );\n if (\n filter &&\n filter.value &&\n ((filter.value.lessThan !== null &&\n filter.value.lessThan !== undefined) ||\n (filter.value.greaterThan !== null &&\n 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(\n (sortParam: SortParam) => sortParam.field === column.sortField\n );\n if (sort === null || sort === undefined) {\n if (!shiftKey) {\n state.sortParams.length = 0;\n }\n state.sortParams.push(\n new SortParam({ field: column.sortField, asc: true, order: 0 })\n );\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 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(\n (_) => _.field !== column.sortField\n );\n return new FilterState(state);\n }\n\n static clearAllSort(state: FilterState): FilterState {\n state.sortParams = [];\n return new FilterState(state);\n }\n}\n","export enum SelectType {\n none,\n multiple,\n single\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","import {Injectable} from '@angular/core';\nimport {TableRow} from '../contract/table-row';\nimport {ICellCoordinates} from '../contract/i-cell-coordinates';\nimport {TableColumn} from '../contract/table-column';\nimport {FilterState} from '../../filter/contarct/filter-state';\nimport {BehaviorSubject, Observable, Subject} from 'rxjs';\nimport {ColumnResizeEvent} from '../contract/column-resize-event';\nimport {ColumnReorderEvent} from '../contract/column-reorder-event';\nimport {SortEvent} from '../contract/sort-event';\nimport {ArrayUtil} from '../../../common/util/array-util';\nimport {StateUtil} from '../util/state-util';\nimport {SelectType} from '../enum/select-type.enum';\nimport {EditType} from '../enum/edit-type.enum';\nimport {EditEvent} from '../enum/edit-event.enum';\nimport {ListFilterType} from '../../filter/enum/list-filter-type.enum';\nimport {ListFilter} from '../../filter/contarct/list-filter';\nimport {FilterType} from '../../filter/enum/filter-type.enum';\nimport {NumericFilterValue} from '../../filter/contarct/numeric-filter-value';\nimport {NumericFilter} from '../../filter/contarct/numeric-filter';\nimport {StringFilter} from '../../filter/contarct/string-filter';\nimport {DateFilterValue} from '../../filter/contarct/date-filter-value';\nimport {DateFilter} from '../../filter/contarct/date-filter';\nimport {IDictionary} from '../../../common/contract/i-dictionary';\nimport {IIdName} from '../../../common/contract/i-id-name';\nimport {DateUtil} from '../../../util/date-util';\nimport objectHash from 'object-hash';\nimport {TableColumnStore} from '../contract/table-column-store';\nimport {ICellValue} from '../contract/i-cell-value';\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 state: Observable<FilterState>;\n selectType: SelectType;\n editRowStart: Observable<ICellCoordinates<T>>;\n editRowStop: Observable<ICellCoordinates<T>>;\n\n editCellStart: Observable<ICellCoordinates<T>>;\n editCellStop: Observable<ICellCoordinates<T>>;\n valueChanged: Observable<ICellCoordinates<T>>;\n valueSet: Observable<ICellValue<T>>;\n stateChanged: Observable<FilterState>;\n filterClear: Observable<TableColumn>;\n groupToggle: Observable<TableRow<T>>;\n selectedRows: Observable<TableRow<T>[]>;\n activeRow: Observable<TableRow<T>>;\n hiddenColumns: Observable<string[]>;\n scrollIndex: Observable<number>;\n\n editType: EditType;\n editEvent: EditEvent;\n rowEditable: boolean | ((row: TableRow<T>) => boolean);\n // cellEditable: boolean | ((row: ICellCoordinates<T>) => boolean);\n\n get dragSource() {\n return this._dragSource;\n }\n\n private initialColumnsHash: string;\n private initialColumns: TableColumn[] = [];\n private displayColumns: TableColumn[] = [];\n private _columns: BehaviorSubject<TableColumn[]> = new BehaviorSubject<TableColumn[]>([]);\n private initialData: TableRow<T>[] = [];\n private _displayData: BehaviorSubject<TableRow<T>[]> = new BehaviorSubject<TableRow<T>[]>([]);\n private _dict: BehaviorSubject<IDictionary<IIdName<any>[]>> =\n new BehaviorSubject<IDictionary<IIdName<any>[]>>({});\n private _state: BehaviorSubject<FilterState> =\n new BehaviorSubject<FilterState>(new FilterState());\n private _cookieName: string;\n private _hiddenCookieName: string;\n private _columnsCookieName: string;\n private _editRowStart = new Subject<ICellCoordinates<T> | null>();\n private _editRowStop = new Subject<ICellCoordinates<T> | null>();\n private _editCellStart = new Subject<ICellCoordinates<T> | null>();\n private _editCellStop = new Subject<ICellCoordinates<T> | null>();\n private _valueChanged = new Subject<ICellCoordinates<T> | null>();\n private _valueSet = new Subject<ICellValue<T>>();\n private _stateChanged = new Subject<FilterState>();\n private _filterClear = new Subject<TableColumn>();\n private _dragSource: TableColumn;\n private _groupToggle = new Subject<TableRow<T>>();\n private _selectedRows = new BehaviorSubject<TableRow<T>[]>([]);\n private _activeRow = new BehaviorSubject<TableRow<T>>(null);\n private _hiddenColumns = new BehaviorSubject<string[]>([]);\n private _scrollIndex = new Subject<number>();\n\n private _currentEditRow: ICellCoordinates<T>;\n private _currentEditCell: ICellCoordinates<T>;\n\n constructor() {\n this.columns = this._columns.asObservable();\n this.displayData = this._displayData.asObservable();\n this.dict = this._dict.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.groupToggle = this._groupToggle.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.initialData = data?.map((_) => new TableRow<T>(_));\n this._displayData.next(this.initialData);\n }\n\n setDict(dict: IDictionary<IIdName<any>[]>): void {\n this._dict.next(dict);\n }\n\n setColumns(columns: TableColumn[]): void {\n this.initialColumns = columns ? columns.map((_) => new TableColumn(_)) : [];\n this.initialColumnsHash = objectHash(this.initialColumns, {\n algorithm: 'sha1',\n ignoreUnknown: true,\n excludeKeys: key => key === 'headDropdownTemplate',\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._cookieName) {\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 localStorage.removeItem(this._columnsCookieName);\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 const savedColumns = JSON.parse(\n localStorage.getItem(this._columnsCookieName)\n );\n if (savedColumns && savedColumns.hash === this.initialColumnsHash) {\n return this.restoreColumnsState(savedColumns.columns);\n }\n return null;\n }\n\n restoreColumnsState(columns: TableColumnStore[]) {\n return columns.map((column: TableColumnStore) => {\n const found = ArrayUtil.findRecursive(\n this.initialColumns,\n (item) => item.name === column.name,\n 'columns'\n );\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 state.save(this._cookieName);\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?.length > 0 && FilterState.restore(this._cookieName)) {\n let newState = Object.assign(\n this._state.value,\n FilterState.restore(this._cookieName)\n );\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 localStorage.setItem(this._hiddenCookieName, JSON.stringify(hiddenColumns));\n }\n\n restoreHiddenColumns(): void {\n const hiddenColumns = localStorage.getItem(this._hiddenCookieName) || '[]';\n this._hiddenColumns.next(JSON.parse(hiddenColumns));\n }\n\n sort(sortEvent: SortEvent): void {\n if (sortEvent.column.sortable) {\n this.setState(StateUtil.sortColumn(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(\n `teta-head-cell[data-column=${item.name}]`\n ) 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) =>\n this.setColumnAutoWidth(col, tableElement as HTMLElement)\n );\n this._columns.next(this.displayColumns);\n this.saveColumnsState();\n }\n\n reorderColumn(column: TableColumn, insertBefore: boolean): void {\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 startEditRow(cellCoordinates: ICellCoordinates<T>): void {\n if (this._currentEditRow?.row !== cellCoordinates?.row) {\n if (this._currentEditRow != null) {\n const row = this._displayData.value.indexOf(this._currentEditRow.row)\n this._editRowStop.next(this._currentEditRow);\n }\n if (cellCoordinates === null) {\n this._editRowStart.next(cellCoordinates);\n this._currentEditRow = cellCoordinates;\n } else {\n if (\n this.boolOrFuncCallback<TableRow<T>>(this.rowEditable)(\n cellCoordinates.row\n )\n ) {\n this._editRowStart.next(cellCoordinates);\n this._currentEditRow = cellCoordinates;\n }\n }\n }\n }\n\n startEditCell(cellCoordinates: ICellCoordinates<T>): void {\n if (\n this._currentEditCell?.column.name !== cellCoordinates?.column.name ||\n this._currentEditCell?.row !== cellCoordinates?.row\n ) {\n if (this._currentEditCell != null) {\n this._editCellStop.next(this._currentEditCell);\n }\n if (\n this.boolOrFuncCallback<ICellCoordinates<T>>(cellCoordinates.column.editable)(\n cellCoordinates\n )\n ) {\n this._editCellStart.next(cellCoordinates);\n this._currentEditCell = cellCoordinates;\n }\n }\n }\n\n setActiveRow(row: TableRow<T>): void {\n this._activeRow.next(row);\n }\n\n selectRows(rows: TableRow<T>[]): void {\n this._selectedRows.next(rows);\n }\n\n selectRow(row: TableRow<T>): void {\n if (this.selectType === SelectType.none) {\n return;\n }\n if (this.selectType === SelectType.single) {\n this._selectedRows.next([row]);\n } else {\n this._selectedRows.next([...this._selectedRows.value, row]);\n }\n }\n\n deselectRow(row: TableRow<T>): void {\n if (this.selectType === SelectType.none) {\n return;\n }\n if (this.selectType === SelectType.single) {\n this._selectedRows.next([]);\n } else {\n this._selectedRows.next(\n this._selectedRows.value.filter((_) => _ !== row)\n );\n }\n }\n\n selectAll() {\n this._selectedRows.next(this._displayData.value);\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(\n (_) => this._selectedRows.value.indexOf(_) >= 0\n )\n ) {\n return true;\n } else if (\n this._selectedRows.value == null ||\n this._selectedRows.value.length === 0\n ) {\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 toggleGroup(row: TableRow<T>): void {\n this._groupToggle.next(row);\n }\n\n changeValue(coordinates: ICellCoordinates<T>): void {\n this._valueChanged.next(coordinates);\n }\n\n setValue(cellValue: ICellValue<T>): void {\n this._valueSet.next(cellValue);\n }\n\n getRowByIndex(rowIndex: string) {\n return this._displayData.value[parseInt(rowIndex, 10)];\n }\n\n getColumnByName(columnName: string) {\n return ArrayUtil.findRecursive(\n this.displayColumns,\n (iterableNode) => columnName === iterableNode.name,\n 'columns'\n );\n }\n\n scrollToIndex(index: number) {\n this._scrollIndex.next(null);\n this._scrollIndex.next(index);\n }\n\n boolOrFuncCallback<M>(variable: boolean | ((row: M) => boolean)) {\n return (args: M) => {\n if (typeof variable === 'boolean') {\n return variable;\n } else if (this.isFunction(variable)) {\n return (variable as (row: M) => boolean)(args);\n }\n return true;\n };\n }\n\n private findParent(\n column: TableColumn,\n columns: TableColumn[]\n ): 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 getTableElement(element: HTMLElement) {\n return element.closest('teta-table');\n }\n\n private isFunction(obj: any) {\n return !!(obj && obj?.constructor && obj?.call && obj?.apply);\n }\n\n private setColumnAutoWidth(column: TableColumn, table: HTMLElement) {\n const cells = table.querySelectorAll(\n `teta-cell[data-column=${column.name}] .cell-text`\n );\n let maxWidth = 0;\n cells.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","import {TableRow} from '../contract/table-row';\nimport {TableColumn} from '../contract/table-column';\n\nexport abstract class GroupRowComponentBase<T> {\n /**\n * The row details are displayed for\n */\n abstract row: TableRow<T>;\n /**\n * displayed columns\n */\n abstract columns: TableColumn[];\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { GroupRowComponentBase } from '../../base/group-row-component-base';\nimport { TableRow } from '../../contract/table-row';\nimport { TableColumn } from '../../contract/table-column';\n\n@Component({\n selector: 'teta-group-row',\n templateUrl: './group-row.component.html',\n styleUrls: ['./group-row.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GroupRowComponent<T>\n extends GroupRowComponentBase<T>\n implements OnInit\n{\n @Input() row: TableRow<T>;\n @Input() columns: TableColumn[];\n\n constructor() {\n super();\n }\n\n ngOnInit(): void {}\n}\n","<span>{{row.groupValue[row.level]}} ()</span>\n<!--<span>{{row.groupValue[row.level]}} ({{row.children.length}})</span>-->\n","export enum EditType {\n cell,\n row\n}\n","export enum EditEvent {\n click,\n focus,\n doubleClick\n}\n","export class TableContextMenuConfig {\n contextMenu = true;\n copy = true;\n delete = true;\n add = true;\n paste = true;\n\n constructor(options?: {\n contextMenu?: boolean;\n copy?: boolean;\n delete?: boolean;\n add?: boolean;\n paste?: boolean;\n }) {\n if (options) {\n this.contextMenu = options?.contextMenu;\n this.copy = options?.copy;\n this.delete = options?.delete;\n this.add = options?.add;\n this.paste = options?.paste;\n }\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 public static getGridTemplateColumns(columns: TableColumn[]): string {\n const res = columns?.map((column: TableColumn) =>\n column.flex > 0 ? `minmax(${column.width}px, ${column.flex}fr)` : `${column.width}px`).join(' ');\n return res;\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].endsWith(filter.value);\n }\n if (filter.type === StringFilterType.Equals) {\n return item[filter.field] === filter.value;\n }\n if (filter.type === StringFilterType.StartsWith) {\n return item[filter.field].startsWith(filter.value);\n }\n return item[filter.field].indexOf(filter.value) >= 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 (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 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 (filter.value.lessThan === null || filter.value.lessThan === undefined\n ? true\n : filter.value.lessThan > item[filter.field]) &&\n (filter.value.greaterThan === null || filter.value.greaterThan === undefined\n ? true\n : filter.value.greaterThan < item[filter.field]) &&\n (filter.value.equalsTo === null || filter.value.equalsTo === undefined\n ? true\n : filter.value.equalsTo === item[filter.field]);\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 {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { TableService } from '../service/table.service';\nimport { takeWhile } from 'rxjs/operators';\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})\nexport class SelectionHeadCellComponent<T> implements OnInit, OnDestroy {\n @HostBinding('class.table-head__group') private readonly tableCellClass =\n true;\n\n private _alive = true;\n\n constructor(private _svc: TableService<T>, private _cdr: ChangeDetectorRef) {}\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\n .pipe(takeWhile((_) => this._alive))\n .subscribe((_) => {\n this._cdr.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","<teta-checkbox [binary]=\"true\"\n [allowNull]=\"true\"\n [noLabel]=\"true\"\n [ngModel]=\"allSelected()\"\n (ngModelChange)=\"selectAll($event)\"></teta-checkbox>\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 {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 {Component, HostBinding} from '@angular/core';\nimport {TableColumn} from '../contract/table-column';\n\n@Component({\n template: ''\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport abstract class HeadCellComponentBase {\n @HostBinding('class.table-head__cell__component')\n\n abstract column: TableColumn;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { HeadCellComponentBase } from '../../base/head-cell-component-base';\nimport { TableColumn } from '../../contract/table-column';\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})\nexport class DefaultHeadCellComponent\n extends HeadCellComponentBase\n implements OnInit\n{\n private _column: TableColumn;\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 constructor(private _cdr: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit(): void {}\n}\n","<div class=\"column column_auto align-center\" [tetaHint]=\"column.hint || column.caption\">\n <div class=\"table-head__cell__text align-center\">\n {{column.caption}}\n </div>\n <div *ngIf=\"column.unit\" class=\"table-head__cell__text align-center color-text-70\" style=\"overflow: visible;\">\n [{{column.unit}}]\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n Input,\n OnInit,\n ViewContainerRef,\n} 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})\nexport class HeadCellHostComponent implements OnInit {\n private _column: TableColumn;\n private componentRef: ComponentRef<HeadCellComponentBase>;\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 constructor(\n private viewContainerRef: ViewContainerRef\n ) {\n }\n\n ngOnInit(): void {\n if (!HeadCellComponentBase.isPrototypeOf(this.column.headCellComponent)) {\n this.column.headCellComponent = DefaultHeadCellComponent;\n }\n this.componentRef =\n this.viewContainerRef.createComponent<HeadCellComponentBase>(this.column.headCellComponent);\n this.componentRef.instance.column = this.column;\n this.init = true;\n }\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: '[tetaTabContent]'\n})\nexport class TabContentDirective {\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: '[tetaTabTitle]'\n})\nexport class TabTitleDirective {\n constructor(public template: TemplateRef<any>) {\n }\n}\n","import {\n AfterContentChecked,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n Input,\n QueryList,\n} 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})\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';\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})\nexport class TabsComponent implements AfterContentChecked {\n @HostBinding('class.tabs') classTabs = true;\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 * 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 (\n selectedTab &&\n !selectedTab.disabled &&\n this.activeId !== selectedTab.id\n ) {\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\n ? activeTab.id\n : this.tabs.length\n ? this.tabs.first.id\n : 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 class=\"tabs-head\" role=\"tablist\">\n <div class=\"tabs-head-item\"\n *ngFor=\"let tab of tabs\"\n (click)=\"select(tab.id);\"\n [class.tabs-head-item_active]=\"tab.id === activeId\"\n [class.tabs-head-item_disabled]=\"tab.disabled\">\n <span [id]=\"tab.id\" 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 {{tab.title}}\n <ng-template [ngTemplateOutlet]=\"tab.titleTpl?.template\"></ng-template>\n </span>\n </div>\n</div>\n<div class=\"tabs-content\">\n <ng-template ngFor let-tab [ngForOf]=\"tabs\">\n <ng-container *ngIf=\"!destroyOnHide || tab.id === activeId\">\n <ng-template [ngTemplateOutlet]=\"tab.contentTpl?.template\"></ng-template>\n </ng-container>\n </ng-template>\n</div>\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 private _openItems: BehaviorSubject<ITreeData[]> = new BehaviorSubject<\n ITreeData[]\n >([]);\n\n constructor() {\n this.openItems = this._openItems.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 private addOrRemove<G>(needle: G, list: G[]): G[] {\n const found = list?.find(\n (x) => this.compareItems(x) === this.compareItems(needle)\n );\n if (found) {\n return list.filter(\n (x) => this.compareItems(x) !== this.compareItems(needle)\n );\n } else {\n return [...list, needle];\n }\n }\n}\n","import {Directive, Input, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: '[tetaTemplate]'\n})\nexport class TetaTemplateDirective {\n @Input('tetaTemplate') id: string;\n\n constructor(public template: TemplateRef<any>) {\n }\n\n getId(): string {\n return this.id;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n TemplateRef,\n} from '@angular/core';\nimport { ITreeData } from '../../../common/contract/i-tree-data';\nimport { TreeService } from '../tree.service';\nimport { takeWhile } from 'rxjs/operators';\nimport { animate, style, transition, trigger } from '@angular/animations';\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('children', [\n transition('void => *', [\n style({ opacity: '0' }),\n animate(200, style({ opacity: '1' })),\n ]),\n transition('* => void', [animate(200, style({ opacity: '0' }))]),\n ]),\n ],\n})\nexport class TreeItemComponent implements OnInit, OnChanges, OnDestroy {\n @Input() item: ITreeData;\n @Input() depth = 0;\n @Input() padding = 16;\n @Input() childNodeName = 'children';\n @Input() template: TemplateRef<any>;\n @Input() noChildMode: boolean;\n\n @HostBinding('class.tree__item-container') private readonly treeItemClass =\n true;\n\n itemIsOpen = false;\n\n private _alive = true;\n\n get computedDepth(): number {\n return (\n this.depth +\n (this.item[this.childNodeName]?.length > 0 ? 0 : this.noChildMode ? 1 : 2)\n );\n }\n\n constructor(public service: TreeService, private _cdr: ChangeDetectorRef) {}\n\n openItem() {\n this.service.openItem(this.item);\n }\n\n ngOnInit(): void {\n this.service.openItems\n .pipe(takeWhile((_) => this._alive))\n .subscribe((_) => {\n const found = _?.find(\n (x) =>\n this.service.compareItems(x) ===\n this.service.compareItems(this.item)\n );\n this.itemIsOpen = found != null;\n this._cdr.markForCheck();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {}\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","<div class=\"tree__item_content\" [ngClass]=\"'tree__item_content-' + computedDepth\" (click)=\"openItem()\">\n <ng-container\n *ngTemplateOutlet=\"template; context: {$implicit: item, item: item, open: itemIsOpen, service: service, depth: depth}\"></ng-container>\n</div>\n<div [@children] class=\"tree__children\" *ngIf=\"itemIsOpen && item[childNodeName]?.length > 0\">\n <teta-tree-item *ngFor=\"let child of item[childNodeName];\"\n [item]=\"child\"\n [template]=\"template\"\n [padding]=\"padding\"\n [childNodeName]=\"childNodeName\"\n [depth]=\"depth + 1\"></teta-tree-item>\n</div>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\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';\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})\nexport class TreeComponent\n implements OnInit, AfterContentInit, OnChanges, OnDestroy\n{\n @Input() data: ITreeData[];\n @Output() service: EventEmitter<TreeService> =\n new EventEmitter<TreeService>();\n @Input() class;\n @Input() padding = 8;\n @Input() childNodeName = 'children';\n\n @Input()\n set openItems(items: ITreeData[]) {\n this._openItems = items;\n this._service.setOpenItems(items);\n }\n\n get noChildMode(): boolean {\n const hasChildren = this.data.find(\n (_) => _[this.childNodeName]?.length > 0\n );\n return !hasChildren;\n }\n\n @Output() openItemsChange = new EventEmitter();\n\n @ContentChild(TetaTemplateDirective, { static: true })\n template: TetaTemplateDirective;\n\n private _openItems: ITreeData[];\n private _alive = true;\n\n constructor(private _service: TreeService, private _cdr: ChangeDetectorRef) {\n this._service.openItems\n .pipe(\n takeWhile((_) => this._alive),\n filter((_) => this._openItems !== _)\n )\n .subscribe((_) => this.openItemsChange.emit(_));\n }\n\n @Input()\n set compareItems(func: (item: ITreeData) => any) {\n this._service.compareItems = func;\n }\n\n @HostBinding('class')\n private get getClass(): string {\n const result = [this.class, 'tree'];\n return result.join(' ');\n }\n\n ngOnInit(): void {\n this.service.emit(this._service);\n }\n\n ngAfterContentInit(): void {}\n\n ngOnChanges(changes: SimpleChanges): void {\n this._cdr.detectChanges();\n }\n\n ngOnDestroy() {\n this._alive = false;\n }\n}\n","<ng-container *ngFor=\"let item of data\">\n <teta-tree-item [item]=\"item\"\n [depth]=\"0\"\n [padding]=\"padding\"\n [childNodeName]=\"childNodeName\"\n [noChildMode]=\"noChildMode\"\n [template]=\"template?.template\"></teta-tree-item>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { TreeService } from '../tree.service';\nimport { ITreeData } from '../../../common/contract/i-tree-data';\nimport { map } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\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})\nexport class TreeItemToggleComponent implements OnInit {\n @Input() item: ITreeData;\n open: Observable<boolean>;\n\n constructor(public service: TreeService, private _cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.open = this.service.openItems.pipe(\n map((_) => {\n const found = _?.find(\n (x) =>\n this.service.compareItems(x) ===\n this.service.compareItems(this.item)\n );\n return found != null;\n })\n );\n }\n}\n","<teta-icon [name]=\"(open | async) ? 'arrowDownKey' : 'arrowRightKey'\"\n class=\"tree__icon\"></teta-icon>\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 { TableService } from '../service/table.service';\nimport { TableColumn } from '../contract/table-column';\nimport { FilterState } from '../../filter/contarct/filter-state';\nimport { StateUtil } from '../util/state-util';\nimport { ITreeData } from '../../../common/contract/i-tree-data';\nimport { IDictionary } from '../../../common/contract/i-dictionary';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { Observable } from 'rxjs';\nimport { map, takeWhile } from 'rxjs/operators';\nimport { ArrayUtil } from '../../../common/util/array-util';\nimport {SortParam} from '../../filter/contarct/sort-param';\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})\nexport class HeadCellDropdownComponent<T> implements OnInit, OnDestroy {\n @Input() columns: ITreeData[];\n @Input() column: TableColumn;\n @Input() state: FilterState;\n @Input() dropDownOpen: boolean;\n @Output() dropDownOpenChange: EventEmitter<boolean> =\n new EventEmitter<boolean>();\n\n @Output() autosize: EventEmitter<void> = new EventEmitter<void>();\n @Output() autosizeAll: EventEmitter<void> = new EventEmitter<void>();\n\n @HostBinding('class.shadow-2') private readonly shadow = true;\n @HostBinding('class.bg-background-50') private readonly bg = true;\n\n dict: Observable<IDictionary<IIdName<any>[]>>;\n hiddenColumns: string[];\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 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(private _svc: TableService<T>, private _cdr: ChangeDetectorRef) {\n this.dict = this._svc.dict;\n this._svc.hiddenColumns\n .pipe(\n takeWhile((_) => this._alive),\n map((_) => [..._])\n )\n .subscribe((_) => {\n this.hiddenColumns = _;\n });\n }\n\n clearFilter() {\n this._svc.clearFilter(this.column);\n this.dropDownOpenChange.emit(false);\n this._cdr.markForCheck();\n }\n\n applyFilter() {\n this._svc.setState(new FilterState(this.state));\n this.dropDownOpenChange.emit(false);\n this._cdr.markForCheck();\n }\n\n pinColumn() {\n this._svc.pinColumn(this.column);\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 clearAllFilters() {\n this._svc.clearAllFilters();\n this.dropDownOpen = false;\n this._cdr.markForCheck();\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(\n (_) => this.hiddenColumns.indexOf(_.name) < 0\n );\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(\n (_) => _.name\n );\n }\n }\n\n setColumnsVisibility() {\n this._svc.setHiddenColumns(this.hiddenColumns);\n }\n\n compareItems = (item: TableColumn) => item.name;\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this._alive = false;\n }\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 = (\n column: TableColumn,\n visible: boolean,\n hiddenColumns: string[]\n ) => {\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 = (\n column: TableColumn,\n visible: boolean,\n hiddenColumns: string[]\n ) => {\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(\n column: TableColumn,\n columns: TableColumn[]\n ): TableColumn | null {\n return ArrayUtil.findRecursive(\n columns,\n (iterableNode) => iterableNode.columns?.indexOf(column) >= 0,\n 'columns'\n );\n }\n}\n","<teta-tabs class=\"column_auto\">\n <teta-tab *ngIf=\"column.filterable\">\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'filter'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <teta-filter-host [column]=\"column\" [state]=\"state\"\n *ngIf=\"dict | async as d\"\n [filterOptions]=\"d[column.name]\"></teta-filter-host>\n <teta-toolbar class=\"justify-content-between\">\n <button teta-button [palette]=\"'text'\" [view]=\"'ghost'\" (click)=\"clearFilter()\">\n Очистить\n </button>\n <button teta-button [palette]=\"'primary'\" (click)=\"applyFilter()\">\n <teta-icon [name]=\"'tick'\"></teta-icon>\n Применить\n </button>\n </teta-toolbar>\n </ng-template>\n </teta-tab>\n <teta-tab *ngIf=\"column.headDropdownTemplate\">\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'measurement'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <ng-container\n *ngTemplateOutlet=\"column.headDropdownTemplate; context: {$implicit: column, column: column}\"></ng-container>\n </ng-template>\n </teta-tab>\n <teta-tab>\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'menu'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <div class=\"list column_auto\">\n <div class=\"list-item list-item_interactive\" (click)=\"pinColumn()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"column.locked ? 'unpin' : 'pin'\"\n class=\"margin-right-2\"></teta-icon>\n {{column.locked ? 'Открепить' : 'Закрепить'}}\n </div>\n <div class=\"list-divider\"></div>\n <ng-container *ngIf=\"hasSortedColumns()\">\n <div class=\"list-item list-item_interactive\"\n *ngIf=\"sortParam\"\n (click)=\"clearSort()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\" class=\"margin-right-2\"></teta-icon>\n Сбросить сортировку\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"clearAllSort()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n Сбросить все сортировки\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"hasFilteredColumns()\">\n <div class=\"list-item list-item_interactive\"\n *ngIf=\"filtered\"\n (click)=\"clearFilter()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n Очистить фильтр\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"clearAllFilters()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'pin'\"\n class=\"margin-right-2\"></teta-icon>\n Очистить все фильтры\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <div class=\"list-item list-item_interactive\" (click)=\"autosize.emit()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'autoSize'\"\n class=\"margin-right-2\"></teta-icon>\n Авторазмер колонки\n </div>\n <div class=\"list-item list-item_interactive\" (click)=\"autosizeAll.emit()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'autoSizeAll'\"\n class=\"margin-right-2\"></teta-icon>\n Авторазмер всех колонок\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"list-item list-item_interactive\" (click)=\"restoreDefaultColumns()\">\n <teta-icon [palette]=\"'text'\"\n [name]=\"'undo'\"\n class=\"margin-right-2\"></teta-icon>\n Отменить все изменения\n </div>\n </div>\n </ng-template>\n </teta-tab>\n <teta-tab>\n <ng-template tetaTabTitle>\n <teta-icon [name]=\"'eye'\"></teta-icon>\n </ng-template>\n <ng-template tetaTabContent>\n <div class=\"list-item padding-left-6 padding-top-2\" [class.padding-left-9]=\"childMode\">\n <teta-checkbox [binary]=\"true\"\n [allowNull]=\"true\"\n [ngModel]=\"allColumnsVisible()\"\n (ngModelChange)=\"setAllColumns($event)\">\n Все\n </teta-checkbox>\n </div>\n <div class=\"list-divider\"></div>\n <div class=\"padding-v-2 column column_auto scrollable\">\n <teta-tree [data]=\"columns\"\n [openItems]=\"openItems\"\n (openItemsChange)=\"openItems = $event\"\n [childNodeName]=\"'columns'\"\n [compareItems]=\"compareItems\">\n <ng-template tetaTemplate let-item>\n <div class=\"tree__item\">\n <teta-tree-item-toggle [item]=\"item\" *ngIf=\"item.columns?.length > 0\"></teta-tree-item-toggle>\n <teta-checkbox\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 </div>\n <teta-toolbar class=\"justify-content-end\">\n <button teta-button\n [disabled]=\"allColumnsVisible() === false\"\n [palette]=\"'primary'\"\n (click)=\"setColumnsVisibility()\">\n Применить\n </button>\n </teta-toolbar>\n </ng-template>\n </teta-tab>\n</teta-tabs>\n","import {\n Directive,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n Output,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n@Directive({\n selector: '[tetaResizeDrag]',\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 {\n ApplicationRef,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\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 { SortEvent } from '../contract/sort-event';\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';\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})\nexport class HeadCellComponent<T> implements OnInit, OnDestroy {\n @Input() column: TableColumn;\n @Input() showHeadCellMenu: boolean;\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 dropDownOpen: boolean;\n showDrag: 'left' | 'right' | null = null;\n private rect: any;\n\n private _alive = true;\n private _startPosition: number;\n\n constructor(\n private _svc: TableService<T>,\n private _app: ApplicationRef,\n private _elementRef: ElementRef\n ) {}\n\n @HostListener('dragstart', ['$event']) 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(event: DragEvent): 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 =\n 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(event: DragEvent): 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(\n map((_) => StateUtil.getSortState(_, this.column))\n );\n this.filtered = this.state.pipe(\n map((_) => StateUtil.isColumnFiltered(_, this.column))\n );\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 ? 'filterSortUpColor' : 'filterSortDownColor';\n }\n if (sortParam) {\n return sortParam.asc ? 'sortUpColor' : 'sortDownColor';\n }\n if (filtered) {\n return 'filterColor';\n }\n return '';\n })\n );\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n\n autosizeColumn() {\n this._svc.autosizeColumn(this.column, this._elementRef.nativeElement);\n }\n\n autosizeAllColumns() {\n this._svc.autosizeAllColumns(this._elementRef.nativeElement);\n }\n\n sortColumn(column: TableColumn, event: MouseEvent): void {\n if (!event.defaultPrevented) {\n this._svc.sort(new SortEvent(this.column, event.shiftKey));\n }\n }\n\n resizeStart(event: MouseEvent): 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 this._svc.resizeColumn(\n new ColumnResizeEvent(this.column, event.pageX - this._startPosition)\n );\n this._app.tick();\n }\n }\n\n resizeEnd() {\n this._startPosition = null;\n }\n}\n","<div draggable=\"true\" class=\"row row_auto\">\n <div class=\"table-head__cell__wrapper\"\n [ngClass]=\"column.headCellClass\"\n (click)=\"sortColumn(column, $event)\">\n <teta-icon *ngIf=\"iconName | async as icon\"\n [palette]=\"'text'\"\n [name]=\"icon\"></teta-icon>\n <teta-head-cell-host [column]=\"column\"></teta-head-cell-host>\n <teta-dropdown *ngIf=\"showHeadCellMenu\"\n [verticalAlign]=\"verticalAlign.bottom\"\n [appendToBody]=\"true\"\n [(open)]=\"dropDownOpen\"\n [align]=\"align.right\"\n (click)=\"$event.preventDefault()\"\n [class.table-head__cell__menu_open]=\"dropDownOpen\"\n class=\"table-head__cell__menu\">\n <button tetaDropdownHead teta-button\n [square]=\"true\"\n [palette]=\"'text'\"\n [view]=\"'ghost'\">\n <teta-icon [palette]=\"'text'\" [name]=\"'menu'\"></teta-icon>\n </button>\n <teta-head-cell-dropdown tetaDropdownContent\n (autosize)=\"autosizeColumn()\"\n (autosizeAll)=\"autosizeAllColumns()\"\n [column]=\"column\"\n [columns]=\"columns | async\"\n [state]=\"state | async\"\n [(dropDownOpen)]=\"dropDownOpen\"></teta-head-cell-dropdown>\n </teta-dropdown>\n </div>\n <div class=\"drop-area\"\n draggable=\"false\"\n [class.drop-area_left]=\"showDrag === 'left'\"\n [class.drop-area_right]=\"showDrag === 'right'\"\n *ngIf=\"showDrag\"></div>\n</div>\n<div 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($event)\"\n (resizeProcess)=\"resizeProcess($event)\"\n (resizeEnd)=\"resizeEnd()\"></div>\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';\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})\nexport class TableHeadGroupComponent<T> implements OnInit, OnDestroy {\n @Input() showHeadCellMenu: boolean;\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 private _alive = true;\n private _column: TableColumn;\n private _hiddenColumns: string[];\n\n private get _leaves() {\n return TableUtil.getColumnLeaves(this._column)?.filter(\n (_) => this._hiddenColumns.indexOf(_.name) < 0\n );\n }\n\n @HostBinding('style.grid-column-end')\n get gridColumnEnd(): string {\n if (this._leaves?.length > 0) {\n return `span ${this._leaves.length}`;\n }\n return null;\n }\n\n get gridTemplateColumns(): string {\n return TableUtil.getGridTemplateColumns(this._leaves);\n }\n\n constructor(private _svc: TableService<T>, private _cdr: ChangeDetectorRef) {\n this._svc.hiddenColumns\n .pipe(takeWhile((_) => this._alive))\n .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","<ng-container *ngIf=\"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\" [style.grid-template-columns]=\"gridTemplateColumns\">\n <ng-container *ngFor=\"let col of column.columns\">\n <teta-table-head-group\n class=\"table-head__group\"\n *ngIf=\"!columnIsHidden(col)\"\n [showHeadCellMenu]=\"showHeadCellMenu\"\n [column]=\"col\"></teta-table-head-group>\n </ng-container>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"!column.columns || column.columns.length === 0\">\n <teta-head-cell\n *ngIf=\"!columnIsHidden(column)\"\n class=\"table-head__cell\"\n [showHeadCellMenu]=\"showHeadCellMenu\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"></teta-head-cell>\n</ng-container>\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 { FilterState } from '../../filter/contarct/filter-state';\nimport { TableService } from '../service/table.service';\nimport { takeWhile } from 'rxjs/operators';\nimport { TableUtil } from '../util/table-util';\nimport { SelectType } from '../enum/select-type.enum';\nimport { combineLatest } from 'rxjs';\nimport { ArrayUtil } from '../../../common/util/array-util';\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})\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 gridTemplateColumns: string;\n\n @HostBinding('style.grid-template-columns')\n get getTemplateColumns() {\n let template = this.gridTemplateColumns;\n if (this.selectType !== SelectType.none) {\n template = `48px ${template}`;\n }\n return template;\n }\n\n state: FilterState;\n selectTypeEnum = SelectType;\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(\n (_) => _.locked === true && this._hiddenColumns.indexOf(_.name) < 0\n );\n }\n\n get unlocked(): TableColumn[] {\n return this._columns.filter(\n (_) => _.locked === false && this._hiddenColumns.indexOf(_.name) < 0\n );\n }\n\n constructor(private _svc: TableService<T>, private _cdr: ChangeDetectorRef) {\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\n this.gridTemplateColumns = TableUtil.getGridTemplateColumns(\n ArrayUtil.flatten(columns, 'columns', true)\n .filter((_) => this._hiddenColumns.indexOf(_.name) < 0)\n .sort((a, b) => Number(b.locked) - Number(a.locked))\n );\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\n getSpan(): string {\n if (this.locked?.length > 0) {\n let span = this.locked.length;\n if (this.selectType !== SelectType.none) {\n span += 1;\n }\n return `span ${span}`;\n }\n return null;\n }\n\n getLockedGridTemplateColumns(columns: TableColumn[]) {\n let template = TableUtil.getGridTemplateColumns(columns);\n if (this.selectType !== SelectType.none) {\n template = `48px ${template}`;\n }\n return template;\n }\n\n track(index: number, item: TableColumn): any {\n return item.name;\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","<div class=\"table-head_locked\"\n *ngIf=\"locked?.length\"\n [style.grid-template-columns]=\"getLockedGridTemplateColumns(locked)\"\n [style.grid-column-end]=\"getSpan()\">\n <teta-selection-head-cell *ngIf=\"selectType !== selectTypeEnum.none\"></teta-selection-head-cell>\n <ng-container *ngFor=\"let column of locked; trackBy: track\">\n <teta-table-head-group\n class=\"table-head__group\"\n [showHeadCellMenu]=\"showHeadCellMenu\"\n [column]=\"column\"></teta-table-head-group>\n </ng-container>\n</div>\n<ng-container *ngIf=\"unlocked?.length\">\n <teta-selection-head-cell *ngIf=\"selectType !== selectTypeEnum.none && locked?.length < 1\"></teta-selection-head-cell>\n <ng-container *ngFor=\"let column of unlocked; trackBy: track\">\n <teta-table-head-group\n class=\"table-head__group\"\n [showHeadCellMenu]=\"showHeadCellMenu\"\n [column]=\"column\"></teta-table-head-group>\n </ng-container>\n</ng-container>\n","export enum AggregationType {\n none,\n sum,\n avg,\n min,\n max,\n}\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 { TableRow } from '../contract/table-row';\nimport { takeWhile } from 'rxjs/operators';\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})\nexport class SelectionCellComponent<T> implements OnInit, OnDestroy {\n @Input() row: TableRow<T>;\n\n @HostBinding('class.cell') private readonly tableCellClass = true;\n selectedRows: TableRow<T>[] = [];\n\n private _alive = true;\n\n constructor(private _svc: TableService<T>, private _cdr: ChangeDetectorRef) {}\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\n .pipe(takeWhile((_) => this._alive))\n .subscribe((_) => {\n this.selectedRows = _;\n this._cdr.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","<teta-checkbox [binary]=\"true\"\n [noLabel]=\"true\"\n [ngModel]=\"selectedRows?.indexOf(row) >= 0\"\n (ngModelChange)=\"selectRow($event)\"></teta-checkbox>\n","import {\n ChangeDetectorRef,\n Component,\n HostBinding,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {TableService} from '../service/table.service';\nimport {TableRow} from '../contract/table-row';\nimport {takeWhile} from 'rxjs/operators';\nimport {ICellCoordinates} from '../contract/i-cell-coordinates';\nimport {TableColumn} from '../contract/table-column';\nimport {IIdName} from '../../../common/contract/i-id-name';\nimport {ICellValue} from '../contract/i-cell-value';\nimport {IDictionary} from '../../../common/contract/i-dictionary';\n\n@Component({\n template: '',\n})\nexport abstract class CellComponentBase<T> implements OnInit, OnDestroy {\n @HostBinding('class.cell-component')\n private readonly tableCellComponent = true;\n\n get edit() {\n return (\n this._edit &&\n this.svc.boolOrFuncCallback(this.column.editable)({\n column: this.column,\n row: this.row,\n })\n );\n }\n\n _edit: boolean;\n column: TableColumn;\n filterOptions: IIdName<any>[] = [];\n dict: IDictionary<IIdName<any>[]> = {};\n row: TableRow<T>;\n\n protected _alive = true;\n\n protected constructor(\n protected svc: TableService<T>,\n protected cdr: ChangeDetectorRef\n ) {\n }\n\n valueChanged(): void {\n this.svc.changeValue({\n column: this.column,\n row: this.row,\n });\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n\n ngOnInit(): void {\n this.init();\n }\n\n private init(): void {\n this.svc.editRowStart\n .pipe(\n takeWhile((_) => this._alive)\n )\n .subscribe((cell: ICellCoordinates<T>) => {\n if (\n this.row === cell?.row &&\n !this._edit\n // &&\n // this.svc.boolOrFuncCallback(this.svc.cellEditable)({\n // column: this.column,\n // row: this.row,\n // })\n ) {\n this.start(cell, 'row');\n }\n if (this.row !== cell?.row && this._edit) {\n this.stop();\n }\n });\n\n this.svc.editCellStart\n .pipe(\n takeWhile((_) => this._alive)\n )\n .subscribe((cell: ICellCoordinates<T>) => {\n if (\n this.row === cell.row &&\n this.column.name === cell.column.name &&\n !this._edit\n ) {\n this.start(cell, 'cell');\n }\n if (\n (this.row !== cell.row || this.column.name !== cell.column.name) &&\n this._edit\n ) {\n this.stop();\n }\n });\n\n this.svc.valueSet\n .pipe(takeWhile((_) => this._alive))\n .subscribe((cellValue: ICellValue<T>) => {\n if (\n this.row === cellValue.cell.row\n && this.column.name === cellValue.cell.column.name\n ) {\n this.row.data[this.column.name] = cellValue.value;\n this.cdr.detectChanges();\n }\n });\n\n this.svc.valueChanged\n .pipe(takeWhile((_) => this._alive))\n .subscribe((cellValue: ICellCoordinates<T>) => {\n if (\n this.row === cellValue.row\n ) {\n this.cdr.detectChanges();\n }\n });\n }\n\n private start(initiator: ICellCoordinates<T>, type: 'cell' | 'row') {\n this._edit = true;\n this.startEdit(initiator, type);\n this.cdr.markForCheck();\n }\n\n private stop() {\n this._edit = false;\n this.stopEdit();\n this.cdr.markForCheck();\n }\n\n abstract startEdit(\n initiator: ICellCoordinates<T>,\n type: 'cell' | 'row'\n ): void;\n\n abstract stopEdit(): void;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { CellComponentBase } from '../../base/cell-component-base';\nimport { TableService } from '../../service/table.service';\nimport { TableColumn } from '../../contract/table-column';\nimport { TableRow } from '../../contract/table-row';\nimport { ICellCoordinates } from '../../contract/i-cell-coordinates';\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})\nexport class NumericCellComponent<T>\n extends CellComponentBase<T>\n implements OnInit\n{\n @Input() override column: TableColumn;\n @Input() override row: TableRow<T>;\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 setValue(): void {\n this.valueChanged();\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n }\n\n startEdit(initiator: ICellCoordinates<T>, type: 'cell' | 'row'): void {\n if (initiator?.column.name === this.column.name) {\n setTimeout(() => {\n this.input?.nativeElement.focus();\n this.input?.nativeElement.select();\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 cell-text_numeric\">\n {{row.data[column.name] | tetaNumber : 2}}\n</span>\n<input #input\n *ngIf=\"edit\"\n tetaOnlyNumber\n type=\"text\"\n class=\"input row_auto border-radius-0\"\n (blur)=\"setValue()\"\n [ngModel]=\"row.data[column.name]\"\n (ngModelChange)=\"row.data[column.name]=$event;\"/>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport {CellComponentBase} from '../../base/cell-component-base';\nimport {TableColumn} from '../../contract/table-column';\nimport {TableRow} from '../../contract/table-row';\nimport {TableService} from '../../service/table.service';\nimport {ICellCoordinates} from '../../contract/i-cell-coordinates';\nimport {DatePickerComponent} from '../../../date-picker/date-picker/date-picker.component';\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})\nexport class DateCellComponent<T>\n extends CellComponentBase<T>\n implements OnInit {\n @Input() override column: TableColumn;\n @Input() override row: TableRow<T>;\n\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 setValue(value: Date): void {\n this.row.data[this.column.name] = value ? new Date(value) : value;\n this.valueChanged();\n this.cdr.detectChanges();\n }\n\n startEdit(initiator: ICellCoordinates<T>, type: 'cell' | 'row'): void {\n if (initiator?.column.name === 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\">\n {{row.data[column.name] | date : 'dd.MM.yyyy'}}\n</span>\n<teta-date-picker class=\"datepicker-table\"\n #input\n *ngIf=\"edit\"\n [appendToBody]=\"true\"\n [showTime]=\"false\"\n [ngModel]=\"row.data[column.name]\"\n (ngModelChange)=\"setValue($event)\"\n></teta-date-picker>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport {TableColumn} from '../../contract/table-column';\nimport {TableRow} from '../../contract/table-row';\nimport {TableService} from '../../service/table.service';\nimport {CellComponentBase} from '../../base/cell-component-base';\nimport {SelectComponent} from '../../../select/select/select.component';\nimport {IIdName} from '../../../../common/contract/i-id-name';\nimport {ICellCoordinates} from '../../contract/i-cell-coordinates';\nimport {VerticalAlign} from '../../../../common/enum/vertical-align.enum';\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})\nexport class ListCellComponent<T>\n extends CellComponentBase<T>\n implements OnInit {\n @Input() override column: TableColumn;\n @Input() override row: TableRow<T>;\n @Input() override filterOptions: IIdName<any>[] = [];\n\n get value() {\n return this.getValue();\n }\n\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 setValue(value: any): void {\n // if(this.c)\n this.row.data[this.column.name] = value;\n this.valueChanged();\n }\n\n startEdit(initiator: ICellCoordinates<T>, type: 'cell' | 'row'): void {\n if (initiator?.column.name === 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 private getValue() {\n if (\n this.filterOptions === null ||\n this.filterOptions === undefined ||\n !(this.filterOptions instanceof Array)\n ) {\n return '';\n }\n const item = this.filterOptions.find(\n (option) => option.id === this.row.data[this.column.name]\n );\n if (item === null || item === undefined) {\n return '';\n }\n return item.name;\n }\n}\n","<span [style.display]=\"edit ? 'none' : 'block'\" class=\"cell-text\">\n {{value}}\n</span>\n<teta-select #input\n class=\"row_auto select-table\"\n *ngIf=\"edit\"\n [allowNull]=\"!column.required\"\n [verticalAlign]=\"verticalAlign.auto\"\n [appendToBody]=\"true\"\n [options]=\"displayFilterOptions\"\n [valueRef]=\"'id'\"\n [textRef]=\"'name'\"\n [ngModel]=\"row.data[column.name]\"\n (ngModelChange)=\"setValue($event)\">\n</teta-select>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { CellComponentBase } from '../../base/cell-component-base';\nimport { TableColumn } from '../../contract/table-column';\nimport { TableRow } from '../../contract/table-row';\nimport { TableService } from '../../service/table.service';\nimport { ICellCoordinates } from '../../contract/i-cell-coordinates';\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})\nexport class StringCellComponent<T>\n extends CellComponentBase<T>\n implements OnInit\n{\n @Input() override column: TableColumn;\n @Input() override row: TableRow<T>;\n @ViewChild('input', { static: false }) input: ElementRef;\n\n constructor(public override svc: TableService<T>, public override cdr: ChangeDetectorRef) {\n super(svc, cdr);\n }\n\n setValue(): void {\n this.valueChanged();\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n }\n\n startEdit(initiator: ICellCoordinates<T>, type: 'cell' | 'row'): void {\n if (initiator?.column.name === this.column.name) {\n this.cdr.markForCheck();\n setTimeout(() => {\n this.input.nativeElement?.focus();\n this.input.nativeElement?.select();\n }, 0);\n }\n }\n\n stopEdit(): void {\n this.cdr.markForCheck();\n }\n}\n","<span [style.display]=\"edit ? 'none' : 'block'\" class=\"cell-text\">\n {{row.data[column.name]}}\n</span>\n<input #input\n *ngIf=\"edit\"\n type=\"text\"\n class=\"input row_auto border-radius-0\"\n (blur)=\"setValue()\"\n [ngModel]=\"row.data[column.name]\"\n (ngModelChange)=\"row.data[column.name]=$event\"/>\n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { CellComponentBase } from '../../base/cell-component-base';\nimport { TableColumn } from '../../contract/table-column';\nimport { TableRow } from '../../contract/table-row';\nimport { TableService } from '../../service/table.service';\nimport { ICellCoordinates } from '../../contract/i-cell-coordinates';\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})\nexport class BooleanCellComponent<T>\n extends CellComponentBase<T>\n implements OnInit\n{\n @Input() override column: TableColumn;\n @Input() override row: TableRow<T>;\n @ViewChild('input', { static: false }) input: ElementRef;\n\n constructor(public override svc: TableService<T>, public override cdr: ChangeDetectorRef) {\n super(svc, cdr);\n }\n\n setValue(): void {\n this.valueChanged();\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n }\n\n startEdit(initiator: ICellCoordinates<T>, type: 'cell' | 'row'): void {\n if (initiator?.column.name === 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\">\n {{ row.data[column.name] }}\n</span>\n<teta-checkbox\n #input\n *ngIf=\"edit\"\n [binary]=\"true\"\n [(ngModel)]=\"row.data[column.name]\"\n (blur)=\"setValue()\"\n></teta-checkbox>\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<\n FilterType,\n Type<any>\n>()\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)\n ? cellComponentsMap.get(column.filterType)\n : StringCellComponent;\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n ViewContainerRef,\n} from '@angular/core';\nimport { CellComponentBase } from '../base/cell-component-base';\nimport { TableColumn } from '../contract/table-column';\nimport { TableRow } from '../contract/table-row';\nimport { getCellComponent } from '../contract/cell-components-map';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { IDictionary } from '../../../common/contract/i-dictionary';\n\n@Component({\n selector: 'teta-cell-host',\n template: '',\n styleUrls: ['./cell-host.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CellHostComponent<T> implements OnInit, OnDestroy, 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<any>;\n\n constructor(private viewContainerRef: ViewContainerRef) {}\n\n ngOnInit(): void {\n if (!CellComponentBase.isPrototypeOf(this.column.cellComponent)) {\n this.column.cellComponent = getCellComponent(this.column);\n }\n this._componentRef = this.viewContainerRef.createComponent(\n this.column.cellComponent\n );\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 ngOnDestroy(): void {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n this._init &&\n (changes.hasOwnProperty('row') ||\n changes.hasOwnProperty('column') ||\n changes.hasOwnProperty('filterOptions') ||\n changes.hasOwnProperty('dict'))\n ) {\n this._componentRef.instance.row = this.row;\n this._componentRef.instance.column = this.column;\n this._componentRef.instance.filterOptions = this.filterOptions;\n this._componentRef.instance.dict = this.dict;\n this._componentRef.injector.get(ChangeDetectorRef).markForCheck();\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { TableColumn } from '../contract/table-column';\nimport { TableRow } from '../contract/table-row';\nimport { TableService } from '../service/table.service';\nimport { IIdName } from '../../../common/contract/i-id-name';\nimport { IDictionary } from '../../../common/contract/i-dictionary';\n\n@Component({\n selector: 'teta-cell',\n templateUrl: './cell.component.html',\n styleUrls: ['./cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CellComponent<T> implements OnInit, OnDestroy {\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 private alive = true;\n\n constructor(protected _svc: TableService<T>) {}\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this.alive = false;\n }\n}\n","<teta-cell-host [row]=\"row\"\n [column]=\"column\"\n [filterOptions]=\"filterOptions\"\n [dict]=\"dict\"></teta-cell-host>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Type,\n ViewChild,\n} from '@angular/core';\nimport {TableRow} from '../contract/table-row';\nimport {TableColumn} from '../contract/table-column';\nimport {GroupRowComponentBase} from '../base/group-row-component-base';\nimport {TableService} from '../service/table.service';\nimport {DetailComponentBase} from '../base/detail-component-base';\nimport {takeWhile} from 'rxjs/operators';\nimport {TableUtil} from '../util/table-util';\nimport {SelectType} from '../enum/select-type.enum';\nimport {combineLatest} from 'rxjs';\nimport {ArrayUtil} from '../../../common/util/array-util';\nimport {IDictionary} from '../../../common/contract/i-dictionary';\nimport {IIdName} from '../../../common/contract/i-id-name';\nimport {AggregationType} from '../enum/aggregation-type.enum';\nimport {CdkVirtualScrollViewport} from '@angular/cdk/scrolling';\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})\nexport class TableBodyComponent<T> implements OnInit, OnDestroy {\n @Input() virtual: boolean;\n @Input() activeRow: TableRow<T>;\n @Input() rowHeight: number;\n @Input() additionalComponent: Type<DetailComponentBase<T>>;\n @Input() tree: boolean;\n @Input() aggregate: boolean;\n @Input() grouping: boolean;\n @Input() groupRowComponent: Type<GroupRowComponentBase<T>>;\n @Input() openLevels: number;\n @Input() selectType: SelectType;\n @Input() rowClass: (row: TableRow<T>, index?: number) => string;\n\n @ViewChild(CdkVirtualScrollViewport, {static: false}) viewport: CdkVirtualScrollViewport;\n\n @HostBinding('class.table-body') private readonly tableBodyClass = true;\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\n gridTemplateColumns: string;\n selectedRows: TableRow<T>[] = [];\n locked: TableColumn[] = [];\n unlocked: TableColumn[] = [];\n\n selectTypeEnum = SelectType;\n\n private _columns: TableColumn[] = [];\n private _alive = true;\n private _data: TableRow<T>[];\n private _hiddenColumns: string[] = [];\n private _index: number;\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 }\n\n get columns(): TableColumn[] {\n return this._columns;\n }\n\n constructor(private _svc: TableService<T>, private _cdr: ChangeDetectorRef) {\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.gridTemplateColumns = TableUtil.getGridTemplateColumns(\n this.columns.sort((a, b) => Number(b.locked) - Number(a.locked))\n );\n this._cdr.markForCheck();\n });\n\n this._svc.displayData.pipe(takeWhile((_) => this._alive)).subscribe((_) => {\n this.data = _;\n this._cdr.markForCheck();\n });\n\n this._svc.dict.pipe(takeWhile((_) => this._alive)).subscribe((_) => {\n this.dict = _;\n this._cdr.markForCheck();\n });\n\n this._svc.scrollIndex\n .pipe(takeWhile((_) => this._alive))\n .subscribe(async (_) => {\n // if (this.viewport && this.dataSource && _ !== null) {\n // await this.dataSource.adapter.relax();\n // await this.dataSource.adapter.fix({\n // scrollPosition: (_ + 1) * 24,\n // });\n // }\n if (this.viewport) {\n this.viewport.scrollToIndex(_, 'smooth');\n }\n this._cdr.markForCheck();\n });\n\n this._svc.activeRow\n .pipe(takeWhile((_) => this._alive))\n .subscribe(async (_) => {\n this.activeRow = _;\n this._cdr.markForCheck();\n });\n }\n\n setActiveRow(row: TableRow<T>) {\n this._svc.setActiveRow(row);\n }\n\n getData = (index, count, success) => {\n const data = [];\n if (this.data?.length > 0) {\n const start = Math.max(0, index);\n const end = Math.min(index + count - 1, this.data.length - 1);\n for (let i = start; i <= end; i++) {\n data.push(this.data[i]);\n }\n }\n return success(data);\n };\n\n ngOnInit(): void {\n }\n\n ngOnDestroy(): void {\n this._alive = false;\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 }\n\n getAggregateText(column: TableColumn): string {\n if (column.aggregate === AggregationType.sum) {\n return 'Сумма=';\n }\n if (column.aggregate === AggregationType.avg) {\n return 'Среднее=';\n }\n if (column.aggregate === AggregationType.min) {\n return 'Мин=';\n }\n if (column.aggregate === AggregationType.max) {\n return 'Макс=';\n }\n return '';\n }\n\n getSpan(): string {\n if (this.locked?.length > 0) {\n let span = this.locked.length;\n if (this.selectType !== SelectType.none) {\n span += 1;\n }\n return `span ${span}`;\n }\n return null;\n }\n\n getTemplateColumns() {\n let template = this.gridTemplateColumns;\n if (this.selectType !== SelectType.none) {\n template = `48px ${template}`;\n }\n return template;\n }\n\n getLockedGridTemplateColumns(columns: TableColumn[]) {\n let template = TableUtil.getGridTemplateColumns(columns);\n if (this.selectType !== SelectType.none) {\n template = `48px ${template}`;\n }\n return template;\n }\n\n trackRow(index: number, row: TableRow<T>): any {\n return index;\n }\n\n trackColumns(index: number, column: TableColumn): any {\n return column.name;\n }\n\n private getSum(columnName) {\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) {\n return this.data?.reduce(\n (accum, current) =>\n accum != null && accum <= current.data[columnName]\n ? accum\n : current.data[columnName],\n null\n );\n }\n\n private getMax(columnName) {\n return this.data?.reduce(\n (accum, current) =>\n accum != null && accum >= current.data[columnName]\n ? accum\n : current.data[columnName],\n null\n );\n }\n}\n","<cdk-virtual-scroll-viewport *ngIf=\"virtual\"\n class=\"table-body-container\"\n [itemSize]=\"24\">\n <ng-container *cdkVirtualFor=\"let row of data;templateCacheSize: 0; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n</cdk-virtual-scroll-viewport>\n<div *ngIf=\"!virtual\"\n class=\"table-body-container\"\n [style.grid-template-rows]=\"rowHeight + 'px'\"\n [style.grid-auto-rows]=\"rowHeight + 'px'\"\n [style.grid-template-columns]=\"getTemplateColumns()\">\n <ng-container *ngFor=\"let row of data; let rowIndex = index; trackBy: trackRow;\">\n <ng-container *ngTemplateOutlet=\"bodyTemplate; context: {row: row, rowIndex: rowIndex}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"aggregate\">\n <ng-container *ngTemplateOutlet=\"aggTemplate;\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #bodyTemplate let-row=\"row\" let-rowIndex=\"rowIndex\">\n <div class=\"table-row\"\n (click)=\"setActiveRow(row)\"\n [attr.data-row]=\"rowIndex\"\n [ngClass]=\"rowClass ? rowClass(row, rowIndex) : ''\"\n [class.table-row_virtual]=\"virtual\"\n [style.grid-template-columns]=\"virtual ? getTemplateColumns() : ''\"\n [class.table-row_active]=\"row === activeRow || selectedRows.indexOf(row) >= 0\">\n <ng-container *ngIf=\"!grouping\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.grid-template-columns]=\"getLockedGridTemplateColumns(locked)\"\n [style.zIndex]=\"row === activeRow ? 1 : 'unset'\"\n [style.grid-column-end]=\"getSpan()\">\n <teta-selection-cell *ngIf=\"selectType !== selectTypeEnum.none && locked.length\"\n [row]=\"row\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict[column.name]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n ></teta-cell>\n </div>\n <teta-selection-cell *ngIf=\"selectType !== selectTypeEnum.none && locked.length < 1\"\n [row]=\"row\"></teta-selection-cell>\n <teta-cell\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-row]=\"rowIndex\"\n [attr.data-column]=\"column.name\"\n [column]=\"column\"\n [filterOptions]=\"dict[column.name]\"\n [dict]=\"dict\"\n [row]=\"row\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\"\n ></teta-cell>\n </ng-container>\n <ng-container *ngIf=\"grouping\">\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #aggTemplate>\n <div class=\"table-row\"\n *ngIf=\"aggregate\"\n [class.table-row_virtual]=\"virtual\"\n [style.grid-template-columns]=\"virtual ? getTemplateColumns() : ''\">\n <div class=\"table-row_locked\"\n *ngIf=\"locked.length > 0\"\n [style.grid-template-columns]=\"getLockedGridTemplateColumns(locked)\"\n [style.grid-column-end]=\"getSpan()\">\n <div class=\"cell align-center justify-content-center\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component justify-content-end\"\n *ngFor=\"let column of locked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{getAggregateText(column)}}:\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n <div class=\"cell align-center justify-content-center\"\n *ngIf=\"selectType !== selectTypeEnum.none && locked.length < 1\">\n <teta-icon [name]=\"'sumColor'\"></teta-icon>\n </div>\n <div class=\"cell cell-component justify-content-end\"\n *ngFor=\"let column of unlocked; let colIndex = index; trackBy: trackColumns;\"\n [attr.data-column]=\"column.name\"\n [ngClass]=\"column.cellClass\"\n [attr.tabindex]=\"0\">\n <span class=\"cell-text cell-text_numeric font-title-3\">\n {{getAggregateText(column)}}\n {{getAggregateValue(column) | tetaNumber : 2}}\n </span>\n </div>\n </div>\n</ng-template>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n Type,\n ViewChild,\n} from '@angular/core';\nimport {TableRow} from '../contract/table-row';\nimport {TableService} from '../service/table.service';\nimport {TableColumn} from '../contract/table-column';\nimport {FilterState} from '../../filter/contarct/filter-state';\nimport {DetailComponentBase} from '../base/detail-component-base';\nimport {ICellEvent} from '../contract/i-cell-event';\nimport {ICellCoordinates} from '../contract/i-cell-coordinates';\nimport {GroupRowComponentBase} from '../base/group-row-component-base';\nimport {GroupRowComponent} from '../default/group-row/group-row.component';\nimport {filter, takeWhile, withLatestFrom} from 'rxjs/operators';\nimport {EditType} from '../enum/edit-type.enum';\nimport {EditEvent} from '../enum/edit-event.enum';\nimport {SelectType} from '../enum/select-type.enum';\nimport {IIdName} from '../../../common/contract/i-id-name';\nimport {IDictionary} from '../../../common/contract/i-dictionary';\nimport {of} from 'rxjs';\nimport {ArrayUtil} from '../../../common/util/array-util';\nimport {PositionUtil} from '../../../common/util/position-util';\nimport {Align} from '../../../common/enum/align.enum';\nimport {VerticalAlign} from '../../../common/enum/vertical-align.enum';\nimport {FilterType} from '../../filter/enum/filter-type.enum';\nimport {TableContextMenuConfig} from '../contract/table-context-menu-config';\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})\nexport class TableComponent<T>\n implements OnInit, OnDestroy, AfterViewInit, OnChanges {\n @Input() data: T[] = [];\n @Input() columns: TableColumn[] = [];\n @Input() dict: IDictionary<IIdName<any>[]>;\n\n @Input()\n set state(state: FilterState) {\n this._state = state;\n }\n\n @Input() rowHeight = 24;\n @Input() cookieName: string;\n @Input() virtual: boolean;\n @Input() detailComponent: Type<DetailComponentBase<T>>;\n @Input() activeRow: TableRow<T>;\n @Input() selectedRows: TableRow<T>[];\n @Input() selectType: SelectType = SelectType.none;\n @Input() aggregate: boolean;\n @Input() grouping: boolean;\n @Input() groupRowComponent: Type<GroupRowComponentBase<T>> =\n GroupRowComponent;\n @Input() openLevels: number;\n @Input() tree: boolean;\n @Input() trackBy: (row: TableRow<T>) => any;\n @Input() editType: EditType;\n @Input() editEvent: EditEvent;\n @Input() rowEditable: boolean | ((row: TableRow<T>) => boolean);\n @Input() rowClass: (row: TableRow<T>, index?: number) => string;\n\n @Input() set scrollToIndex(index: number) {\n this._svc.scrollToIndex(index);\n }\n\n @Input() contextMenuConfig: TableContextMenuConfig =\n new TableContextMenuConfig();\n\n @Input() showHeadCellMenu = true;\n\n @Output()\n stateChange: EventEmitter<FilterState> = new EventEmitter<FilterState>();\n @Output() bodyLeft = new EventEmitter<TableRow<T>>();\n @Output() activeRowChange: EventEmitter<TableRow<T>> = new EventEmitter();\n @Output() selectedRowsChange: EventEmitter<TableRow<T>[]> =\n new EventEmitter();\n @Output() rowLeft = new EventEmitter<TableRow<T>>();\n @Output() rowEditStart = new EventEmitter<TableRow<T>>();\n @Output() rowEditEnd = new EventEmitter<TableRow<T>>();\n @Output() cellClick = new EventEmitter<ICellEvent<T>>();\n @Output() cellDoubleClick = new EventEmitter<ICellEvent<T>>();\n @Output() cellFocus = new EventEmitter<ICellEvent<T>>();\n @Output() cellEditStart = new EventEmitter<ICellCoordinates<T>>();\n @Output() cellEditEnd = new EventEmitter<ICellCoordinates<T>>();\n @Output() valueChange = new EventEmitter<ICellCoordinates<T>>();\n @Output() cellKeyUp = new EventEmitter<ICellEvent<T>>();\n\n @Output() pasteRows = new EventEmitter<any[]>();\n @Output() addRow = new EventEmitter<void>();\n @Output() deleteRows = new EventEmitter<TableRow<T>[]>();\n @Output() tableService = new EventEmitter<TableService<T>>();\n\n @ViewChild('contextMenu', {static: true}) menu: ElementRef;\n @HostBinding('class.table') private readonly tableClass = true;\n\n showContextMenu: boolean;\n selectedRowsList: TableRow<T>[];\n contextMenuTarget: ICellCoordinates<T>;\n\n private _alive = true;\n private _bodyElement: HTMLElement;\n private _headElement: HTMLElement;\n\n private _state: FilterState;\n\n constructor(private _svc: TableService<T>, private _elementRef: ElementRef) {\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: ICellCoordinates<T>) => this.cellEditStart.emit(item));\n\n this._svc.editCellStop\n .pipe(takeWhile((_) => this._alive))\n .subscribe((item: ICellCoordinates<T>) => this.cellEditEnd.emit(item));\n\n this._svc.editRowStart\n .pipe(takeWhile((_) => this._alive))\n .subscribe((item: ICellCoordinates<T>) =>\n this.rowEditStart.emit(item?.row)\n );\n\n this._svc.editRowStop\n .pipe(takeWhile((_) => this._alive))\n .subscribe((item: ICellCoordinates<T>) =>\n this.rowEditEnd.emit(item?.row)\n );\n\n this._svc.selectedRows\n .pipe(takeWhile((_) => this._alive))\n .subscribe((items: TableRow<T>[]) => {\n this.selectedRowsList = items;\n this.selectedRowsChange.emit(items);\n });\n\n this._svc.activeRow\n .pipe(takeWhile((_) => this._alive))\n .subscribe((item: TableRow<T>) => this.activeRowChange.emit(item));\n\n this._svc.valueChanged\n .pipe(takeWhile((_) => this._alive))\n .subscribe((coordinates: ICellCoordinates<T>) => {\n this.valueChange.emit(coordinates);\n });\n }\n\n @HostListener('document:click', ['$event']) handleClickOutsideAnyRow(\n event: MouseEvent\n ) {\n const coordinates = this.getCoordinates(event);\n if (coordinates) {\n this.cellClick.emit(coordinates);\n if (this.editEvent === EditEvent.click) {\n this.startEditRowOrCell(coordinates);\n }\n }\n if (!this.eventIsOnRow(event) && !event.defaultPrevented) {\n this._svc.startEditRow(null);\n }\n }\n\n @HostListener('focusin', ['$event']) focusIn(event: any) {\n const coordinates = this.getCoordinates(event);\n if (coordinates) {\n this.cellFocus.emit(coordinates);\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 this.cellDoubleClick.emit(coordinates);\n if (this.editEvent === EditEvent.doubleClick) {\n this.startEditRowOrCell(coordinates);\n }\n }\n }\n\n @HostListener('window:keyup', ['$event'])\n keyup(event: KeyboardEvent) {\n const coordinates = this.getCoordinates(event);\n if (coordinates) {\n this.cellKeyUp.emit(coordinates);\n }\n switch (event.key) {\n case 'Enter':\n this._svc.startEditRow(null);\n break;\n case 'Escape':\n this._svc.startEditRow(null);\n break;\n default:\n break;\n }\n }\n\n @HostListener('mousedown', ['$event']) mousedown(event: MouseEvent) {\n if (event.button === 2) {\n event.preventDefault();\n }\n }\n\n @HostListener('contextmenu', ['$event']) contextMenu(event: MouseEvent) {\n if (\n this.getSelectedText() ||\n this.contextMenuConfig?.contextMenu === false\n ) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.contextMenuTarget = this.getCoordinates(event);\n this.showContextMenu = true;\n this.setPosition(event);\n }\n\n rowAdd() {\n this.addRow.emit();\n this.contextMenuTarget = null;\n this.showContextMenu = false;\n }\n\n copy(rows: TableRow<T>[]) {\n of(1)\n .pipe(withLatestFrom(this._svc.columns, this._svc.hiddenColumns))\n .subscribe((data: [number, TableColumn[], string[]]) => {\n const [, columns, hidden] = data;\n navigator.clipboard.writeText(\n this.toClipboardString(rows, this.getVisibleColumns(columns, hidden))\n );\n this.contextMenuTarget = null;\n this.showContextMenu = false;\n });\n }\n\n delete(rows: TableRow<T>[]) {\n this.deleteRows.emit(rows);\n this.contextMenuTarget = null;\n this.showContextMenu = false;\n }\n\n async pasteData() {\n const result = await navigator.clipboard.readText();\n of(1)\n .pipe(withLatestFrom(this._svc.columns, this._svc.hiddenColumns))\n .subscribe((data: [number, TableColumn[], string[]]) => {\n const [, columns, hidden] = data;\n this.pasteRows.emit(\n this.fromClipboard(result, this.getVisibleColumns(columns, hidden))\n );\n });\n this.contextMenuTarget = null;\n this.showContextMenu = false;\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 =\n this._elementRef.nativeElement.querySelector('.table-head');\n this._bodyElement = this._elementRef.nativeElement.querySelector(\n '.table-body-container'\n );\n this._bodyElement.addEventListener('scroll', this.onScroll);\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n this._bodyElement.removeEventListener('scroll', this.onScroll);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.hasOwnProperty('editType')) {\n this._svc.editType = this.editType;\n }\n if (changes.hasOwnProperty('selectType')) {\n this._svc.selectType = this.selectType;\n }\n if (changes.hasOwnProperty('selectedRows')) {\n this._svc.selectRows(this.selectedRows);\n }\n if (changes.hasOwnProperty('rowEditable')) {\n this._svc.rowEditable = this.rowEditable;\n }\n if (changes.hasOwnProperty('cookieName')) {\n this._svc.setCookieName(this.cookieName);\n }\n if (changes.hasOwnProperty('columns')) {\n if (this.columns !== null && this.columns !== undefined) {\n this._svc.setColumns(this.columns);\n }\n }\n if (changes.hasOwnProperty('data')) {\n this._svc.setData(this.data);\n this._svc.selectRows([]);\n }\n if (changes.hasOwnProperty('dict')) {\n this._svc.setDict(this.dict);\n }\n }\n\n private startEditRowOrCell(coordinates: ICellCoordinates<T>): 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 getEventCell(event: Event): HTMLElement | null {\n return event.composedPath().find((target: HTMLElement) => {\n return target.tagName?.toLowerCase() === 'teta-cell';\n }) as HTMLElement;\n }\n\n private eventIsOnRow(event: Event): boolean {\n const row = event.composedPath().find((target: HTMLElement) => {\n return target?.getAttribute && target?.getAttribute('data-row');\n });\n return row && this._elementRef.nativeElement.contains(row);\n }\n\n private getCoordinates(event: Event): ICellEvent<T> | null {\n const cell = this.getEventCell(event);\n if (cell) {\n const rowIndex = cell.getAttribute('data-row');\n const columnName = cell.getAttribute('data-column');\n if (rowIndex && columnName) {\n const row = this._svc.getRowByIndex(rowIndex);\n const column = this._svc.getColumnByName(columnName);\n return {\n row,\n column: column ? column : new TableColumn(),\n event,\n };\n }\n }\n return null;\n }\n\n private onScroll = () => {\n this._headElement.scrollLeft = this._bodyElement.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 private setPosition(event: MouseEvent) {\n const position = PositionUtil.getPosition(\n {\n top: event.y,\n bottom: event.y,\n left: event.x,\n right: event.x,\n },\n this.menu.nativeElement.getBoundingClientRect(),\n Align.left,\n VerticalAlign.auto\n );\n PositionUtil.setElementPosition(this.menu.nativeElement, position);\n }\n\n private toClipboardString(rows: TableRow<T>[], columns: TableColumn[]) {\n return rows.reduce(\n (res: string, currentRow: TableRow<T>, i: number) =>\n `${res}${i === 0 ? '' : '\\n'}${columns.reduce(\n (columnResult: string, column: TableColumn, j: number) =>\n `${columnResult}${j === 0 ? '' : '\\t'}${\n currentRow.data[column.name] ?? ''\n }`,\n ''\n )}`,\n ''\n );\n }\n\n private fromClipboard(data: string, columns: TableColumn[]) {\n const rows = data.split('\\n').filter((_) => _?.length > 0);\n const result = rows.map((_) =>\n _.replace('\\r', '').replace('\\n', '').split('\\t')\n );\n return result.map((row: string[]) =>\n row.reduce((res, item, index) => {\n let value: any = item;\n if (\n columns[index]?.filterType === FilterType.number ||\n columns[index]?.filterType === FilterType.list\n ) {\n value = parseFloat(item);\n }\n if (columns[index]?.filterType === FilterType.boolean) {\n value = Boolean(JSON.parse(item.toLowerCase()));\n }\n if (columns[index]) {\n res[columns[index].name] = value;\n }\n return res;\n }, {})\n );\n }\n\n private getVisibleColumns(columns: TableColumn[], hidden: string[]) {\n const visible = ArrayUtil.flatten(columns, 'columns', true).filter(\n (_) => hidden.indexOf(_.name) < 0\n );\n return visible.sort((a, b) => Number(b.locked) - Number(a.locked));\n }\n}\n","<div class=\"column column_auto\">\n <teta-table-head [selectType]=\"selectType\" [showHeadCellMenu]=\"showHeadCellMenu\"></teta-table-head>\n <teta-table-body\n [aggregate]=\"aggregate\"\n [virtual]=\"virtual\"\n [activeRow]=\"activeRow\"\n [additionalComponent]=\"detailComponent\"\n [grouping]=\"grouping\"\n [groupRowComponent]=\"groupRowComponent\"\n [openLevels]=\"openLevels\"\n [selectType]=\"selectType\"\n [rowHeight]=\"rowHeight\"\n [rowClass]=\"rowClass\"\n [tree]=\"tree\"></teta-table-body>\n</div>\n\n<div #contextMenu\n class=\"list shadow-1\"\n style=\"position: fixed; z-index: 2;\"\n [style.visibility]=\"showContextMenu ? 'visible ' : 'hidden'\"\n [tetaClickOutside]=\"showContextMenu\"\n (clickOutside)=\"showContextMenu = false\">\n <ng-container *ngIf=\"contextMenuConfig?.add\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"rowAdd()\">\n <teta-icon [name]=\"'add'\" [palette]=\"'text'\"></teta-icon>\n Добавить строку\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"contextMenuConfig?.copy\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"copy(selectedRowsList)\"\n *ngIf=\"selectedRowsList?.length > 0\">\n <teta-icon [name]=\"'copySelected'\" [palette]=\"'text'\"></teta-icon>\n Копировать выделенные строки\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"copy([contextMenuTarget.row])\"\n *ngIf=\"contextMenuTarget\">\n <teta-icon [name]=\"'copy'\" [palette]=\"'text'\"></teta-icon>\n Копировать строку\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"contextMenuConfig?.paste\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"pasteData()\">\n <teta-icon [name]=\"'paste'\" [palette]=\"'text'\"></teta-icon>\n Вставить\n </div>\n <div class=\"list-divider\"></div>\n </ng-container>\n <ng-container *ngIf=\"contextMenuConfig?.delete\">\n <div class=\"list-item list-item_interactive\"\n (click)=\"delete(selectedRowsList)\"\n *ngIf=\"selectedRowsList?.length > 0\">\n <teta-icon [name]=\"'deleteSelected'\" [palette]=\"'text'\"></teta-icon>\n Удалить выделенные строки\n </div>\n <div class=\"list-item list-item_interactive\"\n (click)=\"delete([contextMenuTarget.row])\"\n *ngIf=\"contextMenuTarget\">\n <teta-icon [name]=\"'delete'\" [palette]=\"'text'\"></teta-icon>\n Удалить строку\n </div>\n </ng-container>\n</div>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TabContentDirective} from './tab-content.directive';\nimport {TabTitleDirective} from './tab-title.directive';\nimport {TabComponent} from './tab/tab.component';\nimport {TabsComponent} from './tabs/tabs.component';\n\n@NgModule({\n declarations: [\n TabContentDirective,\n TabTitleDirective,\n TabComponent,\n TabsComponent\n ],\n exports: [\n TabContentDirective,\n TabTitleDirective,\n TabComponent,\n TabsComponent\n ],\n imports: [\n CommonModule\n ]\n})\nexport class TabsModule {\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TetaTemplateDirective} from './teta-template.directive';\n\n\n@NgModule({\n declarations: [\n TetaTemplateDirective\n ],\n exports: [\n TetaTemplateDirective\n ],\n imports: [\n CommonModule\n ]\n})\nexport class TetaTemplateModule {\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TreeComponent } from './tree/tree.component';\nimport { TreeItemComponent } from './tree-item/tree-item.component';\nimport { TetaTemplateModule } from '../../directive/teta-template/teta-template.module';\nimport { IconModule } from '../icon/icon.module';\nimport { TreeItemToggleComponent } from './tree-item-toggle/tree-item-toggle.component';\n\n@NgModule({\n declarations: [TreeComponent, TreeItemComponent, TreeItemToggleComponent],\n exports: [TreeComponent, TetaTemplateModule, TreeItemToggleComponent],\n imports: [CommonModule, IconModule, TetaTemplateModule],\n})\nexport class TreeModule {}\n","import {\n ChangeDetectorRef,\n Component,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport {CellComponentBase} from '../../base/cell-component-base';\nimport {TableColumn} from '../../contract/table-column';\nimport {TableRow} from '../../contract/table-row';\nimport {TableService} from '../../service/table.service';\nimport {ICellCoordinates} from '../../contract/i-cell-coordinates';\nimport {DatePickerComponent} from '../../../date-picker/date-picker/date-picker.component';\n\n@Component({\n selector: 'teta-date-time-cell',\n templateUrl: './date-time-cell.component.html',\n styleUrls: ['./date-time-cell.component.scss'],\n})\nexport class DateTimeCellComponent<T>\n extends CellComponentBase<T>\n implements OnInit {\n @Input() override column: TableColumn;\n @Input() override row: TableRow<T>;\n\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 setValue(value: Date): void {\n this.row.data[this.column.name] = value;\n this.valueChanged();\n }\n\n startEdit(initiator: ICellCoordinates<T>, type: 'cell' | 'row'): void {\n if (initiator?.column.name === 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\">\n {{row.data[column.name] | date : 'dd.MM.yyyy HH:mm:ss'}}\n</span>\n<teta-date-picker class=\"datepicker-table\" #input\n *ngIf=\"edit\"\n [appendToBody]=\"true\"\n [showTime]=\"true\"\n [ngModel]=\"row.data[column.name]\"\n (ngModelChange)=\"setValue($event)\"\n></teta-date-picker>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ResizeDragDirective } from './resize-drag.directive';\n\n@NgModule({\n declarations: [ResizeDragDirective],\n exports: [ResizeDragDirective],\n imports: [CommonModule],\n})\nexport class ResizeDragModule {}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TableComponent} from './table/table.component';\nimport {FilterModule} from '../filter/filter.module';\nimport {NumericCellComponent} from './default/numeric-cell/numeric-cell.component';\nimport {ListCellComponent} from './default/list-cell/list-cell.component';\nimport {DateCellComponent} from './default/date-cell/date-cell.component';\nimport {StringCellComponent} from './default/string-cell/string-cell.component';\nimport {HeadCellHostComponent} from './head-cell-host/head-cell-host.component';\nimport {TableHeadComponent} from './table-head/table-head.component';\nimport {TableBodyComponent} from './table-body/table-body.component';\nimport {CellComponent} from './cell/cell.component';\nimport {FormsModule} from '@angular/forms';\nimport {CheckboxModule} from '../checkbox/checkbox.module';\nimport {CellHostComponent} from './cell-host/cell-host.component';\nimport {GroupRowComponent} from './default/group-row/group-row.component';\nimport {TableHeadGroupComponent} from './table-head-group/table-head-group.component';\nimport {HeadCellComponent} from './head-cell/head-cell.component';\nimport {DefaultHeadCellComponent} from './default/default-head-cell/default-head-cell.component';\nimport {IconModule} from '../icon/icon.module';\nimport {DropdownModule} from '../dropdown/dropdown.module';\nimport {TabsModule} from '../tabs/tabs.module';\nimport {SelectModule} from '../select/select.module';\nimport {NumberPipeModule} from '../../pipe/number-pipe/number-pipe.module';\nimport {DatePickerModule} from '../date-picker/date-picker.module';\nimport {ButtonModule} from '../button/button.module';\nimport {SelectionCellComponent} from './selection-cell/selection-cell.component';\nimport {SelectionHeadCellComponent} from './selection-head-cell/selection-head-cell.component';\nimport {HintModule} from '../../directive/hint/hint.module';\nimport {TreeModule} from '../tree/tree.module';\nimport {HeadCellDropdownComponent} from './head-cell-dropdown/head-cell-dropdown.component';\nimport {DateTimeCellComponent} from './default/date-time-cell/date-time-cell.component';\nimport {OnlyNumberModule} from '../../directive/only-number/only-number.module';\nimport {BooleanCellComponent} from './default/boolean-cell/boolean-cell.component';\nimport {ToolbarModule} from '../toolbar/toolbar.module';\nimport {ClickOutsideModule} from '../../directive/click-outside/click-outside.module';\nimport {ResizeDragModule} from '../../directive/resize-drag/resize-drag.module';\nimport {ScrollingModule} from '@angular/cdk/scrolling';\n\n@NgModule({\n declarations: [\n TableComponent,\n NumericCellComponent,\n ListCellComponent,\n DateCellComponent,\n StringCellComponent,\n HeadCellHostComponent,\n TableHeadComponent,\n TableBodyComponent,\n CellComponent,\n CellHostComponent,\n GroupRowComponent,\n TableHeadGroupComponent,\n HeadCellComponent,\n DefaultHeadCellComponent,\n SelectionCellComponent,\n SelectionHeadCellComponent,\n HeadCellDropdownComponent,\n DateTimeCellComponent,\n BooleanCellComponent,\n ],\n exports: [\n TableComponent,\n NumericCellComponent,\n ListCellComponent,\n DateCellComponent,\n StringCellComponent,\n HeadCellHostComponent,\n TableHeadComponent,\n TableBodyComponent,\n CellComponent,\n CellHostComponent,\n GroupRowComponent,\n DateTimeCellComponent,\n BooleanCellComponent,\n ],\n imports: [\n CommonModule,\n FilterModule,\n FormsModule,\n CheckboxModule,\n IconModule,\n DropdownModule,\n TabsModule,\n SelectModule,\n NumberPipeModule,\n DatePickerModule,\n ButtonModule,\n HintModule,\n TreeModule,\n OnlyNumberModule,\n ToolbarModule,\n ClickOutsideModule,\n ResizeDragModule,\n ScrollingModule,\n ],\n})\nexport class TableModule {\n}\n","import {TableRow} from '../contract/table-row';\nimport {TableColumn} from '../contract/table-column';\n\nexport abstract class DetailComponentBase<T> {\n /**\n * The row details are displayed for\n */\n abstract row: TableRow<T>;\n /**\n * displayed columns\n */\n abstract columns: TableColumn[];\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 ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { ThemeSwitchService } from '../theme-switch.service';\nimport { Observable } from 'rxjs';\nimport {ButtonViewType} from '../../button/button/button.component';\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})\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 teta-button [palette]=\"palette\" [view]=\"view\" [square]=\"true\" (click)=\"switchTheme()\">\n <teta-icon [name]=\"'lamp'\" [palette]=\"'text'\"></teta-icon>\n</button>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ThemeSwitchComponent} from './theme-switch/theme-switch.component';\nimport {ButtonModule} from '../button/button.module';\nimport {IconModule} from '../icon/icon.module';\n\n@NgModule({\n declarations: [ThemeSwitchComponent],\n exports: [ThemeSwitchComponent],\n imports: [\n CommonModule,\n ButtonModule,\n IconModule\n ]\n})\nexport class ThemeSwitchModule {\n}\n","import {\n AfterViewInit, ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport * as THREE from 'three';\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';\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';\n\n@Component({\n selector: 'teta-chart3d',\n templateUrl: './chart3d.component.html',\n styleUrls: ['./chart3d.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\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.Renderer;\n private _controls: OrbitControls;\n private _obs: ResizeObserver;\n private _config: Chart3dOptions;\n\n private SIDE_SIZE = 100;\n private gridColor: 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 = _ ? '#474751' : '#d7dee3';\n this.init();\n })\n )\n .subscribe();\n }\n\n ngAfterViewInit() {\n this.addResizeObserver();\n this.createScene();\n this.startRenderingLoop();\n }\n\n ngOnDestroy() {\n this._alive = false;\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 const geometry = new THREE.BufferGeometry().setFromPoints(\n data.points.map((_) => new THREE.Vector3(x(_.x), z(_.z), y(_.y)))\n );\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 line = new THREE.Line(geometry, material);\n\n line.computeLineDistances();\n line.scale.set(1, 1, 1);\n this._scene.add(line);\n });\n\n const plane = new THREE.GridHelper(\n this.SIDE_SIZE,\n this.SIDE_SIZE / 10,\n this.gridColor,\n this.gridColor\n );\n\n plane.position.set(this.SIDE_SIZE / 2, 0, this.SIDE_SIZE / 2);\n this._scene.add(plane);\n\n const gridX = new THREE.GridHelper(\n this.SIDE_SIZE,\n this.SIDE_SIZE / 10,\n this.gridColor,\n this.gridColor\n );\n gridX.geometry.rotateX(-Math.PI / 2);\n gridX.position.set(this.SIDE_SIZE / 2, this.SIDE_SIZE / 2, 0);\n this._scene.add(gridX);\n\n const gridY = new THREE.GridHelper(\n this.SIDE_SIZE,\n this.SIDE_SIZE / 10,\n this.gridColor,\n this.gridColor\n );\n gridY.geometry.rotateZ(Math.PI / 2);\n gridY.position.set(0, this.SIDE_SIZE / 2, this.SIDE_SIZE / 2);\n this._scene.add(gridY);\n\n this.drawTicks(x, y, z);\n\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 private createScene() {\n this._scene = new THREE.Scene();\n\n const aspectRatio =\n this._elementRef.nativeElement.clientWidth /\n this._elementRef.nativeElement.clientHeight;\n\n const fieldOfView = 10;\n const nearClippingPane = 1;\n const farClippingPane = 10000;\n\n this._camera = new THREE.PerspectiveCamera(\n fieldOfView,\n aspectRatio,\n nearClippingPane,\n farClippingPane\n );\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 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(5, 5, 5);\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(_), z(0), -5);\n }\n\n if (idx === 1) {\n sprite.position.set(-5, z(0), y(_));\n }\n\n if (idx === 2) {\n sprite.position.set(0, z(_), -5);\n }\n\n ticks.add(sprite);\n });\n });\n\n const northLabel = this.makeSprite('North', { fontSize: 28 });\n const westLabel = this.makeSprite('West', { fontSize: 28 });\n const tvdLabel = this.makeSprite('TVD', { fontSize: 28 });\n\n northLabel.position.set(x(scalesExtrems[0]) + 10, 0, 0);\n westLabel.position.set(0, 0, y(scalesExtrems[1]) + 10);\n tvdLabel.position.set(0, z(scalesExtrems[2]), 0);\n\n ticks.add(northLabel, westLabel, tvdLabel);\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([\n d3.min(flattenExtrems.x) as any,\n this._config?.axes?.max == null\n ? d3.max(flattenExtrems.x)\n : this._config.axes.max,\n ])\n .range([0, this.SIDE_SIZE])\n .nice();\n\n const y = d3\n .scaleLinear()\n .domain([\n d3.min(flattenExtrems.y) as any,\n this._config?.axes?.max == null\n ? d3.max(flattenExtrems.y)\n : this._config.axes.max,\n ])\n .range([0, this.SIDE_SIZE])\n .nice();\n\n const z = d3\n .scaleLinear()\n .domain([\n d3.min(flattenExtrems.z) as any,\n this._config?.axes?.max == null\n ? d3.max(flattenExtrems.z)\n : this._config.axes.max,\n ])\n .range([this.SIDE_SIZE, 0])\n .nice();\n\n return { x, y, z };\n }\n}\n","<canvas #canvas></canvas>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Chart3dComponent } from './chart3d/chart3d.component';\n\n@NgModule({\n declarations: [Chart3dComponent],\n exports: [Chart3dComponent],\n imports: [CommonModule],\n})\nexport class Chart3dModule {}\n","import { Base3dPoint } from './base-3d-point';\nimport { Series3d } from './series-3d';\n\nexport class Chart3dOptions {\n axes?: {\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","/* accordion */\nexport * from './accordion/public-api';\n\n/* button */\nexport * from './button/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-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/* 3d-chart */\nexport * from './chart-3d/public-api';\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 {\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 { DynamicComponentService } from '../../common/service/dynamic-component.service';\nimport { DOCUMENT } from '@angular/common';\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';\nimport { ClickService } from '../../common/service/click.service';\nimport { merge } from 'rxjs';\nimport { filter, takeWhile, tap } from 'rxjs/operators';\n\n@Directive({\n selector: '[tetaContextMenu]',\n})\nexport class ContextMenuDirective\n extends DynamicContentBaseDirective\n implements OnDestroy, OnInit\n{\n /**\n * Строка, шаблон или компонент для создания контекстного меню\n */\n @Input() tetaContextMenu: string | TemplateRef<any> | Type<any>;\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 }\n\n @HostListener('contextmenu', ['$event'])\n showContent(event: MouseEvent): void {\n event.preventDefault();\n setTimeout(() => {\n this.createMenu(event);\n });\n }\n\n @HostListener('click', ['$event'])\n click(event: MouseEvent): void {\n if (\n this._componentRef &&\n DomUtil.clickedInside(this._componentRef.location.nativeElement, event)\n ) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n override ngOnInit() {\n super.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(\n (event: MouseEvent) =>\n !DomUtil.clickedInside(\n this._componentRef.location.nativeElement,\n event\n )\n ),\n tap((_) => {\n this.destroyContentRef();\n this.openChange.emit(false);\n })\n )\n .subscribe();\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\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(\n this._componentRef.location.nativeElement,\n position\n );\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 = [\n ...ArrayUtil.asArray(this.className),\n 'context-menu',\n ];\n this.openChange.emit(true);\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ContextMenuDirective} from './context-menu.directive';\nimport {DynamicComponentModule} from '../../component/dynamic-component/dynamic-component.module';\n\n@NgModule({\n declarations: [ContextMenuDirective],\n exports: [ContextMenuDirective],\n imports: [\n CommonModule,\n DynamicComponentModule\n ]\n})\nexport class ContextMenuModule {\n}\n","import {Directive, Input} from '@angular/core';\nimport {NgControl} from '@angular/forms';\n\n@Directive({\n selector: '[tetaDisableControl]'\n})\nexport class DisableControlDirective {\n @Input() set tetaDisableControl(val: boolean) {\n if (this.ngControl.control) {\n if (val) {\n this.ngControl.control.disable();\n } else {\n this.ngControl.control.enable();\n }\n }\n }\n\n constructor(private ngControl: NgControl) {\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DisableControlDirective} from './disable-control.directive';\n\n\n@NgModule({\n declarations: [DisableControlDirective],\n imports: [\n CommonModule\n ],\n exports: [\n DisableControlDirective\n ]\n})\nexport class DisableControlModule {\n}\n","import {\n // ContentChildren,\n Directive,\n EventEmitter,\n HostListener,\n Input,\n Output,\n // QueryList,\n} from '@angular/core';\nimport {DragSortEvent} from './drag-sort-event';\n// import {DragSortItemDirective} from './drag-sort-item.directive';\n\n@Directive({\n selector: '[tetaDragSortContainer]',\n})\nexport class DragSortContainerDirective<T> {\n @Input() dragSortList: T[];\n @Output() dragSorted: EventEmitter<DragSortEvent<T>> = new EventEmitter<DragSortEvent<T>>();\n\n // @ContentChildren(DragSortItemDirective, {descendants: true})\n // private items: QueryList<DragSortItemDirective<T>>;\n private _dragItem: T;\n\n constructor() {\n }\n\n @HostListener('drop', ['$event']) drop(event: DragEvent): void {\n event.stopPropagation();\n event.preventDefault();\n }\n\n setDragItem(item: T) {\n this._dragItem = item;\n }\n\n getDragItem(): T {\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 (\n (insertBefore && sourceIndex + 1 === targetIndex) ||\n (!insertBefore && sourceIndex === targetIndex + 1)\n ) {\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';\nimport {DragSortContainerDirective} from './drag-sort-container.directive';\n\n@Directive({\n selector: '[tetaDragSortItem]',\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\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(\n this._elementRef.nativeElement,\n this._dragElement\n );\n this._renderer.addClass(this._dragElement, 'drop-direction');\n this._renderer.addClass(\n this._dragElement,\n this.dragSortDirection === 'horizontal'\n ? 'drop-direction-horizontal'\n : '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\n ? 'end'\n : 'start';\n } else {\n return event.clientY >= this.rect.y + this.rect.height / 2\n ? 'end'\n : 'start';\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DragSortContainerDirective } from './drag-sort-container.directive';\nimport { DragSortItemDirective } from './drag-sort-item.directive';\n\n@NgModule({\n declarations: [DragSortContainerDirective, DragSortItemDirective],\n exports: [DragSortContainerDirective, DragSortItemDirective],\n imports: [CommonModule],\n})\nexport class DragSortModule {}\n","import {\n Directive,\n ElementRef,\n Inject,\n Input,\n OnDestroy,\n Renderer2,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n@Directive({\n selector: '[tetaLoader]',\n})\nexport class LoaderDirective implements OnDestroy {\n @Input() appendToBody = 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 _alive = true;\n private _loading: boolean;\n\n constructor(\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n @Inject(DOCUMENT) private _document: any\n ) {\n this._element = this._elementRef.nativeElement;\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 this._renderer.appendChild(\n this.appendToBody ? this._document.body : this._element,\n this._loader\n );\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 }\n\n private setPosition() {\n const position = this._element.getBoundingClientRect();\n this._renderer.setStyle(\n this._loader,\n 'top',\n `${position.y + position.height / 2}px`\n );\n this._renderer.setStyle(\n this._loader,\n 'left',\n `${position.x + +position.width / 2}px`\n );\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {LoaderDirective} from './loader.directive';\n\n@NgModule({\n declarations: [LoaderDirective],\n exports: [LoaderDirective],\n imports: [\n CommonModule\n ]\n})\nexport class LoaderModule {\n}\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} from '@angular/common';\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})\nexport class ResizePanelComponent implements OnInit, OnDestroy {\n @Input()\n set direction(val: 'vertical' | 'horizontal') {\n this._direction = val;\n }\n\n get direction() {\n return this._direction;\n }\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\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\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(\n this._elementRef.nativeElement,\n 'height',\n `${newSize}px`\n );\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(\n this._elementRef.nativeElement,\n 'width',\n `${newSize}px`\n );\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(\n this._elementRef.nativeElement,\n 'width',\n `${savedSize}px`\n );\n } else {\n this._renderer.setStyle(\n this._elementRef.nativeElement,\n 'height',\n `${savedSize}px`\n );\n }\n this._renderer.setStyle(this._elementRef.nativeElement, 'flex-grow', `0`);\n this._renderer.setStyle(\n this._elementRef.nativeElement,\n 'flex-shrink',\n `0`\n );\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(\n `resize-panel${this.name}`,\n this._elementRef.nativeElement.clientWidth\n );\n } else {\n localStorage.setItem(\n `resize-panel${this.name}`,\n this._elementRef.nativeElement.clientHeight\n );\n }\n }\n }\n}\n","<ng-content></ng-content>\n<div #grab class=\"resize-grab\"\n (resizeStart)=\"resizeStart($event)\"\n (resizeProcess)=\"resizeProcess($event)\"\n (resizeEnd)=\"resizeEnd($event)\"\n [tetaResizeDrag]=\"direction\"\n [ngClass]=\"getClassName()\">\n <teta-icon [name]=\"direction\"></teta-icon>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ResizePanelComponent } from './resize-panel/resize-panel.component';\nimport { IconModule } from '../icon/icon.module';\nimport { ResizeDragModule } from '../../directive/resize-drag/resize-drag.module';\n\n@NgModule({\n declarations: [ResizePanelComponent],\n exports: [ResizePanelComponent],\n imports: [CommonModule, IconModule, ResizeDragModule],\n})\nexport class ResizePanelModule {}\n","import {\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 { DynamicContentBaseDirective } from '../dynamic-content-base.directive';\nimport { DOCUMENT } from '@angular/common';\nimport { DynamicComponentService } from '../../common/service/dynamic-component.service';\nimport { DomUtil } from '../../common/util/dom-util';\nimport { PositionUtil } from '../../common/util/position-util';\nimport { Align } from '../../common/enum/align.enum';\nimport { VerticalAlign } from '../../common/enum/vertical-align.enum';\nimport { merge } from 'rxjs';\nimport { filter, takeWhile, tap } from 'rxjs/operators';\nimport { ClickService } from '../../common/service/click.service';\n\n@Directive({\n selector: '[tetaTooltip]',\n})\nexport class TooltipDirective\n extends DynamicContentBaseDirective\n implements OnDestroy, OnInit\n{\n /**\n * Строка, шаблон или компонент для создания контекстного меню\n */\n @Input() tetaTooltip: string | TemplateRef<any> | Type<any>;\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 override ngOnInit() {\n super.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(\n (event: MouseEvent) =>\n !DomUtil.clickedInside(this._elementRef.nativeElement, event)\n ),\n filter(\n (event: MouseEvent) =>\n !DomUtil.clickedInside(\n this._componentRef.location.nativeElement,\n event\n )\n ),\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 =\n this._componentRef.location.nativeElement.getBoundingClientRect();\n }\n const containerPosition =\n 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(\n this._componentRef.location.nativeElement,\n position\n );\n const verticalClass =\n 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 { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TooltipDirective } from './tooltip.directive';\nimport { DynamicComponentModule } from '../../component/dynamic-component/dynamic-component.module';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n\n@NgModule({\n declarations: [TooltipDirective],\n exports: [TooltipDirective],\n imports: [CommonModule, DynamicComponentModule, BrowserAnimationsModule],\n})\nexport class TooltipModule {}\n","import { Directive, ElementRef, OnInit, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[tetaNoAutofill]',\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(private _renderer: Renderer2, private _elementRef: ElementRef) {}\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 { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NoAutofillDirective } from './no-autofill.directive';\n\n@NgModule({\n exports: [NoAutofillDirective],\n declarations: [NoAutofillDirective],\n imports: [CommonModule],\n})\nexport class NoAutofillModule {}\n","import {Inject, Injectable, OnDestroy} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\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\n getContainer(): HTMLElement {\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","export class StringUtil {\n static firstLetterToLower(input: string) {\n return input.charAt(0).toLocaleLowerCase() + input.slice(1);\n };\n}\n","/**\n * Components\n */\n\nexport * from './component/public-api';\n\n/**\n * Directives\n */\nexport * from './directive/public-api';\n\n/**\n * Pipes\n */\nexport * from './pipe/public-api';\n\n/**\n * Common\n */\nexport * from './common/public-api';\n\n/**\n * Util\n */\nexport * from './util/public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["objectHash"],"mappings":"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"}