@intellegens/cornerstone-client-angular-material 0.0.9999-alpha-18 → 0.0.9999-alpha-20
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,9 +1,14 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, inject, input, Directive } from '@angular/core';
|
|
2
|
+
import { Injectable, inject, input, Directive, contentChild, TemplateRef, output, signal, effect, Component } 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';
|
|
6
6
|
import { MatDialog } from '@angular/material/dialog';
|
|
7
|
+
import * as i1 from '@angular/common';
|
|
8
|
+
import { CommonModule } from '@angular/common';
|
|
9
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
10
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
11
|
+
import { MatCardModule } from '@angular/material/card';
|
|
7
12
|
|
|
8
13
|
/**
|
|
9
14
|
* Custom paginator service to adjust the label for the paginator.
|
|
@@ -247,6 +252,137 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
|
|
|
247
252
|
}]
|
|
248
253
|
}] });
|
|
249
254
|
|
|
255
|
+
class SearchInputComponent {
|
|
256
|
+
searchAdapter = input.required(...(ngDevMode ? [{ debugName: "searchAdapter" }] : []));
|
|
257
|
+
_inputTemplate = contentChild.required(TemplateRef);
|
|
258
|
+
isFocused = output();
|
|
259
|
+
_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: "20.3.9", ngImport: i0, type: SearchInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
275
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.9", 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"] }] });
|
|
276
|
+
}
|
|
277
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SearchInputComponent, decorators: [{
|
|
278
|
+
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" }]
|
|
280
|
+
}], 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
|
+
|
|
282
|
+
class SearchClearButtonComponent {
|
|
283
|
+
searchAdapter = input.required(...(ngDevMode ? [{ debugName: "searchAdapter" }] : []));
|
|
284
|
+
_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
|
+
}
|
|
300
|
+
_clearAll() {
|
|
301
|
+
this.searchAdapter().searchText = '';
|
|
302
|
+
this.searchAdapter().selectedItems = [];
|
|
303
|
+
}
|
|
304
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SearchClearButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
305
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.9", 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 }] });
|
|
306
|
+
}
|
|
307
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SearchClearButtonComponent, decorators: [{
|
|
308
|
+
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" }]
|
|
310
|
+
}], propDecorators: { searchAdapter: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchAdapter", required: true }] }], _buttonTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }] } });
|
|
311
|
+
|
|
312
|
+
class SearchShowResultsButtonComponent {
|
|
313
|
+
searchAdapter = input.required(...(ngDevMode ? [{ debugName: "searchAdapter" }] : []));
|
|
314
|
+
showResults = output();
|
|
315
|
+
_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: "20.3.9", ngImport: i0, type: SearchShowResultsButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
328
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.9", 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 }] });
|
|
329
|
+
}
|
|
330
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SearchShowResultsButtonComponent, decorators: [{
|
|
331
|
+
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"] }]
|
|
333
|
+
}], 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
|
+
|
|
335
|
+
class SearchResultListComponent {
|
|
336
|
+
searchAdapter = input.required(...(ngDevMode ? [{ debugName: "searchAdapter" }] : []));
|
|
337
|
+
isHovering = output();
|
|
338
|
+
_itemTemplate = contentChild.required(TemplateRef);
|
|
339
|
+
_searchResults = signal([], ...(ngDevMode ? [{ debugName: "_searchResults" }] : []));
|
|
340
|
+
_beforeFirstResults = true;
|
|
341
|
+
_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;
|
|
348
|
+
}
|
|
349
|
+
if (this._beforeFirstResults === false && this.searchAdapter().searchText.length === 0) {
|
|
350
|
+
// restore _beforeFirstResultsMessage
|
|
351
|
+
this._beforeFirstResults = true;
|
|
352
|
+
}
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
_onItemClick(item) {
|
|
356
|
+
this.searchAdapter().addToSelection(item);
|
|
357
|
+
}
|
|
358
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SearchResultListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
359
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.9", 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 }] });
|
|
360
|
+
}
|
|
361
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SearchResultListComponent, decorators: [{
|
|
362
|
+
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" }]
|
|
364
|
+
}], 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
|
+
|
|
366
|
+
class SearchSelectionListComponent {
|
|
367
|
+
searchAdapter = input.required(...(ngDevMode ? [{ debugName: "searchAdapter" }] : []));
|
|
368
|
+
_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
|
+
}
|
|
375
|
+
_onRemoveClick(item) {
|
|
376
|
+
this.searchAdapter().removeFromSelection(item);
|
|
377
|
+
}
|
|
378
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SearchSelectionListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
379
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.9", 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 }] });
|
|
380
|
+
}
|
|
381
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SearchSelectionListComponent, decorators: [{
|
|
382
|
+
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" }]
|
|
384
|
+
}], propDecorators: { searchAdapter: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchAdapter", required: true }] }], _itemTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }] } });
|
|
385
|
+
|
|
250
386
|
/*
|
|
251
387
|
* Public API Surface of cornerstone-client-angular-material
|
|
252
388
|
*/
|
|
@@ -255,5 +391,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
|
|
|
255
391
|
* Generated bundle index. Do not edit.
|
|
256
392
|
*/
|
|
257
393
|
|
|
258
|
-
export { MatPaginatorIntlOverrides, MatTablePaginationDirective, MatTableSortDirective, ModalService };
|
|
394
|
+
export { MatPaginatorIntlOverrides, MatTablePaginationDirective, MatTableSortDirective, ModalService, SearchClearButtonComponent, SearchInputComponent, SearchResultListComponent, SearchSelectionListComponent, SearchShowResultsButtonComponent };
|
|
259
395
|
//# 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/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","/*\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/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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"}
|
package/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InputSignal, Type } from '@angular/core';
|
|
3
|
-
import { CollectionViewAdapter } from '@intellegens/cornerstone-client-angular';
|
|
2
|
+
import { InputSignal, Type, TemplateRef } from '@angular/core';
|
|
3
|
+
import { CollectionViewAdapter, IGlobalSearchable, SearchAdapter } 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';
|
|
5
6
|
|
|
6
7
|
interface IModalComponent {
|
|
7
8
|
modalStackId?: string;
|
|
@@ -62,5 +63,60 @@ declare class ModalService {
|
|
|
62
63
|
static ɵprov: i0.ɵɵInjectableDeclaration<ModalService>;
|
|
63
64
|
}
|
|
64
65
|
|
|
65
|
-
|
|
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>;
|
|
76
|
+
}
|
|
77
|
+
|
|
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;
|
|
83
|
+
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>;
|
|
86
|
+
}
|
|
87
|
+
|
|
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>;
|
|
96
|
+
}
|
|
97
|
+
|
|
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;
|
|
104
|
+
protected _beforeFirstResultsMessage: string;
|
|
105
|
+
ngOnInit(): void;
|
|
106
|
+
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>;
|
|
109
|
+
}
|
|
110
|
+
|
|
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;
|
|
116
|
+
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>;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export { MatPaginatorIntlOverrides, MatTablePaginationDirective, MatTableSortDirective, ModalService, SearchClearButtonComponent, SearchInputComponent, SearchResultListComponent, SearchSelectionListComponent, SearchShowResultsButtonComponent };
|
|
66
122
|
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-
|
|
3
|
+
"version": "0.0.9999-alpha-20",
|
|
4
4
|
"private": false,
|
|
5
5
|
"publishable": true,
|
|
6
6
|
"sideEffects": false,
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"@angular/material": "^20.2.5",
|
|
21
21
|
"@angular/router": "^20.0.0",
|
|
22
22
|
"rxjs": "~7.8.0",
|
|
23
|
-
"@intellegens/cornerstone-client": "0.0.9999-alpha-
|
|
24
|
-
"@intellegens/cornerstone-client-angular": "0.0.9999-alpha-
|
|
23
|
+
"@intellegens/cornerstone-client": "0.0.9999-alpha-20",
|
|
24
|
+
"@intellegens/cornerstone-client-angular": "0.0.9999-alpha-20"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"tslib": "^2.3.0"
|