@updevs/components 1.0.0-alpha.30 → 1.0.0-alpha.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.
- package/esm2022/table/models/table-config.model.mjs +2 -1
- package/esm2022/table/models/table.config.mjs +1 -1
- package/esm2022/table/table.component.mjs +7 -3
- package/fesm2022/updevs-components-table.mjs +7 -2
- package/fesm2022/updevs-components-table.mjs.map +1 -1
- package/package.json +24 -24
- package/table/models/table-config.model.d.ts +2 -0
- package/table/models/table.config.d.ts +2 -0
- package/table/table.component.d.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updevs-components-table.mjs","sources":["../../../../libs/components/table/src/models/enums/column-type.enum.ts","../../../../libs/components/table/src/abstractions/base-column.model.ts","../../../../libs/components/table/src/abstractions/filters-operands.service.ts","../../../../libs/components/table/src/abstractions/base.column.ts","../../../../libs/components/table/src/components/columns/text-column/text-column.component.ts","../../../../libs/components/table/src/components/columns/text-column/text-column.component.html","../../../../libs/components/table/src/components/columns/number-column/number-column.component.ts","../../../../libs/components/table/src/components/columns/number-column/number-column.component.html","../../../../libs/components/table/src/components/columns/boolean-column/boolean-column.component.ts","../../../../libs/components/table/src/components/columns/boolean-column/boolean-column.component.html","../../../../libs/components/table/src/components/columns/date-time-column/date-time-column.component.ts","../../../../libs/components/table/src/components/columns/date-time-column/date-time-column.component.html","../../../../libs/components/table/src/directives/table-column.directive.ts","../../../../libs/components/table/src/models/columns/boolean-column.model.ts","../../../../libs/components/table/src/models/columns/date-time-column.model.ts","../../../../libs/components/table/src/models/columns/text-column.model.ts","../../../../libs/components/table/src/models/columns/guid-column.model.ts","../../../../libs/components/table/src/models/columns/image-column.model.ts","../../../../libs/components/table/src/models/columns/number-column.model.ts","../../../../libs/components/table/src/models/table-config.model.ts","../../../../libs/components/table/src/components/columns-manager/columns-manager.component.ts","../../../../libs/components/table/src/components/columns-manager/columns-manager.component.html","../../../../libs/components/table/src/services/storages/saved-views.storage.ts","../../../../libs/components/table/src/components/save-search/save-search.component.ts","../../../../libs/components/table/src/components/save-search/save-search.component.html","../../../../libs/components/table/src/tools/filters.tools.ts","../../../../libs/components/table/src/tools/table.constants.ts","../../../../libs/components/table/src/models/upd-table-config.model.ts","../../../../libs/components/table/src/services/upd-table-config.service.ts","../../../../libs/components/table/src/components/filter-row/filter-row.component.ts","../../../../libs/components/table/src/components/filter-row/filter-row.component.html","../../../../libs/components/table/src/components/search-section/search-section.component.ts","../../../../libs/components/table/src/components/search-section/search-section.component.html","../../../../libs/components/table/src/table.component.ts","../../../../libs/components/table/src/table.component.html","../../../../libs/components/table/src/services/stores/filters-operands.store.ts","../../../../libs/components/table/src/models/operands-lists/filter-operands-list.config.ts","../../../../libs/components/table/src/models/operands-lists/string-filter-operands-list.model.ts","../../../../libs/components/table/src/models/operands-lists/date-or-number-operands-list.config.ts","../../../../libs/components/table/src/models/operands-lists/number-filter-operands-list.model.ts","../../../../libs/components/table/src/models/operands-lists/boolean-filter-operands-list.model.ts","../../../../libs/components/table/src/models/operands-lists/date-filter-operands-list.model.ts","../../../../libs/components/table/src/models/operands-lists/guid-filter-operands-list.model.ts","../../../../libs/components/table/src/services/default-filters-operands.service.ts","../../../../libs/components/table/src/upd-table.module.ts","../../../../libs/components/table/src/updevs-components-table.ts"],"sourcesContent":["export enum ColumnTypeEnum {\n Text = 1,\n DateTime = 2,\n Number = 3,\n Boolean = 4,\n Date = 5,\n Time = 6,\n Image = 7,\n Currency = 8,\n Custom = 9,\n Masked = 10,\n Guid = 11\n}\n","import { TextModel } from '@updevs/sdk';\nimport { DataTypeEnum } from '@updevs/sdk/stores';\nimport { WidthModel } from '@updevs/sdk/layout';\nimport { OptionalType, TextAlignmentType, TextDecorationType, OverflowStrategyType, FontWeightType } from '@updevs/sdk/types';\n\nimport { ColumnTypeEnum } from '../models/enums/column-type.enum';\n\nexport class BaseColumnModel {\n name!: string;\n title?: TextModel;\n titleAlignment: TextAlignmentType = 'left';\n allowSort = true;\n isItalic = false;\n type = ColumnTypeEnum.Text;\n /**\n * Width.\n */\n width?: WidthModel;\n alignment: TextAlignmentType = 'left';\n decoration?: TextDecorationType;\n weight: FontWeightType = 'normal';\n overflowStrategy: OverflowStrategyType = 'truncate';\n shouldSpaceAfterPrefix = true;\n shouldSpaceBeforeSuffix = true;\n isHidden = false;\n prefix?: TextModel;\n suffix?: TextModel;\n\n get dataType(): DataTypeEnum {\n switch (this.type) {\n case ColumnTypeEnum.Boolean:\n return DataTypeEnum.Boolean;\n case ColumnTypeEnum.DateTime:\n case ColumnTypeEnum.Date:\n case ColumnTypeEnum.Time:\n return DataTypeEnum.Date;\n case ColumnTypeEnum.Currency:\n case ColumnTypeEnum.Number:\n return DataTypeEnum.Number;\n case ColumnTypeEnum.Guid:\n return DataTypeEnum.Guid;\n default:\n return DataTypeEnum.String;\n }\n }\n\n get widthClass(): string {\n if (!this.width || !!this.width.pixels) {\n return '';\n }\n\n const prefix = !!this.width.gridColumn ? 'col' : 'w';\n const auto = !!this.width.gridColumn && this.width.gridColumn === 0 ? 'auto' : '';\n\n return `${prefix}-${auto || this.widthSize}`;\n }\n\n get widthSize(): number {\n return !this.width ? 0 : this.width.gridColumn || this.width.percentage || 0;\n }\n\n get pixelsSize(): OptionalType<number> {\n return this.width?.pixels;\n }\n\n constructor(columnType: ColumnTypeEnum, init?: Partial<BaseColumnModel>) {\n if (!!init) {\n Object.assign(this, init);\n }\n\n this.type = columnType;\n }\n}\n","import { DataTypeEnum } from '@updevs/sdk/stores';\nimport { NonNullableDictionaryType } from '@updevs/sdk/types';\n\nimport { FilterOperandConfig } from '../models/filter-operand.config';\n\nexport abstract class FiltersOperandsService {\n abstract get isLoaded(): boolean;\n abstract getOperands(type: DataTypeEnum): FilterOperandConfig[];\n abstract getAllOperands(): NonNullableDictionaryType<FilterOperandConfig[]>;\n}\n","import { inject, Directive } from '@angular/core';\nimport { TextService } from '@updevs/sdk';\n\nimport { BaseColumnModel } from './base-column.model';\nimport { ColumnTypeEnum } from '../models/enums/column-type.enum';\n\n@Directive()\nexport abstract class BaseColumn<TConfig extends BaseColumnModel> {\n record!: any;\n config!: TConfig;\n get value(): any {\n return (this.record as any)[this.config.name];\n }\n get isTextType(): boolean {\n return this.config.type !== ColumnTypeEnum.Boolean\n && this.config.type !== ColumnTypeEnum.Image\n && this.config.type !== ColumnTypeEnum.Custom;\n }\n get prefix(): string {\n return this.textService.getText(this.config.prefix);\n }\n get suffix(): string {\n return this.textService.getText(this.config.suffix);\n }\n get prefixSpace(): string {\n return !!this.prefix && this.config.shouldSpaceAfterPrefix ? ' ' : '';\n }\n get suffixSpace(): string {\n return !!this.suffix && this.config.shouldSpaceBeforeSuffix ? ' ' : '';\n }\n readonly textService = inject(TextService);\n\n private get alignmentClass(): string {\n const prefix = this.isTextType ? 'text' : 'justify-content';\n\n switch (this.config.alignment) {\n case 'justify':\n return `${prefix}-${(this.isTextType ? 'justify' : 'between')}`;\n case 'center':\n return `${prefix}-center`;\n case 'right':\n return `${prefix}-end`;\n default:\n return `${prefix}-start`;\n }\n }\n private get overflowClass(): string {\n switch (this.config.overflowStrategy) {\n case 'no-wrap':\n return 'text-nowrap';\n case 'wrap':\n return 'text-wrap';\n case 'word-break':\n return 'text-break';\n default:\n return 'text-truncate';\n }\n }\n private get decorationClass(): string {\n switch (this.config.decoration) {\n case 'underline':\n return 'text-decoration-underline';\n case 'strikethrough':\n return 'text-decoration-line-through';\n case 'none':\n return 'text-decoration-none';\n default:\n return '';\n }\n }\n private get weightClass(): string {\n switch (this.config.weight) {\n case 'bold':\n return 'fw-bold';\n case 'bolder':\n return 'fw-bolder';\n case 'light':\n return 'fw-light';\n case 'lighter':\n return 'fw-lighter';\n default:\n return 'fw-normal';\n }\n }\n\n getRecordAs<T>(): T {\n return this.record as T;\n }\n\n getClasses(): string[] {\n return [\n this.alignmentClass,\n this.overflowClass,\n this.decorationClass,\n this.weightClass,\n this.config.isItalic ? 'fst-italic' : ''\n ];\n }\n}\n","import { Component } from '@angular/core';\n\nimport { BaseColumn } from '../../../abstractions/base.column';\nimport { TextColumnModel } from '../../../models/columns/text-column.model';\n\n@Component({\n selector: 'upd-text-column',\n templateUrl: './text-column.component.html',\n styleUrl: './text-column.component.scss'\n})\nexport class TextColumnComponent extends BaseColumn<TextColumnModel> {\n override getClasses(): string[] {\n return [\n ...super.getClasses(),\n this.transformClass\n ];\n }\n\n private get transformClass(): string {\n switch (this.config.transform) {\n case 'capitalize':\n return 'text-capitalize';\n case 'lowercase':\n return 'text-lowercase';\n case 'uppercase':\n return 'text-uppercase';\n default:\n return '';\n }\n }\n}\n","<span [ngClass]=\"getClasses()\">{{ prefix }}{{ prefixSpace }}{{ value }}{{ suffixSpace }}{{ suffix }}</span>\n","import { Component } from '@angular/core';\n\nimport { BaseColumn } from '../../../abstractions/base.column';\nimport { NumberColumnModel } from '../../../models/columns/number-column.model';\n\n@Component({\n selector: 'upd-number-column',\n templateUrl: './number-column.component.html',\n styleUrl: './number-column.component.scss'\n})\nexport class NumberColumnComponent extends BaseColumn<NumberColumnModel> {}\n","<span [ngClass]=\"getClasses()\">{{ prefix }}{{ prefixSpace }}{{ value | number:config.numberFormat }}{{ suffixSpace }}{{ suffix }}</span>\n","import { Component } from '@angular/core';\n\nimport { BaseColumn } from '../../../abstractions/base.column';\nimport { BooleanColumnModel } from '../../../models/columns/boolean-column.model';\n\n@Component({\n selector: 'upd-boolean-column',\n templateUrl: './boolean-column.component.html',\n styleUrl: './boolean-column.component.scss'\n})\nexport class BooleanColumnComponent extends BaseColumn<BooleanColumnModel> {\n override getClasses(): string[] {\n return [\n ...super.getClasses(),\n this.colorClass\n ];\n }\n\n private get colorClass(): string {\n if (!this.config.shouldColorHighlight) {\n return '';\n }\n\n return `text-${(!!this.value ? this.config.trueColor : this.config.falseColor)}`;\n }\n}\n","<div [ngClass]=\"getClasses()\">\n @switch (config.displayType) {\n @case ('text') {\n {{ prefix }}{{ prefixSpace }}{{ !!value ? textService.getText(config.trueText) : textService.getText(config.falseText) }}{{ suffixSpace }}{{ suffix }}\n }\n @case ('toggle') {\n {{ prefix }}{{ prefixSpace }}\n <upd-icon [tablerIcon]=\"!!value ? 'toggle-right' : 'toggle-left'\"></upd-icon>{{ suffixSpace }}{{ suffix }}\n }\n @case ('icon') {\n {{ prefix }}{{ prefixSpace }}\n <upd-icon [model]=\"!!value ? config.trueIcon : config.falseIcon\"></upd-icon>{{ suffixSpace }}{{ suffix }}\n }\n }\n</div>\n","import { Component } from '@angular/core';\n\nimport { BaseColumn } from '../../../abstractions/base.column';\nimport { DateTimeColumnModel } from '../../../models/columns/date-time-column.model';\n\n@Component({\n selector: 'upd-date-time-column',\n templateUrl: './date-time-column.component.html',\n styleUrl: './date-time-column.component.scss'\n})\nexport class DateTimeColumnComponent extends BaseColumn<DateTimeColumnModel> {}\n","<span [ngClass]=\"getClasses()\">{{ prefix }}{{ prefixSpace }}{{ value | date:config.dateTimeFormat }}{{ suffixSpace }}{{ suffix }}</span>\n","import { Directive, input, inject, ViewContainerRef, effect } from '@angular/core';\nimport { DynamicComponentLoaderService } from '@updevs/sdk/layout';\nimport { ComponentType } from '@updevs/sdk/types';\n\nimport { BaseColumnModel } from '../abstractions/base-column.model';\nimport { BaseColumn } from '../abstractions/base.column';\nimport { ColumnTypeEnum } from '../models/enums/column-type.enum';\nimport { TextColumnComponent } from '../components/columns/text-column/text-column.component';\nimport { NumberColumnComponent } from '../components/columns/number-column/number-column.component';\nimport { BooleanColumnComponent } from '../components/columns/boolean-column/boolean-column.component';\nimport { DateTimeColumnComponent } from '../components/columns/date-time-column/date-time-column.component';\n\n@Directive({\n selector: '[updTableColumn]'\n})\nexport class TableColumnDirective<TConfig extends BaseColumnModel> {\n record = input.required();\n config = input.required<TConfig>();\n\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly dynamicLoaderService = inject(DynamicComponentLoaderService);\n\n constructor() {\n effect(() => {\n const component = this.dynamicLoaderService.load(this.getComponentType(), this.viewContainerRef);\n component.instance.record = this.record();\n component.instance.config = this.config();\n });\n }\n\n getComponentType(): ComponentType<BaseColumn<TConfig>> {\n switch (this.config().type) {\n case ColumnTypeEnum.Text:\n // @ts-ignore\n return TextColumnComponent;\n case ColumnTypeEnum.Number:\n // @ts-ignore\n return NumberColumnComponent;\n case ColumnTypeEnum.Boolean:\n // @ts-ignore\n return BooleanColumnComponent;\n case ColumnTypeEnum.Date:\n // @ts-ignore\n return DateTimeColumnComponent;\n case ColumnTypeEnum.Guid:\n // @ts-ignore\n return TextColumnComponent;\n default:\n throw Error();\n }\n }\n}\n","import { IconModel } from '@updevs/icons';\nimport { TextModel } from '@updevs/sdk';\nimport { ColorStyleType } from '@updevs/sdk/types';\n\nimport { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { ColumnTypeEnum } from '../enums/column-type.enum';\n\nexport class BooleanColumnModel extends BaseColumnModel {\n displayType: 'text' | 'toggle' | 'icon' = 'text';\n trueText: TextModel = { text: 'UpDevs.Table.Filters.Boolean.True', isTranslated: false };\n falseText: TextModel = { text: 'UpDevs.Table.Filters.Boolean.False', isTranslated: false };\n trueIcon: IconModel = { tablerIcon: 'square-check' };\n falseIcon: IconModel = { tablerIcon: 'square' };\n trueColor: ColorStyleType = 'success';\n falseColor: ColorStyleType = 'secondary';\n shouldColorHighlight = true;\n\n constructor(init?: Partial<BooleanColumnModel>) {\n super(ColumnTypeEnum.Boolean, init);\n\n if (this.displayType !== 'text') {\n this.alignment = 'center';\n }\n\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { DateTimeFormatEnum } from '@updevs/sdk/core';\n\nimport { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { ColumnTypeEnum } from '../enums/column-type.enum';\n\nexport class DateTimeColumnModel extends BaseColumnModel {\n format = DateTimeFormatEnum.ShortDate;\n customFormat?: string;\n get dateTimeFormat(): string {\n return this.customFormat || this.format;\n }\n\n constructor(init?: Partial<DateTimeColumnModel>) {\n super(ColumnTypeEnum.DateTime, init);\n\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { TextTransformType } from '@updevs/sdk/types';\n\nimport { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { ColumnTypeEnum } from '../enums/column-type.enum';\n\nexport class TextColumnModel extends BaseColumnModel {\n transform?: TextTransformType;\n\n constructor(init?: Partial<TextColumnModel>) {\n super(ColumnTypeEnum.Text, init);\n\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { ColumnTypeEnum } from '../enums/column-type.enum';\nimport { TextColumnModel } from './text-column.model';\n\nexport class GuidColumnModel extends TextColumnModel {\n constructor(init?: Partial<GuidColumnModel>) {\n super(init);\n\n this.transform = 'uppercase';\n\n if (!!init) {\n Object.assign(this, init);\n }\n\n this.type = ColumnTypeEnum.Guid;\n }\n}\n","import { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { ColumnTypeEnum } from '../enums/column-type.enum';\n\nexport class ImageColumnModel extends BaseColumnModel {\n imageWidth?: number;\n imageHeight?: number;\n\n constructor(init?: Partial<ImageColumnModel>) {\n super(ColumnTypeEnum.Image, init);\n\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { ColumnTypeEnum } from '../enums/column-type.enum';\n\nexport class NumberColumnModel extends BaseColumnModel {\n minIntegerDigits = 1;\n minFractionDigits = 0;\n maxFractionDigits = 3;\n get numberFormat(): string {\n return `${this.minIntegerDigits}.${this.minFractionDigits}-${this.maxFractionDigits}`;\n }\n\n constructor(init?: Partial<NumberColumnModel>) {\n super(ColumnTypeEnum.Number, init);\n\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { TextModel } from '@updevs/sdk';\nimport { BaseSearchStore } from '@updevs/sdk/stores';\nimport { GetByIdType } from '@updevs/sdk/types';\n\nimport { TableConfig } from './table.config';\nimport { BaseColumnModel } from '../abstractions/base-column.model';\n\nexport class TableConfigModel<T> implements TableConfig<T> {\n name!: string;\n store?: BaseSearchStore<T>;\n columns: BaseColumnModel[] = [];\n title?: TextModel;\n canSearch = true;\n canSaveViews = true;\n canLoadSavedViews = true;\n canManageColumns = true;\n shouldAutoSearch = true;\n hasCheckboxColumn = true;\n isResponsive = true;\n hasStickyHeader = false;\n data: T[] = [];\n preSelectedItems: T[] = [];\n searchInputDebounceTime = 300;\n\n constructor(init?: TableConfig<T>) {\n if (!!init) {\n Object.assign(this, init);\n }\n }\n\n getIdFunction: GetByIdType<T> = (item: T) => (item as any).id;\n}\n","import { Component, computed, signal } from '@angular/core';\nimport { DragAndDropColumnConfig, DragAndDropColumnModel } from '@updevs/components/drag-and-drop';\nimport { BaseModal } from '@updevs/components/modal';\n\nimport { TableConfig } from '../../models/table.config';\n\n@Component({\n selector: 'upd-columns-manager',\n templateUrl: './columns-manager.component.html',\n styleUrl: './columns-manager.component.scss'\n})\nexport class ColumnsManagerComponent<T> extends BaseModal<TableConfig<T>> {\n config = computed(() => ({ columns: [this.visibleColumn(), this.hiddenColumn()], canReorder: true }));\n columns = signal<DragAndDropColumnModel[]>([]);\n\n private readonly visibleColumn = computed<DragAndDropColumnConfig>(() =>\n ({\n name: 'visible',\n title: { text: 'UpDevs.Table.VisibleColumns', isTranslated: false },\n canBeEmpty: false,\n items: this.data().columns.filter(c => !c.isHidden).map(c => ({\n name: c.name,\n text: c.title || { text: 'UpDevs.Table.ColumnTitleNotSet', isTranslated: false }\n }))\n })\n );\n private readonly hiddenColumn = computed<DragAndDropColumnConfig>(() =>\n ({\n name: 'hidden',\n title: { text: 'UpDevs.Table.HiddenColumns', isTranslated: false },\n items: this.data().columns.filter(c => c.isHidden).map(c => ({\n name: c.name,\n text: c.title || { text: 'UpDevs.Table.ColumnTitleNotSet', isTranslated: false }\n }))\n })\n );\n}\n","<ng-container *transloco=\"let t; prefix: 'UpDevs.Table.ColumnsManager'\">\n <upd-drag-and-drop [config]=\"config()\" [(columns)]=\"columns\"></upd-drag-and-drop>\n</ng-container>\n","import { Injectable, Signal, computed } from '@angular/core';\nimport { Tools } from '@updevs/sdk/core';\nimport { OptionalType } from '@updevs/sdk/types';\nimport { BaseByUserSignalStorage } from '@updevs/sdk/security';\n\nimport { SavedViewModel } from '../../models/saved-view.model';\n\n@Injectable()\nexport class SavedViewsStorage extends BaseByUserSignalStorage {\n private readonly lastStateKey = 'last-state';\n\n constructor() {\n super('saved-views');\n }\n\n saveView(data: SavedViewModel): void {\n data.id = data.id || Tools.Guid.generate();\n data.userId = this._loggedUserId;\n\n this.save(data, this._getUserKey(data.id, data.tableName));\n }\n\n saveLastState(data: SavedViewModel): void {\n data.id = this.lastStateKey;\n this.saveView(data);\n }\n\n getById(tableName: string, id: string): Signal<OptionalType<SavedViewModel>> {\n return this.get(this._getUserKey(id, tableName));\n }\n\n getAll(tableName: string): Signal<SavedViewModel[]> {\n return computed(() => {\n const records = this.getAllItems<SavedViewModel>();\n return records().filter(sv =>\n sv.tableName.toLowerCase() === tableName.toLowerCase()\n && sv.userId === this._loggedUserId\n && sv.id !== this.lastStateKey\n );\n });\n }\n\n getLastState(tableName: string): Signal<OptionalType<SavedViewModel>> {\n return this.getById(tableName, this.lastStateKey);\n }\n\n resetAllIsDefault(tableName: string): void {\n const savedViews = this.getAll(tableName)();\n savedViews.forEach(sv => {\n sv.isDefault = false;\n this.saveView(sv);\n });\n }\n\n removeViews(tableName: string, ...keys: string[]): void {\n super.remove(...keys.map(k => this._getUserKey(k, tableName)));\n }\n\n getByName(tableName: string, name: string): OptionalType<SavedViewModel> {\n const records = this.getAllItems<SavedViewModel>();\n return records().find(sv =>\n sv.tableName.toLowerCase() === tableName.toLowerCase()\n && sv.userId === this._loggedUserId\n && sv.name?.toLowerCase() === name?.toLowerCase()\n && sv.id !== this.lastStateKey\n );\n }\n}\n","import { Component, model, inject, OnInit } from '@angular/core';\nimport { Validators, FormGroup, ValidatorFn, AbstractControl, ValidationErrors } from '@angular/forms';\nimport { FormRowModel, DynamicFieldType } from '@updevs/components/form';\nimport { BaseModal } from '@updevs/components/modal';\n\nimport { SavedViewModel } from '../../models/saved-view.model';\nimport { SavedViewsStorage } from '../../services/storages/saved-views.storage';\n\n@Component({\n selector: 'upd-save-search',\n templateUrl: './save-search.component.html',\n styleUrl: './save-search.component.scss'\n})\nexport class SaveSearchComponent extends BaseModal<SavedViewModel> implements OnInit {\n formGroup = model(new FormGroup({}));\n formRows: FormRowModel[] = [];\n\n private readonly savedViewsStorage = inject(SavedViewsStorage);\n\n ngOnInit(): void {\n this.formRows = [\n {\n fields: [\n {\n name: 'name',\n type: DynamicFieldType.Input,\n colSize: { default: 12 },\n label: { text: 'UpDevs.Table.SaveSearch.Name', isTranslated: false },\n validators: [Validators.required, Validators.minLength(3), this.uniqueNameValidator()],\n initValue: this.data().name\n }\n ]\n },\n {\n fields: [\n {\n name: 'isDefault',\n type: DynamicFieldType.Checkbox,\n colSize: { default: 6 },\n label: { text: 'UpDevs.Table.SaveSearch.IsDefault', isTranslated: false },\n hint: { text: 'UpDevs.Table.SaveSearch.IsDefaultHint', isTranslated: false },\n hintAsTooltip: true,\n initValue: this.data().isDefault || false\n }\n ]\n }\n ];\n }\n\n cancel(): void {\n this.modalRef().close();\n }\n\n save(): void {\n const formValue = this.formGroup().value as any;\n const data = { ...this.data(), name: formValue.name, isDefault: formValue.isDefault };\n\n if (data.isDefault) {\n this.savedViewsStorage.resetAllIsDefault(this.data().tableName);\n }\n\n this.savedViewsStorage.saveView(data);\n this.modalRef().close();\n }\n\n private uniqueNameValidator = (): ValidatorFn => (control: AbstractControl): ValidationErrors | null => {\n const existingRecord = this.savedViewsStorage.getByName(this.data().tableName, control.value);\n return !!existingRecord\n ? { nameNotUnique: { errorText: { text: 'UpDevs.Table.SavedViews.NameNotUnique', isTranslated: false } } }\n // eslint-disable-next-line no-null/no-null\n : null;\n };\n}\n","<ng-container *transloco=\"let t; prefix: 'UpDevs.Table.SaveSearch'\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">{{ t('Title') }}</h5>\n </div>\n <div class=\"modal-body py-4\">\n <upd-form [rows]=\"formRows\" [hasActionsSection]=\"false\" [(formGroup)]=\"formGroup\"></upd-form>\n </div>\n <div class=\"modal-footer\">\n <upd-button colorStyle=\"secondary\" [isLink]=\"true\" (clicked)=\"cancel()\">\n {{ t('Cancel') }}\n </upd-button>\n <upd-button colorStyle=\"primary\" [iconModel]=\"{tablerIcon:'device-floppy'}\" (clicked)=\"save()\" [isDisabled]=\"!formGroup().valid\">\n {{ t('Save') }}\n </upd-button>\n </div>\n</ng-container>\n","import {\n BaseFilter,\n DataTypeEnum,\n BooleanColumnFilter,\n FilterBooleanOperandEnum,\n DateColumnFilter,\n FilterDateOperandEnum,\n NumberColumnFilter,\n FilterNumberOperandEnum,\n GuidColumnFilter,\n FilterOperandEnum,\n StringColumnFilter\n} from '@updevs/sdk/stores';\nimport { NonNullableDictionaryType } from '@updevs/sdk/types';\n\nimport { FilterItemModel } from '../models/filter-item.model';\nimport { BaseColumnModel } from '../abstractions/base-column.model';\nimport { FilterOperandConfig } from '../models/filter-operand.config';\n\nexport class FilterTools {\n static convertToFilterItem(filters: BaseFilter[], operands: NonNullableDictionaryType<FilterOperandConfig[]>): FilterItemModel[] {\n return filters.map(f => ({\n name: f.column,\n value: f.value,\n operandConfig: operands[f.dataType].find(op => op.operand === f.operand)\n }));\n }\n\n static convertToRequestFilter(filters: FilterItemModel[], columns: BaseColumnModel[]): BaseFilter[] {\n return filters.map(af => {\n const col = columns.find(c => c.name === af.name);\n\n switch (col?.dataType) {\n case DataTypeEnum.Boolean:\n return new BooleanColumnFilter({\n column: af.name,\n value: af.value,\n operand: !!af.operandConfig ? <FilterBooleanOperandEnum> af.operandConfig.operand : undefined\n });\n case DataTypeEnum.Date:\n return new DateColumnFilter({\n column: af.name,\n value: af.value,\n operand: !!af.operandConfig ? <FilterDateOperandEnum> af.operandConfig.operand : undefined\n });\n case DataTypeEnum.Number:\n return new NumberColumnFilter({\n column: af.name,\n value: af.value,\n operand: !!af.operandConfig ? <FilterNumberOperandEnum> af.operandConfig.operand : undefined\n });\n case DataTypeEnum.Guid:\n return new GuidColumnFilter({\n column: af.name,\n value: af.value,\n operand: !!af.operandConfig ? <FilterOperandEnum> af.operandConfig.operand : undefined\n });\n default:\n return new StringColumnFilter({\n column: af.name,\n value: af.value,\n operand: !!af.operandConfig ? <FilterOperandEnum> af.operandConfig.operand : undefined\n });\n }\n });\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { UpdTableConfig } from '../models/upd-table.config';\n\n/**\n * Table constants.\n */\nexport class TableConstants {\n /**\n * Key to inject the default configuration.\n */\n static defaultOptionsKey = 'upd-table-default-options';\n\n /**\n * Injection token for the default configuration.\n */\n static defaultOptionsInjectionToken = new InjectionToken<UpdTableConfig>(TableConstants.defaultOptionsKey);\n}\n","import { UpdTableConfig } from './upd-table.config';\n\nexport class UpdTableConfigModel implements UpdTableConfig {\n shouldLoadFieldsFromServer = false;\n urlToLoadOperandsFromServer?: string;\n\n constructor(init?: UpdTableConfig) {\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { Injectable, Inject } from '@angular/core';\n\nimport { TableConstants } from '../tools/table.constants';\nimport { UpdTableConfig } from '../models/upd-table.config';\nimport { UpdTableConfigModel } from '../models/upd-table-config.model';\n\n@Injectable()\nexport class UpdTableConfigService {\n /**\n * Configuration (See: #upsee[p:models, i:UpdTableConfigModel]).\n */\n readonly config: UpdTableConfigModel;\n\n constructor(@Inject(TableConstants.defaultOptionsInjectionToken) layoutConfig: UpdTableConfig) {\n this.config = new UpdTableConfigModel(layoutConfig);\n }\n}\n","import { Component, signal, inject, OnInit, input, model, HostBinding, Output, EventEmitter } from '@angular/core';\nimport { TextService } from '@updevs/sdk';\nimport { BaseSearchStore, DataTypeEnum } from '@updevs/sdk/stores';\nimport { OptionalType } from '@updevs/sdk/types';\nimport { SelectItem } from '@updevs/components/form-controls/select';\nimport { BaseComponent } from '@updevs/sdk/layout';\n\nimport { UpdTableConfigService } from '../../services/upd-table-config.service';\nimport { FiltersOperandsService } from '../../abstractions/filters-operands.service';\nimport { FilterItemModel } from '../../models/filter-item.model';\nimport { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { FilterOperandConfig } from '../../models/filter-operand.config';\n\n@Component({\n selector: 'upd-filter-row',\n templateUrl: './filter-row.component.html',\n styleUrl: './filter-row.component.scss'\n})\nexport class FilterRowComponent extends BaseComponent implements OnInit {\n @HostBinding('class') wrapperClasses = 'd-flex gap-2';\n\n @Output() readonly removed: EventEmitter<void> = new EventEmitter();\n\n DataTypeEnum = DataTypeEnum;\n\n activeFilters = model.required<FilterItemModel[]>();\n rowIndex = input.required<number>();\n columns = input.required<BaseColumnModel[]>();\n isDisabled = input.required<boolean>();\n store = input<BaseSearchStore>();\n currentFilter = input<FilterItemModel>();\n currentField = signal<OptionalType<SelectItem>>(undefined);\n currentOperand = signal<OptionalType<FilterOperandConfig>>(undefined);\n fieldsOptions = signal<SelectItem[]>([]);\n comparisonOperatorOptions = signal<SelectItem[]>([]);\n isValueSectionEnabled = signal<boolean>(true);\n\n get fieldType(): DataTypeEnum {\n return this.currentField()?.objectData || DataTypeEnum.String;\n }\n get selectedField(): OptionalType<SelectItem> {\n const currentFilter = this.currentFilter();\n return !!currentFilter?.name\n ? this.fieldsOptions().find(f => f.value === currentFilter.name)\n : undefined;\n }\n get selectedOperand(): OptionalType<SelectItem> {\n const currentFilter = this.currentFilter();\n return !!currentFilter?.name\n ? this.comparisonOperatorOptions().find(co => co.value === currentFilter.operandConfig?.operand)\n : undefined;\n }\n get selectedValue(): OptionalType<any> {\n const currentFilter = this.currentFilter();\n return !!currentFilter?.name ? currentFilter.value : undefined;\n }\n\n private currentOperands: FilterOperandConfig[] = [];\n private readonly configService = inject(UpdTableConfigService);\n private readonly filtersOperandsService = inject(FiltersOperandsService);\n private readonly textService = inject(TextService);\n\n ngOnInit(): void {\n if (!!this.store() && this.configService.config.shouldLoadFieldsFromServer) {\n this.store()!.getFilterableFields().subscribe(fields =>\n this.fieldsOptions.set(fields.map(f => ({ value: f.name!, text: f.description!, objectData: f.type })))\n );\n } else {\n this.fieldsOptions.set(\n this.columns().filter(c => !!c.title).map(c =>\n ({ value: c.name, text: this.textService.getText(c.title), objectData: c.dataType }))\n );\n }\n\n if (!!this.selectedField) {\n if (!!this.selectedOperand) {\n this.onSelectOperand(this.selectedOperand);\n }\n\n this.onSelectField(this.selectedField);\n }\n }\n\n onSelectField(item?: SelectItem): void {\n this.currentField.set(item);\n\n const dataType = item?.objectData;\n\n if (!!dataType) {\n this.currentOperands = this.filtersOperandsService.getOperands(dataType);\n this.comparisonOperatorOptions.set(\n this.currentOperands.map(o => ({ value: o.operand, text: this.textService.getText(o.text), listItem: { icon: o.icon } }))\n );\n } else {\n this.comparisonOperatorOptions.set([]);\n }\n\n this.activeFilters.update(curr => {\n curr[this.rowIndex()].name = this.currentField()?.value;\n return [...curr];\n });\n }\n\n onSelectOperand(item?: SelectItem): void {\n this.currentOperand.set(this.currentOperands.find(co => co.operand === item?.value));\n this.isValueSectionEnabled.set(!!this.currentOperand()?.requiresValue);\n this.activeFilters.update(curr => {\n curr[this.rowIndex()].operandConfig = this.currentOperand();\n return [...curr];\n });\n }\n\n updateValue(value?: any): void {\n this.activeFilters.update(curr => {\n curr[this.rowIndex()].value = value;\n return [...curr];\n });\n }\n\n removeFilterItem(): void {\n this.activeFilters.update(curr => {\n curr.splice(this.rowIndex(), 1);\n return [...curr];\n });\n this.removed.emit();\n }\n}\n","<upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"fieldsOptions()\" (selectedItem)=\"onSelectField($event)\"\n [selected]=\"selectedField\">\n</upd-select>\n<upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"comparisonOperatorOptions()\" (selectedItem)=\"onSelectOperand($event)\"\n [selected]=\"selectedOperand\">\n</upd-select>\n\n@if (isValueSectionEnabled()) {\n @switch (fieldType) {\n @case (DataTypeEnum.Number) {\n <upd-input wrapperClasses=\"w-100\" customClasses=\"h-100\" type=\"number\" (valueChange)=\"updateValue($event)\"\n [value]=\"selectedValue\"></upd-input>\n }\n @case (DataTypeEnum.Date) {\n\n }\n @default {\n <upd-input wrapperClasses=\"w-100\" customClasses=\"h-100\" type=\"text\" (valueChange)=\"updateValue($event)\"\n [value]=\"selectedValue\"></upd-input>\n }\n }\n} @else {\n <div class=\"w-100\">\n <input type=\"text\" class=\"form-control h-100\" disabled>\n </div>\n}\n\n<upd-button class=\"flex-shrink-1\" colorStyle=\"danger\" [isDisabled]=\"isDisabled()\" [isOutline]=\"true\" [isIcon]=\"true\"\n [iconModel]=\"{tablerIcon:'x'}\" (clicked)=\"removeFilterItem()\"></upd-button>\n","import { Component, input, TemplateRef, HostBinding, signal, computed, model, OnInit, effect, inject } from '@angular/core';\nimport { SearchRequestModel } from '@updevs/sdk/stores';\nimport { BaseComponent } from '@updevs/sdk/layout';\nimport { OptionalType, BgColorStyleType } from '@updevs/sdk/types';\nimport { BadgeConfig } from '@updevs/components/badge';\nimport { Subject, distinctUntilChanged, debounceTime } from 'rxjs';\n\nimport { FilterItemModel } from '../../models/filter-item.model';\nimport { TableConfigModel } from '../../models/table-config.model';\nimport { FilterTools } from '../../tools/filters.tools';\nimport { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { FiltersOperandsService } from '../../abstractions/filters-operands.service';\n\n@Component({\n selector: 'upd-search-section',\n templateUrl: './search-section.component.html',\n styleUrl: './search-section.component.scss'\n})\nexport class SearchSectionComponent<T> extends BaseComponent implements OnInit {\n @HostBinding('class') wrapperClass = 'card-body border-bottom py-3 d-flex flex-column gap-2';\n\n searchRequest = model.required<SearchRequestModel>();\n hasChanges = model.required<boolean>();\n columns = input.required<BaseColumnModel[]>();\n isSearching = input.required<boolean>();\n searchRequestSubject = input.required<Subject<SearchRequestModel>>();\n config = input.required<TableConfigModel<T>>();\n actionsTpl = input<TemplateRef<any>>();\n activeFilters = signal<FilterItemModel[]>([]);\n isFilterSectionOpen = signal(false);\n canApplyFilters = computed(() => this.activeFilters().length > 0\n && this.activeFilters().every(af => !!af.name && !!af.operandConfig?.operand && (!af.operandConfig?.requiresValue || !!af.value))\n );\n canPerformActions = computed(() => this.canApplyFilters() && !this.isSearching());\n badgeConfig = computed<OptionalType<BadgeConfig>>(() =>\n (this.searchRequest().filters?.length || 0) > 0\n ? ({\n isNotification: true,\n isPill: true,\n bgColor: 'primary-lt',\n text: { text: this.searchRequest().filters!.length.toString(), isTranslated: true }\n })\n : undefined\n );\n filterSectionBtnColor = computed(() => this.isFilterSectionOpen() ? <BgColorStyleType>'primary' : undefined);\n\n readonly searchSubject = new Subject<string>();\n\n private readonly filtersOperandsService = inject(FiltersOperandsService);\n\n constructor() {\n super();\n\n effect(() => {\n if ((this.searchRequest().filters?.length || 0) > 0) {\n this.activeFilters.set(\n [...FilterTools.convertToFilterItem(this.searchRequest().filters || [], this.filtersOperandsService.getAllOperands())]\n );\n } else {\n this.activeFilters.set([]);\n this.isFilterSectionOpen.set(false);\n }\n }, { allowSignalWrites: true });\n }\n\n ngOnInit(): void {\n const searchSub = this.searchSubject\n .pipe(\n distinctUntilChanged(),\n debounceTime(this.config().searchInputDebounceTime)\n )\n .subscribe(term =>\n this.searchRequestSubject().next({\n ...this.searchRequest(),\n description: term\n })\n );\n\n this.addSubscriptions(searchSub);\n }\n\n search(): void {\n this.searchRequestSubject().next({\n ...this.searchRequest(),\n filters: FilterTools.convertToRequestFilter(this.activeFilters(), this.config().columns)\n });\n }\n\n toggleFilterSection(): void {\n if (this.activeFilters().length === 0) {\n this.addEmptyFilterRow();\n }\n\n this.isFilterSectionOpen.update(isOpen => !isOpen);\n }\n\n onRowRemoved(): void {\n if (this.activeFilters().length === 0) {\n this.isFilterSectionOpen.set(false);\n }\n\n this.search();\n }\n\n addEmptyFilterRow(): void {\n this.activeFilters.update(curr => {\n curr.push({});\n return [...curr];\n });\n }\n}\n","<ng-container *transloco=\"let t; prefix: 'UpDevs.Table'\">\n @if (!!actionsTpl()) {\n <ng-template [ngTemplateOutlet]=\"actionsTpl()!\"></ng-template>\n }\n\n <div class=\"d-flex align-items-center gap-2\">\n <upd-input wrapperClasses=\"w-100\" [placeholder]=\"{text:'UpDevs.Table.Search', isTranslated:false}\" [isAppendButton]=\"true\"\n (valueChange)=\"searchSubject.next($event)\" [value]=\"searchRequest().description\">\n <ng-template updInputAppend>\n <upd-button [isIcon]=\"true\" [colorStyle]=\"filterSectionBtnColor()\" (clicked)=\"toggleFilterSection()\"\n [badgeConfig]=\"badgeConfig()\">\n <upd-icon [tablerIcon]=\"isFilterSectionOpen() ? 'filter-up' : 'filter-down'\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n </ng-template>\n </upd-input>\n </div>\n\n @if (isFilterSectionOpen()) {\n @for (row of activeFilters(); track row; let i = $index) {\n <upd-filter-row [store]=\"config().store\" [currentFilter]=\"row\" [(activeFilters)]=\"activeFilters\" [columns]=\"columns()\"\n [rowIndex]=\"i\" (removed)=\"onRowRemoved()\" [isDisabled]=\"isSearching()\">\n </upd-filter-row>\n }\n\n <div class=\"ms-auto d-flex gap-2\">\n <upd-button customClasses=\"gap-2\" colorStyle=\"primary\" [isOutline]=\"true\" (clicked)=\"addEmptyFilterRow()\"\n [isDisabled]=\"!canPerformActions()\">\n <upd-icon tablerIcon=\"plus\" tablerIconWeight=\"bold\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('AddNewFilter') }}\n </upd-button>\n <upd-button customClasses=\"gap-2\" colorStyle=\"success\" [isDisabled]=\"!canPerformActions()\" (clicked)=\"search()\">\n <upd-icon tablerIcon=\"checks\" tablerIconWeight=\"bold\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('ApplyFilters') }}\n </upd-button>\n </div>\n }\n</ng-container>\n","import { Component, inject, signal, computed, effect, OnInit, Signal, model, ElementRef, viewChild } from '@angular/core';\nimport { TablerIconsType } from '@updevs/icons';\nimport { TextService } from '@updevs/sdk';\nimport { SelectionModel, Tools, ServerResponseService } from '@updevs/sdk/core';\nimport { OptionalType, ButtonSizeType } from '@updevs/sdk/types';\nimport { BaseComponent, ButtonModel } from '@updevs/sdk/layout';\nimport { SearchRequestModel, BaseSearchStore, ColumnSort, SortDirectionEnum, SearchResponseModel } from '@updevs/sdk/stores';\nimport { ModalService, ModalRef, ModalAlertService } from '@updevs/components/modal';\nimport { DropdownItem, DropdownActionClickedModel } from '@updevs/components/dropdown';\nimport { distinctUntilChanged, tap, switchMap, finalize, Subject, catchError, of } from 'rxjs';\n\nimport { TableConfig } from './models/table.config';\nimport { TableConfigModel } from './models/table-config.model';\nimport { BaseColumnModel } from './abstractions/base-column.model';\nimport { FilterItemModel } from './models/filter-item.model';\nimport { ColumnsManagerComponent } from './components/columns-manager/columns-manager.component';\nimport { SaveSearchComponent } from './components/save-search/save-search.component';\nimport { SavedViewModel } from './models/saved-view.model';\nimport { SavedViewsStorage } from './services/storages/saved-views.storage';\n\nimport Utils = Tools.Utils;\n\n@Component({\n selector: 'upd-table',\n templateUrl: './table.component.html',\n styleUrl: './table.component.scss'\n})\nexport class TableComponent<T> extends BaseComponent implements OnInit {\n savedViewsRef = viewChild('savedViewsBtn', { read: ElementRef });\n config = model.required<TableConfig<T>>();\n isSearching = signal<boolean>(false);\n selectedItems = computed<T[]>(() => this.selectionModel().selected());\n activeSavedView = signal<OptionalType<SavedViewModel>>(undefined);\n isMainCheckboxChecked = false;\n isMainCheckboxIndeterminate = false;\n isSavedViewsDropdownOpen = false;\n\n get numberOfColumns(): number {\n return this.columns().length + (this.configModel().hasCheckboxColumn ? 1 : 0) + (!!this.pendingWidthColClass ? 1 : 0);\n }\n\n get hasWidth(): boolean {\n return this.columns().some(rec => !!rec.width);\n }\n\n get pendingWidthColClass(): string {\n if (!this.hasWidth || this.isWidthInPixels) {\n return '';\n }\n\n const isGrid = this.columns().some(rec => !!rec.width?.gridColumn);\n const total = isGrid ? 12 : 100;\n const remainingSize = total - this.columns().reduce((acc, item) => acc + item.widthSize, 0);\n\n return remainingSize > 0 ? `${(isGrid ? 'col' : 'w')}-${remainingSize}` : '';\n }\n\n get isWidthInPixels(): boolean {\n return this.columns().some(rec => !!rec.width?.pixels);\n }\n\n readonly searchRequest = model<SearchRequestModel>({});\n readonly activeFilters = model<FilterItemModel[]>([]);\n readonly currentPage = model<number>(1);\n readonly pageSize = model<number>(0);\n readonly hasSearchChanged = signal(false);\n readonly totalRecords = signal<number>(0);\n readonly configModel = computed(() => new TableConfigModel(this.config()));\n readonly data: Signal<T[]> = computed(() => this.configModel().data.length > 0 ? this.configModel().data : this.currentData());\n readonly selectionModel = computed(() => new SelectionModel<T>(this.configModel().getIdFunction));\n readonly currentSorting = signal<OptionalType<ColumnSort>>(undefined);\n readonly hiddenColumns = computed(() =>\n this.configModel().canManageColumns ? this.configModel().columns.filter(c => c.isHidden).length : 0\n );\n readonly columns = signal<BaseColumnModel[]>([]);\n readonly searchRequestSubject = new Subject<SearchRequestModel>();\n readonly textService = inject(TextService);\n readonly savedViewsOptions = computed<DropdownItem[]>(() => {\n const allSavedViewsOptions: DropdownItem[] = [];\n this.allSavedViews().forEach(sv => allSavedViewsOptions.push(this.getSavedViewOption(sv)));\n\n return allSavedViewsOptions;\n });\n\n private get isRemote(): boolean {\n return !!this.configModel().store;\n }\n\n private get store(): BaseSearchStore<T> {\n return this.configModel().store!;\n }\n\n private shouldForceSearch = false;\n private columnsBackup: BaseColumnModel[] = [];\n\n private readonly currentData = signal<T[]>([]);\n private readonly currentFavoriteButtons = computed<ButtonModel[]>(() => this.favoriteButtons);\n private readonly smallSizeSignal = signal<ButtonSizeType>('small');\n private readonly allSavedViews = computed(() => this.savedViewsStorage.getAll(this.configModel().name)());\n private readonly favoriteButtons: ButtonModel[] = [];\n private readonly serverResponseService = inject(ServerResponseService);\n private readonly savedViewsStorage = inject(SavedViewsStorage);\n private readonly modalService = inject(ModalService);\n private readonly modalAlertService = inject(ModalAlertService);\n\n constructor() {\n super();\n\n effect(() => {\n if (this.data().length > 0 && this.configModel().data.length > 0) {\n this.setupPreSelected();\n }\n\n if (this.selectedItems().length > 0) {\n if (this.selectedItems().length !== this.data().length) {\n this.isMainCheckboxChecked = false;\n this.isMainCheckboxIndeterminate = true;\n } else {\n this.isMainCheckboxIndeterminate = false;\n this.isMainCheckboxChecked = true;\n }\n } else {\n this.isMainCheckboxChecked = false;\n this.isMainCheckboxIndeterminate = false;\n }\n });\n }\n\n ngOnInit(): void {\n this.columnsBackup = [...this.config().columns];\n const searchSubjectSub = this.searchRequestSubject\n .pipe(\n distinctUntilChanged((prev, curr) => !this.shouldForceSearch || Utils.areEqual(prev, curr)),\n tap((request) => {\n this.isSearching.set(true);\n this.currentData.set([]);\n this.searchRequest.set(request);\n\n if (\n (request.filters?.length || 0) > 0\n || (request.description || '').length > 0\n || (request.sortings?.length || 0) > 0\n ) {\n this.hasSearchChanged.set(true);\n }\n }),\n switchMap(() =>\n this.store.search(this.searchRequest()).pipe(\n catchError(() => of()) // Already handled by the ServerResponseService.\n )\n ),\n finalize(() => this.shouldForceSearch = false)\n )\n .subscribe(resp => this.setupSearchResults(resp));\n const serverResponseSub = this.serverResponseService.onError.subscribe(error => {\n if (!!error) {\n this.isSearching.set(false);\n }\n });\n\n if (this.configModel().shouldAutoSearch && this.isRemote) {\n this.shouldForceSearch = true;\n this.searchRequestSubject.next({});\n }\n\n this.updateColumns(this.configModel().columns);\n this.addSubscriptions(searchSubjectSub, serverResponseSub);\n }\n\n toggleAllSelection(isChecked: boolean): void {\n if (isChecked) {\n this.selectionModel().select(...this.currentData());\n } else {\n this.selectionModel().clearSelection();\n }\n }\n\n toggleItemSelection(record: T): void {\n if (this.selectionModel().isSelected(record)) {\n this.selectionModel().deselect(record);\n } else {\n this.selectionModel().select(record);\n }\n }\n\n canSortColumn(columnName: string): boolean {\n return this.getColumnByName(columnName).allowSort;\n }\n\n sortByColumn(columnName: string): void {\n if (!this.currentSorting()) {\n this.currentSorting.set(new ColumnSort({ column: columnName }));\n } else {\n this.currentSorting.set(\n new ColumnSort({\n column: columnName,\n direction: this.currentSorting()!.column === columnName\n ? (this.currentSorting()!.direction === SortDirectionEnum.Asc ? SortDirectionEnum.Desc : SortDirectionEnum.Asc)\n : SortDirectionEnum.Asc\n })\n );\n }\n\n if (this.isRemote) {\n this.searchRequest.set({\n ...this.searchRequest(),\n sortings: [this.currentSorting()!]\n });\n this.searchRequestSubject.next(this.searchRequest());\n } else {\n const col = this.getColumnByName(columnName);\n // TODO: local sort\n }\n }\n\n getSortingIcon(columnName: string): TablerIconsType {\n return !!this.currentSorting() && this.currentSorting()!.column === columnName\n ? (this.currentSorting()!.direction === SortDirectionEnum.Asc ? 'sort-ascending' : 'sort-descending')\n : 'arrows-sort';\n }\n\n onPageSettingsChanged(): void {\n this.searchRequest.set({\n ...this.searchRequest(),\n pageSize: this.pageSize(),\n pageIndex: this.currentPage()\n });\n this.searchRequestSubject.next(this.searchRequest());\n }\n\n getRecordId(record: T): any {\n return this.configModel().getIdFunction(record);\n }\n\n openColumnsManagerModal(): void {\n const ref: ModalRef = this.modalService.open(undefined, {\n bodyContentType: ColumnsManagerComponent,\n showCloseButton: false,\n showCancelButton: true,\n data: this.config(),\n isTextCentered: false,\n actionButtons: [\n new ButtonModel({\n text: signal({ text: 'UpDevs.Table.ColumnsManager.Apply', isTranslated: false }),\n colorStyle: signal('primary'),\n iconModel: signal({ tablerIcon: 'checks' }),\n clickFunction: () => ref.close()\n })\n ]\n });\n ref.afterClose = () => {\n const result = ref.getBodyInstance<ColumnsManagerComponent<T>>()?.columns();\n\n if (!!result) {\n const previousVisibleColumnsOrder = this.columns().map(c => c.name);\n const visibleColumnsNames = result.find(c => c.name === 'visible')?.items().map(i => i.name) || [];\n const newColumns: BaseColumnModel[] = [];\n\n this.config.update(config => {\n visibleColumnsNames.forEach(name => {\n const col = config.columns.find(c => c.name === name)!;\n col.isHidden = false;\n\n newColumns.push(col);\n });\n config.columns.forEach(c => {\n if (!visibleColumnsNames.includes(c.name)) {\n c.isHidden = true;\n newColumns.push(c);\n }\n });\n\n return { ...config, columns: [...newColumns] };\n });\n this.updateColumns(newColumns);\n\n const newVisibleColumnsOrder = newColumns.map(c => c.name);\n\n if (previousVisibleColumnsOrder.length !== newVisibleColumnsOrder.length\n || !previousVisibleColumnsOrder.every((v, i) => v === newVisibleColumnsOrder[i])) {\n this.hasSearchChanged.set(true);\n }\n }\n };\n }\n\n openSaveSearchModal(data?: SavedViewModel): void {\n data = data || {\n tableName: this.configModel().name,\n request: this.searchRequest(),\n columns: this.configModel().columns\n };\n this.modalService.open(SaveSearchComponent, { showCloseButton: false, data });\n }\n\n selectSavedView(item: DropdownItem): void {\n const savedView = this.savedViewsStorage.getById(this.configModel().name, item.id)();\n this.isSavedViewsDropdownOpen = false;\n\n if (!!savedView) {\n this.updateColumns(savedView.columns);\n this.config.update(curr => {\n curr.columns = savedView.columns;\n return { ...curr };\n });\n this.activeSavedView.set(savedView);\n this.searchRequestSubject.next({ ...savedView.request });\n }\n }\n\n resetViewState(): void {\n this.activeSavedView.set(undefined);\n this.updateColumns(this.columnsBackup);\n this.config.update(curr => {\n curr.columns = this.columnsBackup;\n return { ...curr };\n });\n this.searchRequestSubject.next({});\n }\n\n private updateColumns(columns: BaseColumnModel[]): void {\n this.columns.set(columns.filter(c => !c.isHidden).map(c => new BaseColumnModel(c.type, { ...c })));\n }\n\n private getColumnByName(columnName: string): BaseColumnModel {\n const col = this.columns().find(c => c.name === columnName);\n\n if (!col) {\n throw Error('Tried accessing non existing column');\n }\n\n return col;\n }\n\n private setupPreSelected(): void {\n this.configModel().preSelectedItems.forEach(item => {\n const id = this.getRecordId(item);\n\n if (this.data().find(d => this.getRecordId(d) === id) && !this.selectionModel().isSelected(item)) {\n this.selectionModel().select(item);\n }\n });\n }\n\n private setupSearchResults(resp: SearchResponseModel<T>): void {\n this.isSearching.set(false);\n this.currentData.set(resp.records);\n this.totalRecords.set(resp.totalRecords || 0);\n this.currentPage.set(resp.pageIndex || 0);\n this.pageSize.set(resp.pageSize || 0);\n this.setupPreSelected();\n }\n\n private getActionButtons(currentFavoriteButtons: Signal<ButtonModel[]>, savedView: SavedViewModel): ButtonModel[] {\n return [\n new ButtonModel({\n isIcon: signal(true),\n isGhost: signal(true),\n colorStyle: signal('primary'),\n size: this.smallSizeSignal,\n title: signal({ text: 'UpDevs.Table.SavedViews.MarkAsDefault', isTranslated: false }),\n isActive: signal(savedView.isDefault || false),\n iconModel: signal({ tablerIcon: 'heart' }),\n clickFunction: (evt) => {\n const btnModel = (evt.data as DropdownActionClickedModel);\n const isButtonActive = btnModel.button.isActive();\n\n if (!isButtonActive) {\n this.savedViewsStorage.resetAllIsDefault(this.configModel().name);\n }\n\n savedView.isDefault = !isButtonActive;\n\n currentFavoriteButtons().forEach(cfb => cfb.isActive.set(false));\n btnModel.button.isActive.set(!isButtonActive);\n this.savedViewsStorage.saveView(savedView);\n }\n }),\n new ButtonModel({\n isIcon: signal(true),\n isGhost: signal(true),\n colorStyle: signal('secondary'),\n size: this.smallSizeSignal,\n title: signal({ text: 'UpDevs.Table.SavedViews.Duplicate', isTranslated: false }),\n iconModel: signal({ tablerIcon: 'copy' }),\n clickFunction: () => {\n const duplicateView = {\n ...savedView,\n id: Tools.Guid.generate(),\n name: savedView.name +\n ` (${this.textService.getText({ text: 'UpDevs.Table.SavedViews.DuplicateSuffix', isTranslated: false })})`\n };\n this.openSaveSearchModal(duplicateView);\n }\n }),\n new ButtonModel({\n isIcon: signal(true),\n isGhost: signal(true),\n colorStyle: signal('secondary'),\n size: this.smallSizeSignal,\n title: signal({ text: 'UpDevs.Table.SavedViews.Edit', isTranslated: false }),\n iconModel: signal({ tablerIcon: 'edit' }),\n clickFunction: () => this.openSaveSearchModal(savedView)\n }),\n new ButtonModel({\n isIcon: signal(true),\n isGhost: signal(true),\n colorStyle: signal('danger'),\n size: this.smallSizeSignal,\n title: signal({ text: 'UpDevs.Table.SavedViews.Remove', isTranslated: false }),\n iconModel: signal({ tablerIcon: 'x' }),\n clickFunction: () => {\n const title = this.textService.getText(\n { text: 'UpDevs.Table.SavedViews.ConfirmRemove', isTranslated: false },\n { view: savedView.name }\n );\n this.modalAlertService.showConfirm({ text: title, isTranslated: true }).subscribe(isConfirmed => {\n if (isConfirmed) {\n this.savedViewsStorage.removeViews(this.configModel().name, savedView.id!);\n }\n });\n }\n })\n ];\n }\n\n private getSavedViewOption(savedView: SavedViewModel): DropdownItem {\n const actionButtons = this.getActionButtons(this.currentFavoriteButtons, savedView);\n this.favoriteButtons.push(actionButtons.find(ab => ab.iconModel?.().tablerIcon === 'heart')!);\n\n return {\n id: savedView.id,\n type: 'with-toolbar',\n text: { text: savedView.name!, isTranslated: true },\n toolbarType: 'spaced',\n isActive: this.activeSavedView()?.id === savedView.id,\n actionButtons\n };\n }\n}\n","<ng-container *transloco=\"let t; prefix: 'UpDevs.Table'\">\n <div class=\"card\">\n @if (!!configModel().title || !configModel().canSearch) {\n <div class=\"card-header\">\n @if (!!configModel().title) {\n <h3 class=\"card-title\">{{ textService.getText(configModel().title) }}</h3>\n }\n <ng-template [ngTemplateOutlet]=\"actionsTpl\"></ng-template>\n </div>\n }\n\n @if (configModel().canSearch) {\n <upd-search-section [actionsTpl]=\"!configModel().title ? actionsTpl : undefined\" [isSearching]=\"isSearching()\"\n [(searchRequest)]=\"searchRequest\" [searchRequestSubject]=\"searchRequestSubject\" [config]=\"configModel()\"\n [(hasChanges)]=\"hasSearchChanged\" [columns]=\"columns()\">\n </upd-search-section>\n }\n\n <div [class.table-responsive]=\"configModel().isResponsive\">\n <!-- TODO: implement pixel sized table -->\n <table class=\"table card-table table-vcenter table-nowrap\" [class.fixed]=\"hasWidth\"\n [class.pixel-sized]=\"isWidthInPixels\">\n <thead [class.sticky-top]=\"configModel().hasStickyHeader\">\n <tr>\n @if (configModel().hasCheckboxColumn) {\n <th class=\"checkbox-selector\">\n <upd-checkbox customClasses=\"m-0 ps-0\" (changed)=\"toggleAllSelection($event)\"\n [(isChecked)]=\"isMainCheckboxChecked\"\n [(isIndeterminate)]=\"isMainCheckboxIndeterminate\"></upd-checkbox>\n </th>\n }\n\n @for (col of columns(); track col) {\n <th [ngClass]=\"col.widthClass\" [style.width.px]=\"col.pixelsSize\">\n {{ textService.getText(col.title) }}\n @if (canSortColumn(col.name)) {\n <upd-icon [tablerIcon]=\"getSortingIcon(col.name)\" tablerIconWeight=\"bold\" colorClass=\"text-body-tertiary\"\n [tablerIconSize]=\"16\" (click)=\"sortByColumn(col.name)\">\n </upd-icon>\n }\n </th>\n }\n\n @if (!!pendingWidthColClass) {\n <th [ngClass]=\"pendingWidthColClass\"></th>\n }\n </tr>\n </thead>\n\n <tbody>\n @if (isSearching()) {\n <tr>\n <td [colSpan]=\"numberOfColumns\">\n <div class=\"empty\">\n <h1 class=\"text-body-tertiary\">{{ t('Loading') }}...</h1>\n <div class=\"progress progress-sm w-25\">\n <div class=\"progress-bar progress-bar-indeterminate bg-body-tertiary\"></div>\n </div>\n </div>\n </td>\n </tr>\n } @else {\n @for (record of data(); track record) {\n <tr>\n @if (configModel().hasCheckboxColumn) {\n <td>\n <upd-checkbox customClasses=\"m-0 ps-0\" (changed)=\"toggleItemSelection(record)\"\n [isChecked]=\"selectionModel().isSelected(record)\"></upd-checkbox>\n </td>\n }\n\n @for (col of columns(); track col) {\n <td>\n <ng-container updTableColumn [record]=\"record\" [config]=\"col\"></ng-container>\n </td>\n }\n\n @if (!!pendingWidthColClass) {\n <td></td>\n }\n </tr>\n } @empty {\n <tr>\n <td [colSpan]=\"numberOfColumns\">\n <div class=\"empty\">\n <p class=\"empty-title\">{{ t('NoRecordsFoundTitle') }}</p>\n <p class=\"empty-subtitle text-secondary\">{{ t('NoRecordsFoundSubtitle') }}</p>\n </div>\n </td>\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n <upd-paginator wrapperClasses=\"card-footer\" [shouldDisplayPreviousText]=\"false\" [shouldDisplayNextText]=\"false\"\n [(pageSize)]=\"pageSize\" [shouldDisplayFirstText]=\"false\" [shouldDisplayLastText]=\"false\"\n [(currentPage)]=\"currentPage\"\n [totalRecords]=\"totalRecords()\" (changed)=\"onPageSettingsChanged()\">\n </upd-paginator>\n </div>\n\n <ng-template #actionsTpl>\n <div class=\"ms-auto d-flex gap-2\">\n @if (!!activeSavedView()) {\n @if (activeSavedView()!.isDefault) {\n <div class=\"ribbon ribbon-top ribbon-start\">\n <upd-icon tablerIcon=\"heart\" [tablerIconSize]=\"20\"></upd-icon>\n </div>\n }\n <div class=\"tag align-self-center py-3 text-primary bg-primary-lt border-primary\" updPopover=\"{{ t('CurrentSavedView') }}\"\n [updPopoverActAsTooltip]=\"true\">\n <upd-icon tablerIcon=\"list-details\" [tablerIconSize]=\"20\"></upd-icon>\n <span class=\"me-1\">{{ activeSavedView()!.name }}</span>\n </div>\n }\n @if (hiddenColumns() > 0) {\n <div class=\"tag align-self-center py-3 text-orange bg-orange-lt border-orange\" updPopover=\"{{ t('HiddenColumnsTooltip') }}\"\n [updPopoverActAsTooltip]=\"true\">\n <upd-icon tablerIcon=\"eye-off\" [tablerIconSize]=\"20\"></upd-icon>\n <span class=\"me-1\">{{ hiddenColumns() }}</span>\n </div>\n }\n @if (!!activeSavedView() || hiddenColumns() > 0) {\n <upd-button (clicked)=\"resetViewState()\" colorStyle=\"danger\" updPopover=\"{{ t('ResetView') }}\"\n [updPopoverActAsTooltip]=\"true\" [isIcon]=\"true\" [isOutline]=\"true\">\n <upd-icon tablerIcon=\"restore\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n }\n @if (configModel().canSaveViews) {\n <upd-button customClasses=\"gap-2\" [isDisabled]=\"!hasSearchChanged()\" (clicked)=\"openSaveSearchModal()\"\n updPopover=\"{{ t('SaveCurrentView') }}\" [updPopoverActAsTooltip]=\"true\" [isIcon]=\"true\">\n <upd-icon tablerIcon=\"device-floppy\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n }\n @if (configModel().canManageColumns) {\n <upd-button customClasses=\"gap-2\" (clicked)=\"openColumnsManagerModal()\">\n <upd-icon tablerIcon=\"columns\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('ColumnsManagerButton') }}\n </upd-button>\n }\n @if (configModel().canSaveViews || configModel().canLoadSavedViews) {\n <upd-button customClasses=\"gap-2\" (clicked)=\"isSavedViewsDropdownOpen = true\" #savedViewsBtn>\n <upd-icon tablerIcon=\"folders\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('SavedViews.ButtonTitle') }}\n </upd-button>\n <upd-dropdown wrapperClasses=\"overflow-x-hidden mt-1\" [isOpen]=\"isSavedViewsDropdownOpen\"\n [dropdownReference]=\"savedViewsRef()\" [items]=\"savedViewsOptions()\" [shouldCloseOnOutsideClick]=\"true\"\n (isOpenChange)=\"isSavedViewsDropdownOpen = $event\" [minWidth]=\"350\" (selectedItem)=\"selectSavedView($event)\">\n @if (savedViewsOptions().length < 1) {\n <span class=\"m-2\">{{ t('NoSavedViews') }}</span>\n }\n </upd-dropdown>\n }\n </div>\n </ng-template>\n</ng-container>\n","import { Injectable } from '@angular/core';\nimport { BaseStore, DataTypeEnum } from '@updevs/sdk/stores';\nimport { Observable } from 'rxjs';\n\nimport { UpdTableConfigService } from '../upd-table-config.service';\nimport { FilterOperandConfig } from '../../models/filter-operand.config';\n\n@Injectable()\nexport class FiltersOperandsStore extends BaseStore {\n constructor(configService: UpdTableConfigService) {\n super({ baseUrl: configService.config.urlToLoadOperandsFromServer || '' });\n }\n\n load(fieldType: DataTypeEnum): Observable<FilterOperandConfig[]> {\n return this._requestService.makeGet<FilterOperandConfig[]>(this.getRequestModel(fieldType.toString()));\n }\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\n\nconst translationKey = 'UpDevs.Table.Filters.General';\n\nexport class FilterOperandsListConfig {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterOperandEnum.Equals]: {\n operand: FilterOperandEnum.Equals,\n text: { text: `${translationKey}.Equals`, isTranslated: false },\n icon: { tablerIcon: 'equal' },\n requiresValue: true\n },\n [FilterOperandEnum.NotEquals]: {\n operand: FilterOperandEnum.NotEquals,\n text: { text: `${translationKey}.NotEquals`, isTranslated: false },\n icon: { tablerIcon: 'equal-not' },\n requiresValue: true\n },\n [FilterOperandEnum.IsEmpty]: {\n operand: FilterOperandEnum.IsEmpty,\n text: { text: `${translationKey}.IsEmpty`, isTranslated: false },\n icon: { tablerIcon: 'droplet' },\n requiresValue: false\n },\n [FilterOperandEnum.IsNotEmpty]: {\n operand: FilterOperandEnum.IsNotEmpty,\n text: { text: `${translationKey}.IsNotEmpty`, isTranslated: false },\n icon: { tablerIcon: 'droplet', tablerIconType: 'solid' },\n requiresValue: false\n }\n };\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\nimport { FilterOperandsListConfig } from './filter-operands-list.config';\n\nconst translationKey = 'UpDevs.Table.Filters.String';\n\nexport class StringFilterOperandsListModel {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterOperandEnum.Equals]: FilterOperandsListConfig.options[FilterOperandEnum.Equals],\n [FilterOperandEnum.NotEquals]: FilterOperandsListConfig.options[FilterOperandEnum.NotEquals],\n [FilterOperandEnum.StartsWith]: {\n operand: FilterOperandEnum.StartsWith,\n text: { text: `${translationKey}.StartsWith`, isTranslated: false },\n icon: { tablerIcon: 'brackets-contain-start' },\n requiresValue: true\n },\n [FilterOperandEnum.EndsWith]: {\n operand: FilterOperandEnum.EndsWith,\n text: { text: `${translationKey}.EndsWith`, isTranslated: false },\n icon: { tablerIcon: 'brackets-contain-end' },\n requiresValue: true\n },\n [FilterOperandEnum.Contains]: {\n operand: FilterOperandEnum.Contains,\n text: { text: `${translationKey}.Contains`, isTranslated: false },\n icon: { tablerIcon: 'brackets-contain' },\n requiresValue: true\n },\n [FilterOperandEnum.NotContains]: {\n operand: FilterOperandEnum.NotContains,\n text: { text: `${translationKey}.NotContains`, isTranslated: false },\n icon: { tablerIcon: 'brackets-off' },\n requiresValue: true\n },\n [FilterOperandEnum.IsEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsEmpty],\n [FilterOperandEnum.IsNotEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsNotEmpty],\n [FilterOperandEnum.In]: {\n operand: FilterOperandEnum.In,\n text: { text: `${translationKey}.In`, isTranslated: false },\n icon: { tablerIcon: 'spacing-horizontal' },\n requiresValue: true\n }\n };\n static get optionsAsList(): FilterOperandConfig[] {\n return (Object.values(this.options) || []) as FilterOperandConfig[];\n }\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterDateOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\n\nconst translationKey = 'UpDevs.Table.Filters.DateOrNumber';\n\nexport class DateOrNumberOperandsListConfig {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterDateOperandEnum.GreaterThan]: {\n operand: FilterDateOperandEnum.GreaterThan,\n text: { text: `${translationKey}.GreaterThan`, isTranslated: false },\n icon: { tablerIcon: 'math-greater' },\n requiresValue: true\n },\n [FilterDateOperandEnum.LessThan]: {\n operand: FilterDateOperandEnum.LessThan,\n text: { text: `${translationKey}.LessThan`, isTranslated: false },\n icon: { tablerIcon: 'math-lower' },\n requiresValue: true\n },\n [FilterDateOperandEnum.GreaterThanOrEqualTo]: {\n operand: FilterDateOperandEnum.GreaterThanOrEqualTo,\n text: { text: `${translationKey}.GreaterThanOrEqualTo`, isTranslated: false },\n icon: { tablerIcon: 'math-equal-greater' },\n requiresValue: true\n },\n [FilterDateOperandEnum.LessThanOrEqualTo]: {\n operand: FilterDateOperandEnum.LessThanOrEqualTo,\n text: { text: `${translationKey}.LessThanOrEqualTo`, isTranslated: false },\n icon: { tablerIcon: 'math-equal-lower' },\n requiresValue: true\n }\n };\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterNumberOperandEnum, FilterOperandEnum, FilterDateOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\nimport { FilterOperandsListConfig } from './filter-operands-list.config';\nimport { DateOrNumberOperandsListConfig } from './date-or-number-operands-list.config';\n\nexport class NumberFilterOperandsListModel {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterNumberOperandEnum.Equals]: FilterOperandsListConfig.options[FilterOperandEnum.Equals],\n [FilterNumberOperandEnum.NotEquals]: FilterOperandsListConfig.options[FilterOperandEnum.NotEquals],\n [FilterNumberOperandEnum.GreaterThan]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.GreaterThan],\n [FilterNumberOperandEnum.LessThan]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.LessThan],\n [FilterNumberOperandEnum.GreaterThanOrEqualTo]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.GreaterThanOrEqualTo],\n [FilterNumberOperandEnum.LessThanOrEqualTo]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.LessThanOrEqualTo],\n [FilterNumberOperandEnum.IsEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsEmpty],\n [FilterNumberOperandEnum.IsNotEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsNotEmpty],\n [FilterNumberOperandEnum.In]: {\n operand: FilterNumberOperandEnum.In,\n text: { text: 'UpDevs.Table.Filters.Number.In', isTranslated: false },\n icon: { tablerIcon: 'spacing-horizontal' },\n requiresValue: true\n }\n };\n static get optionsAsList(): FilterOperandConfig[] {\n return (Object.values(this.options) || []) as FilterOperandConfig[];\n }\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterOperandEnum, FilterBooleanOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\nimport { FilterOperandsListConfig } from './filter-operands-list.config';\n\nconst translationKey = 'UpDevs.Table.Filters.Boolean';\n\nexport class BooleanFilterOperandsListModel {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterBooleanOperandEnum.True]: {\n operand: FilterBooleanOperandEnum.True,\n text: { text: `${translationKey}.True`, isTranslated: false },\n icon: { tablerIcon: 'toggle-right' },\n requiresValue: false\n },\n [FilterBooleanOperandEnum.False]: {\n operand: FilterBooleanOperandEnum.False,\n text: { text: `${translationKey}.False`, isTranslated: false },\n icon: { tablerIcon: 'toggle-left' },\n requiresValue: false\n },\n [FilterBooleanOperandEnum.IsEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsEmpty],\n [FilterBooleanOperandEnum.IsNotEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsNotEmpty]\n };\n static get optionsAsList(): FilterOperandConfig[] {\n return (Object.values(this.options) || []) as FilterOperandConfig[];\n }\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterOperandEnum, FilterDateOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\nimport { FilterOperandsListConfig } from './filter-operands-list.config';\nimport { DateOrNumberOperandsListConfig } from './date-or-number-operands-list.config';\n\nexport class DateFilterOperandsListModel {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterDateOperandEnum.Equals]: FilterOperandsListConfig.options[FilterOperandEnum.Equals],\n [FilterDateOperandEnum.NotEquals]: FilterOperandsListConfig.options[FilterOperandEnum.NotEquals],\n [FilterDateOperandEnum.GreaterThan]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.GreaterThan],\n [FilterDateOperandEnum.LessThan]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.LessThan],\n [FilterDateOperandEnum.GreaterThanOrEqualTo]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.GreaterThanOrEqualTo],\n [FilterDateOperandEnum.LessThanOrEqualTo]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.LessThanOrEqualTo],\n [FilterDateOperandEnum.IsEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsEmpty],\n [FilterDateOperandEnum.IsNotEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsNotEmpty],\n [FilterDateOperandEnum.Between]: {\n operand: FilterDateOperandEnum.Between,\n text: { text: 'UpDevs.Table.Filters.Date.Between', isTranslated: false },\n icon: { tablerIcon: 'spacing-horizontal' },\n requiresValue: true\n }\n };\n static get optionsAsList(): FilterOperandConfig[] {\n return (Object.values(this.options) || []) as FilterOperandConfig[];\n }\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterGuidOperandEnum, FilterOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\nimport { FilterOperandsListConfig } from './filter-operands-list.config';\nimport { StringFilterOperandsListModel } from './string-filter-operands-list.model';\n\nexport class GuidFilterOperandsListModel {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterGuidOperandEnum.Equals]: FilterOperandsListConfig.options[FilterOperandEnum.Equals],\n [FilterGuidOperandEnum.NotEquals]: FilterOperandsListConfig.options[FilterOperandEnum.NotEquals],\n [FilterGuidOperandEnum.IsEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsEmpty],\n [FilterGuidOperandEnum.IsNotEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsNotEmpty],\n [FilterGuidOperandEnum.In]: StringFilterOperandsListModel.options[FilterOperandEnum.In]\n };\n static get optionsAsList(): FilterOperandConfig[] {\n return (Object.values(this.options) || []) as FilterOperandConfig[];\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { DataTypeEnum } from '@updevs/sdk/stores';\nimport { NonNullableDictionaryType } from '@updevs/sdk/types';\nimport { forkJoin } from 'rxjs';\n\nimport { FiltersOperandsService } from '../abstractions/filters-operands.service';\nimport { UpdTableConfigService } from './upd-table-config.service';\nimport { FilterOperandConfig } from '../models/filter-operand.config';\nimport { FiltersOperandsStore } from './stores/filters-operands.store';\nimport { StringFilterOperandsListModel } from '../models/operands-lists/string-filter-operands-list.model';\nimport { NumberFilterOperandsListModel } from '../models/operands-lists/number-filter-operands-list.model';\nimport { BooleanFilterOperandsListModel } from '../models/operands-lists/boolean-filter-operands-list.model';\nimport { DateFilterOperandsListModel } from '../models/operands-lists/date-filter-operands-list.model';\nimport { GuidFilterOperandsListModel } from '../models/operands-lists/guid-filter-operands-list.model';\n\n@Injectable()\nexport class DefaultFiltersOperandsService extends FiltersOperandsService {\n get isLoaded(): boolean {\n return this._isLoaded;\n }\n\n private _isLoaded = false;\n private readonly configService = inject(UpdTableConfigService);\n private readonly filterOperandsStore = inject(FiltersOperandsStore);\n private readonly cachedData: NonNullableDictionaryType<FilterOperandConfig[]> = {};\n\n constructor() {\n super();\n\n if (!!this.configService.config.urlToLoadOperandsFromServer) {\n forkJoin({\n guidOps: this.filterOperandsStore.load(DataTypeEnum.Guid),\n stringOps: this.filterOperandsStore.load(DataTypeEnum.String),\n numberOps: this.filterOperandsStore.load(DataTypeEnum.Number),\n dateOps: this.filterOperandsStore.load(DataTypeEnum.Date),\n booleanOps: this.filterOperandsStore.load(DataTypeEnum.Boolean)\n }).subscribe(resp => {\n this.cachedData[DataTypeEnum.Guid] = resp.guidOps;\n this.cachedData[DataTypeEnum.String] = resp.stringOps;\n this.cachedData[DataTypeEnum.Number] = resp.numberOps;\n this.cachedData[DataTypeEnum.Date] = resp.dateOps;\n this.cachedData[DataTypeEnum.Boolean] = resp.booleanOps;\n this._isLoaded = true;\n });\n } else {\n this.cachedData[DataTypeEnum.Guid] = GuidFilterOperandsListModel.optionsAsList;\n this.cachedData[DataTypeEnum.String] = StringFilterOperandsListModel.optionsAsList;\n this.cachedData[DataTypeEnum.Number] = NumberFilterOperandsListModel.optionsAsList;\n this.cachedData[DataTypeEnum.Date] = DateFilterOperandsListModel.optionsAsList;\n this.cachedData[DataTypeEnum.Boolean] = BooleanFilterOperandsListModel.optionsAsList;\n this._isLoaded = true;\n }\n }\n\n override getOperands(type: DataTypeEnum): FilterOperandConfig[] {\n return this._isLoaded ? this.cachedData[type] : [];\n }\n\n override getAllOperands(): NonNullableDictionaryType<FilterOperandConfig[]> {\n return this.cachedData;\n }\n}\n","import { NgModule, ModuleWithProviders, Provider } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdButtonModule } from '@updevs/components/button';\nimport { UpdModalModule } from '@updevs/components/modal';\nimport { UpdPaginatorModule } from '@updevs/components/paginator';\nimport { UpdInputModule } from '@updevs/components/form-controls/input';\nimport { UpdCheckboxModule } from '@updevs/components/form-controls/checkbox';\nimport { UpdSelectModule } from '@updevs/components/form-controls/select';\nimport { UpdTimePickerModule } from '@updevs/components/form-controls/time-picker';\nimport { UpdDragAndDropModule } from '@updevs/components/drag-and-drop';\nimport { UpdFormModule } from '@updevs/components/form';\nimport { UpdBadgeModule } from '@updevs/components/badge';\nimport { UpdPopoverModule } from '@updevs/components/popover';\nimport { UpdDropdownModule } from '@updevs/components/dropdown';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\n\nimport * as en from './assets/i18n/en.json';\nimport * as pt from './assets/i18n/pt.json';\nimport { TableComponent } from './table.component';\nimport { DefaultFiltersOperandsService } from './services/default-filters-operands.service';\nimport { UpdTableConfig } from './models/upd-table.config';\nimport { TableConstants } from './tools/table.constants';\nimport { FiltersOperandsService } from './abstractions/filters-operands.service';\nimport { UpdTableConfigService } from './services/upd-table-config.service';\nimport { FiltersOperandsStore } from './services/stores/filters-operands.store';\nimport { SearchSectionComponent } from './components/search-section/search-section.component';\nimport { FilterRowComponent } from './components/filter-row/filter-row.component';\nimport { TableColumnDirective } from './directives/table-column.directive';\nimport { NumberColumnComponent } from './components/columns/number-column/number-column.component';\nimport { DateTimeColumnComponent } from './components/columns/date-time-column/date-time-column.component';\nimport { BooleanColumnComponent } from './components/columns/boolean-column/boolean-column.component';\nimport { TextColumnComponent } from './components/columns/text-column/text-column.component';\nimport { ColumnsManagerComponent } from './components/columns-manager/columns-manager.component';\nimport { SaveSearchComponent } from './components/save-search/save-search.component';\nimport { SavedViewsStorage } from './services/storages/saved-views.storage';\n\n@NgModule({\n imports: [\n CommonModule,\n TranslocoDirective,\n UpdIconsModule,\n UpdButtonModule,\n UpdModalModule,\n UpdPaginatorModule,\n UpdInputModule,\n UpdCheckboxModule,\n UpdSelectModule,\n UpdDragAndDropModule,\n UpdFormModule,\n UpdDropdownModule,\n UpdTimePickerModule,\n UpdBadgeModule,\n UpdPopoverModule\n ],\n declarations: [\n TableComponent,\n SearchSectionComponent,\n FilterRowComponent,\n TableColumnDirective,\n NumberColumnComponent,\n DateTimeColumnComponent,\n BooleanColumnComponent,\n TextColumnComponent,\n ColumnsManagerComponent,\n SaveSearchComponent\n ],\n exports: [\n TableComponent,\n TableColumnDirective\n ],\n providers: [\n UpdTableConfigService,\n FiltersOperandsStore,\n SavedViewsStorage\n ]\n})\nexport class UpdTableModule {\n constructor(translocoService: TranslocoService) {\n translocoService.setFallbackLangForMissingTranslation({ fallbackLang: 'en' });\n translocoService.setTranslation(en, 'en');\n translocoService.setTranslation(pt, 'pt');\n }\n\n /**\n * Sets up the table module with the provided configuration.\n * @param config Configuration.\n */\n static forRoot(config: UpdTableConfig): ModuleWithProviders<UpdTableModule> {\n const customizableProviders: Provider[] = [\n config.filtersOperandsService || {\n provide: FiltersOperandsService,\n useClass: DefaultFiltersOperandsService\n }\n ];\n\n return {\n ngModule: UpdTableModule,\n providers: [\n { provide: TableConstants.defaultOptionsInjectionToken, useValue: config },\n ...customizableProviders\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i3","i6.FilterRowComponent","i5","i9.SearchSectionComponent","i10.TableColumnDirective","i1.UpdTableConfigService","translationKey","en","pt"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"updevs-components-table.mjs","sources":["../../../../libs/components/table/src/models/enums/column-type.enum.ts","../../../../libs/components/table/src/abstractions/base-column.model.ts","../../../../libs/components/table/src/abstractions/filters-operands.service.ts","../../../../libs/components/table/src/abstractions/base.column.ts","../../../../libs/components/table/src/components/columns/text-column/text-column.component.ts","../../../../libs/components/table/src/components/columns/text-column/text-column.component.html","../../../../libs/components/table/src/components/columns/number-column/number-column.component.ts","../../../../libs/components/table/src/components/columns/number-column/number-column.component.html","../../../../libs/components/table/src/components/columns/boolean-column/boolean-column.component.ts","../../../../libs/components/table/src/components/columns/boolean-column/boolean-column.component.html","../../../../libs/components/table/src/components/columns/date-time-column/date-time-column.component.ts","../../../../libs/components/table/src/components/columns/date-time-column/date-time-column.component.html","../../../../libs/components/table/src/directives/table-column.directive.ts","../../../../libs/components/table/src/models/columns/boolean-column.model.ts","../../../../libs/components/table/src/models/columns/date-time-column.model.ts","../../../../libs/components/table/src/models/columns/text-column.model.ts","../../../../libs/components/table/src/models/columns/guid-column.model.ts","../../../../libs/components/table/src/models/columns/image-column.model.ts","../../../../libs/components/table/src/models/columns/number-column.model.ts","../../../../libs/components/table/src/models/table-config.model.ts","../../../../libs/components/table/src/components/columns-manager/columns-manager.component.ts","../../../../libs/components/table/src/components/columns-manager/columns-manager.component.html","../../../../libs/components/table/src/services/storages/saved-views.storage.ts","../../../../libs/components/table/src/components/save-search/save-search.component.ts","../../../../libs/components/table/src/components/save-search/save-search.component.html","../../../../libs/components/table/src/tools/filters.tools.ts","../../../../libs/components/table/src/tools/table.constants.ts","../../../../libs/components/table/src/models/upd-table-config.model.ts","../../../../libs/components/table/src/services/upd-table-config.service.ts","../../../../libs/components/table/src/components/filter-row/filter-row.component.ts","../../../../libs/components/table/src/components/filter-row/filter-row.component.html","../../../../libs/components/table/src/components/search-section/search-section.component.ts","../../../../libs/components/table/src/components/search-section/search-section.component.html","../../../../libs/components/table/src/table.component.ts","../../../../libs/components/table/src/table.component.html","../../../../libs/components/table/src/services/stores/filters-operands.store.ts","../../../../libs/components/table/src/models/operands-lists/filter-operands-list.config.ts","../../../../libs/components/table/src/models/operands-lists/string-filter-operands-list.model.ts","../../../../libs/components/table/src/models/operands-lists/date-or-number-operands-list.config.ts","../../../../libs/components/table/src/models/operands-lists/number-filter-operands-list.model.ts","../../../../libs/components/table/src/models/operands-lists/boolean-filter-operands-list.model.ts","../../../../libs/components/table/src/models/operands-lists/date-filter-operands-list.model.ts","../../../../libs/components/table/src/models/operands-lists/guid-filter-operands-list.model.ts","../../../../libs/components/table/src/services/default-filters-operands.service.ts","../../../../libs/components/table/src/upd-table.module.ts","../../../../libs/components/table/src/updevs-components-table.ts"],"sourcesContent":["export enum ColumnTypeEnum {\n Text = 1,\n DateTime = 2,\n Number = 3,\n Boolean = 4,\n Date = 5,\n Time = 6,\n Image = 7,\n Currency = 8,\n Custom = 9,\n Masked = 10,\n Guid = 11\n}\n","import { TextModel } from '@updevs/sdk';\nimport { DataTypeEnum } from '@updevs/sdk/stores';\nimport { WidthModel } from '@updevs/sdk/layout';\nimport { OptionalType, TextAlignmentType, TextDecorationType, OverflowStrategyType, FontWeightType } from '@updevs/sdk/types';\n\nimport { ColumnTypeEnum } from '../models/enums/column-type.enum';\n\nexport class BaseColumnModel {\n name!: string;\n title?: TextModel;\n titleAlignment: TextAlignmentType = 'left';\n allowSort = true;\n isItalic = false;\n type = ColumnTypeEnum.Text;\n /**\n * Width.\n */\n width?: WidthModel;\n alignment: TextAlignmentType = 'left';\n decoration?: TextDecorationType;\n weight: FontWeightType = 'normal';\n overflowStrategy: OverflowStrategyType = 'truncate';\n shouldSpaceAfterPrefix = true;\n shouldSpaceBeforeSuffix = true;\n isHidden = false;\n prefix?: TextModel;\n suffix?: TextModel;\n\n get dataType(): DataTypeEnum {\n switch (this.type) {\n case ColumnTypeEnum.Boolean:\n return DataTypeEnum.Boolean;\n case ColumnTypeEnum.DateTime:\n case ColumnTypeEnum.Date:\n case ColumnTypeEnum.Time:\n return DataTypeEnum.Date;\n case ColumnTypeEnum.Currency:\n case ColumnTypeEnum.Number:\n return DataTypeEnum.Number;\n case ColumnTypeEnum.Guid:\n return DataTypeEnum.Guid;\n default:\n return DataTypeEnum.String;\n }\n }\n\n get widthClass(): string {\n if (!this.width || !!this.width.pixels) {\n return '';\n }\n\n const prefix = !!this.width.gridColumn ? 'col' : 'w';\n const auto = !!this.width.gridColumn && this.width.gridColumn === 0 ? 'auto' : '';\n\n return `${prefix}-${auto || this.widthSize}`;\n }\n\n get widthSize(): number {\n return !this.width ? 0 : this.width.gridColumn || this.width.percentage || 0;\n }\n\n get pixelsSize(): OptionalType<number> {\n return this.width?.pixels;\n }\n\n constructor(columnType: ColumnTypeEnum, init?: Partial<BaseColumnModel>) {\n if (!!init) {\n Object.assign(this, init);\n }\n\n this.type = columnType;\n }\n}\n","import { DataTypeEnum } from '@updevs/sdk/stores';\nimport { NonNullableDictionaryType } from '@updevs/sdk/types';\n\nimport { FilterOperandConfig } from '../models/filter-operand.config';\n\nexport abstract class FiltersOperandsService {\n abstract get isLoaded(): boolean;\n abstract getOperands(type: DataTypeEnum): FilterOperandConfig[];\n abstract getAllOperands(): NonNullableDictionaryType<FilterOperandConfig[]>;\n}\n","import { inject, Directive } from '@angular/core';\nimport { TextService } from '@updevs/sdk';\n\nimport { BaseColumnModel } from './base-column.model';\nimport { ColumnTypeEnum } from '../models/enums/column-type.enum';\n\n@Directive()\nexport abstract class BaseColumn<TConfig extends BaseColumnModel> {\n record!: any;\n config!: TConfig;\n get value(): any {\n return (this.record as any)[this.config.name];\n }\n get isTextType(): boolean {\n return this.config.type !== ColumnTypeEnum.Boolean\n && this.config.type !== ColumnTypeEnum.Image\n && this.config.type !== ColumnTypeEnum.Custom;\n }\n get prefix(): string {\n return this.textService.getText(this.config.prefix);\n }\n get suffix(): string {\n return this.textService.getText(this.config.suffix);\n }\n get prefixSpace(): string {\n return !!this.prefix && this.config.shouldSpaceAfterPrefix ? ' ' : '';\n }\n get suffixSpace(): string {\n return !!this.suffix && this.config.shouldSpaceBeforeSuffix ? ' ' : '';\n }\n readonly textService = inject(TextService);\n\n private get alignmentClass(): string {\n const prefix = this.isTextType ? 'text' : 'justify-content';\n\n switch (this.config.alignment) {\n case 'justify':\n return `${prefix}-${(this.isTextType ? 'justify' : 'between')}`;\n case 'center':\n return `${prefix}-center`;\n case 'right':\n return `${prefix}-end`;\n default:\n return `${prefix}-start`;\n }\n }\n private get overflowClass(): string {\n switch (this.config.overflowStrategy) {\n case 'no-wrap':\n return 'text-nowrap';\n case 'wrap':\n return 'text-wrap';\n case 'word-break':\n return 'text-break';\n default:\n return 'text-truncate';\n }\n }\n private get decorationClass(): string {\n switch (this.config.decoration) {\n case 'underline':\n return 'text-decoration-underline';\n case 'strikethrough':\n return 'text-decoration-line-through';\n case 'none':\n return 'text-decoration-none';\n default:\n return '';\n }\n }\n private get weightClass(): string {\n switch (this.config.weight) {\n case 'bold':\n return 'fw-bold';\n case 'bolder':\n return 'fw-bolder';\n case 'light':\n return 'fw-light';\n case 'lighter':\n return 'fw-lighter';\n default:\n return 'fw-normal';\n }\n }\n\n getRecordAs<T>(): T {\n return this.record as T;\n }\n\n getClasses(): string[] {\n return [\n this.alignmentClass,\n this.overflowClass,\n this.decorationClass,\n this.weightClass,\n this.config.isItalic ? 'fst-italic' : ''\n ];\n }\n}\n","import { Component } from '@angular/core';\n\nimport { BaseColumn } from '../../../abstractions/base.column';\nimport { TextColumnModel } from '../../../models/columns/text-column.model';\n\n@Component({\n selector: 'upd-text-column',\n templateUrl: './text-column.component.html',\n styleUrl: './text-column.component.scss'\n})\nexport class TextColumnComponent extends BaseColumn<TextColumnModel> {\n override getClasses(): string[] {\n return [\n ...super.getClasses(),\n this.transformClass\n ];\n }\n\n private get transformClass(): string {\n switch (this.config.transform) {\n case 'capitalize':\n return 'text-capitalize';\n case 'lowercase':\n return 'text-lowercase';\n case 'uppercase':\n return 'text-uppercase';\n default:\n return '';\n }\n }\n}\n","<span [ngClass]=\"getClasses()\">{{ prefix }}{{ prefixSpace }}{{ value }}{{ suffixSpace }}{{ suffix }}</span>\n","import { Component } from '@angular/core';\n\nimport { BaseColumn } from '../../../abstractions/base.column';\nimport { NumberColumnModel } from '../../../models/columns/number-column.model';\n\n@Component({\n selector: 'upd-number-column',\n templateUrl: './number-column.component.html',\n styleUrl: './number-column.component.scss'\n})\nexport class NumberColumnComponent extends BaseColumn<NumberColumnModel> {}\n","<span [ngClass]=\"getClasses()\">{{ prefix }}{{ prefixSpace }}{{ value | number:config.numberFormat }}{{ suffixSpace }}{{ suffix }}</span>\n","import { Component } from '@angular/core';\n\nimport { BaseColumn } from '../../../abstractions/base.column';\nimport { BooleanColumnModel } from '../../../models/columns/boolean-column.model';\n\n@Component({\n selector: 'upd-boolean-column',\n templateUrl: './boolean-column.component.html',\n styleUrl: './boolean-column.component.scss'\n})\nexport class BooleanColumnComponent extends BaseColumn<BooleanColumnModel> {\n override getClasses(): string[] {\n return [\n ...super.getClasses(),\n this.colorClass\n ];\n }\n\n private get colorClass(): string {\n if (!this.config.shouldColorHighlight) {\n return '';\n }\n\n return `text-${(!!this.value ? this.config.trueColor : this.config.falseColor)}`;\n }\n}\n","<div [ngClass]=\"getClasses()\">\n @switch (config.displayType) {\n @case ('text') {\n {{ prefix }}{{ prefixSpace }}{{ !!value ? textService.getText(config.trueText) : textService.getText(config.falseText) }}{{ suffixSpace }}{{ suffix }}\n }\n @case ('toggle') {\n {{ prefix }}{{ prefixSpace }}\n <upd-icon [tablerIcon]=\"!!value ? 'toggle-right' : 'toggle-left'\"></upd-icon>{{ suffixSpace }}{{ suffix }}\n }\n @case ('icon') {\n {{ prefix }}{{ prefixSpace }}\n <upd-icon [model]=\"!!value ? config.trueIcon : config.falseIcon\"></upd-icon>{{ suffixSpace }}{{ suffix }}\n }\n }\n</div>\n","import { Component } from '@angular/core';\n\nimport { BaseColumn } from '../../../abstractions/base.column';\nimport { DateTimeColumnModel } from '../../../models/columns/date-time-column.model';\n\n@Component({\n selector: 'upd-date-time-column',\n templateUrl: './date-time-column.component.html',\n styleUrl: './date-time-column.component.scss'\n})\nexport class DateTimeColumnComponent extends BaseColumn<DateTimeColumnModel> {}\n","<span [ngClass]=\"getClasses()\">{{ prefix }}{{ prefixSpace }}{{ value | date:config.dateTimeFormat }}{{ suffixSpace }}{{ suffix }}</span>\n","import { Directive, input, inject, ViewContainerRef, effect } from '@angular/core';\nimport { DynamicComponentLoaderService } from '@updevs/sdk/layout';\nimport { ComponentType } from '@updevs/sdk/types';\n\nimport { BaseColumnModel } from '../abstractions/base-column.model';\nimport { BaseColumn } from '../abstractions/base.column';\nimport { ColumnTypeEnum } from '../models/enums/column-type.enum';\nimport { TextColumnComponent } from '../components/columns/text-column/text-column.component';\nimport { NumberColumnComponent } from '../components/columns/number-column/number-column.component';\nimport { BooleanColumnComponent } from '../components/columns/boolean-column/boolean-column.component';\nimport { DateTimeColumnComponent } from '../components/columns/date-time-column/date-time-column.component';\n\n@Directive({\n selector: '[updTableColumn]'\n})\nexport class TableColumnDirective<TConfig extends BaseColumnModel> {\n record = input.required();\n config = input.required<TConfig>();\n\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly dynamicLoaderService = inject(DynamicComponentLoaderService);\n\n constructor() {\n effect(() => {\n const component = this.dynamicLoaderService.load(this.getComponentType(), this.viewContainerRef);\n component.instance.record = this.record();\n component.instance.config = this.config();\n });\n }\n\n getComponentType(): ComponentType<BaseColumn<TConfig>> {\n switch (this.config().type) {\n case ColumnTypeEnum.Text:\n // @ts-ignore\n return TextColumnComponent;\n case ColumnTypeEnum.Number:\n // @ts-ignore\n return NumberColumnComponent;\n case ColumnTypeEnum.Boolean:\n // @ts-ignore\n return BooleanColumnComponent;\n case ColumnTypeEnum.Date:\n // @ts-ignore\n return DateTimeColumnComponent;\n case ColumnTypeEnum.Guid:\n // @ts-ignore\n return TextColumnComponent;\n default:\n throw Error();\n }\n }\n}\n","import { IconModel } from '@updevs/icons';\nimport { TextModel } from '@updevs/sdk';\nimport { ColorStyleType } from '@updevs/sdk/types';\n\nimport { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { ColumnTypeEnum } from '../enums/column-type.enum';\n\nexport class BooleanColumnModel extends BaseColumnModel {\n displayType: 'text' | 'toggle' | 'icon' = 'text';\n trueText: TextModel = { text: 'UpDevs.Table.Filters.Boolean.True', isTranslated: false };\n falseText: TextModel = { text: 'UpDevs.Table.Filters.Boolean.False', isTranslated: false };\n trueIcon: IconModel = { tablerIcon: 'square-check' };\n falseIcon: IconModel = { tablerIcon: 'square' };\n trueColor: ColorStyleType = 'success';\n falseColor: ColorStyleType = 'secondary';\n shouldColorHighlight = true;\n\n constructor(init?: Partial<BooleanColumnModel>) {\n super(ColumnTypeEnum.Boolean, init);\n\n if (this.displayType !== 'text') {\n this.alignment = 'center';\n }\n\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { DateTimeFormatEnum } from '@updevs/sdk/core';\n\nimport { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { ColumnTypeEnum } from '../enums/column-type.enum';\n\nexport class DateTimeColumnModel extends BaseColumnModel {\n format = DateTimeFormatEnum.ShortDate;\n customFormat?: string;\n get dateTimeFormat(): string {\n return this.customFormat || this.format;\n }\n\n constructor(init?: Partial<DateTimeColumnModel>) {\n super(ColumnTypeEnum.DateTime, init);\n\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { TextTransformType } from '@updevs/sdk/types';\n\nimport { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { ColumnTypeEnum } from '../enums/column-type.enum';\n\nexport class TextColumnModel extends BaseColumnModel {\n transform?: TextTransformType;\n\n constructor(init?: Partial<TextColumnModel>) {\n super(ColumnTypeEnum.Text, init);\n\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { ColumnTypeEnum } from '../enums/column-type.enum';\nimport { TextColumnModel } from './text-column.model';\n\nexport class GuidColumnModel extends TextColumnModel {\n constructor(init?: Partial<GuidColumnModel>) {\n super(init);\n\n this.transform = 'uppercase';\n\n if (!!init) {\n Object.assign(this, init);\n }\n\n this.type = ColumnTypeEnum.Guid;\n }\n}\n","import { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { ColumnTypeEnum } from '../enums/column-type.enum';\n\nexport class ImageColumnModel extends BaseColumnModel {\n imageWidth?: number;\n imageHeight?: number;\n\n constructor(init?: Partial<ImageColumnModel>) {\n super(ColumnTypeEnum.Image, init);\n\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { ColumnTypeEnum } from '../enums/column-type.enum';\n\nexport class NumberColumnModel extends BaseColumnModel {\n minIntegerDigits = 1;\n minFractionDigits = 0;\n maxFractionDigits = 3;\n get numberFormat(): string {\n return `${this.minIntegerDigits}.${this.minFractionDigits}-${this.maxFractionDigits}`;\n }\n\n constructor(init?: Partial<NumberColumnModel>) {\n super(ColumnTypeEnum.Number, init);\n\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { TextModel } from '@updevs/sdk';\nimport { ButtonModel } from '@updevs/sdk/layout';\nimport { BaseSearchStore } from '@updevs/sdk/stores';\nimport { GetByIdType } from '@updevs/sdk/types';\n\nimport { TableConfig } from './table.config';\nimport { BaseColumnModel } from '../abstractions/base-column.model';\n\nexport class TableConfigModel<T> implements TableConfig<T> {\n name!: string;\n store?: BaseSearchStore<T>;\n columns: BaseColumnModel[] = [];\n title?: TextModel;\n canSearch = true;\n canSaveViews = true;\n canLoadSavedViews = true;\n canManageColumns = true;\n shouldAutoSearch = true;\n hasCheckboxColumn = true;\n isResponsive = true;\n hasStickyHeader = false;\n data: T[] = [];\n preSelectedItems: T[] = [];\n searchInputDebounceTime = 300;\n customActions: ButtonModel[] = [];\n\n constructor(init?: TableConfig<T>) {\n if (!!init) {\n Object.assign(this, init);\n }\n }\n\n getIdFunction: GetByIdType<T> = (item: T) => (item as any).id;\n}\n","import { Component, computed, signal } from '@angular/core';\nimport { DragAndDropColumnConfig, DragAndDropColumnModel } from '@updevs/components/drag-and-drop';\nimport { BaseModal } from '@updevs/components/modal';\n\nimport { TableConfig } from '../../models/table.config';\n\n@Component({\n selector: 'upd-columns-manager',\n templateUrl: './columns-manager.component.html',\n styleUrl: './columns-manager.component.scss'\n})\nexport class ColumnsManagerComponent<T> extends BaseModal<TableConfig<T>> {\n config = computed(() => ({ columns: [this.visibleColumn(), this.hiddenColumn()], canReorder: true }));\n columns = signal<DragAndDropColumnModel[]>([]);\n\n private readonly visibleColumn = computed<DragAndDropColumnConfig>(() =>\n ({\n name: 'visible',\n title: { text: 'UpDevs.Table.VisibleColumns', isTranslated: false },\n canBeEmpty: false,\n items: this.data().columns.filter(c => !c.isHidden).map(c => ({\n name: c.name,\n text: c.title || { text: 'UpDevs.Table.ColumnTitleNotSet', isTranslated: false }\n }))\n })\n );\n private readonly hiddenColumn = computed<DragAndDropColumnConfig>(() =>\n ({\n name: 'hidden',\n title: { text: 'UpDevs.Table.HiddenColumns', isTranslated: false },\n items: this.data().columns.filter(c => c.isHidden).map(c => ({\n name: c.name,\n text: c.title || { text: 'UpDevs.Table.ColumnTitleNotSet', isTranslated: false }\n }))\n })\n );\n}\n","<ng-container *transloco=\"let t; prefix: 'UpDevs.Table.ColumnsManager'\">\n <upd-drag-and-drop [config]=\"config()\" [(columns)]=\"columns\"></upd-drag-and-drop>\n</ng-container>\n","import { Injectable, Signal, computed } from '@angular/core';\nimport { Tools } from '@updevs/sdk/core';\nimport { OptionalType } from '@updevs/sdk/types';\nimport { BaseByUserSignalStorage } from '@updevs/sdk/security';\n\nimport { SavedViewModel } from '../../models/saved-view.model';\n\n@Injectable()\nexport class SavedViewsStorage extends BaseByUserSignalStorage {\n private readonly lastStateKey = 'last-state';\n\n constructor() {\n super('saved-views');\n }\n\n saveView(data: SavedViewModel): void {\n data.id = data.id || Tools.Guid.generate();\n data.userId = this._loggedUserId;\n\n this.save(data, this._getUserKey(data.id, data.tableName));\n }\n\n saveLastState(data: SavedViewModel): void {\n data.id = this.lastStateKey;\n this.saveView(data);\n }\n\n getById(tableName: string, id: string): Signal<OptionalType<SavedViewModel>> {\n return this.get(this._getUserKey(id, tableName));\n }\n\n getAll(tableName: string): Signal<SavedViewModel[]> {\n return computed(() => {\n const records = this.getAllItems<SavedViewModel>();\n return records().filter(sv =>\n sv.tableName.toLowerCase() === tableName.toLowerCase()\n && sv.userId === this._loggedUserId\n && sv.id !== this.lastStateKey\n );\n });\n }\n\n getLastState(tableName: string): Signal<OptionalType<SavedViewModel>> {\n return this.getById(tableName, this.lastStateKey);\n }\n\n resetAllIsDefault(tableName: string): void {\n const savedViews = this.getAll(tableName)();\n savedViews.forEach(sv => {\n sv.isDefault = false;\n this.saveView(sv);\n });\n }\n\n removeViews(tableName: string, ...keys: string[]): void {\n super.remove(...keys.map(k => this._getUserKey(k, tableName)));\n }\n\n getByName(tableName: string, name: string): OptionalType<SavedViewModel> {\n const records = this.getAllItems<SavedViewModel>();\n return records().find(sv =>\n sv.tableName.toLowerCase() === tableName.toLowerCase()\n && sv.userId === this._loggedUserId\n && sv.name?.toLowerCase() === name?.toLowerCase()\n && sv.id !== this.lastStateKey\n );\n }\n}\n","import { Component, model, inject, OnInit } from '@angular/core';\nimport { Validators, FormGroup, ValidatorFn, AbstractControl, ValidationErrors } from '@angular/forms';\nimport { FormRowModel, DynamicFieldType } from '@updevs/components/form';\nimport { BaseModal } from '@updevs/components/modal';\n\nimport { SavedViewModel } from '../../models/saved-view.model';\nimport { SavedViewsStorage } from '../../services/storages/saved-views.storage';\n\n@Component({\n selector: 'upd-save-search',\n templateUrl: './save-search.component.html',\n styleUrl: './save-search.component.scss'\n})\nexport class SaveSearchComponent extends BaseModal<SavedViewModel> implements OnInit {\n formGroup = model(new FormGroup({}));\n formRows: FormRowModel[] = [];\n\n private readonly savedViewsStorage = inject(SavedViewsStorage);\n\n ngOnInit(): void {\n this.formRows = [\n {\n fields: [\n {\n name: 'name',\n type: DynamicFieldType.Input,\n colSize: { default: 12 },\n label: { text: 'UpDevs.Table.SaveSearch.Name', isTranslated: false },\n validators: [Validators.required, Validators.minLength(3), this.uniqueNameValidator()],\n initValue: this.data().name\n }\n ]\n },\n {\n fields: [\n {\n name: 'isDefault',\n type: DynamicFieldType.Checkbox,\n colSize: { default: 6 },\n label: { text: 'UpDevs.Table.SaveSearch.IsDefault', isTranslated: false },\n hint: { text: 'UpDevs.Table.SaveSearch.IsDefaultHint', isTranslated: false },\n hintAsTooltip: true,\n initValue: this.data().isDefault || false\n }\n ]\n }\n ];\n }\n\n cancel(): void {\n this.modalRef().close();\n }\n\n save(): void {\n const formValue = this.formGroup().value as any;\n const data = { ...this.data(), name: formValue.name, isDefault: formValue.isDefault };\n\n if (data.isDefault) {\n this.savedViewsStorage.resetAllIsDefault(this.data().tableName);\n }\n\n this.savedViewsStorage.saveView(data);\n this.modalRef().close();\n }\n\n private uniqueNameValidator = (): ValidatorFn => (control: AbstractControl): ValidationErrors | null => {\n const existingRecord = this.savedViewsStorage.getByName(this.data().tableName, control.value);\n return !!existingRecord\n ? { nameNotUnique: { errorText: { text: 'UpDevs.Table.SavedViews.NameNotUnique', isTranslated: false } } }\n // eslint-disable-next-line no-null/no-null\n : null;\n };\n}\n","<ng-container *transloco=\"let t; prefix: 'UpDevs.Table.SaveSearch'\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">{{ t('Title') }}</h5>\n </div>\n <div class=\"modal-body py-4\">\n <upd-form [rows]=\"formRows\" [hasActionsSection]=\"false\" [(formGroup)]=\"formGroup\"></upd-form>\n </div>\n <div class=\"modal-footer\">\n <upd-button colorStyle=\"secondary\" [isLink]=\"true\" (clicked)=\"cancel()\">\n {{ t('Cancel') }}\n </upd-button>\n <upd-button colorStyle=\"primary\" [iconModel]=\"{tablerIcon:'device-floppy'}\" (clicked)=\"save()\" [isDisabled]=\"!formGroup().valid\">\n {{ t('Save') }}\n </upd-button>\n </div>\n</ng-container>\n","import {\n BaseFilter,\n DataTypeEnum,\n BooleanColumnFilter,\n FilterBooleanOperandEnum,\n DateColumnFilter,\n FilterDateOperandEnum,\n NumberColumnFilter,\n FilterNumberOperandEnum,\n GuidColumnFilter,\n FilterOperandEnum,\n StringColumnFilter\n} from '@updevs/sdk/stores';\nimport { NonNullableDictionaryType } from '@updevs/sdk/types';\n\nimport { FilterItemModel } from '../models/filter-item.model';\nimport { BaseColumnModel } from '../abstractions/base-column.model';\nimport { FilterOperandConfig } from '../models/filter-operand.config';\n\nexport class FilterTools {\n static convertToFilterItem(filters: BaseFilter[], operands: NonNullableDictionaryType<FilterOperandConfig[]>): FilterItemModel[] {\n return filters.map(f => ({\n name: f.column,\n value: f.value,\n operandConfig: operands[f.dataType].find(op => op.operand === f.operand)\n }));\n }\n\n static convertToRequestFilter(filters: FilterItemModel[], columns: BaseColumnModel[]): BaseFilter[] {\n return filters.map(af => {\n const col = columns.find(c => c.name === af.name);\n\n switch (col?.dataType) {\n case DataTypeEnum.Boolean:\n return new BooleanColumnFilter({\n column: af.name,\n value: af.value,\n operand: !!af.operandConfig ? <FilterBooleanOperandEnum> af.operandConfig.operand : undefined\n });\n case DataTypeEnum.Date:\n return new DateColumnFilter({\n column: af.name,\n value: af.value,\n operand: !!af.operandConfig ? <FilterDateOperandEnum> af.operandConfig.operand : undefined\n });\n case DataTypeEnum.Number:\n return new NumberColumnFilter({\n column: af.name,\n value: af.value,\n operand: !!af.operandConfig ? <FilterNumberOperandEnum> af.operandConfig.operand : undefined\n });\n case DataTypeEnum.Guid:\n return new GuidColumnFilter({\n column: af.name,\n value: af.value,\n operand: !!af.operandConfig ? <FilterOperandEnum> af.operandConfig.operand : undefined\n });\n default:\n return new StringColumnFilter({\n column: af.name,\n value: af.value,\n operand: !!af.operandConfig ? <FilterOperandEnum> af.operandConfig.operand : undefined\n });\n }\n });\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { UpdTableConfig } from '../models/upd-table.config';\n\n/**\n * Table constants.\n */\nexport class TableConstants {\n /**\n * Key to inject the default configuration.\n */\n static defaultOptionsKey = 'upd-table-default-options';\n\n /**\n * Injection token for the default configuration.\n */\n static defaultOptionsInjectionToken = new InjectionToken<UpdTableConfig>(TableConstants.defaultOptionsKey);\n}\n","import { UpdTableConfig } from './upd-table.config';\n\nexport class UpdTableConfigModel implements UpdTableConfig {\n shouldLoadFieldsFromServer = false;\n urlToLoadOperandsFromServer?: string;\n\n constructor(init?: UpdTableConfig) {\n if (!!init) {\n Object.assign(this, init);\n }\n }\n}\n","import { Injectable, Inject } from '@angular/core';\n\nimport { TableConstants } from '../tools/table.constants';\nimport { UpdTableConfig } from '../models/upd-table.config';\nimport { UpdTableConfigModel } from '../models/upd-table-config.model';\n\n@Injectable()\nexport class UpdTableConfigService {\n /**\n * Configuration (See: #upsee[p:models, i:UpdTableConfigModel]).\n */\n readonly config: UpdTableConfigModel;\n\n constructor(@Inject(TableConstants.defaultOptionsInjectionToken) layoutConfig: UpdTableConfig) {\n this.config = new UpdTableConfigModel(layoutConfig);\n }\n}\n","import { Component, signal, inject, OnInit, input, model, HostBinding, Output, EventEmitter } from '@angular/core';\nimport { TextService } from '@updevs/sdk';\nimport { BaseSearchStore, DataTypeEnum } from '@updevs/sdk/stores';\nimport { OptionalType } from '@updevs/sdk/types';\nimport { SelectItem } from '@updevs/components/form-controls/select';\nimport { BaseComponent } from '@updevs/sdk/layout';\n\nimport { UpdTableConfigService } from '../../services/upd-table-config.service';\nimport { FiltersOperandsService } from '../../abstractions/filters-operands.service';\nimport { FilterItemModel } from '../../models/filter-item.model';\nimport { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { FilterOperandConfig } from '../../models/filter-operand.config';\n\n@Component({\n selector: 'upd-filter-row',\n templateUrl: './filter-row.component.html',\n styleUrl: './filter-row.component.scss'\n})\nexport class FilterRowComponent extends BaseComponent implements OnInit {\n @HostBinding('class') wrapperClasses = 'd-flex gap-2';\n\n @Output() readonly removed: EventEmitter<void> = new EventEmitter();\n\n DataTypeEnum = DataTypeEnum;\n\n activeFilters = model.required<FilterItemModel[]>();\n rowIndex = input.required<number>();\n columns = input.required<BaseColumnModel[]>();\n isDisabled = input.required<boolean>();\n store = input<BaseSearchStore>();\n currentFilter = input<FilterItemModel>();\n currentField = signal<OptionalType<SelectItem>>(undefined);\n currentOperand = signal<OptionalType<FilterOperandConfig>>(undefined);\n fieldsOptions = signal<SelectItem[]>([]);\n comparisonOperatorOptions = signal<SelectItem[]>([]);\n isValueSectionEnabled = signal<boolean>(true);\n\n get fieldType(): DataTypeEnum {\n return this.currentField()?.objectData || DataTypeEnum.String;\n }\n get selectedField(): OptionalType<SelectItem> {\n const currentFilter = this.currentFilter();\n return !!currentFilter?.name\n ? this.fieldsOptions().find(f => f.value === currentFilter.name)\n : undefined;\n }\n get selectedOperand(): OptionalType<SelectItem> {\n const currentFilter = this.currentFilter();\n return !!currentFilter?.name\n ? this.comparisonOperatorOptions().find(co => co.value === currentFilter.operandConfig?.operand)\n : undefined;\n }\n get selectedValue(): OptionalType<any> {\n const currentFilter = this.currentFilter();\n return !!currentFilter?.name ? currentFilter.value : undefined;\n }\n\n private currentOperands: FilterOperandConfig[] = [];\n private readonly configService = inject(UpdTableConfigService);\n private readonly filtersOperandsService = inject(FiltersOperandsService);\n private readonly textService = inject(TextService);\n\n ngOnInit(): void {\n if (!!this.store() && this.configService.config.shouldLoadFieldsFromServer) {\n this.store()!.getFilterableFields().subscribe(fields =>\n this.fieldsOptions.set(fields.map(f => ({ value: f.name!, text: f.description!, objectData: f.type })))\n );\n } else {\n this.fieldsOptions.set(\n this.columns().filter(c => !!c.title).map(c =>\n ({ value: c.name, text: this.textService.getText(c.title), objectData: c.dataType }))\n );\n }\n\n if (!!this.selectedField) {\n if (!!this.selectedOperand) {\n this.onSelectOperand(this.selectedOperand);\n }\n\n this.onSelectField(this.selectedField);\n }\n }\n\n onSelectField(item?: SelectItem): void {\n this.currentField.set(item);\n\n const dataType = item?.objectData;\n\n if (!!dataType) {\n this.currentOperands = this.filtersOperandsService.getOperands(dataType);\n this.comparisonOperatorOptions.set(\n this.currentOperands.map(o => ({ value: o.operand, text: this.textService.getText(o.text), listItem: { icon: o.icon } }))\n );\n } else {\n this.comparisonOperatorOptions.set([]);\n }\n\n this.activeFilters.update(curr => {\n curr[this.rowIndex()].name = this.currentField()?.value;\n return [...curr];\n });\n }\n\n onSelectOperand(item?: SelectItem): void {\n this.currentOperand.set(this.currentOperands.find(co => co.operand === item?.value));\n this.isValueSectionEnabled.set(!!this.currentOperand()?.requiresValue);\n this.activeFilters.update(curr => {\n curr[this.rowIndex()].operandConfig = this.currentOperand();\n return [...curr];\n });\n }\n\n updateValue(value?: any): void {\n this.activeFilters.update(curr => {\n curr[this.rowIndex()].value = value;\n return [...curr];\n });\n }\n\n removeFilterItem(): void {\n this.activeFilters.update(curr => {\n curr.splice(this.rowIndex(), 1);\n return [...curr];\n });\n this.removed.emit();\n }\n}\n","<upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"fieldsOptions()\" (selectedItem)=\"onSelectField($event)\"\n [selected]=\"selectedField\">\n</upd-select>\n<upd-select class=\"w-100\" [isDisabled]=\"isDisabled()\" [items]=\"comparisonOperatorOptions()\" (selectedItem)=\"onSelectOperand($event)\"\n [selected]=\"selectedOperand\">\n</upd-select>\n\n@if (isValueSectionEnabled()) {\n @switch (fieldType) {\n @case (DataTypeEnum.Number) {\n <upd-input wrapperClasses=\"w-100\" customClasses=\"h-100\" type=\"number\" (valueChange)=\"updateValue($event)\"\n [value]=\"selectedValue\"></upd-input>\n }\n @case (DataTypeEnum.Date) {\n\n }\n @default {\n <upd-input wrapperClasses=\"w-100\" customClasses=\"h-100\" type=\"text\" (valueChange)=\"updateValue($event)\"\n [value]=\"selectedValue\"></upd-input>\n }\n }\n} @else {\n <div class=\"w-100\">\n <input type=\"text\" class=\"form-control h-100\" disabled>\n </div>\n}\n\n<upd-button class=\"flex-shrink-1\" colorStyle=\"danger\" [isDisabled]=\"isDisabled()\" [isOutline]=\"true\" [isIcon]=\"true\"\n [iconModel]=\"{tablerIcon:'x'}\" (clicked)=\"removeFilterItem()\"></upd-button>\n","import { Component, input, TemplateRef, HostBinding, signal, computed, model, OnInit, effect, inject } from '@angular/core';\nimport { SearchRequestModel } from '@updevs/sdk/stores';\nimport { BaseComponent } from '@updevs/sdk/layout';\nimport { OptionalType, BgColorStyleType } from '@updevs/sdk/types';\nimport { BadgeConfig } from '@updevs/components/badge';\nimport { Subject, distinctUntilChanged, debounceTime } from 'rxjs';\n\nimport { FilterItemModel } from '../../models/filter-item.model';\nimport { TableConfigModel } from '../../models/table-config.model';\nimport { FilterTools } from '../../tools/filters.tools';\nimport { BaseColumnModel } from '../../abstractions/base-column.model';\nimport { FiltersOperandsService } from '../../abstractions/filters-operands.service';\n\n@Component({\n selector: 'upd-search-section',\n templateUrl: './search-section.component.html',\n styleUrl: './search-section.component.scss'\n})\nexport class SearchSectionComponent<T> extends BaseComponent implements OnInit {\n @HostBinding('class') wrapperClass = 'card-body border-bottom py-3 d-flex flex-column gap-2';\n\n searchRequest = model.required<SearchRequestModel>();\n hasChanges = model.required<boolean>();\n columns = input.required<BaseColumnModel[]>();\n isSearching = input.required<boolean>();\n searchRequestSubject = input.required<Subject<SearchRequestModel>>();\n config = input.required<TableConfigModel<T>>();\n actionsTpl = input<TemplateRef<any>>();\n activeFilters = signal<FilterItemModel[]>([]);\n isFilterSectionOpen = signal(false);\n canApplyFilters = computed(() => this.activeFilters().length > 0\n && this.activeFilters().every(af => !!af.name && !!af.operandConfig?.operand && (!af.operandConfig?.requiresValue || !!af.value))\n );\n canPerformActions = computed(() => this.canApplyFilters() && !this.isSearching());\n badgeConfig = computed<OptionalType<BadgeConfig>>(() =>\n (this.searchRequest().filters?.length || 0) > 0\n ? ({\n isNotification: true,\n isPill: true,\n bgColor: 'primary-lt',\n text: { text: this.searchRequest().filters!.length.toString(), isTranslated: true }\n })\n : undefined\n );\n filterSectionBtnColor = computed(() => this.isFilterSectionOpen() ? <BgColorStyleType>'primary' : undefined);\n\n readonly searchSubject = new Subject<string>();\n\n private readonly filtersOperandsService = inject(FiltersOperandsService);\n\n constructor() {\n super();\n\n effect(() => {\n if ((this.searchRequest().filters?.length || 0) > 0) {\n this.activeFilters.set(\n [...FilterTools.convertToFilterItem(this.searchRequest().filters || [], this.filtersOperandsService.getAllOperands())]\n );\n } else {\n this.activeFilters.set([]);\n this.isFilterSectionOpen.set(false);\n }\n }, { allowSignalWrites: true });\n }\n\n ngOnInit(): void {\n const searchSub = this.searchSubject\n .pipe(\n distinctUntilChanged(),\n debounceTime(this.config().searchInputDebounceTime)\n )\n .subscribe(term =>\n this.searchRequestSubject().next({\n ...this.searchRequest(),\n description: term\n })\n );\n\n this.addSubscriptions(searchSub);\n }\n\n search(): void {\n this.searchRequestSubject().next({\n ...this.searchRequest(),\n filters: FilterTools.convertToRequestFilter(this.activeFilters(), this.config().columns)\n });\n }\n\n toggleFilterSection(): void {\n if (this.activeFilters().length === 0) {\n this.addEmptyFilterRow();\n }\n\n this.isFilterSectionOpen.update(isOpen => !isOpen);\n }\n\n onRowRemoved(): void {\n if (this.activeFilters().length === 0) {\n this.isFilterSectionOpen.set(false);\n }\n\n this.search();\n }\n\n addEmptyFilterRow(): void {\n this.activeFilters.update(curr => {\n curr.push({});\n return [...curr];\n });\n }\n}\n","<ng-container *transloco=\"let t; prefix: 'UpDevs.Table'\">\n @if (!!actionsTpl()) {\n <ng-template [ngTemplateOutlet]=\"actionsTpl()!\"></ng-template>\n }\n\n <div class=\"d-flex align-items-center gap-2\">\n <upd-input wrapperClasses=\"w-100\" [placeholder]=\"{text:'UpDevs.Table.Search', isTranslated:false}\" [isAppendButton]=\"true\"\n (valueChange)=\"searchSubject.next($event)\" [value]=\"searchRequest().description\">\n <ng-template updInputAppend>\n <upd-button [isIcon]=\"true\" [colorStyle]=\"filterSectionBtnColor()\" (clicked)=\"toggleFilterSection()\"\n [badgeConfig]=\"badgeConfig()\">\n <upd-icon [tablerIcon]=\"isFilterSectionOpen() ? 'filter-up' : 'filter-down'\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n </ng-template>\n </upd-input>\n </div>\n\n @if (isFilterSectionOpen()) {\n @for (row of activeFilters(); track row; let i = $index) {\n <upd-filter-row [store]=\"config().store\" [currentFilter]=\"row\" [(activeFilters)]=\"activeFilters\" [columns]=\"columns()\"\n [rowIndex]=\"i\" (removed)=\"onRowRemoved()\" [isDisabled]=\"isSearching()\">\n </upd-filter-row>\n }\n\n <div class=\"ms-auto d-flex gap-2\">\n <upd-button customClasses=\"gap-2\" colorStyle=\"primary\" [isOutline]=\"true\" (clicked)=\"addEmptyFilterRow()\"\n [isDisabled]=\"!canPerformActions()\">\n <upd-icon tablerIcon=\"plus\" tablerIconWeight=\"bold\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('AddNewFilter') }}\n </upd-button>\n <upd-button customClasses=\"gap-2\" colorStyle=\"success\" [isDisabled]=\"!canPerformActions()\" (clicked)=\"search()\">\n <upd-icon tablerIcon=\"checks\" tablerIconWeight=\"bold\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('ApplyFilters') }}\n </upd-button>\n </div>\n }\n</ng-container>\n","import { Component, inject, signal, computed, effect, OnInit, Signal, model, ElementRef, viewChild } from '@angular/core';\nimport { TablerIconsType } from '@updevs/icons';\nimport { TextService } from '@updevs/sdk';\nimport { SelectionModel, Tools, ServerResponseService } from '@updevs/sdk/core';\nimport { OptionalType, ButtonSizeType } from '@updevs/sdk/types';\nimport { BaseComponent, ButtonModel } from '@updevs/sdk/layout';\nimport { SearchRequestModel, BaseSearchStore, ColumnSort, SortDirectionEnum, SearchResponseModel } from '@updevs/sdk/stores';\nimport { ModalService, ModalRef, ModalAlertService } from '@updevs/components/modal';\nimport { DropdownItem, DropdownActionClickedModel } from '@updevs/components/dropdown';\nimport { distinctUntilChanged, tap, switchMap, finalize, Subject, catchError, of } from 'rxjs';\n\nimport { TableConfig } from './models/table.config';\nimport { TableConfigModel } from './models/table-config.model';\nimport { BaseColumnModel } from './abstractions/base-column.model';\nimport { FilterItemModel } from './models/filter-item.model';\nimport { ColumnsManagerComponent } from './components/columns-manager/columns-manager.component';\nimport { SaveSearchComponent } from './components/save-search/save-search.component';\nimport { SavedViewModel } from './models/saved-view.model';\nimport { SavedViewsStorage } from './services/storages/saved-views.storage';\n\nimport Utils = Tools.Utils;\n\n@Component({\n selector: 'upd-table',\n templateUrl: './table.component.html',\n styleUrl: './table.component.scss'\n})\nexport class TableComponent<T> extends BaseComponent implements OnInit {\n savedViewsRef = viewChild('savedViewsBtn', { read: ElementRef });\n config = model.required<TableConfig<T>>();\n isSearching = signal<boolean>(false);\n selectedItems = computed<T[]>(() => this.selectionModel().selected());\n activeSavedView = signal<OptionalType<SavedViewModel>>(undefined);\n isMainCheckboxChecked = false;\n isMainCheckboxIndeterminate = false;\n isSavedViewsDropdownOpen = false;\n\n get numberOfColumns(): number {\n return this.columns().length + (this.configModel().hasCheckboxColumn ? 1 : 0) + (!!this.pendingWidthColClass ? 1 : 0);\n }\n get hasWidth(): boolean {\n return this.columns().some(rec => !!rec.width);\n }\n get pendingWidthColClass(): string {\n if (!this.hasWidth || this.isWidthInPixels) {\n return '';\n }\n\n const isGrid = this.columns().some(rec => !!rec.width?.gridColumn);\n const total = isGrid ? 12 : 100;\n const remainingSize = total - this.columns().reduce((acc, item) => acc + item.widthSize, 0);\n\n return remainingSize > 0 ? `${(isGrid ? 'col' : 'w')}-${remainingSize}` : '';\n }\n get isWidthInPixels(): boolean {\n return this.columns().some(rec => !!rec.width?.pixels);\n }\n\n readonly searchRequest = model<SearchRequestModel>({});\n readonly activeFilters = model<FilterItemModel[]>([]);\n readonly currentPage = model<number>(1);\n readonly pageSize = model<number>(0);\n readonly hasSearchChanged = signal(false);\n readonly totalRecords = signal<number>(0);\n readonly configModel = computed(() => new TableConfigModel(this.config()));\n readonly data: Signal<T[]> = computed(() => this.configModel().data.length > 0 ? this.configModel().data : this.currentData());\n readonly selectionModel = computed(() => new SelectionModel<T>(this.configModel().getIdFunction));\n readonly currentSorting = signal<OptionalType<ColumnSort>>(undefined);\n readonly hiddenColumns = computed(() =>\n this.configModel().canManageColumns ? this.configModel().columns.filter(c => c.isHidden).length : 0\n );\n readonly columns = signal<BaseColumnModel[]>([]);\n readonly searchRequestSubject = new Subject<SearchRequestModel>();\n readonly textService = inject(TextService);\n readonly savedViewsOptions = computed<DropdownItem[]>(() => {\n const allSavedViewsOptions: DropdownItem[] = [];\n this.allSavedViews().forEach(sv => allSavedViewsOptions.push(this.getSavedViewOption(sv)));\n\n return allSavedViewsOptions;\n });\n\n private get isRemote(): boolean {\n return !!this.configModel().store;\n }\n private get store(): BaseSearchStore<T> {\n return this.configModel().store!;\n }\n private shouldForceSearch = false;\n private columnsBackup: BaseColumnModel[] = [];\n\n private readonly currentData = signal<T[]>([]);\n private readonly currentFavoriteButtons = computed<ButtonModel[]>(() => this.favoriteButtons);\n private readonly smallSizeSignal = signal<ButtonSizeType>('small');\n private readonly allSavedViews = computed(() => this.savedViewsStorage.getAll(this.configModel().name)());\n private readonly favoriteButtons: ButtonModel[] = [];\n private readonly serverResponseService = inject(ServerResponseService);\n private readonly savedViewsStorage = inject(SavedViewsStorage);\n private readonly modalService = inject(ModalService);\n private readonly modalAlertService = inject(ModalAlertService);\n\n constructor() {\n super();\n\n effect(() => {\n if (this.data().length > 0 && this.configModel().data.length > 0) {\n this.setupPreSelected();\n }\n\n if (this.selectedItems().length > 0) {\n if (this.selectedItems().length !== this.data().length) {\n this.isMainCheckboxChecked = false;\n this.isMainCheckboxIndeterminate = true;\n } else {\n this.isMainCheckboxIndeterminate = false;\n this.isMainCheckboxChecked = true;\n }\n } else {\n this.isMainCheckboxChecked = false;\n this.isMainCheckboxIndeterminate = false;\n }\n });\n }\n\n ngOnInit(): void {\n this.columnsBackup = [...this.config().columns];\n const searchSubjectSub = this.searchRequestSubject\n .pipe(\n distinctUntilChanged((prev, curr) => !this.shouldForceSearch || Utils.areEqual(prev, curr)),\n tap((request) => {\n this.isSearching.set(true);\n this.currentData.set([]);\n this.searchRequest.set(request);\n\n if (\n (request.filters?.length || 0) > 0\n || (request.description || '').length > 0\n || (request.sortings?.length || 0) > 0\n ) {\n this.hasSearchChanged.set(true);\n }\n }),\n switchMap(() =>\n this.store.search(this.searchRequest()).pipe(\n catchError(() => of()) // Already handled by the ServerResponseService.\n )\n ),\n finalize(() => this.shouldForceSearch = false)\n )\n .subscribe(resp => this.setupSearchResults(resp));\n const serverResponseSub = this.serverResponseService.onError.subscribe(error => {\n if (!!error) {\n this.isSearching.set(false);\n }\n });\n\n if (this.configModel().shouldAutoSearch && this.isRemote) {\n this.shouldForceSearch = true;\n this.searchRequestSubject.next({});\n }\n\n this.updateColumns(this.configModel().columns);\n this.addSubscriptions(searchSubjectSub, serverResponseSub);\n }\n\n toggleAllSelection(isChecked: boolean): void {\n if (isChecked) {\n this.selectionModel().select(...this.currentData());\n } else {\n this.selectionModel().clearSelection();\n }\n }\n\n toggleItemSelection(record: T): void {\n if (this.selectionModel().isSelected(record)) {\n this.selectionModel().deselect(record);\n } else {\n this.selectionModel().select(record);\n }\n }\n\n canSortColumn(columnName: string): boolean {\n return this.getColumnByName(columnName).allowSort;\n }\n\n sortByColumn(columnName: string): void {\n if (!this.currentSorting()) {\n this.currentSorting.set(new ColumnSort({ column: columnName }));\n } else {\n this.currentSorting.set(\n new ColumnSort({\n column: columnName,\n direction: this.currentSorting()!.column === columnName\n ? (this.currentSorting()!.direction === SortDirectionEnum.Asc ? SortDirectionEnum.Desc : SortDirectionEnum.Asc)\n : SortDirectionEnum.Asc\n })\n );\n }\n\n if (this.isRemote) {\n this.searchRequest.set({\n ...this.searchRequest(),\n sortings: [this.currentSorting()!]\n });\n this.searchRequestSubject.next(this.searchRequest());\n } else {\n const col = this.getColumnByName(columnName);\n // TODO: local sort\n }\n }\n\n getSortingIcon(columnName: string): TablerIconsType {\n return !!this.currentSorting() && this.currentSorting()!.column === columnName\n ? (this.currentSorting()!.direction === SortDirectionEnum.Asc ? 'sort-ascending' : 'sort-descending')\n : 'arrows-sort';\n }\n\n onPageSettingsChanged(): void {\n this.searchRequest.set({\n ...this.searchRequest(),\n pageSize: this.pageSize(),\n pageIndex: this.currentPage()\n });\n this.searchRequestSubject.next(this.searchRequest());\n }\n\n getRecordId(record: T): any {\n return this.configModel().getIdFunction(record);\n }\n\n openColumnsManagerModal(): void {\n const ref: ModalRef = this.modalService.open(undefined, {\n bodyContentType: ColumnsManagerComponent,\n showCloseButton: false,\n showCancelButton: true,\n data: this.config(),\n isTextCentered: false,\n actionButtons: [\n new ButtonModel({\n text: signal({ text: 'UpDevs.Table.ColumnsManager.Apply', isTranslated: false }),\n colorStyle: signal('primary'),\n iconModel: signal({ tablerIcon: 'checks' }),\n clickFunction: () => ref.close()\n })\n ]\n });\n ref.afterClose = () => {\n const result = ref.getBodyInstance<ColumnsManagerComponent<T>>()?.columns();\n\n if (!!result) {\n const previousVisibleColumnsOrder = this.columns().map(c => c.name);\n const visibleColumnsNames = result.find(c => c.name === 'visible')?.items().map(i => i.name) || [];\n const newColumns: BaseColumnModel[] = [];\n\n this.config.update(config => {\n visibleColumnsNames.forEach(name => {\n const col = config.columns.find(c => c.name === name)!;\n col.isHidden = false;\n\n newColumns.push(col);\n });\n config.columns.forEach(c => {\n if (!visibleColumnsNames.includes(c.name)) {\n c.isHidden = true;\n newColumns.push(c);\n }\n });\n\n return { ...config, columns: [...newColumns] };\n });\n this.updateColumns(newColumns);\n\n const newVisibleColumnsOrder = newColumns.map(c => c.name);\n\n if (previousVisibleColumnsOrder.length !== newVisibleColumnsOrder.length\n || !previousVisibleColumnsOrder.every((v, i) => v === newVisibleColumnsOrder[i])) {\n this.hasSearchChanged.set(true);\n }\n }\n };\n }\n\n openSaveSearchModal(data?: SavedViewModel): void {\n data = data || {\n tableName: this.configModel().name,\n request: this.searchRequest(),\n columns: this.configModel().columns\n };\n this.modalService.open(SaveSearchComponent, { showCloseButton: false, data });\n }\n\n selectSavedView(item: DropdownItem): void {\n const savedView = this.savedViewsStorage.getById(this.configModel().name, item.id)();\n this.isSavedViewsDropdownOpen = false;\n\n if (!!savedView) {\n this.updateColumns(savedView.columns);\n this.config.update(curr => {\n curr.columns = savedView.columns;\n return { ...curr };\n });\n this.activeSavedView.set(savedView);\n this.searchRequestSubject.next({ ...savedView.request });\n }\n }\n\n resetViewState(): void {\n this.activeSavedView.set(undefined);\n this.updateColumns(this.columnsBackup);\n this.config.update(curr => {\n curr.columns = this.columnsBackup;\n return { ...curr };\n });\n this.searchRequestSubject.next({});\n }\n\n reload(): void {\n this.shouldForceSearch = true;\n this.searchRequestSubject.next({});\n }\n\n private updateColumns(columns: BaseColumnModel[]): void {\n this.columns.set(columns.filter(c => !c.isHidden).map(c => new BaseColumnModel(c.type, { ...c })));\n }\n\n private getColumnByName(columnName: string): BaseColumnModel {\n const col = this.columns().find(c => c.name === columnName);\n\n if (!col) {\n throw Error('Tried accessing non existing column');\n }\n\n return col;\n }\n\n private setupPreSelected(): void {\n this.configModel().preSelectedItems.forEach(item => {\n const id = this.getRecordId(item);\n\n if (this.data().find(d => this.getRecordId(d) === id) && !this.selectionModel().isSelected(item)) {\n this.selectionModel().select(item);\n }\n });\n }\n\n private setupSearchResults(resp: SearchResponseModel<T>): void {\n this.isSearching.set(false);\n this.currentData.set(resp.records);\n this.totalRecords.set(resp.totalRecords || 0);\n this.currentPage.set(resp.pageIndex || 0);\n this.pageSize.set(resp.pageSize || 0);\n this.setupPreSelected();\n }\n\n private getActionButtons(currentFavoriteButtons: Signal<ButtonModel[]>, savedView: SavedViewModel): ButtonModel[] {\n return [\n new ButtonModel({\n isIcon: signal(true),\n isGhost: signal(true),\n colorStyle: signal('primary'),\n size: this.smallSizeSignal,\n title: signal({ text: 'UpDevs.Table.SavedViews.MarkAsDefault', isTranslated: false }),\n isActive: signal(savedView.isDefault || false),\n iconModel: signal({ tablerIcon: 'heart' }),\n clickFunction: (evt) => {\n const btnModel = (evt.data as DropdownActionClickedModel);\n const isButtonActive = btnModel.button.isActive();\n\n if (!isButtonActive) {\n this.savedViewsStorage.resetAllIsDefault(this.configModel().name);\n }\n\n savedView.isDefault = !isButtonActive;\n\n currentFavoriteButtons().forEach(cfb => cfb.isActive.set(false));\n btnModel.button.isActive.set(!isButtonActive);\n this.savedViewsStorage.saveView(savedView);\n }\n }),\n new ButtonModel({\n isIcon: signal(true),\n isGhost: signal(true),\n colorStyle: signal('secondary'),\n size: this.smallSizeSignal,\n title: signal({ text: 'UpDevs.Table.SavedViews.Duplicate', isTranslated: false }),\n iconModel: signal({ tablerIcon: 'copy' }),\n clickFunction: () => {\n const duplicateView = {\n ...savedView,\n id: Tools.Guid.generate(),\n name: savedView.name +\n ` (${this.textService.getText({ text: 'UpDevs.Table.SavedViews.DuplicateSuffix', isTranslated: false })})`\n };\n this.openSaveSearchModal(duplicateView);\n }\n }),\n new ButtonModel({\n isIcon: signal(true),\n isGhost: signal(true),\n colorStyle: signal('secondary'),\n size: this.smallSizeSignal,\n title: signal({ text: 'UpDevs.Table.SavedViews.Edit', isTranslated: false }),\n iconModel: signal({ tablerIcon: 'edit' }),\n clickFunction: () => this.openSaveSearchModal(savedView)\n }),\n new ButtonModel({\n isIcon: signal(true),\n isGhost: signal(true),\n colorStyle: signal('danger'),\n size: this.smallSizeSignal,\n title: signal({ text: 'UpDevs.Table.SavedViews.Remove', isTranslated: false }),\n iconModel: signal({ tablerIcon: 'x' }),\n clickFunction: () => {\n const title = this.textService.getText(\n { text: 'UpDevs.Table.SavedViews.ConfirmRemove', isTranslated: false },\n { view: savedView.name }\n );\n this.modalAlertService.showConfirm({ text: title, isTranslated: true }).subscribe(isConfirmed => {\n if (isConfirmed) {\n this.savedViewsStorage.removeViews(this.configModel().name, savedView.id!);\n }\n });\n }\n })\n ];\n }\n\n private getSavedViewOption(savedView: SavedViewModel): DropdownItem {\n const actionButtons = this.getActionButtons(this.currentFavoriteButtons, savedView);\n this.favoriteButtons.push(actionButtons.find(ab => ab.iconModel?.().tablerIcon === 'heart')!);\n\n return {\n id: savedView.id,\n type: 'with-toolbar',\n text: { text: savedView.name!, isTranslated: true },\n toolbarType: 'spaced',\n isActive: this.activeSavedView()?.id === savedView.id,\n actionButtons\n };\n }\n}\n","<ng-container *transloco=\"let t; prefix: 'UpDevs.Table'\">\n <div class=\"card\">\n @if (!!configModel().title || !configModel().canSearch) {\n <div class=\"card-header\">\n @if (!!configModel().title) {\n <h3 class=\"card-title\">{{ textService.getText(configModel().title) }}</h3>\n }\n <ng-template [ngTemplateOutlet]=\"actionsTpl\"></ng-template>\n </div>\n }\n\n @if (configModel().customActions.length > 0) {\n <div class=\"card-body py-3 d-flex flex-column gap-2\">\n <div class=\"ms-auto d-flex gap-2\">\n @for (btn of configModel().customActions; track btn) {\n <upd-button customClasses=\"gap-2\" [model]=\"btn\"></upd-button>\n }\n </div>\n </div>\n }\n\n @if (configModel().canSearch) {\n <upd-search-section [actionsTpl]=\"!configModel().title ? actionsTpl : undefined\" [isSearching]=\"isSearching()\"\n [(searchRequest)]=\"searchRequest\" [searchRequestSubject]=\"searchRequestSubject\" [config]=\"configModel()\"\n [(hasChanges)]=\"hasSearchChanged\" [columns]=\"columns()\">\n </upd-search-section>\n }\n\n <div [class.table-responsive]=\"configModel().isResponsive\">\n <!-- TODO: implement pixel sized table -->\n <table class=\"table card-table table-vcenter table-nowrap\" [class.fixed]=\"hasWidth\"\n [class.pixel-sized]=\"isWidthInPixels\">\n <thead [class.sticky-top]=\"configModel().hasStickyHeader\">\n <tr>\n @if (configModel().hasCheckboxColumn) {\n <th class=\"checkbox-selector\">\n <upd-checkbox customClasses=\"m-0 ps-0\" (changed)=\"toggleAllSelection($event)\"\n [(isChecked)]=\"isMainCheckboxChecked\"\n [(isIndeterminate)]=\"isMainCheckboxIndeterminate\"></upd-checkbox>\n </th>\n }\n\n @for (col of columns(); track col) {\n <th [ngClass]=\"col.widthClass\" [style.width.px]=\"col.pixelsSize\">\n {{ textService.getText(col.title) }}\n @if (canSortColumn(col.name)) {\n <upd-icon [tablerIcon]=\"getSortingIcon(col.name)\" tablerIconWeight=\"bold\" colorClass=\"text-body-tertiary\"\n [tablerIconSize]=\"16\" (click)=\"sortByColumn(col.name)\">\n </upd-icon>\n }\n </th>\n }\n\n @if (!!pendingWidthColClass) {\n <th [ngClass]=\"pendingWidthColClass\"></th>\n }\n </tr>\n </thead>\n\n <tbody>\n @if (isSearching()) {\n <tr>\n <td [colSpan]=\"numberOfColumns\">\n <div class=\"empty\">\n <h1 class=\"text-body-tertiary\">{{ t('Loading') }}...</h1>\n <div class=\"progress progress-sm w-25\">\n <div class=\"progress-bar progress-bar-indeterminate bg-body-tertiary\"></div>\n </div>\n </div>\n </td>\n </tr>\n } @else {\n @for (record of data(); track record) {\n <tr>\n @if (configModel().hasCheckboxColumn) {\n <td>\n <upd-checkbox customClasses=\"m-0 ps-0\" (changed)=\"toggleItemSelection(record)\"\n [isChecked]=\"selectionModel().isSelected(record)\"></upd-checkbox>\n </td>\n }\n\n @for (col of columns(); track col) {\n <td>\n <ng-container updTableColumn [record]=\"record\" [config]=\"col\"></ng-container>\n </td>\n }\n\n @if (!!pendingWidthColClass) {\n <td></td>\n }\n </tr>\n } @empty {\n <tr>\n <td [colSpan]=\"numberOfColumns\">\n <div class=\"empty\">\n <p class=\"empty-title\">{{ t('NoRecordsFoundTitle') }}</p>\n <p class=\"empty-subtitle text-secondary\">{{ t('NoRecordsFoundSubtitle') }}</p>\n </div>\n </td>\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n <upd-paginator wrapperClasses=\"card-footer\" [shouldDisplayPreviousText]=\"false\" [shouldDisplayNextText]=\"false\"\n [(pageSize)]=\"pageSize\" [shouldDisplayFirstText]=\"false\" [shouldDisplayLastText]=\"false\"\n [(currentPage)]=\"currentPage\"\n [totalRecords]=\"totalRecords()\" (changed)=\"onPageSettingsChanged()\">\n </upd-paginator>\n </div>\n\n <ng-template #actionsTpl>\n <div class=\"ms-auto d-flex gap-2\">\n @if (!!activeSavedView()) {\n @if (activeSavedView()!.isDefault) {\n <div class=\"ribbon ribbon-top ribbon-start\">\n <upd-icon tablerIcon=\"heart\" [tablerIconSize]=\"20\"></upd-icon>\n </div>\n }\n <div class=\"tag align-self-center py-3 text-primary bg-primary-lt border-primary\"\n updPopover=\"{{ t('CurrentSavedView') }}\"\n [updPopoverActAsTooltip]=\"true\">\n <upd-icon tablerIcon=\"list-details\" [tablerIconSize]=\"20\"></upd-icon>\n <span class=\"me-1\">{{ activeSavedView()!.name }}</span>\n </div>\n }\n @if (hiddenColumns() > 0) {\n <div class=\"tag align-self-center py-3 text-orange bg-orange-lt border-orange\"\n updPopover=\"{{ t('HiddenColumnsTooltip') }}\"\n [updPopoverActAsTooltip]=\"true\">\n <upd-icon tablerIcon=\"eye-off\" [tablerIconSize]=\"20\"></upd-icon>\n <span class=\"me-1\">{{ hiddenColumns() }}</span>\n </div>\n }\n @if (!!activeSavedView() || hiddenColumns() > 0) {\n <upd-button (clicked)=\"resetViewState()\" colorStyle=\"danger\" updPopover=\"{{ t('ResetView') }}\"\n [updPopoverActAsTooltip]=\"true\" [isIcon]=\"true\" [isOutline]=\"true\">\n <upd-icon tablerIcon=\"restore\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n }\n @if (configModel().canSaveViews) {\n <upd-button customClasses=\"gap-2\" [isDisabled]=\"!hasSearchChanged()\" (clicked)=\"openSaveSearchModal()\"\n updPopover=\"{{ t('SaveCurrentView') }}\" [updPopoverActAsTooltip]=\"true\" [isIcon]=\"true\">\n <upd-icon tablerIcon=\"device-floppy\" [tablerIconSize]=\"20\"></upd-icon>\n </upd-button>\n }\n @if (configModel().canManageColumns) {\n <upd-button customClasses=\"gap-2\" (clicked)=\"openColumnsManagerModal()\">\n <upd-icon tablerIcon=\"columns\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('ColumnsManagerButton') }}\n </upd-button>\n }\n @if (configModel().canSaveViews || configModel().canLoadSavedViews) {\n <upd-button customClasses=\"gap-2\" (clicked)=\"isSavedViewsDropdownOpen = true\" #savedViewsBtn>\n <upd-icon tablerIcon=\"folders\" [tablerIconSize]=\"20\"></upd-icon>\n {{ t('SavedViews.ButtonTitle') }}\n </upd-button>\n <upd-dropdown wrapperClasses=\"overflow-x-hidden mt-1\" [isOpen]=\"isSavedViewsDropdownOpen\"\n [dropdownReference]=\"savedViewsRef()\" [items]=\"savedViewsOptions()\" [shouldCloseOnOutsideClick]=\"true\"\n (isOpenChange)=\"isSavedViewsDropdownOpen = $event\" [minWidth]=\"350\" (selectedItem)=\"selectSavedView($event)\">\n @if (savedViewsOptions().length < 1) {\n <span class=\"m-2\">{{ t('NoSavedViews') }}</span>\n }\n </upd-dropdown>\n }\n </div>\n </ng-template>\n</ng-container>\n","import { Injectable } from '@angular/core';\nimport { BaseStore, DataTypeEnum } from '@updevs/sdk/stores';\nimport { Observable } from 'rxjs';\n\nimport { UpdTableConfigService } from '../upd-table-config.service';\nimport { FilterOperandConfig } from '../../models/filter-operand.config';\n\n@Injectable()\nexport class FiltersOperandsStore extends BaseStore {\n constructor(configService: UpdTableConfigService) {\n super({ baseUrl: configService.config.urlToLoadOperandsFromServer || '' });\n }\n\n load(fieldType: DataTypeEnum): Observable<FilterOperandConfig[]> {\n return this._requestService.makeGet<FilterOperandConfig[]>(this.getRequestModel(fieldType.toString()));\n }\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\n\nconst translationKey = 'UpDevs.Table.Filters.General';\n\nexport class FilterOperandsListConfig {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterOperandEnum.Equals]: {\n operand: FilterOperandEnum.Equals,\n text: { text: `${translationKey}.Equals`, isTranslated: false },\n icon: { tablerIcon: 'equal' },\n requiresValue: true\n },\n [FilterOperandEnum.NotEquals]: {\n operand: FilterOperandEnum.NotEquals,\n text: { text: `${translationKey}.NotEquals`, isTranslated: false },\n icon: { tablerIcon: 'equal-not' },\n requiresValue: true\n },\n [FilterOperandEnum.IsEmpty]: {\n operand: FilterOperandEnum.IsEmpty,\n text: { text: `${translationKey}.IsEmpty`, isTranslated: false },\n icon: { tablerIcon: 'droplet' },\n requiresValue: false\n },\n [FilterOperandEnum.IsNotEmpty]: {\n operand: FilterOperandEnum.IsNotEmpty,\n text: { text: `${translationKey}.IsNotEmpty`, isTranslated: false },\n icon: { tablerIcon: 'droplet', tablerIconType: 'solid' },\n requiresValue: false\n }\n };\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\nimport { FilterOperandsListConfig } from './filter-operands-list.config';\n\nconst translationKey = 'UpDevs.Table.Filters.String';\n\nexport class StringFilterOperandsListModel {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterOperandEnum.Equals]: FilterOperandsListConfig.options[FilterOperandEnum.Equals],\n [FilterOperandEnum.NotEquals]: FilterOperandsListConfig.options[FilterOperandEnum.NotEquals],\n [FilterOperandEnum.StartsWith]: {\n operand: FilterOperandEnum.StartsWith,\n text: { text: `${translationKey}.StartsWith`, isTranslated: false },\n icon: { tablerIcon: 'brackets-contain-start' },\n requiresValue: true\n },\n [FilterOperandEnum.EndsWith]: {\n operand: FilterOperandEnum.EndsWith,\n text: { text: `${translationKey}.EndsWith`, isTranslated: false },\n icon: { tablerIcon: 'brackets-contain-end' },\n requiresValue: true\n },\n [FilterOperandEnum.Contains]: {\n operand: FilterOperandEnum.Contains,\n text: { text: `${translationKey}.Contains`, isTranslated: false },\n icon: { tablerIcon: 'brackets-contain' },\n requiresValue: true\n },\n [FilterOperandEnum.NotContains]: {\n operand: FilterOperandEnum.NotContains,\n text: { text: `${translationKey}.NotContains`, isTranslated: false },\n icon: { tablerIcon: 'brackets-off' },\n requiresValue: true\n },\n [FilterOperandEnum.IsEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsEmpty],\n [FilterOperandEnum.IsNotEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsNotEmpty],\n [FilterOperandEnum.In]: {\n operand: FilterOperandEnum.In,\n text: { text: `${translationKey}.In`, isTranslated: false },\n icon: { tablerIcon: 'spacing-horizontal' },\n requiresValue: true\n }\n };\n static get optionsAsList(): FilterOperandConfig[] {\n return (Object.values(this.options) || []) as FilterOperandConfig[];\n }\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterDateOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\n\nconst translationKey = 'UpDevs.Table.Filters.DateOrNumber';\n\nexport class DateOrNumberOperandsListConfig {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterDateOperandEnum.GreaterThan]: {\n operand: FilterDateOperandEnum.GreaterThan,\n text: { text: `${translationKey}.GreaterThan`, isTranslated: false },\n icon: { tablerIcon: 'math-greater' },\n requiresValue: true\n },\n [FilterDateOperandEnum.LessThan]: {\n operand: FilterDateOperandEnum.LessThan,\n text: { text: `${translationKey}.LessThan`, isTranslated: false },\n icon: { tablerIcon: 'math-lower' },\n requiresValue: true\n },\n [FilterDateOperandEnum.GreaterThanOrEqualTo]: {\n operand: FilterDateOperandEnum.GreaterThanOrEqualTo,\n text: { text: `${translationKey}.GreaterThanOrEqualTo`, isTranslated: false },\n icon: { tablerIcon: 'math-equal-greater' },\n requiresValue: true\n },\n [FilterDateOperandEnum.LessThanOrEqualTo]: {\n operand: FilterDateOperandEnum.LessThanOrEqualTo,\n text: { text: `${translationKey}.LessThanOrEqualTo`, isTranslated: false },\n icon: { tablerIcon: 'math-equal-lower' },\n requiresValue: true\n }\n };\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterNumberOperandEnum, FilterOperandEnum, FilterDateOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\nimport { FilterOperandsListConfig } from './filter-operands-list.config';\nimport { DateOrNumberOperandsListConfig } from './date-or-number-operands-list.config';\n\nexport class NumberFilterOperandsListModel {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterNumberOperandEnum.Equals]: FilterOperandsListConfig.options[FilterOperandEnum.Equals],\n [FilterNumberOperandEnum.NotEquals]: FilterOperandsListConfig.options[FilterOperandEnum.NotEquals],\n [FilterNumberOperandEnum.GreaterThan]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.GreaterThan],\n [FilterNumberOperandEnum.LessThan]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.LessThan],\n [FilterNumberOperandEnum.GreaterThanOrEqualTo]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.GreaterThanOrEqualTo],\n [FilterNumberOperandEnum.LessThanOrEqualTo]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.LessThanOrEqualTo],\n [FilterNumberOperandEnum.IsEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsEmpty],\n [FilterNumberOperandEnum.IsNotEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsNotEmpty],\n [FilterNumberOperandEnum.In]: {\n operand: FilterNumberOperandEnum.In,\n text: { text: 'UpDevs.Table.Filters.Number.In', isTranslated: false },\n icon: { tablerIcon: 'spacing-horizontal' },\n requiresValue: true\n }\n };\n static get optionsAsList(): FilterOperandConfig[] {\n return (Object.values(this.options) || []) as FilterOperandConfig[];\n }\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterOperandEnum, FilterBooleanOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\nimport { FilterOperandsListConfig } from './filter-operands-list.config';\n\nconst translationKey = 'UpDevs.Table.Filters.Boolean';\n\nexport class BooleanFilterOperandsListModel {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterBooleanOperandEnum.True]: {\n operand: FilterBooleanOperandEnum.True,\n text: { text: `${translationKey}.True`, isTranslated: false },\n icon: { tablerIcon: 'toggle-right' },\n requiresValue: false\n },\n [FilterBooleanOperandEnum.False]: {\n operand: FilterBooleanOperandEnum.False,\n text: { text: `${translationKey}.False`, isTranslated: false },\n icon: { tablerIcon: 'toggle-left' },\n requiresValue: false\n },\n [FilterBooleanOperandEnum.IsEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsEmpty],\n [FilterBooleanOperandEnum.IsNotEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsNotEmpty]\n };\n static get optionsAsList(): FilterOperandConfig[] {\n return (Object.values(this.options) || []) as FilterOperandConfig[];\n }\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterOperandEnum, FilterDateOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\nimport { FilterOperandsListConfig } from './filter-operands-list.config';\nimport { DateOrNumberOperandsListConfig } from './date-or-number-operands-list.config';\n\nexport class DateFilterOperandsListModel {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterDateOperandEnum.Equals]: FilterOperandsListConfig.options[FilterOperandEnum.Equals],\n [FilterDateOperandEnum.NotEquals]: FilterOperandsListConfig.options[FilterOperandEnum.NotEquals],\n [FilterDateOperandEnum.GreaterThan]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.GreaterThan],\n [FilterDateOperandEnum.LessThan]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.LessThan],\n [FilterDateOperandEnum.GreaterThanOrEqualTo]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.GreaterThanOrEqualTo],\n [FilterDateOperandEnum.LessThanOrEqualTo]: DateOrNumberOperandsListConfig.options[FilterDateOperandEnum.LessThanOrEqualTo],\n [FilterDateOperandEnum.IsEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsEmpty],\n [FilterDateOperandEnum.IsNotEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsNotEmpty],\n [FilterDateOperandEnum.Between]: {\n operand: FilterDateOperandEnum.Between,\n text: { text: 'UpDevs.Table.Filters.Date.Between', isTranslated: false },\n icon: { tablerIcon: 'spacing-horizontal' },\n requiresValue: true\n }\n };\n static get optionsAsList(): FilterOperandConfig[] {\n return (Object.values(this.options) || []) as FilterOperandConfig[];\n }\n}\n","import { DictionaryType } from '@updevs/sdk/types';\nimport { FilterGuidOperandEnum, FilterOperandEnum } from '@updevs/sdk/stores';\n\nimport { FilterOperandConfig } from '../filter-operand.config';\nimport { FilterOperandsListConfig } from './filter-operands-list.config';\nimport { StringFilterOperandsListModel } from './string-filter-operands-list.model';\n\nexport class GuidFilterOperandsListModel {\n static options: DictionaryType<FilterOperandConfig> = {\n [FilterGuidOperandEnum.Equals]: FilterOperandsListConfig.options[FilterOperandEnum.Equals],\n [FilterGuidOperandEnum.NotEquals]: FilterOperandsListConfig.options[FilterOperandEnum.NotEquals],\n [FilterGuidOperandEnum.IsEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsEmpty],\n [FilterGuidOperandEnum.IsNotEmpty]: FilterOperandsListConfig.options[FilterOperandEnum.IsNotEmpty],\n [FilterGuidOperandEnum.In]: StringFilterOperandsListModel.options[FilterOperandEnum.In]\n };\n static get optionsAsList(): FilterOperandConfig[] {\n return (Object.values(this.options) || []) as FilterOperandConfig[];\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { DataTypeEnum } from '@updevs/sdk/stores';\nimport { NonNullableDictionaryType } from '@updevs/sdk/types';\nimport { forkJoin } from 'rxjs';\n\nimport { FiltersOperandsService } from '../abstractions/filters-operands.service';\nimport { UpdTableConfigService } from './upd-table-config.service';\nimport { FilterOperandConfig } from '../models/filter-operand.config';\nimport { FiltersOperandsStore } from './stores/filters-operands.store';\nimport { StringFilterOperandsListModel } from '../models/operands-lists/string-filter-operands-list.model';\nimport { NumberFilterOperandsListModel } from '../models/operands-lists/number-filter-operands-list.model';\nimport { BooleanFilterOperandsListModel } from '../models/operands-lists/boolean-filter-operands-list.model';\nimport { DateFilterOperandsListModel } from '../models/operands-lists/date-filter-operands-list.model';\nimport { GuidFilterOperandsListModel } from '../models/operands-lists/guid-filter-operands-list.model';\n\n@Injectable()\nexport class DefaultFiltersOperandsService extends FiltersOperandsService {\n get isLoaded(): boolean {\n return this._isLoaded;\n }\n\n private _isLoaded = false;\n private readonly configService = inject(UpdTableConfigService);\n private readonly filterOperandsStore = inject(FiltersOperandsStore);\n private readonly cachedData: NonNullableDictionaryType<FilterOperandConfig[]> = {};\n\n constructor() {\n super();\n\n if (!!this.configService.config.urlToLoadOperandsFromServer) {\n forkJoin({\n guidOps: this.filterOperandsStore.load(DataTypeEnum.Guid),\n stringOps: this.filterOperandsStore.load(DataTypeEnum.String),\n numberOps: this.filterOperandsStore.load(DataTypeEnum.Number),\n dateOps: this.filterOperandsStore.load(DataTypeEnum.Date),\n booleanOps: this.filterOperandsStore.load(DataTypeEnum.Boolean)\n }).subscribe(resp => {\n this.cachedData[DataTypeEnum.Guid] = resp.guidOps;\n this.cachedData[DataTypeEnum.String] = resp.stringOps;\n this.cachedData[DataTypeEnum.Number] = resp.numberOps;\n this.cachedData[DataTypeEnum.Date] = resp.dateOps;\n this.cachedData[DataTypeEnum.Boolean] = resp.booleanOps;\n this._isLoaded = true;\n });\n } else {\n this.cachedData[DataTypeEnum.Guid] = GuidFilterOperandsListModel.optionsAsList;\n this.cachedData[DataTypeEnum.String] = StringFilterOperandsListModel.optionsAsList;\n this.cachedData[DataTypeEnum.Number] = NumberFilterOperandsListModel.optionsAsList;\n this.cachedData[DataTypeEnum.Date] = DateFilterOperandsListModel.optionsAsList;\n this.cachedData[DataTypeEnum.Boolean] = BooleanFilterOperandsListModel.optionsAsList;\n this._isLoaded = true;\n }\n }\n\n override getOperands(type: DataTypeEnum): FilterOperandConfig[] {\n return this._isLoaded ? this.cachedData[type] : [];\n }\n\n override getAllOperands(): NonNullableDictionaryType<FilterOperandConfig[]> {\n return this.cachedData;\n }\n}\n","import { NgModule, ModuleWithProviders, Provider } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdButtonModule } from '@updevs/components/button';\nimport { UpdModalModule } from '@updevs/components/modal';\nimport { UpdPaginatorModule } from '@updevs/components/paginator';\nimport { UpdInputModule } from '@updevs/components/form-controls/input';\nimport { UpdCheckboxModule } from '@updevs/components/form-controls/checkbox';\nimport { UpdSelectModule } from '@updevs/components/form-controls/select';\nimport { UpdTimePickerModule } from '@updevs/components/form-controls/time-picker';\nimport { UpdDragAndDropModule } from '@updevs/components/drag-and-drop';\nimport { UpdFormModule } from '@updevs/components/form';\nimport { UpdBadgeModule } from '@updevs/components/badge';\nimport { UpdPopoverModule } from '@updevs/components/popover';\nimport { UpdDropdownModule } from '@updevs/components/dropdown';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\n\nimport * as en from './assets/i18n/en.json';\nimport * as pt from './assets/i18n/pt.json';\nimport { TableComponent } from './table.component';\nimport { DefaultFiltersOperandsService } from './services/default-filters-operands.service';\nimport { UpdTableConfig } from './models/upd-table.config';\nimport { TableConstants } from './tools/table.constants';\nimport { FiltersOperandsService } from './abstractions/filters-operands.service';\nimport { UpdTableConfigService } from './services/upd-table-config.service';\nimport { FiltersOperandsStore } from './services/stores/filters-operands.store';\nimport { SearchSectionComponent } from './components/search-section/search-section.component';\nimport { FilterRowComponent } from './components/filter-row/filter-row.component';\nimport { TableColumnDirective } from './directives/table-column.directive';\nimport { NumberColumnComponent } from './components/columns/number-column/number-column.component';\nimport { DateTimeColumnComponent } from './components/columns/date-time-column/date-time-column.component';\nimport { BooleanColumnComponent } from './components/columns/boolean-column/boolean-column.component';\nimport { TextColumnComponent } from './components/columns/text-column/text-column.component';\nimport { ColumnsManagerComponent } from './components/columns-manager/columns-manager.component';\nimport { SaveSearchComponent } from './components/save-search/save-search.component';\nimport { SavedViewsStorage } from './services/storages/saved-views.storage';\n\n@NgModule({\n imports: [\n CommonModule,\n TranslocoDirective,\n UpdIconsModule,\n UpdButtonModule,\n UpdModalModule,\n UpdPaginatorModule,\n UpdInputModule,\n UpdCheckboxModule,\n UpdSelectModule,\n UpdDragAndDropModule,\n UpdFormModule,\n UpdDropdownModule,\n UpdTimePickerModule,\n UpdBadgeModule,\n UpdPopoverModule\n ],\n declarations: [\n TableComponent,\n SearchSectionComponent,\n FilterRowComponent,\n TableColumnDirective,\n NumberColumnComponent,\n DateTimeColumnComponent,\n BooleanColumnComponent,\n TextColumnComponent,\n ColumnsManagerComponent,\n SaveSearchComponent\n ],\n exports: [\n TableComponent,\n TableColumnDirective\n ],\n providers: [\n UpdTableConfigService,\n FiltersOperandsStore,\n SavedViewsStorage\n ]\n})\nexport class UpdTableModule {\n constructor(translocoService: TranslocoService) {\n translocoService.setFallbackLangForMissingTranslation({ fallbackLang: 'en' });\n translocoService.setTranslation(en, 'en');\n translocoService.setTranslation(pt, 'pt');\n }\n\n /**\n * Sets up the table module with the provided configuration.\n * @param config Configuration.\n */\n static forRoot(config: UpdTableConfig): ModuleWithProviders<UpdTableModule> {\n const customizableProviders: Provider[] = [\n config.filtersOperandsService || {\n provide: FiltersOperandsService,\n useClass: DefaultFiltersOperandsService\n }\n ];\n\n return {\n ngModule: UpdTableModule,\n providers: [\n { provide: TableConstants.defaultOptionsInjectionToken, useValue: config },\n ...customizableProviders\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i3","i6.FilterRowComponent","i5","i9.SearchSectionComponent","i10.TableColumnDirective","i1.UpdTableConfigService","translationKey","en","pt"],"mappings":"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"}
|