@intellegens/cornerstone-client-angular-material 0.0.9999-alpha-42 → 0.0.9999-alpha-43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, inject, input, Directive, contentChild, TemplateRef, output, signal, effect, Component } from '@angular/core';
2
+ import { Injectable, inject, input, Directive, contentChild, TemplateRef, output, signal, computed, effect, Component, untracked } from '@angular/core';
3
3
  import { MatPaginatorIntl, MatPaginator } from '@angular/material/paginator';
4
4
  import { MatSort } from '@angular/material/sort';
5
5
  import { ReadSelectedOrderingDirection } from '@intellegens/cornerstone-client-angular';
@@ -29,9 +29,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
29
29
  }] });
30
30
 
31
31
  /**
32
- * Directive used to pass data to the `CollectionViewAdapter`, uses `MatPaginatorIntlOverrides` to change pagination UI.
32
+ * Directive used to pass data to the `AngularCollectionViewAdapter`, uses `MatPaginatorIntlOverrides` to change pagination UI.
33
33
  */
34
- class MatTablePaginationDirective {
34
+ class MatTablePagination {
35
35
  _matPaginator = inject(MatPaginator);
36
36
  adapter = input(...(ngDevMode ? [undefined, { debugName: "adapter" }] : []));
37
37
  _subscription;
@@ -40,22 +40,21 @@ class MatTablePaginationDirective {
40
40
  const adapter = this.adapter();
41
41
  if (!adapter)
42
42
  return;
43
- const targetPage = event.pageIndex + 1;
44
- if (event.pageSize !== adapter.pageSize) {
43
+ if (event.pageSize !== adapter.pageSize()) {
45
44
  adapter.setPageSize(event.pageSize);
46
45
  }
47
- else if (targetPage !== adapter.currentPage) {
48
- adapter.jumpToPage(targetPage);
46
+ else if (event.pageIndex !== adapter.pageIndex()) {
47
+ adapter.setPageIndex(event.pageIndex);
49
48
  }
50
49
  });
51
50
  }
52
51
  ngOnDestroy() {
53
52
  this._subscription?.unsubscribe();
54
53
  }
55
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MatTablePaginationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
56
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: MatTablePaginationDirective, isStandalone: true, selector: "mat-paginator", inputs: { adapter: { classPropertyName: "adapter", publicName: "adapter", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: MatPaginatorIntl, useClass: MatPaginatorIntlOverrides }], ngImport: i0 });
54
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MatTablePagination, deps: [], target: i0.ɵɵFactoryTarget.Directive });
55
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: MatTablePagination, isStandalone: true, selector: "mat-paginator", inputs: { adapter: { classPropertyName: "adapter", publicName: "adapter", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: MatPaginatorIntl, useClass: MatPaginatorIntlOverrides }], ngImport: i0 });
57
56
  }
58
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MatTablePaginationDirective, decorators: [{
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MatTablePagination, decorators: [{
59
58
  type: Directive,
60
59
  args: [{
61
60
  selector: 'mat-paginator',
@@ -65,9 +64,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
65
64
  }], propDecorators: { adapter: [{ type: i0.Input, args: [{ isSignal: true, alias: "adapter", required: false }] }] } });
66
65
 
67
66
  /**
68
- * Directive used to pass data to the `CollectionViewAdapter` and reverse the default direction of shown table header sorting arrows
67
+ * Directive used to pass data to the `AngularCollectionViewAdapter` and reverse the default direction of shown table header sorting arrows
69
68
  */
70
- class MatTableSortDirective {
69
+ class MatTableSort {
71
70
  _matSort = inject(MatSort);
72
71
  adapter = input(...(ngDevMode ? [undefined, { debugName: "adapter" }] : []));
73
72
  ngOnInit() {
@@ -76,9 +75,11 @@ class MatTableSortDirective {
76
75
  const adapter = this.adapter();
77
76
  if (adapter) {
78
77
  // TODO: handle multiple columns - for now it only supports ordering by one column
79
- const initialSort = adapter.getCurrentOrdering()[0];
80
- this._matSort.active = (initialSort.orderByPath && initialSort.orderByPath[0]) || '';
81
- this._matSort.direction = initialSort.orderDirection === ReadSelectedOrderingDirection.Ascending ? 'desc' : 'asc'; // show reverse arrows
78
+ const initialSort = adapter.ordering()[0];
79
+ if (initialSort) {
80
+ this._matSort.active = initialSort.path[0] || '';
81
+ this._matSort.direction = initialSort.direction === ReadSelectedOrderingDirection.Ascending ? 'desc' : 'asc'; // show reverse arrows
82
+ }
82
83
  }
83
84
  }
84
85
  _subscription = this._matSort.sortChange.subscribe((event) => {
@@ -91,10 +92,10 @@ class MatTableSortDirective {
91
92
  ngOnDestroy() {
92
93
  this._subscription.unsubscribe();
93
94
  }
94
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MatTableSortDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
95
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: MatTableSortDirective, isStandalone: true, selector: "mat-table[matSort], table[mat-table][matSort]", inputs: { adapter: { classPropertyName: "adapter", publicName: "adapter", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
95
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MatTableSort, deps: [], target: i0.ɵɵFactoryTarget.Directive });
96
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.0", type: MatTableSort, isStandalone: true, selector: "mat-table[matSort], table[mat-table][matSort]", inputs: { adapter: { classPropertyName: "adapter", publicName: "adapter", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
96
97
  }
97
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MatTableSortDirective, decorators: [{
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: MatTableSort, decorators: [{
98
99
  type: Directive,
99
100
  args: [{
100
101
  selector: 'mat-table[matSort], table[mat-table][matSort]',
@@ -252,135 +253,114 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
252
253
  }]
253
254
  }] });
254
255
 
255
- class SearchInputComponent {
256
+ class SearchInput {
256
257
  searchAdapter = input.required(...(ngDevMode ? [{ debugName: "searchAdapter" }] : []));
257
258
  _inputTemplate = contentChild.required(TemplateRef);
258
259
  isFocused = output();
259
260
  _inputValue = signal('', ...(ngDevMode ? [{ debugName: "_inputValue" }] : []));
260
- _showInputField = true;
261
- ngOnInit() {
262
- this.searchAdapter().onChange.addEventListener(() => {
263
- this._inputValue.set(this.searchAdapter().searchText); // updates input field on change
264
- if (!this.searchAdapter().multiselect && this.searchAdapter().selectedItems.length > 0) {
265
- this._showInputField = false;
266
- }
267
- else
268
- this._showInputField = true;
269
- });
270
- }
271
- _onInput = effect(() => {
272
- this.searchAdapter().searchText = this._inputValue();
273
- }, ...(ngDevMode ? [{ debugName: "_onInput" }] : []));
274
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SearchInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
275
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: SearchInputComponent, isStandalone: true, selector: "app-search-input-component", inputs: { searchAdapter: { classPropertyName: "searchAdapter", publicName: "searchAdapter", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { isFocused: "isFocused" }, queries: [{ propertyName: "_inputTemplate", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-container\n *ngIf=\"_showInputField\"\n [ngTemplateOutlet]=\"_inputTemplate()\"\n [ngTemplateOutletContext]=\"{ inputValue: _inputValue, onFocus: isFocused }\"\n></ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
261
+ _showInputField = computed(() => {
262
+ const adapter = this.searchAdapter();
263
+ return adapter.options.multiselect || adapter.selection().length === 0;
264
+ }, ...(ngDevMode ? [{ debugName: "_showInputField" }] : []));
265
+ _syncFromAdapter = effect(() => {
266
+ this._inputValue.set(this.searchAdapter().text() ?? '');
267
+ }, ...(ngDevMode ? [{ debugName: "_syncFromAdapter" }] : []));
268
+ _syncToAdapter = effect(() => {
269
+ this.searchAdapter().setText(this._inputValue());
270
+ }, ...(ngDevMode ? [{ debugName: "_syncToAdapter" }] : []));
271
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SearchInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
272
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: SearchInput, isStandalone: true, selector: "app-search-input", inputs: { searchAdapter: { classPropertyName: "searchAdapter", publicName: "searchAdapter", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { isFocused: "isFocused" }, queries: [{ propertyName: "_inputTemplate", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-container\n *ngIf=\"_showInputField()\"\n [ngTemplateOutlet]=\"_inputTemplate()\"\n [ngTemplateOutletContext]=\"{ inputValue: _inputValue, onFocus: isFocused }\"\n></ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
276
273
  }
277
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SearchInputComponent, decorators: [{
274
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SearchInput, decorators: [{
278
275
  type: Component,
279
- args: [{ selector: 'app-search-input-component', standalone: true, imports: [CommonModule], template: "<ng-container\n *ngIf=\"_showInputField\"\n [ngTemplateOutlet]=\"_inputTemplate()\"\n [ngTemplateOutletContext]=\"{ inputValue: _inputValue, onFocus: isFocused }\"\n></ng-container>\n" }]
276
+ args: [{ selector: 'app-search-input', standalone: true, imports: [CommonModule], template: "<ng-container\n *ngIf=\"_showInputField()\"\n [ngTemplateOutlet]=\"_inputTemplate()\"\n [ngTemplateOutletContext]=\"{ inputValue: _inputValue, onFocus: isFocused }\"\n></ng-container>\n" }]
280
277
  }], propDecorators: { searchAdapter: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchAdapter", required: true }] }], _inputTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }], isFocused: [{ type: i0.Output, args: ["isFocused"] }] } });
281
278
 
282
- class SearchClearButtonComponent {
279
+ class SearchClearButton {
283
280
  searchAdapter = input.required(...(ngDevMode ? [{ debugName: "searchAdapter" }] : []));
284
281
  _buttonTemplate = contentChild.required(TemplateRef);
285
- _showButton = false;
286
- ngOnInit() {
287
- this.searchAdapter().onChange.addEventListener(() => {
288
- // show button when there is text in the input field
289
- if (this.searchAdapter().searchText.length > 0) {
290
- this._showButton = true;
291
- // if single-select mode and an item is selected
292
- if (this.searchAdapter().selectedItems.length > 0 && !this.searchAdapter().multiselect) {
293
- this._showButton = false;
294
- }
295
- }
296
- else
297
- this._showButton = false;
298
- });
299
- }
282
+ _showButton = computed(() => {
283
+ const adapter = this.searchAdapter();
284
+ if (!adapter.text()?.length)
285
+ return false;
286
+ if (adapter.selection().length > 0 && !adapter.options.multiselect)
287
+ return false;
288
+ return true;
289
+ }, ...(ngDevMode ? [{ debugName: "_showButton" }] : []));
300
290
  _clearAll() {
301
- this.searchAdapter().searchText = '';
302
- this.searchAdapter().selectedItems = [];
291
+ this.searchAdapter().selectionClear();
292
+ this.searchAdapter().setText('');
303
293
  }
304
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SearchClearButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
305
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: SearchClearButtonComponent, isStandalone: true, selector: "app-search-clear-button-component", inputs: { searchAdapter: { classPropertyName: "searchAdapter", publicName: "searchAdapter", isSignal: true, isRequired: true, transformFunction: null } }, queries: [{ propertyName: "_buttonTemplate", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-container *ngIf=\"_showButton\" [ngTemplateOutlet]=\"_buttonTemplate()\" [ngTemplateOutletContext]=\"{ onClear: _clearAll.bind(this) }\"></ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatButtonModule }] });
294
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SearchClearButton, deps: [], target: i0.ɵɵFactoryTarget.Component });
295
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: SearchClearButton, isStandalone: true, selector: "app-search-clear-button", inputs: { searchAdapter: { classPropertyName: "searchAdapter", publicName: "searchAdapter", isSignal: true, isRequired: true, transformFunction: null } }, queries: [{ propertyName: "_buttonTemplate", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-container *ngIf=\"_showButton()\" [ngTemplateOutlet]=\"_buttonTemplate()\" [ngTemplateOutletContext]=\"{ onClear: _clearAll.bind(this) }\"></ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatButtonModule }] });
306
296
  }
307
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SearchClearButtonComponent, decorators: [{
297
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SearchClearButton, decorators: [{
308
298
  type: Component,
309
- args: [{ selector: 'app-search-clear-button-component', standalone: true, imports: [CommonModule, MatIconModule, MatButtonModule], template: "<ng-container *ngIf=\"_showButton\" [ngTemplateOutlet]=\"_buttonTemplate()\" [ngTemplateOutletContext]=\"{ onClear: _clearAll.bind(this) }\"></ng-container>\n" }]
299
+ args: [{ selector: 'app-search-clear-button', standalone: true, imports: [CommonModule, MatIconModule, MatButtonModule], template: "<ng-container *ngIf=\"_showButton()\" [ngTemplateOutlet]=\"_buttonTemplate()\" [ngTemplateOutletContext]=\"{ onClear: _clearAll.bind(this) }\"></ng-container>\n" }]
310
300
  }], propDecorators: { searchAdapter: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchAdapter", required: true }] }], _buttonTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }] } });
311
301
 
312
- class SearchShowResultsButtonComponent {
302
+ class SearchShowResultsButton {
313
303
  searchAdapter = input.required(...(ngDevMode ? [{ debugName: "searchAdapter" }] : []));
314
304
  showResults = output();
315
305
  _buttonTemplate = contentChild.required(TemplateRef);
316
- _showButton = false;
317
- ngOnInit() {
318
- this.searchAdapter().onChange.addEventListener(() => {
319
- // if single-select mode and an item is selected
320
- if (this.searchAdapter().selectedItems.length > 0 && !this.searchAdapter().multiselect) {
321
- this._showButton = true;
322
- }
323
- else
324
- this._showButton = false;
325
- });
326
- }
327
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SearchShowResultsButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
328
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: SearchShowResultsButtonComponent, isStandalone: true, selector: "app-search-show-results-button-component", inputs: { searchAdapter: { classPropertyName: "searchAdapter", publicName: "searchAdapter", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { showResults: "showResults" }, queries: [{ propertyName: "_buttonTemplate", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], ngImport: i0, template: "<div *ngIf=\"_showButton\" style=\"position: relative; display: inline-block\">\n <div class=\"hover-area\" (mouseleave)=\"showResults.emit(false)\"></div>\n <ng-container [ngTemplateOutlet]=\"_buttonTemplate()\" [ngTemplateOutletContext]=\"{ onClick: showResults }\"></ng-container>\n</div>\n", styles: [".hover-area{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:500%;height:500%}.hover-area:hover{pointer-events:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatButtonModule }] });
306
+ _showButton = computed(() => {
307
+ const adapter = this.searchAdapter();
308
+ return adapter.selection().length > 0 && !adapter.options.multiselect;
309
+ }, ...(ngDevMode ? [{ debugName: "_showButton" }] : []));
310
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SearchShowResultsButton, deps: [], target: i0.ɵɵFactoryTarget.Component });
311
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: SearchShowResultsButton, isStandalone: true, selector: "app-search-show-results-button", inputs: { searchAdapter: { classPropertyName: "searchAdapter", publicName: "searchAdapter", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { showResults: "showResults" }, queries: [{ propertyName: "_buttonTemplate", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], ngImport: i0, template: "<div *ngIf=\"_showButton()\" style=\"position: relative; display: inline-block\">\n <div class=\"hover-area\" (mouseleave)=\"showResults.emit(false)\"></div>\n <ng-container [ngTemplateOutlet]=\"_buttonTemplate()\" [ngTemplateOutletContext]=\"{ onClick: showResults }\"></ng-container>\n</div>\n", styles: [".hover-area{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:500%;height:500%}.hover-area:hover{pointer-events:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatButtonModule }] });
329
312
  }
330
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SearchShowResultsButtonComponent, decorators: [{
313
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SearchShowResultsButton, decorators: [{
331
314
  type: Component,
332
- args: [{ selector: 'app-search-show-results-button-component', standalone: true, imports: [CommonModule, MatIconModule, MatButtonModule], template: "<div *ngIf=\"_showButton\" style=\"position: relative; display: inline-block\">\n <div class=\"hover-area\" (mouseleave)=\"showResults.emit(false)\"></div>\n <ng-container [ngTemplateOutlet]=\"_buttonTemplate()\" [ngTemplateOutletContext]=\"{ onClick: showResults }\"></ng-container>\n</div>\n", styles: [".hover-area{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:500%;height:500%}.hover-area:hover{pointer-events:auto}\n"] }]
315
+ args: [{ selector: 'app-search-show-results-button', standalone: true, imports: [CommonModule, MatIconModule, MatButtonModule], template: "<div *ngIf=\"_showButton()\" style=\"position: relative; display: inline-block\">\n <div class=\"hover-area\" (mouseleave)=\"showResults.emit(false)\"></div>\n <ng-container [ngTemplateOutlet]=\"_buttonTemplate()\" [ngTemplateOutletContext]=\"{ onClick: showResults }\"></ng-container>\n</div>\n", styles: [".hover-area{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:500%;height:500%}.hover-area:hover{pointer-events:auto}\n"] }]
333
316
  }], propDecorators: { searchAdapter: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchAdapter", required: true }] }], showResults: [{ type: i0.Output, args: ["showResults"] }], _buttonTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }] } });
334
317
 
335
- class SearchResultListComponent {
318
+ class SearchResultList {
336
319
  searchAdapter = input.required(...(ngDevMode ? [{ debugName: "searchAdapter" }] : []));
337
320
  isHovering = output();
338
321
  _itemTemplate = contentChild.required(TemplateRef);
339
- _searchResults = signal([], ...(ngDevMode ? [{ debugName: "_searchResults" }] : []));
340
- _beforeFirstResults = true;
322
+ _hasReceivedResults = signal(false, ...(ngDevMode ? [{ debugName: "_hasReceivedResults" }] : []));
323
+ _searchResults = computed(() => this.searchAdapter().searchData(), ...(ngDevMode ? [{ debugName: "_searchResults" }] : []));
324
+ _beforeFirstResults = computed(() => !this._hasReceivedResults(), ...(ngDevMode ? [{ debugName: "_beforeFirstResults" }] : []));
341
325
  _beforeFirstResultsMessage = 'Type at least 3 characters to search ...';
342
- ngOnInit() {
343
- this.searchAdapter().onChange.addEventListener(() => {
344
- this._searchResults.set(this.searchAdapter().searchResults);
345
- if (this.searchAdapter().searchResults.length > 0 && this._beforeFirstResults) {
346
- // stop showing _beforeFirstResultsMessage
347
- this._beforeFirstResults = false;
326
+ _trackResults = effect(() => {
327
+ const searchText = this.searchAdapter().text();
328
+ const isLoading = this.searchAdapter().isLoading();
329
+ untracked(() => {
330
+ const minLength = this.searchAdapter().searchTriggerMinLength;
331
+ const textLength = searchText?.length ?? 0;
332
+ if (textLength >= minLength && !isLoading) {
333
+ this._hasReceivedResults.set(true);
348
334
  }
349
- if (this._beforeFirstResults === false && this.searchAdapter().searchText.length === 0) {
350
- // restore _beforeFirstResultsMessage
351
- this._beforeFirstResults = true;
335
+ if (textLength === 0) {
336
+ this._hasReceivedResults.set(false);
352
337
  }
353
338
  });
354
- }
339
+ }, ...(ngDevMode ? [{ debugName: "_trackResults" }] : []));
355
340
  _onItemClick(item) {
356
- this.searchAdapter().addToSelection(item);
341
+ this.searchAdapter().selectionAdd(item);
357
342
  }
358
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SearchResultListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
359
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: SearchResultListComponent, isStandalone: true, selector: "app-search-result-list-component", inputs: { searchAdapter: { classPropertyName: "searchAdapter", publicName: "searchAdapter", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { isHovering: "isHovering" }, queries: [{ propertyName: "_itemTemplate", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], ngImport: i0, template: "<div (mouseenter)=\"isHovering.emit(true)\" (mouseleave)=\"isHovering.emit(false)\">\n <ng-container\n [ngTemplateOutlet]=\"_itemTemplate()\"\n [ngTemplateOutletContext]=\"{\n searchResults: _searchResults(),\n beforeFirstResults: _beforeFirstResults,\n beforeFirstResultsMessage: _beforeFirstResultsMessage,\n onItemClick: _onItemClick.bind(this)\n }\"\n ></ng-container>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatCardModule }] });
343
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SearchResultList, deps: [], target: i0.ɵɵFactoryTarget.Component });
344
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: SearchResultList, isStandalone: true, selector: "app-search-result-list", inputs: { searchAdapter: { classPropertyName: "searchAdapter", publicName: "searchAdapter", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { isHovering: "isHovering" }, queries: [{ propertyName: "_itemTemplate", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], ngImport: i0, template: "<div (mouseenter)=\"isHovering.emit(true)\" (mouseleave)=\"isHovering.emit(false)\">\n <ng-container\n [ngTemplateOutlet]=\"_itemTemplate()\"\n [ngTemplateOutletContext]=\"{\n searchResults: _searchResults(),\n beforeFirstResults: _beforeFirstResults,\n beforeFirstResultsMessage: _beforeFirstResultsMessage,\n onItemClick: _onItemClick.bind(this)\n }\"\n ></ng-container>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatCardModule }] });
360
345
  }
361
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SearchResultListComponent, decorators: [{
346
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SearchResultList, decorators: [{
362
347
  type: Component,
363
- args: [{ selector: 'app-search-result-list-component', standalone: true, imports: [CommonModule, MatIconModule, MatCardModule], template: "<div (mouseenter)=\"isHovering.emit(true)\" (mouseleave)=\"isHovering.emit(false)\">\n <ng-container\n [ngTemplateOutlet]=\"_itemTemplate()\"\n [ngTemplateOutletContext]=\"{\n searchResults: _searchResults(),\n beforeFirstResults: _beforeFirstResults,\n beforeFirstResultsMessage: _beforeFirstResultsMessage,\n onItemClick: _onItemClick.bind(this)\n }\"\n ></ng-container>\n</div>\n" }]
348
+ args: [{ selector: 'app-search-result-list', standalone: true, imports: [CommonModule, MatIconModule, MatCardModule], template: "<div (mouseenter)=\"isHovering.emit(true)\" (mouseleave)=\"isHovering.emit(false)\">\n <ng-container\n [ngTemplateOutlet]=\"_itemTemplate()\"\n [ngTemplateOutletContext]=\"{\n searchResults: _searchResults(),\n beforeFirstResults: _beforeFirstResults,\n beforeFirstResultsMessage: _beforeFirstResultsMessage,\n onItemClick: _onItemClick.bind(this)\n }\"\n ></ng-container>\n</div>\n" }]
364
349
  }], propDecorators: { searchAdapter: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchAdapter", required: true }] }], isHovering: [{ type: i0.Output, args: ["isHovering"] }], _itemTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }] } });
365
350
 
366
- class SearchSelectionListComponent {
351
+ class SearchSelectionList {
367
352
  searchAdapter = input.required(...(ngDevMode ? [{ debugName: "searchAdapter" }] : []));
368
353
  _itemTemplate = contentChild.required(TemplateRef);
369
- _selectedItems = signal([], ...(ngDevMode ? [{ debugName: "_selectedItems" }] : []));
370
- ngOnInit() {
371
- this.searchAdapter().onChange.addEventListener(() => {
372
- this._selectedItems.set(this.searchAdapter().selectedItems);
373
- });
374
- }
354
+ _selectedItems = computed(() => this.searchAdapter().selection(), ...(ngDevMode ? [{ debugName: "_selectedItems" }] : []));
375
355
  _onRemoveClick(item) {
376
- this.searchAdapter().removeFromSelection(item);
356
+ this.searchAdapter().selectionRemove(item);
377
357
  }
378
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SearchSelectionListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
379
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: SearchSelectionListComponent, isStandalone: true, selector: "app-search-selection-list-component", inputs: { searchAdapter: { classPropertyName: "searchAdapter", publicName: "searchAdapter", isSignal: true, isRequired: true, transformFunction: null } }, queries: [{ propertyName: "_itemTemplate", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], ngImport: i0, template: "<div *ngFor=\"let item of _selectedItems()\" [style.width]=\"!searchAdapter().multiselect ? '100%' : 'auto'\">\n <ng-container [ngTemplateOutlet]=\"_itemTemplate()\" [ngTemplateOutletContext]=\"{ $implicit: item, onRemove: _onRemoveClick.bind(this) }\"></ng-container>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatButtonModule }] });
358
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SearchSelectionList, deps: [], target: i0.ɵɵFactoryTarget.Component });
359
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: SearchSelectionList, isStandalone: true, selector: "app-search-selection-list", inputs: { searchAdapter: { classPropertyName: "searchAdapter", publicName: "searchAdapter", isSignal: true, isRequired: true, transformFunction: null } }, queries: [{ propertyName: "_itemTemplate", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], ngImport: i0, template: "<div *ngFor=\"let item of _selectedItems()\" [style.width]=\"!searchAdapter().options.multiselect ? '100%' : 'auto'\">\n <ng-container [ngTemplateOutlet]=\"_itemTemplate()\" [ngTemplateOutletContext]=\"{ $implicit: item, onRemove: _onRemoveClick.bind(this) }\"></ng-container>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatButtonModule }] });
380
360
  }
381
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SearchSelectionListComponent, decorators: [{
361
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SearchSelectionList, decorators: [{
382
362
  type: Component,
383
- args: [{ selector: 'app-search-selection-list-component', standalone: true, imports: [CommonModule, MatIconModule, MatButtonModule], template: "<div *ngFor=\"let item of _selectedItems()\" [style.width]=\"!searchAdapter().multiselect ? '100%' : 'auto'\">\n <ng-container [ngTemplateOutlet]=\"_itemTemplate()\" [ngTemplateOutletContext]=\"{ $implicit: item, onRemove: _onRemoveClick.bind(this) }\"></ng-container>\n</div>\n" }]
363
+ args: [{ selector: 'app-search-selection-list', standalone: true, imports: [CommonModule, MatIconModule, MatButtonModule], template: "<div *ngFor=\"let item of _selectedItems()\" [style.width]=\"!searchAdapter().options.multiselect ? '100%' : 'auto'\">\n <ng-container [ngTemplateOutlet]=\"_itemTemplate()\" [ngTemplateOutletContext]=\"{ $implicit: item, onRemove: _onRemoveClick.bind(this) }\"></ng-container>\n</div>\n" }]
384
364
  }], propDecorators: { searchAdapter: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchAdapter", required: true }] }], _itemTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }] } });
385
365
 
386
366
  /*
@@ -391,5 +371,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
391
371
  * Generated bundle index. Do not edit.
392
372
  */
393
373
 
394
- export { MatPaginatorIntlOverrides, MatTablePaginationDirective, MatTableSortDirective, ModalService, SearchClearButtonComponent, SearchInputComponent, SearchResultListComponent, SearchSelectionListComponent, SearchShowResultsButtonComponent };
374
+ export { MatPaginatorIntlOverrides, MatTablePagination, MatTableSort, ModalService, SearchClearButton, SearchInput, SearchResultList, SearchSelectionList, SearchShowResultsButton };
395
375
  //# sourceMappingURL=intellegens-cornerstone-client-angular-material.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"intellegens-cornerstone-client-angular-material.mjs","sources":["../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/overrides/MatPaginatorIntlOverrides/index.ts","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/directives/MatTablePaginationDirective/index.ts","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/directives/MatTableSortDirective/index.ts","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/services/ModalService/index.ts","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/components/Search/SearchInput/SearchInputComponent.ts","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/components/Search/SearchInput/SearchInputComponent.html","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/components/Search/SearchClearButton/SearchClearButtonComponent.ts","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/components/Search/SearchClearButton/SearchClearButtonComponent.html","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/components/Search/SearchShowResultsButton/SearchShowResultsButtonComponent.ts","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/components/Search/SearchShowResultsButton/SearchShowResultsButtonComponent.html","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/components/Search/SearchResultList/SearchResultListComponent.ts","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/components/Search/SearchResultList/SearchResultListComponent.html","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/components/Search/SearchSelectionList/SearchSelectionListComponent.ts","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/components/Search/SearchSelectionList/SearchSelectionListComponent.html","../../../../projects/intellegens/cornerstone-client-angular-material/src/public-api.ts","../../../../projects/intellegens/cornerstone-client-angular-material/src/intellegens-cornerstone-client-angular-material.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\n\n/**\n * Custom paginator service to adjust the label for the paginator.\n */\n@Injectable()\nexport class MatPaginatorIntlOverrides extends MatPaginatorIntl {\n override getRangeLabel = (page: number, pageSize: number, length: number) => {\n if (length === 0) {\n return 'Page 1 of 1';\n }\n const isLengthValid = length && length !== -1;\n return isLengthValid ? `Page ${page + 1} of ${Math.ceil(length / pageSize)}` : `Page ${page + 1}`;\n };\n}\n","import { Directive, InputSignal, inject, input } from '@angular/core';\nimport { MatPaginator, MatPaginatorIntl, PageEvent } from '@angular/material/paginator';\nimport { MatPaginatorIntlOverrides } from '../../overrides'; // using path alias results in `Could not resolve \"@overrides\"` in app\nimport { Subscription } from 'rxjs';\nimport { CollectionViewAdapter } from '@intellegens/cornerstone-client-angular';\n\n/**\n * Directive used to pass data to the `CollectionViewAdapter`, uses `MatPaginatorIntlOverrides` to change pagination UI.\n */\n@Directive({\n selector: 'mat-paginator',\n providers: [{ provide: MatPaginatorIntl, useClass: MatPaginatorIntlOverrides }],\n standalone: true,\n})\nexport class MatTablePaginationDirective {\n private _matPaginator = inject(MatPaginator);\n public adapter: InputSignal<CollectionViewAdapter<any, any, any> | undefined> = input();\n private _subscription?: Subscription;\n ngOnInit() {\n this._subscription = this._matPaginator.page.subscribe((event: PageEvent) => {\n const adapter = this.adapter();\n if (!adapter) return;\n const targetPage = event.pageIndex + 1;\n if (event.pageSize !== adapter.pageSize) {\n adapter.setPageSize(event.pageSize);\n } else if (targetPage !== adapter.currentPage) {\n adapter.jumpToPage(targetPage);\n }\n });\n }\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n}\n","import { Directive, inject, input, InputSignal } from '@angular/core';\nimport { MatSort, Sort } from '@angular/material/sort';\nimport { CollectionViewAdapter, ReadSelectedOrderingDirection } from '@intellegens/cornerstone-client-angular';\n\n/**\n * Directive used to pass data to the `CollectionViewAdapter` and reverse the default direction of shown table header sorting arrows\n */\n@Directive({\n selector: 'mat-table[matSort], table[mat-table][matSort]',\n standalone: true,\n})\nexport class MatTableSortDirective {\n private _matSort = inject(MatSort);\n public adapter: InputSignal<CollectionViewAdapter<any, any, any> | undefined> = input();\n ngOnInit() {\n this._matSort.disableClear = true; // removes \"unsorted\" option, syncs column header arrows with actual current sort direction\n // tell MatSort our starting sort direction\n const adapter = this.adapter();\n if (adapter) {\n // TODO: handle multiple columns - for now it only supports ordering by one column\n const initialSort = adapter.getCurrentOrdering()[0];\n this._matSort.active = (initialSort.orderByPath && initialSort.orderByPath[0]) || '';\n this._matSort.direction = initialSort.orderDirection === ReadSelectedOrderingDirection.Ascending ? 'desc' : 'asc'; // show reverse arrows\n }\n }\n private _subscription = this._matSort.sortChange.subscribe((event: Sort) => {\n const adapter = this.adapter();\n if (adapter && event?.active) {\n const newDirection = event.direction == 'desc' ? ReadSelectedOrderingDirection.Ascending : ReadSelectedOrderingDirection.Descending; // show reverse arrows\n adapter.setOrdering([event.active], newDirection);\n }\n });\n ngOnDestroy() {\n this._subscription.unsubscribe();\n }\n}\n","import { Injectable, inject, Type, InputSignal } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { type IModalComponent } from '../../interfaces';\n\ntype ModalStackItem = {\n id: string;\n resolve: (value: any) => void;\n dialogRef: MatDialogRef<any>;\n componentRef: IModalComponent;\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModalService {\n private _matDialog = inject(MatDialog);\n private _modalsStack: ModalStackItem[] = [];\n private _nextModalStackId = 0;\n\n public openModal<TComponent extends IModalComponent, TResult>(\n Component: Type<TComponent>,\n inputs?: Partial<{ [key in keyof TComponent]: TComponent[key] extends InputSignal<infer T> ? T : never }>,\n ): Promise<TResult | undefined> {\n return new Promise<TResult | undefined>(resolve => {\n // hide parent modal backdrop\n if (this._modalsStack.length > 0) {\n const parentDialog = this._modalsStack[this._modalsStack.length - 1];\n const overlayRef = (parentDialog.dialogRef as any)._ref?.overlayRef;\n if (overlayRef && overlayRef.backdropElement) {\n overlayRef.backdropElement.style.display = 'none';\n }\n }\n\n // new dialog using configured container component\n const dialogRef = this._matDialog.open(Component, {\n maxWidth: 'none',\n });\n const componentRef = dialogRef.componentRef;\n const componentInstance = componentRef!.instance as TComponent;\n\n const closeOnBackdrop = componentInstance.closeOnBackdrop ?? true;\n const closeOnEscapeKey = componentInstance.closeOnEscapeKey ?? true;\n\n // disable MatDialog default closing backdrop-click/escape-key behavior\n if (!closeOnBackdrop || !closeOnEscapeKey) {\n dialogRef.disableClose = true;\n }\n\n // set modal component stack Id\n const id = `${this._nextModalStackId++}`;\n componentInstance.modalStackId = id;\n // set modal component inputs\n if (inputs !== undefined) {\n for (const key of Object.keys(inputs) as (keyof Partial<TComponent>)[]) {\n if (key in componentInstance && componentInstance[key] instanceof Function) {\n componentRef?.setInput(key as string, inputs[key]);\n }\n }\n }\n\n // add to stack\n this._modalsStack.push({\n id,\n resolve,\n dialogRef,\n componentRef: dialogRef.componentRef?.instance as IModalComponent,\n });\n\n // handle dialog closed via backdrop click\n dialogRef.backdropClick().subscribe(() => {\n if (closeOnBackdrop) {\n dialogRef.close();\n const index = this._modalsStack.findIndex(item => item.dialogRef === dialogRef);\n\n if (index !== -1) {\n // dialog was closed without submitModal/closeModal\n const item = this._modalsStack[index];\n item.resolve(undefined);\n this._modalsStack.splice(index, 1);\n\n // restore parent dialog backdrop\n if (this._modalsStack.length > 0) {\n const parentDialog = this._modalsStack[this._modalsStack.length - 1];\n const overlayRef = (parentDialog.dialogRef as any)._ref?.overlayRef;\n if (overlayRef && overlayRef.backdropElement) {\n overlayRef.backdropElement.style.display = '';\n }\n }\n }\n }\n });\n // handle dialog closed via Esc key-press\n dialogRef.keydownEvents().subscribe(event => {\n if (event.key === 'Escape') {\n if (closeOnEscapeKey) {\n dialogRef.close();\n const index = this._modalsStack.findIndex(item => item.dialogRef === dialogRef);\n\n if (index !== -1) {\n // dialog was closed without submitModal/closeModal\n const item = this._modalsStack[index];\n item.resolve(undefined);\n this._modalsStack.splice(index, 1);\n\n // restore parent dialog backdrop\n if (this._modalsStack.length > 0) {\n const parentDialog = this._modalsStack[this._modalsStack.length - 1];\n const overlayRef = (parentDialog.dialogRef as any)._ref?.overlayRef;\n if (overlayRef && overlayRef.backdropElement) {\n overlayRef.backdropElement.style.display = '';\n }\n }\n }\n }\n }\n });\n });\n }\n\n public submitModal<T>(data: T): void {\n if (this._modalsStack.length === 0) return;\n\n const currentItem = this._modalsStack.pop()!;\n currentItem.resolve(data);\n currentItem.dialogRef.close();\n\n // restore parent dialog backdrop\n if (this._modalsStack.length > 0) {\n const parentDialog = this._modalsStack[this._modalsStack.length - 1];\n const overlayRef = (parentDialog.dialogRef as any)._ref?.overlayRef;\n if (overlayRef && overlayRef.backdropElement) {\n overlayRef.backdropElement.style.display = '';\n }\n }\n }\n\n public closeModal(): void {\n if (this._modalsStack.length === 0) return;\n\n const currentItem = this._modalsStack.pop()!;\n currentItem.resolve(undefined);\n if (currentItem.dialogRef.disableClose) {\n currentItem.dialogRef.disableClose = false;\n }\n currentItem.dialogRef.close();\n\n // restore parent dialog backdrop\n if (this._modalsStack.length > 0) {\n const parentDialog = this._modalsStack[this._modalsStack.length - 1];\n const overlayRef = (parentDialog.dialogRef as any)._ref?.overlayRef;\n if (overlayRef && overlayRef.backdropElement) {\n overlayRef.backdropElement.style.display = '';\n }\n }\n }\n\n public getModalConfig(modalStackId: string | undefined): IModalComponent | undefined {\n return this._modalsStack.find(item => item.id === modalStackId)?.componentRef;\n }\n\n public getBreadcrumbs(modalStackId: string | undefined): string[] {\n const breadcrumbs: string[] = [];\n for (const item of this._modalsStack) {\n const breadcrumb = item.componentRef.breadcrumb;\n if (breadcrumb) breadcrumbs.push(breadcrumb());\n if (item.id === modalStackId) break;\n }\n return breadcrumbs;\n }\n\n public closeOnButton(modalStackId: string | undefined): boolean | undefined {\n return this._modalsStack.find(item => item.id === modalStackId)?.componentRef.closeOnButton;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, contentChild, effect, input, output, signal, TemplateRef } from '@angular/core';\nimport { IGlobalSearchable, SearchAdapter } from '@intellegens/cornerstone-client-angular';\n\n@Component({\n selector: 'app-search-input-component',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './SearchInputComponent.html',\n})\nexport class SearchInputComponent<TKey, TDto extends IGlobalSearchable<TKey>> {\n public searchAdapter = input.required<SearchAdapter<TKey, TDto>>();\n protected _inputTemplate = contentChild.required<TemplateRef<any>>(TemplateRef);\n public isFocused = output<boolean>();\n\n protected _inputValue = signal<string>('');\n protected _showInputField = true;\n\n public ngOnInit() {\n this.searchAdapter().onChange.addEventListener(() => {\n this._inputValue.set(this.searchAdapter().searchText); // updates input field on change\n\n if (!this.searchAdapter().multiselect && this.searchAdapter().selectedItems.length > 0) {\n this._showInputField = false;\n } else this._showInputField = true;\n });\n }\n\n private _onInput = effect(() => {\n this.searchAdapter().searchText = this._inputValue();\n });\n}\n","<ng-container\n *ngIf=\"_showInputField\"\n [ngTemplateOutlet]=\"_inputTemplate()\"\n [ngTemplateOutletContext]=\"{ inputValue: _inputValue, onFocus: isFocused }\"\n></ng-container>\n","import { CommonModule } from '@angular/common';\nimport { Component, contentChild, input, TemplateRef } from '@angular/core';\nimport { IGlobalSearchable, SearchAdapter } from '@intellegens/cornerstone-client-angular';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'app-search-clear-button-component',\n standalone: true,\n imports: [CommonModule, MatIconModule, MatButtonModule],\n templateUrl: './SearchClearButtonComponent.html',\n})\nexport class SearchClearButtonComponent<TKey, TDto extends IGlobalSearchable<TKey>> {\n public searchAdapter = input.required<SearchAdapter<TKey, TDto>>();\n protected _buttonTemplate = contentChild.required<TemplateRef<any>>(TemplateRef);\n\n protected _showButton = false;\n public ngOnInit() {\n this.searchAdapter().onChange.addEventListener(() => {\n // show button when there is text in the input field\n if (this.searchAdapter().searchText.length > 0) {\n this._showButton = true;\n\n // if single-select mode and an item is selected\n if (this.searchAdapter().selectedItems.length > 0 && !this.searchAdapter().multiselect) {\n this._showButton = false;\n }\n } else this._showButton = false;\n });\n }\n\n protected _clearAll() {\n this.searchAdapter().searchText = '';\n this.searchAdapter().selectedItems = [];\n }\n}\n","<ng-container *ngIf=\"_showButton\" [ngTemplateOutlet]=\"_buttonTemplate()\" [ngTemplateOutletContext]=\"{ onClear: _clearAll.bind(this) }\"></ng-container>\n","import { CommonModule } from '@angular/common';\nimport { Component, contentChild, input, output, TemplateRef } from '@angular/core';\nimport { IGlobalSearchable, SearchAdapter } from '@intellegens/cornerstone-client-angular';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'app-search-show-results-button-component',\n standalone: true,\n imports: [CommonModule, MatIconModule, MatButtonModule],\n templateUrl: './SearchShowResultsButtonComponent.html',\n styleUrl: './SearchShowResultsButtonComponent.css',\n})\nexport class SearchShowResultsButtonComponent<TKey, TDto extends IGlobalSearchable<TKey>> {\n public searchAdapter = input.required<SearchAdapter<TKey, TDto>>();\n public showResults = output<boolean>();\n protected _buttonTemplate = contentChild.required<TemplateRef<any>>(TemplateRef);\n\n protected _showButton = false;\n public ngOnInit() {\n this.searchAdapter().onChange.addEventListener(() => {\n // if single-select mode and an item is selected\n if (this.searchAdapter().selectedItems.length > 0 && !this.searchAdapter().multiselect) {\n this._showButton = true;\n } else this._showButton = false;\n });\n }\n}\n","<div *ngIf=\"_showButton\" style=\"position: relative; display: inline-block\">\n <div class=\"hover-area\" (mouseleave)=\"showResults.emit(false)\"></div>\n <ng-container [ngTemplateOutlet]=\"_buttonTemplate()\" [ngTemplateOutletContext]=\"{ onClick: showResults }\"></ng-container>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, contentChild, input, output, signal, TemplateRef } from '@angular/core';\nimport { IGlobalSearchable, SearchAdapter } from '@intellegens/cornerstone-client-angular';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatCardModule } from '@angular/material/card';\n\n@Component({\n selector: 'app-search-result-list-component',\n standalone: true,\n imports: [CommonModule, MatIconModule, MatCardModule],\n templateUrl: './SearchResultListComponent.html',\n})\nexport class SearchResultListComponent<TKey, TDto extends IGlobalSearchable<TKey>> {\n public searchAdapter = input.required<SearchAdapter<TKey, TDto>>();\n public isHovering = output<boolean>();\n protected _itemTemplate = contentChild.required<TemplateRef<any>>(TemplateRef);\n\n protected _searchResults = signal<TDto[]>([]);\n protected _beforeFirstResults = true;\n protected _beforeFirstResultsMessage = 'Type at least 3 characters to search ...';\n\n public ngOnInit() {\n this.searchAdapter().onChange.addEventListener(() => {\n this._searchResults.set(this.searchAdapter().searchResults);\n if (this.searchAdapter().searchResults.length > 0 && this._beforeFirstResults) {\n // stop showing _beforeFirstResultsMessage\n this._beforeFirstResults = false;\n }\n if (this._beforeFirstResults === false && this.searchAdapter().searchText.length === 0) {\n // restore _beforeFirstResultsMessage\n this._beforeFirstResults = true;\n }\n });\n }\n\n protected _onItemClick(item: TDto) {\n this.searchAdapter().addToSelection(item);\n }\n}\n","<div (mouseenter)=\"isHovering.emit(true)\" (mouseleave)=\"isHovering.emit(false)\">\n <ng-container\n [ngTemplateOutlet]=\"_itemTemplate()\"\n [ngTemplateOutletContext]=\"{\n searchResults: _searchResults(),\n beforeFirstResults: _beforeFirstResults,\n beforeFirstResultsMessage: _beforeFirstResultsMessage,\n onItemClick: _onItemClick.bind(this)\n }\"\n ></ng-container>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, contentChild, input, signal, TemplateRef } from '@angular/core';\nimport { IGlobalSearchable, SearchAdapter } from '@intellegens/cornerstone-client';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'app-search-selection-list-component',\n standalone: true,\n imports: [CommonModule, MatIconModule, MatButtonModule],\n templateUrl: './SearchSelectionListComponent.html',\n})\nexport class SearchSelectionListComponent<TKey, TDto extends IGlobalSearchable<TKey>> {\n public searchAdapter = input.required<SearchAdapter<TKey, TDto>>();\n protected _itemTemplate = contentChild.required<TemplateRef<any>>(TemplateRef);\n\n protected _selectedItems = signal<TDto[]>([]);\n\n public ngOnInit() {\n this.searchAdapter().onChange.addEventListener(() => {\n this._selectedItems.set(this.searchAdapter().selectedItems);\n });\n }\n\n protected _onRemoveClick(item: TDto) {\n this.searchAdapter().removeFromSelection(item);\n }\n}\n","<div *ngFor=\"let item of _selectedItems()\" [style.width]=\"!searchAdapter().multiselect ? '100%' : 'auto'\">\n <ng-container [ngTemplateOutlet]=\"_itemTemplate()\" [ngTemplateOutletContext]=\"{ $implicit: item, onRemove: _onRemoveClick.bind(this) }\"></ng-container>\n</div>\n","/*\n * Public API Surface of cornerstone-client-angular-material\n */\n\nexport * from './lib/';\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":"intellegens-cornerstone-client-angular-material.mjs","sources":["../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/overrides/mat-paginator-intl-overrides.ts","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/directives/mat-table-pagination/mat-table-pagination.ts","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/directives/mat-table-sort/mat-table-sort.ts","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/services/modal-service.ts","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/components/search/search-input/search-input.ts","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/components/search/search-input/search-input.html","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/components/search/search-clear-button/search-clear-button.ts","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/components/search/search-clear-button/search-clear-button.html","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/components/search/search-show-results-button/search-show-results-button.ts","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/components/search/search-show-results-button/search-show-results-button.html","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/components/search/search-result-list/search-result-list.ts","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/components/search/search-result-list/search-result-list.html","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/components/search/search-selection-list/search-selection-list.ts","../../../../projects/intellegens/cornerstone-client-angular-material/src/lib/components/search/search-selection-list/search-selection-list.html","../../../../projects/intellegens/cornerstone-client-angular-material/src/public-api.ts","../../../../projects/intellegens/cornerstone-client-angular-material/src/intellegens-cornerstone-client-angular-material.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\n\n/**\n * Custom paginator service to adjust the label for the paginator.\n */\n@Injectable()\nexport class MatPaginatorIntlOverrides extends MatPaginatorIntl {\n override getRangeLabel = (page: number, pageSize: number, length: number) => {\n if (length === 0) {\n return 'Page 1 of 1';\n }\n const isLengthValid = length && length !== -1;\n return isLengthValid ? `Page ${page + 1} of ${Math.ceil(length / pageSize)}` : `Page ${page + 1}`;\n };\n}\n","import { Directive, InputSignal, inject, input } from '@angular/core';\nimport { MatPaginator, MatPaginatorIntl, PageEvent } from '@angular/material/paginator';\nimport { MatPaginatorIntlOverrides } from '../../overrides'; // using path alias results in `Could not resolve \"@overrides\"` in app\nimport { Subscription } from 'rxjs';\nimport { AngularCollectionViewAdapter } from '@intellegens/cornerstone-client-angular';\n\n/**\n * Directive used to pass data to the `AngularCollectionViewAdapter`, uses `MatPaginatorIntlOverrides` to change pagination UI.\n */\n@Directive({\n selector: 'mat-paginator',\n providers: [{ provide: MatPaginatorIntl, useClass: MatPaginatorIntlOverrides }],\n standalone: true,\n})\nexport class MatTablePagination {\n private _matPaginator = inject(MatPaginator);\n public adapter: InputSignal<AngularCollectionViewAdapter<any> | undefined> = input();\n private _subscription?: Subscription;\n ngOnInit() {\n this._subscription = this._matPaginator.page.subscribe((event: PageEvent) => {\n const adapter = this.adapter();\n if (!adapter) return;\n if (event.pageSize !== adapter.pageSize()) {\n adapter.setPageSize(event.pageSize);\n } else if (event.pageIndex !== adapter.pageIndex()) {\n adapter.setPageIndex(event.pageIndex);\n }\n });\n }\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n}\n","import { Directive, inject, input, InputSignal } from '@angular/core';\nimport { MatSort, Sort } from '@angular/material/sort';\nimport { AngularCollectionViewAdapter, ReadSelectedOrderingDirection } from '@intellegens/cornerstone-client-angular';\n\n/**\n * Directive used to pass data to the `AngularCollectionViewAdapter` and reverse the default direction of shown table header sorting arrows\n */\n@Directive({\n selector: 'mat-table[matSort], table[mat-table][matSort]',\n standalone: true,\n})\nexport class MatTableSort {\n private _matSort = inject(MatSort);\n public adapter: InputSignal<AngularCollectionViewAdapter<any> | undefined> = input();\n ngOnInit() {\n this._matSort.disableClear = true; // removes \"unsorted\" option, syncs column header arrows with actual current sort direction\n // tell MatSort our starting sort direction\n const adapter = this.adapter();\n if (adapter) {\n // TODO: handle multiple columns - for now it only supports ordering by one column\n const initialSort = adapter.ordering()[0];\n if (initialSort) {\n this._matSort.active = initialSort.path[0] || '';\n this._matSort.direction = initialSort.direction === ReadSelectedOrderingDirection.Ascending ? 'desc' : 'asc'; // show reverse arrows\n }\n }\n }\n private _subscription = this._matSort.sortChange.subscribe((event: Sort) => {\n const adapter = this.adapter();\n if (adapter && event?.active) {\n const newDirection = event.direction == 'desc' ? ReadSelectedOrderingDirection.Ascending : ReadSelectedOrderingDirection.Descending; // show reverse arrows\n adapter.setOrdering([event.active], newDirection);\n }\n });\n ngOnDestroy() {\n this._subscription.unsubscribe();\n }\n}\n","import { inject, Injectable, InputSignal, Type } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { type IModalComponent } from '../';\n\ntype ModalStackItem = {\n id: string;\n resolve: (value: any) => void;\n dialogRef: MatDialogRef<any>;\n componentRef: IModalComponent;\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ModalService {\n private _matDialog = inject(MatDialog);\n private _modalsStack: ModalStackItem[] = [];\n private _nextModalStackId = 0;\n\n public openModal<TComponent extends IModalComponent, TResult>(\n Component: Type<TComponent>,\n inputs?: Partial<{ [key in keyof TComponent]: TComponent[key] extends InputSignal<infer T> ? T : never }>,\n ): Promise<TResult | undefined> {\n return new Promise<TResult | undefined>(resolve => {\n // hide parent modal backdrop\n if (this._modalsStack.length > 0) {\n const parentDialog = this._modalsStack[this._modalsStack.length - 1];\n const overlayRef = (parentDialog.dialogRef as any)._ref?.overlayRef;\n if (overlayRef && overlayRef.backdropElement) {\n overlayRef.backdropElement.style.display = 'none';\n }\n }\n\n // new dialog using configured container component\n const dialogRef = this._matDialog.open(Component, {\n maxWidth: 'none',\n });\n const componentRef = dialogRef.componentRef;\n const componentInstance = componentRef!.instance as TComponent;\n\n const closeOnBackdrop = componentInstance.closeOnBackdrop ?? true;\n const closeOnEscapeKey = componentInstance.closeOnEscapeKey ?? true;\n\n // disable MatDialog default closing backdrop-click/escape-key behavior\n if (!closeOnBackdrop || !closeOnEscapeKey) {\n dialogRef.disableClose = true;\n }\n\n // set modal component stack Id\n const id = `${this._nextModalStackId++}`;\n componentInstance.modalStackId = id;\n // set modal component inputs\n if (inputs !== undefined) {\n for (const key of Object.keys(inputs) as (keyof Partial<TComponent>)[]) {\n if (key in componentInstance && componentInstance[key] instanceof Function) {\n componentRef?.setInput(key as string, inputs[key]);\n }\n }\n }\n\n // add to stack\n this._modalsStack.push({\n id,\n resolve,\n dialogRef,\n componentRef: dialogRef.componentRef?.instance as IModalComponent,\n });\n\n // handle dialog closed via backdrop click\n dialogRef.backdropClick().subscribe(() => {\n if (closeOnBackdrop) {\n dialogRef.close();\n const index = this._modalsStack.findIndex(item => item.dialogRef === dialogRef);\n\n if (index !== -1) {\n // dialog was closed without submitModal/closeModal\n const item = this._modalsStack[index];\n item.resolve(undefined);\n this._modalsStack.splice(index, 1);\n\n // restore parent dialog backdrop\n if (this._modalsStack.length > 0) {\n const parentDialog = this._modalsStack[this._modalsStack.length - 1];\n const overlayRef = (parentDialog.dialogRef as any)._ref?.overlayRef;\n if (overlayRef && overlayRef.backdropElement) {\n overlayRef.backdropElement.style.display = '';\n }\n }\n }\n }\n });\n // handle dialog closed via Esc key-press\n dialogRef.keydownEvents().subscribe(event => {\n if (event.key === 'Escape') {\n if (closeOnEscapeKey) {\n dialogRef.close();\n const index = this._modalsStack.findIndex(item => item.dialogRef === dialogRef);\n\n if (index !== -1) {\n // dialog was closed without submitModal/closeModal\n const item = this._modalsStack[index];\n item.resolve(undefined);\n this._modalsStack.splice(index, 1);\n\n // restore parent dialog backdrop\n if (this._modalsStack.length > 0) {\n const parentDialog = this._modalsStack[this._modalsStack.length - 1];\n const overlayRef = (parentDialog.dialogRef as any)._ref?.overlayRef;\n if (overlayRef && overlayRef.backdropElement) {\n overlayRef.backdropElement.style.display = '';\n }\n }\n }\n }\n }\n });\n });\n }\n\n public submitModal<T>(data: T): void {\n if (this._modalsStack.length === 0) return;\n\n const currentItem = this._modalsStack.pop()!;\n currentItem.resolve(data);\n currentItem.dialogRef.close();\n\n // restore parent dialog backdrop\n if (this._modalsStack.length > 0) {\n const parentDialog = this._modalsStack[this._modalsStack.length - 1];\n const overlayRef = (parentDialog.dialogRef as any)._ref?.overlayRef;\n if (overlayRef && overlayRef.backdropElement) {\n overlayRef.backdropElement.style.display = '';\n }\n }\n }\n\n public closeModal(): void {\n if (this._modalsStack.length === 0) return;\n\n const currentItem = this._modalsStack.pop()!;\n currentItem.resolve(undefined);\n if (currentItem.dialogRef.disableClose) {\n currentItem.dialogRef.disableClose = false;\n }\n currentItem.dialogRef.close();\n\n // restore parent dialog backdrop\n if (this._modalsStack.length > 0) {\n const parentDialog = this._modalsStack[this._modalsStack.length - 1];\n const overlayRef = (parentDialog.dialogRef as any)._ref?.overlayRef;\n if (overlayRef && overlayRef.backdropElement) {\n overlayRef.backdropElement.style.display = '';\n }\n }\n }\n\n public getModalConfig(modalStackId: string | undefined): IModalComponent | undefined {\n return this._modalsStack.find(item => item.id === modalStackId)?.componentRef;\n }\n\n public getBreadcrumbs(modalStackId: string | undefined): string[] {\n const breadcrumbs: string[] = [];\n for (const item of this._modalsStack) {\n const breadcrumb = item.componentRef.breadcrumb;\n if (breadcrumb) breadcrumbs.push(breadcrumb());\n if (item.id === modalStackId) break;\n }\n return breadcrumbs;\n }\n\n public closeOnButton(modalStackId: string | undefined): boolean | undefined {\n return this._modalsStack.find(item => item.id === modalStackId)?.componentRef.closeOnButton;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, contentChild, effect, input, output, signal, TemplateRef } from '@angular/core';\nimport { AngularSearchAdapter } from '@intellegens/cornerstone-client-angular';\n\n@Component({\n selector: 'app-search-input',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './search-input.html',\n})\nexport class SearchInput<TDto> {\n public searchAdapter = input.required<AngularSearchAdapter<TDto>>();\n protected _inputTemplate = contentChild.required<TemplateRef<any>>(TemplateRef);\n public isFocused = output<boolean>();\n\n protected _inputValue = signal<string>('');\n\n protected _showInputField = computed(() => {\n const adapter = this.searchAdapter();\n return adapter.options.multiselect || adapter.selection().length === 0;\n });\n\n private _syncFromAdapter = effect(() => {\n this._inputValue.set(this.searchAdapter().text() ?? '');\n });\n\n private _syncToAdapter = effect(() => {\n this.searchAdapter().setText(this._inputValue());\n });\n}\n","<ng-container\n *ngIf=\"_showInputField()\"\n [ngTemplateOutlet]=\"_inputTemplate()\"\n [ngTemplateOutletContext]=\"{ inputValue: _inputValue, onFocus: isFocused }\"\n></ng-container>\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, contentChild, input, TemplateRef } from '@angular/core';\nimport { AngularSearchAdapter } from '@intellegens/cornerstone-client-angular';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'app-search-clear-button',\n standalone: true,\n imports: [CommonModule, MatIconModule, MatButtonModule],\n templateUrl: './search-clear-button.html',\n})\nexport class SearchClearButton<TDto> {\n public searchAdapter = input.required<AngularSearchAdapter<TDto>>();\n protected _buttonTemplate = contentChild.required<TemplateRef<any>>(TemplateRef);\n\n protected _showButton = computed(() => {\n const adapter = this.searchAdapter();\n if (!adapter.text()?.length) return false;\n if (adapter.selection().length > 0 && !adapter.options.multiselect) return false;\n return true;\n });\n\n protected _clearAll() {\n this.searchAdapter().selectionClear();\n this.searchAdapter().setText('');\n }\n}\n","<ng-container *ngIf=\"_showButton()\" [ngTemplateOutlet]=\"_buttonTemplate()\" [ngTemplateOutletContext]=\"{ onClear: _clearAll.bind(this) }\"></ng-container>\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, contentChild, input, output, TemplateRef } from '@angular/core';\nimport { AngularSearchAdapter } from '@intellegens/cornerstone-client-angular';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'app-search-show-results-button',\n standalone: true,\n imports: [CommonModule, MatIconModule, MatButtonModule],\n templateUrl: './search-show-results-button.html',\n styleUrl: './search-show-results-button.css',\n})\nexport class SearchShowResultsButton<TDto> {\n public searchAdapter = input.required<AngularSearchAdapter<TDto>>();\n public showResults = output<boolean>();\n protected _buttonTemplate = contentChild.required<TemplateRef<any>>(TemplateRef);\n\n protected _showButton = computed(() => {\n const adapter = this.searchAdapter();\n return adapter.selection().length > 0 && !adapter.options.multiselect;\n });\n}\n","<div *ngIf=\"_showButton()\" style=\"position: relative; display: inline-block\">\n <div class=\"hover-area\" (mouseleave)=\"showResults.emit(false)\"></div>\n <ng-container [ngTemplateOutlet]=\"_buttonTemplate()\" [ngTemplateOutletContext]=\"{ onClick: showResults }\"></ng-container>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, contentChild, effect, input, output, signal, TemplateRef, untracked } from '@angular/core';\nimport { AngularSearchAdapter } from '@intellegens/cornerstone-client-angular';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatCardModule } from '@angular/material/card';\n\n@Component({\n selector: 'app-search-result-list',\n standalone: true,\n imports: [CommonModule, MatIconModule, MatCardModule],\n templateUrl: './search-result-list.html',\n})\nexport class SearchResultList<TDto> {\n public searchAdapter = input.required<AngularSearchAdapter<TDto>>();\n public isHovering = output<boolean>();\n protected _itemTemplate = contentChild.required<TemplateRef<any>>(TemplateRef);\n\n private _hasReceivedResults = signal(false);\n\n protected _searchResults = computed(() => this.searchAdapter().searchData());\n protected _beforeFirstResults = computed(() => !this._hasReceivedResults());\n protected _beforeFirstResultsMessage = 'Type at least 3 characters to search ...';\n\n private _trackResults = effect(() => {\n const searchText = this.searchAdapter().text();\n const isLoading = this.searchAdapter().isLoading();\n\n untracked(() => {\n const minLength = this.searchAdapter().searchTriggerMinLength;\n const textLength = searchText?.length ?? 0;\n if (textLength >= minLength && !isLoading) {\n this._hasReceivedResults.set(true);\n }\n if (textLength === 0) {\n this._hasReceivedResults.set(false);\n }\n });\n });\n\n protected _onItemClick(item: TDto) {\n this.searchAdapter().selectionAdd(item);\n }\n}\n","<div (mouseenter)=\"isHovering.emit(true)\" (mouseleave)=\"isHovering.emit(false)\">\n <ng-container\n [ngTemplateOutlet]=\"_itemTemplate()\"\n [ngTemplateOutletContext]=\"{\n searchResults: _searchResults(),\n beforeFirstResults: _beforeFirstResults,\n beforeFirstResultsMessage: _beforeFirstResultsMessage,\n onItemClick: _onItemClick.bind(this)\n }\"\n ></ng-container>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, contentChild, input, TemplateRef } from '@angular/core';\nimport { AngularSearchAdapter } from '@intellegens/cornerstone-client-angular';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'app-search-selection-list',\n standalone: true,\n imports: [CommonModule, MatIconModule, MatButtonModule],\n templateUrl: './search-selection-list.html',\n})\nexport class SearchSelectionList<TDto> {\n public searchAdapter = input.required<AngularSearchAdapter<TDto>>();\n protected _itemTemplate = contentChild.required<TemplateRef<any>>(TemplateRef);\n\n protected _selectedItems = computed(() => this.searchAdapter().selection());\n\n protected _onRemoveClick(item: TDto) {\n this.searchAdapter().selectionRemove(item);\n }\n}\n","<div *ngFor=\"let item of _selectedItems()\" [style.width]=\"!searchAdapter().options.multiselect ? '100%' : 'auto'\">\n <ng-container [ngTemplateOutlet]=\"_itemTemplate()\" [ngTemplateOutletContext]=\"{ $implicit: item, onRemove: _onRemoveClick.bind(this) }\"></ng-container>\n</div>\n","/*\n * Public API Surface of cornerstone-client-angular-material\n */\n\nexport * from './lib/';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,8 +1,7 @@
1
- import * as i0 from '@angular/core';
1
+ import * as _angular_core from '@angular/core';
2
2
  import { InputSignal, Type, TemplateRef } from '@angular/core';
3
- import { CollectionViewAdapter, IGlobalSearchable, SearchAdapter } from '@intellegens/cornerstone-client-angular';
3
+ import { AngularCollectionViewAdapter, AngularSearchAdapter } from '@intellegens/cornerstone-client-angular';
4
4
  import { MatPaginatorIntl } from '@angular/material/paginator';
5
- import { IGlobalSearchable as IGlobalSearchable$1, SearchAdapter as SearchAdapter$1 } from '@intellegens/cornerstone-client';
6
5
 
7
6
  interface IModalComponent {
8
7
  modalStackId?: string;
@@ -13,29 +12,29 @@ interface IModalComponent {
13
12
  }
14
13
 
15
14
  /**
16
- * Directive used to pass data to the `CollectionViewAdapter`, uses `MatPaginatorIntlOverrides` to change pagination UI.
15
+ * Directive used to pass data to the `AngularCollectionViewAdapter`, uses `MatPaginatorIntlOverrides` to change pagination UI.
17
16
  */
18
- declare class MatTablePaginationDirective {
17
+ declare class MatTablePagination {
19
18
  private _matPaginator;
20
- adapter: InputSignal<CollectionViewAdapter<any, any, any> | undefined>;
19
+ adapter: InputSignal<AngularCollectionViewAdapter<any> | undefined>;
21
20
  private _subscription?;
22
21
  ngOnInit(): void;
23
22
  ngOnDestroy(): void;
24
- static ɵfac: i0.ɵɵFactoryDeclaration<MatTablePaginationDirective, never>;
25
- static ɵdir: i0.ɵɵDirectiveDeclaration<MatTablePaginationDirective, "mat-paginator", never, { "adapter": { "alias": "adapter"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
23
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MatTablePagination, never>;
24
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MatTablePagination, "mat-paginator", never, { "adapter": { "alias": "adapter"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
26
25
  }
27
26
 
28
27
  /**
29
- * Directive used to pass data to the `CollectionViewAdapter` and reverse the default direction of shown table header sorting arrows
28
+ * Directive used to pass data to the `AngularCollectionViewAdapter` and reverse the default direction of shown table header sorting arrows
30
29
  */
31
- declare class MatTableSortDirective {
30
+ declare class MatTableSort {
32
31
  private _matSort;
33
- adapter: InputSignal<CollectionViewAdapter<any, any, any> | undefined>;
32
+ adapter: InputSignal<AngularCollectionViewAdapter<any> | undefined>;
34
33
  ngOnInit(): void;
35
34
  private _subscription;
36
35
  ngOnDestroy(): void;
37
- static ɵfac: i0.ɵɵFactoryDeclaration<MatTableSortDirective, never>;
38
- static ɵdir: i0.ɵɵDirectiveDeclaration<MatTableSortDirective, "mat-table[matSort], table[mat-table][matSort]", never, { "adapter": { "alias": "adapter"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
36
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MatTableSort, never>;
37
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MatTableSort, "mat-table[matSort], table[mat-table][matSort]", never, { "adapter": { "alias": "adapter"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
39
38
  }
40
39
 
41
40
  /**
@@ -43,8 +42,8 @@ declare class MatTableSortDirective {
43
42
  */
44
43
  declare class MatPaginatorIntlOverrides extends MatPaginatorIntl {
45
44
  getRangeLabel: (page: number, pageSize: number, length: number) => string;
46
- static ɵfac: i0.ɵɵFactoryDeclaration<MatPaginatorIntlOverrides, never>;
47
- static ɵprov: i0.ɵɵInjectableDeclaration<MatPaginatorIntlOverrides>;
45
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MatPaginatorIntlOverrides, never>;
46
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<MatPaginatorIntlOverrides>;
48
47
  }
49
48
 
50
49
  declare class ModalService {
@@ -59,64 +58,62 @@ declare class ModalService {
59
58
  getModalConfig(modalStackId: string | undefined): IModalComponent | undefined;
60
59
  getBreadcrumbs(modalStackId: string | undefined): string[];
61
60
  closeOnButton(modalStackId: string | undefined): boolean | undefined;
62
- static ɵfac: i0.ɵɵFactoryDeclaration<ModalService, never>;
63
- static ɵprov: i0.ɵɵInjectableDeclaration<ModalService>;
61
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalService, never>;
62
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ModalService>;
64
63
  }
65
64
 
66
- declare class SearchInputComponent<TKey, TDto extends IGlobalSearchable<TKey>> {
67
- searchAdapter: i0.InputSignal<SearchAdapter<TKey, TDto>>;
68
- protected _inputTemplate: i0.Signal<TemplateRef<any>>;
69
- isFocused: i0.OutputEmitterRef<boolean>;
70
- protected _inputValue: i0.WritableSignal<string>;
71
- protected _showInputField: boolean;
72
- ngOnInit(): void;
73
- private _onInput;
74
- static ɵfac: i0.ɵɵFactoryDeclaration<SearchInputComponent<any, any>, never>;
75
- static ɵcmp: i0.ɵɵComponentDeclaration<SearchInputComponent<any, any>, "app-search-input-component", never, { "searchAdapter": { "alias": "searchAdapter"; "required": true; "isSignal": true; }; }, { "isFocused": "isFocused"; }, ["_inputTemplate"], never, true, never>;
65
+ declare class SearchInput<TDto> {
66
+ searchAdapter: _angular_core.InputSignal<AngularSearchAdapter<TDto>>;
67
+ protected _inputTemplate: _angular_core.Signal<TemplateRef<any>>;
68
+ isFocused: _angular_core.OutputEmitterRef<boolean>;
69
+ protected _inputValue: _angular_core.WritableSignal<string>;
70
+ protected _showInputField: _angular_core.Signal<boolean>;
71
+ private _syncFromAdapter;
72
+ private _syncToAdapter;
73
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SearchInput<any>, never>;
74
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SearchInput<any>, "app-search-input", never, { "searchAdapter": { "alias": "searchAdapter"; "required": true; "isSignal": true; }; }, { "isFocused": "isFocused"; }, ["_inputTemplate"], never, true, never>;
76
75
  }
77
76
 
78
- declare class SearchClearButtonComponent<TKey, TDto extends IGlobalSearchable<TKey>> {
79
- searchAdapter: i0.InputSignal<SearchAdapter<TKey, TDto>>;
80
- protected _buttonTemplate: i0.Signal<TemplateRef<any>>;
81
- protected _showButton: boolean;
82
- ngOnInit(): void;
77
+ declare class SearchClearButton<TDto> {
78
+ searchAdapter: _angular_core.InputSignal<AngularSearchAdapter<TDto>>;
79
+ protected _buttonTemplate: _angular_core.Signal<TemplateRef<any>>;
80
+ protected _showButton: _angular_core.Signal<boolean>;
83
81
  protected _clearAll(): void;
84
- static ɵfac: i0.ɵɵFactoryDeclaration<SearchClearButtonComponent<any, any>, never>;
85
- static ɵcmp: i0.ɵɵComponentDeclaration<SearchClearButtonComponent<any, any>, "app-search-clear-button-component", never, { "searchAdapter": { "alias": "searchAdapter"; "required": true; "isSignal": true; }; }, {}, ["_buttonTemplate"], never, true, never>;
82
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SearchClearButton<any>, never>;
83
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SearchClearButton<any>, "app-search-clear-button", never, { "searchAdapter": { "alias": "searchAdapter"; "required": true; "isSignal": true; }; }, {}, ["_buttonTemplate"], never, true, never>;
86
84
  }
87
85
 
88
- declare class SearchShowResultsButtonComponent<TKey, TDto extends IGlobalSearchable<TKey>> {
89
- searchAdapter: i0.InputSignal<SearchAdapter<TKey, TDto>>;
90
- showResults: i0.OutputEmitterRef<boolean>;
91
- protected _buttonTemplate: i0.Signal<TemplateRef<any>>;
92
- protected _showButton: boolean;
93
- ngOnInit(): void;
94
- static ɵfac: i0.ɵɵFactoryDeclaration<SearchShowResultsButtonComponent<any, any>, never>;
95
- static ɵcmp: i0.ɵɵComponentDeclaration<SearchShowResultsButtonComponent<any, any>, "app-search-show-results-button-component", never, { "searchAdapter": { "alias": "searchAdapter"; "required": true; "isSignal": true; }; }, { "showResults": "showResults"; }, ["_buttonTemplate"], never, true, never>;
86
+ declare class SearchShowResultsButton<TDto> {
87
+ searchAdapter: _angular_core.InputSignal<AngularSearchAdapter<TDto>>;
88
+ showResults: _angular_core.OutputEmitterRef<boolean>;
89
+ protected _buttonTemplate: _angular_core.Signal<TemplateRef<any>>;
90
+ protected _showButton: _angular_core.Signal<boolean>;
91
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SearchShowResultsButton<any>, never>;
92
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SearchShowResultsButton<any>, "app-search-show-results-button", never, { "searchAdapter": { "alias": "searchAdapter"; "required": true; "isSignal": true; }; }, { "showResults": "showResults"; }, ["_buttonTemplate"], never, true, never>;
96
93
  }
97
94
 
98
- declare class SearchResultListComponent<TKey, TDto extends IGlobalSearchable<TKey>> {
99
- searchAdapter: i0.InputSignal<SearchAdapter<TKey, TDto>>;
100
- isHovering: i0.OutputEmitterRef<boolean>;
101
- protected _itemTemplate: i0.Signal<TemplateRef<any>>;
102
- protected _searchResults: i0.WritableSignal<TDto[]>;
103
- protected _beforeFirstResults: boolean;
95
+ declare class SearchResultList<TDto> {
96
+ searchAdapter: _angular_core.InputSignal<AngularSearchAdapter<TDto>>;
97
+ isHovering: _angular_core.OutputEmitterRef<boolean>;
98
+ protected _itemTemplate: _angular_core.Signal<TemplateRef<any>>;
99
+ private _hasReceivedResults;
100
+ protected _searchResults: _angular_core.Signal<readonly TDto[]>;
101
+ protected _beforeFirstResults: _angular_core.Signal<boolean>;
104
102
  protected _beforeFirstResultsMessage: string;
105
- ngOnInit(): void;
103
+ private _trackResults;
106
104
  protected _onItemClick(item: TDto): void;
107
- static ɵfac: i0.ɵɵFactoryDeclaration<SearchResultListComponent<any, any>, never>;
108
- static ɵcmp: i0.ɵɵComponentDeclaration<SearchResultListComponent<any, any>, "app-search-result-list-component", never, { "searchAdapter": { "alias": "searchAdapter"; "required": true; "isSignal": true; }; }, { "isHovering": "isHovering"; }, ["_itemTemplate"], never, true, never>;
105
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SearchResultList<any>, never>;
106
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SearchResultList<any>, "app-search-result-list", never, { "searchAdapter": { "alias": "searchAdapter"; "required": true; "isSignal": true; }; }, { "isHovering": "isHovering"; }, ["_itemTemplate"], never, true, never>;
109
107
  }
110
108
 
111
- declare class SearchSelectionListComponent<TKey, TDto extends IGlobalSearchable$1<TKey>> {
112
- searchAdapter: i0.InputSignal<SearchAdapter$1<TKey, TDto>>;
113
- protected _itemTemplate: i0.Signal<TemplateRef<any>>;
114
- protected _selectedItems: i0.WritableSignal<TDto[]>;
115
- ngOnInit(): void;
109
+ declare class SearchSelectionList<TDto> {
110
+ searchAdapter: _angular_core.InputSignal<AngularSearchAdapter<TDto>>;
111
+ protected _itemTemplate: _angular_core.Signal<TemplateRef<any>>;
112
+ protected _selectedItems: _angular_core.Signal<readonly TDto[]>;
116
113
  protected _onRemoveClick(item: TDto): void;
117
- static ɵfac: i0.ɵɵFactoryDeclaration<SearchSelectionListComponent<any, any>, never>;
118
- static ɵcmp: i0.ɵɵComponentDeclaration<SearchSelectionListComponent<any, any>, "app-search-selection-list-component", never, { "searchAdapter": { "alias": "searchAdapter"; "required": true; "isSignal": true; }; }, {}, ["_itemTemplate"], never, true, never>;
114
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SearchSelectionList<any>, never>;
115
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SearchSelectionList<any>, "app-search-selection-list", never, { "searchAdapter": { "alias": "searchAdapter"; "required": true; "isSignal": true; }; }, {}, ["_itemTemplate"], never, true, never>;
119
116
  }
120
117
 
121
- export { MatPaginatorIntlOverrides, MatTablePaginationDirective, MatTableSortDirective, ModalService, SearchClearButtonComponent, SearchInputComponent, SearchResultListComponent, SearchSelectionListComponent, SearchShowResultsButtonComponent };
118
+ export { MatPaginatorIntlOverrides, MatTablePagination, MatTableSort, ModalService, SearchClearButton, SearchInput, SearchResultList, SearchSelectionList, SearchShowResultsButton };
122
119
  export type { IModalComponent };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intellegens/cornerstone-client-angular-material",
3
- "version": "0.0.9999-alpha-42",
3
+ "version": "0.0.9999-alpha-43",
4
4
  "private": false,
5
5
  "publishable": true,
6
6
  "sideEffects": false,
@@ -20,8 +20,8 @@
20
20
  "@angular/material": "^21.2.0",
21
21
  "@angular/router": "^21.2.0",
22
22
  "rxjs": "~7.8.2",
23
- "@intellegens/cornerstone-client": "0.0.9999-alpha-42",
24
- "@intellegens/cornerstone-client-angular": "0.0.9999-alpha-42"
23
+ "@intellegens/cornerstone-client": "0.0.9999-alpha-43",
24
+ "@intellegens/cornerstone-client-angular": "0.0.9999-alpha-43"
25
25
  },
26
26
  "dependencies": {
27
27
  "tslib": "^2.8.1"