{"version":3,"file":"mosaic-design-infosec-components-components-field-sort-order-select.mjs","sources":["../../../libs/components/field-sort-order-select/src/lib/types/field-type.ts","../../../libs/components/field-sort-order-select/src/lib/components/field-sort-order-select/field-sort-order-select.component.ts","../../../libs/components/field-sort-order-select/src/lib/components/field-sort-order-select/field-sort-order-select.component.html","../../../libs/components/field-sort-order-select/src/lib/constants/i18n.ts","../../../libs/components/field-sort-order-select/src/lib/field-sort-order-select.module.ts","../../../libs/components/field-sort-order-select/mosaic-design-infosec-components-components-field-sort-order-select.ts"],"sourcesContent":["export enum FieldType {\n    Number = 'number',\n    DateTime = 'datetime',\n    String = 'string',\n    Regex = 'regex',\n    Enum = 'enum',\n    Boolean = 'boolean',\n    Unknown = 'unknown',\n    // поле сортируется по значению\n    Order = 'order',\n    // поле сортируется по значению, при этом среди значений выделяются низкие и высокие значения\n    // например, поле Критичность в инцидентах\n    Value = 'value'\n}\n","import { ChangeDetectionStrategy, Component, Injector, Input } from '@angular/core';\nimport { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { distinctUntilChanged, filter, takeUntil } from 'rxjs';\n\nimport { ControlValueAccessor } from '@mosaic-design/infosec-components/core-components/common';\nimport { DestroyService } from '@mosaic-design/infosec-components/services';\nimport { IcTranslocoScopeAlias, SortOrder } from '@mosaic-design/infosec-components/types';\n\nimport { FieldType } from '../../types';\n\ntype Value = SortOrder | undefined;\ntype ParentValue = Value | null;\n\n@Component({\n    selector: 'ic-field-sort-order-select',\n    templateUrl: './field-sort-order-select.component.html',\n    styleUrl: './field-sort-order-select.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: FieldSortOrderSelectComponent,\n            multi: true\n        },\n        DestroyService\n    ],\n    host: {\n        class: 'kbq-form-field'\n    }\n})\nexport class FieldSortOrderSelectComponent extends ControlValueAccessor<ParentValue, Value> {\n    protected readonly IcTranslocoScopeAlias = IcTranslocoScopeAlias;\n    protected readonly SortOrder = SortOrder;\n    protected readonly FieldType = FieldType;\n\n    @Input() fieldType: FieldType | undefined;\n\n    protected readonly sortOrderControl = new FormControl<Value>(undefined);\n    protected readonly sortOrders = [SortOrder.Ascending, SortOrder.Descending];\n\n    #lastEmittedValue: Value;\n    #isTouched = false;\n\n    constructor(\n        injector: Injector,\n        private destroyed$: DestroyService\n    ) {\n        super(injector);\n        this.createFormSubscription();\n    }\n\n    override writeValue(value: ParentValue): void {\n        this.sortOrderControl.setValue(value ?? undefined);\n    }\n\n    private createFormSubscription(): void {\n        this.sortOrderControl.valueChanges\n            .pipe(\n                distinctUntilChanged(),\n                filter((value) => value !== this.#lastEmittedValue),\n                takeUntil(this.destroyed$)\n            )\n            .subscribe((value) => {\n                const normalizedValue = value ?? undefined;\n                this.onChange(normalizedValue);\n                this.#lastEmittedValue = normalizedValue;\n\n                if (!this.#isTouched) {\n                    this.onTouch();\n                    this.#isTouched = true;\n                }\n            });\n    }\n}\n","<ng-container *transloco=\"let translate; read: IcTranslocoScopeAlias.FieldSortOrderSelect\">\n    <kbq-form-field>\n        <kbq-select [multiple]=\"false\" [formControl]=\"sortOrderControl\">\n            <ng-container *ngIf=\"fieldType\">\n                <kbq-option *ngFor=\"let sortOrder of sortOrders\" [value]=\"sortOrder\">\n                    <ng-template #optionTranslateTemplate>\n                        <ng-container *ngIf=\"sortOrder === SortOrder.Ascending; else descendingTemplate\">\n                            <ng-container [ngSwitch]=\"fieldType\">\n                                <ng-container *ngSwitchCase=\"FieldType.Number\">\n                                    <span>{{ translate('FieldSortOrderSelect.Option.Ascending.Number') }}</span>\n                                </ng-container>\n\n                                <ng-container *ngSwitchCase=\"FieldType.DateTime\">\n                                    <span>{{ translate('FieldSortOrderSelect.Option.Ascending.DateTime') }}</span>\n                                </ng-container>\n\n                                <ng-container *ngSwitchCase=\"FieldType.String\">\n                                    <span>{{ translate('FieldSortOrderSelect.Option.Ascending.String') }}</span>\n                                </ng-container>\n\n                                <ng-container *ngSwitchCase=\"FieldType.Regex\">\n                                    <span>{{ translate('FieldSortOrderSelect.Option.Ascending.Regex') }}</span>\n                                </ng-container>\n\n                                <ng-container *ngSwitchCase=\"FieldType.Enum\">\n                                    <span>{{ translate('FieldSortOrderSelect.Option.Ascending.Enum') }}</span>\n                                </ng-container>\n\n                                <ng-container *ngSwitchCase=\"FieldType.Boolean\">\n                                    <span>{{ translate('FieldSortOrderSelect.Option.Ascending.Boolean') }}</span>\n                                </ng-container>\n\n                                <ng-container *ngSwitchCase=\"FieldType.Unknown\">\n                                    <span>{{ translate('FieldSortOrderSelect.Option.Ascending.Unknown') }}</span>\n                                </ng-container>\n\n                                <ng-container *ngSwitchCase=\"FieldType.Order\">\n                                    <span>{{ translate('FieldSortOrderSelect.Option.Ascending.Order') }}</span>\n                                </ng-container>\n\n                                <ng-container *ngSwitchDefault>\n                                    <span>{{ translate('FieldSortOrderSelect.Option.Ascending.Value') }}</span>\n                                </ng-container>\n                            </ng-container>\n                        </ng-container>\n\n                        <ng-template #descendingTemplate>\n                            <ng-container [ngSwitch]=\"fieldType\">\n                                <ng-container *ngSwitchCase=\"FieldType.Number\">\n                                    <span>{{ translate('FieldSortOrderSelect.Option.Descending.Number') }}</span>\n                                </ng-container>\n\n                                <ng-container *ngSwitchCase=\"FieldType.DateTime\">\n                                    <span>{{ translate('FieldSortOrderSelect.Option.Descending.DateTime') }}</span>\n                                </ng-container>\n\n                                <ng-container *ngSwitchCase=\"FieldType.String\">\n                                    <span>{{ translate('FieldSortOrderSelect.Option.Descending.String') }}</span>\n                                </ng-container>\n\n                                <ng-container *ngSwitchCase=\"FieldType.Regex\">\n                                    <span>{{ translate('FieldSortOrderSelect.Option.Descending.Regex') }}</span>\n                                </ng-container>\n\n                                <ng-container *ngSwitchCase=\"FieldType.Enum\">\n                                    <span>{{ translate('FieldSortOrderSelect.Option.Descending.Enum') }}</span>\n                                </ng-container>\n\n                                <ng-container *ngSwitchCase=\"FieldType.Boolean\">\n                                    <span>{{ translate('FieldSortOrderSelect.Option.Descending.Boolean') }}</span>\n                                </ng-container>\n\n                                <ng-container *ngSwitchCase=\"FieldType.Unknown\">\n                                    <span>{{ translate('FieldSortOrderSelect.Option.Descending.Unknown') }}</span>\n                                </ng-container>\n\n                                <ng-container *ngSwitchCase=\"FieldType.Order\">\n                                    <span>{{ translate('FieldSortOrderSelect.Option.Descending.Order') }}</span>\n                                </ng-container>\n\n                                <ng-container *ngSwitchDefault>\n                                    <span>{{ translate('FieldSortOrderSelect.Option.Descending.Value') }}</span>\n                                </ng-container>\n                            </ng-container>\n                        </ng-template>\n                    </ng-template>\n\n                    <ic-coalesce-content [items]=\"[{ template: optionTranslateTemplate }]\"></ic-coalesce-content>\n                </kbq-option>\n            </ng-container>\n        </kbq-select>\n    </kbq-form-field>\n</ng-container>\n","import { fieldSortOrderSelectTranslates } from '@mosaic-design/infosec-components/i18n-resources';\nimport { LocalizationScopeConfig, IcTranslocoScopeAlias } from '@mosaic-design/infosec-components/types';\n\nexport const scopeConfig: LocalizationScopeConfig = {\n    alias: IcTranslocoScopeAlias.FieldSortOrderSelect,\n    localTranslates: fieldSortOrderSelectTranslates\n};\n","import { NgForOf, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqSelectModule } from '@koobiq/components/select';\n\nimport { IcCoalesceContentModule } from '@mosaic-design/infosec-components/components/coalesce-content';\n\nimport { FieldSortOrderSelectComponent } from './components';\n\n/**\n * @deprecated Будет удален в 19 версии. Компоненты будут standalone\n */\n@NgModule({\n    declarations: [FieldSortOrderSelectComponent],\n    imports: [\n        NgForOf,\n        NgIf,\n        NgSwitch,\n        NgSwitchCase,\n        NgSwitchDefault,\n        KbqFormFieldModule,\n        KbqSelectModule,\n        ReactiveFormsModule,\n        IcCoalesceContentModule,\n        TranslocoDirective\n    ],\n    exports: [FieldSortOrderSelectComponent]\n})\nexport class IcFieldSortOrderSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}