cmat 0.0.68 → 0.0.70

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.
@@ -289,14 +289,15 @@ class CmatSelectTableComponent {
289
289
  }
290
290
  if (!opened) {
291
291
  if (this.multiple) {
292
- this.value = this.completeRowList;
293
- if (this.completeRowList.length === 0) {
294
- this._checkAndResetSelection();
295
- }
292
+ this.value = this.completeRowList.length > 0 ? [...this.completeRowList] : null;
296
293
  }
297
294
  else {
298
- if (this.completeRowList.length > 0)
299
- this.value = this.completeRowList[0];
295
+ this.value = this.completeRowList.length > 0 ? { ...this.completeRowList[0] } : null;
296
+ }
297
+ if (this.value === null) {
298
+ this.completeRowList.splice(0);
299
+ this._completeValueList.splice(0);
300
+ this._checkAndResetSelection();
300
301
  }
301
302
  this._matSelect.writeValue(this.value);
302
303
  this._matSelect._onChange(this.value);
@@ -1 +1 @@
1
- {"version":3,"file":"cmat-components-select-table.mjs","sources":["../../../projects/cmat/components/select-table/select-table.component.ts","../../../projects/cmat/components/select-table/select-table.component.html","../../../projects/cmat/components/select-table/cmat-components-select-table.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/member-ordering */\r\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostBinding, HostListener, Input, OnChanges, OnDestroy, Output, QueryList, SimpleChanges, ViewChild, ViewChildren, ViewEncapsulation, inject } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, FormGroup, NgControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatOption, MatSelect, MatSelectModule } from '@angular/material/select';\r\nimport { MatSort, MatSortModule, Sort, SortDirection } from '@angular/material/sort';\r\nimport { MatTable, MatTableModule } from '@angular/material/table';\r\nimport { isArray, isNil, isNumber, isString, isUndefined } from 'lodash-es';\r\nimport { debounceTime, merge, Subject, takeUntil } from 'rxjs';\r\nimport { CmatSelectSearchComponent } from 'cmat/components/select-search';\r\nimport { CmatDigitOnlyDirective } from 'cmat/directives/digit-only';\r\nimport { CmatSelectTableColumn, CmatSelectTableDataSource, CmatSelectTableFilter, CmatSelectTableRow } from './select-table.type';\r\n\r\nconst MAX_SAFE_INTEGER = 9007199254740991;\r\nlet NEXT_ID = 0;\r\n\r\n@Component({\r\n selector: 'cmat-select-table',\r\n templateUrl: './select-table.component.html',\r\n styleUrls: ['./select-table.component.scss'],\r\n exportAs: 'cmatSelectTable',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: MatFormFieldControl, useExisting: CmatSelectTableComponent }],\r\n imports: [CmatSelectSearchComponent, MatFormFieldModule, MatSelectModule, ReactiveFormsModule, CommonModule,\r\n MatIconModule, MatTableModule, MatInputModule, MatSortModule, CmatDigitOnlyDirective\r\n ]\r\n})\r\nexport class CmatSelectTableComponent implements MatFormFieldControl<any>, ControlValueAccessor, AfterViewInit, OnDestroy, OnChanges {\r\n @HostBinding('attr.id')\r\n @Input()\r\n public id = `cmat-select-table-${NEXT_ID++}`;\r\n\r\n @Input() dataSource: CmatSelectTableDataSource<CmatSelectTableRow>;\r\n\r\n @Input() noEntriesFoundLabel = '无结果';\r\n\r\n @Input() showNoFoundLabel = true;\r\n\r\n @Input() isPhone = false;\r\n\r\n @Input() multiple: boolean = false;\r\n\r\n @Input() overallSearchEnabled: boolean = true;\r\n\r\n @Input() overallSearchVisible: boolean;\r\n\r\n @Input() resetSortOnOpen: boolean;\r\n\r\n @Input() resetFiltersOnOpen: boolean;\r\n\r\n @Input() customTriggerLabelFn: (value: CmatSelectTableRow[]) => string;\r\n\r\n @Input() triggerLabelSort: Sort;\r\n\r\n @Input() customTriggerLabelTemplate: string;\r\n\r\n @Input() canNull: boolean;\r\n\r\n @Input() defaultSort: Sort;\r\n\r\n @Input() resetOptionAction: () => void;\r\n\r\n @Input() compareWith: (o1: any, o2: any) => boolean = (o1, o2) => {\r\n return o1 && o2 ? o1?.name === o2?.name && o1?.id === o2?.id : o1 === o2;\r\n }\r\n\r\n @Output() closed = new EventEmitter<boolean>();\r\n\r\n @ViewChild(CmatSelectSearchComponent, { static: false }) private _matSelectSearch: CmatSelectSearchComponent;\r\n\r\n @ViewChild(MatSort, { static: false }) private _sort: MatSort;\r\n\r\n @ViewChild(MatTable, { static: false }) private _table: MatTable<CmatSelectTableRow>;\r\n\r\n @ViewChildren(MatOption) private _matOptions: QueryList<MatOption>;\r\n\r\n tableDataSource: CmatSelectTableRow[];\r\n\r\n tableColumns: string[];\r\n\r\n tableColumnsMap: Map<string, CmatSelectTableColumn>;\r\n\r\n filteredOutRows: Record<string, CmatSelectTableRow>;\r\n\r\n completeRowList: CmatSelectTableRow[] = [];\r\n\r\n overallSearchVisibleState: boolean;\r\n\r\n overallFilterControl: FormControl = new FormControl('');\r\n selectControl: FormControl = new FormControl();\r\n\r\n readonly stateChanges: Subject<void> = new Subject<void>();\r\n focused: boolean = false;\r\n touched: boolean = false;\r\n\r\n ngControl = inject(NgControl, { optional: true, self: true })!;\r\n private _cd = inject(ChangeDetectorRef);\r\n\r\n private _matSelect: MatSelect;\r\n private _filterControls: FormGroup;\r\n\r\n private _nullRow: CmatSelectTableRow = { id: null };\r\n\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n private _completeValueList: any[] = [];\r\n\r\n constructor() {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n this.tableColumnsMap = new Map();\r\n this._filterControls = new FormGroup({});\r\n }\r\n\r\n @ViewChild('componentSelect', { static: false }) set matSelect(m: MatSelect) {\r\n const existsSelect = !isUndefined(this._matSelect);\r\n\r\n this._matSelect = m;\r\n\r\n if (!existsSelect) {\r\n this._init(this.value);\r\n\r\n this._matSelect.setDisabledState(this.disabled);\r\n }\r\n }\r\n\r\n\r\n @HostListener('document:click')\r\n clickedOut(): void {\r\n if (!this._matSelect?.panelOpen) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n let panelClass: string = '';\r\n if (!this.overallSearchEnabled) {\r\n panelClass = 'cmat-select-search-panel overflow-hidden cmat-select-search-table-panel';\r\n }\r\n\r\n if (this._matSelect.panelClass) {\r\n if (Array.isArray(this._matSelect.panelClass)) {\r\n (this._matSelect.panelClass as string[]).push(panelClass);\r\n } else if (typeof this._matSelect.panelClass === 'string') {\r\n this._matSelect.panelClass = [this._matSelect.panelClass, panelClass];\r\n } else if (typeof this._matSelect.panelClass === 'object') {\r\n this._matSelect.panelClass.entries[panelClass] = true;\r\n }\r\n } else {\r\n this._matSelect.panelClass = panelClass;\r\n }\r\n\r\n merge(...[\r\n this._sort.sortChange,\r\n this._filterControls.valueChanges,\r\n this.overallFilterControl.valueChanges\r\n ])\r\n .pipe(takeUntil(this._unsubscribeAll), debounceTime(100))\r\n .subscribe(() => {\r\n const dataClone: CmatSelectTableRow[] = [...((this.dataSource || { data: [] }).data || [])];\r\n if (this.addNullRow()) {\r\n dataClone.unshift(this._nullRow);\r\n }\r\n\r\n if (this.overallSearchEnabled && this.overallSearchVisibleState) {\r\n this._applyOverallFilter(dataClone);\r\n } else {\r\n this._applyColumnLevelFilters(dataClone);\r\n }\r\n\r\n if (!this._sort.active && !isNil(this.defaultSort) && this.defaultSort.active) {\r\n this._sort.active = this.defaultSort.active;\r\n this._sort.direction = this.defaultSort.direction;\r\n }\r\n\r\n this.tableDataSource = !this._sort.active ?\r\n dataClone : this._sortData(dataClone, this._sort.active, this._sort.direction);\r\n\r\n this._cd.detectChanges();\r\n });\r\n\r\n this._matOptions.changes.pipe(takeUntil(this._unsubscribeAll)).subscribe(() => {\r\n const options: Record<string, MatOption> = {};\r\n\r\n this._matOptions\r\n .toArray()\r\n .filter(option => !isNil(option) && !isNil(option.value) && !option._getHostElement().classList.contains('contains-cmat-select-search'))\r\n .forEach(option => options[`${option.value.id}`] = option\r\n );\r\n if (this._matSelectSearch) {\r\n this._matSelect?.options.reset(\r\n [this._matOptions.first,\r\n ...this.tableDataSource\r\n .filter(row => !isNil(options[`${row.id}`]))\r\n .map(row => options[`${row.id}`])]\r\n );\r\n } else {\r\n this._matSelect?.options.reset(\r\n this.tableDataSource\r\n .filter(row => !isNil(options[`${row.id}`]))\r\n .map(row => options[`${row.id}`])\r\n );\r\n }\r\n\r\n\r\n try {\r\n this._matSelect?.options.notifyOnChanges();\r\n } catch {\r\n //do something\r\n }\r\n\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n @Input()\r\n get placeholder(): string {\r\n return this._placeholder;\r\n }\r\n set placeholder(value: string) {\r\n this._placeholder = value;\r\n this.stateChanges.next();\r\n }\r\n private _placeholder: string = '';\r\n\r\n @Input()\r\n get value(): any {\r\n return this._value;\r\n }\r\n set value(value: any) {\r\n if (value !== this.value) {\r\n this._value = value;\r\n\r\n this.stateChanges.next();\r\n\r\n this._onModelChange(value);\r\n }\r\n }\r\n protected _value: any;\r\n\r\n get empty(): boolean {\r\n return !this._value;\r\n }\r\n\r\n get errorState(): boolean {\r\n if (this.ngControl == null)\r\n return false;\r\n\r\n return (this.touched && this.ngControl?.invalid) ?? false;\r\n }\r\n\r\n get shouldLabelFloat(): boolean {\r\n return this.focused || !this.empty;\r\n }\r\n\r\n @Input()\r\n get required(): boolean { return this._required; }\r\n set required(value: any) {\r\n this._required = coerceBooleanProperty(value);\r\n this.stateChanges.next();\r\n }\r\n protected _required = false;\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n if (!isNil(this.ngControl?.disabled)) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n set disabled(value: BooleanInput) {\r\n this._disabled = coerceBooleanProperty(value);\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n protected _disabled = false;\r\n\r\n registerOnChange(fn: (value: any) => void): void {\r\n this._onModelChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => object): void {\r\n this._onTouchedChange = fn;\r\n this._matSelect?.registerOnTouched(fn);\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._matSelect?.setDisabledState(isDisabled);\r\n }\r\n\r\n setDescribedByIds(ids: string[]): void {\r\n this._matSelect?.setDescribedByIds(ids);\r\n }\r\n\r\n onContainerClick(): void {\r\n if (!this.focused) {\r\n this._matSelect?.focus();\r\n }\r\n }\r\n\r\n onFocusIn(): void {\r\n if (!this.focused) {\r\n this.focused = true;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onFocusOut(event: FocusEvent): void {\r\n if (!this._matSelect.panel.nativeElement.contains(event.relatedTarget as Element)) {\r\n this.touched = true;\r\n this.focused = false;\r\n\r\n this._onTouchedChange();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this._init(value);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!isNil(changes.resetFiltersOnOpen) && changes.resetFiltersOnOpen.currentValue !== false) {\r\n this._resetFilters();\r\n }\r\n\r\n if (!isNil(changes.dataSource)\r\n && !isNil(changes.dataSource.currentValue)\r\n && isArray(changes.dataSource.currentValue.data)) {\r\n this.tableDataSource = [...changes.dataSource.currentValue.data];\r\n if (this.addNullRow()) {\r\n this.tableDataSource.unshift(this._nullRow);\r\n }\r\n this.tableColumns = ['_selection', ...changes.dataSource.currentValue.columns.map((column: { key: any; }) => column.key)];\r\n this.tableColumnsMap.clear();\r\n changes.dataSource.currentValue.columns.forEach((column: CmatSelectTableColumn) => this.tableColumnsMap.set(column.key, column));\r\n\r\n if (this.tableDataSource.length > 0) {\r\n this._init(this.value);\r\n }\r\n }\r\n }\r\n\r\n emulateMatOptionClick(event: MouseEvent): void {\r\n if (!(event.target instanceof HTMLElement)) {\r\n return;\r\n }\r\n\r\n let rowElement: HTMLElement | null = event.target;\r\n while (rowElement != null && rowElement instanceof HTMLElement && rowElement.tagName.toLowerCase() !== 'tr') {\r\n rowElement = rowElement.parentElement;\r\n }\r\n if (rowElement === null) {\r\n return;\r\n }\r\n const childOption: HTMLElement | null = rowElement.querySelector('mat-option');\r\n if (!childOption) {\r\n return;\r\n }\r\n\r\n if (event.target.tagName.toLowerCase() != 'mat-pseudo-checkbox') {\r\n childOption.click();\r\n }\r\n\r\n const option: any = this._matOptions.find(i => i.id == childOption.id);\r\n\r\n if (this.multiple && this._matSelect.panelOpen) {\r\n this._updateCompleteRowList(option!.value, option!._selected);\r\n }\r\n\r\n if (!this.multiple) {\r\n this.completeRowList.splice(0);\r\n this._completeValueList.splice(0);\r\n\r\n if (option!.value) {\r\n this.completeRowList.push(option!.value);\r\n this._completeValueList.push(option!.value.id);\r\n }\r\n }\r\n }\r\n\r\n openedChange(opened: boolean): void {\r\n if (this.resetFiltersOnOpen !== false || (!this._matOptions.length && this.overallSearchEnabled) || (this.overallSearchEnabled && this._matOptions.length === 1)) {\r\n this._resetFilters();\r\n }\r\n this.overallSearchVisibleState = this.overallSearchVisible;\r\n if (this.resetSortOnOpen !== false) {\r\n this._sort.sort({ id: '', start: 'asc', disableClear: false });\r\n }\r\n if (!opened) {\r\n if (this.multiple) {\r\n this.value = this.completeRowList;\r\n if (this.completeRowList.length === 0) {\r\n this._checkAndResetSelection();\r\n }\r\n } else {\r\n if (this.completeRowList.length > 0)\r\n this.value = this.completeRowList[0];\r\n }\r\n this._matSelect.writeValue(this.value);\r\n this._matSelect._onChange(this.value);\r\n\r\n this.closed.emit(!opened);\r\n return;\r\n }\r\n\r\n (this._table as any)._headerRowDefChanged = true;\r\n\r\n setTimeout(() => {\r\n let tableAdditionalHeight = 0;\r\n this._table._getRenderedRows(this._table._headerRowOutlet)\r\n .concat(this._table._getRenderedRows(this._table._footerRowOutlet))\r\n .forEach(row => tableAdditionalHeight += row.getBoundingClientRect().height);\r\n\r\n const panelElement: HTMLDivElement = this._matSelect.panel.nativeElement;\r\n const panelHeight = panelElement.getBoundingClientRect().height;\r\n\r\n\r\n if (!isNaN(panelHeight)) {\r\n panelElement.style.maxHeight = `${panelHeight + tableAdditionalHeight}px`;\r\n }\r\n }, 1);\r\n }\r\n filterFormControl(key: string): FormControl {\r\n if (!this._filterControls.contains(key)) {\r\n this._filterControls.registerControl(key, new FormControl(''));\r\n }\r\n return this._filterControls.get(key) as FormControl;\r\n }\r\n\r\n simpleTriggerLabelFn(value: CmatSelectTableRow[]): string {\r\n if (!isNil(this.triggerLabelSort)) {\r\n this._sortData(value, this.triggerLabelSort.active, this.triggerLabelSort.direction);\r\n }\r\n return value.map((row) => {\r\n if (isNil(row)) {\r\n return '';\r\n }\r\n if (isNil(this.customTriggerLabelTemplate)\r\n || typeof this.customTriggerLabelTemplate !== 'string'\r\n || this.customTriggerLabelTemplate.trim().length === 0) {\r\n return `${row.id}`;\r\n }\r\n let atLeastPartialSubstitution = false;\r\n const substitution: string = this.customTriggerLabelTemplate.replace(/[$]{1}[{]{1}([^}]+)[}]{1}?/g, (_, key) =>\r\n !isNil((row as any)[key]) && (atLeastPartialSubstitution = true) ? (row as any)[key] : '');\r\n if (atLeastPartialSubstitution === false) {\r\n return `${row.id}`;\r\n }\r\n return substitution.trim();\r\n }).join(', ');\r\n }\r\n\r\n toggleOverallSearch(): void {\r\n this.overallSearchVisibleState = !this.overallSearchVisibleState;\r\n this._resetFilters();\r\n if (this.overallSearchVisibleState) {\r\n setTimeout(() => this._matSelectSearch.focus());\r\n }\r\n\r\n this._cd.markForCheck();\r\n }\r\n\r\n addNullRow(): boolean {\r\n return !this.multiple && this.canNull;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private _onModelChange: (value: any) => void = () => { };\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private _onTouchedChange: () => any = () => { };\r\n\r\n private _init(value: any): void {\r\n this.completeRowList.splice(0);\r\n this._completeValueList.splice(0);\r\n\r\n if (value) {\r\n if (this.multiple)\r\n value.forEach((v: any) => this._updateCompleteRowList(v, true));\r\n else {\r\n this.completeRowList.push(value);\r\n this._completeValueList.push(value.id);\r\n }\r\n }\r\n\r\n if (this._matSelect) {\r\n this.value = value;\r\n this._matSelect.writeValue(value);\r\n this._matSelect._onChange(value);\r\n\r\n } else {\r\n this.value = value;\r\n }\r\n\r\n this._cd.markForCheck();\r\n }\r\n\r\n private _updateCompleteRowList(value: any, selected: boolean): void {\r\n if (isNil(value)) {\r\n return;\r\n }\r\n if (selected) {\r\n ((this.dataSource || { data: [] }).data || [])\r\n .filter(row => !isNil(row) && !isNil(row.id) && row.id === value.id)\r\n .forEach((row) => {\r\n const i = this.completeRowList.find(i => i.id === value.id);\r\n if (!i) {\r\n this.completeRowList.push(row);\r\n this._completeValueList.push(row.id);\r\n }\r\n });\r\n } else {\r\n const rowIndex = this.completeRowList.findIndex(i => i.id === value.id);\r\n if (rowIndex > -1)\r\n this.completeRowList.splice(rowIndex, 1);\r\n\r\n const valueIndex = this._completeValueList.findIndex(i => i === value.id);\r\n if (valueIndex > -1)\r\n this._completeValueList.splice(valueIndex, 1);\r\n }\r\n }\r\n\r\n private _applyColumnLevelFilters(data: CmatSelectTableRow[]): void {\r\n this.filteredOutRows = {};\r\n const filters: Record<string, { filter: CmatSelectTableFilter | undefined, value: any }> = {};\r\n Object.keys(this._filterControls.controls)\r\n .filter(key => this.tableColumnsMap.has(key)\r\n && !isNil(this.tableColumnsMap.get(key)?.filter)\r\n && this.tableColumnsMap.get(key)?.filter.enabled !== false)\r\n .filter((key) => {\r\n const value = this._filterControls.get(key)?.value;\r\n return !isNil(value)\r\n && ((isArray(value) && value.length > 0)\r\n || (typeof value === 'string' && value.trim().length > 0)\r\n || (typeof value === 'number' && `${value}`.trim().length > 0));\r\n })\r\n .forEach(key => filters[key] = {\r\n filter: this.tableColumnsMap.get(key)?.filter,\r\n value: this._filterControls.get(key)?.value\r\n });\r\n const filterKeys: string[] = Object.keys(filters);\r\n for (let i = data.length - 1; i >= 0; i--) {\r\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\r\n for (let k = 0; k < filterKeys.length; k++) {\r\n const filterKey: string = filterKeys[k];\r\n const row: CmatSelectTableRow = data[i];\r\n if (isNil(row)) {\r\n continue;\r\n }\r\n const cellValue: any = (row as any)[filterKey];\r\n if (isNil(cellValue)) {\r\n data.splice(i, 1).forEach(item => this.filteredOutRows[`${item.id}`] = item);\r\n continue;\r\n }\r\n const filter = filters[filterKey];\r\n const comparator = filter.filter?.comparator;\r\n if (filter.filter?.type === 'number') {\r\n filter.value = Number(filter.value);\r\n }\r\n\r\n if (typeof filter.filter?.comparatorFn === 'function') {\r\n if (!filter.filter.comparatorFn.call(null, cellValue, filter.value, row)) {\r\n data.splice(i, 1).forEach(item => this.filteredOutRows[`${item.id}`] = item);\r\n break;\r\n }\r\n } else if (isNil(comparator) || comparator === 'equals') {\r\n if (filter.value !== cellValue) {\r\n data.splice(i, 1).forEach(item => this.filteredOutRows[`${item.id}`] = item);\r\n break;\r\n }\r\n } else if (typeof cellValue === 'string' && typeof filter.value === 'string') {\r\n const cellValueLC: string = `${cellValue}`.toLowerCase();\r\n const filterValueLC: string = filter.value.toLowerCase();\r\n if (isNil(comparator) || comparator === 'equalsIgnoreCase') {\r\n if (filterValueLC !== cellValueLC) {\r\n data.splice(i, 1).forEach(item => this.filteredOutRows[`${item.id}`] = item);\r\n break;\r\n }\r\n } else if (comparator === 'contains') {\r\n if (!cellValue.includes(filter.value)) {\r\n data.splice(i, 1).forEach(item => this.filteredOutRows[`${item.id}`] = item);\r\n break;\r\n }\r\n } else if (comparator === 'containsIgnoreCase') {\r\n if (!cellValueLC.includes(filterValueLC)) {\r\n data.splice(i, 1).forEach(item => this.filteredOutRows[`${item.id}`] = item);\r\n break;\r\n }\r\n } else if (comparator === 'startsWith') {\r\n if (!cellValue.startsWith(filter.value)) {\r\n data.splice(i, 1).forEach(item => this.filteredOutRows[`${item.id}`] = item);\r\n break;\r\n }\r\n } else if (comparator === 'startsWithIgnoreCase') {\r\n if (!cellValueLC.startsWith(filterValueLC)) {\r\n data.splice(i, 1).forEach(item => this.filteredOutRows[`${item.id}`] = item);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _applyOverallFilter(data: CmatSelectTableRow[]): void {\r\n this.filteredOutRows = {};\r\n if (isNil(this.overallFilterControl.value)) {\r\n return;\r\n }\r\n const filterValueLC: string = this.overallFilterControl.value.toLowerCase();\r\n if (filterValueLC.trim().length === 0) {\r\n return;\r\n }\r\n for (let i = data.length - 1; i >= 0; i--) {\r\n const row: CmatSelectTableRow = data[i];\r\n let rowShouldBeFiltered = true;\r\n for (let j = this.dataSource.columns.length - 1; j >= 0; j--) {\r\n const key: string = this.dataSource.columns[j].key;\r\n const cellValue: any = (row as any)[key];\r\n if (isNil(cellValue)) {\r\n continue;\r\n }\r\n const cellValueLC: string = `${cellValue}`.toLowerCase();\r\n if (cellValueLC.includes(filterValueLC)) {\r\n rowShouldBeFiltered = false;\r\n break;\r\n }\r\n }\r\n if (rowShouldBeFiltered) {\r\n data.splice(i, 1).forEach(item => this.filteredOutRows[`${item.id}`] = item);\r\n }\r\n }\r\n }\r\n\r\n private _resetFilters(): void {\r\n this.overallFilterControl.setValue('');\r\n Object.keys(this._filterControls.controls)\r\n .forEach(key => this._filterControls.get(key)?.setValue(''));\r\n }\r\n\r\n private _sortingDataAccessor(data: CmatSelectTableRow, active: string): string | number | Date {\r\n const value = (data as Record<string, any>)[active];\r\n\r\n if (isNumber(value)) {\r\n const numberValue = Number(value);\r\n\r\n return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n\r\n private _sortData(data: CmatSelectTableRow[], active: string, direction: SortDirection): CmatSelectTableRow[] {\r\n if (!active || direction === '') {\r\n return data;\r\n }\r\n\r\n return data.sort((a, b) => {\r\n let aValue = this._sortingDataAccessor(a, active);\r\n let bValue = this._sortingDataAccessor(b, active);\r\n\r\n if (a.id === null) {\r\n return -1;\r\n } else if (b.id === null) {\r\n return 1;\r\n }\r\n\r\n // Both null/undefined/equal value check\r\n if (aValue === bValue) {\r\n return 0;\r\n }\r\n\r\n // One null value check\r\n if (isNil(aValue) && !isNil(bValue)) {\r\n return -1;\r\n } else if (!isNil(aValue) && isNil(bValue)) {\r\n return 1;\r\n }\r\n\r\n if (aValue instanceof Date) {\r\n aValue = aValue.getTime();\r\n }\r\n if (bValue instanceof Date) {\r\n bValue = bValue.getTime();\r\n }\r\n\r\n // User localeCompare for strings\r\n if (isString(aValue) && isString(bValue)) {\r\n return (aValue).localeCompare(bValue) * (direction === 'asc' ? 1 : -1);\r\n }\r\n\r\n // Try to convert to a Number type\r\n aValue = isNaN((aValue as number)) ? `${aValue}` : +aValue;\r\n bValue = isNaN((bValue as number)) ? `${bValue}` : +bValue;\r\n\r\n // if one is number and other is String\r\n if (isString(aValue) && isNumber(bValue)) {\r\n return (1) * (direction === 'asc' ? 1 : -1);\r\n }\r\n if (isNumber(aValue) && isString(bValue)) {\r\n return (-1) * (direction === 'asc' ? 1 : -1);\r\n }\r\n\r\n return (aValue > bValue ? 1 : -1) * (direction === 'asc' ? 1 : -1);\r\n });\r\n\r\n }\r\n\r\n private _checkAndResetSelection(): void {\r\n if (this._matSelect.value && isArray(this._matSelect.value) && this._matSelect.value.length < 1\r\n && !isNil(this.resetOptionAction)) {\r\n this.resetOptionAction();\r\n }\r\n }\r\n}\r\n","@if(multiple){\r\n<mat-select #componentSelect multiple disableRipple panelClass=\"cmat-select-search-table-panel overflow-hidden\"\r\n [placeholder]=\"placeholder\" [required]=\"required\" [formControl]=\"selectControl\" [compareWith]=\"compareWith\"\r\n (focusin)=\"onFocusIn()\" (openedChange)=\"openedChange($event)\">\r\n <mat-select-trigger>\r\n @if(!customTriggerLabelFn){\r\n {{simpleTriggerLabelFn(completeRowList)}}\r\n }@else {\r\n {{customTriggerLabelFn(completeRowList)}}\r\n }\r\n </mat-select-trigger>\r\n\r\n <div class=\"h-full overflow-y-auto scrollbar-custom\" [ngClass]=\"{'hidden-header': overallSearchVisibleState}\"\r\n (focusout)=\"onFocusOut($event)\">\r\n @if(overallSearchEnabled){\r\n <mat-option [ngClass]=\"{'hidden':!overallSearchVisibleState === true}\">\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"resetFiltersOnOpen\">\r\n </cmat-select-search>\r\n </mat-option>\r\n\r\n @if(!isPhone){\r\n <div class=\"overall-search-toggle\" [ngStyle]=\"{ height: overallSearchVisibleState ? '48px' : '55.4px' }\">\r\n <mat-icon color=\"primary\"\r\n [svgIcon]=\"overallSearchVisibleState ? 'mat_outline:arrow_back' : 'mat_outline:search'\"\r\n (click)=\"toggleOverallSearch()\">\r\n </mat-icon>\r\n </div>\r\n }@else{\r\n <div class=\"overall-search-toggle\" [ngStyle]=\"{ height: overallSearchVisibleState ? '48px' : '55.4px' }\">\r\n <mat-icon color=\"primary\" [svgIcon]=\"'mat_outline:search'\">\r\n </mat-icon>\r\n </div>\r\n }\r\n }\r\n <table #table mat-table matSort [dataSource]=\"tableDataSource\">\r\n @for (columnKey of tableColumns; track $index) {\r\n @switch (columnKey) {\r\n @case ('_selection') {\r\n <ng-container [matColumnDef]=\"columnKey\">\r\n <th *matHeaderCellDef mat-header-cell [ngClass]=\"{selection: true, hidden: !multiple}\"></th>\r\n <td *matCellDef=\"let row\" mat-cell [ngClass]=\"{selection: true, hidden: !multiple}\">\r\n <mat-option [value]=\"row\"></mat-option>\r\n </td>\r\n </ng-container>\r\n }\r\n @default {\r\n <ng-container [matColumnDef]=\"columnKey\">\r\n <th *matHeaderCellDef mat-header-cell mat-sort-header\r\n [disabled]=\"!tableColumnsMap.get(columnKey)?.sortable\">\r\n @if(!tableColumnsMap.get(columnKey)?.sortable){\r\n <div>{{tableColumnsMap.get(columnKey)?.name}}</div>\r\n }@else {\r\n @switch (tableColumnsMap.get(columnKey)?.filter?.type) {\r\n @case ('string') {\r\n <ng-container [ngTemplateOutlet]=\"filterTypeString\"\r\n [ngTemplateOutletContext]=\"{column: tableColumnsMap.get(columnKey)}\"></ng-container>\r\n }\r\n @case('number'){\r\n <ng-container [ngTemplateOutlet]=\"filterTypeNumber\"\r\n [ngTemplateOutletContext]=\"{column: tableColumnsMap.get(columnKey)}\"></ng-container>\r\n }\r\n @default {\r\n <div>{{tableColumnsMap.get(columnKey)?.name}}</div>\r\n }\r\n }\r\n }\r\n </th>\r\n <td *matCellDef=\"let row\" mat-cell>\r\n <div class=\" has-label-on-mobile\" [attr.data-label]=\"tableColumnsMap.get(columnKey)?.name+':'\">\r\n {{row[columnKey]}}\r\n </div>\r\n\r\n </td>\r\n </ng-container>\r\n }\r\n }\r\n }\r\n\r\n <tr *matHeaderRowDef=\"tableColumns; sticky: true\" mat-header-row></tr>\r\n <tr *matRowDef=\"let row; columns: tableColumns;\" mat-row (click)=\"emulateMatOptionClick($event)\"></tr>\r\n </table>\r\n </div>\r\n</mat-select>\r\n}@else {\r\n<mat-select #componentSelect disableRipple panelClass=\"cmat-select-search-table-panel overflow-hidden\"\r\n [placeholder]=\"placeholder\" [required]=\"required\" [formControl]=\"selectControl\" [compareWith]=\"compareWith\"\r\n (focusin)=\"onFocusIn()\" (openedChange)=\"openedChange($event)\">\r\n <mat-select-trigger>\r\n @if(!customTriggerLabelFn){\r\n {{simpleTriggerLabelFn(completeRowList)}}\r\n }@else {\r\n {{customTriggerLabelFn(completeRowList)}}\r\n }\r\n </mat-select-trigger>\r\n\r\n <div class=\"h-full overflow-y-auto scrollbar-custom\" [ngClass]=\"{'hidden-header': overallSearchVisibleState}\"\r\n (focusout)=\"onFocusOut($event)\">\r\n @if(overallSearchEnabled){\r\n <mat-option [ngClass]=\"{'hidden':!overallSearchVisibleState === true}\">\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"resetFiltersOnOpen\">\r\n </cmat-select-search>\r\n </mat-option>\r\n\r\n @if(!isPhone){\r\n <div class=\"overall-search-toggle\" [ngStyle]=\"{ height: overallSearchVisibleState ? '48px' : '55.4px' }\">\r\n <mat-icon color=\"primary\"\r\n [svgIcon]=\"overallSearchVisibleState ? 'mat_outline:arrow_back' : 'mat_outline:search'\"\r\n (click)=\"toggleOverallSearch()\">\r\n </mat-icon>\r\n </div>\r\n }@else{\r\n <div class=\"overall-search-toggle\" [ngStyle]=\"{ height: overallSearchVisibleState ? '48px' : '55.4px' }\">\r\n <mat-icon color=\"primary\" [svgIcon]=\"'mat_outline:search'\">\r\n </mat-icon>\r\n </div>\r\n }\r\n }\r\n <table #table mat-table matSort [dataSource]=\"tableDataSource\">\r\n @for (columnKey of tableColumns; track $index) {\r\n @switch (columnKey) {\r\n @case ('_selection') {\r\n <ng-container [matColumnDef]=\"columnKey\">\r\n <th *matHeaderCellDef mat-header-cell class=\"selection\"></th>\r\n <td *matCellDef=\"let row\" mat-cell class=\"selection\">\r\n @if(row.id===null){\r\n <mat-option></mat-option>\r\n }@else {\r\n <mat-option [value]=\"row\"></mat-option>\r\n }\r\n </td>\r\n </ng-container>\r\n }\r\n @default {\r\n <ng-container [matColumnDef]=\"columnKey\">\r\n <th *matHeaderCellDef mat-header-cell mat-sort-header\r\n [disabled]=\"!tableColumnsMap.get(columnKey)?.sortable\">\r\n @if(!tableColumnsMap.get(columnKey)?.sortable){\r\n <div>{{tableColumnsMap.get(columnKey)?.name}}</div>\r\n }@else {\r\n @switch (tableColumnsMap.get(columnKey)?.filter?.type) {\r\n @case ('string') {\r\n <ng-container [ngTemplateOutlet]=\"filterTypeString\"\r\n [ngTemplateOutletContext]=\"{column: tableColumnsMap.get(columnKey)}\"></ng-container>\r\n }\r\n @case('number'){\r\n <ng-container [ngTemplateOutlet]=\"filterTypeNumber\"\r\n [ngTemplateOutletContext]=\"{column: tableColumnsMap.get(columnKey)}\"></ng-container>\r\n }\r\n @default {\r\n <div>{{tableColumnsMap.get(columnKey)?.name}}</div>\r\n }\r\n }\r\n }\r\n </th>\r\n <td *matCellDef=\"let row\" mat-cell\r\n [colSpan]=\"addNullRow() && row.id === null && $index === 1 ? tableColumns.length : 1\"\r\n [ngStyle]=\"{display: addNullRow() && row.id === null && $index !== 1 ? 'none' : ''}\">\r\n <div class=\" has-label-on-mobile\" [attr.data-label]=\"tableColumnsMap.get(columnKey)?.name+':'\">\r\n {{addNullRow() && row.id === null && $index === 1 ? '空' : row[columnKey]}}\r\n </div> \r\n </td>\r\n </ng-container>\r\n }\r\n }\r\n }\r\n\r\n <tr *matHeaderRowDef=\"tableColumns; sticky: true\" mat-header-row></tr>\r\n <tr *matRowDef=\"let row; columns: tableColumns;\" mat-row (click)=\"emulateMatOptionClick($event)\"></tr>\r\n </table>\r\n </div>\r\n</mat-select>\r\n}\r\n<ng-template #filterTypeString let-column='column'>\r\n <mat-form-field class=\"filter\" (click)=\"$event.stopPropagation()\">\r\n <input matInput [formControl]=\"filterFormControl(column.key)\" [placeholder]=\"column.name\"\r\n (keydown)=\"$event.stopPropagation()\" (keyup)=\"$event.stopPropagation()\"\r\n (keypress)=\"$event.stopPropagation()\" />\r\n </mat-form-field>\r\n</ng-template>\r\n\r\n<ng-template #filterTypeNumber let-column='column'>\r\n <mat-form-field class=\"filter\" (click)=\"$event.stopPropagation()\">\r\n <input matInput cmatDigitOnly [min]=\"0\" [formControl]=\"filterFormControl(column.key)\"\r\n [placeholder]=\"column.name\" (keydown)=\"$event.stopPropagation()\" (keyup)=\"$event.stopPropagation()\"\r\n (keypress)=\"$event.stopPropagation()\" />\r\n </mat-form-field>\r\n</ng-template>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cmat-components-select-table.mjs","sources":["../../../projects/cmat/components/select-table/select-table.component.ts","../../../projects/cmat/components/select-table/select-table.component.html","../../../projects/cmat/components/select-table/cmat-components-select-table.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/member-ordering */\r\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostBinding, HostListener, Input, OnChanges, OnDestroy, Output, QueryList, SimpleChanges, ViewChild, ViewChildren, ViewEncapsulation, inject } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, FormGroup, NgControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatOption, MatSelect, MatSelectModule } from '@angular/material/select';\r\nimport { MatSort, MatSortModule, Sort, SortDirection } from '@angular/material/sort';\r\nimport { MatTable, MatTableModule } from '@angular/material/table';\r\nimport { isArray, isNil, isNumber, isString, isUndefined } from 'lodash-es';\r\nimport { debounceTime, merge, Subject, takeUntil } from 'rxjs';\r\nimport { CmatSelectSearchComponent } from 'cmat/components/select-search';\r\nimport { CmatDigitOnlyDirective } from 'cmat/directives/digit-only';\r\nimport { CmatSelectTableColumn, CmatSelectTableDataSource, CmatSelectTableFilter, CmatSelectTableRow } from './select-table.type';\r\n\r\nconst MAX_SAFE_INTEGER = 9007199254740991;\r\nlet NEXT_ID = 0;\r\n\r\n@Component({\r\n selector: 'cmat-select-table',\r\n templateUrl: './select-table.component.html',\r\n styleUrls: ['./select-table.component.scss'],\r\n exportAs: 'cmatSelectTable',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: MatFormFieldControl, useExisting: CmatSelectTableComponent }],\r\n imports: [CmatSelectSearchComponent, MatFormFieldModule, MatSelectModule, ReactiveFormsModule, CommonModule,\r\n MatIconModule, MatTableModule, MatInputModule, MatSortModule, CmatDigitOnlyDirective\r\n ]\r\n})\r\nexport class CmatSelectTableComponent implements MatFormFieldControl<any>, ControlValueAccessor, AfterViewInit, OnDestroy, OnChanges {\r\n @HostBinding('attr.id')\r\n @Input()\r\n public id = `cmat-select-table-${NEXT_ID++}`;\r\n\r\n @Input() dataSource: CmatSelectTableDataSource<CmatSelectTableRow>;\r\n\r\n @Input() noEntriesFoundLabel = '无结果';\r\n\r\n @Input() showNoFoundLabel = true;\r\n\r\n @Input() isPhone = false;\r\n\r\n @Input() multiple: boolean = false;\r\n\r\n @Input() overallSearchEnabled: boolean = true;\r\n\r\n @Input() overallSearchVisible: boolean;\r\n\r\n @Input() resetSortOnOpen: boolean;\r\n\r\n @Input() resetFiltersOnOpen: boolean;\r\n\r\n @Input() customTriggerLabelFn: (value: CmatSelectTableRow[]) => string;\r\n\r\n @Input() triggerLabelSort: Sort;\r\n\r\n @Input() customTriggerLabelTemplate: string;\r\n\r\n @Input() canNull: boolean;\r\n\r\n @Input() defaultSort: Sort;\r\n\r\n @Input() resetOptionAction: () => void;\r\n\r\n @Input() compareWith: (o1: any, o2: any) => boolean = (o1, o2) => {\r\n return o1 && o2 ? o1?.name === o2?.name && o1?.id === o2?.id : o1 === o2;\r\n }\r\n\r\n @Output() closed = new EventEmitter<boolean>();\r\n\r\n @ViewChild(CmatSelectSearchComponent, { static: false }) private _matSelectSearch: CmatSelectSearchComponent;\r\n\r\n @ViewChild(MatSort, { static: false }) private _sort: MatSort;\r\n\r\n @ViewChild(MatTable, { static: false }) private _table: MatTable<CmatSelectTableRow>;\r\n\r\n @ViewChildren(MatOption) private _matOptions: QueryList<MatOption>;\r\n\r\n tableDataSource: CmatSelectTableRow[];\r\n\r\n tableColumns: string[];\r\n\r\n tableColumnsMap: Map<string, CmatSelectTableColumn>;\r\n\r\n filteredOutRows: Record<string, CmatSelectTableRow>;\r\n\r\n completeRowList: CmatSelectTableRow[] = [];\r\n\r\n overallSearchVisibleState: boolean;\r\n\r\n overallFilterControl: FormControl = new FormControl('');\r\n selectControl: FormControl = new FormControl();\r\n\r\n readonly stateChanges: Subject<void> = new Subject<void>();\r\n focused: boolean = false;\r\n touched: boolean = false;\r\n\r\n ngControl = inject(NgControl, { optional: true, self: true })!;\r\n private _cd = inject(ChangeDetectorRef);\r\n\r\n private _matSelect: MatSelect;\r\n private _filterControls: FormGroup;\r\n\r\n private _nullRow: CmatSelectTableRow = { id: null };\r\n\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n private _completeValueList: any[] = [];\r\n\r\n constructor() {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n this.tableColumnsMap = new Map();\r\n this._filterControls = new FormGroup({});\r\n }\r\n\r\n @ViewChild('componentSelect', { static: false }) set matSelect(m: MatSelect) {\r\n const existsSelect = !isUndefined(this._matSelect);\r\n\r\n this._matSelect = m;\r\n\r\n if (!existsSelect) {\r\n this._init(this.value);\r\n\r\n this._matSelect.setDisabledState(this.disabled);\r\n }\r\n }\r\n\r\n\r\n @HostListener('document:click')\r\n clickedOut(): void {\r\n if (!this._matSelect?.panelOpen) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n let panelClass: string = '';\r\n if (!this.overallSearchEnabled) {\r\n panelClass = 'cmat-select-search-panel overflow-hidden cmat-select-search-table-panel';\r\n }\r\n\r\n if (this._matSelect.panelClass) {\r\n if (Array.isArray(this._matSelect.panelClass)) {\r\n (this._matSelect.panelClass as string[]).push(panelClass);\r\n } else if (typeof this._matSelect.panelClass === 'string') {\r\n this._matSelect.panelClass = [this._matSelect.panelClass, panelClass];\r\n } else if (typeof this._matSelect.panelClass === 'object') {\r\n this._matSelect.panelClass.entries[panelClass] = true;\r\n }\r\n } else {\r\n this._matSelect.panelClass = panelClass;\r\n }\r\n\r\n merge(...[\r\n this._sort.sortChange,\r\n this._filterControls.valueChanges,\r\n this.overallFilterControl.valueChanges\r\n ])\r\n .pipe(takeUntil(this._unsubscribeAll), debounceTime(100))\r\n .subscribe(() => {\r\n const dataClone: CmatSelectTableRow[] = [...((this.dataSource || { data: [] }).data || [])];\r\n if (this.addNullRow()) {\r\n dataClone.unshift(this._nullRow);\r\n }\r\n\r\n if (this.overallSearchEnabled && this.overallSearchVisibleState) {\r\n this._applyOverallFilter(dataClone);\r\n } else {\r\n this._applyColumnLevelFilters(dataClone);\r\n }\r\n\r\n if (!this._sort.active && !isNil(this.defaultSort) && this.defaultSort.active) {\r\n this._sort.active = this.defaultSort.active;\r\n this._sort.direction = this.defaultSort.direction;\r\n }\r\n\r\n this.tableDataSource = !this._sort.active ?\r\n dataClone : this._sortData(dataClone, this._sort.active, this._sort.direction);\r\n\r\n this._cd.detectChanges();\r\n });\r\n\r\n this._matOptions.changes.pipe(takeUntil(this._unsubscribeAll)).subscribe(() => {\r\n const options: Record<string, MatOption> = {};\r\n\r\n this._matOptions\r\n .toArray()\r\n .filter(option => !isNil(option) && !isNil(option.value) && !option._getHostElement().classList.contains('contains-cmat-select-search'))\r\n .forEach(option => options[`${option.value.id}`] = option\r\n );\r\n if (this._matSelectSearch) {\r\n this._matSelect?.options.reset(\r\n [this._matOptions.first,\r\n ...this.tableDataSource\r\n .filter(row => !isNil(options[`${row.id}`]))\r\n .map(row => options[`${row.id}`])]\r\n );\r\n } else {\r\n this._matSelect?.options.reset(\r\n this.tableDataSource\r\n .filter(row => !isNil(options[`${row.id}`]))\r\n .map(row => options[`${row.id}`])\r\n );\r\n }\r\n\r\n\r\n try {\r\n this._matSelect?.options.notifyOnChanges();\r\n } catch {\r\n //do something\r\n }\r\n\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n @Input()\r\n get placeholder(): string {\r\n return this._placeholder;\r\n }\r\n set placeholder(value: string) {\r\n this._placeholder = value;\r\n this.stateChanges.next();\r\n }\r\n private _placeholder: string = '';\r\n\r\n @Input()\r\n get value(): any {\r\n return this._value;\r\n }\r\n set value(value: any) {\r\n if (value !== this.value) {\r\n this._value = value;\r\n\r\n this.stateChanges.next();\r\n\r\n this._onModelChange(value);\r\n }\r\n }\r\n protected _value: any;\r\n\r\n get empty(): boolean {\r\n return !this._value;\r\n }\r\n\r\n get errorState(): boolean {\r\n if (this.ngControl == null)\r\n return false;\r\n\r\n return (this.touched && this.ngControl?.invalid) ?? false;\r\n }\r\n\r\n get shouldLabelFloat(): boolean {\r\n return this.focused || !this.empty;\r\n }\r\n\r\n @Input()\r\n get required(): boolean { return this._required; }\r\n set required(value: any) {\r\n this._required = coerceBooleanProperty(value);\r\n this.stateChanges.next();\r\n }\r\n protected _required = false;\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n if (!isNil(this.ngControl?.disabled)) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n set disabled(value: BooleanInput) {\r\n this._disabled = coerceBooleanProperty(value);\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n protected _disabled = false;\r\n\r\n registerOnChange(fn: (value: any) => void): void {\r\n this._onModelChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => object): void {\r\n this._onTouchedChange = fn;\r\n this._matSelect?.registerOnTouched(fn);\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._matSelect?.setDisabledState(isDisabled);\r\n }\r\n\r\n setDescribedByIds(ids: string[]): void {\r\n this._matSelect?.setDescribedByIds(ids);\r\n }\r\n\r\n onContainerClick(): void {\r\n if (!this.focused) {\r\n this._matSelect?.focus();\r\n }\r\n }\r\n\r\n onFocusIn(): void {\r\n if (!this.focused) {\r\n this.focused = true;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onFocusOut(event: FocusEvent): void {\r\n if (!this._matSelect.panel.nativeElement.contains(event.relatedTarget as Element)) {\r\n this.touched = true;\r\n this.focused = false;\r\n\r\n this._onTouchedChange();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this._init(value);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!isNil(changes.resetFiltersOnOpen) && changes.resetFiltersOnOpen.currentValue !== false) {\r\n this._resetFilters();\r\n }\r\n\r\n if (!isNil(changes.dataSource)\r\n && !isNil(changes.dataSource.currentValue)\r\n && isArray(changes.dataSource.currentValue.data)) {\r\n this.tableDataSource = [...changes.dataSource.currentValue.data];\r\n if (this.addNullRow()) {\r\n this.tableDataSource.unshift(this._nullRow);\r\n }\r\n this.tableColumns = ['_selection', ...changes.dataSource.currentValue.columns.map((column: { key: any; }) => column.key)];\r\n this.tableColumnsMap.clear();\r\n changes.dataSource.currentValue.columns.forEach((column: CmatSelectTableColumn) => this.tableColumnsMap.set(column.key, column));\r\n\r\n if (this.tableDataSource.length > 0) {\r\n this._init(this.value);\r\n }\r\n }\r\n }\r\n\r\n emulateMatOptionClick(event: MouseEvent): void {\r\n if (!(event.target instanceof HTMLElement)) {\r\n return;\r\n }\r\n\r\n let rowElement: HTMLElement | null = event.target;\r\n while (rowElement != null && rowElement instanceof HTMLElement && rowElement.tagName.toLowerCase() !== 'tr') {\r\n rowElement = rowElement.parentElement;\r\n }\r\n if (rowElement === null) {\r\n return;\r\n }\r\n const childOption: HTMLElement | null = rowElement.querySelector('mat-option');\r\n if (!childOption) {\r\n return;\r\n }\r\n\r\n if (event.target.tagName.toLowerCase() != 'mat-pseudo-checkbox') {\r\n childOption.click();\r\n }\r\n\r\n const option: any = this._matOptions.find(i => i.id == childOption.id);\r\n\r\n if (this.multiple && this._matSelect.panelOpen) {\r\n this._updateCompleteRowList(option!.value, option!._selected);\r\n }\r\n\r\n if (!this.multiple) {\r\n this.completeRowList.splice(0);\r\n this._completeValueList.splice(0);\r\n\r\n if (option!.value) {\r\n this.completeRowList.push(option!.value);\r\n this._completeValueList.push(option!.value.id);\r\n }\r\n }\r\n }\r\n\r\n openedChange(opened: boolean): void {\r\n if (this.resetFiltersOnOpen !== false || (!this._matOptions.length && this.overallSearchEnabled) || (this.overallSearchEnabled && this._matOptions.length === 1)) {\r\n this._resetFilters();\r\n }\r\n this.overallSearchVisibleState = this.overallSearchVisible;\r\n if (this.resetSortOnOpen !== false) {\r\n this._sort.sort({ id: '', start: 'asc', disableClear: false });\r\n }\r\n if (!opened) {\r\n if (this.multiple) {\r\n this.value = this.completeRowList.length > 0 ? [... this.completeRowList] : null;\r\n } else {\r\n this.value = this.completeRowList.length > 0 ? { ...this.completeRowList[0] } : null;\r\n }\r\n if (this.value === null) {\r\n this.completeRowList.splice(0);\r\n this._completeValueList.splice(0);\r\n\r\n this._checkAndResetSelection();\r\n }\r\n\r\n this._matSelect.writeValue(this.value);\r\n this._matSelect._onChange(this.value);\r\n\r\n this.closed.emit(!opened);\r\n return;\r\n }\r\n\r\n (this._table as any)._headerRowDefChanged = true;\r\n\r\n setTimeout(() => {\r\n let tableAdditionalHeight = 0;\r\n this._table._getRenderedRows(this._table._headerRowOutlet)\r\n .concat(this._table._getRenderedRows(this._table._footerRowOutlet))\r\n .forEach(row => tableAdditionalHeight += row.getBoundingClientRect().height);\r\n\r\n const panelElement: HTMLDivElement = this._matSelect.panel.nativeElement;\r\n const panelHeight = panelElement.getBoundingClientRect().height;\r\n\r\n\r\n if (!isNaN(panelHeight)) {\r\n panelElement.style.maxHeight = `${panelHeight + tableAdditionalHeight}px`;\r\n }\r\n }, 1);\r\n }\r\n filterFormControl(key: string): FormControl {\r\n if (!this._filterControls.contains(key)) {\r\n this._filterControls.registerControl(key, new FormControl(''));\r\n }\r\n return this._filterControls.get(key) as FormControl;\r\n }\r\n\r\n simpleTriggerLabelFn(value: CmatSelectTableRow[]): string {\r\n if (!isNil(this.triggerLabelSort)) {\r\n this._sortData(value, this.triggerLabelSort.active, this.triggerLabelSort.direction);\r\n }\r\n return value.map((row) => {\r\n if (isNil(row)) {\r\n return '';\r\n }\r\n if (isNil(this.customTriggerLabelTemplate)\r\n || typeof this.customTriggerLabelTemplate !== 'string'\r\n || this.customTriggerLabelTemplate.trim().length === 0) {\r\n return `${row.id}`;\r\n }\r\n let atLeastPartialSubstitution = false;\r\n const substitution: string = this.customTriggerLabelTemplate.replace(/[$]{1}[{]{1}([^}]+)[}]{1}?/g, (_, key) =>\r\n !isNil((row as any)[key]) && (atLeastPartialSubstitution = true) ? (row as any)[key] : '');\r\n if (atLeastPartialSubstitution === false) {\r\n return `${row.id}`;\r\n }\r\n return substitution.trim();\r\n }).join(', ');\r\n }\r\n\r\n toggleOverallSearch(): void {\r\n this.overallSearchVisibleState = !this.overallSearchVisibleState;\r\n this._resetFilters();\r\n if (this.overallSearchVisibleState) {\r\n setTimeout(() => this._matSelectSearch.focus());\r\n }\r\n\r\n this._cd.markForCheck();\r\n }\r\n\r\n addNullRow(): boolean {\r\n return !this.multiple && this.canNull;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private _onModelChange: (value: any) => void = () => { };\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private _onTouchedChange: () => any = () => { };\r\n\r\n private _init(value: any): void {\r\n this.completeRowList.splice(0);\r\n this._completeValueList.splice(0);\r\n\r\n if (value) {\r\n if (this.multiple)\r\n value.forEach((v: any) => this._updateCompleteRowList(v, true));\r\n else {\r\n this.completeRowList.push(value);\r\n this._completeValueList.push(value.id);\r\n }\r\n }\r\n\r\n if (this._matSelect) {\r\n this.value = value;\r\n this._matSelect.writeValue(value);\r\n this._matSelect._onChange(value);\r\n\r\n } else {\r\n this.value = value;\r\n }\r\n\r\n this._cd.markForCheck();\r\n }\r\n\r\n private _updateCompleteRowList(value: any, selected: boolean): void {\r\n if (isNil(value)) {\r\n return;\r\n }\r\n if (selected) {\r\n ((this.dataSource || { data: [] }).data || [])\r\n .filter(row => !isNil(row) && !isNil(row.id) && row.id === value.id)\r\n .forEach((row) => {\r\n const i = this.completeRowList.find(i => i.id === value.id);\r\n if (!i) {\r\n this.completeRowList.push(row);\r\n this._completeValueList.push(row.id);\r\n }\r\n });\r\n } else {\r\n const rowIndex = this.completeRowList.findIndex(i => i.id === value.id);\r\n if (rowIndex > -1)\r\n this.completeRowList.splice(rowIndex, 1);\r\n\r\n const valueIndex = this._completeValueList.findIndex(i => i === value.id);\r\n if (valueIndex > -1)\r\n this._completeValueList.splice(valueIndex, 1);\r\n }\r\n }\r\n\r\n private _applyColumnLevelFilters(data: CmatSelectTableRow[]): void {\r\n this.filteredOutRows = {};\r\n const filters: Record<string, { filter: CmatSelectTableFilter | undefined, value: any }> = {};\r\n Object.keys(this._filterControls.controls)\r\n .filter(key => this.tableColumnsMap.has(key)\r\n && !isNil(this.tableColumnsMap.get(key)?.filter)\r\n && this.tableColumnsMap.get(key)?.filter.enabled !== false)\r\n .filter((key) => {\r\n const value = this._filterControls.get(key)?.value;\r\n return !isNil(value)\r\n && ((isArray(value) && value.length > 0)\r\n || (typeof value === 'string' && value.trim().length > 0)\r\n || (typeof value === 'number' && `${value}`.trim().length > 0));\r\n })\r\n .forEach(key => filters[key] = {\r\n filter: this.tableColumnsMap.get(key)?.filter,\r\n value: this._filterControls.get(key)?.value\r\n });\r\n const filterKeys: string[] = Object.keys(filters);\r\n for (let i = data.length - 1; i >= 0; i--) {\r\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\r\n for (let k = 0; k < filterKeys.length; k++) {\r\n const filterKey: string = filterKeys[k];\r\n const row: CmatSelectTableRow = data[i];\r\n if (isNil(row)) {\r\n continue;\r\n }\r\n const cellValue: any = (row as any)[filterKey];\r\n if (isNil(cellValue)) {\r\n data.splice(i, 1).forEach(item => this.filteredOutRows[`${item.id}`] = item);\r\n continue;\r\n }\r\n const filter = filters[filterKey];\r\n const comparator = filter.filter?.comparator;\r\n if (filter.filter?.type === 'number') {\r\n filter.value = Number(filter.value);\r\n }\r\n\r\n if (typeof filter.filter?.comparatorFn === 'function') {\r\n if (!filter.filter.comparatorFn.call(null, cellValue, filter.value, row)) {\r\n data.splice(i, 1).forEach(item => this.filteredOutRows[`${item.id}`] = item);\r\n break;\r\n }\r\n } else if (isNil(comparator) || comparator === 'equals') {\r\n if (filter.value !== cellValue) {\r\n data.splice(i, 1).forEach(item => this.filteredOutRows[`${item.id}`] = item);\r\n break;\r\n }\r\n } else if (typeof cellValue === 'string' && typeof filter.value === 'string') {\r\n const cellValueLC: string = `${cellValue}`.toLowerCase();\r\n const filterValueLC: string = filter.value.toLowerCase();\r\n if (isNil(comparator) || comparator === 'equalsIgnoreCase') {\r\n if (filterValueLC !== cellValueLC) {\r\n data.splice(i, 1).forEach(item => this.filteredOutRows[`${item.id}`] = item);\r\n break;\r\n }\r\n } else if (comparator === 'contains') {\r\n if (!cellValue.includes(filter.value)) {\r\n data.splice(i, 1).forEach(item => this.filteredOutRows[`${item.id}`] = item);\r\n break;\r\n }\r\n } else if (comparator === 'containsIgnoreCase') {\r\n if (!cellValueLC.includes(filterValueLC)) {\r\n data.splice(i, 1).forEach(item => this.filteredOutRows[`${item.id}`] = item);\r\n break;\r\n }\r\n } else if (comparator === 'startsWith') {\r\n if (!cellValue.startsWith(filter.value)) {\r\n data.splice(i, 1).forEach(item => this.filteredOutRows[`${item.id}`] = item);\r\n break;\r\n }\r\n } else if (comparator === 'startsWithIgnoreCase') {\r\n if (!cellValueLC.startsWith(filterValueLC)) {\r\n data.splice(i, 1).forEach(item => this.filteredOutRows[`${item.id}`] = item);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _applyOverallFilter(data: CmatSelectTableRow[]): void {\r\n this.filteredOutRows = {};\r\n if (isNil(this.overallFilterControl.value)) {\r\n return;\r\n }\r\n const filterValueLC: string = this.overallFilterControl.value.toLowerCase();\r\n if (filterValueLC.trim().length === 0) {\r\n return;\r\n }\r\n for (let i = data.length - 1; i >= 0; i--) {\r\n const row: CmatSelectTableRow = data[i];\r\n let rowShouldBeFiltered = true;\r\n for (let j = this.dataSource.columns.length - 1; j >= 0; j--) {\r\n const key: string = this.dataSource.columns[j].key;\r\n const cellValue: any = (row as any)[key];\r\n if (isNil(cellValue)) {\r\n continue;\r\n }\r\n const cellValueLC: string = `${cellValue}`.toLowerCase();\r\n if (cellValueLC.includes(filterValueLC)) {\r\n rowShouldBeFiltered = false;\r\n break;\r\n }\r\n }\r\n if (rowShouldBeFiltered) {\r\n data.splice(i, 1).forEach(item => this.filteredOutRows[`${item.id}`] = item);\r\n }\r\n }\r\n }\r\n\r\n private _resetFilters(): void {\r\n this.overallFilterControl.setValue('');\r\n Object.keys(this._filterControls.controls)\r\n .forEach(key => this._filterControls.get(key)?.setValue(''));\r\n }\r\n\r\n private _sortingDataAccessor(data: CmatSelectTableRow, active: string): string | number | Date {\r\n const value = (data as Record<string, any>)[active];\r\n\r\n if (isNumber(value)) {\r\n const numberValue = Number(value);\r\n\r\n return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n\r\n private _sortData(data: CmatSelectTableRow[], active: string, direction: SortDirection): CmatSelectTableRow[] {\r\n if (!active || direction === '') {\r\n return data;\r\n }\r\n\r\n return data.sort((a, b) => {\r\n let aValue = this._sortingDataAccessor(a, active);\r\n let bValue = this._sortingDataAccessor(b, active);\r\n\r\n if (a.id === null) {\r\n return -1;\r\n } else if (b.id === null) {\r\n return 1;\r\n }\r\n\r\n // Both null/undefined/equal value check\r\n if (aValue === bValue) {\r\n return 0;\r\n }\r\n\r\n // One null value check\r\n if (isNil(aValue) && !isNil(bValue)) {\r\n return -1;\r\n } else if (!isNil(aValue) && isNil(bValue)) {\r\n return 1;\r\n }\r\n\r\n if (aValue instanceof Date) {\r\n aValue = aValue.getTime();\r\n }\r\n if (bValue instanceof Date) {\r\n bValue = bValue.getTime();\r\n }\r\n\r\n // User localeCompare for strings\r\n if (isString(aValue) && isString(bValue)) {\r\n return (aValue).localeCompare(bValue) * (direction === 'asc' ? 1 : -1);\r\n }\r\n\r\n // Try to convert to a Number type\r\n aValue = isNaN((aValue as number)) ? `${aValue}` : +aValue;\r\n bValue = isNaN((bValue as number)) ? `${bValue}` : +bValue;\r\n\r\n // if one is number and other is String\r\n if (isString(aValue) && isNumber(bValue)) {\r\n return (1) * (direction === 'asc' ? 1 : -1);\r\n }\r\n if (isNumber(aValue) && isString(bValue)) {\r\n return (-1) * (direction === 'asc' ? 1 : -1);\r\n }\r\n\r\n return (aValue > bValue ? 1 : -1) * (direction === 'asc' ? 1 : -1);\r\n });\r\n\r\n }\r\n\r\n private _checkAndResetSelection(): void {\r\n if (this._matSelect.value && isArray(this._matSelect.value) && this._matSelect.value.length < 1\r\n && !isNil(this.resetOptionAction)) {\r\n this.resetOptionAction();\r\n }\r\n }\r\n}\r\n","@if(multiple){\r\n<mat-select #componentSelect multiple disableRipple panelClass=\"cmat-select-search-table-panel overflow-hidden\"\r\n [placeholder]=\"placeholder\" [required]=\"required\" [formControl]=\"selectControl\" [compareWith]=\"compareWith\"\r\n (focusin)=\"onFocusIn()\" (openedChange)=\"openedChange($event)\">\r\n <mat-select-trigger>\r\n @if(!customTriggerLabelFn){\r\n {{simpleTriggerLabelFn(completeRowList)}}\r\n }@else {\r\n {{customTriggerLabelFn(completeRowList)}}\r\n }\r\n </mat-select-trigger>\r\n\r\n <div class=\"h-full overflow-y-auto scrollbar-custom\" [ngClass]=\"{'hidden-header': overallSearchVisibleState}\"\r\n (focusout)=\"onFocusOut($event)\">\r\n @if(overallSearchEnabled){\r\n <mat-option [ngClass]=\"{'hidden':!overallSearchVisibleState === true}\">\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"resetFiltersOnOpen\">\r\n </cmat-select-search>\r\n </mat-option>\r\n\r\n @if(!isPhone){\r\n <div class=\"overall-search-toggle\" [ngStyle]=\"{ height: overallSearchVisibleState ? '48px' : '55.4px' }\">\r\n <mat-icon color=\"primary\"\r\n [svgIcon]=\"overallSearchVisibleState ? 'mat_outline:arrow_back' : 'mat_outline:search'\"\r\n (click)=\"toggleOverallSearch()\">\r\n </mat-icon>\r\n </div>\r\n }@else{\r\n <div class=\"overall-search-toggle\" [ngStyle]=\"{ height: overallSearchVisibleState ? '48px' : '55.4px' }\">\r\n <mat-icon color=\"primary\" [svgIcon]=\"'mat_outline:search'\">\r\n </mat-icon>\r\n </div>\r\n }\r\n }\r\n <table #table mat-table matSort [dataSource]=\"tableDataSource\">\r\n @for (columnKey of tableColumns; track $index) {\r\n @switch (columnKey) {\r\n @case ('_selection') {\r\n <ng-container [matColumnDef]=\"columnKey\">\r\n <th *matHeaderCellDef mat-header-cell [ngClass]=\"{selection: true, hidden: !multiple}\"></th>\r\n <td *matCellDef=\"let row\" mat-cell [ngClass]=\"{selection: true, hidden: !multiple}\">\r\n <mat-option [value]=\"row\"></mat-option>\r\n </td>\r\n </ng-container>\r\n }\r\n @default {\r\n <ng-container [matColumnDef]=\"columnKey\">\r\n <th *matHeaderCellDef mat-header-cell mat-sort-header\r\n [disabled]=\"!tableColumnsMap.get(columnKey)?.sortable\">\r\n @if(!tableColumnsMap.get(columnKey)?.sortable){\r\n <div>{{tableColumnsMap.get(columnKey)?.name}}</div>\r\n }@else {\r\n @switch (tableColumnsMap.get(columnKey)?.filter?.type) {\r\n @case ('string') {\r\n <ng-container [ngTemplateOutlet]=\"filterTypeString\"\r\n [ngTemplateOutletContext]=\"{column: tableColumnsMap.get(columnKey)}\"></ng-container>\r\n }\r\n @case('number'){\r\n <ng-container [ngTemplateOutlet]=\"filterTypeNumber\"\r\n [ngTemplateOutletContext]=\"{column: tableColumnsMap.get(columnKey)}\"></ng-container>\r\n }\r\n @default {\r\n <div>{{tableColumnsMap.get(columnKey)?.name}}</div>\r\n }\r\n }\r\n }\r\n </th>\r\n <td *matCellDef=\"let row\" mat-cell>\r\n <div class=\" has-label-on-mobile\" [attr.data-label]=\"tableColumnsMap.get(columnKey)?.name+':'\">\r\n {{row[columnKey]}}\r\n </div>\r\n\r\n </td>\r\n </ng-container>\r\n }\r\n }\r\n }\r\n\r\n <tr *matHeaderRowDef=\"tableColumns; sticky: true\" mat-header-row></tr>\r\n <tr *matRowDef=\"let row; columns: tableColumns;\" mat-row (click)=\"emulateMatOptionClick($event)\"></tr>\r\n </table>\r\n </div>\r\n</mat-select>\r\n}@else {\r\n<mat-select #componentSelect disableRipple panelClass=\"cmat-select-search-table-panel overflow-hidden\"\r\n [placeholder]=\"placeholder\" [required]=\"required\" [formControl]=\"selectControl\" [compareWith]=\"compareWith\"\r\n (focusin)=\"onFocusIn()\" (openedChange)=\"openedChange($event)\">\r\n <mat-select-trigger>\r\n @if(!customTriggerLabelFn){\r\n {{simpleTriggerLabelFn(completeRowList)}}\r\n }@else {\r\n {{customTriggerLabelFn(completeRowList)}}\r\n }\r\n </mat-select-trigger>\r\n\r\n <div class=\"h-full overflow-y-auto scrollbar-custom\" [ngClass]=\"{'hidden-header': overallSearchVisibleState}\"\r\n (focusout)=\"onFocusOut($event)\">\r\n @if(overallSearchEnabled){\r\n <mat-option [ngClass]=\"{'hidden':!overallSearchVisibleState === true}\">\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"resetFiltersOnOpen\">\r\n </cmat-select-search>\r\n </mat-option>\r\n\r\n @if(!isPhone){\r\n <div class=\"overall-search-toggle\" [ngStyle]=\"{ height: overallSearchVisibleState ? '48px' : '55.4px' }\">\r\n <mat-icon color=\"primary\"\r\n [svgIcon]=\"overallSearchVisibleState ? 'mat_outline:arrow_back' : 'mat_outline:search'\"\r\n (click)=\"toggleOverallSearch()\">\r\n </mat-icon>\r\n </div>\r\n }@else{\r\n <div class=\"overall-search-toggle\" [ngStyle]=\"{ height: overallSearchVisibleState ? '48px' : '55.4px' }\">\r\n <mat-icon color=\"primary\" [svgIcon]=\"'mat_outline:search'\">\r\n </mat-icon>\r\n </div>\r\n }\r\n }\r\n <table #table mat-table matSort [dataSource]=\"tableDataSource\">\r\n @for (columnKey of tableColumns; track $index) {\r\n @switch (columnKey) {\r\n @case ('_selection') {\r\n <ng-container [matColumnDef]=\"columnKey\">\r\n <th *matHeaderCellDef mat-header-cell class=\"selection\"></th>\r\n <td *matCellDef=\"let row\" mat-cell class=\"selection\">\r\n @if(row.id===null){\r\n <mat-option></mat-option>\r\n }@else {\r\n <mat-option [value]=\"row\"></mat-option>\r\n }\r\n </td>\r\n </ng-container>\r\n }\r\n @default {\r\n <ng-container [matColumnDef]=\"columnKey\">\r\n <th *matHeaderCellDef mat-header-cell mat-sort-header\r\n [disabled]=\"!tableColumnsMap.get(columnKey)?.sortable\">\r\n @if(!tableColumnsMap.get(columnKey)?.sortable){\r\n <div>{{tableColumnsMap.get(columnKey)?.name}}</div>\r\n }@else {\r\n @switch (tableColumnsMap.get(columnKey)?.filter?.type) {\r\n @case ('string') {\r\n <ng-container [ngTemplateOutlet]=\"filterTypeString\"\r\n [ngTemplateOutletContext]=\"{column: tableColumnsMap.get(columnKey)}\"></ng-container>\r\n }\r\n @case('number'){\r\n <ng-container [ngTemplateOutlet]=\"filterTypeNumber\"\r\n [ngTemplateOutletContext]=\"{column: tableColumnsMap.get(columnKey)}\"></ng-container>\r\n }\r\n @default {\r\n <div>{{tableColumnsMap.get(columnKey)?.name}}</div>\r\n }\r\n }\r\n }\r\n </th>\r\n <td *matCellDef=\"let row\" mat-cell\r\n [colSpan]=\"addNullRow() && row.id === null && $index === 1 ? tableColumns.length : 1\"\r\n [ngStyle]=\"{display: addNullRow() && row.id === null && $index !== 1 ? 'none' : ''}\">\r\n <div class=\" has-label-on-mobile\" [attr.data-label]=\"tableColumnsMap.get(columnKey)?.name+':'\">\r\n {{addNullRow() && row.id === null && $index === 1 ? '空' : row[columnKey]}}\r\n </div> \r\n </td>\r\n </ng-container>\r\n }\r\n }\r\n }\r\n\r\n <tr *matHeaderRowDef=\"tableColumns; sticky: true\" mat-header-row></tr>\r\n <tr *matRowDef=\"let row; columns: tableColumns;\" mat-row (click)=\"emulateMatOptionClick($event)\"></tr>\r\n </table>\r\n </div>\r\n</mat-select>\r\n}\r\n<ng-template #filterTypeString let-column='column'>\r\n <mat-form-field class=\"filter\" (click)=\"$event.stopPropagation()\">\r\n <input matInput [formControl]=\"filterFormControl(column.key)\" [placeholder]=\"column.name\"\r\n (keydown)=\"$event.stopPropagation()\" (keyup)=\"$event.stopPropagation()\"\r\n (keypress)=\"$event.stopPropagation()\" />\r\n </mat-form-field>\r\n</ng-template>\r\n\r\n<ng-template #filterTypeNumber let-column='column'>\r\n <mat-form-field class=\"filter\" (click)=\"$event.stopPropagation()\">\r\n <input matInput cmatDigitOnly [min]=\"0\" [formControl]=\"filterFormControl(column.key)\"\r\n [placeholder]=\"column.name\" (keydown)=\"$event.stopPropagation()\" (keyup)=\"$event.stopPropagation()\"\r\n (keypress)=\"$event.stopPropagation()\" />\r\n </mat-form-field>\r\n</ng-template>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -277,11 +277,11 @@ class CmatSelectTreeComponent {
277
277
  findOutNode.forEach((node) => {
278
278
  this.checklistSelection.deselect(node);
279
279
  });
280
- this.value = this.checklistSelection.selected;
280
+ this.value = this.checklistSelection.selected.length > 0 ? [...this.checklistSelection.selected] : null;
281
281
  }
282
282
  else {
283
283
  if (this.checklistSelection.selected && this.checklistSelection.selected.length > 0) {
284
- this.value = this.checklistSelection.selected[0];
284
+ this.value = { ...this.checklistSelection.selected[0] };
285
285
  }
286
286
  }
287
287
  this._matSelect.writeValue(this.value);
@@ -1 +1 @@
1
- {"version":3,"file":"cmat-components-select-tree.mjs","sources":["../../../projects/cmat/components/select-tree/select-tree.flatnode.ts","../../../projects/cmat/components/select-tree/select-tree.component.ts","../../../projects/cmat/components/select-tree/select-tree.component.html","../../../projects/cmat/components/select-tree/select-tree.node.ts","../../../projects/cmat/components/select-tree/cmat-components-select-tree.ts"],"sourcesContent":["export class CmatSelectTreeFlatNode {\r\n id: string | number;\r\n name: string;\r\n level: number;\r\n expandable: boolean;\r\n}\r\n","/* eslint-disable @typescript-eslint/member-ordering */\r\nimport { coerceBooleanProperty, BooleanInput } from '@angular/cdk/coercion';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { CdkTree } from '@angular/cdk/tree';\r\nimport { NgClass, AsyncPipe } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, HostListener, Input, OnChanges, OnDestroy, SimpleChanges, ViewChild, ViewEncapsulation, inject } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, ReactiveFormsModule, NgControl } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatSelect, MatSelectModule } from '@angular/material/select';\r\nimport { MatTreeModule } from '@angular/material/tree';\r\nimport { isNil, isUndefined } from 'lodash-es';\r\nimport { merge, ReplaySubject, Subject } from 'rxjs';\r\nimport { debounceTime, takeUntil } from 'rxjs/operators';\r\nimport { CmatSelectSearchComponent } from 'cmat/components/select-search';\r\nimport { CmatSelectTreeFlatNode } from './select-tree.flatnode';\r\nimport { CmatSelectTreeNode } from './select-tree.node';\r\n\r\nlet NEXT_ID = 0;\r\n\r\n@Component({\r\n selector: 'cmat-select-tree',\r\n templateUrl: './select-tree.component.html',\r\n styleUrls: ['./select-tree.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: MatFormFieldControl, useExisting: CmatSelectTreeComponent }],\r\n exportAs: 'cmatSelectTree',\r\n imports: [MatIconModule, MatSelectModule, CmatSelectSearchComponent,\r\n ReactiveFormsModule, MatTreeModule, NgClass, MatButtonModule, MatCheckboxModule, AsyncPipe]\r\n})\r\nexport class CmatSelectTreeComponent implements MatFormFieldControl<any>, ControlValueAccessor, OnChanges, AfterViewInit, OnDestroy {\r\n @HostBinding('attr.id')\r\n @Input()\r\n public id = `cmat-select-tree-${NEXT_ID++}`;\r\n\r\n @Input() dataSource: CmatSelectTreeNode[];\r\n\r\n @Input() noEntriesFoundLabel = '无结果';\r\n\r\n @Input() showNoFoundLabel = true;\r\n\r\n @Input() multiple: boolean = false;\r\n\r\n @Input() overallSearchEnabled: boolean = true;\r\n\r\n @Input() canNull: boolean = false;\r\n\r\n @Input() customTriggerLabelFn: (value: CmatSelectTreeNode[]) => string;\r\n\r\n @Input() customTriggerLabelTemplate: string;\r\n\r\n @Input() expandable: boolean;\r\n\r\n @Input() showToggleAllCheckbox: boolean = false;\r\n\r\n @Input() compareWith: (o1: any, o2: any) => boolean = (o1, o2) => {\r\n return o1 && o2 ? o1?.name === o2?.name && o1?.id === o2?.id : o1 === o2;\r\n }\r\n\r\n flatNodeMap = new Map<CmatSelectTreeFlatNode, CmatSelectTreeNode>();\r\n\r\n nestedNodeMap = new Map<CmatSelectTreeNode, CmatSelectTreeFlatNode>();\r\n\r\n selectedParent: CmatSelectTreeFlatNode | null = null;\r\n\r\n checklistSelection = new SelectionModel<CmatSelectTreeFlatNode>(true);\r\n\r\n treeDataSource: CmatSelectTreeNode[];\r\n dataFlatNodes: CmatSelectTreeFlatNode[];\r\n\r\n overallFilterControl: FormControl = new FormControl();\r\n\r\n isIndeterminate = false;\r\n isChecked = false;\r\n\r\n checkCount: number = 0;\r\n\r\n selectControl: FormControl = new FormControl();\r\n matSelectData: ReplaySubject<any[]> = new ReplaySubject<any[]>(1);\r\n\r\n readonly stateChanges: Subject<void> = new Subject<void>();\r\n focused: boolean = false;\r\n touched: boolean = false;\r\n\r\n ngControl = inject(NgControl, { optional: true, self: true })!;\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n private _matSelect: MatSelect;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor() {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n @ViewChild('componentTree', { static: false }) tree: CdkTree<CmatSelectTreeNode>;\r\n\r\n @ViewChild('componentSelect', { static: false }) set matSelect(m: MatSelect) {\r\n const existsSelect = !isUndefined(this._matSelect);\r\n this._matSelect = m;\r\n\r\n if (!existsSelect) {\r\n this._init(this.value);\r\n\r\n this._matSelect.setDisabledState(this.disabled);\r\n }\r\n }\r\n\r\n @HostListener('document:click')\r\n clickedOut(): void {\r\n if (!this._matSelect?.panelOpen) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n getLevel = (dataNode: CmatSelectTreeFlatNode): number => dataNode.level;\r\n\r\n childrenAccessor: (node: CmatSelectTreeNode) => CmatSelectTreeNode[] = (node: CmatSelectTreeNode) => node.children ?? [];\r\n\r\n hasChild: (_: number, node: CmatSelectTreeNode) => boolean = (_: number, node: CmatSelectTreeNode) => !!node.children && node.children.length > 0;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['dataSource']) {\r\n this.treeDataSource = this.dataSource;\r\n this.dataFlatNodes = this._getFlattenNodes(this.dataSource);\r\n this.matSelectData.next(this.dataFlatNodes);\r\n\r\n if (this.dataSource.length > 0) {\r\n this._init(this.value);\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n let panelClass: string = '';\r\n if (!this.overallSearchEnabled) {\r\n panelClass = 'cmat-select-search-panel overflow-y-auto scrollbar-custom';\r\n }\r\n\r\n if (this._matSelect.panelClass) {\r\n if (Array.isArray(this._matSelect.panelClass)) {\r\n (this._matSelect.panelClass as string[]).push(panelClass);\r\n } else if (typeof this._matSelect.panelClass === 'string') {\r\n this._matSelect.panelClass = [this._matSelect.panelClass, panelClass];\r\n } else if (typeof this._matSelect.panelClass === 'object') {\r\n this._matSelect.panelClass.entries[panelClass] = true;\r\n }\r\n } else {\r\n this._matSelect.panelClass = panelClass;\r\n }\r\n\r\n merge(this.overallFilterControl.valueChanges)\r\n .pipe(takeUntil(this._unsubscribeAll), debounceTime(200))\r\n .subscribe(() => {\r\n const dataClone: CmatSelectTreeNode[] = JSON.parse(JSON.stringify([...this.dataSource]));\r\n\r\n const arr: number[] = [];\r\n\r\n for (let i = dataClone.length - 1; i >= 0; i--) {\r\n if (!this._applyColumnLevelFilters(dataClone[i], this.overallFilterControl.value.toLowerCase())) {\r\n arr.push(i);\r\n }\r\n }\r\n arr.forEach((v) => { dataClone.splice(v, 1); });\r\n\r\n this.treeDataSource = dataClone;\r\n this.dataFlatNodes = this._getFlattenNodes(dataClone);\r\n this.matSelectData.next(this.dataFlatNodes);\r\n\r\n if (this.expandable) {\r\n this.tree.expandAll();\r\n }\r\n this._updateSelect(this.checklistSelection.selected);\r\n\r\n this._changeDetectorRef.detectChanges();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n @Input()\r\n get placeholder(): string {\r\n return this._placeholder;\r\n }\r\n set placeholder(value: string) {\r\n this._placeholder = value;\r\n this.stateChanges.next();\r\n }\r\n private _placeholder: string = '';\r\n\r\n @Input()\r\n get value(): any {\r\n return this._value;\r\n }\r\n set value(value: any) {\r\n if (value !== this.value) {\r\n this._value = value;\r\n\r\n this.stateChanges.next();\r\n\r\n this._onModelChange(value);\r\n }\r\n }\r\n protected _value: any;\r\n\r\n get empty(): boolean {\r\n return !this._value;\r\n }\r\n\r\n get errorState(): boolean {\r\n if (this.ngControl == null)\r\n return false;\r\n\r\n return (this.touched && this.ngControl?.invalid) ?? false;\r\n }\r\n\r\n get shouldLabelFloat(): boolean {\r\n return this.focused || !this.empty;\r\n }\r\n\r\n @Input()\r\n get required(): boolean { return this._required; }\r\n set required(value: any) {\r\n this._required = coerceBooleanProperty(value);\r\n this.stateChanges.next();\r\n }\r\n protected _required = false;\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n if (!isNil(this.ngControl?.disabled)) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n set disabled(value: BooleanInput) {\r\n this._disabled = coerceBooleanProperty(value);\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n protected _disabled = false;\r\n\r\n registerOnChange(fn: any): void {\r\n this._onModelChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouchedChange = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._matSelect?.setDisabledState(isDisabled);\r\n }\r\n\r\n setDescribedByIds(ids: string[]): void {\r\n this._matSelect?.setDescribedByIds(ids);\r\n }\r\n\r\n onContainerClick(): void {\r\n if (!this.focused) {\r\n this._matSelect?.focus();\r\n }\r\n }\r\n\r\n onFocusIn(): void {\r\n if (!this.focused) {\r\n this.focused = true;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onFocusOut(event: FocusEvent): void {\r\n if (!this._matSelect.panel.nativeElement.contains(event.relatedTarget as Element)) {\r\n this.touched = true;\r\n this.focused = false;\r\n this._onTouchedChange();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this._init(value);\r\n }\r\n\r\n simpleTriggerLabelFn(value: CmatSelectTreeFlatNode[]): string {\r\n return value.map((node) => {\r\n\r\n if (isNil(node)) {\r\n return '';\r\n }\r\n if (isNil(this.customTriggerLabelTemplate)\r\n || typeof this.customTriggerLabelTemplate !== 'string'\r\n || this.customTriggerLabelTemplate.trim().length === 0) {\r\n return `${node.id}`;\r\n }\r\n let atLeastPartialSubstitution = false;\r\n const substitution: string = this.customTriggerLabelTemplate.replace(/[$][{]([^}]+)[}]/g, (_, key) =>\r\n !isNil((node as any)[key]) && (atLeastPartialSubstitution = true) ? (node as any)[key] : '');\r\n if (atLeastPartialSubstitution === false) {\r\n return `${node.id}`;\r\n }\r\n return substitution.trim();\r\n }).join(', ');\r\n }\r\n\r\n openedChange(opened: boolean): void {\r\n if (opened) {\r\n if (this.multiple) {\r\n this.checklistSelection.selected.forEach((node) => {\r\n if (node.expandable) {\r\n const descendants = this._getDescendants(node);\r\n this.checklistSelection.select(...descendants);\r\n }\r\n });\r\n\r\n this._updateSelect(this.checklistSelection.selected);\r\n }\r\n\r\n if (this.expandable) {\r\n this.tree.expandAll();\r\n }\r\n } else {\r\n setTimeout(() => {\r\n if (!isNil(this.checklistSelection.selected)) {\r\n\r\n if (this.multiple) {\r\n const findOutNode: CmatSelectTreeFlatNode[] = [];\r\n this.checklistSelection.selected.forEach((node) => {\r\n const parentNode = this._getParentNode(node);\r\n if (parentNode && this.checklistSelection.isSelected(parentNode)) {\r\n findOutNode.push(node);\r\n }\r\n });\r\n\r\n findOutNode.forEach((node) => {\r\n this.checklistSelection.deselect(node);\r\n });\r\n\r\n this.value = this.checklistSelection.selected;\r\n } else {\r\n if (this.checklistSelection.selected && this.checklistSelection.selected.length > 0) {\r\n this.value = this.checklistSelection.selected[0];\r\n }\r\n }\r\n\r\n this._matSelect.writeValue(this.value);\r\n this._matSelect._onChange(this.value);\r\n }\r\n }, 100);\r\n }\r\n }\r\n /** Whether all the descendants of the node are selected. */\r\n descendantsAllSelected(node: CmatSelectTreeFlatNode): boolean {\r\n const descendants = this._getDescendants(node);\r\n return descendants.every(child =>\r\n this.checklistSelection.isSelected(child)\r\n );\r\n }\r\n\r\n /** Whether part of the descendants are selected */\r\n descendantsPartiallySelected(node: CmatSelectTreeFlatNode): boolean {\r\n const descendants = this._getDescendants(node);\r\n const result = descendants.some(child => this.checklistSelection.isSelected(child));\r\n return result && !descendants.every(child => this.checklistSelection.isSelected(child));\r\n }\r\n\r\n /** Toggle the to-do item selection. Select/deselect all the descendants node */\r\n todoItemSelectionToggle(event: any, node: CmatSelectTreeFlatNode): void {\r\n event.stopPropagation();\r\n if (this.multiple) {\r\n this.checklistSelection.toggle(node);\r\n\r\n const descendants = this._getDescendants(node);\r\n const diffCount = descendants.filter(child =>\r\n this.checklistSelection.isSelected(child)\r\n ).length;\r\n\r\n if (this.checklistSelection.isSelected(node)) {\r\n this.checklistSelection.select(...descendants);\r\n\r\n this.checkCount = this.checkCount + 1 + descendants.length - diffCount;\r\n } else {\r\n this.checklistSelection.deselect(...descendants);\r\n\r\n this.checkCount = this.checkCount - 1 - descendants.length;\r\n }\r\n\r\n this._checkAllParentsSelection(node);\r\n\r\n this._updateCheckState();\r\n } else {\r\n this.checklistSelection.clear();\r\n this.checklistSelection.select(node);\r\n\r\n this._matSelect.close();\r\n }\r\n }\r\n\r\n /** Toggle a leaf to-do item selection. Check all the parents to see if they changed */\r\n todoLeafItemSelectionToggle(event: any, node: CmatSelectTreeFlatNode): void {\r\n event.stopPropagation();\r\n if (this.multiple) {\r\n this.checklistSelection.toggle(node);\r\n\r\n this.checklistSelection.isSelected(node) ? this.checkCount += 1 : this.checkCount -= 1;\r\n\r\n this._checkAllParentsSelection(node);\r\n\r\n this._updateCheckState();\r\n } else {\r\n this.checklistSelection.clear();\r\n this.checklistSelection.select(node);\r\n\r\n this._matSelect.close();\r\n }\r\n }\r\n\r\n clearSelection(): void {\r\n this.checklistSelection.clear();\r\n this.isChecked = false;\r\n this.isIndeterminate = false;\r\n\r\n this.checkCount = 0;\r\n\r\n this.value = null;\r\n this._matSelect.writeValue(null);\r\n this._matSelect._onChange(null);\r\n }\r\n\r\n\r\n\r\n toggleSelectAll(selectAllValue: boolean): void {\r\n if (selectAllValue) {\r\n this.dataFlatNodes.forEach((node) => {\r\n this.checklistSelection.select(node);\r\n });\r\n this.isIndeterminate = false;\r\n this.isChecked = true;\r\n\r\n this.checkCount = this.checklistSelection.selected.length;\r\n } else {\r\n this.checklistSelection.clear();\r\n this.isChecked = false;\r\n this.isIndeterminate = false;\r\n\r\n this.checkCount = 0;\r\n }\r\n }\r\n\r\n getChecklistSelectionIsSelected(i: CmatSelectTreeNode): boolean {\r\n return this.checklistSelection.isSelected(this.nestedNodeMap.get(i)!);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private _onModelChange: (value: any) => void = () => { };\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private _onTouchedChange: () => any = () => { };\r\n\r\n private _init(v: any): void {\r\n if (this.dataSource.length > 0 && this.treeDataSource && this._matSelect) {\r\n if (this.expandable) {\r\n this.tree.expandAll();\r\n }\r\n\r\n if (!isNil(v)) {\r\n this._updateChecklistSelection(v);\r\n } else {\r\n this.checklistSelection.clear();\r\n }\r\n\r\n if (v && v.length > 0) {\r\n\r\n if (this.multiple) {\r\n const findOutNode: CmatSelectTreeFlatNode[] = [];\r\n this.checklistSelection.selected.forEach((node) => {\r\n const parentNode = this._getParentNode(node);\r\n if (parentNode && this.checklistSelection.isSelected(parentNode)) {\r\n findOutNode.push(node);\r\n }\r\n });\r\n\r\n findOutNode.forEach((node) => {\r\n this.checklistSelection.deselect(node);\r\n });\r\n\r\n this.value = this.checklistSelection.selected;\r\n\r\n this.checkCount = this.checklistSelection.selected.length;\r\n\r\n } else {\r\n this.value = this.checklistSelection.selected;\r\n\r\n this.checkCount = 1;\r\n }\r\n\r\n } else {\r\n this.value = v;\r\n this.checkCount = 0;\r\n }\r\n this._matSelect.writeValue(this.value);\r\n this._matSelect._onChange(this.value);\r\n\r\n this._updateCheckState();\r\n\r\n this._changeDetectorRef.markForCheck();\r\n } else {\r\n this.value = v;\r\n }\r\n }\r\n /* Checks all the parents when a leaf node is selected/unselected */\r\n private _checkAllParentsSelection(node: CmatSelectTreeFlatNode): void {\r\n let parent: CmatSelectTreeFlatNode | null = this._getParentNode(node);\r\n while (parent) {\r\n parent.expandable = true;\r\n this.tree.expand(this.flatNodeMap.get(parent)!);\r\n this._checkRootNodeSelection(parent);\r\n parent = this._getParentNode(parent);\r\n }\r\n }\r\n\r\n /** Check root node checked state and change it accordingly */\r\n private _checkRootNodeSelection(node: CmatSelectTreeFlatNode): void {\r\n const nodeSelected = this.checklistSelection.isSelected(node);\r\n const descendants = this._getDescendants(node);\r\n const descAllSelected = descendants.every(child =>\r\n this.checklistSelection.isSelected(child)\r\n );\r\n if (nodeSelected && !descAllSelected) {\r\n this.checklistSelection.deselect(node);\r\n\r\n this.checkCount -= 1;\r\n } else if (!nodeSelected && (descAllSelected || descendants.length === 0)) {\r\n this.checklistSelection.select(node);\r\n\r\n this.checkCount += 1;\r\n }\r\n }\r\n\r\n /* Get the parent node of a node */\r\n private _getParentNode(node: CmatSelectTreeFlatNode): CmatSelectTreeFlatNode | null {\r\n const currentLevel = this.getLevel(node);\r\n\r\n if (currentLevel < 1) {\r\n return null;\r\n }\r\n\r\n const startIndex = this.dataFlatNodes.findIndex(j => j === node) - 1;\r\n\r\n for (let i = startIndex; i >= 0; i--) {\r\n const currentNode = this.dataFlatNodes[i];\r\n\r\n if (this.getLevel(currentNode) < currentLevel) {\r\n return currentNode;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _updateChecklistSelection(value: any[]): void {\r\n this.checklistSelection.clear();\r\n if (!isNil(value)) {\r\n const valueArray: any[] = !Array.isArray(value) ? [value] : value;\r\n valueArray.forEach((item) => {\r\n const nodeFound = this.dataFlatNodes.find(node => node.id === item.id);\r\n if (isNil(nodeFound)) {\r\n return;\r\n }\r\n this.checklistSelection.select(nodeFound);\r\n });\r\n }\r\n }\r\n\r\n private _updateSelect(value: any[]): void {\r\n if (!isNil(value)) {\r\n const valueArray: any[] = !Array.isArray(value) ? [value] : value;\r\n\r\n this.checkCount = 0;\r\n\r\n if (this.overallSearchEnabled)//有搜索功能,转化选中节点为当前数据源节点\r\n {\r\n valueArray.forEach((item) => {\r\n const nodeFound = this.dataFlatNodes.find(node => node.id === item.id);\r\n if (isNil(nodeFound)) {\r\n return;\r\n }\r\n\r\n this.checkCount += 1;\r\n\r\n this.checklistSelection.deselect(item);\r\n\r\n this.checklistSelection.select(nodeFound);\r\n });\r\n }\r\n\r\n if (this.multiple) {\r\n this.checklistSelection.selected.forEach((item) => {\r\n this._checkAllParentsSelection(item);\r\n });\r\n }\r\n\r\n this._updateCheckState();\r\n }\r\n }\r\n\r\n private _applyColumnLevelFilters(node: CmatSelectTreeNode, filter: string): boolean {\r\n let result = false;\r\n\r\n if (node?.children && node.children.length > 0) {\r\n for (let i = node.children.length - 1; i >= 0; i--) {\r\n const resultTemp = this._applyColumnLevelFilters(node.children[i], filter);\r\n\r\n if (!resultTemp) {\r\n node.children.splice(i, 1);\r\n }\r\n\r\n result = resultTemp || result;\r\n }\r\n }\r\n\r\n if (node?.children?.length === 0) {\r\n node.children = null;\r\n }\r\n\r\n const cellValue = node['name'].toLowerCase();\r\n if (cellValue.includes(filter)) {\r\n result = true;\r\n }\r\n return result;\r\n }\r\n\r\n private _updateCheckState(): void {\r\n if (this.showToggleAllCheckbox && this.dataSource.length > 0) {\r\n this.isIndeterminate = this.checkCount < this.dataFlatNodes.length && this.checkCount > 0;\r\n this.isChecked = this.checkCount === this.dataFlatNodes.length && this.checkCount > 0;\r\n }\r\n }\r\n\r\n private _getFlattenNodes(nodes: CmatSelectTreeNode[], i: number = 0): CmatSelectTreeFlatNode[] {\r\n const flattenedNodes: CmatSelectTreeFlatNode[] = [];\r\n\r\n for (const node of nodes) {\r\n flattenedNodes.push(this._transformer(node, i));\r\n if (node.children) {\r\n flattenedNodes.push(...this._getFlattenNodes(node.children, i + 1));\r\n }\r\n }\r\n return flattenedNodes;\r\n }\r\n\r\n private _transformer = (node: CmatSelectTreeNode, level: number): CmatSelectTreeFlatNode => {\r\n const existingNode = this.nestedNodeMap.get(node);\r\n const flatNode = existingNode?.name === node.name\r\n ? existingNode\r\n : new CmatSelectTreeFlatNode();\r\n flatNode.id = node.id;\r\n flatNode.name = node.name;\r\n flatNode.level = level;\r\n flatNode.expandable = !!node.children && node.children.length > 0;\r\n this.flatNodeMap.set(flatNode, node);\r\n this.nestedNodeMap.set(node, flatNode);\r\n return flatNode;\r\n };\r\n\r\n private _getDescendants(dataNode: CmatSelectTreeFlatNode): CmatSelectTreeFlatNode[] {\r\n const startIndex = this.dataFlatNodes.findIndex(j => j === dataNode);\r\n const results: CmatSelectTreeFlatNode[] = [];\r\n\r\n for (let i = startIndex + 1;\r\n i < this.dataFlatNodes.length && this.getLevel(dataNode) < this.getLevel(this.dataFlatNodes[i]);\r\n i++) {\r\n results.push(this.dataFlatNodes[i]);\r\n }\r\n return results;\r\n }\r\n\r\n}\r\n","@if(multiple){\r\n<mat-select #componentSelect multiple panelClass=\"overflow-y-auto scrollbar-custom\" [placeholder]=\"placeholder\" [required]=\"required\"\r\n [formControl]=\"selectControl\" [compareWith]=\"compareWith\" (openedChange)=\"openedChange($event)\" (focusin)=\"onFocusIn()\">\r\n <mat-select-trigger>\r\n @if (!customTriggerLabelFn) {\r\n {{simpleTriggerLabelFn(checklistSelection.selected)}}\r\n }\r\n @else{\r\n {{customTriggerLabelFn}}\r\n }\r\n </mat-select-trigger>\r\n\r\n <div (focusout)=\"onFocusOut($event)\">\r\n @if (overallSearchEnabled) {\r\n <mat-option>\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"true\"\r\n [toggleAllCheckboxIndeterminate]=\"isIndeterminate\" [toggleAllCheckboxChecked]=\"isChecked\"\r\n [showToggleAllCheckbox]=\"showToggleAllCheckbox&&multiple\" (toggleAll)=\"toggleSelectAll($event)\">\r\n </cmat-select-search>\r\n </mat-option>\r\n }\r\n @for (selectData of matSelectData | async ; track $index) {\r\n <mat-option class=\"hidden\" [value]=\"selectData\">{{selectData.name}}</mat-option>\r\n }\r\n <mat-tree #componentTree [dataSource]=\"treeDataSource\" [childrenAccessor]=\"childrenAccessor\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodePadding\r\n [ngClass]=\"getChecklistSelectionIsSelected(node)?'selected':''\"\r\n (click)=\"todoLeafItemSelectionToggle($event,nestedNodeMap.get(node)!)\">\r\n <button type=\"button\" matIconButton disabled>\r\n\r\n </button>\r\n <mat-checkbox class=\"checklist-leaf-node text-current\" [color]=\"'primary'\"\r\n [checked]=\"getChecklistSelectionIsSelected(node)\">{{node.name}}</mat-checkbox>\r\n\r\n </mat-tree-node>\r\n\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\r\n [ngClass]=\"getChecklistSelectionIsSelected(node)?'selected':''\"\r\n (click)=\"todoItemSelectionToggle($event,nestedNodeMap.get(node)!)\">\r\n <button type=\"button\" matIconButton matTreeNodeToggle [attr.aria-label]=\"'toggle ' + node.name\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\"\r\n [svgIcon]=\"componentTree.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'\">\r\n </mat-icon>\r\n </button>\r\n\r\n <mat-checkbox class=\"text-current\" [checked]=\"descendantsAllSelected(nestedNodeMap.get(node)!)\"\r\n [color]=\"'primary'\"\r\n [indeterminate]=\"descendantsPartiallySelected(nestedNodeMap.get(node)!)\">{{node.name}}</mat-checkbox>\r\n\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n</mat-select>\r\n}\r\n@else {\r\n<mat-select #componentSelect panelClass=\"overflow-y-auto scrollbar-custom\" [placeholder]=\"placeholder\"\r\n [required]=\"required\" [formControl]=\"selectControl\" [compareWith]=\"compareWith\" (focusin)=\"onFocusIn()\" (openedChange)=\"openedChange($event)\">\r\n <mat-select-trigger>\r\n @if (!customTriggerLabelFn) {\r\n {{simpleTriggerLabelFn(checklistSelection.selected)}}\r\n }\r\n @else{\r\n {{customTriggerLabelFn}}\r\n }\r\n </mat-select-trigger>\r\n\r\n <div (focusout)=\"onFocusOut($event)\">\r\n @if (overallSearchEnabled) {\r\n <mat-option>\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"true\"\r\n [toggleAllCheckboxIndeterminate]=\"isIndeterminate\" [toggleAllCheckboxChecked]=\"isChecked\"\r\n [showToggleAllCheckbox]=\"false\" (toggleAll)=\"toggleSelectAll($event)\">\r\n </cmat-select-search>\r\n </mat-option>\r\n }\r\n @if (canNull&&treeDataSource.length!==0) {\r\n <mat-option class=\"pl-10\" (click)=\"clearSelection()\">空</mat-option>\r\n }\r\n @for (selectData of matSelectData | async ; track $index) {\r\n <mat-option class=\"hidden\" [value]=\"selectData\">{{selectData.name}}</mat-option>\r\n }\r\n\r\n <mat-tree #componentTree [dataSource]=\"treeDataSource\" [childrenAccessor]=\"childrenAccessor\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodePadding\r\n [ngClass]=\"getChecklistSelectionIsSelected(node)?'selected':''\"\r\n (click)=\"todoLeafItemSelectionToggle($event,nestedNodeMap.get(node)!)\">\r\n <button type=\"button\" matIconButton disabled>\r\n\r\n </button>\r\n <span class=\"text-current\">{{node.name}}</span>\r\n\r\n </mat-tree-node>\r\n\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\r\n [ngClass]=\"getChecklistSelectionIsSelected(node)?'selected':''\"\r\n (click)=\"todoItemSelectionToggle($event,nestedNodeMap.get(node)!)\">\r\n <button type=\"button\" matIconButton matTreeNodeToggle [attr.aria-label]=\"'toggle ' + node.name\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\"\r\n [svgIcon]=\"componentTree.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'\">\r\n </mat-icon>\r\n </button>\r\n <span class=\"text-current\">{{node.name}}</span>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n</mat-select>\r\n}","export class CmatSelectTreeNode {\r\n id: string | number;\r\n children: CmatSelectTreeNode[] | null;\r\n name: string;\r\n}\r\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":"cmat-components-select-tree.mjs","sources":["../../../projects/cmat/components/select-tree/select-tree.flatnode.ts","../../../projects/cmat/components/select-tree/select-tree.component.ts","../../../projects/cmat/components/select-tree/select-tree.component.html","../../../projects/cmat/components/select-tree/select-tree.node.ts","../../../projects/cmat/components/select-tree/cmat-components-select-tree.ts"],"sourcesContent":["export class CmatSelectTreeFlatNode {\r\n id: string | number;\r\n name: string;\r\n level: number;\r\n expandable: boolean;\r\n}\r\n","/* eslint-disable @typescript-eslint/member-ordering */\r\nimport { coerceBooleanProperty, BooleanInput } from '@angular/cdk/coercion';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { CdkTree } from '@angular/cdk/tree';\r\nimport { NgClass, AsyncPipe } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, HostListener, Input, OnChanges, OnDestroy, SimpleChanges, ViewChild, ViewEncapsulation, inject } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, ReactiveFormsModule, NgControl } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatSelect, MatSelectModule } from '@angular/material/select';\r\nimport { MatTreeModule } from '@angular/material/tree';\r\nimport { isNil, isUndefined } from 'lodash-es';\r\nimport { merge, ReplaySubject, Subject } from 'rxjs';\r\nimport { debounceTime, takeUntil } from 'rxjs/operators';\r\nimport { CmatSelectSearchComponent } from 'cmat/components/select-search';\r\nimport { CmatSelectTreeFlatNode } from './select-tree.flatnode';\r\nimport { CmatSelectTreeNode } from './select-tree.node';\r\n\r\nlet NEXT_ID = 0;\r\n\r\n@Component({\r\n selector: 'cmat-select-tree',\r\n templateUrl: './select-tree.component.html',\r\n styleUrls: ['./select-tree.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: MatFormFieldControl, useExisting: CmatSelectTreeComponent }],\r\n exportAs: 'cmatSelectTree',\r\n imports: [MatIconModule, MatSelectModule, CmatSelectSearchComponent,\r\n ReactiveFormsModule, MatTreeModule, NgClass, MatButtonModule, MatCheckboxModule, AsyncPipe]\r\n})\r\nexport class CmatSelectTreeComponent implements MatFormFieldControl<any>, ControlValueAccessor, OnChanges, AfterViewInit, OnDestroy {\r\n @HostBinding('attr.id')\r\n @Input()\r\n public id = `cmat-select-tree-${NEXT_ID++}`;\r\n\r\n @Input() dataSource: CmatSelectTreeNode[];\r\n\r\n @Input() noEntriesFoundLabel = '无结果';\r\n\r\n @Input() showNoFoundLabel = true;\r\n\r\n @Input() multiple: boolean = false;\r\n\r\n @Input() overallSearchEnabled: boolean = true;\r\n\r\n @Input() canNull: boolean = false;\r\n\r\n @Input() customTriggerLabelFn: (value: CmatSelectTreeNode[]) => string;\r\n\r\n @Input() customTriggerLabelTemplate: string;\r\n\r\n @Input() expandable: boolean;\r\n\r\n @Input() showToggleAllCheckbox: boolean = false;\r\n\r\n @Input() compareWith: (o1: any, o2: any) => boolean = (o1, o2) => {\r\n return o1 && o2 ? o1?.name === o2?.name && o1?.id === o2?.id : o1 === o2;\r\n }\r\n\r\n flatNodeMap = new Map<CmatSelectTreeFlatNode, CmatSelectTreeNode>();\r\n\r\n nestedNodeMap = new Map<CmatSelectTreeNode, CmatSelectTreeFlatNode>();\r\n\r\n selectedParent: CmatSelectTreeFlatNode | null = null;\r\n\r\n checklistSelection = new SelectionModel<CmatSelectTreeFlatNode>(true);\r\n\r\n treeDataSource: CmatSelectTreeNode[];\r\n dataFlatNodes: CmatSelectTreeFlatNode[];\r\n\r\n overallFilterControl: FormControl = new FormControl();\r\n\r\n isIndeterminate = false;\r\n isChecked = false;\r\n\r\n checkCount: number = 0;\r\n\r\n selectControl: FormControl = new FormControl();\r\n matSelectData: ReplaySubject<any[]> = new ReplaySubject<any[]>(1);\r\n\r\n readonly stateChanges: Subject<void> = new Subject<void>();\r\n focused: boolean = false;\r\n touched: boolean = false;\r\n\r\n ngControl = inject(NgControl, { optional: true, self: true })!;\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n private _matSelect: MatSelect;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor() {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n @ViewChild('componentTree', { static: false }) tree: CdkTree<CmatSelectTreeNode>;\r\n\r\n @ViewChild('componentSelect', { static: false }) set matSelect(m: MatSelect) {\r\n const existsSelect = !isUndefined(this._matSelect);\r\n this._matSelect = m;\r\n\r\n if (!existsSelect) {\r\n this._init(this.value);\r\n\r\n this._matSelect.setDisabledState(this.disabled);\r\n }\r\n }\r\n\r\n @HostListener('document:click')\r\n clickedOut(): void {\r\n if (!this._matSelect?.panelOpen) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n getLevel = (dataNode: CmatSelectTreeFlatNode): number => dataNode.level;\r\n\r\n childrenAccessor: (node: CmatSelectTreeNode) => CmatSelectTreeNode[] = (node: CmatSelectTreeNode) => node.children ?? [];\r\n\r\n hasChild: (_: number, node: CmatSelectTreeNode) => boolean = (_: number, node: CmatSelectTreeNode) => !!node.children && node.children.length > 0;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['dataSource']) {\r\n this.treeDataSource = this.dataSource;\r\n this.dataFlatNodes = this._getFlattenNodes(this.dataSource);\r\n this.matSelectData.next(this.dataFlatNodes);\r\n\r\n if (this.dataSource.length > 0) {\r\n this._init(this.value);\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n let panelClass: string = '';\r\n if (!this.overallSearchEnabled) {\r\n panelClass = 'cmat-select-search-panel overflow-y-auto scrollbar-custom';\r\n }\r\n\r\n if (this._matSelect.panelClass) {\r\n if (Array.isArray(this._matSelect.panelClass)) {\r\n (this._matSelect.panelClass as string[]).push(panelClass);\r\n } else if (typeof this._matSelect.panelClass === 'string') {\r\n this._matSelect.panelClass = [this._matSelect.panelClass, panelClass];\r\n } else if (typeof this._matSelect.panelClass === 'object') {\r\n this._matSelect.panelClass.entries[panelClass] = true;\r\n }\r\n } else {\r\n this._matSelect.panelClass = panelClass;\r\n }\r\n\r\n merge(this.overallFilterControl.valueChanges)\r\n .pipe(takeUntil(this._unsubscribeAll), debounceTime(200))\r\n .subscribe(() => {\r\n const dataClone: CmatSelectTreeNode[] = JSON.parse(JSON.stringify([...this.dataSource]));\r\n\r\n const arr: number[] = [];\r\n\r\n for (let i = dataClone.length - 1; i >= 0; i--) {\r\n if (!this._applyColumnLevelFilters(dataClone[i], this.overallFilterControl.value.toLowerCase())) {\r\n arr.push(i);\r\n }\r\n }\r\n arr.forEach((v) => { dataClone.splice(v, 1); });\r\n\r\n this.treeDataSource = dataClone;\r\n this.dataFlatNodes = this._getFlattenNodes(dataClone);\r\n this.matSelectData.next(this.dataFlatNodes);\r\n\r\n if (this.expandable) {\r\n this.tree.expandAll();\r\n }\r\n this._updateSelect(this.checklistSelection.selected);\r\n\r\n this._changeDetectorRef.detectChanges();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n @Input()\r\n get placeholder(): string {\r\n return this._placeholder;\r\n }\r\n set placeholder(value: string) {\r\n this._placeholder = value;\r\n this.stateChanges.next();\r\n }\r\n private _placeholder: string = '';\r\n\r\n @Input()\r\n get value(): any {\r\n return this._value;\r\n }\r\n set value(value: any) {\r\n if (value !== this.value) {\r\n this._value = value;\r\n\r\n this.stateChanges.next();\r\n\r\n this._onModelChange(value);\r\n }\r\n }\r\n protected _value: any;\r\n\r\n get empty(): boolean {\r\n return !this._value;\r\n }\r\n\r\n get errorState(): boolean {\r\n if (this.ngControl == null)\r\n return false;\r\n\r\n return (this.touched && this.ngControl?.invalid) ?? false;\r\n }\r\n\r\n get shouldLabelFloat(): boolean {\r\n return this.focused || !this.empty;\r\n }\r\n\r\n @Input()\r\n get required(): boolean { return this._required; }\r\n set required(value: any) {\r\n this._required = coerceBooleanProperty(value);\r\n this.stateChanges.next();\r\n }\r\n protected _required = false;\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n if (!isNil(this.ngControl?.disabled)) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n set disabled(value: BooleanInput) {\r\n this._disabled = coerceBooleanProperty(value);\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n protected _disabled = false;\r\n\r\n registerOnChange(fn: any): void {\r\n this._onModelChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouchedChange = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._matSelect?.setDisabledState(isDisabled);\r\n }\r\n\r\n setDescribedByIds(ids: string[]): void {\r\n this._matSelect?.setDescribedByIds(ids);\r\n }\r\n\r\n onContainerClick(): void {\r\n if (!this.focused) {\r\n this._matSelect?.focus();\r\n }\r\n }\r\n\r\n onFocusIn(): void {\r\n if (!this.focused) {\r\n this.focused = true;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onFocusOut(event: FocusEvent): void {\r\n if (!this._matSelect.panel.nativeElement.contains(event.relatedTarget as Element)) {\r\n this.touched = true;\r\n this.focused = false;\r\n this._onTouchedChange();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this._init(value);\r\n }\r\n\r\n simpleTriggerLabelFn(value: CmatSelectTreeFlatNode[]): string {\r\n return value.map((node) => {\r\n\r\n if (isNil(node)) {\r\n return '';\r\n }\r\n if (isNil(this.customTriggerLabelTemplate)\r\n || typeof this.customTriggerLabelTemplate !== 'string'\r\n || this.customTriggerLabelTemplate.trim().length === 0) {\r\n return `${node.id}`;\r\n }\r\n let atLeastPartialSubstitution = false;\r\n const substitution: string = this.customTriggerLabelTemplate.replace(/[$][{]([^}]+)[}]/g, (_, key) =>\r\n !isNil((node as any)[key]) && (atLeastPartialSubstitution = true) ? (node as any)[key] : '');\r\n if (atLeastPartialSubstitution === false) {\r\n return `${node.id}`;\r\n }\r\n return substitution.trim();\r\n }).join(', ');\r\n }\r\n\r\n openedChange(opened: boolean): void {\r\n if (opened) {\r\n if (this.multiple) {\r\n this.checklistSelection.selected.forEach((node) => {\r\n if (node.expandable) {\r\n const descendants = this._getDescendants(node);\r\n this.checklistSelection.select(...descendants);\r\n }\r\n });\r\n\r\n this._updateSelect(this.checklistSelection.selected);\r\n }\r\n\r\n if (this.expandable) {\r\n this.tree.expandAll();\r\n }\r\n } else {\r\n setTimeout(() => {\r\n if (!isNil(this.checklistSelection.selected)) {\r\n\r\n if (this.multiple) {\r\n const findOutNode: CmatSelectTreeFlatNode[] = [];\r\n this.checklistSelection.selected.forEach((node) => {\r\n const parentNode = this._getParentNode(node);\r\n if (parentNode && this.checklistSelection.isSelected(parentNode)) {\r\n findOutNode.push(node);\r\n }\r\n });\r\n\r\n findOutNode.forEach((node) => {\r\n this.checklistSelection.deselect(node);\r\n });\r\n\r\n this.value = this.checklistSelection.selected.length > 0 ? [...this.checklistSelection.selected] : null;\r\n } else {\r\n if (this.checklistSelection.selected && this.checklistSelection.selected.length > 0) {\r\n this.value = { ...this.checklistSelection.selected[0] };\r\n }\r\n }\r\n\r\n this._matSelect.writeValue(this.value);\r\n this._matSelect._onChange(this.value);\r\n }\r\n }, 100);\r\n }\r\n }\r\n /** Whether all the descendants of the node are selected. */\r\n descendantsAllSelected(node: CmatSelectTreeFlatNode): boolean {\r\n const descendants = this._getDescendants(node);\r\n return descendants.every(child =>\r\n this.checklistSelection.isSelected(child)\r\n );\r\n }\r\n\r\n /** Whether part of the descendants are selected */\r\n descendantsPartiallySelected(node: CmatSelectTreeFlatNode): boolean {\r\n const descendants = this._getDescendants(node);\r\n const result = descendants.some(child => this.checklistSelection.isSelected(child));\r\n return result && !descendants.every(child => this.checklistSelection.isSelected(child));\r\n }\r\n\r\n /** Toggle the to-do item selection. Select/deselect all the descendants node */\r\n todoItemSelectionToggle(event: any, node: CmatSelectTreeFlatNode): void {\r\n event.stopPropagation();\r\n if (this.multiple) {\r\n this.checklistSelection.toggle(node);\r\n\r\n const descendants = this._getDescendants(node);\r\n const diffCount = descendants.filter(child =>\r\n this.checklistSelection.isSelected(child)\r\n ).length;\r\n\r\n if (this.checklistSelection.isSelected(node)) {\r\n this.checklistSelection.select(...descendants);\r\n\r\n this.checkCount = this.checkCount + 1 + descendants.length - diffCount;\r\n } else {\r\n this.checklistSelection.deselect(...descendants);\r\n\r\n this.checkCount = this.checkCount - 1 - descendants.length;\r\n }\r\n\r\n this._checkAllParentsSelection(node);\r\n\r\n this._updateCheckState();\r\n } else {\r\n this.checklistSelection.clear();\r\n this.checklistSelection.select(node);\r\n\r\n this._matSelect.close();\r\n }\r\n }\r\n\r\n /** Toggle a leaf to-do item selection. Check all the parents to see if they changed */\r\n todoLeafItemSelectionToggle(event: any, node: CmatSelectTreeFlatNode): void {\r\n event.stopPropagation();\r\n if (this.multiple) {\r\n this.checklistSelection.toggle(node);\r\n\r\n this.checklistSelection.isSelected(node) ? this.checkCount += 1 : this.checkCount -= 1;\r\n\r\n this._checkAllParentsSelection(node);\r\n\r\n this._updateCheckState();\r\n } else {\r\n this.checklistSelection.clear();\r\n this.checklistSelection.select(node);\r\n\r\n this._matSelect.close();\r\n }\r\n }\r\n\r\n clearSelection(): void {\r\n this.checklistSelection.clear();\r\n this.isChecked = false;\r\n this.isIndeterminate = false;\r\n\r\n this.checkCount = 0;\r\n\r\n this.value = null;\r\n this._matSelect.writeValue(null);\r\n this._matSelect._onChange(null);\r\n }\r\n\r\n\r\n\r\n toggleSelectAll(selectAllValue: boolean): void {\r\n if (selectAllValue) {\r\n this.dataFlatNodes.forEach((node) => {\r\n this.checklistSelection.select(node);\r\n });\r\n this.isIndeterminate = false;\r\n this.isChecked = true;\r\n\r\n this.checkCount = this.checklistSelection.selected.length;\r\n } else {\r\n this.checklistSelection.clear();\r\n this.isChecked = false;\r\n this.isIndeterminate = false;\r\n\r\n this.checkCount = 0;\r\n }\r\n }\r\n\r\n getChecklistSelectionIsSelected(i: CmatSelectTreeNode): boolean {\r\n return this.checklistSelection.isSelected(this.nestedNodeMap.get(i)!);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private _onModelChange: (value: any) => void = () => { };\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private _onTouchedChange: () => any = () => { };\r\n\r\n private _init(v: any): void {\r\n if (this.dataSource.length > 0 && this.treeDataSource && this._matSelect) {\r\n if (this.expandable) {\r\n this.tree.expandAll();\r\n }\r\n\r\n if (!isNil(v)) {\r\n this._updateChecklistSelection(v);\r\n } else {\r\n this.checklistSelection.clear();\r\n }\r\n\r\n if (v && v.length > 0) {\r\n\r\n if (this.multiple) {\r\n const findOutNode: CmatSelectTreeFlatNode[] = [];\r\n this.checklistSelection.selected.forEach((node) => {\r\n const parentNode = this._getParentNode(node);\r\n if (parentNode && this.checklistSelection.isSelected(parentNode)) {\r\n findOutNode.push(node);\r\n }\r\n });\r\n\r\n findOutNode.forEach((node) => {\r\n this.checklistSelection.deselect(node);\r\n });\r\n\r\n this.value = this.checklistSelection.selected;\r\n\r\n this.checkCount = this.checklistSelection.selected.length;\r\n\r\n } else {\r\n this.value = this.checklistSelection.selected;\r\n\r\n this.checkCount = 1;\r\n }\r\n\r\n } else {\r\n this.value = v;\r\n this.checkCount = 0;\r\n }\r\n this._matSelect.writeValue(this.value);\r\n this._matSelect._onChange(this.value);\r\n\r\n this._updateCheckState();\r\n\r\n this._changeDetectorRef.markForCheck();\r\n } else {\r\n this.value = v;\r\n }\r\n }\r\n /* Checks all the parents when a leaf node is selected/unselected */\r\n private _checkAllParentsSelection(node: CmatSelectTreeFlatNode): void {\r\n let parent: CmatSelectTreeFlatNode | null = this._getParentNode(node);\r\n while (parent) {\r\n parent.expandable = true;\r\n this.tree.expand(this.flatNodeMap.get(parent)!);\r\n this._checkRootNodeSelection(parent);\r\n parent = this._getParentNode(parent);\r\n }\r\n }\r\n\r\n /** Check root node checked state and change it accordingly */\r\n private _checkRootNodeSelection(node: CmatSelectTreeFlatNode): void {\r\n const nodeSelected = this.checklistSelection.isSelected(node);\r\n const descendants = this._getDescendants(node);\r\n const descAllSelected = descendants.every(child =>\r\n this.checklistSelection.isSelected(child)\r\n );\r\n if (nodeSelected && !descAllSelected) {\r\n this.checklistSelection.deselect(node);\r\n\r\n this.checkCount -= 1;\r\n } else if (!nodeSelected && (descAllSelected || descendants.length === 0)) {\r\n this.checklistSelection.select(node);\r\n\r\n this.checkCount += 1;\r\n }\r\n }\r\n\r\n /* Get the parent node of a node */\r\n private _getParentNode(node: CmatSelectTreeFlatNode): CmatSelectTreeFlatNode | null {\r\n const currentLevel = this.getLevel(node);\r\n\r\n if (currentLevel < 1) {\r\n return null;\r\n }\r\n\r\n const startIndex = this.dataFlatNodes.findIndex(j => j === node) - 1;\r\n\r\n for (let i = startIndex; i >= 0; i--) {\r\n const currentNode = this.dataFlatNodes[i];\r\n\r\n if (this.getLevel(currentNode) < currentLevel) {\r\n return currentNode;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _updateChecklistSelection(value: any[]): void {\r\n this.checklistSelection.clear();\r\n if (!isNil(value)) {\r\n const valueArray: any[] = !Array.isArray(value) ? [value] : value;\r\n valueArray.forEach((item) => {\r\n const nodeFound = this.dataFlatNodes.find(node => node.id === item.id);\r\n if (isNil(nodeFound)) {\r\n return;\r\n }\r\n this.checklistSelection.select(nodeFound);\r\n });\r\n }\r\n }\r\n\r\n private _updateSelect(value: any[]): void {\r\n if (!isNil(value)) {\r\n const valueArray: any[] = !Array.isArray(value) ? [value] : value;\r\n\r\n this.checkCount = 0;\r\n\r\n if (this.overallSearchEnabled)//有搜索功能,转化选中节点为当前数据源节点\r\n {\r\n valueArray.forEach((item) => {\r\n const nodeFound = this.dataFlatNodes.find(node => node.id === item.id);\r\n if (isNil(nodeFound)) {\r\n return;\r\n }\r\n\r\n this.checkCount += 1;\r\n\r\n this.checklistSelection.deselect(item);\r\n\r\n this.checklistSelection.select(nodeFound);\r\n });\r\n }\r\n\r\n if (this.multiple) {\r\n this.checklistSelection.selected.forEach((item) => {\r\n this._checkAllParentsSelection(item);\r\n });\r\n }\r\n\r\n this._updateCheckState();\r\n }\r\n }\r\n\r\n private _applyColumnLevelFilters(node: CmatSelectTreeNode, filter: string): boolean {\r\n let result = false;\r\n\r\n if (node?.children && node.children.length > 0) {\r\n for (let i = node.children.length - 1; i >= 0; i--) {\r\n const resultTemp = this._applyColumnLevelFilters(node.children[i], filter);\r\n\r\n if (!resultTemp) {\r\n node.children.splice(i, 1);\r\n }\r\n\r\n result = resultTemp || result;\r\n }\r\n }\r\n\r\n if (node?.children?.length === 0) {\r\n node.children = null;\r\n }\r\n\r\n const cellValue = node['name'].toLowerCase();\r\n if (cellValue.includes(filter)) {\r\n result = true;\r\n }\r\n return result;\r\n }\r\n\r\n private _updateCheckState(): void {\r\n if (this.showToggleAllCheckbox && this.dataSource.length > 0) {\r\n this.isIndeterminate = this.checkCount < this.dataFlatNodes.length && this.checkCount > 0;\r\n this.isChecked = this.checkCount === this.dataFlatNodes.length && this.checkCount > 0;\r\n }\r\n }\r\n\r\n private _getFlattenNodes(nodes: CmatSelectTreeNode[], i: number = 0): CmatSelectTreeFlatNode[] {\r\n const flattenedNodes: CmatSelectTreeFlatNode[] = [];\r\n\r\n for (const node of nodes) {\r\n flattenedNodes.push(this._transformer(node, i));\r\n if (node.children) {\r\n flattenedNodes.push(...this._getFlattenNodes(node.children, i + 1));\r\n }\r\n }\r\n return flattenedNodes;\r\n }\r\n\r\n private _transformer = (node: CmatSelectTreeNode, level: number): CmatSelectTreeFlatNode => {\r\n const existingNode = this.nestedNodeMap.get(node);\r\n const flatNode = existingNode?.name === node.name\r\n ? existingNode\r\n : new CmatSelectTreeFlatNode();\r\n flatNode.id = node.id;\r\n flatNode.name = node.name;\r\n flatNode.level = level;\r\n flatNode.expandable = !!node.children && node.children.length > 0;\r\n this.flatNodeMap.set(flatNode, node);\r\n this.nestedNodeMap.set(node, flatNode);\r\n return flatNode;\r\n };\r\n\r\n private _getDescendants(dataNode: CmatSelectTreeFlatNode): CmatSelectTreeFlatNode[] {\r\n const startIndex = this.dataFlatNodes.findIndex(j => j === dataNode);\r\n const results: CmatSelectTreeFlatNode[] = [];\r\n\r\n for (let i = startIndex + 1;\r\n i < this.dataFlatNodes.length && this.getLevel(dataNode) < this.getLevel(this.dataFlatNodes[i]);\r\n i++) {\r\n results.push(this.dataFlatNodes[i]);\r\n }\r\n return results;\r\n }\r\n\r\n}\r\n","@if(multiple){\r\n<mat-select #componentSelect multiple panelClass=\"overflow-y-auto scrollbar-custom\" [placeholder]=\"placeholder\" [required]=\"required\"\r\n [formControl]=\"selectControl\" [compareWith]=\"compareWith\" (openedChange)=\"openedChange($event)\" (focusin)=\"onFocusIn()\">\r\n <mat-select-trigger>\r\n @if (!customTriggerLabelFn) {\r\n {{simpleTriggerLabelFn(checklistSelection.selected)}}\r\n }\r\n @else{\r\n {{customTriggerLabelFn}}\r\n }\r\n </mat-select-trigger>\r\n\r\n <div (focusout)=\"onFocusOut($event)\">\r\n @if (overallSearchEnabled) {\r\n <mat-option>\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"true\"\r\n [toggleAllCheckboxIndeterminate]=\"isIndeterminate\" [toggleAllCheckboxChecked]=\"isChecked\"\r\n [showToggleAllCheckbox]=\"showToggleAllCheckbox&&multiple\" (toggleAll)=\"toggleSelectAll($event)\">\r\n </cmat-select-search>\r\n </mat-option>\r\n }\r\n @for (selectData of matSelectData | async ; track $index) {\r\n <mat-option class=\"hidden\" [value]=\"selectData\">{{selectData.name}}</mat-option>\r\n }\r\n <mat-tree #componentTree [dataSource]=\"treeDataSource\" [childrenAccessor]=\"childrenAccessor\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodePadding\r\n [ngClass]=\"getChecklistSelectionIsSelected(node)?'selected':''\"\r\n (click)=\"todoLeafItemSelectionToggle($event,nestedNodeMap.get(node)!)\">\r\n <button type=\"button\" matIconButton disabled>\r\n\r\n </button>\r\n <mat-checkbox class=\"checklist-leaf-node text-current\" [color]=\"'primary'\"\r\n [checked]=\"getChecklistSelectionIsSelected(node)\">{{node.name}}</mat-checkbox>\r\n\r\n </mat-tree-node>\r\n\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\r\n [ngClass]=\"getChecklistSelectionIsSelected(node)?'selected':''\"\r\n (click)=\"todoItemSelectionToggle($event,nestedNodeMap.get(node)!)\">\r\n <button type=\"button\" matIconButton matTreeNodeToggle [attr.aria-label]=\"'toggle ' + node.name\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\"\r\n [svgIcon]=\"componentTree.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'\">\r\n </mat-icon>\r\n </button>\r\n\r\n <mat-checkbox class=\"text-current\" [checked]=\"descendantsAllSelected(nestedNodeMap.get(node)!)\"\r\n [color]=\"'primary'\"\r\n [indeterminate]=\"descendantsPartiallySelected(nestedNodeMap.get(node)!)\">{{node.name}}</mat-checkbox>\r\n\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n</mat-select>\r\n}\r\n@else {\r\n<mat-select #componentSelect panelClass=\"overflow-y-auto scrollbar-custom\" [placeholder]=\"placeholder\"\r\n [required]=\"required\" [formControl]=\"selectControl\" [compareWith]=\"compareWith\" (focusin)=\"onFocusIn()\" (openedChange)=\"openedChange($event)\">\r\n <mat-select-trigger>\r\n @if (!customTriggerLabelFn) {\r\n {{simpleTriggerLabelFn(checklistSelection.selected)}}\r\n }\r\n @else{\r\n {{customTriggerLabelFn}}\r\n }\r\n </mat-select-trigger>\r\n\r\n <div (focusout)=\"onFocusOut($event)\">\r\n @if (overallSearchEnabled) {\r\n <mat-option>\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"true\"\r\n [toggleAllCheckboxIndeterminate]=\"isIndeterminate\" [toggleAllCheckboxChecked]=\"isChecked\"\r\n [showToggleAllCheckbox]=\"false\" (toggleAll)=\"toggleSelectAll($event)\">\r\n </cmat-select-search>\r\n </mat-option>\r\n }\r\n @if (canNull&&treeDataSource.length!==0) {\r\n <mat-option class=\"pl-10\" (click)=\"clearSelection()\">空</mat-option>\r\n }\r\n @for (selectData of matSelectData | async ; track $index) {\r\n <mat-option class=\"hidden\" [value]=\"selectData\">{{selectData.name}}</mat-option>\r\n }\r\n\r\n <mat-tree #componentTree [dataSource]=\"treeDataSource\" [childrenAccessor]=\"childrenAccessor\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodePadding\r\n [ngClass]=\"getChecklistSelectionIsSelected(node)?'selected':''\"\r\n (click)=\"todoLeafItemSelectionToggle($event,nestedNodeMap.get(node)!)\">\r\n <button type=\"button\" matIconButton disabled>\r\n\r\n </button>\r\n <span class=\"text-current\">{{node.name}}</span>\r\n\r\n </mat-tree-node>\r\n\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\r\n [ngClass]=\"getChecklistSelectionIsSelected(node)?'selected':''\"\r\n (click)=\"todoItemSelectionToggle($event,nestedNodeMap.get(node)!)\">\r\n <button type=\"button\" matIconButton matTreeNodeToggle [attr.aria-label]=\"'toggle ' + node.name\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\"\r\n [svgIcon]=\"componentTree.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'\">\r\n </mat-icon>\r\n </button>\r\n <span class=\"text-current\">{{node.name}}</span>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n</mat-select>\r\n}","export class CmatSelectTreeNode {\r\n id: string | number;\r\n children: CmatSelectTreeNode[] | null;\r\n name: string;\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cmat",
3
- "version": "0.0.68",
3
+ "version": "0.0.70",
4
4
  "author": {
5
5
  "name": "Yu Tao",
6
6
  "email": "916426364@qq.com"
@@ -9,7 +9,7 @@ import { Subject } from 'rxjs';
9
9
 
10
10
  interface CmatSelectTableRow {
11
11
  [key: string]: any;
12
- id: string | number | null;
12
+ id: string | number | null | undefined;
13
13
  }
14
14
  interface CmatSelectTableFilter {
15
15
  enabled?: boolean;