@enigmatry/entry-components 20.3.2 → 21.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/fesm2022/enigmatry-entry-components-button.mjs +14 -11
- package/fesm2022/enigmatry-entry-components-button.mjs.map +1 -1
- package/fesm2022/enigmatry-entry-components-common.mjs +31 -31
- package/fesm2022/enigmatry-entry-components-common.mjs.map +1 -1
- package/fesm2022/enigmatry-entry-components-date-time-picker.mjs +20 -20
- package/fesm2022/enigmatry-entry-components-date-time-picker.mjs.map +1 -1
- package/fesm2022/enigmatry-entry-components-dialog.mjs +21 -21
- package/fesm2022/enigmatry-entry-components-dialog.mjs.map +1 -1
- package/fesm2022/enigmatry-entry-components-file-input.mjs +11 -12
- package/fesm2022/enigmatry-entry-components-file-input.mjs.map +1 -1
- package/fesm2022/enigmatry-entry-components-permissions.mjs +10 -10
- package/fesm2022/enigmatry-entry-components-permissions.mjs.map +1 -1
- package/fesm2022/enigmatry-entry-components-search-filter.mjs +33 -33
- package/fesm2022/enigmatry-entry-components-search-filter.mjs.map +1 -1
- package/fesm2022/enigmatry-entry-components-spinner.mjs +22 -13
- package/fesm2022/enigmatry-entry-components-spinner.mjs.map +1 -1
- package/fesm2022/enigmatry-entry-components-table.mjs +224 -322
- package/fesm2022/enigmatry-entry-components-table.mjs.map +1 -1
- package/fesm2022/enigmatry-entry-components-validation.mjs +31 -24
- package/fesm2022/enigmatry-entry-components-validation.mjs.map +1 -1
- package/fesm2022/enigmatry-entry-components.mjs +4 -4
- package/fesm2022/enigmatry-entry-components.mjs.map +1 -1
- package/package.json +25 -24
- package/styles/modules/components/toggle/_generator.scss +1 -1
- package/styles/partials/core/components/forms/_general.scss +1 -0
- package/table/README.md +57 -44
- package/{button/index.d.ts → types/enigmatry-entry-components-button.d.ts} +1 -1
- package/types/enigmatry-entry-components-table.d.ts +256 -0
- package/table/index.d.ts +0 -260
- /package/{common/index.d.ts → types/enigmatry-entry-components-common.d.ts} +0 -0
- /package/{date-time-picker/index.d.ts → types/enigmatry-entry-components-date-time-picker.d.ts} +0 -0
- /package/{dialog/index.d.ts → types/enigmatry-entry-components-dialog.d.ts} +0 -0
- /package/{file-input/index.d.ts → types/enigmatry-entry-components-file-input.d.ts} +0 -0
- /package/{permissions/index.d.ts → types/enigmatry-entry-components-permissions.d.ts} +0 -0
- /package/{search-filter/index.d.ts → types/enigmatry-entry-components-search-filter.d.ts} +0 -0
- /package/{spinner/index.d.ts → types/enigmatry-entry-components-spinner.d.ts} +0 -0
- /package/{validation/index.d.ts → types/enigmatry-entry-components-validation.d.ts} +0 -0
- /package/{index.d.ts → types/enigmatry-entry-components.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enigmatry-entry-components-table.mjs","sources":["../../../../libs/entry-components/table/interfaces/entry-table-config.ts","../../../../libs/entry-components/table/interfaces/paged-query.ts","../../../../libs/entry-components/table/components/entry-cell-formatted-value/entry-cell-formatted-value.component.ts","../../../../libs/entry-components/table/components/entry-cell-formatted-value/entry-cell-formatted-value.component.html","../../../../libs/entry-components/table/components/entry-cell/entry-cell.component.ts","../../../../libs/entry-components/table/components/entry-cell/entry-cell.component.html","../../../../libs/entry-components/table/components/entry-cell-context-menu/entry-cell-context-menu.component.ts","../../../../libs/entry-components/table/components/entry-cell-context-menu/entry-cell-context-menu.component.html","../../../../libs/entry-components/table/components/entry-table/entry-table.component.ts","../../../../libs/entry-components/table/components/entry-table/entry-table.component.html","../../../../libs/entry-components/table/entry-table.module.ts","../../../../libs/entry-components/table/enigmatry-entry-components-table.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\nimport { createInjectionToken, provideConfig } from '@enigmatry/entry-components/common';\n\nexport class EntryTableConfig {\n /** Show paginator, default is true */\n showPaginator = true;\n /** Show first and last pagination buttons, default is false */\n showFirstLastButtons = false;\n /** Page size, default 20 */\n pageSize = 20;\n /** Page size options, default [20, 50, 100] */\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n pageSizeOptions = [20, 50, 100];\n /** Hide page size options, default is false */\n hidePageSize = false;\n /** Hide pagination, default is false */\n noResultsText = 'No results found';\n /** Row focus visible, default is false */\n rowFocusVisible = false;\n\n constructor(config: Partial<EntryTableConfig> = {}) {\n this.showPaginator = config.showPaginator ?? this.showPaginator;\n this.showFirstLastButtons = config.showFirstLastButtons ?? this.showFirstLastButtons;\n this.pageSize = config.pageSize ?? this.pageSize;\n this.pageSizeOptions = config.pageSizeOptions ?? this.pageSizeOptions;\n this.hidePageSize = config.hidePageSize ?? this.hidePageSize;\n this.noResultsText = config.noResultsText ?? this.noResultsText;\n this.rowFocusVisible = config.rowFocusVisible ?? this.rowFocusVisible;\n }\n}\n\n/** Entry table config injection token\n * Defaults:\n * - showPaginator: true\n * - showFirstLastButtons: false\n * - pageSize: 20\n * - pageSizeOptions: [20, 50, 100]\n * - hidePageSize: false\n * - noResultsText: 'No results found'\n * - rowFocusVisible: false\n */\nexport const ENTRY_TABLE_CONFIG = createInjectionToken(new EntryTableConfig());\n\n/** Provide entry table config */\nexport const provideEntryTableConfig = (config: Partial<EntryTableConfig>): Provider =>\n provideConfig(ENTRY_TABLE_CONFIG, () => new EntryTableConfig(config));\n\n/** Default percentage multiplier injection token */\nexport const DEFAULT_PERCENTAGE_MULTIPLIER: InjectionToken<number> = new InjectionToken<number>('');\n","import { Params } from '@angular/router';\nimport { OnPage, OnSort, PageEvent, SortDirection, SortEvent } from './pagination';\n\nexport const defaultPageSize = 20;\nexport const defaultPageNumber = 1;\n\nexport class PagedQuery implements OnPage, OnSort {\n pageNumber = defaultPageNumber;\n pageSize = defaultPageSize;\n sortBy?: string;\n sortDirection?: SortDirection;\n\n sortChange(sort: SortEvent): void {\n if (sort.active) {\n this.sortBy = sort.active;\n this.sortDirection = this.getValueIfNotEmpty(sort.direction);\n this.pageNumber = defaultPageNumber;\n }\n }\n\n pageChange(page: PageEvent): void {\n this.pageNumber = page.pageIndex + 1;\n this.pageSize = page.pageSize;\n }\n\n applyRouteChanges(queryParams: Params): void {\n this.pageNumber = queryParams['pageNumber'] ? Number(queryParams['pageNumber']) : defaultPageNumber;\n this.pageSize = queryParams['pageSize'] ? Number(queryParams['pageSize']) : this.pageSize;\n this.sortBy = this.getValueIfNotEmpty(queryParams['sortBy'] ?? this.sortBy);\n this.sortDirection = this.getValueIfNotEmpty(queryParams['sortDirection'] ?? this.sortDirection);\n }\n\n getRouteQueryParams(): Params {\n return {\n pageNumber: this.pageNumber,\n pageSize: this.pageSize,\n sortBy: this.sortBy,\n sortDirection: this.sortDirection\n };\n }\n\n getValueIfNotEmpty = <T>(value: T): T | undefined => value ? value : undefined;\n}\n","import { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core';\nimport { ColumnTypeParameter } from '../../interfaces';\nimport { DEFAULT_PERCENTAGE_MULTIPLIER } from '../../interfaces/entry-table-config';\n\n@Component({\n selector: 'entry-cell-formatted-value',\n templateUrl: './entry-cell-formatted-value.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class EntryCellFormattedValueComponent {\n @Input() value: string | undefined;\n @Input() type: string;\n @Input() typeParameter: ColumnTypeParameter & { multiplier?: number } | undefined;\n\n public readonly defaultPercentageMultiplier: number = inject(DEFAULT_PERCENTAGE_MULTIPLIER);\n}\n","<ng-container [ngSwitch]=\"type\">\n <!-- Boolean -->\n <ng-container *ngSwitchCase=\"'boolean'\">\n {{value ? '\\u2713' : ''}}\n </ng-container>\n <!-- Number -->\n <ng-container *ngSwitchCase=\"'number'\">\n {{value | number: typeParameter?.digitsInfo : typeParameter?.locale}}\n </ng-container>\n <!-- Currency -->\n <ng-container *ngSwitchCase=\"'currency'\">\n {{value | currency: typeParameter?.currencyCode : typeParameter?.display : typeParameter?.digitsInfo : typeParameter?.locale}}\n </ng-container>\n <!-- Percent -->\n <ng-container *ngSwitchCase=\"'percent'\">\n {{+(value ?? 0) * (typeParameter?.multiplier ?? defaultPercentageMultiplier) | percent: typeParameter?.digitsInfo : typeParameter?.locale}}\n </ng-container>\n <!-- Date -->\n <ng-container *ngSwitchCase=\"'date'\">\n {{value | date: typeParameter?.format : typeParameter?.timezone : typeParameter?.locale}}\n </ng-container>\n <!-- Link -->\n <ng-container *ngSwitchCase=\"'link'\">\n <a [href]=\"value\" target=\"_blank\">{{value}}</a>\n </ng-container>\n <!-- Default -->\n <ng-container *ngSwitchDefault>\n {{value}}\n </ng-container>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { ColumnDef } from '../../interfaces';\n\n@Component({\n selector: 'entry-cell',\n templateUrl: './entry-cell.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class EntryCellComponent<T> {\n @Input() rowData: T;\n @Input() colDef: ColumnDef;\n\n get value(): any {\n return this.getCellValue(this.rowData, this.colDef);\n }\n\n getCellValue = (rowData: T, colDef: ColumnDef) => {\n const keys = colDef.field ? colDef.field.split('.') : [];\n return keys.reduce((data, key) => data && (data as any)[key], rowData);\n };\n}\n","<entry-cell-formatted-value [value]=\"value\" [type]=\"colDef.type!\" [typeParameter]=\"colDef.typeParameter\"></entry-cell-formatted-value>","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { MatMenuPanel } from '@angular/material/menu';\nimport { ContextMenuItem } from '../../interfaces/context-menu-item';\nimport { RowContextMenuFormatter } from '../../interfaces/row-context-menu-formatter';\n\n@Component({\n selector: 'entry-cell-context-menu',\n templateUrl: './entry-cell-context-menu.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class EntryCellContextMenuComponent implements OnInit {\n @Input() items: ContextMenuItem[] = [];\n @Input() rowMenuFormatter: RowContextMenuFormatter;\n @Input() rowData: any;\n @Input() triggerIcon: string = 'more_vert';\n @Input() isSubMenu: boolean = false;\n @Output() selected = new EventEmitter<string>();\n\n @ViewChild('menu', { static: true }) menu: MatMenuPanel;\n\n menuItems: ContextMenuItem[] = [];\n\n ngOnInit(): void {\n this.menuItems = this.rowMenuFormatter?.items\n ? this.rowMenuFormatter.items(this.rowData)\n : this.items;\n }\n}\n","<button *ngIf=\"!isSubMenu\" mat-icon-button [matMenuTriggerFor]=\"menu\" (click)=\"$event.stopPropagation()\">\n <mat-icon>{{triggerIcon}}</mat-icon>\n</button>\n<mat-menu #menu=\"matMenu\" class=\"entry-table-menu\" role=\"menu\">\n <ng-container *ngFor=\"let item of menuItems\">\n <ng-container\n *ngIf=\"item.items?.length; then menuSubItems; else menuItem\">\n </ng-container>\n\n <ng-template #menuSubItems>\n <button mat-menu-item [disabled]=\"item.disabled\" [matMenuTriggerFor]=\"subMenu.menu\"\n class=\"context-menu-item\">\n <mat-icon class=\"icon\" *ngIf=\"item.icon\">{{item.icon}}</mat-icon>\n <span class=\"description\">{{item.name}}</span>\n <entry-cell-context-menu #subMenu [items]=\"item.items ?? []\" [rowData]=\"rowData\" [isSubMenu]=\"true\"\n (selected)=\"selected.emit($event)\">\n </entry-cell-context-menu>\n </button>\n </ng-template>\n\n <ng-template #menuItem>\n <button mat-menu-item [disabled]=\"item.disabled\" (click)=\"selected.emit(item.id)\" class=\"context-menu-item\">\n <mat-icon class=\"icon\" *ngIf=\"item.icon\">{{item.icon}}</mat-icon>\n <span class=\"description\">{{item.name}}</span>\n </button>\n </ng-template>\n </ng-container>\n</mat-menu>","/* eslint-disable max-lines */\nimport { SelectionModel } from '@angular/cdk/collections';\nimport {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n OnChanges,\n TemplateRef,\n ChangeDetectorRef,\n ElementRef,\n SimpleChanges,\n HostBinding,\n inject\n} from '@angular/core';\nimport { PageEvent } from '@angular/material/paginator';\nimport { Sort, SortDirection } from '@angular/material/sort';\nimport { MatTableDataSource } from '@angular/material/table';\n\nimport {\n ColumnDef, PagedData, RowSelectionFormatter, RowClassFormatter,\n ContextMenuItem, RowContextMenuFormatter, CellTemplate, ENTRY_TABLE_CONFIG, EntryTableConfig\n} from '../../interfaces';\n\n@Component({\n selector: 'entry-table',\n templateUrl: './entry-table.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class EntryTableComponent<T> implements OnChanges {\n @HostBinding('class') className = 'entry-table';\n\n private readonly _config: EntryTableConfig = inject(ENTRY_TABLE_CONFIG);\n private readonly _elementRef = inject(ElementRef<HTMLElement>);\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n dataSource = new MatTableDataSource<T>([]);\n\n @Input() displayedColumns: string[];\n @Input() columns: ColumnDef[] = [];\n\n // Data\n private _data: T[] = [];\n private _page: PagedData<T>;\n @Input() data: T[] | PagedData<T> | null | undefined = [];\n @Input() total = 0;\n @Input() loading = false;\n\n // Pagination\n @Input() showPaginator: boolean;\n @Input() pageDisabled = false;\n @Input() showFirstLastButtons: boolean;\n @Input() pageIndex = 0;\n @Input() pageSize: number;\n @Input() pageSizeOptions: number[];\n @Input() hidePageSize: boolean;\n @Input() paginationTemplate: TemplateRef<any>;\n @Output() pageChange = new EventEmitter<PageEvent>();\n\n // Sort\n @Input() sortActive: string;\n @Input() sortDirection: SortDirection;\n @Input() sortDisableClear = false;\n @Input() sortDisabled = false;\n @Input() sortStart: 'asc' | 'desc' = 'asc';\n @Output() sortChange = new EventEmitter<Sort>();\n\n // Row\n @Input() rowHover = false;\n @Input() rowStriped = false;\n @Input() rowFocusVisible: boolean;\n @Output() rowClick = new EventEmitter<T>();\n\n // Row selection\n @Input() multiSelectable = true;\n rowSelection: SelectionModel<T> = new SelectionModel<T>(true, []);\n\n @Input() rowSelected: T[] = [];\n @Input() rowSelectable = false;\n @Input() showSelectAllCheckbox = true;\n @Input() rowSelectionFormatter: RowSelectionFormatter = {};\n @Input() rowClassFormatter: RowClassFormatter;\n @Output() rowSelectionChange = new EventEmitter<T[]>();\n\n // Context menu\n @Input() showContextMenu = false;\n @Input() contextMenuItems: ContextMenuItem[] = [];\n @Input() contextMenuTemplate: TemplateRef<any> | null;\n @Input() rowContextMenuFormatter: RowContextMenuFormatter;\n @Output() contextMenuItemSelected = new EventEmitter<{ itemId: string; rowData: T }>();\n\n // No Result\n @Input() noResultText: string;\n @Input() noResultTemplate: TemplateRef<any> | null;\n\n readonly selectionColumn = 'selection-column';\n readonly contextMenuColumn = 'context-menu-column';\n\n get hasNoResult() {\n return (!this.data || this._data.length === 0) && !this.loading;\n }\n\n @Input() headerTemplate: TemplateRef<unknown> | CellTemplate | Record<string, TemplateRef<unknown>>;\n @Input() cellTemplate: TemplateRef<unknown> | CellTemplate | Record<string, TemplateRef<unknown>>;\n\n readonly toTemplateIndex = (template: TemplateRef<unknown> | CellTemplate | Record<string, TemplateRef<unknown>>, key: string) =>\n (template as unknown as Record<string, TemplateRef<unknown>>)[key];\n\n detectChanges() {\n this._changeDetectorRef.detectChanges();\n }\n\n isTemplateRef = (obj: any) => obj instanceof TemplateRef;\n\n getRowClassList(rowData: T, index: number) {\n const classList = {\n selected: this.rowSelection.isSelected(rowData),\n\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n 'mat-row-odd': index % 2\n } as Record<string, unknown>;\n if (this.rowClassFormatter) {\n for (const key of Object.keys(this.rowClassFormatter)) {\n classList[key] = this.rowClassFormatter[key](rowData);\n }\n }\n return classList;\n }\n\n getColumnClassList(colDef: ColumnDef): string {\n const customClasses = colDef.class ?? '';\n const columnType = colDef.type ?? '';\n const columnField = `cell-${this.convertToKebabCase(colDef.field)}`;\n\n return `${customClasses} ${columnType} ${columnField}`;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.initializeVariables();\n\n if (Array.isArray(this.data)) {\n this._data = this.data as T[];\n } else {\n this._page = this.data as PagedData<T>;\n this._data = this._page.items ?? [];\n this.total = this._page.totalCount ?? 0;\n this.pageSize = this._page.pageSize ?? this.pageSize ?? this._config.pageSize;\n this.pageIndex = this._page.pageNumber ? this._page.pageNumber - 1 : this.pageIndex;\n }\n\n if (this.dataSource) {\n this.dataSource.disconnect();\n }\n\n this.dataSource = new MatTableDataSource(this._data);\n\n if (changes['data']) {\n this.scrollToTop();\n }\n }\n\n getIndex = (index: number, dataIndex: number) => typeof index === 'undefined' ? dataIndex : index;\n\n private readonly initializeVariables = () => {\n this.showPaginator = this.showPaginator ?? this._config.showPaginator;\n this.showFirstLastButtons = this.showFirstLastButtons ?? this._config.showFirstLastButtons;\n this.pageSizeOptions = this.pageSizeOptions ?? this._config.pageSizeOptions;\n this.hidePageSize = this.hidePageSize ?? this._config.hidePageSize;\n this.noResultText = this.noResultText ?? this._config.noResultsText;\n this.rowFocusVisible = this.rowFocusVisible ?? this._config.rowFocusVisible;\n\n this.displayedColumns = this.columns.filter(item => !item.hide).map(item => item.field);\n\n if (this.rowSelectable && !this.displayedColumns.includes(this.selectionColumn)) {\n this.displayedColumns.unshift(this.selectionColumn);\n }\n\n if (this.showContextMenu && !this.displayedColumns.includes(this.contextMenuColumn)) {\n this.displayedColumns.push(this.contextMenuColumn);\n }\n\n if (this.rowSelectable) {\n this.rowSelection = new SelectionModel<T>(this.multiSelectable, this.rowSelected);\n }\n\n if (!this.data) {\n this.data = [];\n }\n };\n\n isAllSelected() {\n const numSelected = this.rowSelection.selected.length;\n const numRows = this.dataSource.data.filter(row => !this.rowSelectionFormatter.disabled?.(row)).length;\n return numSelected === numRows;\n }\n\n toggleSelectAllCheckbox(): void {\n if (this.isAllSelected()) {\n this.rowSelection.clear();\n this.rowSelectionChange.emit(this.rowSelection.selected);\n return;\n }\n this.dataSource.data.forEach(row => {\n if (!this.rowSelectionFormatter.disabled?.(row)) {\n this.rowSelection.select(row);\n }\n });\n this.rowSelectionChange.emit(this.rowSelection.selected);\n }\n\n toggleRowSelection(row: any) {\n this.rowSelection.toggle(row);\n this.rowSelectionChange.emit(this.rowSelection.selected);\n }\n\n handlePage(e: PageEvent) {\n this.pageChange.emit(e);\n }\n\n scrollToTop(): void {\n this._elementRef.nativeElement.scrollTop = 0;\n }\n\n get shouldShowPaginator() {\n return this.showPaginator && this._data.length > 0;\n }\n\n convertToKebabCase = (value: string): string => value?.replace(/([a-z0-9])([A-Z])/gu, '$1-$2').toLowerCase();\n}\n","<!-- Table content -->\n<table mat-table\n [ngClass]=\"{'mat-table-hover': rowHover, 'mat-table-striped': rowStriped, 'mat-table-with-data': !hasNoResult }\"\n [dataSource]=\"dataSource\"\n matSort\n [matSortActive]=\"sortActive\"\n [matSortDirection]=\"sortDirection\"\n [matSortDisableClear]=\"sortDisableClear\"\n [matSortDisabled]=\"sortDisabled\"\n [matSortStart]=\"sortStart\"\n (matSortChange)=\"sortChange.emit($event)\">\n\n <!-- Selection column -->\n <ng-container *ngIf=\"rowSelectable\" [matColumnDef]=\"selectionColumn\">\n <th mat-header-cell *matHeaderCellDef class=\"selection-cell\" aria-label=\"Select rows\">\n <mat-checkbox aria-label=\"Select all\" *ngIf=\"multiSelectable && showSelectAllCheckbox\"\n [checked]=\"rowSelection.hasValue() && isAllSelected()\"\n [indeterminate]=\"rowSelection.hasValue() && !isAllSelected()\"\n (change)=\"$event ? toggleSelectAllCheckbox() : null\">\n </mat-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\n class=\"selection-cell\"\n (click)=\"$event.stopPropagation()\">\n <mat-checkbox aria-label=\"Select row\"\n *ngIf=\"multiSelectable && !(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox!(row))\"\n [disabled]=\"rowSelectionFormatter.disabled && rowSelectionFormatter.disabled!(row)\"\n [checked]=\"rowSelection.isSelected(row)\"\n (change)=\"$event ? toggleRowSelection(row) : null\">\n </mat-checkbox>\n <mat-radio-button aria-label=\"Select row\"\n *ngIf=\"!multiSelectable && !(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox!(row))\"\n [disabled]=\"rowSelectionFormatter.disabled && rowSelectionFormatter.disabled!(row)\"\n [checked]=\"rowSelection.isSelected(row)\"\n [value]=\"rowSelection.isSelected(row)\"\n (change)=\"$event ? toggleRowSelection(row) : null\">\n </mat-radio-button>\n </td>\n </ng-container>\n\n <!-- Context menu column -->\n <ng-container *ngIf=\"showContextMenu\" [matColumnDef]=\"contextMenuColumn\">\n <th mat-header-cell *matHeaderCellDef class=\"action-cell\" aria-label=\"Context Menu Actions\"></th>\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\n class=\"action-cell\">\n <ng-template [ngIf]=\"isTemplateRef(contextMenuTemplate)\" [ngIfElse]=\"contextMenuTpl\">\n <ng-template [ngTemplateOutlet]=\"contextMenuTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row }\">\n </ng-template>\n </ng-template>\n <ng-template #contextMenuTpl>\n <entry-cell-context-menu\n [items]=\"contextMenuItems\"\n [rowData]=\"row\"\n [rowMenuFormatter]=\"rowContextMenuFormatter\"\n (selected)=\"contextMenuItemSelected.emit({itemId: $event, rowData: row})\"\n ></entry-cell-context-menu>\n </ng-template>\n </td>\n </ng-container>\n\n <ng-container *ngFor=\"let col of columns;\">\n <ng-container [matColumnDef]=\"col.field\"\n [sticky]=\"col.pinned==='left'\" [stickyEnd]=\"col.pinned==='right'\">\n <th mat-header-cell *matHeaderCellDef\n [class]=\"getColumnClassList(col)\"\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\n [ngStyle]=\"{'width': col.width, 'min-width': col.width}\">\n <ng-template [ngIf]=\"isTemplateRef(headerTemplate)\" [ngIfElse]=\"headerTpl\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\n </ng-template>\n </ng-template>\n <ng-template #headerTpl>\n <ng-template [ngIf]=\"headerTemplate && isTemplateRef(toTemplateIndex(headerTemplate, col.field))\"\n [ngIfElse]=\"defaultHeaderTpl\">\n <ng-template [ngTemplateOutlet]=\"toTemplateIndex(headerTemplate, col.field)\"\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\n </ng-template>\n </ng-template>\n </ng-template>\n <ng-template #defaultHeaderTpl>\n <div [mat-sort-header]=\"col.sortProp?.id || col.field\"\n [disabled]=\"!col.sortable\"\n [disableClear]=\"col.sortProp?.disableClear\">\n <span>{{col.header}}</span>\n </div>\n </ng-template>\n </th>\n\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\n [class]=\"getColumnClassList(col)\"\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\n [ngStyle]=\"{'width': col.width, 'min-width': col.width}\">\n <ng-template [ngIf]=\"isTemplateRef(cellTemplate)\" [ngIfElse]=\"cellTpl\">\n <ng-template [ngTemplateOutlet]=\"cellTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: getIndex(index, dataIndex), colDef: col }\">\n </ng-template>\n </ng-template>\n <ng-template #cellTpl>\n <ng-template [ngIf]=\"cellTemplate && isTemplateRef(toTemplateIndex(cellTemplate, col.field))\"\n [ngIfElse]=\"colDefCellTpl\">\n <ng-template [ngTemplateOutlet]=\"toTemplateIndex(cellTemplate, col.field)\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: getIndex(index, dataIndex), colDef: col }\">\n </ng-template>\n </ng-template>\n </ng-template>\n <ng-template #colDefCellTpl>\n <ng-template [ngIf]=\"col.cellTemplate\" [ngIfElse]=\"defaultCellTpl\"\n [ngTemplateOutlet]=\"col.cellTemplate ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: getIndex(index, dataIndex), colDef: col }\">\n </ng-template>\n </ng-template>\n <ng-template #defaultCellTpl>\n <entry-cell [rowData]=\"row\" [colDef]=\"col\"></entry-cell>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row\n *matRowDef=\"let row; let index = index; let dataIndex = dataIndex; columns: displayedColumns;\"\n [ngClass]=\"getRowClassList(row, getIndex(index, dataIndex))\"\n [attr.tabindex]=\"rowFocusVisible ? 0 : -1\"\n (click)=\"rowClick.emit(row)\"\n (keydown.enter)=\"rowClick.emit(row)\">\n </tr>\n</table>\n\n<!-- No results -->\n<div class=\"no-results mat-body-2\" *ngIf=\"hasNoResult\">\n <ng-template [ngIf]=\"isTemplateRef(noResultTemplate)\" [ngIfElse]=\"defaultNoResultTpl\">\n <ng-template [ngTemplateOutlet]=\"noResultTemplate\"></ng-template>\n </ng-template>\n <ng-template #defaultNoResultTpl>{{noResultText}}</ng-template>\n</div>\n\n<!-- Pagination -->\n<ng-template [ngIf]=\"isTemplateRef(paginationTemplate)\" [ngIfElse]=\"defaultPaginationTemplate\">\n <ng-template [ngTemplateOutlet]=\"paginationTemplate\"></ng-template>\n</ng-template>\n<ng-template #defaultPaginationTemplate>\n <mat-paginator class=\"pagination\" *ngIf=\"shouldShowPaginator\"\n [showFirstLastButtons]=\"showFirstLastButtons\"\n [length]=\"total\"\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [hidePageSize]=\"hidePageSize\"\n (page)=\"handlePage($event)\"\n [disabled]=\"pageDisabled\">\n </mat-paginator>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\n\nimport { EntryCellComponent } from './components/entry-cell/entry-cell.component';\nimport { EntryCellContextMenuComponent } from './components/entry-cell-context-menu/entry-cell-context-menu.component';\nimport { EntryCellFormattedValueComponent } from './components/entry-cell-formatted-value/entry-cell-formatted-value.component';\nimport { EntryTableComponent } from './components/entry-table/entry-table.component';\nimport { DEFAULT_PERCENTAGE_MULTIPLIER } from './interfaces';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatTableModule,\n MatSortModule,\n MatPaginatorModule,\n MatCheckboxModule,\n MatIconModule,\n MatMenuModule,\n MatRadioModule,\n CommonModule,\n MatButtonModule\n ],\n declarations: [\n EntryTableComponent,\n EntryCellComponent,\n EntryCellContextMenuComponent,\n EntryCellFormattedValueComponent\n ],\n exports: [\n EntryTableComponent,\n EntryCellComponent,\n EntryCellContextMenuComponent,\n EntryCellFormattedValueComponent\n ],\n providers: [\n { provide: DEFAULT_PERCENTAGE_MULTIPLIER, useValue: 1 }\n ]\n})\nexport class EntryTableModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.EntryCellFormattedValueComponent","i2","i3","i4","i7.EntryCellComponent","i8.EntryCellContextMenuComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"enigmatry-entry-components-table.mjs","sources":["../../../../libs/entry-components/table/interfaces/entry-table-configuration.ts","../../../../libs/entry-components/table/interfaces/paged-query.ts","../../../../libs/entry-components/table/components/entry-cell-formatted-value/entry-cell-formatted-value.component.ts","../../../../libs/entry-components/table/components/entry-cell-formatted-value/entry-cell-formatted-value.component.html","../../../../libs/entry-components/table/components/entry-cell/entry-cell.component.ts","../../../../libs/entry-components/table/components/entry-cell/entry-cell.component.html","../../../../libs/entry-components/table/components/entry-cell-context-menu/entry-cell-context-menu.component.ts","../../../../libs/entry-components/table/components/entry-cell-context-menu/entry-cell-context-menu.component.html","../../../../libs/entry-components/table/components/entry-table/entry-table.component.ts","../../../../libs/entry-components/table/components/entry-table/entry-table.component.html","../../../../libs/entry-components/table/entry-table.module.ts","../../../../libs/entry-components/table/enigmatry-entry-components-table.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\nimport { createInjectionToken, provideConfig } from '@enigmatry/entry-components/common';\n\nexport class EntryTableConfiguration {\n /** Show paginator, default is true */\n showPaginator = true;\n /** Show first and last pagination buttons, default is false */\n showFirstLastButtons = false;\n /** Page size, default 20 */\n pageSize = 20;\n /** Page size options, default [20, 50, 100] */\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n pageSizeOptions = [20, 50, 100];\n /** Hide page size options, default is false */\n hidePageSize = false;\n /** Hide pagination, default is false */\n noResultsText = 'No results found';\n /** Row focus visible, default is false */\n rowFocusVisible = false;\n\n constructor(config: Partial<EntryTableConfiguration> = {}) {\n this.showPaginator = config.showPaginator ?? this.showPaginator;\n this.showFirstLastButtons = config.showFirstLastButtons ?? this.showFirstLastButtons;\n this.pageSize = config.pageSize ?? this.pageSize;\n this.pageSizeOptions = config.pageSizeOptions ?? this.pageSizeOptions;\n this.hidePageSize = config.hidePageSize ?? this.hidePageSize;\n this.noResultsText = config.noResultsText ?? this.noResultsText;\n this.rowFocusVisible = config.rowFocusVisible ?? this.rowFocusVisible;\n }\n}\n\n/** Entry table config injection token\n * Defaults:\n * - showPaginator: true\n * - showFirstLastButtons: false\n * - pageSize: 20\n * - pageSizeOptions: [20, 50, 100]\n * - hidePageSize: false\n * - noResultsText: 'No results found'\n * - rowFocusVisible: false\n */\nexport const ENTRY_TABLE_CONFIGURATION = createInjectionToken(new EntryTableConfiguration());\n\n/** Provide entry table config */\nexport const provideEntryTableConfiguration = (config: Partial<EntryTableConfiguration>): Provider =>\n provideConfig(ENTRY_TABLE_CONFIGURATION, () => new EntryTableConfiguration(config));\n\n/** Default percentage multiplier injection token */\nexport const DEFAULT_PERCENTAGE_MULTIPLIER: InjectionToken<number> = new InjectionToken<number>('');\n","import { Params } from '@angular/router';\nimport { OnPage, OnSort, PageEvent, SortDirection, SortEvent } from './pagination';\n\nexport const defaultPageSize = 20;\nexport const defaultPageNumber = 1;\n\nexport class PagedQuery implements OnPage, OnSort {\n pageNumber = defaultPageNumber;\n pageSize = defaultPageSize;\n sortBy?: string;\n sortDirection?: SortDirection;\n\n readonly sortChange = (sort: SortEvent): void => {\n if (sort.active) {\n this.sortBy = sort.active;\n this.sortDirection = this.getValueIfNotEmpty(sort.direction);\n this.pageNumber = defaultPageNumber;\n }\n };\n\n readonly pageChange = (page: PageEvent): void => {\n this.pageNumber = page.pageIndex + 1;\n this.pageSize = page.pageSize;\n };\n\n readonly applyRouteChanges = (queryParams: Params): void => {\n this.pageNumber = queryParams['pageNumber'] ? Number(queryParams['pageNumber']) : defaultPageNumber;\n this.pageSize = queryParams['pageSize'] ? Number(queryParams['pageSize']) : this.pageSize;\n this.sortBy = this.getValueIfNotEmpty(queryParams['sortBy'] ?? this.sortBy);\n this.sortDirection = this.getValueIfNotEmpty(queryParams['sortDirection'] ?? this.sortDirection);\n };\n\n readonly getRouteQueryParams = (): Params => {\n return {\n pageNumber: this.pageNumber,\n pageSize: this.pageSize,\n sortBy: this.sortBy,\n sortDirection: this.sortDirection\n };\n };\n\n readonly getValueIfNotEmpty = <T>(value: T): T | undefined => value ? value : undefined;\n}\n","import { CurrencyPipe, DatePipe, DecimalPipe, PercentPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { ColumnTypeParameter } from '../../interfaces';\nimport { DEFAULT_PERCENTAGE_MULTIPLIER } from '../../interfaces/entry-table-configuration';\n\n@Component({\n imports: [DatePipe, DecimalPipe, PercentPipe, CurrencyPipe],\n selector: 'entry-cell-formatted-value',\n templateUrl: './entry-cell-formatted-value.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EntryCellFormattedValueComponent {\n readonly value = input<string | undefined>();\n readonly type = input<string | undefined>();\n readonly typeParameter = input<ColumnTypeParameter & { multiplier?: number } | undefined>();\n\n public readonly defaultPercentageMultiplier: number = inject(DEFAULT_PERCENTAGE_MULTIPLIER);\n}\n","@switch (type()) {\n @case('boolean'){\n {{value() ? '\\u2713' : ''}}\n }\n @case('number'){\n {{value() | number: typeParameter()?.digitsInfo : typeParameter()?.locale}}\n }\n @case('currency'){\n {{value() | currency: typeParameter()?.currencyCode : typeParameter()?.display : typeParameter()?.digitsInfo :\n typeParameter()?.locale}}\n }\n @case('percent'){\n {{+(value() ?? 0) * (typeParameter()?.multiplier ?? defaultPercentageMultiplier) | percent: typeParameter()?.digitsInfo : typeParameter()?.locale}}\n }\n @case('date'){\n {{value() | date: typeParameter()?.format : typeParameter()?.timezone : typeParameter()?.locale}}\n }\n @case('link'){\n <a [href]=\"value()\" target=\"_blank\">{{value()}}</a>\n }\n @default{\n {{value()}}\n }\n}","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { ColumnDefinition } from '../../interfaces';\nimport { EntryCellFormattedValueComponent } from '../entry-cell-formatted-value/entry-cell-formatted-value.component';\n\n@Component({\n imports: [EntryCellFormattedValueComponent],\n selector: 'entry-cell',\n templateUrl: './entry-cell.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EntryCellComponent<T> {\n readonly rowData = input.required<T>();\n readonly columnDefinition = input.required<ColumnDefinition>();\n readonly value = computed(() => this.getCellValue(this.rowData(), this.columnDefinition()));\n readonly printableValue = computed(() => this.value() as string ?? '');\n\n protected readonly getCellValue = (rowData: T, columnDefinition: ColumnDefinition) => {\n const keys = columnDefinition.field ? columnDefinition.field.split('.') : [];\n return keys.reduce((data, key) => data && (data as Record<string, T>)[key], rowData);\n };\n}\n","<entry-cell-formatted-value [value]=\"printableValue()\" [type]=\"columnDefinition().type!\"\n [typeParameter]=\"columnDefinition().typeParameter\"></entry-cell-formatted-value>","import { ChangeDetectionStrategy, Component, computed, input, output, viewChild } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule, MatMenuPanel } from '@angular/material/menu';\nimport { ContextMenuItem } from '../../interfaces/context-menu-item';\nimport { RowContextMenuFormatter } from '../../interfaces/row-context-menu-formatter';\n\n@Component({\n selector: 'entry-cell-context-menu',\n imports: [MatMenuModule, MatButtonModule, MatIconModule, EntryCellContextMenuComponent],\n templateUrl: './entry-cell-context-menu.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EntryCellContextMenuComponent {\n readonly items = input.required<ContextMenuItem[]>();\n readonly rowMenuFormatter = input<RowContextMenuFormatter>();\n readonly rowData = input<unknown>();\n readonly triggerIcon = input<string>('more_vert');\n readonly isSubMenu = input<boolean>(false);\n readonly selected = output<string>();\n readonly menuItems = computed(() => (this.rowMenuFormatter()?.items\n ? this.rowMenuFormatter()?.items(this.rowData)\n : this.items()) ?? []);\n readonly menu = viewChild<MatMenuPanel>('menu');\n readonly subMenu = viewChild<EntryCellContextMenuComponent>('subMenu');\n}\n","@if(!isSubMenu())\n{\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" (click)=\"$event.stopPropagation()\">\n <mat-icon>{{triggerIcon()}}</mat-icon>\n </button>\n}\n\n<mat-menu #menu=\"matMenu\" class=\"entry-table-menu\" role=\"menu\">\n @for(menuItem of menuItems(); track menuItem.id)\n {\n <button mat-menu-item [disabled]=\"menuItem.disabled\"\n [matMenuTriggerFor]=\"menuItem.items?.length ? (subMenu()?.menu() ?? null) : null\"\n (click)=\"!menuItem.items?.length && selected.emit(menuItem.id)\" class=\"context-menu-item\">\n\n @if(menuItem.icon)\n {\n <mat-icon class=\"icon\">{{menuItem.icon}}</mat-icon>\n }\n\n <span class=\"description\">{{menuItem.name}}</span>\n\n @if(menuItem.items?.length)\n {\n <entry-cell-context-menu #subMenu [items]=\"menuItem.items ?? []\" [rowData]=\"rowData()\" [isSubMenu]=\"true\"\n (selected)=\"selected.emit($event)\">\n </entry-cell-context-menu>\n }\n </button>\n }\n</mat-menu>","/* eslint-disable max-lines */\nimport { SelectionModel } from '@angular/cdk/collections';\nimport {\n Component, ChangeDetectionStrategy, TemplateRef, ElementRef, inject, input, output, computed,\n linkedSignal,\n effect,\n signal\n} from '@angular/core';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSortModule, Sort, SortDirection } from '@angular/material/sort';\nimport { MatTableDataSource, MatTableModule } from '@angular/material/table';\nimport {\n ColumnDefinition, PagedData, RowSelectionFormatter, RowClassFormatter, ContextMenuItem,\n RowContextMenuFormatter, CellTemplate, ENTRY_TABLE_CONFIGURATION, EntryTableConfiguration\n} from '../../interfaces';\nimport { EntryCellComponent } from '../entry-cell/entry-cell.component';\nimport { EntryCellContextMenuComponent } from '../entry-cell-context-menu/entry-cell-context-menu.component';\n\n@Component({\n selector: 'entry-table',\n host: { class: 'entry-table' },\n imports: [MatTableModule, MatSortModule, MatCheckboxModule, MatRadioModule, MatPaginatorModule, EntryCellComponent, EntryCellContextMenuComponent],\n templateUrl: './entry-table.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EntryTableComponent<T> {\n private readonly configuration: EntryTableConfiguration = inject(ENTRY_TABLE_CONFIGURATION);\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n dataSource = new MatTableDataSource<T>([]);\n readonly selectionColumn = 'selection-column';\n readonly contextMenuColumn = 'context-menu-column';\n\n readonly columns = input<ColumnDefinition[]>([]);\n readonly displayedColumns = computed<string[]>(() => {\n const result = this.columns().filter(item => !item.hide)\n .map(item => item.field);\n\n if (this.rowSelectable() && !result.includes(this.selectionColumn)) {\n result.unshift(this.selectionColumn);\n }\n\n if (this.showContextMenu() && !result.includes(this.contextMenuColumn)) {\n result.push(this.contextMenuColumn);\n }\n\n return result;\n });\n\n // Data\n readonly data = input<T[] | PagedData<T> | null | undefined>([]);\n private readonly trueData = signal(<T[] | null>([]));\n readonly total = linkedSignal<number>(() => 0);\n readonly loading = input<boolean>(false);\n\n // Pagination\n readonly showPaginator = input<boolean>(this.configuration.showPaginator);\n readonly pageDisabled = input<boolean>(this.configuration.showFirstLastButtons);\n readonly showFirstLastButtons = input<boolean>(false);\n readonly pageIndex = linkedSignal<number>(() => 0);\n readonly pageSize = linkedSignal<number>(() => 0);\n readonly pageSizeOptions = input<number[]>(this.configuration.pageSizeOptions);\n readonly hidePageSize = input<boolean>(this.configuration.hidePageSize);\n readonly paginationTemplate = input<TemplateRef<unknown>>();\n readonly shouldShowPaginator = computed(() => {\n return this.showPaginator() && this.trueData()?.length;\n });\n\n readonly pageChange = output<PageEvent>();\n\n // Sort\n readonly sortActive = input<string>();\n readonly sortDirection = input<SortDirection>();\n readonly sortDisableClear = input<boolean>(false);\n readonly sortDisabled = input<boolean>(false);\n readonly sortStart = input<'asc' | 'desc'>('asc');\n readonly sortChange = output<Sort>();\n\n // Row\n readonly rowHover = input<boolean>(false);\n readonly rowStriped = input<boolean>(false);\n readonly rowFocusVisible = input<boolean>(this.configuration.rowFocusVisible);\n readonly rowClick = output<T>();\n\n // Row selection\n readonly multiSelectable = input<boolean>(true);\n readonly rowSelection = linkedSignal(() => this.rowSelectable() ?\n new SelectionModel<T>(this.multiSelectable(), this.rowSelected()) : new SelectionModel<T>(true, []));\n\n readonly rowSelected = input<T[]>([]);\n readonly rowSelectable = input<boolean>(false);\n readonly showSelectAllCheckbox = input<boolean>(true);\n readonly rowSelectionFormatter = input<RowSelectionFormatter>({});\n readonly rowClassFormatter = input<RowClassFormatter>();\n\n // Context menu\n readonly showContextMenu = input<boolean>(false);\n readonly contextMenuItems = input<ContextMenuItem[]>([]);\n readonly contextMenuTemplate = input<TemplateRef<unknown> | null>(null);\n readonly rowContextMenuFormatter = input<RowContextMenuFormatter>();\n readonly contextMenuItemSelected = output<{ itemId: string; rowData: T }>();\n\n // No Result\n readonly noResultText = input<string>(this.configuration.noResultsText);\n readonly noResultTemplate = input<TemplateRef<unknown> | null>(null);\n readonly hasNoResult = computed(() => !this.trueData()?.length && !this.loading());\n\n readonly headerTemplate = input<TemplateRef<unknown> | CellTemplate | Record<string, TemplateRef<unknown>>>();\n readonly unknownTemplateAsTemplate = (template: unknown) => template as TemplateRef<unknown>;\n readonly cellTemplate = input<TemplateRef<unknown> | CellTemplate | Record<string, TemplateRef<unknown>>>();\n\n constructor() {\n effect(() => {\n if (this.data()) {\n let trueData: T[];\n if (Array.isArray(this.data())) {\n trueData = this.data() as T[];\n } else {\n const page = this.data() as PagedData<T>;\n this.total.set(page.totalCount ?? 0);\n this.pageSize.set(page.pageSize ?? this.pageSize() ?? this.configuration.pageSize);\n this.pageIndex.set(page.pageNumber ? page.pageNumber - 1 : this.pageIndex());\n trueData = (this.data() as PagedData<T>)?.items ?? [];\n }\n\n if (this.dataSource) {\n this.dataSource.disconnect();\n }\n\n this.dataSource = new MatTableDataSource(trueData);\n this.trueData.set(trueData);\n this.scrollToTop();\n }\n });\n }\n\n readonly toTemplateIndex = (template: TemplateRef<unknown> | CellTemplate | Record<string, TemplateRef<unknown>>, key: string) =>\n (template as unknown as Record<string, TemplateRef<unknown>>)[key];\n\n protected readonly isTemplateRef = (value: unknown) => value instanceof TemplateRef;\n\n readonly getRowClassList = (rowData: T, index: number) => {\n const classList = {\n selected: this.rowSelection().isSelected(rowData),\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n 'mat-row-odd': index % 2\n } as Record<string, unknown>;\n\n const rowFormatter = this.rowClassFormatter();\n\n if (rowFormatter) {\n Object.keys(rowFormatter).forEach(key => {\n classList[key] = rowFormatter[key](rowData);\n });\n }\n\n return classList;\n };\n\n readonly getColumnClassList = (columnDefinition: ColumnDefinition): string => {\n const customClasses = columnDefinition.class ?? '';\n const columnType = columnDefinition.type ?? '';\n const columnField = `cell-${this.convertToKebabCase(columnDefinition.field)}`;\n\n return `${customClasses} ${columnType} ${columnField}`;\n };\n\n readonly getIndex = (index: number, dataIndex: number) => typeof index === 'undefined' ? dataIndex : index;\n\n readonly allRowsSelected = (): boolean => {\n const selectedCount = this.rowSelection().selected.length;\n const rowCount = this.dataSource.data.filter(row => !this.rowSelectionFormatter().disabled?.(row)).length;\n return selectedCount === rowCount;\n };\n\n readonly toggleSelectAllCheckbox = (): void => {\n if (this.allRowsSelected()) {\n this.rowSelection().clear();\n } else {\n this.dataSource.data.forEach(row => {\n if (!this.rowSelectionFormatter().disabled?.(row)) {\n this.rowSelection().select(row);\n }\n });\n }\n this.rowSelection.set(this.rowSelection());\n };\n\n readonly toggleRowSelection = (row: T) => {\n this.rowSelection().toggle(row);\n this.rowSelection.set(this.rowSelection());\n };\n\n readonly handlePage = (event: PageEvent) => {\n this.pageChange.emit(event);\n };\n\n readonly scrollToTop = (): void => {\n this.elementRef.nativeElement.scrollTop = 0;\n };\n\n readonly convertToKebabCase = (value: string): string => value?.replace(/([a-z0-9])([A-Z])/gu, '$1-$2').toLowerCase();\n}\n","<!-- Table content -->\n<table mat-table [class.mat-table-hover]=\"rowHover()\" [class.mat-table-striped]=\"rowStriped()\"\n [class.mat-table-with-data]=\"!hasNoResult()\" [dataSource]=\"dataSource\" matSort [matSortActive]=\"sortActive()!\"\n [matSortDirection]=\"sortDirection()!\" [matSortDisableClear]=\"sortDisableClear()\" [matSortDisabled]=\"sortDisabled()\"\n [matSortStart]=\"sortStart()\" (matSortChange)=\"sortChange.emit($event)\">\n\n <!-- Selection column -->\n @if(rowSelectable())\n {\n <ng-container [matColumnDef]=\"selectionColumn\">\n <th mat-header-cell *matHeaderCellDef class=\"selection-cell\" aria-label=\"Select rows\">\n @if(multiSelectable() && showSelectAllCheckbox())\n {\n <mat-checkbox aria-label=\"Select all\" [checked]=\"rowSelection().hasValue() && allRowsSelected()\"\n [indeterminate]=\"rowSelection().hasValue() && !allRowsSelected()\"\n (change)=\"$event ? toggleSelectAllCheckbox() : null\">\n </mat-checkbox>\n }\n </th>\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\" class=\"selection-cell\"\n (click)=\"$event.stopPropagation()\">\n @if(multiSelectable() && !(rowSelectionFormatter().hideCheckbox && rowSelectionFormatter().hideCheckbox!(row)))\n {\n <mat-checkbox aria-label=\"Select row\"\n [disabled]=\"rowSelectionFormatter().disabled && rowSelectionFormatter().disabled!(row)\"\n [checked]=\"rowSelection().isSelected(row)\" (change)=\"$event ? toggleRowSelection(row) : null\">\n </mat-checkbox>\n }\n\n @if(!multiSelectable() && !(rowSelectionFormatter().hideCheckbox && rowSelectionFormatter().hideCheckbox!(row)))\n {\n <mat-radio-button aria-label=\"Select row\"\n [disabled]=\"rowSelectionFormatter().disabled && rowSelectionFormatter().disabled!(row)\"\n [checked]=\"rowSelection().isSelected(row)\" [value]=\"rowSelection().isSelected(row)\"\n (change)=\"$event ? toggleRowSelection(row) : null\">\n </mat-radio-button>\n }\n </td>\n </ng-container>\n }\n\n <!-- Context menu column -->\n @if(showContextMenu())\n {\n <ng-container [matColumnDef]=\"contextMenuColumn\">\n <th mat-header-cell *matHeaderCellDef class=\"action-cell\" aria-label=\"Context Menu Actions\"></th>\n\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\" class=\"action-cell\">\n @if(isTemplateRef(contextMenuTemplate()))\n {\n <ng-template [ngTemplateOutlet]=\"contextMenuTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row }\">\n </ng-template>\n }\n @else{\n <entry-cell-context-menu [items]=\"contextMenuItems()\" [rowData]=\"row\"\n [rowMenuFormatter]=\"rowContextMenuFormatter()\"\n (selected)=\"contextMenuItemSelected.emit({itemId: $event, rowData: row})\"></entry-cell-context-menu>\n }\n </td>\n </ng-container>\n }\n\n @for(column of columns(); track column.field)\n {\n <ng-container [matColumnDef]=\"column.field\" [sticky]=\"column.pinned==='left'\" [stickyEnd]=\"column.pinned==='right'\">\n <th mat-header-cell *matHeaderCellDef [class]=\"getColumnClassList(column)\"\n [class.mat-table-sticky-left]=\"column.pinned === 'left'\"\n [class.mat-table-sticky-right]=\"column.pinned === 'right'\"\n [style]=\"{'width': column.width, 'min-width': column.width}\">\n @if(isTemplateRef(headerTemplate()))\n {\n <ng-template [ngTemplateOutlet]=\"unknownTemplateAsTemplate(headerTemplate())\"\n [ngTemplateOutletContext]=\"{ $implicit: column, colDef: column }\">\n </ng-template>\n }\n @else if(headerTemplate() && isTemplateRef(toTemplateIndex(unknownTemplateAsTemplate(headerTemplate()),\n column.field))) {\n <ng-template [ngTemplateOutlet]=\"toTemplateIndex(unknownTemplateAsTemplate(headerTemplate()), column.field)\"\n [ngTemplateOutletContext]=\"{ $implicit: column, colDef: column }\">\n </ng-template>\n }\n @else {\n <div [mat-sort-header]=\"column.sortProperties?.id || column.field\" [disabled]=\"!column.sortable\"\n [disableClear]=\"column.sortProperties?.disableClear\">\n <span>{{column.header}}</span>\n </div>\n }\n </th>\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\n [class]=\"getColumnClassList(column)\" [class.mat-table-sticky-left]=\"column.pinned === 'left'\"\n [class.mat-table-sticky-right]=\"column.pinned === 'right'\"\n [style]=\"{'width': column.width, 'min-width': column.width}\">\n @if(isTemplateRef(cellTemplate()))\n {\n <ng-template [ngTemplateOutlet]=\"unknownTemplateAsTemplate(cellTemplate())\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: getIndex(index, dataIndex), colDef: column }\">\n </ng-template>\n }\n @else if(cellTemplate() && isTemplateRef(toTemplateIndex(unknownTemplateAsTemplate(cellTemplate()),\n column.field)))\n {\n <ng-template [ngTemplateOutlet]=\"toTemplateIndex(unknownTemplateAsTemplate(cellTemplate()), column.field)\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: getIndex(index, dataIndex), colDef: column }\">\n </ng-template>\n }\n @else if(column.cellTemplate) {\n <ng-template [ngTemplateOutlet]=\"column.cellTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: getIndex(index, dataIndex), colDef: column }\">\n </ng-template>\n }\n @else {\n <entry-cell [rowData]=\"row\" [columnDefinition]=\"column\"></entry-cell>\n }\n </td>\n </ng-container>\n }\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns(); sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; let index = index; let dataIndex = dataIndex; columns: displayedColumns();\"\n [class]=\"getRowClassList(row, getIndex(index, dataIndex))\" [attr.tabindex]=\"rowFocusVisible() ? 0 : -1\"\n (click)=\"rowClick.emit(row)\" (keydown.enter)=\"rowClick.emit(row)\">\n </tr>\n</table>\n\n<!-- No results -->\n@if(hasNoResult())\n{\n<div class=\"no-results mat-body-2\">\n @if(isTemplateRef(noResultTemplate()))\n {\n <ng-template [ngTemplateOutlet]=\"noResultTemplate()\"></ng-template>\n }\n @else {\n {{noResultText()}}\n }\n</div>\n}\n<!-- Pagination -->\n@if(isTemplateRef(paginationTemplate()))\n{\n<ng-template [ngTemplateOutlet]=\"paginationTemplate()\"></ng-template>\n}\n@else if(shouldShowPaginator()) {\n<mat-paginator class=\"pagination\" [showFirstLastButtons]=\"showFirstLastButtons()\" [length]=\"total()\"\n [pageIndex]=\"pageIndex()\" [pageSize]=\"pageSize()\" [pageSizeOptions]=\"pageSizeOptions()\"\n [hidePageSize]=\"hidePageSize()\" (page)=\"handlePage($event)\" [disabled]=\"pageDisabled()\">\n</mat-paginator>\n}","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\n\nimport { EntryCellComponent } from './components/entry-cell/entry-cell.component';\nimport { EntryCellContextMenuComponent } from './components/entry-cell-context-menu/entry-cell-context-menu.component';\nimport { EntryCellFormattedValueComponent } from './components/entry-cell-formatted-value/entry-cell-formatted-value.component';\nimport { EntryTableComponent } from './components/entry-table/entry-table.component';\nimport { DEFAULT_PERCENTAGE_MULTIPLIER } from './interfaces';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatTableModule,\n MatSortModule,\n MatPaginatorModule,\n MatCheckboxModule,\n MatIconModule,\n MatMenuModule,\n MatRadioModule,\n CommonModule,\n MatButtonModule,\n EntryTableComponent,\n EntryCellComponent,\n EntryCellContextMenuComponent,\n EntryCellFormattedValueComponent\n\n ],\n exports: [\n EntryTableComponent,\n EntryCellComponent,\n EntryCellContextMenuComponent,\n EntryCellFormattedValueComponent\n ],\n providers: [\n { provide: DEFAULT_PERCENTAGE_MULTIPLIER, useValue: 1 }\n ]\n})\nexport class EntryTableModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;MAGa,uBAAuB,CAAA;AAiBlC,IAAA,WAAA,CAAY,SAA2C,EAAE,EAAA;;QAfzD,IAAA,CAAA,aAAa,GAAG,IAAI;;QAEpB,IAAA,CAAA,oBAAoB,GAAG,KAAK;;QAE5B,IAAA,CAAA,QAAQ,GAAG,EAAE;;;QAGb,IAAA,CAAA,eAAe,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;;QAE/B,IAAA,CAAA,YAAY,GAAG,KAAK;;QAEpB,IAAA,CAAA,aAAa,GAAG,kBAAkB;;QAElC,IAAA,CAAA,eAAe,GAAG,KAAK;QAGrB,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa;QAC/D,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB;QACpF,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;QAChD,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe;QACrE,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY;QAC5D,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa;QAC/D,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe;IACvE;AACD;AAED;;;;;;;;;AASG;AACI,MAAM,yBAAyB,GAAG,oBAAoB,CAAC,IAAI,uBAAuB,EAAE;AAE3F;MACa,8BAA8B,GAAG,CAAC,MAAwC,KACrF,aAAa,CAAC,yBAAyB,EAAE,MAAM,IAAI,uBAAuB,CAAC,MAAM,CAAC;AAEpF;MACa,6BAA6B,GAA2B,IAAI,cAAc,CAAS,EAAE;;AC7C3F,MAAM,eAAe,GAAG;AACxB,MAAM,iBAAiB,GAAG;MAEpB,UAAU,CAAA;AAAvB,IAAA,WAAA,GAAA;QACE,IAAA,CAAA,UAAU,GAAG,iBAAiB;QAC9B,IAAA,CAAA,QAAQ,GAAG,eAAe;AAIjB,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,IAAe,KAAU;AAC9C,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;gBACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC;AAC5D,gBAAA,IAAI,CAAC,UAAU,GAAG,iBAAiB;YACrC;AACF,QAAA,CAAC;AAEQ,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,IAAe,KAAU;YAC9C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC;AACpC,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAC/B,QAAA,CAAC;AAEQ,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,WAAmB,KAAU;YACzD,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,GAAG,iBAAiB;YACnG,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ;AACzF,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC;AAC3E,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC;AAClG,QAAA,CAAC;QAEQ,IAAA,CAAA,mBAAmB,GAAG,MAAa;YAC1C,OAAO;gBACL,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,aAAa,EAAE,IAAI,CAAC;aACrB;AACH,QAAA,CAAC;AAEQ,QAAA,IAAA,CAAA,kBAAkB,GAAG,CAAI,KAAQ,KAAoB,KAAK,GAAG,KAAK,GAAG,SAAS;IACzF;AAAC;;MC/BY,gCAAgC,CAAA;AAN7C,IAAA,WAAA,GAAA;QAOW,IAAA,CAAA,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAsB;QACnC,IAAA,CAAA,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAsB;QAClC,IAAA,CAAA,aAAa,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA6D;AAE3E,QAAA,IAAA,CAAA,2BAA2B,GAAW,MAAM,CAAC,6BAA6B,CAAC;AAC5F,IAAA;8GANY,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhC,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX7C,qxBAuBC,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDjBW,QAAQ,wCAAE,WAAW,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,WAAW,EAAA,IAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAK/C,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAN5C,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,EAAA,QAAA,EACjD,4BAA4B,EAAA,eAAA,EAErB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qxBAAA,EAAA;;;MECpC,kBAAkB,CAAA;AAN/B,IAAA,WAAA,GAAA;AAOW,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAAK;AAC7B,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,QAAQ,sFAAoB;QACrD,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAClF,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAY,IAAI,EAAE,qFAAC;AAEnD,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,OAAU,EAAE,gBAAkC,KAAI;YACnF,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAC5E,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,IAAK,IAA0B,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;AACtF,QAAA,CAAC;AACF,IAAA;8GAVY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV/B,sLACoF,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDItE,gCAAgC,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKjC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACG,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,gCAAgC,CAAC,EAAA,QAAA,EACjC,YAAY,EAAA,eAAA,EAEL,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,sLAAA,EAAA;;;MEKtC,6BAA6B,CAAA;AAN1C,IAAA,WAAA,GAAA;AAOW,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAqB;QAC3C,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA2B;QACnD,IAAA,CAAA,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;AAC1B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,WAAW,kFAAC;AACxC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAU,KAAK,gFAAC;QACjC,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAU;AAC3B,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE;cAC1D,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO;cAC3C,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AACf,QAAA,IAAA,CAAA,IAAI,GAAG,SAAS,CAAe,MAAM,2EAAC;AACtC,QAAA,IAAA,CAAA,OAAO,GAAG,SAAS,CAAgC,SAAS,8EAAC;AACvE,IAAA;8GAZY,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb1C,8mCA6BW,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhBE,6BAA6B,wKAJ9B,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAI5C,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;+BACE,yBAAyB,EAAA,OAAA,EAC1B,CAAC,aAAa,EAAE,eAAe,EAAE,aAAa,EAAA,6BAAA,CAAgC,EAAA,eAAA,EAEtE,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8mCAAA,EAAA;AAYP,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,MAAM,iEACc,SAAS,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AExBvE;MA2Ba,mBAAmB,CAAA;AAqF9B,IAAA,WAAA,GAAA;AApFiB,QAAA,IAAA,CAAA,aAAa,GAA4B,MAAM,CAAC,yBAAyB,CAAC;AAC1E,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,EAAC,UAAuB,EAAC;AAC7D,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,kBAAkB,CAAI,EAAE,CAAC;QACjC,IAAA,CAAA,eAAe,GAAG,kBAAkB;QACpC,IAAA,CAAA,iBAAiB,GAAG,qBAAqB;AAEzC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,EAAE,8EAAC;AACvC,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAW,MAAK;AAClD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI;iBACpD,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC;AAE1B,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;AAClE,gBAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;YACtC;AAEA,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;AACtE,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;YACrC;AAEA,YAAA,OAAO,MAAM;AACf,QAAA,CAAC,uFAAC;;AAGO,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAwC,EAAE,2EAAC;AAC/C,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAc,EAAE,gFAAE;QAC3C,IAAA,CAAA,KAAK,GAAG,YAAY,CAAS,MAAM,CAAC,4EAAC;AACrC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAU,KAAK,8EAAC;;QAG/B,IAAA,CAAA,aAAa,GAAG,KAAK,CAAU,IAAI,CAAC,aAAa,CAAC,aAAa,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;QAChE,IAAA,CAAA,YAAY,GAAG,KAAK,CAAU,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AACtE,QAAA,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAU,KAAK,2FAAC;QAC5C,IAAA,CAAA,SAAS,GAAG,YAAY,CAAS,MAAM,CAAC,gFAAC;QACzC,IAAA,CAAA,QAAQ,GAAG,YAAY,CAAS,MAAM,CAAC,+EAAC;QACxC,IAAA,CAAA,eAAe,GAAG,KAAK,CAAW,IAAI,CAAC,aAAa,CAAC,eAAe,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;QACrE,IAAA,CAAA,YAAY,GAAG,KAAK,CAAU,IAAI,CAAC,aAAa,CAAC,YAAY,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;QAC9D,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAwB;AAClD,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;YAC3C,OAAO,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM;AACxD,QAAA,CAAC,0FAAC;QAEO,IAAA,CAAA,UAAU,GAAG,MAAM,EAAa;;QAGhC,IAAA,CAAA,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;QAC5B,IAAA,CAAA,aAAa,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAiB;AACtC,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAU,KAAK,uFAAC;AACxC,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAU,KAAK,mFAAC;AACpC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAiB,KAAK,gFAAC;QACxC,IAAA,CAAA,UAAU,GAAG,MAAM,EAAQ;;AAG3B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;AAChC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAU,KAAK,iFAAC;QAClC,IAAA,CAAA,eAAe,GAAG,KAAK,CAAU,IAAI,CAAC,aAAa,CAAC,eAAe,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;QACpE,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAK;;AAGtB,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAU,IAAI,sFAAC;QACtC,IAAA,CAAA,YAAY,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE;YAC7D,IAAI,cAAc,CAAI,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,cAAc,CAAI,IAAI,EAAE,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE7F,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAM,EAAE,kFAAC;AAC5B,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAU,KAAK,oFAAC;AACrC,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAU,IAAI,4FAAC;AAC5C,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAwB,EAAE,4FAAC;QACxD,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAqB;;AAG9C,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAU,KAAK,sFAAC;AACvC,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAoB,EAAE,uFAAC;AAC/C,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAA8B,IAAI,0FAAC;QAC9D,IAAA,CAAA,uBAAuB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,yBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA2B;QAC1D,IAAA,CAAA,uBAAuB,GAAG,MAAM,EAAkC;;QAGlE,IAAA,CAAA,YAAY,GAAG,KAAK,CAAS,IAAI,CAAC,aAAa,CAAC,aAAa,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAC9D,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAA8B,IAAI,uFAAC;QAC3D,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kFAAC;QAEzE,IAAA,CAAA,cAAc,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA8E;AACpG,QAAA,IAAA,CAAA,yBAAyB,GAAG,CAAC,QAAiB,KAAK,QAAgC;QACnF,IAAA,CAAA,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA8E;AA2BlG,QAAA,IAAA,CAAA,eAAe,GAAG,CAAC,QAAoF,EAAE,GAAW,KAC1H,QAA4D,CAAC,GAAG,CAAC;QAEjD,IAAA,CAAA,aAAa,GAAG,CAAC,KAAc,KAAK,KAAK,YAAY,WAAW;AAE1E,QAAA,IAAA,CAAA,eAAe,GAAG,CAAC,OAAU,EAAE,KAAa,KAAI;AACvD,YAAA,MAAM,SAAS,GAAG;gBAChB,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;;gBAEjD,aAAa,EAAE,KAAK,GAAG;aACG;AAE5B,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,EAAE;YAE7C,IAAI,YAAY,EAAE;gBAChB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;oBACtC,SAAS,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AAC7C,gBAAA,CAAC,CAAC;YACJ;AAEA,YAAA,OAAO,SAAS;AAClB,QAAA,CAAC;AAEQ,QAAA,IAAA,CAAA,kBAAkB,GAAG,CAAC,gBAAkC,KAAY;AAC3E,YAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,IAAI,EAAE;AAClD,YAAA,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,IAAI,EAAE;AAC9C,YAAA,MAAM,WAAW,GAAG,CAAA,KAAA,EAAQ,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA,CAAE;AAE7E,YAAA,OAAO,GAAG,aAAa,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA,EAAI,WAAW,EAAE;AACxD,QAAA,CAAC;QAEQ,IAAA,CAAA,QAAQ,GAAG,CAAC,KAAa,EAAE,SAAiB,KAAK,OAAO,KAAK,KAAK,WAAW,GAAG,SAAS,GAAG,KAAK;QAEjG,IAAA,CAAA,eAAe,GAAG,MAAc;YACvC,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,MAAM;AACzD,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM;YACzG,OAAO,aAAa,KAAK,QAAQ;AACnC,QAAA,CAAC;QAEQ,IAAA,CAAA,uBAAuB,GAAG,MAAW;AAC5C,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AAC1B,gBAAA,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE;YAC7B;iBAAO;gBACL,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAG;AACjC,oBAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,QAAQ,GAAG,GAAG,CAAC,EAAE;wBACjD,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;oBACjC;AACF,gBAAA,CAAC,CAAC;YACJ;YACA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5C,QAAA,CAAC;AAEQ,QAAA,IAAA,CAAA,kBAAkB,GAAG,CAAC,GAAM,KAAI;YACvC,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;YAC/B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC5C,QAAA,CAAC;AAEQ,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,KAAgB,KAAI;AACzC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,QAAA,CAAC;QAEQ,IAAA,CAAA,WAAW,GAAG,MAAW;YAChC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC;AAC7C,QAAA,CAAC;AAEQ,QAAA,IAAA,CAAA,kBAAkB,GAAG,CAAC,KAAa,KAAa,KAAK,EAAE,OAAO,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE;QAzFnH,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACf,gBAAA,IAAI,QAAa;gBACjB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;AAC9B,oBAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAS;gBAC/B;qBAAO;AACL,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAkB;oBACxC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;oBACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;oBAClF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;oBAC5E,QAAQ,GAAI,IAAI,CAAC,IAAI,EAAmB,EAAE,KAAK,IAAI,EAAE;gBACvD;AAEA,gBAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,oBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;gBAC9B;gBAEA,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAC,QAAQ,CAAC;AAClD,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAC3B,IAAI,CAAC,WAAW,EAAE;YACpB;AACF,QAAA,CAAC,CAAC;IACJ;8GA5GW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BhC,swNAoJC,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED7HW,cAAc,0hCAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,gGAAE,6BAA6B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAItI,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;+BACE,aAAa,EAAA,IAAA,EACjB,EAAE,KAAK,EAAE,aAAa,EAAE,EAAA,OAAA,EACrB,CAAC,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,6BAA6B,CAAC,EAAA,eAAA,EAEjI,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,swNAAA,EAAA;;;MEsBpC,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YA3BzB,YAAY;YACZ,WAAW;YACX,cAAc;YACd,aAAa;YACb,kBAAkB;YAClB,iBAAiB;YACjB,aAAa;YACb,aAAa;YACb,cAAc;YACd,YAAY;YACZ,eAAe;YACf,mBAAmB;YACnB,kBAAkB;YAClB,6BAA6B;AAC7B,YAAA,gCAAgC,aAIhC,mBAAmB;YACnB,kBAAkB;YAClB,6BAA6B;YAC7B,gCAAgC,CAAA,EAAA,CAAA,CAAA;AAMvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,SAAA,EAJhB;AACT,YAAA,EAAE,OAAO,EAAE,6BAA6B,EAAE,QAAQ,EAAE,CAAC;AACtD,SAAA,EAAA,OAAA,EAAA,CAzBC,YAAY;YACZ,WAAW;YACX,cAAc;YACd,aAAa;YACb,kBAAkB;YAClB,iBAAiB;YACjB,aAAa;YACb,aAAa;YACb,cAAc;YACd,YAAY;YACZ,eAAe;YACf,mBAAmB;YAEnB,6BAA6B,CAAA,EAAA,CAAA,CAAA;;2FAcpB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBA7B5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,cAAc;wBACd,aAAa;wBACb,kBAAkB;wBAClB,iBAAiB;wBACjB,aAAa;wBACb,aAAa;wBACb,cAAc;wBACd,YAAY;wBACZ,eAAe;wBACf,mBAAmB;wBACnB,kBAAkB;wBAClB,6BAA6B;wBAC7B;AAED,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,mBAAmB;wBACnB,kBAAkB;wBAClB,6BAA6B;wBAC7B;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,6BAA6B,EAAE,QAAQ,EAAE,CAAC;AACtD;AACF,iBAAA;;;AC9CD;;AAEG;;;;"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Input, Component, inject, ElementRef, Directive, NgModule } from '@angular/core';
|
|
3
|
-
import * as i1 from '@angular/
|
|
4
|
-
import { CommonModule } from '@angular/common';
|
|
5
|
-
import * as i2 from '@angular/material/input';
|
|
3
|
+
import * as i1 from '@angular/material/input';
|
|
6
4
|
import { MatInputModule, MatError } from '@angular/material/input';
|
|
7
5
|
import { FormGroup, FormArray } from '@angular/forms';
|
|
8
6
|
import { createInjectionToken, provideConfig } from '@enigmatry/entry-components/common';
|
|
7
|
+
import { CommonModule } from '@angular/common';
|
|
9
8
|
|
|
10
9
|
/**
|
|
11
10
|
* A component used to display generic (form level) server side validation messages.
|
|
@@ -18,25 +17,33 @@ import { createInjectionToken, provideConfig } from '@enigmatry/entry-components
|
|
|
18
17
|
* ```
|
|
19
18
|
*/
|
|
20
19
|
class EntryFormErrorsComponent {
|
|
21
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
22
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
23
|
-
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: EntryFormErrorsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: EntryFormErrorsComponent, isStandalone: false, selector: "entry-form-errors", inputs: { form: "form" }, ngImport: i0, template: `
|
|
22
|
+
@if (form.errors) {
|
|
23
|
+
<div>
|
|
24
|
+
@for (error of form.errors['general']; track error) {
|
|
25
|
+
<mat-error>
|
|
26
|
+
<span class="mat-body-2">{{error}}</span>
|
|
27
|
+
</mat-error>
|
|
28
|
+
}
|
|
29
|
+
</div>
|
|
30
|
+
}
|
|
31
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }] }); }
|
|
29
32
|
}
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: EntryFormErrorsComponent, decorators: [{
|
|
31
34
|
type: Component,
|
|
32
35
|
args: [{
|
|
33
36
|
selector: 'entry-form-errors',
|
|
34
37
|
template: `
|
|
35
|
-
|
|
36
|
-
<
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
@if (form.errors) {
|
|
39
|
+
<div>
|
|
40
|
+
@for (error of form.errors['general']; track error) {
|
|
41
|
+
<mat-error>
|
|
42
|
+
<span class="mat-body-2">{{error}}</span>
|
|
43
|
+
</mat-error>
|
|
44
|
+
}
|
|
45
|
+
</div>
|
|
46
|
+
}
|
|
40
47
|
`,
|
|
41
48
|
standalone: false
|
|
42
49
|
}]
|
|
@@ -158,10 +165,10 @@ class EntryDisplayControlValidationDirective {
|
|
|
158
165
|
const serverErrorsString = serverErrors instanceof Array ? serverErrors.join(', ') : '';
|
|
159
166
|
return [errorsString, serverErrorsString].filter(x => x !== '').join(', ');
|
|
160
167
|
}
|
|
161
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
162
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
168
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: EntryDisplayControlValidationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
169
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.8", type: EntryDisplayControlValidationDirective, isStandalone: false, selector: "[entryDisplayControlValidation]", inputs: { control: "control" }, ngImport: i0 }); }
|
|
163
170
|
}
|
|
164
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
171
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: EntryDisplayControlValidationDirective, decorators: [{
|
|
165
172
|
type: Directive,
|
|
166
173
|
args: [{
|
|
167
174
|
selector: '[entryDisplayControlValidation]',
|
|
@@ -172,16 +179,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
172
179
|
}] } });
|
|
173
180
|
|
|
174
181
|
class EntryValidationModule {
|
|
175
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
176
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
182
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: EntryValidationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
183
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.8", ngImport: i0, type: EntryValidationModule, declarations: [EntryFormErrorsComponent,
|
|
177
184
|
EntryDisplayControlValidationDirective], imports: [CommonModule,
|
|
178
185
|
MatInputModule,
|
|
179
186
|
MatError], exports: [EntryFormErrorsComponent,
|
|
180
187
|
EntryDisplayControlValidationDirective] }); }
|
|
181
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
188
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: EntryValidationModule, imports: [CommonModule,
|
|
182
189
|
MatInputModule] }); }
|
|
183
190
|
}
|
|
184
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
191
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: EntryValidationModule, decorators: [{
|
|
185
192
|
type: NgModule,
|
|
186
193
|
args: [{
|
|
187
194
|
declarations: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enigmatry-entry-components-validation.mjs","sources":["../../../../libs/entry-components/validation/entry-form-errors.component.ts","../../../../libs/entry-components/validation/entry-validation.ts","../../../../libs/entry-components/validation/entry-validation-config.model.ts","../../../../libs/entry-components/validation/entry-display-control-validation.directive.ts","../../../../libs/entry-components/validation/entry-validation.module.ts","../../../../libs/entry-components/validation/enigmatry-entry-components-validation.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\n\n/**\n * A component used to display generic (form level) server side validation messages.\n * The messages are displayed as a list, each message in a new row.\n *\n * @example\n * ```html\n * <entry-form-errors [form]=\"myForm\">\n * </entry-form-errors>\n * ```\n */\n@Component({\n selector: 'entry-form-errors',\n template: `\n <div *ngIf=\"form.errors\">\n <mat-error *ngFor=\"let error of form.errors['general']\">\n <span class=\"mat-body-2\">{{error}}</span>\n </mat-error>\n </div>\n `,\n standalone: false\n})\nexport class EntryFormErrorsComponent {\n /** A form group for which the validation errors are being displayed. */\n @Input() form: UntypedFormGroup;\n}\n","import { AbstractControl, FormArray, FormGroup, UntypedFormGroup, ValidationErrors } from '@angular/forms';\nimport { IValidationProblemDetails } from './validation-problem-details.interface';\n\n/** A key used to map server side validation errors on form level */\nconst FORM_ERROR_KEY = 'general';\n/** A key used to map server side validation errors on form field level */\nconst FORM_FIELD_ERROR_KEY = 'fromServer';\n\nconst getFormControl = (formControl: AbstractControl | null | undefined, keys: string[]): AbstractControl | null | undefined => {\n if (keys.length === 0) {\n return formControl;\n }\n if (formControl instanceof FormGroup) {\n return getFormControl(formControl.controls[keys[0].charAt(0).toLowerCase() + keys[0].slice(1)], keys.slice(1));\n }\n if (formControl instanceof FormArray && +keys[0] >= 0) {\n return getFormControl(formControl.controls[+keys[0]], keys.slice(1));\n }\n return null;\n};\n\n/**\n * Applies validation errors received from server side to the form.\n * The errors are applied to multiple levels: form, form group, form array, and form field.\n *\n * @param error Server side validation errors response.\n * @param form Form to apply validation errors to.\n */\nconst setServerSideValidationErrors = (error: IValidationProblemDetails, form: UntypedFormGroup) => {\n form.setErrors(null);\n const validationErrors = error?.errors;\n const formErrors: ValidationErrors = {};\n\n if (validationErrors) {\n // eslint-disable-next-line guard-for-in\n for (const key in validationErrors) {\n const control = getFormControl(form, key.split(/[.[\\]]+/gu));\n\n if (control) {\n const fieldErrors = {} as ValidationErrors;\n fieldErrors[FORM_FIELD_ERROR_KEY] = validationErrors[key];\n control.setErrors(fieldErrors);\n control.markAsTouched();\n } else {\n formErrors[FORM_ERROR_KEY] =\n formErrors[FORM_ERROR_KEY]?.concat(validationErrors[key]) || validationErrors[key];\n }\n }\n } else {\n formErrors[FORM_ERROR_KEY] = [`An error occurred on the server.`];\n }\n\n form.setErrors(formErrors);\n};\n\nexport {\n FORM_ERROR_KEY,\n FORM_FIELD_ERROR_KEY,\n setServerSideValidationErrors\n};\n","import { Provider } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { createInjectionToken, provideConfig } from '@enigmatry/entry-components/common';\n\n/** Used to configure mapping between validation keys and messages */\nexport interface IEntryValidationMessage {\n /** Validation key (e.g. '_required_', '_minlength_', '_email_', etc.) */\n name: string;\n /**\n * Validation message. Can be static string or expression returning string\n * (when messages need to be resolved dynamically: parametrization, localization, etc.).\n */\n message: string | ((control: AbstractControl) => string);\n}\n\n/**\n * Used to provide default configurations on module level.\n */\nexport class EntryValidationConfig {\n /**\n * Validation key to message configuration on module level. Used to configure client side validation messages\n * for standard validators (_required_, _minLength_, _email_, etc.).\n *\n * **NOTE:** If using _Formly_ package to render forms, this configuration should not be used.\n * Instead, use `FormlyModule` to configure validation messages.\n *\n * @example\n * ```ts\n * new EntryValidationConfig() {\n * validationMessages: [\n * { name: 'required': message: 'This field is mandatory' },\n * { name: 'minlength', message: (control: AbstractControl) => `Minimal length is ${control.errors.minlength.requiredLength}`}\n * ]\n * }\n * ```\n */\n validationMessages: IEntryValidationMessage[];\n\n constructor(config: Partial<EntryValidationConfig> = {}) {\n this.validationMessages = config.validationMessages ?? [];\n }\n}\n\n/**\n * Entry validation injection token of EntryValidationConfig type containing validation default configurations.\n * Can be updated with custom configuration.\n *\n * Defaults:\n * - validationMessages: []\n */\nexport const ENTRY_VALIDATION_CONFIG = createInjectionToken(new EntryValidationConfig());\n\n/**\n * Can be used to provide entry validation configuration.\n */\nexport const provideEntryValidationConfig = (config: Partial<EntryValidationConfig>): Provider =>\n provideConfig(ENTRY_VALIDATION_CONFIG, () => new EntryValidationConfig(config));\n","import { Directive, ElementRef, inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { AbstractControl, FormControlStatus } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { FORM_FIELD_ERROR_KEY } from './entry-validation';\nimport { ENTRY_VALIDATION_CONFIG } from './entry-validation-config.model';\n\n/**\n * A directive that displays configured validation messages or server side validations for given form control.\n * The messages are separated with coma(,) and displayed as _innerHTML_ value of host component.\n *\n * @example\n * ```html\n * <div entryDisplayControlValidation [control]=\"myForm.controls.firstName\">\n * </div\n * ```\n */\n@Directive({\n selector: '[entryDisplayControlValidation]',\n standalone: false\n})\nexport class EntryDisplayControlValidationDirective implements OnInit, OnDestroy {\n /** Form control for which the validation messages are displayed for. */\n @Input() control: AbstractControl;\n\n private _controlSubscription: Subscription | undefined;\n\n private readonly _config = inject(ENTRY_VALIDATION_CONFIG);\n private readonly _element = inject(ElementRef);\n\n ngOnInit(): void {\n this._controlSubscription = this.control.statusChanges\n .subscribe((controlStatus: FormControlStatus) => {\n if (controlStatus === 'INVALID') {\n this._element.nativeElement.innerText = this.extractValidationMessages();\n }\n });\n }\n\n ngOnDestroy(): void {\n if (this._controlSubscription) {\n this._controlSubscription.unsubscribe();\n }\n }\n\n private extractValidationMessages(): string {\n if (!this.control.errors) {\n return '';\n }\n const errorsString = this._config.validationMessages\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n .map(validationMessage => this.control.errors![validationMessage.name]\n ? typeof validationMessage.message === 'string'\n ? validationMessage.message : validationMessage.message(this.control)\n : ''\n )\n .filter(message => message !== '')\n .join(', ');\n\n const serverErrors = this.control.errors[FORM_FIELD_ERROR_KEY];\n const serverErrorsString = serverErrors instanceof Array ? serverErrors.join(', ') : '';\n\n return [errorsString, serverErrorsString].filter(x => x !== '').join(', ');\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatError, MatInputModule } from '@angular/material/input';\nimport { EntryDisplayControlValidationDirective } from './entry-display-control-validation.directive';\nimport { EntryFormErrorsComponent } from './entry-form-errors.component';\n\n@NgModule({\n declarations: [\n EntryFormErrorsComponent,\n EntryDisplayControlValidationDirective\n ],\n imports: [\n CommonModule,\n MatInputModule,\n MatError\n ],\n exports: [\n EntryFormErrorsComponent,\n EntryDisplayControlValidationDirective\n ]\n})\nexport class EntryValidationModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"enigmatry-entry-components-validation.mjs","sources":["../../../../libs/entry-components/validation/entry-form-errors.component.ts","../../../../libs/entry-components/validation/entry-validation.ts","../../../../libs/entry-components/validation/entry-validation-config.model.ts","../../../../libs/entry-components/validation/entry-display-control-validation.directive.ts","../../../../libs/entry-components/validation/entry-validation.module.ts","../../../../libs/entry-components/validation/enigmatry-entry-components-validation.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\n\n/**\n * A component used to display generic (form level) server side validation messages.\n * The messages are displayed as a list, each message in a new row.\n *\n * @example\n * ```html\n * <entry-form-errors [form]=\"myForm\">\n * </entry-form-errors>\n * ```\n */\n@Component({\n selector: 'entry-form-errors',\n template: `\n @if (form.errors) {\n <div>\n @for (error of form.errors['general']; track error) {\n <mat-error>\n <span class=\"mat-body-2\">{{error}}</span>\n </mat-error>\n }\n </div>\n }\n `,\n standalone: false\n})\nexport class EntryFormErrorsComponent {\n /** A form group for which the validation errors are being displayed. */\n @Input() form: UntypedFormGroup;\n}\n","import { AbstractControl, FormArray, FormGroup, UntypedFormGroup, ValidationErrors } from '@angular/forms';\nimport { IValidationProblemDetails } from './validation-problem-details.interface';\n\n/** A key used to map server side validation errors on form level */\nconst FORM_ERROR_KEY = 'general';\n/** A key used to map server side validation errors on form field level */\nconst FORM_FIELD_ERROR_KEY = 'fromServer';\n\nconst getFormControl = (formControl: AbstractControl | null | undefined, keys: string[]): AbstractControl | null | undefined => {\n if (keys.length === 0) {\n return formControl;\n }\n if (formControl instanceof FormGroup) {\n return getFormControl(formControl.controls[keys[0].charAt(0).toLowerCase() + keys[0].slice(1)], keys.slice(1));\n }\n if (formControl instanceof FormArray && +keys[0] >= 0) {\n return getFormControl(formControl.controls[+keys[0]], keys.slice(1));\n }\n return null;\n};\n\n/**\n * Applies validation errors received from server side to the form.\n * The errors are applied to multiple levels: form, form group, form array, and form field.\n *\n * @param error Server side validation errors response.\n * @param form Form to apply validation errors to.\n */\nconst setServerSideValidationErrors = (error: IValidationProblemDetails, form: UntypedFormGroup) => {\n form.setErrors(null);\n const validationErrors = error?.errors;\n const formErrors: ValidationErrors = {};\n\n if (validationErrors) {\n // eslint-disable-next-line guard-for-in\n for (const key in validationErrors) {\n const control = getFormControl(form, key.split(/[.[\\]]+/gu));\n\n if (control) {\n const fieldErrors = {} as ValidationErrors;\n fieldErrors[FORM_FIELD_ERROR_KEY] = validationErrors[key];\n control.setErrors(fieldErrors);\n control.markAsTouched();\n } else {\n formErrors[FORM_ERROR_KEY] =\n formErrors[FORM_ERROR_KEY]?.concat(validationErrors[key]) || validationErrors[key];\n }\n }\n } else {\n formErrors[FORM_ERROR_KEY] = [`An error occurred on the server.`];\n }\n\n form.setErrors(formErrors);\n};\n\nexport {\n FORM_ERROR_KEY,\n FORM_FIELD_ERROR_KEY,\n setServerSideValidationErrors\n};\n","import { Provider } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { createInjectionToken, provideConfig } from '@enigmatry/entry-components/common';\n\n/** Used to configure mapping between validation keys and messages */\nexport interface IEntryValidationMessage {\n /** Validation key (e.g. '_required_', '_minlength_', '_email_', etc.) */\n name: string;\n /**\n * Validation message. Can be static string or expression returning string\n * (when messages need to be resolved dynamically: parametrization, localization, etc.).\n */\n message: string | ((control: AbstractControl) => string);\n}\n\n/**\n * Used to provide default configurations on module level.\n */\nexport class EntryValidationConfig {\n /**\n * Validation key to message configuration on module level. Used to configure client side validation messages\n * for standard validators (_required_, _minLength_, _email_, etc.).\n *\n * **NOTE:** If using _Formly_ package to render forms, this configuration should not be used.\n * Instead, use `FormlyModule` to configure validation messages.\n *\n * @example\n * ```ts\n * new EntryValidationConfig() {\n * validationMessages: [\n * { name: 'required': message: 'This field is mandatory' },\n * { name: 'minlength', message: (control: AbstractControl) => `Minimal length is ${control.errors.minlength.requiredLength}`}\n * ]\n * }\n * ```\n */\n validationMessages: IEntryValidationMessage[];\n\n constructor(config: Partial<EntryValidationConfig> = {}) {\n this.validationMessages = config.validationMessages ?? [];\n }\n}\n\n/**\n * Entry validation injection token of EntryValidationConfig type containing validation default configurations.\n * Can be updated with custom configuration.\n *\n * Defaults:\n * - validationMessages: []\n */\nexport const ENTRY_VALIDATION_CONFIG = createInjectionToken(new EntryValidationConfig());\n\n/**\n * Can be used to provide entry validation configuration.\n */\nexport const provideEntryValidationConfig = (config: Partial<EntryValidationConfig>): Provider =>\n provideConfig(ENTRY_VALIDATION_CONFIG, () => new EntryValidationConfig(config));\n","import { Directive, ElementRef, inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { AbstractControl, FormControlStatus } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { FORM_FIELD_ERROR_KEY } from './entry-validation';\nimport { ENTRY_VALIDATION_CONFIG } from './entry-validation-config.model';\n\n/**\n * A directive that displays configured validation messages or server side validations for given form control.\n * The messages are separated with coma(,) and displayed as _innerHTML_ value of host component.\n *\n * @example\n * ```html\n * <div entryDisplayControlValidation [control]=\"myForm.controls.firstName\">\n * </div\n * ```\n */\n@Directive({\n selector: '[entryDisplayControlValidation]',\n standalone: false\n})\nexport class EntryDisplayControlValidationDirective implements OnInit, OnDestroy {\n /** Form control for which the validation messages are displayed for. */\n @Input() control: AbstractControl;\n\n private _controlSubscription: Subscription | undefined;\n\n private readonly _config = inject(ENTRY_VALIDATION_CONFIG);\n private readonly _element = inject(ElementRef);\n\n ngOnInit(): void {\n this._controlSubscription = this.control.statusChanges\n .subscribe((controlStatus: FormControlStatus) => {\n if (controlStatus === 'INVALID') {\n this._element.nativeElement.innerText = this.extractValidationMessages();\n }\n });\n }\n\n ngOnDestroy(): void {\n if (this._controlSubscription) {\n this._controlSubscription.unsubscribe();\n }\n }\n\n private extractValidationMessages(): string {\n if (!this.control.errors) {\n return '';\n }\n const errorsString = this._config.validationMessages\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n .map(validationMessage => this.control.errors![validationMessage.name]\n ? typeof validationMessage.message === 'string'\n ? validationMessage.message : validationMessage.message(this.control)\n : ''\n )\n .filter(message => message !== '')\n .join(', ');\n\n const serverErrors = this.control.errors[FORM_FIELD_ERROR_KEY];\n const serverErrorsString = serverErrors instanceof Array ? serverErrors.join(', ') : '';\n\n return [errorsString, serverErrorsString].filter(x => x !== '').join(', ');\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatError, MatInputModule } from '@angular/material/input';\nimport { EntryDisplayControlValidationDirective } from './entry-display-control-validation.directive';\nimport { EntryFormErrorsComponent } from './entry-form-errors.component';\n\n@NgModule({\n declarations: [\n EntryFormErrorsComponent,\n EntryDisplayControlValidationDirective\n ],\n imports: [\n CommonModule,\n MatInputModule,\n MatError\n ],\n exports: [\n EntryFormErrorsComponent,\n EntryDisplayControlValidationDirective\n ]\n})\nexport class EntryValidationModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;AAGA;;;;;;;;;AASG;MAgBU,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAbvB;;;;;;;;;;AAUX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAfpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE;;;;;;;;;;AAUX,EAAA,CAAA;AACC,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAGE;;;AC3BH;AACA,MAAM,cAAc,GAAG;AACvB;AACA,MAAM,oBAAoB,GAAG;AAE7B,MAAM,cAAc,GAAG,CAAC,WAA+C,EAAE,IAAc,KAAwC;AAC3H,IAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACnB,QAAA,OAAO,WAAW;IACtB;AACA,IAAA,IAAI,WAAW,YAAY,SAAS,EAAE;AAClC,QAAA,OAAO,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClH;AACA,IAAA,IAAI,WAAW,YAAY,SAAS,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;QACnD,OAAO,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxE;AACA,IAAA,OAAO,IAAI;AACf,CAAC;AAED;;;;;;AAMG;AACH,MAAM,6BAA6B,GAAG,CAAC,KAAgC,EAAE,IAAsB,KAAI;AAC/F,IAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACpB,IAAA,MAAM,gBAAgB,GAAG,KAAK,EAAE,MAAM;IACtC,MAAM,UAAU,GAAqB,EAAE;IAEvC,IAAI,gBAAgB,EAAE;;AAElB,QAAA,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE;AAChC,YAAA,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAE5D,IAAI,OAAO,EAAE;gBACT,MAAM,WAAW,GAAG,EAAsB;gBAC1C,WAAW,CAAC,oBAAoB,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC;AACzD,gBAAA,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC;gBAC9B,OAAO,CAAC,aAAa,EAAE;YAC3B;iBAAO;gBACH,UAAU,CAAC,cAAc,CAAC;AACtB,oBAAA,UAAU,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,gBAAgB,CAAC,GAAG,CAAC;YAC1F;QACJ;IACJ;SAAO;AACH,QAAA,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA,gCAAA,CAAkC,CAAC;IACrE;AAEA,IAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;AAC9B;;ACtCA;;AAEG;MACU,qBAAqB,CAAA;AAoB9B,IAAA,WAAA,CAAY,SAAyC,EAAE,EAAA;QACnD,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,IAAI,EAAE;IAC7D;AACH;AAED;;;;;;AAMG;AACI,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,IAAI,qBAAqB,EAAE;AAEvF;;AAEG;MACU,4BAA4B,GAAG,CAAC,MAAsC,KAC/E,aAAa,CAAC,uBAAuB,EAAE,MAAM,IAAI,qBAAqB,CAAC,MAAM,CAAC;;AClDlF;;;;;;;;;AASG;MAKU,sCAAsC,CAAA;AAJnD,IAAA,WAAA,GAAA;AAUmB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,uBAAuB,CAAC;AACzC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;AAoC/C,IAAA;IAlCC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC;AACtC,aAAA,SAAS,CAAC,CAAC,aAAgC,KAAI;AAC9C,YAAA,IAAI,aAAa,KAAK,SAAS,EAAE;gBAC/B,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,yBAAyB,EAAE;YAC1E;AACF,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC7B,YAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE;QACzC;IACF;IAEQ,yBAAyB,GAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACxB,YAAA,OAAO,EAAE;QACX;AACA,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC;;AAE/B,aAAA,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAO,CAAC,iBAAiB,CAAC,IAAI;AACnE,cAAE,OAAO,iBAAiB,CAAC,OAAO,KAAK;AACrC,kBAAE,iBAAiB,CAAC,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO;cACpE,EAAE;aAEL,MAAM,CAAC,OAAO,IAAI,OAAO,KAAK,EAAE;aAChC,IAAI,CAAC,IAAI,CAAC;QAEb,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC;AAC9D,QAAA,MAAM,kBAAkB,GAAG,YAAY,YAAY,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;QAEvF,OAAO,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5E;8GA1CW,sCAAsC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtC,sCAAsC,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtC,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBAJlD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iCAAiC;AAC3C,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAGE;;;MCDU,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,iBAb9B,wBAAwB;AACxB,YAAA,sCAAsC,aAGtC,YAAY;YACZ,cAAc;AACd,YAAA,QAAQ,aAGR,wBAAwB;YACxB,sCAAsC,CAAA,EAAA,CAAA,CAAA;AAG7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAT9B,YAAY;YACZ,cAAc,CAAA,EAAA,CAAA,CAAA;;2FAQL,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAfjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,wBAAwB;wBACxB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,cAAc;wBACd;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,wBAAwB;wBACxB;AACD;AACF,iBAAA;;;ACpBD;;AAEG;;;;"}
|
|
@@ -37,8 +37,8 @@ class EntryComponentsModule {
|
|
|
37
37
|
providers
|
|
38
38
|
};
|
|
39
39
|
}; }
|
|
40
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
41
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
40
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: EntryComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
41
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.8", ngImport: i0, type: EntryComponentsModule, exports: [EntryButtonModule,
|
|
42
42
|
EntryCommonModule,
|
|
43
43
|
EntryDialogModule,
|
|
44
44
|
EntryFileInputModule,
|
|
@@ -47,7 +47,7 @@ class EntryComponentsModule {
|
|
|
47
47
|
EntrySearchFilterModule,
|
|
48
48
|
EntrySpinnerModule,
|
|
49
49
|
EntryTableModule] }); }
|
|
50
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
50
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: EntryComponentsModule, imports: [EntryButtonModule,
|
|
51
51
|
EntryCommonModule,
|
|
52
52
|
EntryDialogModule,
|
|
53
53
|
EntryFileInputModule,
|
|
@@ -57,7 +57,7 @@ class EntryComponentsModule {
|
|
|
57
57
|
EntrySpinnerModule,
|
|
58
58
|
EntryTableModule] }); }
|
|
59
59
|
}
|
|
60
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: EntryComponentsModule, decorators: [{
|
|
61
61
|
type: NgModule,
|
|
62
62
|
args: [{
|
|
63
63
|
declarations: [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enigmatry-entry-components.mjs","sources":["../../../../libs/entry-components/modules/entry-components.module.ts","../../../../libs/entry-components/public-api.ts","../../../../libs/entry-components/enigmatry-entry-components.ts"],"sourcesContent":["import { ModuleWithProviders, NgModule, Provider, Type } from '@angular/core';\r\nimport { EntryButtonModule } from '@enigmatry/entry-components/button';\r\nimport { EntryCommonModule, NG_EVENT_PLUGINS } from '@enigmatry/entry-components/common';\r\nimport { EntryDialogModule } from '@enigmatry/entry-components/dialog';\r\nimport { EntryFileInputModule } from '@enigmatry/entry-components/file-input';\r\nimport { EntryPermissionModule, EntryPermissionService } from '@enigmatry/entry-components/permissions';\r\nimport { EntrySearchFilterModule } from '@enigmatry/entry-components/search-filter';\r\nimport { EntrySpinnerModule } from '@enigmatry/entry-components/spinner';\r\nimport { EntryTableModule } from '@enigmatry/entry-components/table';\r\nimport { EntryValidationModule } from '@enigmatry/entry-components/validation';\r\n\r\ninterface EntryComponentsModuleOptions {\r\n permissionService?: Type<any>;\r\n}\r\n\r\n/**\r\n * Exports all entry components.\r\n *\r\n * Usage\r\n * import EntryComponentsModule in shared.module.ts to have access to all components, directives, pipes.\r\n * import EntryComponentsModule.forRoot() in app.module.ts to register root module providers.\r\n */\r\n@NgModule({\r\n declarations: [],\r\n exports: [\r\n EntryButtonModule,\r\n EntryCommonModule,\r\n EntryDialogModule,\r\n EntryFileInputModule,\r\n EntryValidationModule,\r\n EntryPermissionModule,\r\n EntrySearchFilterModule,\r\n EntrySpinnerModule,\r\n EntryTableModule\r\n ]\r\n})\r\nexport class EntryComponentsModule {\r\n static forRoot = (options: EntryComponentsModuleOptions = {}): ModuleWithProviders<EntryComponentsModule> => {\n const permissionServiceProvider: Provider[] = options.permissionService\r\n ? [{ provide: EntryPermissionService, useClass: options.permissionService }]\r\n : [];\r\n\r\n const providers: Provider[] = [...permissionServiceProvider, ...NG_EVENT_PLUGINS];\r\n return {\r\n ngModule: EntryComponentsModule,\r\n providers\r\n };\r\n };\r\n}\r\n","\n/*\n * Public API Surface of entry-components\n */\nexport * from '@enigmatry/entry-components/button';\nexport * from '@enigmatry/entry-components/common';\nexport * from '@enigmatry/entry-components/dialog';\nexport * from '@enigmatry/entry-components/file-input';\nexport * from '@enigmatry/entry-components/permissions';\nexport * from '@enigmatry/entry-components/search-filter';\nexport * from '@enigmatry/entry-components/spinner';\nexport * from '@enigmatry/entry-components/validation';\nexport * from '@enigmatry/entry-components/table';\n\nexport { EntryComponentsModule } from './modules/entry-components.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAeA;;;;;;AAMG;MAeU,qBAAqB,CAAA;AACzB,IAAA,SAAA,IAAA,CAAA,OAAO,GAAG,CAAC,OAAA,GAAwC,EAAE,KAAgD;AAC1G,QAAA,MAAM,yBAAyB,GAAe,OAAO,CAAC;AACpD,cAAE,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,OAAO,CAAC,iBAAiB,EAAE;cACzE,EAAE;QAEN,MAAM,SAAS,GAAe,CAAC,GAAG,yBAAyB,EAAE,GAAG,gBAAgB,CAAC;QACjF,OAAO;AACL,YAAA,QAAQ,EAAE,qBAAqB;YAC/B;SACD;AACH,IAAA,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"enigmatry-entry-components.mjs","sources":["../../../../libs/entry-components/modules/entry-components.module.ts","../../../../libs/entry-components/public-api.ts","../../../../libs/entry-components/enigmatry-entry-components.ts"],"sourcesContent":["import { ModuleWithProviders, NgModule, Provider, Type } from '@angular/core';\r\nimport { EntryButtonModule } from '@enigmatry/entry-components/button';\r\nimport { EntryCommonModule, NG_EVENT_PLUGINS } from '@enigmatry/entry-components/common';\r\nimport { EntryDialogModule } from '@enigmatry/entry-components/dialog';\r\nimport { EntryFileInputModule } from '@enigmatry/entry-components/file-input';\r\nimport { EntryPermissionModule, EntryPermissionService } from '@enigmatry/entry-components/permissions';\r\nimport { EntrySearchFilterModule } from '@enigmatry/entry-components/search-filter';\r\nimport { EntrySpinnerModule } from '@enigmatry/entry-components/spinner';\r\nimport { EntryTableModule } from '@enigmatry/entry-components/table';\r\nimport { EntryValidationModule } from '@enigmatry/entry-components/validation';\r\n\r\ninterface EntryComponentsModuleOptions {\r\n permissionService?: Type<any>;\r\n}\r\n\r\n/**\r\n * Exports all entry components.\r\n *\r\n * Usage\r\n * import EntryComponentsModule in shared.module.ts to have access to all components, directives, pipes.\r\n * import EntryComponentsModule.forRoot() in app.module.ts to register root module providers.\r\n */\r\n@NgModule({\r\n declarations: [],\r\n exports: [\r\n EntryButtonModule,\r\n EntryCommonModule,\r\n EntryDialogModule,\r\n EntryFileInputModule,\r\n EntryValidationModule,\r\n EntryPermissionModule,\r\n EntrySearchFilterModule,\r\n EntrySpinnerModule,\r\n EntryTableModule\r\n ]\r\n})\r\nexport class EntryComponentsModule {\r\n static forRoot = (options: EntryComponentsModuleOptions = {}): ModuleWithProviders<EntryComponentsModule> => {\n const permissionServiceProvider: Provider[] = options.permissionService\r\n ? [{ provide: EntryPermissionService, useClass: options.permissionService }]\r\n : [];\r\n\r\n const providers: Provider[] = [...permissionServiceProvider, ...NG_EVENT_PLUGINS];\r\n return {\r\n ngModule: EntryComponentsModule,\r\n providers\r\n };\r\n };\r\n}\r\n","\n/*\n * Public API Surface of entry-components\n */\nexport * from '@enigmatry/entry-components/button';\nexport * from '@enigmatry/entry-components/common';\nexport * from '@enigmatry/entry-components/dialog';\nexport * from '@enigmatry/entry-components/file-input';\nexport * from '@enigmatry/entry-components/permissions';\nexport * from '@enigmatry/entry-components/search-filter';\nexport * from '@enigmatry/entry-components/spinner';\nexport * from '@enigmatry/entry-components/validation';\nexport * from '@enigmatry/entry-components/table';\n\nexport { EntryComponentsModule } from './modules/entry-components.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAeA;;;;;;AAMG;MAeU,qBAAqB,CAAA;AACzB,IAAA,SAAA,IAAA,CAAA,OAAO,GAAG,CAAC,OAAA,GAAwC,EAAE,KAAgD;AAC1G,QAAA,MAAM,yBAAyB,GAAe,OAAO,CAAC;AACpD,cAAE,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,OAAO,CAAC,iBAAiB,EAAE;cACzE,EAAE;QAEN,MAAM,SAAS,GAAe,CAAC,GAAG,yBAAyB,EAAE,GAAG,gBAAgB,CAAC;QACjF,OAAO;AACL,YAAA,QAAQ,EAAE,qBAAqB;YAC/B;SACD;AACH,IAAA,CAAC,CAAC;8GAXS,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAX9B,iBAAiB;YACjB,iBAAiB;YACjB,iBAAiB;YACjB,oBAAoB;YACpB,qBAAqB;YACrB,qBAAqB;YACrB,uBAAuB;YACvB,kBAAkB;YAClB,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAGP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAX9B,iBAAiB;YACjB,iBAAiB;YACjB,iBAAiB;YACjB,oBAAoB;YACpB,qBAAqB;YACrB,qBAAqB;YACrB,uBAAuB;YACvB,kBAAkB;YAClB,gBAAgB,CAAA,EAAA,CAAA,CAAA;;2FAGP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAdjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;wBACP,iBAAiB;wBACjB,iBAAiB;wBACjB,iBAAiB;wBACjB,oBAAoB;wBACpB,qBAAqB;wBACrB,qBAAqB;wBACrB,uBAAuB;wBACvB,kBAAkB;wBAClB;AACD;AACF,iBAAA;;;AClCD;;AAEG;;ACHH;;AAEG;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@enigmatry/entry-components",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "21.1.1",
|
|
4
4
|
"author": "Enigmatry",
|
|
5
5
|
"description": "Enigmatry entry angular material components",
|
|
6
6
|
"homepage": "https://github.com/enigmatry/entry-angular-building-blocks/tree/master/libs/entry-components#readme",
|
|
@@ -10,73 +10,74 @@
|
|
|
10
10
|
},
|
|
11
11
|
"license": "Apache-2.0",
|
|
12
12
|
"peerDependencies": {
|
|
13
|
-
"@angular/animations": "^
|
|
14
|
-
"@angular/cdk": "^
|
|
15
|
-
"@angular/common": "^
|
|
16
|
-
"@angular/core": "^
|
|
17
|
-
"@angular/material": "^
|
|
18
|
-
"@angular/forms": "^
|
|
19
|
-
"@angular/platform-browser": "^
|
|
20
|
-
"@angular/router": "^
|
|
21
|
-
"rxjs": "7.8.
|
|
13
|
+
"@angular/animations": "^21.2.0",
|
|
14
|
+
"@angular/cdk": "^21.2.0",
|
|
15
|
+
"@angular/common": "^21.2.0",
|
|
16
|
+
"@angular/core": "^21.2.0",
|
|
17
|
+
"@angular/material": "^21.2.0",
|
|
18
|
+
"@angular/forms": "^21.2.0",
|
|
19
|
+
"@angular/platform-browser": "^21.2.0",
|
|
20
|
+
"@angular/router": "^21.2.0",
|
|
21
|
+
"rxjs": "7.8.2"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"lodash-es": "^4.17.
|
|
24
|
+
"lodash-es": "^4.17.23",
|
|
25
25
|
"tslib": "^2.8.1"
|
|
26
26
|
},
|
|
27
27
|
"publishConfig": {
|
|
28
28
|
"access": "public"
|
|
29
29
|
},
|
|
30
30
|
"module": "fesm2022/enigmatry-entry-components.mjs",
|
|
31
|
-
"typings": "
|
|
31
|
+
"typings": "types/enigmatry-entry-components.d.ts",
|
|
32
32
|
"exports": {
|
|
33
33
|
"./package.json": {
|
|
34
34
|
"default": "./package.json"
|
|
35
35
|
},
|
|
36
36
|
".": {
|
|
37
|
-
"types": "./
|
|
37
|
+
"types": "./types/enigmatry-entry-components.d.ts",
|
|
38
38
|
"default": "./fesm2022/enigmatry-entry-components.mjs"
|
|
39
39
|
},
|
|
40
40
|
"./button": {
|
|
41
|
-
"types": "./button
|
|
41
|
+
"types": "./types/enigmatry-entry-components-button.d.ts",
|
|
42
42
|
"default": "./fesm2022/enigmatry-entry-components-button.mjs"
|
|
43
43
|
},
|
|
44
44
|
"./common": {
|
|
45
|
-
"types": "./common
|
|
45
|
+
"types": "./types/enigmatry-entry-components-common.d.ts",
|
|
46
46
|
"default": "./fesm2022/enigmatry-entry-components-common.mjs"
|
|
47
47
|
},
|
|
48
48
|
"./date-time-picker": {
|
|
49
|
-
"types": "./date-time-picker
|
|
49
|
+
"types": "./types/enigmatry-entry-components-date-time-picker.d.ts",
|
|
50
50
|
"default": "./fesm2022/enigmatry-entry-components-date-time-picker.mjs"
|
|
51
51
|
},
|
|
52
52
|
"./dialog": {
|
|
53
|
-
"types": "./dialog
|
|
53
|
+
"types": "./types/enigmatry-entry-components-dialog.d.ts",
|
|
54
54
|
"default": "./fesm2022/enigmatry-entry-components-dialog.mjs"
|
|
55
55
|
},
|
|
56
56
|
"./file-input": {
|
|
57
|
-
"types": "./file-input
|
|
57
|
+
"types": "./types/enigmatry-entry-components-file-input.d.ts",
|
|
58
58
|
"default": "./fesm2022/enigmatry-entry-components-file-input.mjs"
|
|
59
59
|
},
|
|
60
60
|
"./permissions": {
|
|
61
|
-
"types": "./permissions
|
|
61
|
+
"types": "./types/enigmatry-entry-components-permissions.d.ts",
|
|
62
62
|
"default": "./fesm2022/enigmatry-entry-components-permissions.mjs"
|
|
63
63
|
},
|
|
64
64
|
"./search-filter": {
|
|
65
|
-
"types": "./search-filter
|
|
65
|
+
"types": "./types/enigmatry-entry-components-search-filter.d.ts",
|
|
66
66
|
"default": "./fesm2022/enigmatry-entry-components-search-filter.mjs"
|
|
67
67
|
},
|
|
68
68
|
"./spinner": {
|
|
69
|
-
"types": "./spinner
|
|
69
|
+
"types": "./types/enigmatry-entry-components-spinner.d.ts",
|
|
70
70
|
"default": "./fesm2022/enigmatry-entry-components-spinner.mjs"
|
|
71
71
|
},
|
|
72
72
|
"./table": {
|
|
73
|
-
"types": "./table
|
|
73
|
+
"types": "./types/enigmatry-entry-components-table.d.ts",
|
|
74
74
|
"default": "./fesm2022/enigmatry-entry-components-table.mjs"
|
|
75
75
|
},
|
|
76
76
|
"./validation": {
|
|
77
|
-
"types": "./validation
|
|
77
|
+
"types": "./types/enigmatry-entry-components-validation.d.ts",
|
|
78
78
|
"default": "./fesm2022/enigmatry-entry-components-validation.mjs"
|
|
79
79
|
}
|
|
80
80
|
},
|
|
81
|
-
"sideEffects": false
|
|
81
|
+
"sideEffects": false,
|
|
82
|
+
"type": "module"
|
|
82
83
|
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
@return null;
|
|
8
8
|
}
|
|
9
9
|
$current-lightness: color.lightness($color);
|
|
10
|
-
$adjustment: if($current-lightness > 50
|
|
10
|
+
$adjustment: if(sass($current-lightness > 50%): - $percentage; else: $percentage);
|
|
11
11
|
|
|
12
12
|
@return color.adjust($color, $lightness: $adjustment);
|
|
13
13
|
}
|