@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/fesm2015/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
|
/*
|
|
@@ -329,6 +330,11 @@ function preventArrowKeyScroll(event) {
|
|
|
329
330
|
event.preventDefault();
|
|
330
331
|
}
|
|
331
332
|
}
|
|
333
|
+
function isKeyEitherLetterOrNumber(event) {
|
|
334
|
+
const char = event.key;
|
|
335
|
+
// Only letter characters differ when they switch between lowercase and uppercase, whether it's an English or non-English letter.
|
|
336
|
+
return char.toLowerCase() !== char.toUpperCase() || (char >= '0' && char <= '9');
|
|
337
|
+
}
|
|
332
338
|
|
|
333
339
|
/*
|
|
334
340
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -5004,10 +5010,10 @@ class ClrCalendar {
|
|
|
5004
5010
|
}
|
|
5005
5011
|
}
|
|
5006
5012
|
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 });
|
|
5007
|
-
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 <
|
|
5013
|
+
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"] }] });
|
|
5008
5014
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrCalendar, decorators: [{
|
|
5009
5015
|
type: Component,
|
|
5010
|
-
args: [{ selector: 'clr-calendar', template: "<table class=\"calendar-table\">\n <tr class=\"calendar-row weekdays\">\n <
|
|
5016
|
+
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" }]
|
|
5011
5017
|
}], ctorParameters: function () { return [{ type: LocaleHelperService }, { type: DateNavigationService }, { type: DatepickerFocusService }, { type: DateIOService }, { type: i0.ElementRef }]; }, propDecorators: { onKeyDown: [{
|
|
5012
5018
|
type: HostListener,
|
|
5013
5019
|
args: ['keydown', ['$event']]
|
|
@@ -6424,11 +6430,7 @@ ClrPasswordContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
|
|
|
6424
6430
|
class="clr-input-group-icon-action"
|
|
6425
6431
|
type="button"
|
|
6426
6432
|
>
|
|
6427
|
-
<cds-icon
|
|
6428
|
-
status="info"
|
|
6429
|
-
[attr.shape]="show ? 'eye-hide' : 'eye'"
|
|
6430
|
-
[attr.title]="show ? commonStrings.keys.hide : commonStrings.keys.show"
|
|
6431
|
-
></cds-icon>
|
|
6433
|
+
<cds-icon status="info" [attr.shape]="show ? 'eye-hide' : 'eye'"></cds-icon>
|
|
6432
6434
|
<span class="clr-sr-only">{{
|
|
6433
6435
|
show ? commonStrings.keys.passwordHide : commonStrings.keys.passwordShow
|
|
6434
6436
|
}}</span>
|
|
@@ -6472,11 +6474,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
6472
6474
|
class="clr-input-group-icon-action"
|
|
6473
6475
|
type="button"
|
|
6474
6476
|
>
|
|
6475
|
-
<cds-icon
|
|
6476
|
-
status="info"
|
|
6477
|
-
[attr.shape]="show ? 'eye-hide' : 'eye'"
|
|
6478
|
-
[attr.title]="show ? commonStrings.keys.hide : commonStrings.keys.show"
|
|
6479
|
-
></cds-icon>
|
|
6477
|
+
<cds-icon status="info" [attr.shape]="show ? 'eye-hide' : 'eye'"></cds-icon>
|
|
6480
6478
|
<span class="clr-sr-only">{{
|
|
6481
6479
|
show ? commonStrings.keys.passwordHide : commonStrings.keys.passwordShow
|
|
6482
6480
|
}}</span>
|
|
@@ -9099,7 +9097,7 @@ ClrCombobox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
|
|
|
9099
9097
|
ClrPopoverToggleService,
|
|
9100
9098
|
ClrPopoverEventsService,
|
|
9101
9099
|
ClrPopoverPositionService,
|
|
9102
|
-
], 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
|
|
9100
|
+
], 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"] }] });
|
|
9103
9101
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrCombobox, decorators: [{
|
|
9104
9102
|
type: Component,
|
|
9105
9103
|
args: [{ selector: 'clr-combobox', providers: [
|
|
@@ -9118,7 +9116,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
9118
9116
|
'[class.aria-required]': 'true',
|
|
9119
9117
|
'[class.clr-combobox]': 'true',
|
|
9120
9118
|
'[class.clr-combobox-disabled]': 'control?.disabled',
|
|
9121
|
-
}, 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
|
|
9119
|
+
}, 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" }]
|
|
9122
9120
|
}], ctorParameters: function () {
|
|
9123
9121
|
return [{ type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i1.NgControl, decorators: [{
|
|
9124
9122
|
type: Self
|
|
@@ -13205,7 +13203,7 @@ ClrDatagridPlaceholder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", v
|
|
|
13205
13203
|
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: `
|
|
13206
13204
|
<div class="datagrid-placeholder" [class.datagrid-empty]="emptyDatagrid" role="row">
|
|
13207
13205
|
<div class="datagrid-placeholder-image" *ngIf="emptyDatagrid"></div>
|
|
13208
|
-
<span role="gridcell"><ng-content *ngIf="emptyDatagrid"></ng-content></span>
|
|
13206
|
+
<span role="gridcell" class="datagrid-placeholder-content"><ng-content *ngIf="emptyDatagrid"></ng-content></span>
|
|
13209
13207
|
</div>
|
|
13210
13208
|
`, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
13211
13209
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridPlaceholder, decorators: [{
|
|
@@ -13215,7 +13213,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
13215
13213
|
template: `
|
|
13216
13214
|
<div class="datagrid-placeholder" [class.datagrid-empty]="emptyDatagrid" role="row">
|
|
13217
13215
|
<div class="datagrid-placeholder-image" *ngIf="emptyDatagrid"></div>
|
|
13218
|
-
<span role="gridcell"><ng-content *ngIf="emptyDatagrid"></ng-content></span>
|
|
13216
|
+
<span role="gridcell" class="datagrid-placeholder-content"><ng-content *ngIf="emptyDatagrid"></ng-content></span>
|
|
13219
13217
|
</div>
|
|
13220
13218
|
`,
|
|
13221
13219
|
host: { '[class.datagrid-placeholder-container]': 'true' },
|
|
@@ -14365,13 +14363,186 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
14365
14363
|
type: Injectable
|
|
14366
14364
|
}] });
|
|
14367
14365
|
|
|
14366
|
+
/*
|
|
14367
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
14368
|
+
* This software is released under MIT license.
|
|
14369
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
14370
|
+
*/
|
|
14371
|
+
function getTabableItems(el) {
|
|
14372
|
+
const tabableSelector = [
|
|
14373
|
+
'a[href]',
|
|
14374
|
+
'area[href]',
|
|
14375
|
+
'input:not([disabled])',
|
|
14376
|
+
'button:not([disabled])',
|
|
14377
|
+
'select:not([disabled])',
|
|
14378
|
+
'textarea:not([disabled])',
|
|
14379
|
+
'iframe',
|
|
14380
|
+
'object',
|
|
14381
|
+
'embed',
|
|
14382
|
+
'*[tabindex]',
|
|
14383
|
+
'*[contenteditable=true]',
|
|
14384
|
+
'[role=button]:not([disabled])',
|
|
14385
|
+
].join(',');
|
|
14386
|
+
return Array.from(el.querySelectorAll(tabableSelector));
|
|
14387
|
+
}
|
|
14388
|
+
class KeyNavigationGridController {
|
|
14389
|
+
constructor(zone) {
|
|
14390
|
+
this.zone = zone;
|
|
14391
|
+
this.listenersAdded = false;
|
|
14392
|
+
this.destroy$ = new Subject();
|
|
14393
|
+
this.config = {
|
|
14394
|
+
keyGridRows: '[role=row]:not(.datagrid-placeholder)',
|
|
14395
|
+
keyGridCells: '[role=gridcell]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), [role=columnheader]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), .datagrid-detail-caret',
|
|
14396
|
+
keyGrid: '[role=grid]',
|
|
14397
|
+
};
|
|
14398
|
+
}
|
|
14399
|
+
get grid() {
|
|
14400
|
+
var _a;
|
|
14401
|
+
return (_a = this.host) === null || _a === void 0 ? void 0 : _a.querySelector(this.config.keyGrid);
|
|
14402
|
+
}
|
|
14403
|
+
get rows() {
|
|
14404
|
+
var _a;
|
|
14405
|
+
return (_a = this.host) === null || _a === void 0 ? void 0 : _a.querySelectorAll(this.config.keyGridRows);
|
|
14406
|
+
}
|
|
14407
|
+
get cells() {
|
|
14408
|
+
var _a;
|
|
14409
|
+
return (_a = this.host) === null || _a === void 0 ? void 0 : _a.querySelectorAll(this.config.keyGridCells);
|
|
14410
|
+
}
|
|
14411
|
+
ngOnDestroy() {
|
|
14412
|
+
this.destroy$.next();
|
|
14413
|
+
this.destroy$.complete();
|
|
14414
|
+
}
|
|
14415
|
+
addListeners() {
|
|
14416
|
+
if (this.listenersAdded) {
|
|
14417
|
+
return;
|
|
14418
|
+
}
|
|
14419
|
+
this.zone.runOutsideAngular(() => {
|
|
14420
|
+
fromEvent(this.grid, 'mousedown')
|
|
14421
|
+
.pipe(takeUntil(this.destroy$))
|
|
14422
|
+
.subscribe((e) => {
|
|
14423
|
+
// 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
|
|
14424
|
+
if (e.buttons === 1 && !e.ctrlKey) {
|
|
14425
|
+
const activeCell = this.cells
|
|
14426
|
+
? Array.from(this.cells).find(c => c === e.target || c === e.target.closest(this.config.keyGridCells))
|
|
14427
|
+
: null;
|
|
14428
|
+
if (activeCell) {
|
|
14429
|
+
this.setActiveCell(activeCell);
|
|
14430
|
+
}
|
|
14431
|
+
}
|
|
14432
|
+
});
|
|
14433
|
+
fromEvent(this.grid, 'keydown')
|
|
14434
|
+
.pipe(takeUntil(this.destroy$))
|
|
14435
|
+
.subscribe((e) => {
|
|
14436
|
+
// Skip column resize events
|
|
14437
|
+
if (e.target.classList.contains('drag-handle') &&
|
|
14438
|
+
(e.code === 'ArrowLeft' || e.code === 'ArrowRight')) {
|
|
14439
|
+
return;
|
|
14440
|
+
}
|
|
14441
|
+
if (e.code === 'ArrowUp' ||
|
|
14442
|
+
e.code === 'ArrowDown' ||
|
|
14443
|
+
e.code === 'ArrowLeft' ||
|
|
14444
|
+
e.code === 'ArrowRight' ||
|
|
14445
|
+
e.code === 'End' ||
|
|
14446
|
+
e.code === 'Home' ||
|
|
14447
|
+
e.code === 'PageUp' ||
|
|
14448
|
+
e.code === 'PageDown') {
|
|
14449
|
+
const { x, y } = this.getNextItemCoordinate(e);
|
|
14450
|
+
const activeItem = this.rows
|
|
14451
|
+
? Array.from(this.rows[y].querySelectorAll(this.config.keyGridCells))[x]
|
|
14452
|
+
: null;
|
|
14453
|
+
if (activeItem) {
|
|
14454
|
+
this.setActiveCell(activeItem);
|
|
14455
|
+
}
|
|
14456
|
+
e.preventDefault();
|
|
14457
|
+
}
|
|
14458
|
+
});
|
|
14459
|
+
});
|
|
14460
|
+
this.listenersAdded = true;
|
|
14461
|
+
}
|
|
14462
|
+
initializeKeyGrid(host) {
|
|
14463
|
+
this.host = host;
|
|
14464
|
+
this.addListeners();
|
|
14465
|
+
this.resetKeyGrid();
|
|
14466
|
+
}
|
|
14467
|
+
resetKeyGrid() {
|
|
14468
|
+
var _a;
|
|
14469
|
+
(_a = this.cells) === null || _a === void 0 ? void 0 : _a.forEach((i) => i.setAttribute('tabindex', '-1'));
|
|
14470
|
+
const firstCell = this.cells ? this.cells[0] : null;
|
|
14471
|
+
firstCell === null || firstCell === void 0 ? void 0 : firstCell.setAttribute('tabindex', '0');
|
|
14472
|
+
}
|
|
14473
|
+
setActiveCell(activeCell) {
|
|
14474
|
+
const prior = this.cells ? Array.from(this.cells).find(c => c.getAttribute('tabindex') === '0') : null;
|
|
14475
|
+
if (prior) {
|
|
14476
|
+
prior.setAttribute('tabindex', '-1');
|
|
14477
|
+
}
|
|
14478
|
+
activeCell.setAttribute('tabindex', '0');
|
|
14479
|
+
const items = getTabableItems(activeCell);
|
|
14480
|
+
const item = activeCell.getAttribute('role') !== 'columnheader' && items[0] ? items[0] : activeCell;
|
|
14481
|
+
item.focus();
|
|
14482
|
+
}
|
|
14483
|
+
getNextItemCoordinate(e) {
|
|
14484
|
+
var _a;
|
|
14485
|
+
let currentCell = this.cells ? Array.from(this.cells).find(i => i.getAttribute('tabindex') === '0') : null;
|
|
14486
|
+
if (e.code === 'Tab') {
|
|
14487
|
+
currentCell = document.activeElement;
|
|
14488
|
+
}
|
|
14489
|
+
const currentRow = this.rows && currentCell ? Array.from(this.rows).find(r => r.contains(currentCell)) : null;
|
|
14490
|
+
const numOfRows = this.rows ? this.rows.length - 1 : 0;
|
|
14491
|
+
const numOfColumns = this.cells ? this.cells.length / this.rows.length - 1 : 0;
|
|
14492
|
+
let x = currentRow && currentCell
|
|
14493
|
+
? Array.from(currentRow.querySelectorAll(this.config.keyGridCells)).indexOf(currentCell)
|
|
14494
|
+
: 0;
|
|
14495
|
+
let y = currentRow && currentCell && this.rows ? Array.from(this.rows).indexOf(currentRow) : 0;
|
|
14496
|
+
const dir = this.host.dir;
|
|
14497
|
+
const inlineStart = dir === 'rtl' ? 'ArrowRight' : 'ArrowLeft';
|
|
14498
|
+
const inlineEnd = dir === 'rtl' ? 'ArrowLeft' : 'ArrowRight';
|
|
14499
|
+
const itemsPerPage = Math.floor(((_a = this.host) === null || _a === void 0 ? void 0 : _a.querySelector('.datagrid').clientHeight) / this.rows[0].clientHeight) - 1 || 0;
|
|
14500
|
+
if (e.code === 'ArrowUp' && y !== 0) {
|
|
14501
|
+
y = y - 1;
|
|
14502
|
+
}
|
|
14503
|
+
else if (e.code === 'ArrowDown' && y < numOfRows) {
|
|
14504
|
+
y = y + 1;
|
|
14505
|
+
}
|
|
14506
|
+
else if (e.code === inlineStart && x !== 0) {
|
|
14507
|
+
x = x - 1;
|
|
14508
|
+
}
|
|
14509
|
+
else if (e.code === inlineEnd && x < numOfColumns) {
|
|
14510
|
+
x = x + 1;
|
|
14511
|
+
}
|
|
14512
|
+
else if (e.code === 'End') {
|
|
14513
|
+
x = numOfColumns;
|
|
14514
|
+
if (e.ctrlKey) {
|
|
14515
|
+
y = numOfRows;
|
|
14516
|
+
}
|
|
14517
|
+
}
|
|
14518
|
+
else if (e.code === 'Home') {
|
|
14519
|
+
x = 0;
|
|
14520
|
+
if (e.ctrlKey) {
|
|
14521
|
+
y = 0;
|
|
14522
|
+
}
|
|
14523
|
+
}
|
|
14524
|
+
else if (e.code === 'PageUp') {
|
|
14525
|
+
y = y - itemsPerPage > 0 ? y - itemsPerPage : 0;
|
|
14526
|
+
}
|
|
14527
|
+
else if (e.code === 'PageDown') {
|
|
14528
|
+
y = y + itemsPerPage < numOfRows ? y + itemsPerPage : numOfRows;
|
|
14529
|
+
}
|
|
14530
|
+
return { x, y };
|
|
14531
|
+
}
|
|
14532
|
+
}
|
|
14533
|
+
KeyNavigationGridController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: KeyNavigationGridController, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
14534
|
+
KeyNavigationGridController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: KeyNavigationGridController });
|
|
14535
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: KeyNavigationGridController, decorators: [{
|
|
14536
|
+
type: Injectable
|
|
14537
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
|
|
14538
|
+
|
|
14368
14539
|
/*
|
|
14369
14540
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
14370
14541
|
* This software is released under MIT license.
|
|
14371
14542
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
14372
14543
|
*/
|
|
14373
14544
|
class ClrDatagrid {
|
|
14374
|
-
constructor(organizer, items, expandableRows, selection, rowActionService, stateProvider, displayMode, renderer, detailService, datagridId, el, page, commonStrings) {
|
|
14545
|
+
constructor(organizer, items, expandableRows, selection, rowActionService, stateProvider, displayMode, renderer, detailService, datagridId, el, page, commonStrings, columnsService, keyNavigation) {
|
|
14375
14546
|
this.organizer = organizer;
|
|
14376
14547
|
this.items = items;
|
|
14377
14548
|
this.expandableRows = expandableRows;
|
|
@@ -14384,6 +14555,8 @@ class ClrDatagrid {
|
|
|
14384
14555
|
this.el = el;
|
|
14385
14556
|
this.page = page;
|
|
14386
14557
|
this.commonStrings = commonStrings;
|
|
14558
|
+
this.columnsService = columnsService;
|
|
14559
|
+
this.keyNavigation = keyNavigation;
|
|
14387
14560
|
/* reference to the enum so that template can access */
|
|
14388
14561
|
this.SELECTION_TYPE = SelectionType;
|
|
14389
14562
|
/**
|
|
@@ -14509,6 +14682,7 @@ class ClrDatagrid {
|
|
|
14509
14682
|
* Our setup happens in the view of some of our components, so we wait for it to be done before starting
|
|
14510
14683
|
*/
|
|
14511
14684
|
ngAfterViewInit() {
|
|
14685
|
+
this.keyNavigation.initializeKeyGrid(this.el.nativeElement);
|
|
14512
14686
|
// TODO: determine if we can get rid of provider wiring in view init so that subscriptions can be done earlier
|
|
14513
14687
|
this.refresh.emit(this.stateProvider.state);
|
|
14514
14688
|
this._subscriptions.push(this.stateProvider.change.subscribe(state => this.refresh.emit(state)), this.selection.change.subscribe(s => {
|
|
@@ -14518,11 +14692,16 @@ class ClrDatagrid {
|
|
|
14518
14692
|
else if (this.selection.selectionType === SelectionType.Multi) {
|
|
14519
14693
|
this.selectedChanged.emit(s);
|
|
14520
14694
|
}
|
|
14521
|
-
}),
|
|
14695
|
+
}),
|
|
14696
|
+
// Reinitialize arrow key navigation on page changes
|
|
14697
|
+
this.page.change.subscribe(() => {
|
|
14698
|
+
this.keyNavigation.resetKeyGrid();
|
|
14522
14699
|
if (!this.clrDgDisablePageFocus) {
|
|
14523
14700
|
this.datagridTable.nativeElement.focus();
|
|
14524
14701
|
}
|
|
14525
14702
|
}),
|
|
14703
|
+
// Reinitialize arrow key navigation on hide/unhide columns
|
|
14704
|
+
combineLatest(this.columnsService.columns).subscribe(() => { var _a; return (_a = this.keyNavigation) === null || _a === void 0 ? void 0 : _a.resetKeyGrid(); }),
|
|
14526
14705
|
// A subscription that listens for displayMode changes on the datagrid
|
|
14527
14706
|
this.displayMode.view.subscribe(viewChange => {
|
|
14528
14707
|
// Remove any projected columns from the projectedDisplayColumns container
|
|
@@ -14570,7 +14749,7 @@ class ClrDatagrid {
|
|
|
14570
14749
|
this.organizer.resize();
|
|
14571
14750
|
}
|
|
14572
14751
|
}
|
|
14573
|
-
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 });
|
|
14752
|
+
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 });
|
|
14574
14753
|
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: [
|
|
14575
14754
|
Selection,
|
|
14576
14755
|
Sort,
|
|
@@ -14587,7 +14766,8 @@ ClrDatagrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
|
|
|
14587
14766
|
TableSizeService,
|
|
14588
14767
|
ColumnsService,
|
|
14589
14768
|
DisplayModeService,
|
|
14590
|
-
|
|
14769
|
+
KeyNavigationGridController,
|
|
14770
|
+
], 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"] }] });
|
|
14591
14771
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagrid, decorators: [{
|
|
14592
14772
|
type: Component,
|
|
14593
14773
|
args: [{ selector: 'clr-datagrid', providers: [
|
|
@@ -14606,15 +14786,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
14606
14786
|
TableSizeService,
|
|
14607
14787
|
ColumnsService,
|
|
14608
14788
|
DisplayModeService,
|
|
14789
|
+
KeyNavigationGridController,
|
|
14609
14790
|
], host: {
|
|
14610
14791
|
'[class.datagrid-host]': 'true',
|
|
14611
14792
|
'[class.datagrid-detail-open]': 'detailService.isOpen',
|
|
14612
|
-
}, 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" }]
|
|
14793
|
+
}, 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" }]
|
|
14613
14794
|
}], ctorParameters: function () {
|
|
14614
14795
|
return [{ type: DatagridRenderOrganizer }, { type: Items }, { type: ExpandableRowsCount }, { type: Selection }, { type: RowActionService }, { type: StateProvider }, { type: DisplayModeService }, { type: i0.Renderer2 }, { type: DetailService }, { type: undefined, decorators: [{
|
|
14615
14796
|
type: Inject,
|
|
14616
14797
|
args: [UNIQUE_ID]
|
|
14617
|
-
}] }, { type: i0.ElementRef }, { type: Page }, { type: ClrCommonStringsService }];
|
|
14798
|
+
}] }, { type: i0.ElementRef }, { type: Page }, { type: ClrCommonStringsService }, { type: ColumnsService }, { type: KeyNavigationGridController }];
|
|
14618
14799
|
}, propDecorators: { loading: [{
|
|
14619
14800
|
type: Input,
|
|
14620
14801
|
args: ['clrDgLoading']
|
|
@@ -15736,6 +15917,107 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
15736
15917
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15737
15918
|
*/
|
|
15738
15919
|
|
|
15920
|
+
/*
|
|
15921
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
15922
|
+
* This software is released under MIT license.
|
|
15923
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15924
|
+
*/
|
|
15925
|
+
class ForTypeAheadProvider {
|
|
15926
|
+
constructor() {
|
|
15927
|
+
this._textContentChange = new Subject();
|
|
15928
|
+
}
|
|
15929
|
+
get textContentChange() {
|
|
15930
|
+
return this._textContentChange.asObservable();
|
|
15931
|
+
}
|
|
15932
|
+
get textContent() {
|
|
15933
|
+
return this._textContent;
|
|
15934
|
+
}
|
|
15935
|
+
set textContent(value) {
|
|
15936
|
+
this._textContent = value;
|
|
15937
|
+
this._textContentChange.next(value);
|
|
15938
|
+
}
|
|
15939
|
+
}
|
|
15940
|
+
ForTypeAheadProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ForTypeAheadProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
15941
|
+
ForTypeAheadProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ForTypeAheadProvider });
|
|
15942
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ForTypeAheadProvider, decorators: [{
|
|
15943
|
+
type: Injectable
|
|
15944
|
+
}] });
|
|
15945
|
+
|
|
15946
|
+
/*
|
|
15947
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
15948
|
+
* This software is released under MIT license.
|
|
15949
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15950
|
+
*/
|
|
15951
|
+
// The purpose of this directive is to provide the text content of its host element
|
|
15952
|
+
// or text content that's passed to its input.
|
|
15953
|
+
// This directive must stay optional. So do not embed this directive in a component module by default.
|
|
15954
|
+
// If users need to use this directive, they should import its module on their side.
|
|
15955
|
+
class ClrForTypeAhead {
|
|
15956
|
+
constructor(el, forTypeAheadProvider) {
|
|
15957
|
+
this.el = el;
|
|
15958
|
+
this.forTypeAheadProvider = forTypeAheadProvider;
|
|
15959
|
+
}
|
|
15960
|
+
trimAndLowerCase(value) {
|
|
15961
|
+
return value.toLocaleLowerCase().trim();
|
|
15962
|
+
}
|
|
15963
|
+
get content() {
|
|
15964
|
+
return this._content;
|
|
15965
|
+
}
|
|
15966
|
+
set content(value) {
|
|
15967
|
+
if (value) {
|
|
15968
|
+
this._content = this.trimAndLowerCase(value);
|
|
15969
|
+
this.forTypeAheadProvider.textContent = this._content;
|
|
15970
|
+
}
|
|
15971
|
+
else {
|
|
15972
|
+
this._content = this.trimAndLowerCase(this.el.nativeElement.textContent);
|
|
15973
|
+
this.forTypeAheadProvider.textContent = this._content;
|
|
15974
|
+
}
|
|
15975
|
+
}
|
|
15976
|
+
ngOnInit() {
|
|
15977
|
+
if (!this._content) {
|
|
15978
|
+
this._content = this.trimAndLowerCase(this.el.nativeElement.textContent);
|
|
15979
|
+
this.forTypeAheadProvider.textContent = this._content;
|
|
15980
|
+
}
|
|
15981
|
+
}
|
|
15982
|
+
}
|
|
15983
|
+
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 });
|
|
15984
|
+
ClrForTypeAhead.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ClrForTypeAhead, selector: "[clrForTypeAhead]", inputs: { content: ["clrForTypeAhead", "content"] }, providers: [ForTypeAheadProvider], ngImport: i0 });
|
|
15985
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrForTypeAhead, decorators: [{
|
|
15986
|
+
type: Directive,
|
|
15987
|
+
args: [{
|
|
15988
|
+
providers: [ForTypeAheadProvider],
|
|
15989
|
+
selector: '[clrForTypeAhead]',
|
|
15990
|
+
}]
|
|
15991
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ForTypeAheadProvider }]; }, propDecorators: { content: [{
|
|
15992
|
+
type: Input,
|
|
15993
|
+
args: ['clrForTypeAhead']
|
|
15994
|
+
}] } });
|
|
15995
|
+
|
|
15996
|
+
/*
|
|
15997
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
15998
|
+
* This software is released under MIT license.
|
|
15999
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16000
|
+
*/
|
|
16001
|
+
class ClrForTypeAheadModule {
|
|
16002
|
+
}
|
|
16003
|
+
ClrForTypeAheadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrForTypeAheadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
16004
|
+
ClrForTypeAheadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrForTypeAheadModule, declarations: [ClrForTypeAhead], imports: [CommonModule], exports: [ClrForTypeAhead] });
|
|
16005
|
+
ClrForTypeAheadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrForTypeAheadModule, imports: [[CommonModule]] });
|
|
16006
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrForTypeAheadModule, decorators: [{
|
|
16007
|
+
type: NgModule,
|
|
16008
|
+
args: [{
|
|
16009
|
+
imports: [CommonModule],
|
|
16010
|
+
declarations: [ClrForTypeAhead],
|
|
16011
|
+
exports: [ClrForTypeAhead],
|
|
16012
|
+
}]
|
|
16013
|
+
}] });
|
|
16014
|
+
|
|
16015
|
+
/*
|
|
16016
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16017
|
+
* This software is released under MIT license.
|
|
16018
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16019
|
+
*/
|
|
16020
|
+
|
|
15739
16021
|
/*
|
|
15740
16022
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
15741
16023
|
* This software is released under MIT license.
|
|
@@ -17978,6 +18260,71 @@ class TreeFocusManagerService {
|
|
|
17978
18260
|
return this.findNextFocusable(model);
|
|
17979
18261
|
}
|
|
17980
18262
|
}
|
|
18263
|
+
findDescendentNodeStartsWith(searchString, model) {
|
|
18264
|
+
if (model.expanded && model.children.length > 0) {
|
|
18265
|
+
for (const childModel of model.children) {
|
|
18266
|
+
const found = this.findNodeStartsWith(searchString, childModel);
|
|
18267
|
+
if (found) {
|
|
18268
|
+
return found;
|
|
18269
|
+
}
|
|
18270
|
+
}
|
|
18271
|
+
}
|
|
18272
|
+
return null;
|
|
18273
|
+
}
|
|
18274
|
+
findSiblingNodeStartsWith(searchString, model) {
|
|
18275
|
+
const siblings = this.findSiblings(model);
|
|
18276
|
+
const selfIndex = siblings.indexOf(model);
|
|
18277
|
+
// Look from sibling nodes
|
|
18278
|
+
for (let i = selfIndex + 1; i < siblings.length; i++) {
|
|
18279
|
+
const siblingModel = siblings[i];
|
|
18280
|
+
const found = this.findNodeStartsWith(searchString, siblingModel);
|
|
18281
|
+
if (found) {
|
|
18282
|
+
return found;
|
|
18283
|
+
}
|
|
18284
|
+
}
|
|
18285
|
+
return null;
|
|
18286
|
+
}
|
|
18287
|
+
findRootNodeStartsWith(searchString, model) {
|
|
18288
|
+
for (const rootModel of this.rootNodeModels) {
|
|
18289
|
+
// Don't look from a parent yet
|
|
18290
|
+
if (model.parent && model.parent === rootModel) {
|
|
18291
|
+
continue;
|
|
18292
|
+
}
|
|
18293
|
+
const found = this.findNodeStartsWith(searchString, rootModel);
|
|
18294
|
+
if (found) {
|
|
18295
|
+
return found;
|
|
18296
|
+
}
|
|
18297
|
+
}
|
|
18298
|
+
return null;
|
|
18299
|
+
}
|
|
18300
|
+
findNodeStartsWith(searchString, model) {
|
|
18301
|
+
if (!model) {
|
|
18302
|
+
return null;
|
|
18303
|
+
}
|
|
18304
|
+
if (model.textContent.startsWith(searchString)) {
|
|
18305
|
+
return model;
|
|
18306
|
+
}
|
|
18307
|
+
return this.findDescendentNodeStartsWith(searchString, model);
|
|
18308
|
+
}
|
|
18309
|
+
findClosestNodeStartsWith(searchString, model) {
|
|
18310
|
+
if (!model) {
|
|
18311
|
+
return null;
|
|
18312
|
+
}
|
|
18313
|
+
const foundFromDescendents = this.findDescendentNodeStartsWith(searchString, model);
|
|
18314
|
+
if (foundFromDescendents) {
|
|
18315
|
+
return foundFromDescendents;
|
|
18316
|
+
}
|
|
18317
|
+
const foundFromSiblings = this.findSiblingNodeStartsWith(searchString, model);
|
|
18318
|
+
if (foundFromSiblings) {
|
|
18319
|
+
return foundFromSiblings;
|
|
18320
|
+
}
|
|
18321
|
+
const foundFromRootNodes = this.findRootNodeStartsWith(searchString, model);
|
|
18322
|
+
if (foundFromRootNodes) {
|
|
18323
|
+
return foundFromRootNodes;
|
|
18324
|
+
}
|
|
18325
|
+
// Now look from its own direct parent
|
|
18326
|
+
return this.findNodeStartsWith(searchString, model.parent);
|
|
18327
|
+
}
|
|
17981
18328
|
focusNode(model) {
|
|
17982
18329
|
if (model) {
|
|
17983
18330
|
this._focusRequest.next(model.nodeId);
|
|
@@ -18007,6 +18354,9 @@ class TreeFocusManagerService {
|
|
|
18007
18354
|
focusNodeBelow(model) {
|
|
18008
18355
|
this.focusNode(this.findNodeBelow(model));
|
|
18009
18356
|
}
|
|
18357
|
+
focusNodeStartsWith(searchString, model) {
|
|
18358
|
+
this.focusNode(this.findClosestNodeStartsWith(searchString, model));
|
|
18359
|
+
}
|
|
18010
18360
|
}
|
|
18011
18361
|
TreeFocusManagerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: TreeFocusManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
18012
18362
|
TreeFocusManagerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: TreeFocusManagerService });
|
|
@@ -18098,10 +18448,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
18098
18448
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18099
18449
|
*/
|
|
18100
18450
|
const LVIEW_CONTEXT_INDEX = 8;
|
|
18451
|
+
// If the user types multiple keys without allowing 200ms to pass between them,
|
|
18452
|
+
// then those keys are sent together in one request.
|
|
18453
|
+
const TREE_TYPE_AHEAD_TIMEOUT = 200;
|
|
18101
18454
|
class ClrTreeNode {
|
|
18102
|
-
constructor(nodeId, platformId, parent, featuresService, expandService, commonStrings, focusManager, injector) {
|
|
18455
|
+
constructor(nodeId, platformId, parent, forTypeAheadProvider, featuresService, expandService, commonStrings, focusManager, injector) {
|
|
18103
18456
|
this.nodeId = nodeId;
|
|
18104
18457
|
this.platformId = platformId;
|
|
18458
|
+
this.forTypeAheadProvider = forTypeAheadProvider;
|
|
18105
18459
|
this.featuresService = featuresService;
|
|
18106
18460
|
this.expandService = expandService;
|
|
18107
18461
|
this.commonStrings = commonStrings;
|
|
@@ -18109,6 +18463,8 @@ class ClrTreeNode {
|
|
|
18109
18463
|
this.STATES = ClrSelectedState;
|
|
18110
18464
|
this.skipEmitChange = false;
|
|
18111
18465
|
this.isModelLoading = false;
|
|
18466
|
+
this.typeAheadKeyEvent = new Subject();
|
|
18467
|
+
this.typeAheadKeyBuffer = '';
|
|
18112
18468
|
this.selectedChange = new EventEmitter(false);
|
|
18113
18469
|
this.expandedChange = new EventEmitter();
|
|
18114
18470
|
this.subscriptions = [];
|
|
@@ -18191,6 +18547,16 @@ class ClrTreeNode {
|
|
|
18191
18547
|
}));
|
|
18192
18548
|
this.subscriptions.push(this._model.loading$.pipe(debounceTime(0)).subscribe(isLoading => (this.isModelLoading = isLoading)));
|
|
18193
18549
|
}
|
|
18550
|
+
ngAfterContentInit() {
|
|
18551
|
+
if (this.forTypeAheadProvider) {
|
|
18552
|
+
this._model.textContent = this.forTypeAheadProvider.textContent;
|
|
18553
|
+
this.subscriptions.push(this.typeAheadKeyEvent.pipe(debounceTime(TREE_TYPE_AHEAD_TIMEOUT)).subscribe((bufferedKeys) => {
|
|
18554
|
+
this.focusManager.focusNodeStartsWith(bufferedKeys, this._model);
|
|
18555
|
+
// reset once bufferedKeys are used
|
|
18556
|
+
this.typeAheadKeyBuffer = '';
|
|
18557
|
+
}));
|
|
18558
|
+
}
|
|
18559
|
+
}
|
|
18194
18560
|
ngOnDestroy() {
|
|
18195
18561
|
this._model.destroy();
|
|
18196
18562
|
this.subscriptions.forEach(sub => sub.unsubscribe());
|
|
@@ -18256,8 +18622,15 @@ class ClrTreeNode {
|
|
|
18256
18622
|
this.toggleExpandOrTriggerDefault();
|
|
18257
18623
|
break;
|
|
18258
18624
|
default:
|
|
18625
|
+
if (this._model.textContent && isKeyEitherLetterOrNumber(event)) {
|
|
18626
|
+
this.typeAheadKeyBuffer += event.key;
|
|
18627
|
+
this.typeAheadKeyEvent.next(this.typeAheadKeyBuffer);
|
|
18628
|
+
return;
|
|
18629
|
+
}
|
|
18259
18630
|
break;
|
|
18260
18631
|
}
|
|
18632
|
+
// if non-letter keys are pressed, do reset.
|
|
18633
|
+
this.typeAheadKeyBuffer = '';
|
|
18261
18634
|
}
|
|
18262
18635
|
get isParent() {
|
|
18263
18636
|
return this._model.children && this._model.children.length > 0;
|
|
@@ -18304,7 +18677,7 @@ class ClrTreeNode {
|
|
|
18304
18677
|
}
|
|
18305
18678
|
}
|
|
18306
18679
|
}
|
|
18307
|
-
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 });
|
|
18680
|
+
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 });
|
|
18308
18681
|
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: [
|
|
18309
18682
|
UNIQUE_ID_PROVIDER,
|
|
18310
18683
|
TREE_FEATURES_PROVIDER,
|
|
@@ -18346,6 +18719,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
18346
18719
|
type: Optional
|
|
18347
18720
|
}, {
|
|
18348
18721
|
type: SkipSelf
|
|
18722
|
+
}] }, { type: ForTypeAheadProvider, decorators: [{
|
|
18723
|
+
type: Optional
|
|
18724
|
+
}, {
|
|
18725
|
+
type: Self
|
|
18349
18726
|
}] }, { type: TreeFeaturesService }, { type: IfExpandService }, { type: ClrCommonStringsService }, { type: TreeFocusManagerService }, { type: i0.Injector }];
|
|
18350
18727
|
}, propDecorators: { selected: [{
|
|
18351
18728
|
type: Input,
|
|
@@ -20799,7 +21176,7 @@ class ClrNavLevel extends FocusTrap {
|
|
|
20799
21176
|
if (current === navHost) {
|
|
20800
21177
|
return;
|
|
20801
21178
|
}
|
|
20802
|
-
else if (current.classList.contains('nav-link')) {
|
|
21179
|
+
else if (current.classList.contains('nav-link') && this._document.body.clientWidth < LARGE_BREAKPOINT) {
|
|
20803
21180
|
this.close();
|
|
20804
21181
|
return;
|
|
20805
21182
|
}
|
|
@@ -20851,6 +21228,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
20851
21228
|
args: ['click', ['$event.target']]
|
|
20852
21229
|
}] } });
|
|
20853
21230
|
|
|
21231
|
+
/*
|
|
21232
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
21233
|
+
* This software is released under MIT license.
|
|
21234
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
21235
|
+
*/
|
|
21236
|
+
class ClrAriaCurrentLink {
|
|
21237
|
+
constructor(rla) {
|
|
21238
|
+
this.rla = rla;
|
|
21239
|
+
}
|
|
21240
|
+
ngOnInit() {
|
|
21241
|
+
this.subscription = this.rla.isActiveChange.subscribe(isActive => {
|
|
21242
|
+
this.ariaCurrent = isActive ? 'page' : undefined;
|
|
21243
|
+
});
|
|
21244
|
+
}
|
|
21245
|
+
ngOnDestroy() {
|
|
21246
|
+
this.subscription.unsubscribe();
|
|
21247
|
+
}
|
|
21248
|
+
}
|
|
21249
|
+
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 });
|
|
21250
|
+
ClrAriaCurrentLink.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ClrAriaCurrentLink, selector: "[clrAriaCurrentLink]", host: { properties: { "attr.aria-current": "ariaCurrent" } }, ngImport: i0 });
|
|
21251
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrAriaCurrentLink, decorators: [{
|
|
21252
|
+
type: Directive,
|
|
21253
|
+
args: [{ selector: '[clrAriaCurrentLink]', host: { '[attr.aria-current]': 'ariaCurrent' } }]
|
|
21254
|
+
}], ctorParameters: function () { return [{ type: i1$1.RouterLinkActive }]; } });
|
|
21255
|
+
|
|
20854
21256
|
/*
|
|
20855
21257
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
20856
21258
|
* This software is released under MIT license.
|
|
@@ -20859,6 +21261,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
20859
21261
|
const CLR_NAVIGATION_DIRECTIVES = [
|
|
20860
21262
|
ClrHeader,
|
|
20861
21263
|
ClrNavLevel,
|
|
21264
|
+
ClrAriaCurrentLink,
|
|
20862
21265
|
NavDetectionOompaLoompa,
|
|
20863
21266
|
MainContainerWillyWonka,
|
|
20864
21267
|
];
|
|
@@ -20867,9 +21270,11 @@ class ClrNavigationModule {
|
|
|
20867
21270
|
ClrNavigationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrNavigationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
20868
21271
|
ClrNavigationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrNavigationModule, declarations: [ClrHeader,
|
|
20869
21272
|
ClrNavLevel,
|
|
21273
|
+
ClrAriaCurrentLink,
|
|
20870
21274
|
NavDetectionOompaLoompa,
|
|
20871
21275
|
MainContainerWillyWonka], imports: [CommonModule, ClrIconModule, ClrDropdownModule], exports: [ClrHeader,
|
|
20872
21276
|
ClrNavLevel,
|
|
21277
|
+
ClrAriaCurrentLink,
|
|
20873
21278
|
NavDetectionOompaLoompa,
|
|
20874
21279
|
MainContainerWillyWonka] });
|
|
20875
21280
|
ClrNavigationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrNavigationModule, imports: [[CommonModule, ClrIconModule, ClrDropdownModule]] });
|
|
@@ -26992,6 +27397,7 @@ ClarityModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
|
|
|
26992
27397
|
ClrConditionalModule,
|
|
26993
27398
|
ClrFocusTrapModule,
|
|
26994
27399
|
ClrFocusOnViewInitModule,
|
|
27400
|
+
ClrForTypeAheadModule,
|
|
26995
27401
|
ClrButtonModule,
|
|
26996
27402
|
ClrFormsModule,
|
|
26997
27403
|
ClrLayoutModule,
|
|
@@ -27011,6 +27417,7 @@ ClarityModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version:
|
|
|
27011
27417
|
ClrConditionalModule,
|
|
27012
27418
|
ClrFocusTrapModule,
|
|
27013
27419
|
ClrFocusOnViewInitModule,
|
|
27420
|
+
ClrForTypeAheadModule,
|
|
27014
27421
|
ClrButtonModule,
|
|
27015
27422
|
ClrFormsModule,
|
|
27016
27423
|
ClrLayoutModule,
|
|
@@ -27034,6 +27441,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
27034
27441
|
ClrConditionalModule,
|
|
27035
27442
|
ClrFocusTrapModule,
|
|
27036
27443
|
ClrFocusOnViewInitModule,
|
|
27444
|
+
ClrForTypeAheadModule,
|
|
27037
27445
|
ClrButtonModule,
|
|
27038
27446
|
ClrFormsModule,
|
|
27039
27447
|
ClrLayoutModule,
|
|
@@ -27315,5 +27723,5 @@ const CLR_MENU_POSITIONS = [
|
|
|
27315
27723
|
* Generated bundle index. Do not edit.
|
|
27316
27724
|
*/
|
|
27317
27725
|
|
|
27318
|
-
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 };
|
|
27726
|
+
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 };
|
|
27319
27727
|
//# sourceMappingURL=clr-angular.mjs.map
|