@clr/angular 13.1.0 → 13.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/clarity.api.md +76 -28
- package/clr-angular.module.d.ts +13 -12
- package/data/datagrid/datagrid.d.ts +5 -1
- package/data/datagrid/utils/key-navigation-grid.controller.d.ts +27 -0
- package/data/tree-view/models/tree-node.model.d.ts +1 -0
- package/data/tree-view/tree-focus-manager.service.d.ts +6 -0
- package/data/tree-view/tree-node.d.ts +9 -4
- package/esm2020/clr-angular.module.mjs +5 -1
- package/esm2020/data/datagrid/datagrid-placeholder.mjs +3 -3
- package/esm2020/data/datagrid/datagrid.mjs +26 -12
- package/esm2020/data/datagrid/utils/key-navigation-grid.controller.mjs +172 -0
- package/esm2020/data/tree-view/models/tree-node.model.mjs +1 -1
- package/esm2020/data/tree-view/tree-focus-manager.service.mjs +69 -1
- package/esm2020/data/tree-view/tree-node.mjs +45 -16
- package/esm2020/forms/combobox/combobox.mjs +3 -3
- package/esm2020/forms/datepicker/calendar.mjs +3 -3
- package/esm2020/forms/password/password-container.mjs +3 -11
- package/esm2020/layout/nav/aria-current-link.mjs +28 -0
- package/esm2020/layout/nav/index.mjs +2 -1
- package/esm2020/layout/nav/nav-level.mjs +2 -2
- package/esm2020/layout/nav/navigation.module.mjs +5 -1
- package/esm2020/utils/focus/key-focus/util.mjs +6 -1
- package/esm2020/utils/for-type-ahead/for-type-ahead.mjs +54 -0
- package/esm2020/utils/for-type-ahead/for-type-ahead.module.mjs +23 -0
- package/esm2020/utils/for-type-ahead/for-type-ahead.service.mjs +29 -0
- package/esm2020/utils/for-type-ahead/index.mjs +8 -0
- package/esm2020/utils/index.mjs +2 -1
- package/fesm2015/clr-angular.mjs +434 -26
- package/fesm2015/clr-angular.mjs.map +1 -1
- package/fesm2020/clr-angular.mjs +429 -26
- package/fesm2020/clr-angular.mjs.map +1 -1
- package/layout/nav/aria-current-link.d.ts +13 -0
- package/layout/nav/index.d.ts +1 -0
- package/layout/nav/navigation.module.d.ts +7 -6
- package/package.json +1 -1
- package/utils/focus/key-focus/util.d.ts +1 -0
- package/utils/for-type-ahead/for-type-ahead.d.ts +15 -0
- package/utils/for-type-ahead/for-type-ahead.module.d.ts +8 -0
- package/utils/for-type-ahead/for-type-ahead.service.d.ts +11 -0
- package/utils/for-type-ahead/index.d.ts +2 -0
- package/utils/index.d.ts +1 -0
package/fesm2020/clr-angular.mjs
CHANGED
|
@@ -11,6 +11,7 @@ import * as i1 from '@angular/forms';
|
|
|
11
11
|
import { FormsModule, SelectMultipleControlValueAccessor, FormControl, FormGroup } from '@angular/forms';
|
|
12
12
|
import { FocusTrapTrackerService, createId, isFocusable, isHTMLElement } from '@cds/core/internal';
|
|
13
13
|
import '@cds/core/internal-components/close-button/register.js';
|
|
14
|
+
import * as i1$1 from '@angular/router';
|
|
14
15
|
import '@cds/core/icon/register';
|
|
15
16
|
|
|
16
17
|
/*
|
|
@@ -338,6 +339,11 @@ function preventArrowKeyScroll(event) {
|
|
|
338
339
|
event.preventDefault();
|
|
339
340
|
}
|
|
340
341
|
}
|
|
342
|
+
function isKeyEitherLetterOrNumber(event) {
|
|
343
|
+
const char = event.key;
|
|
344
|
+
// Only letter characters differ when they switch between lowercase and uppercase, whether it's an English or non-English letter.
|
|
345
|
+
return char.toLowerCase() !== char.toUpperCase() || (char >= '0' && char <= '9');
|
|
346
|
+
}
|
|
341
347
|
|
|
342
348
|
/*
|
|
343
349
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -4963,10 +4969,10 @@ class ClrCalendar {
|
|
|
4963
4969
|
}
|
|
4964
4970
|
}
|
|
4965
4971
|
ClrCalendar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrCalendar, deps: [{ token: LocaleHelperService }, { token: DateNavigationService }, { token: DatepickerFocusService }, { token: DateIOService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
4966
|
-
ClrCalendar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrCalendar, selector: "clr-calendar", host: { listeners: { "keydown": "onKeyDown($event)" } }, ngImport: i0, template: "<table class=\"calendar-table\">\n <tr class=\"calendar-row weekdays\">\n <
|
|
4972
|
+
ClrCalendar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrCalendar, selector: "clr-calendar", host: { listeners: { "keydown": "onKeyDown($event)" } }, ngImport: i0, template: "<table class=\"calendar-table\">\n <tr class=\"calendar-row weekdays\">\n <th *ngFor=\"let day of localeDays\" class=\"calendar-cell weekday\" role=\"heading\" [attr.aria-label]=\"day.day\">\n {{day.narrow}}\n </th>\n </tr>\n <tr class=\"calendar-row\" *ngFor=\"let row of calendarViewModel.calendarView\">\n <td *ngFor=\"let dayView of row\" class=\"calendar-cell\">\n <clr-day [clrDayView]=\"dayView\"></clr-day>\n </td>\n </tr>\n</table>\n", components: [{ type: ClrDay, selector: "clr-day", inputs: ["clrDayView"] }], directives: [{ type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
4967
4973
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrCalendar, decorators: [{
|
|
4968
4974
|
type: Component,
|
|
4969
|
-
args: [{ selector: 'clr-calendar', template: "<table class=\"calendar-table\">\n <tr class=\"calendar-row weekdays\">\n <
|
|
4975
|
+
args: [{ selector: 'clr-calendar', template: "<table class=\"calendar-table\">\n <tr class=\"calendar-row weekdays\">\n <th *ngFor=\"let day of localeDays\" class=\"calendar-cell weekday\" role=\"heading\" [attr.aria-label]=\"day.day\">\n {{day.narrow}}\n </th>\n </tr>\n <tr class=\"calendar-row\" *ngFor=\"let row of calendarViewModel.calendarView\">\n <td *ngFor=\"let dayView of row\" class=\"calendar-cell\">\n <clr-day [clrDayView]=\"dayView\"></clr-day>\n </td>\n </tr>\n</table>\n" }]
|
|
4970
4976
|
}], ctorParameters: function () { return [{ type: LocaleHelperService }, { type: DateNavigationService }, { type: DatepickerFocusService }, { type: DateIOService }, { type: i0.ElementRef }]; }, propDecorators: { onKeyDown: [{
|
|
4971
4977
|
type: HostListener,
|
|
4972
4978
|
args: ['keydown', ['$event']]
|
|
@@ -6375,11 +6381,7 @@ ClrPasswordContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
6375
6381
|
class="clr-input-group-icon-action"
|
|
6376
6382
|
type="button"
|
|
6377
6383
|
>
|
|
6378
|
-
<cds-icon
|
|
6379
|
-
status="info"
|
|
6380
|
-
[attr.shape]="show ? 'eye-hide' : 'eye'"
|
|
6381
|
-
[attr.title]="show ? commonStrings.keys.hide : commonStrings.keys.show"
|
|
6382
|
-
></cds-icon>
|
|
6384
|
+
<cds-icon status="info" [attr.shape]="show ? 'eye-hide' : 'eye'"></cds-icon>
|
|
6383
6385
|
<span class="clr-sr-only">{{
|
|
6384
6386
|
show ? commonStrings.keys.passwordHide : commonStrings.keys.passwordShow
|
|
6385
6387
|
}}</span>
|
|
@@ -6423,11 +6425,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
6423
6425
|
class="clr-input-group-icon-action"
|
|
6424
6426
|
type="button"
|
|
6425
6427
|
>
|
|
6426
|
-
<cds-icon
|
|
6427
|
-
status="info"
|
|
6428
|
-
[attr.shape]="show ? 'eye-hide' : 'eye'"
|
|
6429
|
-
[attr.title]="show ? commonStrings.keys.hide : commonStrings.keys.show"
|
|
6430
|
-
></cds-icon>
|
|
6428
|
+
<cds-icon status="info" [attr.shape]="show ? 'eye-hide' : 'eye'"></cds-icon>
|
|
6431
6429
|
<span class="clr-sr-only">{{
|
|
6432
6430
|
show ? commonStrings.keys.passwordHide : commonStrings.keys.passwordShow
|
|
6433
6431
|
}}</span>
|
|
@@ -9016,7 +9014,7 @@ ClrCombobox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
|
|
|
9016
9014
|
ClrPopoverToggleService,
|
|
9017
9015
|
ClrPopoverEventsService,
|
|
9018
9016
|
ClrPopoverPositionService,
|
|
9019
|
-
], queries: [{ propertyName: "optionSelected", first: true, predicate: ClrOptionSelected, descendants: true }], viewQueries: [{ propertyName: "textbox", first: true, predicate: ["textboxInput"], descendants: true }, { propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--\n* Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n* This software is released under MIT license.\n* The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\n width of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"focusInput()\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"invalid\"\n>\n <span\n *ngIf=\"multiSelect && optionSelectionService.selectionModel.model\"\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n >\n <span *ngFor=\"let item of multiSelectModel; let i = index\" class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n <ng-container\n *ngIf=\"optionSelected\"\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n >\n </ng-container>\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n </span>\n\n <span class=\"clr-combobox-input-wrapper\">\n <input\n #textboxInput\n type=\"text\"\n [id]=\"inputId()\"\n
|
|
9017
|
+
], queries: [{ propertyName: "optionSelected", first: true, predicate: ClrOptionSelected, descendants: true }], viewQueries: [{ propertyName: "textbox", first: true, predicate: ["textboxInput"], descendants: true }, { propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--\n* Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n* This software is released under MIT license.\n* The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\n width of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"focusInput()\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"invalid\"\n>\n <span\n *ngIf=\"multiSelect && optionSelectionService.selectionModel.model\"\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n >\n <span *ngFor=\"let item of multiSelectModel; let i = index\" class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n <ng-container\n *ngIf=\"optionSelected\"\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n >\n </ng-container>\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n </span>\n\n <span class=\"clr-combobox-input-wrapper\" role=\"combobox\">\n <input\n #textboxInput\n type=\"text\"\n [id]=\"inputId()\"\n class=\"clr-input clr-combobox-input\"\n [(ngModel)]=\"searchText\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [attr.aria-expanded]=\"openState\"\n [attr.aria-owns]=\"ariaOwns\"\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n [attr.aria-invalid]=\"control?.invalid? true: null\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-activedescendant]=\"getActiveDescendant()\"\n [attr.placeholder]=\"placeholder\"\n />\n </span>\n\n <!-- No click handler, as it uses the handler on the .clr-combobox-wrapper -->\n <button\n clrPopoverOpenCloseButton\n #trigger\n type=\"button\"\n class=\"clr-combobox-trigger\"\n tabindex=\"-1\"\n [disabled]=\"control?.disabled || null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxOpen\"\n >\n <cds-icon shape=\"angle\" direction=\"down\" size=\"12\"></cds-icon>\n </button>\n\n <div class=\"clr-focus-indicator\" [class.clr-focus]=\"focused\"></div>\n</div>\n\n<!-- Both close handlers are handled manually due to issues in Edge browser.\n Additionally 'outsideClickToClose' has complex handling that's necessary\n to be manual due to the component architecture -->\n<div role=\"dialog\" *clrPopoverContent=\"openState at smartPosition; outsideClickToClose: false; scrollToClose: false\">\n <ng-content></ng-content>\n</div>\n", components: [{ type: ClrRovingTabindex, selector: "[clrRovingTabindex]", inputs: ["clrRovingTabindex", "clrRovingTabindexDisabled"] }], directives: [{ type: ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: ClrKeyFocusItem, selector: "[clrKeyFocusItem]" }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: CdsIconCustomTag, selector: "cds-icon" }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { type: ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }] });
|
|
9020
9018
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrCombobox, decorators: [{
|
|
9021
9019
|
type: Component,
|
|
9022
9020
|
args: [{ selector: 'clr-combobox', providers: [
|
|
@@ -9035,7 +9033,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
9035
9033
|
'[class.aria-required]': 'true',
|
|
9036
9034
|
'[class.clr-combobox]': 'true',
|
|
9037
9035
|
'[class.clr-combobox-disabled]': 'control?.disabled',
|
|
9038
|
-
}, template: "<!--\n* Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n* This software is released under MIT license.\n* The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\n width of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"focusInput()\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"invalid\"\n>\n <span\n *ngIf=\"multiSelect && optionSelectionService.selectionModel.model\"\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n >\n <span *ngFor=\"let item of multiSelectModel; let i = index\" class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n <ng-container\n *ngIf=\"optionSelected\"\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n >\n </ng-container>\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n </span>\n\n <span class=\"clr-combobox-input-wrapper\">\n <input\n #textboxInput\n type=\"text\"\n [id]=\"inputId()\"\n
|
|
9036
|
+
}, template: "<!--\n* Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n* This software is released under MIT license.\n* The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\n width of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"focusInput()\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"invalid\"\n>\n <span\n *ngIf=\"multiSelect && optionSelectionService.selectionModel.model\"\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n >\n <span *ngFor=\"let item of multiSelectModel; let i = index\" class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n <ng-container\n *ngIf=\"optionSelected\"\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n >\n </ng-container>\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n </span>\n\n <span class=\"clr-combobox-input-wrapper\" role=\"combobox\">\n <input\n #textboxInput\n type=\"text\"\n [id]=\"inputId()\"\n class=\"clr-input clr-combobox-input\"\n [(ngModel)]=\"searchText\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [attr.aria-expanded]=\"openState\"\n [attr.aria-owns]=\"ariaOwns\"\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n [attr.aria-invalid]=\"control?.invalid? true: null\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-activedescendant]=\"getActiveDescendant()\"\n [attr.placeholder]=\"placeholder\"\n />\n </span>\n\n <!-- No click handler, as it uses the handler on the .clr-combobox-wrapper -->\n <button\n clrPopoverOpenCloseButton\n #trigger\n type=\"button\"\n class=\"clr-combobox-trigger\"\n tabindex=\"-1\"\n [disabled]=\"control?.disabled || null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxOpen\"\n >\n <cds-icon shape=\"angle\" direction=\"down\" size=\"12\"></cds-icon>\n </button>\n\n <div class=\"clr-focus-indicator\" [class.clr-focus]=\"focused\"></div>\n</div>\n\n<!-- Both close handlers are handled manually due to issues in Edge browser.\n Additionally 'outsideClickToClose' has complex handling that's necessary\n to be manual due to the component architecture -->\n<div role=\"dialog\" *clrPopoverContent=\"openState at smartPosition; outsideClickToClose: false; scrollToClose: false\">\n <ng-content></ng-content>\n</div>\n" }]
|
|
9039
9037
|
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i1.NgControl, decorators: [{
|
|
9040
9038
|
type: Self
|
|
9041
9039
|
}, {
|
|
@@ -13102,7 +13100,7 @@ ClrDatagridPlaceholder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", v
|
|
|
13102
13100
|
ClrDatagridPlaceholder.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrDatagridPlaceholder, selector: "clr-dg-placeholder", host: { properties: { "class.datagrid-placeholder-container": "true" } }, ngImport: i0, template: `
|
|
13103
13101
|
<div class="datagrid-placeholder" [class.datagrid-empty]="emptyDatagrid" role="row">
|
|
13104
13102
|
<div class="datagrid-placeholder-image" *ngIf="emptyDatagrid"></div>
|
|
13105
|
-
<span role="gridcell"><ng-content *ngIf="emptyDatagrid"></ng-content></span>
|
|
13103
|
+
<span role="gridcell" class="datagrid-placeholder-content"><ng-content *ngIf="emptyDatagrid"></ng-content></span>
|
|
13106
13104
|
</div>
|
|
13107
13105
|
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
13108
13106
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridPlaceholder, decorators: [{
|
|
@@ -13112,7 +13110,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
13112
13110
|
template: `
|
|
13113
13111
|
<div class="datagrid-placeholder" [class.datagrid-empty]="emptyDatagrid" role="row">
|
|
13114
13112
|
<div class="datagrid-placeholder-image" *ngIf="emptyDatagrid"></div>
|
|
13115
|
-
<span role="gridcell"><ng-content *ngIf="emptyDatagrid"></ng-content></span>
|
|
13113
|
+
<span role="gridcell" class="datagrid-placeholder-content"><ng-content *ngIf="emptyDatagrid"></ng-content></span>
|
|
13116
13114
|
</div>
|
|
13117
13115
|
`,
|
|
13118
13116
|
host: { '[class.datagrid-placeholder-container]': 'true' },
|
|
@@ -14260,13 +14258,181 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
14260
14258
|
type: Injectable
|
|
14261
14259
|
}] });
|
|
14262
14260
|
|
|
14261
|
+
/*
|
|
14262
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
14263
|
+
* This software is released under MIT license.
|
|
14264
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
14265
|
+
*/
|
|
14266
|
+
function getTabableItems(el) {
|
|
14267
|
+
const tabableSelector = [
|
|
14268
|
+
'a[href]',
|
|
14269
|
+
'area[href]',
|
|
14270
|
+
'input:not([disabled])',
|
|
14271
|
+
'button:not([disabled])',
|
|
14272
|
+
'select:not([disabled])',
|
|
14273
|
+
'textarea:not([disabled])',
|
|
14274
|
+
'iframe',
|
|
14275
|
+
'object',
|
|
14276
|
+
'embed',
|
|
14277
|
+
'*[tabindex]',
|
|
14278
|
+
'*[contenteditable=true]',
|
|
14279
|
+
'[role=button]:not([disabled])',
|
|
14280
|
+
].join(',');
|
|
14281
|
+
return Array.from(el.querySelectorAll(tabableSelector));
|
|
14282
|
+
}
|
|
14283
|
+
class KeyNavigationGridController {
|
|
14284
|
+
constructor(zone) {
|
|
14285
|
+
this.zone = zone;
|
|
14286
|
+
this.listenersAdded = false;
|
|
14287
|
+
this.destroy$ = new Subject();
|
|
14288
|
+
this.config = {
|
|
14289
|
+
keyGridRows: '[role=row]:not(.datagrid-placeholder)',
|
|
14290
|
+
keyGridCells: '[role=gridcell]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), [role=columnheader]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), .datagrid-detail-caret',
|
|
14291
|
+
keyGrid: '[role=grid]',
|
|
14292
|
+
};
|
|
14293
|
+
}
|
|
14294
|
+
get grid() {
|
|
14295
|
+
return this.host?.querySelector(this.config.keyGrid);
|
|
14296
|
+
}
|
|
14297
|
+
get rows() {
|
|
14298
|
+
return this.host?.querySelectorAll(this.config.keyGridRows);
|
|
14299
|
+
}
|
|
14300
|
+
get cells() {
|
|
14301
|
+
return this.host?.querySelectorAll(this.config.keyGridCells);
|
|
14302
|
+
}
|
|
14303
|
+
ngOnDestroy() {
|
|
14304
|
+
this.destroy$.next();
|
|
14305
|
+
this.destroy$.complete();
|
|
14306
|
+
}
|
|
14307
|
+
addListeners() {
|
|
14308
|
+
if (this.listenersAdded) {
|
|
14309
|
+
return;
|
|
14310
|
+
}
|
|
14311
|
+
this.zone.runOutsideAngular(() => {
|
|
14312
|
+
fromEvent(this.grid, 'mousedown')
|
|
14313
|
+
.pipe(takeUntil(this.destroy$))
|
|
14314
|
+
.subscribe((e) => {
|
|
14315
|
+
// preserve right click for context menus & keyboard mouse control https://apple.stackexchange.com/questions/32715/how-do-i-open-the-context-menu-from-a-mac-keyboard
|
|
14316
|
+
if (e.buttons === 1 && !e.ctrlKey) {
|
|
14317
|
+
const activeCell = this.cells
|
|
14318
|
+
? Array.from(this.cells).find(c => c === e.target || c === e.target.closest(this.config.keyGridCells))
|
|
14319
|
+
: null;
|
|
14320
|
+
if (activeCell) {
|
|
14321
|
+
this.setActiveCell(activeCell);
|
|
14322
|
+
}
|
|
14323
|
+
}
|
|
14324
|
+
});
|
|
14325
|
+
fromEvent(this.grid, 'keydown')
|
|
14326
|
+
.pipe(takeUntil(this.destroy$))
|
|
14327
|
+
.subscribe((e) => {
|
|
14328
|
+
// Skip column resize events
|
|
14329
|
+
if (e.target.classList.contains('drag-handle') &&
|
|
14330
|
+
(e.code === 'ArrowLeft' || e.code === 'ArrowRight')) {
|
|
14331
|
+
return;
|
|
14332
|
+
}
|
|
14333
|
+
if (e.code === 'ArrowUp' ||
|
|
14334
|
+
e.code === 'ArrowDown' ||
|
|
14335
|
+
e.code === 'ArrowLeft' ||
|
|
14336
|
+
e.code === 'ArrowRight' ||
|
|
14337
|
+
e.code === 'End' ||
|
|
14338
|
+
e.code === 'Home' ||
|
|
14339
|
+
e.code === 'PageUp' ||
|
|
14340
|
+
e.code === 'PageDown') {
|
|
14341
|
+
const { x, y } = this.getNextItemCoordinate(e);
|
|
14342
|
+
const activeItem = this.rows
|
|
14343
|
+
? Array.from(this.rows[y].querySelectorAll(this.config.keyGridCells))[x]
|
|
14344
|
+
: null;
|
|
14345
|
+
if (activeItem) {
|
|
14346
|
+
this.setActiveCell(activeItem);
|
|
14347
|
+
}
|
|
14348
|
+
e.preventDefault();
|
|
14349
|
+
}
|
|
14350
|
+
});
|
|
14351
|
+
});
|
|
14352
|
+
this.listenersAdded = true;
|
|
14353
|
+
}
|
|
14354
|
+
initializeKeyGrid(host) {
|
|
14355
|
+
this.host = host;
|
|
14356
|
+
this.addListeners();
|
|
14357
|
+
this.resetKeyGrid();
|
|
14358
|
+
}
|
|
14359
|
+
resetKeyGrid() {
|
|
14360
|
+
this.cells?.forEach((i) => i.setAttribute('tabindex', '-1'));
|
|
14361
|
+
const firstCell = this.cells ? this.cells[0] : null;
|
|
14362
|
+
firstCell?.setAttribute('tabindex', '0');
|
|
14363
|
+
}
|
|
14364
|
+
setActiveCell(activeCell) {
|
|
14365
|
+
const prior = this.cells ? Array.from(this.cells).find(c => c.getAttribute('tabindex') === '0') : null;
|
|
14366
|
+
if (prior) {
|
|
14367
|
+
prior.setAttribute('tabindex', '-1');
|
|
14368
|
+
}
|
|
14369
|
+
activeCell.setAttribute('tabindex', '0');
|
|
14370
|
+
const items = getTabableItems(activeCell);
|
|
14371
|
+
const item = activeCell.getAttribute('role') !== 'columnheader' && items[0] ? items[0] : activeCell;
|
|
14372
|
+
item.focus();
|
|
14373
|
+
}
|
|
14374
|
+
getNextItemCoordinate(e) {
|
|
14375
|
+
let currentCell = this.cells ? Array.from(this.cells).find(i => i.getAttribute('tabindex') === '0') : null;
|
|
14376
|
+
if (e.code === 'Tab') {
|
|
14377
|
+
currentCell = document.activeElement;
|
|
14378
|
+
}
|
|
14379
|
+
const currentRow = this.rows && currentCell ? Array.from(this.rows).find(r => r.contains(currentCell)) : null;
|
|
14380
|
+
const numOfRows = this.rows ? this.rows.length - 1 : 0;
|
|
14381
|
+
const numOfColumns = this.cells ? this.cells.length / this.rows.length - 1 : 0;
|
|
14382
|
+
let x = currentRow && currentCell
|
|
14383
|
+
? Array.from(currentRow.querySelectorAll(this.config.keyGridCells)).indexOf(currentCell)
|
|
14384
|
+
: 0;
|
|
14385
|
+
let y = currentRow && currentCell && this.rows ? Array.from(this.rows).indexOf(currentRow) : 0;
|
|
14386
|
+
const dir = this.host.dir;
|
|
14387
|
+
const inlineStart = dir === 'rtl' ? 'ArrowRight' : 'ArrowLeft';
|
|
14388
|
+
const inlineEnd = dir === 'rtl' ? 'ArrowLeft' : 'ArrowRight';
|
|
14389
|
+
const itemsPerPage = Math.floor(this.host?.querySelector('.datagrid').clientHeight / this.rows[0].clientHeight) - 1 || 0;
|
|
14390
|
+
if (e.code === 'ArrowUp' && y !== 0) {
|
|
14391
|
+
y = y - 1;
|
|
14392
|
+
}
|
|
14393
|
+
else if (e.code === 'ArrowDown' && y < numOfRows) {
|
|
14394
|
+
y = y + 1;
|
|
14395
|
+
}
|
|
14396
|
+
else if (e.code === inlineStart && x !== 0) {
|
|
14397
|
+
x = x - 1;
|
|
14398
|
+
}
|
|
14399
|
+
else if (e.code === inlineEnd && x < numOfColumns) {
|
|
14400
|
+
x = x + 1;
|
|
14401
|
+
}
|
|
14402
|
+
else if (e.code === 'End') {
|
|
14403
|
+
x = numOfColumns;
|
|
14404
|
+
if (e.ctrlKey) {
|
|
14405
|
+
y = numOfRows;
|
|
14406
|
+
}
|
|
14407
|
+
}
|
|
14408
|
+
else if (e.code === 'Home') {
|
|
14409
|
+
x = 0;
|
|
14410
|
+
if (e.ctrlKey) {
|
|
14411
|
+
y = 0;
|
|
14412
|
+
}
|
|
14413
|
+
}
|
|
14414
|
+
else if (e.code === 'PageUp') {
|
|
14415
|
+
y = y - itemsPerPage > 0 ? y - itemsPerPage : 0;
|
|
14416
|
+
}
|
|
14417
|
+
else if (e.code === 'PageDown') {
|
|
14418
|
+
y = y + itemsPerPage < numOfRows ? y + itemsPerPage : numOfRows;
|
|
14419
|
+
}
|
|
14420
|
+
return { x, y };
|
|
14421
|
+
}
|
|
14422
|
+
}
|
|
14423
|
+
KeyNavigationGridController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: KeyNavigationGridController, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
14424
|
+
KeyNavigationGridController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: KeyNavigationGridController });
|
|
14425
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: KeyNavigationGridController, decorators: [{
|
|
14426
|
+
type: Injectable
|
|
14427
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
|
|
14428
|
+
|
|
14263
14429
|
/*
|
|
14264
14430
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
14265
14431
|
* This software is released under MIT license.
|
|
14266
14432
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
14267
14433
|
*/
|
|
14268
14434
|
class ClrDatagrid {
|
|
14269
|
-
constructor(organizer, items, expandableRows, selection, rowActionService, stateProvider, displayMode, renderer, detailService, datagridId, el, page, commonStrings) {
|
|
14435
|
+
constructor(organizer, items, expandableRows, selection, rowActionService, stateProvider, displayMode, renderer, detailService, datagridId, el, page, commonStrings, columnsService, keyNavigation) {
|
|
14270
14436
|
this.organizer = organizer;
|
|
14271
14437
|
this.items = items;
|
|
14272
14438
|
this.expandableRows = expandableRows;
|
|
@@ -14279,6 +14445,8 @@ class ClrDatagrid {
|
|
|
14279
14445
|
this.el = el;
|
|
14280
14446
|
this.page = page;
|
|
14281
14447
|
this.commonStrings = commonStrings;
|
|
14448
|
+
this.columnsService = columnsService;
|
|
14449
|
+
this.keyNavigation = keyNavigation;
|
|
14282
14450
|
/* reference to the enum so that template can access */
|
|
14283
14451
|
this.SELECTION_TYPE = SelectionType;
|
|
14284
14452
|
/**
|
|
@@ -14404,6 +14572,7 @@ class ClrDatagrid {
|
|
|
14404
14572
|
* Our setup happens in the view of some of our components, so we wait for it to be done before starting
|
|
14405
14573
|
*/
|
|
14406
14574
|
ngAfterViewInit() {
|
|
14575
|
+
this.keyNavigation.initializeKeyGrid(this.el.nativeElement);
|
|
14407
14576
|
// TODO: determine if we can get rid of provider wiring in view init so that subscriptions can be done earlier
|
|
14408
14577
|
this.refresh.emit(this.stateProvider.state);
|
|
14409
14578
|
this._subscriptions.push(this.stateProvider.change.subscribe(state => this.refresh.emit(state)), this.selection.change.subscribe(s => {
|
|
@@ -14413,11 +14582,16 @@ class ClrDatagrid {
|
|
|
14413
14582
|
else if (this.selection.selectionType === SelectionType.Multi) {
|
|
14414
14583
|
this.selectedChanged.emit(s);
|
|
14415
14584
|
}
|
|
14416
|
-
}),
|
|
14585
|
+
}),
|
|
14586
|
+
// Reinitialize arrow key navigation on page changes
|
|
14587
|
+
this.page.change.subscribe(() => {
|
|
14588
|
+
this.keyNavigation.resetKeyGrid();
|
|
14417
14589
|
if (!this.clrDgDisablePageFocus) {
|
|
14418
14590
|
this.datagridTable.nativeElement.focus();
|
|
14419
14591
|
}
|
|
14420
14592
|
}),
|
|
14593
|
+
// Reinitialize arrow key navigation on hide/unhide columns
|
|
14594
|
+
combineLatest(this.columnsService.columns).subscribe(() => this.keyNavigation?.resetKeyGrid()),
|
|
14421
14595
|
// A subscription that listens for displayMode changes on the datagrid
|
|
14422
14596
|
this.displayMode.view.subscribe(viewChange => {
|
|
14423
14597
|
// Remove any projected columns from the projectedDisplayColumns container
|
|
@@ -14465,7 +14639,7 @@ class ClrDatagrid {
|
|
|
14465
14639
|
this.organizer.resize();
|
|
14466
14640
|
}
|
|
14467
14641
|
}
|
|
14468
|
-
ClrDatagrid.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagrid, deps: [{ token: DatagridRenderOrganizer }, { token: Items }, { token: ExpandableRowsCount }, { token: Selection }, { token: RowActionService }, { token: StateProvider }, { token: DisplayModeService }, { token: i0.Renderer2 }, { token: DetailService }, { token: UNIQUE_ID }, { token: i0.ElementRef }, { token: Page }, { token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
14642
|
+
ClrDatagrid.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagrid, deps: [{ token: DatagridRenderOrganizer }, { token: Items }, { token: ExpandableRowsCount }, { token: Selection }, { token: RowActionService }, { token: StateProvider }, { token: DisplayModeService }, { token: i0.Renderer2 }, { token: DetailService }, { token: UNIQUE_ID }, { token: i0.ElementRef }, { token: Page }, { token: ClrCommonStringsService }, { token: ColumnsService }, { token: KeyNavigationGridController }], target: i0.ɵɵFactoryTarget.Component });
|
|
14469
14643
|
ClrDatagrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrDatagrid, selector: "clr-datagrid", inputs: { loading: ["clrDgLoading", "loading"], selected: ["clrDgSelected", "selected"], singleSelected: ["clrDgSingleSelected", "singleSelected"], clrDgSingleSelectionAriaLabel: "clrDgSingleSelectionAriaLabel", clrDgSingleActionableAriaLabel: "clrDgSingleActionableAriaLabel", clrDetailExpandableAriaLabel: "clrDetailExpandableAriaLabel", clrDgDisablePageFocus: "clrDgDisablePageFocus", clrDgPreserveSelection: "clrDgPreserveSelection", rowSelectionMode: ["clrDgRowSelection", "rowSelectionMode"] }, outputs: { refresh: "clrDgRefresh", selectedChanged: "clrDgSelectedChange", singleSelectedChanged: "clrDgSingleSelectedChange" }, host: { properties: { "class.datagrid-host": "true", "class.datagrid-detail-open": "detailService.isOpen" } }, providers: [
|
|
14470
14644
|
Selection,
|
|
14471
14645
|
Sort,
|
|
@@ -14482,7 +14656,8 @@ ClrDatagrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
|
|
|
14482
14656
|
TableSizeService,
|
|
14483
14657
|
ColumnsService,
|
|
14484
14658
|
DisplayModeService,
|
|
14485
|
-
|
|
14659
|
+
KeyNavigationGridController,
|
|
14660
|
+
], queries: [{ propertyName: "iterator", first: true, predicate: ClrDatagridItems, descendants: true }, { propertyName: "placeholder", first: true, predicate: ClrDatagridPlaceholder, descendants: true }, { propertyName: "columns", predicate: ClrDatagridColumn }, { propertyName: "rows", predicate: ClrDatagridRow }], viewQueries: [{ propertyName: "scrollableColumns", first: true, predicate: ["scrollableColumns"], descendants: true, read: ViewContainerRef }, { propertyName: "datagridTable", first: true, predicate: ["datagridTable"], descendants: true, read: ElementRef }, { propertyName: "_projectedDisplayColumns", first: true, predicate: ["projectedDisplayColumns"], descendants: true, read: ViewContainerRef }, { propertyName: "_projectedCalculationColumns", first: true, predicate: ["projectedCalculationColumns"], descendants: true, read: ViewContainerRef }, { propertyName: "_displayedRows", first: true, predicate: ["displayedRows"], descendants: true, read: ViewContainerRef }, { propertyName: "_calculationRows", first: true, predicate: ["calculationRows"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-content select=\"clr-dg-action-bar\"></ng-content>\n<div class=\"datagrid-outer-wrapper\">\n <div class=\"datagrid-inner-wrapper\">\n <div class=\"datagrid\" #datagrid [attr.aria-hidden]=\"detailService.isOpen ? true : null\">\n <div class=\"datagrid-table-wrapper\">\n <div role=\"grid\" class=\"datagrid-table\" tabindex=\"-1\" #datagridTable>\n <div role=\"rowgroup\" class=\"datagrid-header\">\n <div role=\"row\" class=\"datagrid-row\">\n <div class=\"datagrid-row-master datagrid-row-flex\">\n <div class=\"datagrid-row-sticky\">\n <!--header for datagrid where you can select multiple rows -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n (keydown.space)=\"allSelected = !allSelected; $event.preventDefault()\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <!-- We need to move focus and space-key handling to the parent because of keyboard arrow key navigation,\n which is not able to transfer focus directly on the input when focused with the tab key -->\n <input\n type=\"checkbox\"\n [id]=\"selectAllId\"\n [(ngModel)]=\"allSelected\"\n [attr.aria-label]=\"commonStrings.keys.selectAll\"\n tabindex=\"-1\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"selectAllId\" class=\"clr-control-label clr-col-null\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.selectAll}}</span>\n </label>\n </div>\n\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for datagrid where you can select one row only -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n [attr.aria-label]=\"clrDgSingleSelectionAriaLabel\"\n >\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for single row action; only displayType if we have at least one actionable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-row-actions datagrid-fixed-column\"\n *ngIf=\"rowActionService.hasActionableRow\"\n [attr.aria-label]=\"clrDgSingleActionableAriaLabel\"\n >\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for carets; only displayType if we have at least one expandable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-expandable-caret datagrid-fixed-column\"\n *ngIf=\"expandableRows.hasExpandableRow || detailService.enabled\"\n [attr.aria-label]=\"clrDetailExpandableAriaLabel\"\n >\n <div class=\"datagrid-column-separator\"></div>\n </div>\n </div>\n <div class=\"datagrid-row-scrollable\">\n <ng-container #projectedDisplayColumns></ng-container>\n </div>\n </div>\n </div>\n </div>\n <ng-container #displayedRows></ng-container>\n <!-- Custom placeholder overrides the default empty one -->\n <ng-content select=\"clr-dg-placeholder\"></ng-content>\n <clr-dg-placeholder *ngIf=\"!placeholder\"></clr-dg-placeholder>\n </div>\n </div>\n </div>\n <ng-content select=\"clr-dg-footer\"></ng-content>\n <div class=\"datagrid-spinner\" *ngIf=\"loading\">\n <clr-spinner clrMedium>Loading</clr-spinner>\n </div>\n </div>\n <ng-content select=\"[clrIfDetail],clr-dg-detail\"></ng-content>\n</div>\n\n<div class=\"datagrid-calculation-table\">\n <div class=\"datagrid-calculation-header\">\n <ng-container #projectedCalculationColumns></ng-container>\n </div>\n <ng-container #calculationRows></ng-container>\n</div>\n", components: [{ type: ClrDatagridPlaceholder, selector: "clr-dg-placeholder" }, { type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: ClrLabel, selector: "label", inputs: ["for"] }] });
|
|
14486
14661
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagrid, decorators: [{
|
|
14487
14662
|
type: Component,
|
|
14488
14663
|
args: [{ selector: 'clr-datagrid', providers: [
|
|
@@ -14501,14 +14676,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
14501
14676
|
TableSizeService,
|
|
14502
14677
|
ColumnsService,
|
|
14503
14678
|
DisplayModeService,
|
|
14679
|
+
KeyNavigationGridController,
|
|
14504
14680
|
], host: {
|
|
14505
14681
|
'[class.datagrid-host]': 'true',
|
|
14506
14682
|
'[class.datagrid-detail-open]': 'detailService.isOpen',
|
|
14507
|
-
}, template: "<!--\n ~ Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-content select=\"clr-dg-action-bar\"></ng-content>\n<div class=\"datagrid-outer-wrapper\">\n <div class=\"datagrid-inner-wrapper\">\n <div class=\"datagrid\" #datagrid [attr.aria-hidden]=\"detailService.isOpen ? true : null\">\n <div class=\"datagrid-table-wrapper\">\n <div role=\"grid\" class=\"datagrid-table\" tabindex=\"-1\" #datagridTable>\n <div role=\"rowgroup\" class=\"datagrid-header\">\n <div role=\"row\" class=\"datagrid-row\">\n <div class=\"datagrid-row-master datagrid-row-flex\">\n <div class=\"datagrid-row-sticky\">\n <!--header for datagrid where you can select multiple rows -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <input\n type=\"checkbox\"\n [id]=\"selectAllId\"\n [(ngModel)]=\"allSelected\"\n [attr.aria-label]=\"commonStrings.keys.selectAll\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"selectAllId\" class=\"clr-control-label clr-col-null\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.selectAll}}</span>\n </label>\n </div>\n\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for datagrid where you can select one row only -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n [attr.aria-label]=\"clrDgSingleSelectionAriaLabel\"\n >\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for single row action; only displayType if we have at least one actionable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-row-actions datagrid-fixed-column\"\n *ngIf=\"rowActionService.hasActionableRow\"\n [attr.aria-label]=\"clrDgSingleActionableAriaLabel\"\n >\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for carets; only displayType if we have at least one expandable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-expandable-caret datagrid-fixed-column\"\n *ngIf=\"expandableRows.hasExpandableRow || detailService.enabled\"\n [attr.aria-label]=\"clrDetailExpandableAriaLabel\"\n >\n <div class=\"datagrid-column-separator\"></div>\n </div>\n </div>\n <div class=\"datagrid-row-scrollable\">\n <ng-container #projectedDisplayColumns></ng-container>\n </div>\n </div>\n </div>\n </div>\n <ng-container #displayedRows></ng-container>\n <!-- Custom placeholder overrides the default empty one -->\n <ng-content select=\"clr-dg-placeholder\"></ng-content>\n <clr-dg-placeholder *ngIf=\"!placeholder\"></clr-dg-placeholder>\n </div>\n </div>\n </div>\n <ng-content select=\"clr-dg-footer\"></ng-content>\n <div class=\"datagrid-spinner\" *ngIf=\"loading\">\n <clr-spinner clrMedium>Loading</clr-spinner>\n </div>\n </div>\n <ng-content select=\"[clrIfDetail],clr-dg-detail\"></ng-content>\n</div>\n\n<div class=\"datagrid-calculation-table\">\n <div class=\"datagrid-calculation-header\">\n <ng-container #projectedCalculationColumns></ng-container>\n </div>\n <ng-container #calculationRows></ng-container>\n</div>\n" }]
|
|
14683
|
+
}, template: "<!--\n ~ Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-content select=\"clr-dg-action-bar\"></ng-content>\n<div class=\"datagrid-outer-wrapper\">\n <div class=\"datagrid-inner-wrapper\">\n <div class=\"datagrid\" #datagrid [attr.aria-hidden]=\"detailService.isOpen ? true : null\">\n <div class=\"datagrid-table-wrapper\">\n <div role=\"grid\" class=\"datagrid-table\" tabindex=\"-1\" #datagridTable>\n <div role=\"rowgroup\" class=\"datagrid-header\">\n <div role=\"row\" class=\"datagrid-row\">\n <div class=\"datagrid-row-master datagrid-row-flex\">\n <div class=\"datagrid-row-sticky\">\n <!--header for datagrid where you can select multiple rows -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n (keydown.space)=\"allSelected = !allSelected; $event.preventDefault()\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <!-- We need to move focus and space-key handling to the parent because of keyboard arrow key navigation,\n which is not able to transfer focus directly on the input when focused with the tab key -->\n <input\n type=\"checkbox\"\n [id]=\"selectAllId\"\n [(ngModel)]=\"allSelected\"\n [attr.aria-label]=\"commonStrings.keys.selectAll\"\n tabindex=\"-1\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"selectAllId\" class=\"clr-control-label clr-col-null\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.selectAll}}</span>\n </label>\n </div>\n\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for datagrid where you can select one row only -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n [attr.aria-label]=\"clrDgSingleSelectionAriaLabel\"\n >\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for single row action; only displayType if we have at least one actionable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-row-actions datagrid-fixed-column\"\n *ngIf=\"rowActionService.hasActionableRow\"\n [attr.aria-label]=\"clrDgSingleActionableAriaLabel\"\n >\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for carets; only displayType if we have at least one expandable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-expandable-caret datagrid-fixed-column\"\n *ngIf=\"expandableRows.hasExpandableRow || detailService.enabled\"\n [attr.aria-label]=\"clrDetailExpandableAriaLabel\"\n >\n <div class=\"datagrid-column-separator\"></div>\n </div>\n </div>\n <div class=\"datagrid-row-scrollable\">\n <ng-container #projectedDisplayColumns></ng-container>\n </div>\n </div>\n </div>\n </div>\n <ng-container #displayedRows></ng-container>\n <!-- Custom placeholder overrides the default empty one -->\n <ng-content select=\"clr-dg-placeholder\"></ng-content>\n <clr-dg-placeholder *ngIf=\"!placeholder\"></clr-dg-placeholder>\n </div>\n </div>\n </div>\n <ng-content select=\"clr-dg-footer\"></ng-content>\n <div class=\"datagrid-spinner\" *ngIf=\"loading\">\n <clr-spinner clrMedium>Loading</clr-spinner>\n </div>\n </div>\n <ng-content select=\"[clrIfDetail],clr-dg-detail\"></ng-content>\n</div>\n\n<div class=\"datagrid-calculation-table\">\n <div class=\"datagrid-calculation-header\">\n <ng-container #projectedCalculationColumns></ng-container>\n </div>\n <ng-container #calculationRows></ng-container>\n</div>\n" }]
|
|
14508
14684
|
}], ctorParameters: function () { return [{ type: DatagridRenderOrganizer }, { type: Items }, { type: ExpandableRowsCount }, { type: Selection }, { type: RowActionService }, { type: StateProvider }, { type: DisplayModeService }, { type: i0.Renderer2 }, { type: DetailService }, { type: undefined, decorators: [{
|
|
14509
14685
|
type: Inject,
|
|
14510
14686
|
args: [UNIQUE_ID]
|
|
14511
|
-
}] }, { type: i0.ElementRef }, { type: Page }, { type: ClrCommonStringsService }]; }, propDecorators: { loading: [{
|
|
14687
|
+
}] }, { type: i0.ElementRef }, { type: Page }, { type: ClrCommonStringsService }, { type: ColumnsService }, { type: KeyNavigationGridController }]; }, propDecorators: { loading: [{
|
|
14512
14688
|
type: Input,
|
|
14513
14689
|
args: ['clrDgLoading']
|
|
14514
14690
|
}], refresh: [{
|
|
@@ -15637,6 +15813,107 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
15637
15813
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15638
15814
|
*/
|
|
15639
15815
|
|
|
15816
|
+
/*
|
|
15817
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
15818
|
+
* This software is released under MIT license.
|
|
15819
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15820
|
+
*/
|
|
15821
|
+
class ForTypeAheadProvider {
|
|
15822
|
+
constructor() {
|
|
15823
|
+
this._textContentChange = new Subject();
|
|
15824
|
+
}
|
|
15825
|
+
get textContentChange() {
|
|
15826
|
+
return this._textContentChange.asObservable();
|
|
15827
|
+
}
|
|
15828
|
+
get textContent() {
|
|
15829
|
+
return this._textContent;
|
|
15830
|
+
}
|
|
15831
|
+
set textContent(value) {
|
|
15832
|
+
this._textContent = value;
|
|
15833
|
+
this._textContentChange.next(value);
|
|
15834
|
+
}
|
|
15835
|
+
}
|
|
15836
|
+
ForTypeAheadProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ForTypeAheadProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
15837
|
+
ForTypeAheadProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ForTypeAheadProvider });
|
|
15838
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ForTypeAheadProvider, decorators: [{
|
|
15839
|
+
type: Injectable
|
|
15840
|
+
}] });
|
|
15841
|
+
|
|
15842
|
+
/*
|
|
15843
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
15844
|
+
* This software is released under MIT license.
|
|
15845
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15846
|
+
*/
|
|
15847
|
+
// The purpose of this directive is to provide the text content of its host element
|
|
15848
|
+
// or text content that's passed to its input.
|
|
15849
|
+
// This directive must stay optional. So do not embed this directive in a component module by default.
|
|
15850
|
+
// If users need to use this directive, they should import its module on their side.
|
|
15851
|
+
class ClrForTypeAhead {
|
|
15852
|
+
constructor(el, forTypeAheadProvider) {
|
|
15853
|
+
this.el = el;
|
|
15854
|
+
this.forTypeAheadProvider = forTypeAheadProvider;
|
|
15855
|
+
}
|
|
15856
|
+
trimAndLowerCase(value) {
|
|
15857
|
+
return value.toLocaleLowerCase().trim();
|
|
15858
|
+
}
|
|
15859
|
+
get content() {
|
|
15860
|
+
return this._content;
|
|
15861
|
+
}
|
|
15862
|
+
set content(value) {
|
|
15863
|
+
if (value) {
|
|
15864
|
+
this._content = this.trimAndLowerCase(value);
|
|
15865
|
+
this.forTypeAheadProvider.textContent = this._content;
|
|
15866
|
+
}
|
|
15867
|
+
else {
|
|
15868
|
+
this._content = this.trimAndLowerCase(this.el.nativeElement.textContent);
|
|
15869
|
+
this.forTypeAheadProvider.textContent = this._content;
|
|
15870
|
+
}
|
|
15871
|
+
}
|
|
15872
|
+
ngOnInit() {
|
|
15873
|
+
if (!this._content) {
|
|
15874
|
+
this._content = this.trimAndLowerCase(this.el.nativeElement.textContent);
|
|
15875
|
+
this.forTypeAheadProvider.textContent = this._content;
|
|
15876
|
+
}
|
|
15877
|
+
}
|
|
15878
|
+
}
|
|
15879
|
+
ClrForTypeAhead.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrForTypeAhead, deps: [{ token: i0.ElementRef }, { token: ForTypeAheadProvider }], target: i0.ɵɵFactoryTarget.Directive });
|
|
15880
|
+
ClrForTypeAhead.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ClrForTypeAhead, selector: "[clrForTypeAhead]", inputs: { content: ["clrForTypeAhead", "content"] }, providers: [ForTypeAheadProvider], ngImport: i0 });
|
|
15881
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrForTypeAhead, decorators: [{
|
|
15882
|
+
type: Directive,
|
|
15883
|
+
args: [{
|
|
15884
|
+
providers: [ForTypeAheadProvider],
|
|
15885
|
+
selector: '[clrForTypeAhead]',
|
|
15886
|
+
}]
|
|
15887
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ForTypeAheadProvider }]; }, propDecorators: { content: [{
|
|
15888
|
+
type: Input,
|
|
15889
|
+
args: ['clrForTypeAhead']
|
|
15890
|
+
}] } });
|
|
15891
|
+
|
|
15892
|
+
/*
|
|
15893
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
15894
|
+
* This software is released under MIT license.
|
|
15895
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15896
|
+
*/
|
|
15897
|
+
class ClrForTypeAheadModule {
|
|
15898
|
+
}
|
|
15899
|
+
ClrForTypeAheadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrForTypeAheadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
15900
|
+
ClrForTypeAheadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrForTypeAheadModule, declarations: [ClrForTypeAhead], imports: [CommonModule], exports: [ClrForTypeAhead] });
|
|
15901
|
+
ClrForTypeAheadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrForTypeAheadModule, imports: [[CommonModule]] });
|
|
15902
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrForTypeAheadModule, decorators: [{
|
|
15903
|
+
type: NgModule,
|
|
15904
|
+
args: [{
|
|
15905
|
+
imports: [CommonModule],
|
|
15906
|
+
declarations: [ClrForTypeAhead],
|
|
15907
|
+
exports: [ClrForTypeAhead],
|
|
15908
|
+
}]
|
|
15909
|
+
}] });
|
|
15910
|
+
|
|
15911
|
+
/*
|
|
15912
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
15913
|
+
* This software is released under MIT license.
|
|
15914
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15915
|
+
*/
|
|
15916
|
+
|
|
15640
15917
|
/*
|
|
15641
15918
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
15642
15919
|
* This software is released under MIT license.
|
|
@@ -17870,6 +18147,71 @@ class TreeFocusManagerService {
|
|
|
17870
18147
|
return this.findNextFocusable(model);
|
|
17871
18148
|
}
|
|
17872
18149
|
}
|
|
18150
|
+
findDescendentNodeStartsWith(searchString, model) {
|
|
18151
|
+
if (model.expanded && model.children.length > 0) {
|
|
18152
|
+
for (const childModel of model.children) {
|
|
18153
|
+
const found = this.findNodeStartsWith(searchString, childModel);
|
|
18154
|
+
if (found) {
|
|
18155
|
+
return found;
|
|
18156
|
+
}
|
|
18157
|
+
}
|
|
18158
|
+
}
|
|
18159
|
+
return null;
|
|
18160
|
+
}
|
|
18161
|
+
findSiblingNodeStartsWith(searchString, model) {
|
|
18162
|
+
const siblings = this.findSiblings(model);
|
|
18163
|
+
const selfIndex = siblings.indexOf(model);
|
|
18164
|
+
// Look from sibling nodes
|
|
18165
|
+
for (let i = selfIndex + 1; i < siblings.length; i++) {
|
|
18166
|
+
const siblingModel = siblings[i];
|
|
18167
|
+
const found = this.findNodeStartsWith(searchString, siblingModel);
|
|
18168
|
+
if (found) {
|
|
18169
|
+
return found;
|
|
18170
|
+
}
|
|
18171
|
+
}
|
|
18172
|
+
return null;
|
|
18173
|
+
}
|
|
18174
|
+
findRootNodeStartsWith(searchString, model) {
|
|
18175
|
+
for (const rootModel of this.rootNodeModels) {
|
|
18176
|
+
// Don't look from a parent yet
|
|
18177
|
+
if (model.parent && model.parent === rootModel) {
|
|
18178
|
+
continue;
|
|
18179
|
+
}
|
|
18180
|
+
const found = this.findNodeStartsWith(searchString, rootModel);
|
|
18181
|
+
if (found) {
|
|
18182
|
+
return found;
|
|
18183
|
+
}
|
|
18184
|
+
}
|
|
18185
|
+
return null;
|
|
18186
|
+
}
|
|
18187
|
+
findNodeStartsWith(searchString, model) {
|
|
18188
|
+
if (!model) {
|
|
18189
|
+
return null;
|
|
18190
|
+
}
|
|
18191
|
+
if (model.textContent.startsWith(searchString)) {
|
|
18192
|
+
return model;
|
|
18193
|
+
}
|
|
18194
|
+
return this.findDescendentNodeStartsWith(searchString, model);
|
|
18195
|
+
}
|
|
18196
|
+
findClosestNodeStartsWith(searchString, model) {
|
|
18197
|
+
if (!model) {
|
|
18198
|
+
return null;
|
|
18199
|
+
}
|
|
18200
|
+
const foundFromDescendents = this.findDescendentNodeStartsWith(searchString, model);
|
|
18201
|
+
if (foundFromDescendents) {
|
|
18202
|
+
return foundFromDescendents;
|
|
18203
|
+
}
|
|
18204
|
+
const foundFromSiblings = this.findSiblingNodeStartsWith(searchString, model);
|
|
18205
|
+
if (foundFromSiblings) {
|
|
18206
|
+
return foundFromSiblings;
|
|
18207
|
+
}
|
|
18208
|
+
const foundFromRootNodes = this.findRootNodeStartsWith(searchString, model);
|
|
18209
|
+
if (foundFromRootNodes) {
|
|
18210
|
+
return foundFromRootNodes;
|
|
18211
|
+
}
|
|
18212
|
+
// Now look from its own direct parent
|
|
18213
|
+
return this.findNodeStartsWith(searchString, model.parent);
|
|
18214
|
+
}
|
|
17873
18215
|
focusNode(model) {
|
|
17874
18216
|
if (model) {
|
|
17875
18217
|
this._focusRequest.next(model.nodeId);
|
|
@@ -17899,6 +18241,9 @@ class TreeFocusManagerService {
|
|
|
17899
18241
|
focusNodeBelow(model) {
|
|
17900
18242
|
this.focusNode(this.findNodeBelow(model));
|
|
17901
18243
|
}
|
|
18244
|
+
focusNodeStartsWith(searchString, model) {
|
|
18245
|
+
this.focusNode(this.findClosestNodeStartsWith(searchString, model));
|
|
18246
|
+
}
|
|
17902
18247
|
}
|
|
17903
18248
|
TreeFocusManagerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: TreeFocusManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
17904
18249
|
TreeFocusManagerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: TreeFocusManagerService });
|
|
@@ -17988,10 +18333,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
17988
18333
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
17989
18334
|
*/
|
|
17990
18335
|
const LVIEW_CONTEXT_INDEX = 8;
|
|
18336
|
+
// If the user types multiple keys without allowing 200ms to pass between them,
|
|
18337
|
+
// then those keys are sent together in one request.
|
|
18338
|
+
const TREE_TYPE_AHEAD_TIMEOUT = 200;
|
|
17991
18339
|
class ClrTreeNode {
|
|
17992
|
-
constructor(nodeId, platformId, parent, featuresService, expandService, commonStrings, focusManager, injector) {
|
|
18340
|
+
constructor(nodeId, platformId, parent, forTypeAheadProvider, featuresService, expandService, commonStrings, focusManager, injector) {
|
|
17993
18341
|
this.nodeId = nodeId;
|
|
17994
18342
|
this.platformId = platformId;
|
|
18343
|
+
this.forTypeAheadProvider = forTypeAheadProvider;
|
|
17995
18344
|
this.featuresService = featuresService;
|
|
17996
18345
|
this.expandService = expandService;
|
|
17997
18346
|
this.commonStrings = commonStrings;
|
|
@@ -17999,6 +18348,8 @@ class ClrTreeNode {
|
|
|
17999
18348
|
this.STATES = ClrSelectedState;
|
|
18000
18349
|
this.skipEmitChange = false;
|
|
18001
18350
|
this.isModelLoading = false;
|
|
18351
|
+
this.typeAheadKeyEvent = new Subject();
|
|
18352
|
+
this.typeAheadKeyBuffer = '';
|
|
18002
18353
|
this.selectedChange = new EventEmitter(false);
|
|
18003
18354
|
this.expandedChange = new EventEmitter();
|
|
18004
18355
|
this.subscriptions = [];
|
|
@@ -18081,6 +18432,16 @@ class ClrTreeNode {
|
|
|
18081
18432
|
}));
|
|
18082
18433
|
this.subscriptions.push(this._model.loading$.pipe(debounceTime(0)).subscribe(isLoading => (this.isModelLoading = isLoading)));
|
|
18083
18434
|
}
|
|
18435
|
+
ngAfterContentInit() {
|
|
18436
|
+
if (this.forTypeAheadProvider) {
|
|
18437
|
+
this._model.textContent = this.forTypeAheadProvider.textContent;
|
|
18438
|
+
this.subscriptions.push(this.typeAheadKeyEvent.pipe(debounceTime(TREE_TYPE_AHEAD_TIMEOUT)).subscribe((bufferedKeys) => {
|
|
18439
|
+
this.focusManager.focusNodeStartsWith(bufferedKeys, this._model);
|
|
18440
|
+
// reset once bufferedKeys are used
|
|
18441
|
+
this.typeAheadKeyBuffer = '';
|
|
18442
|
+
}));
|
|
18443
|
+
}
|
|
18444
|
+
}
|
|
18084
18445
|
ngOnDestroy() {
|
|
18085
18446
|
this._model.destroy();
|
|
18086
18447
|
this.subscriptions.forEach(sub => sub.unsubscribe());
|
|
@@ -18146,8 +18507,15 @@ class ClrTreeNode {
|
|
|
18146
18507
|
this.toggleExpandOrTriggerDefault();
|
|
18147
18508
|
break;
|
|
18148
18509
|
default:
|
|
18510
|
+
if (this._model.textContent && isKeyEitherLetterOrNumber(event)) {
|
|
18511
|
+
this.typeAheadKeyBuffer += event.key;
|
|
18512
|
+
this.typeAheadKeyEvent.next(this.typeAheadKeyBuffer);
|
|
18513
|
+
return;
|
|
18514
|
+
}
|
|
18149
18515
|
break;
|
|
18150
18516
|
}
|
|
18517
|
+
// if non-letter keys are pressed, do reset.
|
|
18518
|
+
this.typeAheadKeyBuffer = '';
|
|
18151
18519
|
}
|
|
18152
18520
|
get isParent() {
|
|
18153
18521
|
return this._model.children && this._model.children.length > 0;
|
|
@@ -18194,7 +18562,7 @@ class ClrTreeNode {
|
|
|
18194
18562
|
}
|
|
18195
18563
|
}
|
|
18196
18564
|
}
|
|
18197
|
-
ClrTreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrTreeNode, deps: [{ token: UNIQUE_ID }, { token: PLATFORM_ID }, { token: ClrTreeNode, optional: true, skipSelf: true }, { token: TreeFeaturesService }, { token: IfExpandService }, { token: ClrCommonStringsService }, { token: TreeFocusManagerService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
18565
|
+
ClrTreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrTreeNode, deps: [{ token: UNIQUE_ID }, { token: PLATFORM_ID }, { token: ClrTreeNode, optional: true, skipSelf: true }, { token: ForTypeAheadProvider, optional: true, self: true }, { token: TreeFeaturesService }, { token: IfExpandService }, { token: ClrCommonStringsService }, { token: TreeFocusManagerService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
18198
18566
|
ClrTreeNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrTreeNode, selector: "clr-tree-node", inputs: { selected: ["clrSelected", "selected"], expandable: ["clrExpandable", "expandable"], expanded: ["clrExpanded", "expanded"] }, outputs: { selectedChange: "clrSelectedChange", expandedChange: "clrExpandedChange" }, host: { properties: { "class.clr-tree-node": "true" } }, providers: [
|
|
18199
18567
|
UNIQUE_ID_PROVIDER,
|
|
18200
18568
|
TREE_FEATURES_PROVIDER,
|
|
@@ -18235,6 +18603,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
18235
18603
|
type: Optional
|
|
18236
18604
|
}, {
|
|
18237
18605
|
type: SkipSelf
|
|
18606
|
+
}] }, { type: ForTypeAheadProvider, decorators: [{
|
|
18607
|
+
type: Optional
|
|
18608
|
+
}, {
|
|
18609
|
+
type: Self
|
|
18238
18610
|
}] }, { type: TreeFeaturesService }, { type: IfExpandService }, { type: ClrCommonStringsService }, { type: TreeFocusManagerService }, { type: i0.Injector }]; }, propDecorators: { selected: [{
|
|
18239
18611
|
type: Input,
|
|
18240
18612
|
args: ['clrSelected']
|
|
@@ -20672,7 +21044,7 @@ class ClrNavLevel extends FocusTrap {
|
|
|
20672
21044
|
if (current === navHost) {
|
|
20673
21045
|
return;
|
|
20674
21046
|
}
|
|
20675
|
-
else if (current.classList.contains('nav-link')) {
|
|
21047
|
+
else if (current.classList.contains('nav-link') && this._document.body.clientWidth < LARGE_BREAKPOINT) {
|
|
20676
21048
|
this.close();
|
|
20677
21049
|
return;
|
|
20678
21050
|
}
|
|
@@ -20722,6 +21094,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
20722
21094
|
args: ['click', ['$event.target']]
|
|
20723
21095
|
}] } });
|
|
20724
21096
|
|
|
21097
|
+
/*
|
|
21098
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
21099
|
+
* This software is released under MIT license.
|
|
21100
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
21101
|
+
*/
|
|
21102
|
+
class ClrAriaCurrentLink {
|
|
21103
|
+
constructor(rla) {
|
|
21104
|
+
this.rla = rla;
|
|
21105
|
+
}
|
|
21106
|
+
ngOnInit() {
|
|
21107
|
+
this.subscription = this.rla.isActiveChange.subscribe(isActive => {
|
|
21108
|
+
this.ariaCurrent = isActive ? 'page' : undefined;
|
|
21109
|
+
});
|
|
21110
|
+
}
|
|
21111
|
+
ngOnDestroy() {
|
|
21112
|
+
this.subscription.unsubscribe();
|
|
21113
|
+
}
|
|
21114
|
+
}
|
|
21115
|
+
ClrAriaCurrentLink.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrAriaCurrentLink, deps: [{ token: i1$1.RouterLinkActive }], target: i0.ɵɵFactoryTarget.Directive });
|
|
21116
|
+
ClrAriaCurrentLink.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ClrAriaCurrentLink, selector: "[clrAriaCurrentLink]", host: { properties: { "attr.aria-current": "ariaCurrent" } }, ngImport: i0 });
|
|
21117
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrAriaCurrentLink, decorators: [{
|
|
21118
|
+
type: Directive,
|
|
21119
|
+
args: [{ selector: '[clrAriaCurrentLink]', host: { '[attr.aria-current]': 'ariaCurrent' } }]
|
|
21120
|
+
}], ctorParameters: function () { return [{ type: i1$1.RouterLinkActive }]; } });
|
|
21121
|
+
|
|
20725
21122
|
/*
|
|
20726
21123
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
20727
21124
|
* This software is released under MIT license.
|
|
@@ -20730,6 +21127,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
20730
21127
|
const CLR_NAVIGATION_DIRECTIVES = [
|
|
20731
21128
|
ClrHeader,
|
|
20732
21129
|
ClrNavLevel,
|
|
21130
|
+
ClrAriaCurrentLink,
|
|
20733
21131
|
NavDetectionOompaLoompa,
|
|
20734
21132
|
MainContainerWillyWonka,
|
|
20735
21133
|
];
|
|
@@ -20738,9 +21136,11 @@ class ClrNavigationModule {
|
|
|
20738
21136
|
ClrNavigationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrNavigationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
20739
21137
|
ClrNavigationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrNavigationModule, declarations: [ClrHeader,
|
|
20740
21138
|
ClrNavLevel,
|
|
21139
|
+
ClrAriaCurrentLink,
|
|
20741
21140
|
NavDetectionOompaLoompa,
|
|
20742
21141
|
MainContainerWillyWonka], imports: [CommonModule, ClrIconModule, ClrDropdownModule], exports: [ClrHeader,
|
|
20743
21142
|
ClrNavLevel,
|
|
21143
|
+
ClrAriaCurrentLink,
|
|
20744
21144
|
NavDetectionOompaLoompa,
|
|
20745
21145
|
MainContainerWillyWonka] });
|
|
20746
21146
|
ClrNavigationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrNavigationModule, imports: [[CommonModule, ClrIconModule, ClrDropdownModule]] });
|
|
@@ -26826,6 +27226,7 @@ ClarityModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
|
|
|
26826
27226
|
ClrConditionalModule,
|
|
26827
27227
|
ClrFocusTrapModule,
|
|
26828
27228
|
ClrFocusOnViewInitModule,
|
|
27229
|
+
ClrForTypeAheadModule,
|
|
26829
27230
|
ClrButtonModule,
|
|
26830
27231
|
ClrFormsModule,
|
|
26831
27232
|
ClrLayoutModule,
|
|
@@ -26845,6 +27246,7 @@ ClarityModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version:
|
|
|
26845
27246
|
ClrConditionalModule,
|
|
26846
27247
|
ClrFocusTrapModule,
|
|
26847
27248
|
ClrFocusOnViewInitModule,
|
|
27249
|
+
ClrForTypeAheadModule,
|
|
26848
27250
|
ClrButtonModule,
|
|
26849
27251
|
ClrFormsModule,
|
|
26850
27252
|
ClrLayoutModule,
|
|
@@ -26868,6 +27270,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
26868
27270
|
ClrConditionalModule,
|
|
26869
27271
|
ClrFocusTrapModule,
|
|
26870
27272
|
ClrFocusOnViewInitModule,
|
|
27273
|
+
ClrForTypeAheadModule,
|
|
26871
27274
|
ClrButtonModule,
|
|
26872
27275
|
ClrFormsModule,
|
|
26873
27276
|
ClrLayoutModule,
|
|
@@ -27179,5 +27582,5 @@ const CLR_MENU_POSITIONS = [
|
|
|
27179
27582
|
* Generated bundle index. Do not edit.
|
|
27180
27583
|
*/
|
|
27181
27584
|
|
|
27182
|
-
export { CLR_ALERT_DIRECTIVES, CLR_BUTTON_GROUP_DIRECTIVES, CLR_DATAGRID_DIRECTIVES, CLR_DATEPICKER_DIRECTIVES, CLR_DRAG_AND_DROP_DIRECTIVES, CLR_DROPDOWN_DIRECTIVES, CLR_ICON_DIRECTIVES, CLR_LAYOUT_DIRECTIVES, CLR_LOADING_BUTTON_DIRECTIVES, CLR_LOADING_DIRECTIVES, CLR_MENU_POSITIONS, CLR_MODAL_DIRECTIVES, CLR_NAVIGATION_DIRECTIVES, CLR_PROGRESS_BAR_DIRECTIVES, CLR_SIGNPOST_DIRECTIVES, CLR_SPINNER_DIRECTIVES, CLR_STACK_VIEW_DIRECTIVES, CLR_TABS_DIRECTIVES, CLR_TOOLTIP_DIRECTIVES, CLR_TREE_VIEW_DIRECTIVES, CLR_VERTICAL_NAV_DIRECTIVES, CLR_WIZARD_DIRECTIVES, CONDITIONAL_DIRECTIVES, CUSTOM_BUTTON_TYPES, CdsIconCustomTag, ClarityModule, ClrAbstractContainer, ClrAccordion, ClrAccordionContent, ClrAccordionDescription, ClrAccordionModule, ClrAccordionPanel, ClrAccordionTitle, ClrAlert, ClrAlertItem, ClrAlertModule, ClrAlertText, ClrAlerts, ClrAlertsPager, ClrAlignment, ClrAriaLivePoliteness, ClrAriaLiveService, ClrAxis, ClrButton, ClrButtonGroup, ClrButtonGroupModule, ClrButtonModule, ClrCalendar, ClrCheckbox, ClrCheckboxContainer, ClrCheckboxModule, ClrCheckboxWrapper, ClrCombobox, ClrComboboxContainer, ClrComboboxModule, ClrCommonFormsModule, ClrCommonStringsService, ClrConditionalModule, ClrControl, ClrControlContainer, ClrControlError, ClrControlHelper, ClrControlSuccess, ClrDataModule, ClrDatagrid, ClrDatagridActionBar, ClrDatagridActionOverflow, ClrDatagridCell, ClrDatagridColumn, ClrDatagridColumnSeparator, ClrDatagridColumnToggle, ClrDatagridColumnToggleButton, ClrDatagridColumnToggleTitle, ClrDatagridDetail, ClrDatagridDetailBody, ClrDatagridDetailHeader, ClrDatagridFilter, ClrDatagridFooter, ClrDatagridHideableColumn, ClrDatagridItems, ClrDatagridItemsTrackBy, ClrDatagridModule, ClrDatagridPageSize, ClrDatagridPagination, ClrDatagridPlaceholder, ClrDatagridRow, ClrDatagridRowDetail, ClrDatagridSortOrder, ClrDatalist, ClrDatalistContainer, ClrDatalistInput, ClrDatalistModule, ClrDateContainer, ClrDateInput, ClrDatepickerModule, ClrDatepickerViewManager, ClrDay, ClrDaypicker, ClrDestroyService, ClrDragAndDropModule, ClrDragEvent, ClrDragHandle, ClrDraggable, ClrDraggableGhost, ClrDropdown, ClrDropdownItem, ClrDropdownMenu, ClrDropdownModule, ClrDropdownTrigger, ClrDroppable, ClrEmphasisModule, ClrExpandableAnimation, ClrFocusOnViewInit, ClrFocusOnViewInitModule, ClrForm, ClrFormLayout, ClrFormsModule, ClrHeader, ClrIconCustomTag, ClrIconModule, ClrIfActive, ClrIfDetail, ClrIfDragged, ClrIfError, ClrIfExpanded, ClrIfOpen, ClrIfSuccess, ClrInput, ClrInputContainer, ClrInputModule, ClrLabel, ClrLayout, ClrLayoutModule, ClrLoading, ClrLoadingButton, ClrLoadingButtonModule, ClrLoadingModule, ClrLoadingState, ClrMainContainer, ClrMainContainerModule, ClrModal, ClrModalBody, ClrModalModule, ClrMonthpicker, ClrNavLevel, ClrNavigationModule, ClrOption, ClrOptionItems, ClrOptionSelected, ClrOptions, ClrPassword, ClrPasswordContainer, ClrPasswordModule, ClrPopoverAnchor, ClrPopoverContent, ClrPopoverEventsService, ClrPopoverModule, ClrPopoverPositionService, ClrPopoverToggleService, ClrProgressBar, ClrProgressBarModule, ClrRadio, ClrRadioContainer, ClrRadioModule, ClrRadioWrapper, ClrRange, ClrRangeContainer, ClrRangeModule, ClrRecursiveForOf, ClrSelect, ClrSelectContainer, ClrSelectModule, ClrSelectedState, ClrSide, ClrSignpost, ClrSignpostContent, ClrSignpostModule, ClrSignpostTrigger, ClrSpinner, ClrSpinnerModule, ClrStackBlock, ClrStackContentInput, ClrStackHeader, ClrStackInput, ClrStackSelect, ClrStackView, ClrStackViewCustomTags, ClrStackViewLabel, ClrStackViewModule, ClrStepButton, ClrStepButtonType, ClrStepper, ClrStepperModule, ClrStepperPanel, ClrTab, ClrTabContent, ClrTabLink, ClrTabOverflowContent, ClrTabs, ClrTabsModule, ClrTextarea, ClrTextareaContainer, ClrTextareaModule, ClrTimeline, ClrTimelineLayout, ClrTimelineModule, ClrTimelineStep, ClrTimelineStepDescription, ClrTimelineStepHeader, ClrTimelineStepState, ClrTimelineStepTitle, ClrTooltip, ClrTooltipContent, ClrTooltipModule, ClrTooltipTrigger, ClrTree, ClrTreeNode, ClrTreeNodeLink, ClrTreeViewModule, ClrVerticalNav, ClrVerticalNavGroup, ClrVerticalNavGroupChildren, ClrVerticalNavIcon, ClrVerticalNavLink, ClrVerticalNavModule, ClrWizard, ClrWizardButton, ClrWizardCustomTags, ClrWizardHeaderAction, ClrWizardModule, ClrWizardPage, ClrWizardPageButtons, ClrWizardPageHeaderActions, ClrWizardPageNavTitle, ClrWizardPageTitle, ClrWizardStepnav, ClrWizardStepnavItem, ClrYearpicker, DEFAULT_BUTTON_TYPES, DatagridNumericFilter, DatagridPropertyComparator, DatagridPropertyNumericFilter, DatagridPropertyStringFilter, DatagridStringFilter, EXPANDABLE_ANIMATION_DIRECTIVES, FOCUS_ON_VIEW_INIT, FOCUS_ON_VIEW_INIT_DIRECTIVES, IS_TOGGLE, IS_TOGGLE_PROVIDER, LoadingListener, MainContainerWillyWonka, NavDetectionOompaLoompa, TOGGLE_SERVICE, TOGGLE_SERVICE_PROVIDER, ToggleServiceFactory, WrappedFormControl, collapse, commonStringsDefault, fade, fadeSlide, isToggleFactory, slide, AccordionOompaLoompa as ÇlrAccordionOompaLoompa, AccordionWillyWonka as ÇlrAccordionWillyWonka, ActionableOompaLoompa as ÇlrActionableOompaLoompa, ActiveOompaLoompa as ÇlrActiveOompaLoompa, ClrFocusTrapModule as ÇlrClrFocusTrapModule, ClrPopoverCloseButton as ÇlrClrPopoverCloseButton, ClrPopoverModuleNext as ÇlrClrPopoverModuleNext, ClrPopoverOpenCloseButton as ÇlrClrPopoverOpenCloseButton, DatagridCellRenderer as ÇlrDatagridCellRenderer, DatagridDetailRegisterer as ÇlrDatagridDetailRegisterer, DatagridHeaderRenderer as ÇlrDatagridHeaderRenderer, DatagridMainRenderer as ÇlrDatagridMainRenderer, DatagridRowRenderer as ÇlrDatagridRowRenderer, DatagridWillyWonka as ÇlrDatagridWillyWonka, ExpandableOompaLoompa as ÇlrExpandableOompaLoompa, FocusTrapDirective as ÇlrFocusTrapDirective, FocusTrapTracker as ÇlrFocusTrapTracker, StepperOompaLoompa as ÇlrStepperOompaLoompa, StepperWillyWonka as ÇlrStepperWillyWonka, TabsWillyWonka as ÇlrTabsWillyWonka, WrappedCell as ÇlrWrappedCell, WrappedColumn as ÇlrWrappedColumn, WrappedRow as ÇlrWrappedRow };
|
|
27585
|
+
export { CLR_ALERT_DIRECTIVES, CLR_BUTTON_GROUP_DIRECTIVES, CLR_DATAGRID_DIRECTIVES, CLR_DATEPICKER_DIRECTIVES, CLR_DRAG_AND_DROP_DIRECTIVES, CLR_DROPDOWN_DIRECTIVES, CLR_ICON_DIRECTIVES, CLR_LAYOUT_DIRECTIVES, CLR_LOADING_BUTTON_DIRECTIVES, CLR_LOADING_DIRECTIVES, CLR_MENU_POSITIONS, CLR_MODAL_DIRECTIVES, CLR_NAVIGATION_DIRECTIVES, CLR_PROGRESS_BAR_DIRECTIVES, CLR_SIGNPOST_DIRECTIVES, CLR_SPINNER_DIRECTIVES, CLR_STACK_VIEW_DIRECTIVES, CLR_TABS_DIRECTIVES, CLR_TOOLTIP_DIRECTIVES, CLR_TREE_VIEW_DIRECTIVES, CLR_VERTICAL_NAV_DIRECTIVES, CLR_WIZARD_DIRECTIVES, CONDITIONAL_DIRECTIVES, CUSTOM_BUTTON_TYPES, CdsIconCustomTag, ClarityModule, ClrAbstractContainer, ClrAccordion, ClrAccordionContent, ClrAccordionDescription, ClrAccordionModule, ClrAccordionPanel, ClrAccordionTitle, ClrAlert, ClrAlertItem, ClrAlertModule, ClrAlertText, ClrAlerts, ClrAlertsPager, ClrAlignment, ClrAriaCurrentLink, ClrAriaLivePoliteness, ClrAriaLiveService, ClrAxis, ClrButton, ClrButtonGroup, ClrButtonGroupModule, ClrButtonModule, ClrCalendar, ClrCheckbox, ClrCheckboxContainer, ClrCheckboxModule, ClrCheckboxWrapper, ClrCombobox, ClrComboboxContainer, ClrComboboxModule, ClrCommonFormsModule, ClrCommonStringsService, ClrConditionalModule, ClrControl, ClrControlContainer, ClrControlError, ClrControlHelper, ClrControlSuccess, ClrDataModule, ClrDatagrid, ClrDatagridActionBar, ClrDatagridActionOverflow, ClrDatagridCell, ClrDatagridColumn, ClrDatagridColumnSeparator, ClrDatagridColumnToggle, ClrDatagridColumnToggleButton, ClrDatagridColumnToggleTitle, ClrDatagridDetail, ClrDatagridDetailBody, ClrDatagridDetailHeader, ClrDatagridFilter, ClrDatagridFooter, ClrDatagridHideableColumn, ClrDatagridItems, ClrDatagridItemsTrackBy, ClrDatagridModule, ClrDatagridPageSize, ClrDatagridPagination, ClrDatagridPlaceholder, ClrDatagridRow, ClrDatagridRowDetail, ClrDatagridSortOrder, ClrDatalist, ClrDatalistContainer, ClrDatalistInput, ClrDatalistModule, ClrDateContainer, ClrDateInput, ClrDatepickerModule, ClrDatepickerViewManager, ClrDay, ClrDaypicker, ClrDestroyService, ClrDragAndDropModule, ClrDragEvent, ClrDragHandle, ClrDraggable, ClrDraggableGhost, ClrDropdown, ClrDropdownItem, ClrDropdownMenu, ClrDropdownModule, ClrDropdownTrigger, ClrDroppable, ClrEmphasisModule, ClrExpandableAnimation, ClrFocusOnViewInit, ClrFocusOnViewInitModule, ClrForTypeAhead, ClrForTypeAheadModule, ClrForm, ClrFormLayout, ClrFormsModule, ClrHeader, ClrIconCustomTag, ClrIconModule, ClrIfActive, ClrIfDetail, ClrIfDragged, ClrIfError, ClrIfExpanded, ClrIfOpen, ClrIfSuccess, ClrInput, ClrInputContainer, ClrInputModule, ClrLabel, ClrLayout, ClrLayoutModule, ClrLoading, ClrLoadingButton, ClrLoadingButtonModule, ClrLoadingModule, ClrLoadingState, ClrMainContainer, ClrMainContainerModule, ClrModal, ClrModalBody, ClrModalModule, ClrMonthpicker, ClrNavLevel, ClrNavigationModule, ClrOption, ClrOptionItems, ClrOptionSelected, ClrOptions, ClrPassword, ClrPasswordContainer, ClrPasswordModule, ClrPopoverAnchor, ClrPopoverContent, ClrPopoverEventsService, ClrPopoverModule, ClrPopoverPositionService, ClrPopoverToggleService, ClrProgressBar, ClrProgressBarModule, ClrRadio, ClrRadioContainer, ClrRadioModule, ClrRadioWrapper, ClrRange, ClrRangeContainer, ClrRangeModule, ClrRecursiveForOf, ClrSelect, ClrSelectContainer, ClrSelectModule, ClrSelectedState, ClrSide, ClrSignpost, ClrSignpostContent, ClrSignpostModule, ClrSignpostTrigger, ClrSpinner, ClrSpinnerModule, ClrStackBlock, ClrStackContentInput, ClrStackHeader, ClrStackInput, ClrStackSelect, ClrStackView, ClrStackViewCustomTags, ClrStackViewLabel, ClrStackViewModule, ClrStepButton, ClrStepButtonType, ClrStepper, ClrStepperModule, ClrStepperPanel, ClrTab, ClrTabContent, ClrTabLink, ClrTabOverflowContent, ClrTabs, ClrTabsModule, ClrTextarea, ClrTextareaContainer, ClrTextareaModule, ClrTimeline, ClrTimelineLayout, ClrTimelineModule, ClrTimelineStep, ClrTimelineStepDescription, ClrTimelineStepHeader, ClrTimelineStepState, ClrTimelineStepTitle, ClrTooltip, ClrTooltipContent, ClrTooltipModule, ClrTooltipTrigger, ClrTree, ClrTreeNode, ClrTreeNodeLink, ClrTreeViewModule, ClrVerticalNav, ClrVerticalNavGroup, ClrVerticalNavGroupChildren, ClrVerticalNavIcon, ClrVerticalNavLink, ClrVerticalNavModule, ClrWizard, ClrWizardButton, ClrWizardCustomTags, ClrWizardHeaderAction, ClrWizardModule, ClrWizardPage, ClrWizardPageButtons, ClrWizardPageHeaderActions, ClrWizardPageNavTitle, ClrWizardPageTitle, ClrWizardStepnav, ClrWizardStepnavItem, ClrYearpicker, DEFAULT_BUTTON_TYPES, DatagridNumericFilter, DatagridPropertyComparator, DatagridPropertyNumericFilter, DatagridPropertyStringFilter, DatagridStringFilter, EXPANDABLE_ANIMATION_DIRECTIVES, FOCUS_ON_VIEW_INIT, FOCUS_ON_VIEW_INIT_DIRECTIVES, IS_TOGGLE, IS_TOGGLE_PROVIDER, LoadingListener, MainContainerWillyWonka, NavDetectionOompaLoompa, TOGGLE_SERVICE, TOGGLE_SERVICE_PROVIDER, ToggleServiceFactory, WrappedFormControl, collapse, commonStringsDefault, fade, fadeSlide, isToggleFactory, slide, AccordionOompaLoompa as ÇlrAccordionOompaLoompa, AccordionWillyWonka as ÇlrAccordionWillyWonka, ActionableOompaLoompa as ÇlrActionableOompaLoompa, ActiveOompaLoompa as ÇlrActiveOompaLoompa, ClrFocusTrapModule as ÇlrClrFocusTrapModule, ClrPopoverCloseButton as ÇlrClrPopoverCloseButton, ClrPopoverModuleNext as ÇlrClrPopoverModuleNext, ClrPopoverOpenCloseButton as ÇlrClrPopoverOpenCloseButton, DatagridCellRenderer as ÇlrDatagridCellRenderer, DatagridDetailRegisterer as ÇlrDatagridDetailRegisterer, DatagridHeaderRenderer as ÇlrDatagridHeaderRenderer, DatagridMainRenderer as ÇlrDatagridMainRenderer, DatagridRowRenderer as ÇlrDatagridRowRenderer, DatagridWillyWonka as ÇlrDatagridWillyWonka, ExpandableOompaLoompa as ÇlrExpandableOompaLoompa, FocusTrapDirective as ÇlrFocusTrapDirective, FocusTrapTracker as ÇlrFocusTrapTracker, StepperOompaLoompa as ÇlrStepperOompaLoompa, StepperWillyWonka as ÇlrStepperWillyWonka, TabsWillyWonka as ÇlrTabsWillyWonka, WrappedCell as ÇlrWrappedCell, WrappedColumn as ÇlrWrappedColumn, WrappedRow as ÇlrWrappedRow };
|
|
27183
27586
|
//# sourceMappingURL=clr-angular.mjs.map
|